@skyux/popovers 5.0.0 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/skyux-popovers-testing.umd.js +20 -32
- package/bundles/skyux-popovers-testing.umd.js.map +1 -1
- package/bundles/skyux-popovers.umd.js +137 -152
- package/bundles/skyux-popovers.umd.js.map +1 -1
- package/documentation.json +114 -109
- package/esm2015/modules/dropdown/dropdown-button.component.js +5 -5
- package/esm2015/modules/dropdown/dropdown-extensions.js +1 -1
- package/esm2015/modules/dropdown/dropdown-item.component.js +8 -8
- package/esm2015/modules/dropdown/dropdown-menu.component.js +14 -14
- package/esm2015/modules/dropdown/dropdown.component.js +14 -16
- package/esm2015/modules/dropdown/dropdown.module.js +10 -10
- package/esm2015/modules/dropdown/types/dropdown-horizontal-alignment.js +1 -1
- package/esm2015/modules/dropdown/types/dropdown-menu-change.js +1 -1
- package/esm2015/modules/dropdown/types/dropdown-message-type.js +1 -1
- package/esm2015/modules/dropdown/types/dropdown-message.js +1 -1
- package/esm2015/modules/popover/popover-adapter.service.js +6 -6
- package/esm2015/modules/popover/popover-animation.js +8 -14
- package/esm2015/modules/popover/popover-content.component.js +25 -30
- package/esm2015/modules/popover/popover-context.js +1 -1
- package/esm2015/modules/popover/popover-extensions.js +1 -1
- package/esm2015/modules/popover/popover.component.js +18 -22
- package/esm2015/modules/popover/popover.directive.js +6 -6
- package/esm2015/modules/popover/popover.module.js +10 -12
- package/esm2015/modules/popover/types/popover-adapter-elements.js +1 -1
- package/esm2015/modules/popover/types/popover-message-type.js +1 -1
- package/esm2015/modules/popover/types/popover-message.js +1 -1
- package/esm2015/modules/shared/sky-popovers-resources.module.js +18 -12
- package/esm2015/testing/dropdown/dropdown-fixture.js +4 -4
- package/esm2015/testing/dropdown/dropdown-testing.module.js +6 -8
- package/esm2015/testing/popover/popover-fixture.js +4 -8
- package/esm2015/testing/popover/popover-testing.module.js +7 -11
- package/fesm2015/skyux-popovers-testing.js +17 -27
- package/fesm2015/skyux-popovers-testing.js.map +1 -1
- package/fesm2015/skyux-popovers.js +120 -133
- package/fesm2015/skyux-popovers.js.map +1 -1
- package/package.json +8 -8
|
@@ -2,13 +2,13 @@ import { Component } from '@angular/core';
|
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export class SkyDropdownButtonComponent {
|
|
4
4
|
}
|
|
5
|
-
SkyDropdownButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
6
|
-
SkyDropdownButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
7
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
5
|
+
SkyDropdownButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDropdownButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6
|
+
SkyDropdownButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: SkyDropdownButtonComponent, selector: "sky-dropdown-button", ngImport: i0, template: "<ng-content></ng-content>\n" });
|
|
7
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDropdownButtonComponent, decorators: [{
|
|
8
8
|
type: Component,
|
|
9
9
|
args: [{
|
|
10
10
|
selector: 'sky-dropdown-button',
|
|
11
|
-
templateUrl: './dropdown-button.component.html'
|
|
11
|
+
templateUrl: './dropdown-button.component.html',
|
|
12
12
|
}]
|
|
13
13
|
}] });
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BvcG92ZXJzL3NyYy9tb2R1bGVzL2Ryb3Bkb3duL2Ryb3Bkb3duLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wb3BvdmVycy9zcmMvbW9kdWxlcy9kcm9wZG93bi9kcm9wZG93bi1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNMUMsTUFBTSxPQUFPLDBCQUEwQjs7d0hBQTFCLDBCQUEwQjs0R0FBMUIsMEJBQTBCLDJEQ052Qyw2QkFDQTs0RkRLYSwwQkFBMEI7a0JBSnRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsV0FBVyxFQUFFLGtDQUFrQztpQkFDaEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWRyb3Bkb3duLWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kcm9wZG93bi1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEcm9wZG93bkJ1dHRvbkNvbXBvbmVudCB7fVxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIl19
|
|
@@ -11,4 +11,4 @@ export function parseAffixHorizontalAlignment(alignment) {
|
|
|
11
11
|
throw `SkyAffixHorizontalAlignment does not have a matching value for '${alignment}'!`;
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tZXh0ZW5zaW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BvcG92ZXJzL3NyYy9tb2R1bGVzL2Ryb3Bkb3duL2Ryb3Bkb3duLWV4dGVuc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxVQUFVLDZCQUE2QixDQUMzQyxTQUF5QztJQUV6QyxRQUFRLFNBQVMsRUFBRTtRQUNqQixLQUFLLFFBQVE7WUFDWCxPQUFPLFFBQVEsQ0FBQztRQUNsQixLQUFLLE1BQU07WUFDVCxPQUFPLE1BQU0sQ0FBQztRQUNoQixLQUFLLE9BQU87WUFDVixPQUFPLE9BQU8sQ0FBQztRQUNqQiwwQkFBMEI7UUFDMUI7WUFDRSxNQUFNLG1FQUFtRSxTQUFTLElBQUksQ0FBQztLQUMxRjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lBZmZpeEhvcml6b250YWxBbGlnbm1lbnQgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IFNreURyb3Bkb3duSG9yaXpvbnRhbEFsaWdubWVudCB9IGZyb20gJy4vdHlwZXMvZHJvcGRvd24taG9yaXpvbnRhbC1hbGlnbm1lbnQnO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VBZmZpeEhvcml6b250YWxBbGlnbm1lbnQoXG4gIGFsaWdubWVudDogU2t5RHJvcGRvd25Ib3Jpem9udGFsQWxpZ25tZW50XG4pOiBTa3lBZmZpeEhvcml6b250YWxBbGlnbm1lbnQge1xuICBzd2l0Y2ggKGFsaWdubWVudCkge1xuICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICByZXR1cm4gJ2NlbnRlcic7XG4gICAgY2FzZSAnbGVmdCc6XG4gICAgICByZXR1cm4gJ2xlZnQnO1xuICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgIHJldHVybiAncmlnaHQnO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IGBTa3lBZmZpeEhvcml6b250YWxBbGlnbm1lbnQgZG9lcyBub3QgaGF2ZSBhIG1hdGNoaW5nIHZhbHVlIGZvciAnJHthbGlnbm1lbnR9JyFgO1xuICB9XG59XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@angular/common";
|
|
4
4
|
export class SkyDropdownItemComponent {
|
|
@@ -45,8 +45,8 @@ export class SkyDropdownItemComponent {
|
|
|
45
45
|
}
|
|
46
46
|
isFocusable() {
|
|
47
47
|
/*tslint:disable no-null-keyword */
|
|
48
|
-
const isFocusable =
|
|
49
|
-
this.buttonElement.getAttribute('disabled') === null
|
|
48
|
+
const isFocusable = this.buttonElement &&
|
|
49
|
+
this.buttonElement.getAttribute('disabled') === null;
|
|
50
50
|
/*tslint:enable */
|
|
51
51
|
return isFocusable;
|
|
52
52
|
}
|
|
@@ -55,18 +55,18 @@ export class SkyDropdownItemComponent {
|
|
|
55
55
|
this.changeDetector.markForCheck();
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
SkyDropdownItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
59
|
-
SkyDropdownItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
60
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
58
|
+
SkyDropdownItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDropdownItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
59
|
+
SkyDropdownItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: SkyDropdownItemComponent, selector: "sky-dropdown-item", inputs: { ariaRole: "ariaRole" }, ngImport: i0, template: "<div\n class=\"sky-dropdown-item\"\n [attr.role]=\"ariaRole\"\n [ngClass]=\"{\n 'sky-dropdown-item-active': isActive,\n 'sky-dropdown-item-disabled': isDisabled\n }\"\n>\n <ng-content> </ng-content>\n</div>\n", styles: [".sky-dropdown-item{background-color:transparent;border:none;display:block;margin:4px;min-width:160px;text-align:left}.sky-dropdown-item.sky-dropdown-item-active,.sky-dropdown-item:hover{background-color:#eeeeef}.sky-dropdown-item.sky-dropdown-item-disabled{cursor:default}.sky-dropdown-item.sky-dropdown-item-disabled:hover{background-color:transparent}.sky-dropdown-item>a,.sky-dropdown-item>button{background-color:transparent;border:none;color:#212327;cursor:pointer;display:block;padding:3px 20px;text-align:left;width:100%}.sky-dropdown-item>a:hover,.sky-dropdown-item>button:hover{text-decoration:none}.sky-dropdown-item>a[disabled],.sky-dropdown-item>button[disabled]{color:#686c73}.sky-dropdown-item>a[disabled]:hover,.sky-dropdown-item>button[disabled]:hover{cursor:default}.sky-theme-modern .sky-dropdown-item{margin:0}.sky-theme-modern .sky-dropdown-item.sky-dropdown-item-active,.sky-theme-modern .sky-dropdown-item:hover{background-color:transparent}.sky-theme-modern .sky-dropdown-item>a,.sky-theme-modern .sky-dropdown-item>button{padding:8px 20px;transition:box-shadow .15s}.sky-theme-modern .sky-dropdown-item>a:hover,.sky-theme-modern .sky-dropdown-item>button:hover{outline:solid 1px #1870B8;outline-offset:-1px}.sky-theme-modern .sky-dropdown-item>a:focus,.sky-theme-modern .sky-dropdown-item>a:active,.sky-theme-modern .sky-dropdown-item>button:focus,.sky-theme-modern .sky-dropdown-item>button:active{outline:solid 2px #1870B8;outline-offset:-2px}.sky-theme-modern .sky-dropdown-item>a:focus:not(:active),.sky-theme-modern .sky-dropdown-item>button:focus:not(:active){box-shadow:0 1px 8px #0000004d}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-item>a,.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-item>button{color:#fbfcfe}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDropdownItemComponent, decorators: [{
|
|
61
61
|
type: Component,
|
|
62
62
|
args: [{
|
|
63
63
|
selector: 'sky-dropdown-item',
|
|
64
64
|
templateUrl: './dropdown-item.component.html',
|
|
65
65
|
styleUrls: ['./dropdown-item.component.scss'],
|
|
66
66
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
67
|
-
encapsulation: ViewEncapsulation.None
|
|
67
|
+
encapsulation: ViewEncapsulation.None,
|
|
68
68
|
}]
|
|
69
69
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, propDecorators: { ariaRole: [{
|
|
70
70
|
type: Input
|
|
71
71
|
}] } });
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24taXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wb3BvdmVycy9zcmMvbW9kdWxlcy9kcm9wZG93bi9kcm9wZG93bi1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BvcG92ZXJzL3NyYy9tb2R1bGVzL2Ryb3Bkb3duL2Ryb3Bkb3duLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsS0FBSyxFQUVMLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQzs7O0FBU3ZCLE1BQU0sT0FBTyx3QkFBd0I7SUE0Qm5DLFlBQ1MsVUFBc0IsRUFDckIsY0FBaUMsRUFDakMsUUFBbUI7UUFGcEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNyQixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQVR0QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLGVBQVUsR0FBRyxLQUFLLENBQUM7SUFRdkIsQ0FBQztJQS9CSjs7Ozs7OztPQU9HO0lBQ0gsSUFDVyxRQUFRLENBQUMsS0FBYTtRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxVQUFVLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBY00sZUFBZTtRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXRDLDBDQUEwQztRQUMxQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3pDLDBCQUEwQjtRQUMxQixJQUFJLGFBQWEsRUFBRTtZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQzVEO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRU0sWUFBWSxDQUFDLGlCQUEwQjtRQUM1QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUVyQixJQUFJLGlCQUFpQixFQUFFO1lBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDNUI7UUFFRCxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLG1DQUFtQztRQUNuQyxNQUFNLFdBQVcsR0FDZixJQUFJLENBQUMsYUFBYTtZQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFJLENBQUM7UUFDdkQsa0JBQWtCO1FBQ2xCLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFTSxVQUFVO1FBQ2YsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyQyxDQUFDOztzSEFyRVUsd0JBQXdCOzBHQUF4Qix3QkFBd0IsMkZDbEJyQyw2TkFVQTs0RkRRYSx3QkFBd0I7a0JBUHBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsV0FBVyxFQUFFLGdDQUFnQztvQkFDN0MsU0FBUyxFQUFFLENBQUMsZ0NBQWdDLENBQUM7b0JBQzdDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtpQkFDdEM7eUpBV1ksUUFBUTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1kcm9wZG93bi1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEcm9wZG93bkl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhbiBBUklBIHJvbGUgZm9yIHRoZSBkcm9wZG93biBtZW51IGl0ZW1cbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KVxuICAgKiBieSBpbmRpY2F0aW5nIGhvdyB0aGUgaXRlbSBmdW5jdGlvbnMgYW5kIHdoYXQgaXQgY29udHJvbHMuIEZvciBpbmZvcm1hdGlvbiBhYm91dFxuICAgKiBob3cgYW4gQVJJQSByb2xlIGluZGljYXRlcyB3aGF0IGFuIGl0ZW0gcmVwcmVzZW50cyBvbiBhIHdlYiBwYWdlLCBzZWUgdGhlXG4gICAqIFtXQUktQVJJQSByb2xlcyBtb2RlbF0oaHR0cHM6Ly93d3cudzMub3JnL1dBSS9QRi9hcmlhL3JvbGVzKS5cbiAgICogQGRlZmF1bHQgXCJtZW51aXRlbVwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGFyaWFSb2xlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9hcmlhUm9sZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBhcmlhUm9sZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hcmlhUm9sZSB8fCAnbWVudWl0ZW0nO1xuICB9XG5cbiAgcHVibGljIGdldCBidXR0b25FbGVtZW50KCk6IEhUTUxCdXR0b25FbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignYnV0dG9uLGEnKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0FjdGl2ZSA9IGZhbHNlO1xuXG4gIHB1YmxpYyBpc0Rpc2FibGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfYXJpYVJvbGU6IHN0cmluZztcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyXG4gICkge31cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNEaXNhYmxlZCA9ICF0aGlzLmlzRm9jdXNhYmxlKCk7XG5cbiAgICAvLyBNYWtlIHN1cmUgYW5jaG9yIGVsZW1lbnRzIGFyZSB0YWItYWJsZS5cbiAgICBjb25zdCBidXR0b25FbGVtZW50ID0gdGhpcy5idXR0b25FbGVtZW50O1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGJ1dHRvbkVsZW1lbnQpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGJ1dHRvbkVsZW1lbnQsICd0YWJJbmRleCcsICcwJyk7XG4gICAgfVxuXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXNFbGVtZW50KGVuYWJsZU5hdGl2ZUZvY3VzOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc0FjdGl2ZSA9IHRydWU7XG5cbiAgICBpZiAoZW5hYmxlTmF0aXZlRm9jdXMpIHtcbiAgICAgIHRoaXMuYnV0dG9uRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIGlzRm9jdXNhYmxlKCk6IGJvb2xlYW4ge1xuICAgIC8qdHNsaW50OmRpc2FibGUgbm8tbnVsbC1rZXl3b3JkICovXG4gICAgY29uc3QgaXNGb2N1c2FibGUgPVxuICAgICAgdGhpcy5idXR0b25FbGVtZW50ICYmXG4gICAgICB0aGlzLmJ1dHRvbkVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkaXNhYmxlZCcpID09PSBudWxsO1xuICAgIC8qdHNsaW50OmVuYWJsZSAqL1xuICAgIHJldHVybiBpc0ZvY3VzYWJsZTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldFN0YXRlKCk6IHZvaWQge1xuICAgIHRoaXMuaXNBY3RpdmUgPSBmYWxzZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwic2t5LWRyb3Bkb3duLWl0ZW1cIlxuICBbYXR0ci5yb2xlXT1cImFyaWFSb2xlXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdza3ktZHJvcGRvd24taXRlbS1hY3RpdmUnOiBpc0FjdGl2ZSxcbiAgICAnc2t5LWRyb3Bkb3duLWl0ZW0tZGlzYWJsZWQnOiBpc0Rpc2FibGVkXG4gIH1cIlxuPlxuICA8bmctY29udGVudD4gPC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Input, Optional, Output, ViewEncapsulation } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Input, Optional, Output, ViewEncapsulation, } from '@angular/core';
|
|
2
2
|
import { fromEvent as observableFromEvent, Subject } from 'rxjs';
|
|
3
3
|
import { takeUntil } from 'rxjs/operators';
|
|
4
4
|
import { SkyDropdownItemComponent } from './dropdown-item.component';
|
|
@@ -53,8 +53,8 @@ export class SkyDropdownMenuComponent {
|
|
|
53
53
|
return this._useNativeFocus;
|
|
54
54
|
}
|
|
55
55
|
get hasFocusableItems() {
|
|
56
|
-
const found = this.menuItems.find(item => item.isFocusable());
|
|
57
|
-
return
|
|
56
|
+
const found = this.menuItems.find((item) => item.isFocusable());
|
|
57
|
+
return found !== undefined;
|
|
58
58
|
}
|
|
59
59
|
set menuIndex(value) {
|
|
60
60
|
if (value < 0) {
|
|
@@ -116,7 +116,7 @@ export class SkyDropdownMenuComponent {
|
|
|
116
116
|
.subscribe((items) => {
|
|
117
117
|
this.reset();
|
|
118
118
|
this.menuChanges.emit({
|
|
119
|
-
items: items.toArray()
|
|
119
|
+
items: items.toArray(),
|
|
120
120
|
});
|
|
121
121
|
});
|
|
122
122
|
this.addEventListeners();
|
|
@@ -192,21 +192,21 @@ export class SkyDropdownMenuComponent {
|
|
|
192
192
|
this.resetItemsActiveState();
|
|
193
193
|
item.focusElement(this.useNativeFocus);
|
|
194
194
|
this.menuChanges.emit({
|
|
195
|
-
activeIndex: this.menuIndex
|
|
195
|
+
activeIndex: this.menuIndex,
|
|
196
196
|
});
|
|
197
197
|
}
|
|
198
198
|
getItemByIndex(index) {
|
|
199
199
|
return this.menuItems.find((item, i) => {
|
|
200
|
-
return
|
|
200
|
+
return i === index;
|
|
201
201
|
});
|
|
202
202
|
}
|
|
203
203
|
selectItemByEventTarget(target) {
|
|
204
204
|
const selectedItem = this.menuItems.find((item, i) => {
|
|
205
|
-
const found =
|
|
205
|
+
const found = item.elementRef.nativeElement.contains(target);
|
|
206
206
|
if (found) {
|
|
207
207
|
this.menuIndex = i;
|
|
208
208
|
this.menuChanges.next({
|
|
209
|
-
activeIndex: this.menuIndex
|
|
209
|
+
activeIndex: this.menuIndex,
|
|
210
210
|
});
|
|
211
211
|
}
|
|
212
212
|
return found;
|
|
@@ -214,7 +214,7 @@ export class SkyDropdownMenuComponent {
|
|
|
214
214
|
/* istanbul ignore else */
|
|
215
215
|
if (selectedItem) {
|
|
216
216
|
this.menuChanges.next({
|
|
217
|
-
selectedItem
|
|
217
|
+
selectedItem,
|
|
218
218
|
});
|
|
219
219
|
}
|
|
220
220
|
}
|
|
@@ -278,16 +278,16 @@ export class SkyDropdownMenuComponent {
|
|
|
278
278
|
});
|
|
279
279
|
}
|
|
280
280
|
}
|
|
281
|
-
SkyDropdownMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
282
|
-
SkyDropdownMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
283
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
281
|
+
SkyDropdownMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDropdownMenuComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.SkyDropdownComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
282
|
+
SkyDropdownMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: SkyDropdownMenuComponent, selector: "sky-dropdown-menu", inputs: { ariaLabelledBy: "ariaLabelledBy", ariaRole: "ariaRole", useNativeFocus: "useNativeFocus" }, outputs: { menuChanges: "menuChanges" }, queries: [{ propertyName: "menuItems", predicate: SkyDropdownItemComponent, descendants: true }], ngImport: i0, template: "<div\n class=\"sky-dropdown-menu sky-shadow sky-elevation-4\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.role]=\"ariaRole\"\n [id]=\"dropdownMenuId\"\n>\n <ng-content> </ng-content>\n</div>\n", styles: [".sky-dropdown-menu{overflow-y:auto;overflow-x:hidden;min-height:35px;max-height:calc(50vh - 50px);display:flex;flex-direction:column;background-color:#fff}.sky-dropdown-menu button{overflow:hidden;text-overflow:ellipsis}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-menu{background-color:#252a2e;color:#fff}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
283
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDropdownMenuComponent, decorators: [{
|
|
284
284
|
type: Component,
|
|
285
285
|
args: [{
|
|
286
286
|
selector: 'sky-dropdown-menu',
|
|
287
287
|
templateUrl: './dropdown-menu.component.html',
|
|
288
288
|
styleUrls: ['./dropdown-menu.component.scss'],
|
|
289
289
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
290
|
-
encapsulation: ViewEncapsulation.None
|
|
290
|
+
encapsulation: ViewEncapsulation.None,
|
|
291
291
|
}]
|
|
292
292
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.SkyDropdownComponent, decorators: [{
|
|
293
293
|
type: Optional
|
|
@@ -303,4 +303,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImpor
|
|
|
303
303
|
type: ContentChildren,
|
|
304
304
|
args: [SkyDropdownItemComponent, { descendants: true }]
|
|
305
305
|
}] } });
|
|
306
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wb3BvdmVycy9zcmMvbW9kdWxlcy9kcm9wZG93bi9kcm9wZG93bi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BvcG92ZXJzL3NyYy9tb2R1bGVzL2Ryb3Bkb3duL2Ryb3Bkb3duLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFFTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLFNBQVMsSUFBSSxtQkFBbUIsRUFDaEMsT0FBTyxFQUNSLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUNMLFNBQVMsRUFDVixNQUFNLGdCQUFnQixDQUFDO0FBTXhCLE9BQU8sRUFDTCx3QkFBd0IsRUFDekIsTUFBTSwyQkFBMkIsQ0FBQztBQVVuQyxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3ZCLE1BQU0sK0JBQStCLENBQUM7OztBQUV2QyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFTZixNQUFNLE9BQU8sd0JBQXdCO0lBMEZuQyxZQUNVLGNBQWlDLEVBQ2pDLFVBQXNCLEVBQ1YsaUJBQXVDO1FBRm5ELG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ1Ysc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQTdDN0Q7Ozs7V0FJRztRQUVJLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7UUFFeEQsbUJBQWMsR0FBVyxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQTBCeEQsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FB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dHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIGZyb21FdmVudCBhcyBvYnNlcnZhYmxlRnJvbUV2ZW50LFxuICBTdWJqZWN0XG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICB0YWtlVW50aWxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBTa3lEcm9wZG93bkNvbXBvbmVudFxufSBmcm9tICcuL2Ryb3Bkb3duLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7XG4gIFNreURyb3Bkb3duSXRlbUNvbXBvbmVudFxufSBmcm9tICcuL2Ryb3Bkb3duLWl0ZW0uY29tcG9uZW50JztcblxuaW1wb3J0IHtcbiAgU2t5RHJvcGRvd25NZW51Q2hhbmdlXG59IGZyb20gJy4vdHlwZXMvZHJvcGRvd24tbWVudS1jaGFuZ2UnO1xuXG5pbXBvcnQge1xuICBTa3lEcm9wZG93bk1lc3NhZ2Vcbn0gZnJvbSAnLi90eXBlcy9kcm9wZG93bi1tZXNzYWdlJztcblxuaW1wb3J0IHtcbiAgU2t5RHJvcGRvd25NZXNzYWdlVHlwZVxufSBmcm9tICcuL3R5cGVzL2Ryb3Bkb3duLW1lc3NhZ2UtdHlwZSc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktZHJvcGRvd24tbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kcm9wZG93bi1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZHJvcGRvd24tbWVudS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBTa3lEcm9wZG93bk1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIEhUTUwgZWxlbWVudCBJRCAod2l0aG91dCB0aGUgbGVhZGluZyBgI2ApIG9mIHRoZSBlbGVtZW50IHRoYXQgbGFiZWxzXG4gICAqIHRoZSBkcm9wZG93biBtZW51LiBUaGlzIHNldHMgdGhlIGRyb3Bkb3duIG1lbnUncyBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGVcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcmlhTGFiZWxsZWRCeTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYW4gQVJJQSByb2xlIGZvciB0aGUgZHJvcGRvd24gbWVudVxuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpXG4gICAqIGJ5IGluZGljYXRpbmcgaG93IHRoZSBkcm9wZG93biBtZW51IGZ1bmN0aW9ucyBhbmQgd2hhdCBpdCBjb250cm9scy4gVGhlIGRyb3Bkb3duIGJ1dHRvblxuICAgKiBpbmhlcml0cyB0aGlzIHZhbHVlIHRvIHNldCBpdHMgYGFyaWEtaGFzcG9wdXBgIHByb3BlcnR5LiBGb3IgaW5mb3JtYXRpb25cbiAgICogYWJvdXQgaG93IGFuIEFSSUEgcm9sZSBpbmRpY2F0ZXMgd2hhdCBhbiBpdGVtIHJlcHJlc2VudHMgb24gYSB3ZWIgcGFnZSwgc2VlIHRoZVxuICAgKiBbV0FJLUFSSUEgcm9sZXMgbW9kZWxdKGh0dHBzOi8vd3d3LnczLm9yZy9XQUkvUEYvYXJpYS9yb2xlcykuXG4gICAqIEBkZWZhdWx0IFwibWVudVwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGFyaWFSb2xlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9hcmlhUm9sZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBhcmlhUm9sZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hcmlhUm9sZSB8fCAnbWVudSc7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gdXNlIHRoZSBicm93c2VyJ3MgbmF0aXZlIGZvY3VzIGZ1bmN0aW9uIHdoZW4gdXNlcnMgbmF2aWdhdGUgdGhyb3VnaCBtZW51XG4gICAqIGl0ZW1zIHdpdGggdGhlIGtleWJvYXJkLiBUbyBkaXNhYmxlIHRoZSBuYXRpdmUgZm9jdXMgZnVuY3Rpb24sIHNldCB0aGlzIHByb3BlcnR5IHRvIGBmYWxzZWAuXG4gICAqIEZvciBleGFtcGxlLCB0byBsZXQgdXNlcnMgaW50ZXJhY3Qgd2l0aCB0aGUgZHJvcGRvd24gbWVudSBidXQga2VlcCB0aGUga2V5Ym9hcmQgZm9jdXMgb24gYVxuICAgKiBkaWZmZXJlbnQgZWxlbWVudCwgc2V0IHRoaXMgcHJvcGVydHkgdG8gYGZhbHNlYC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB1c2VOYXRpdmVGb2N1cyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3VzZU5hdGl2ZUZvY3VzID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHVzZU5hdGl2ZUZvY3VzKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl91c2VOYXRpdmVGb2N1cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fdXNlTmF0aXZlRm9jdXM7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgZHJvcGRvd24gbWVudSdzIGFjdGl2ZSBpbmRleCBvciBzZWxlY3RlZCBpdGVtIGNoYW5nZXMuIFRoaXMgZXZlbnQgcHJvdmlkZXMgYW5cbiAgICogb2JzZXJ2YWJsZSB0byBlbWl0IGNoYW5nZXMsIGFuZCB0aGUgcmVzcG9uc2UgaXMgb2ZcbiAgICogdGhlIFNreURyb3Bkb3duTWVudUNoYW5nZSB0eXBlLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBtZW51Q2hhbmdlcyA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5RHJvcGRvd25NZW51Q2hhbmdlPigpO1xuXG4gIHB1YmxpYyBkcm9wZG93bk1lbnVJZDogc3RyaW5nID0gYHNreS1kcm9wZG93bi1tZW51LSR7KytuZXh0SWR9YDtcblxuICBwcml2YXRlIGdldCBoYXNGb2N1c2FibGVJdGVtcygpOiBib29sZWFuIHtcbiAgICBjb25zdCBmb3VuZCA9IHRoaXMubWVudUl0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLmlzRm9jdXNhYmxlKCkpO1xuICAgIHJldHVybiAoZm91bmQgIT09IHVuZGVmaW5lZCk7XG4gIH1cblxuICBwdWJsaWMgc2V0IG1lbnVJbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHZhbHVlIDwgMCkge1xuICAgICAgdmFsdWUgPSB0aGlzLm1lbnVJdGVtcy5sZW5ndGggLSAxO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSA+PSB0aGlzLm1lbnVJdGVtcy5sZW5ndGgpIHtcbiAgICAgIHZhbHVlID0gMDtcbiAgICB9XG5cbiAgICB0aGlzLl9tZW51SW5kZXggPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWVudUluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21lbnVJbmRleDtcbiAgfVxuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2t5RHJvcGRvd25JdGVtQ29tcG9uZW50LCB7ZGVzY2VuZGFudHM6IHRydWV9KVxuICBwdWJsaWMgbWVudUl0ZW1zOiBRdWVyeUxpc3Q8U2t5RHJvcGRvd25JdGVtQ29tcG9uZW50PjtcblxuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgX2FyaWFSb2xlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfbWVudUluZGV4ID0gMDtcblxuICBwcml2YXRlIF91c2VOYXRpdmVGb2N1czogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBkcm9wZG93bkNvbXBvbmVudDogU2t5RHJvcGRvd25Db21wb25lbnRcbiAgKSB7IH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuZHJvcGRvd25Db21wb25lbnQpIHtcbiAgICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnQubWVudUlkID0gdGhpcy5kcm9wZG93bk1lbnVJZDtcbiAgICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnQubWVudUFyaWFSb2xlID0gdGhpcy5hcmlhUm9sZTtcblxuICAgICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudC5tZXNzYWdlU3RyZWFtXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgobWVzc2FnZTogU2t5RHJvcGRvd25NZXNzYWdlKSA9PiB7XG4gICAgICAgICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnN3aXRjaC1kZWZhdWx0ICovXG4gICAgICAgICAgc3dpdGNoIChtZXNzYWdlLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5PcGVuOlxuICAgICAgICAgICAgY2FzZSBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlOlxuICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c0ZpcnN0SXRlbTpcbiAgICAgICAgICAgIHRoaXMuZm9jdXNGaXJzdEl0ZW0oKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIFNreURyb3Bkb3duTWVzc2FnZVR5cGUuRm9jdXNOZXh0SXRlbTpcbiAgICAgICAgICAgIHRoaXMuZm9jdXNOZXh0SXRlbSgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c1ByZXZpb3VzSXRlbTpcbiAgICAgICAgICAgIHRoaXMuZm9jdXNQcmV2aW91c0l0ZW0oKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIFNreURyb3Bkb3duTWVzc2FnZVR5cGUuRm9jdXNMYXN0SXRlbTpcbiAgICAgICAgICAgIHRoaXMuZm9jdXNMYXN0SXRlbSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgdGhpcy5tZW51Q2hhbmdlc1xuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZTogU2t5RHJvcGRvd25NZW51Q2hhbmdlKSA9PiB7XG4gICAgICAgICAgLy8gQ2xvc2UgdGhlIGRyb3Bkb3duIHdoZW4gYSBtZW51IGl0ZW0gaXMgc2VsZWN0ZWQuXG4gICAgICAgICAgaWYgKGNoYW5nZS5zZWxlY3RlZEl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5DbG9zZSk7XG4gICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuRm9jdXNUcmlnZ2VyQnV0dG9uKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY2hhbmdlLml0ZW1zKSB7XG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHBvcG92ZXIgc3R5bGUgYW5kIHBvc2l0aW9uIHdoZW5ldmVyIHRoZSBudW1iZXIgb2YgaXRlbXMgY2hhbmdlcy5cbiAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5SZXBvc2l0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IGRyb3Bkb3duIHdoZW5ldmVyIHRoZSBtZW51IGl0ZW1zIGNoYW5nZS5cbiAgICB0aGlzLm1lbnVJdGVtcy5jaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGl0ZW1zOiBRdWVyeUxpc3Q8U2t5RHJvcGRvd25JdGVtQ29tcG9uZW50PikgPT4ge1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIHRoaXMubWVudUNoYW5nZXMuZW1pdCh7XG4gICAgICAgICAgaXRlbXM6IGl0ZW1zLnRvQXJyYXkoKVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVycygpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIGZvY3VzRmlyc3RJdGVtKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5oYXNGb2N1c2FibGVJdGVtcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubWVudUluZGV4ID0gMDtcblxuICAgIGNvbnN0IGZpcnN0SXRlbSA9IHRoaXMuZ2V0SXRlbUJ5SW5kZXgodGhpcy5tZW51SW5kZXgpO1xuICAgIGlmIChmaXJzdEl0ZW0gJiYgZmlyc3RJdGVtLmlzRm9jdXNhYmxlKCkpIHtcbiAgICAgIHRoaXMuZm9jdXNJdGVtKGZpcnN0SXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNOZXh0SXRlbSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmb2N1c0xhc3RJdGVtKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5oYXNGb2N1c2FibGVJdGVtcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubWVudUluZGV4ID0gdGhpcy5tZW51SXRlbXMubGVuZ3RoIC0gMTtcblxuICAgIGNvbnN0IGxhc3RJdGVtID0gdGhpcy5nZXRJdGVtQnlJbmRleCh0aGlzLm1lbnVJbmRleCk7XG4gICAgaWYgKGxhc3RJdGVtICYmIGxhc3RJdGVtLmlzRm9jdXNhYmxlKCkpIHtcbiAgICAgIHRoaXMuZm9jdXNJdGVtKGxhc3RJdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c1ByZXZpb3VzSXRlbSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmb2N1c1ByZXZpb3VzSXRlbSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaGFzRm9jdXNhYmxlSXRlbXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm1lbnVJbmRleC0tO1xuXG4gICAgY29uc3QgcHJldmlvdXNJdGVtID0gdGhpcy5nZXRJdGVtQnlJbmRleCh0aGlzLm1lbnVJbmRleCk7XG4gICAgaWYgKHByZXZpb3VzSXRlbSAmJiBwcmV2aW91c0l0ZW0uaXNGb2N1c2FibGUoKSkge1xuICAgICAgdGhpcy5mb2N1c0l0ZW0ocHJldmlvdXNJdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c1ByZXZpb3VzSXRlbSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmb2N1c05leHRJdGVtKCkge1xuICAgIGlmICghdGhpcy5oYXNGb2N1c2FibGVJdGVtcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubWVudUluZGV4Kys7XG5cbiAgICBjb25zdCBuZXh0SXRlbSA9IHRoaXMuZ2V0SXRlbUJ5SW5kZXgodGhpcy5tZW51SW5kZXgpO1xuICAgIGlmIChuZXh0SXRlbSAmJiBuZXh0SXRlbS5pc0ZvY3VzYWJsZSgpKSB7XG4gICAgICB0aGlzLmZvY3VzSXRlbShuZXh0SXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNOZXh0SXRlbSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLl9tZW51SW5kZXggPSAtMTtcbiAgICB0aGlzLnJlc2V0SXRlbXNBY3RpdmVTdGF0ZSgpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0SXRlbXNBY3RpdmVTdGF0ZSgpIHtcbiAgICB0aGlzLm1lbnVJdGVtcy5mb3JFYWNoKChpdGVtOiBTa3lEcm9wZG93bkl0ZW1Db21wb25lbnQpID0+IHtcbiAgICAgIGl0ZW0ucmVzZXRTdGF0ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c0l0ZW0oaXRlbTogU2t5RHJvcGRvd25JdGVtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgdGhpcy5yZXNldEl0ZW1zQWN0aXZlU3RhdGUoKTtcbiAgICBpdGVtLmZvY3VzRWxlbWVudCh0aGlzLnVzZU5hdGl2ZUZvY3VzKTtcbiAgICB0aGlzLm1lbnVDaGFuZ2VzLmVtaXQoe1xuICAgICAgYWN0aXZlSW5kZXg6IHRoaXMubWVudUluZGV4XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldEl0ZW1CeUluZGV4KGluZGV4OiBudW1iZXIpOiBTa3lEcm9wZG93bkl0ZW1Db21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLm1lbnVJdGVtcy5maW5kKChpdGVtOiBhbnksIGk6IG51bWJlcikgPT4ge1xuICAgICAgcmV0dXJuIChpID09PSBpbmRleCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEl0ZW1CeUV2ZW50VGFyZ2V0KHRhcmdldDogRXZlbnRUYXJnZXQpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLm1lbnVJdGVtcy5maW5kKChpdGVtOiBTa3lEcm9wZG93bkl0ZW1Db21wb25lbnQsIGk6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgZm91bmQgPSAoaXRlbS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGFyZ2V0KSk7XG5cbiAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICB0aGlzLm1lbnVJbmRleCA9IGk7XG4gICAgICAgIHRoaXMubWVudUNoYW5nZXMubmV4dCh7XG4gICAgICAgICAgYWN0aXZlSW5kZXg6IHRoaXMubWVudUluZGV4XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm91bmQ7XG4gICAgfSk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChzZWxlY3RlZEl0ZW0pIHtcbiAgICAgIHRoaXMubWVudUNoYW5nZXMubmV4dCh7XG4gICAgICAgIHNlbGVjdGVkSXRlbVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZW5kTWVzc2FnZSh0eXBlOiBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlKTogdm9pZCB7XG4gICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudC5tZXNzYWdlU3RyZWFtLm5leHQoeyB0eXBlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCBkcm9wZG93bk1lbnVFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGRyb3Bkb3duTWVudUVsZW1lbnQsICdjbGljaycpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0SXRlbUJ5RXZlbnRUYXJnZXQoZXZlbnQudGFyZ2V0KTtcbiAgICAgIH0pO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudChkcm9wZG93bk1lbnVFbGVtZW50LCAna2V5ZG93bicpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIC8qdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnN3aXRjaC1kZWZhdWx0Ki9cbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICBjYXNlICdlc2NhcGUnOlxuICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlKTtcbiAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c1RyaWdnZXJCdXR0b24pO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdhcnJvd2Rvd24nOlxuICAgICAgICAgIGNhc2UgJ2Rvd24nOlxuICAgICAgICAgICAgdGhpcy5mb2N1c05leHRJdGVtKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdhcnJvd3VwJzpcbiAgICAgICAgICBjYXNlICd1cCc6XG4gICAgICAgICAgICB0aGlzLmZvY3VzUHJldmlvdXNJdGVtKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICd0YWInOlxuICAgICAgICAgICAgaWYgKHRoaXMuZHJvcGRvd25Db21wb25lbnQuZGlzbWlzc09uQmx1cikge1xuICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkZvY3VzVHJpZ2dlckJ1dHRvbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGRyb3Bkb3duTWVudUVsZW1lbnQsICdtb3VzZWVudGVyJylcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnQuaXNNb3VzZUVudGVyID0gdHJ1ZTtcbiAgICAgIH0pO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudChkcm9wZG93bk1lbnVFbGVtZW50LCAnbW91c2VsZWF2ZScpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50LmlzTW91c2VFbnRlciA9IGZhbHNlO1xuICAgICAgICAvLyBBbGxvdyB0aGUgZHJvcGRvd24gY29tcG9uZW50IHRvIHNldCBpc01vdXNlRW50ZXIgYmVmb3JlIGNoZWNraW5nIGlmIHRoZSBjbG9zZSBhY3Rpb25cbiAgICAgICAgLy8gc2hvdWxkIGJlIHRha2VuLlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50LnRyaWdnZXIgPT09ICdob3ZlcicgJiZcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnQuaXNNb3VzZUVudGVyID09PSBmYWxzZVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxufVxuIiwiPGRpdlxuICBjbGFzcz1cInNreS1kcm9wZG93bi1tZW51IHNreS1zaGFkb3cgc2t5LWVsZXZhdGlvbi00XCJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgW2F0dHIucm9sZV09XCJhcmlhUm9sZVwiXG4gIFtpZF09XCJkcm9wZG93bk1lbnVJZFwiXG4+XG4gIDxuZy1jb250ZW50PlxuICA8L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
|
|
306
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wb3BvdmVycy9zcmMvbW9kdWxlcy9kcm9wZG93bi9kcm9wZG93bi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BvcG92ZXJzL3NyYy9tb2R1bGVzL2Ryb3Bkb3duL2Ryb3Bkb3duLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFFTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsSUFBSSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSTNDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBTXJFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7QUFFdkUsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBU2YsTUFBTSxPQUFPLHdCQUF3QjtJQXlGbkMsWUFDVSxjQUFpQyxFQUNqQyxVQUFzQixFQUNWLGlCQUF1QztRQUZuRCxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNWLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUE3QzdEOzs7O1dBSUc7UUFFSSxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUF5QixDQUFDO1FBRXhELG1CQUFjLEdBQVcscUJBQXFCLEVBQUUsTUFBTSxFQUFFLENBQUM7UUEwQnhELGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUk5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O2FBQ25ELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ25DLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUM1Qyx1RkFBdUY7WUFDdkYsbUJBQW1CO1lBQ25CLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFDRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxLQUFLLE9BQU87b0JBQzFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEtBQUssS0FBSyxFQUM3QztvQkFDQSxJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNoRDtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztzSEF2VlUsd0JBQXdCOzBHQUF4Qix3QkFBd0Isa09BOEVsQix3QkFBd0IsZ0RDckgzQywrTUFRQTs0RkQrQmEsd0JBQXdCO2tCQVBwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFdBQVcsRUFBRSxnQ0FBZ0M7b0JBQzdDLFNBQVMsRUFBRSxDQUFDLGdDQUFnQyxDQUFDO29CQUM3QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQ3RDOzswQkE2RkksUUFBUTs0Q0FyRkosY0FBYztzQkFEcEIsS0FBSztnQkFhSyxRQUFRO3NCQURsQixLQUFLO2dCQWlCSyxjQUFjO3NCQUR4QixLQUFLO2dCQW1CQyxXQUFXO3NCQURqQixNQUFNO2dCQTJCQSxTQUFTO3NCQURmLGVBQWU7dUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgZnJvbUV2ZW50IGFzIG9ic2VydmFibGVGcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vZHJvcGRvd24uY29tcG9uZW50JztcblxuaW1wb3J0IHsgU2t5RHJvcGRvd25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9kcm9wZG93bi1pdGVtLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IFNreURyb3Bkb3duTWVudUNoYW5nZSB9IGZyb20gJy4vdHlwZXMvZHJvcGRvd24tbWVudS1jaGFuZ2UnO1xuXG5pbXBvcnQgeyBTa3lEcm9wZG93bk1lc3NhZ2UgfSBmcm9tICcuL3R5cGVzL2Ryb3Bkb3duLW1lc3NhZ2UnO1xuXG5pbXBvcnQgeyBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlIH0gZnJvbSAnLi90eXBlcy9kcm9wZG93bi1tZXNzYWdlLXR5cGUnO1xuXG5sZXQgbmV4dElkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWRyb3Bkb3duLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24tbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLW1lbnUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFNreURyb3Bkb3duTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIEhUTUwgZWxlbWVudCBJRCAod2l0aG91dCB0aGUgbGVhZGluZyBgI2ApIG9mIHRoZSBlbGVtZW50IHRoYXQgbGFiZWxzXG4gICAqIHRoZSBkcm9wZG93biBtZW51LiBUaGlzIHNldHMgdGhlIGRyb3Bkb3duIG1lbnUncyBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGVcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcmlhTGFiZWxsZWRCeTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYW4gQVJJQSByb2xlIGZvciB0aGUgZHJvcGRvd24gbWVudVxuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpXG4gICAqIGJ5IGluZGljYXRpbmcgaG93IHRoZSBkcm9wZG93biBtZW51IGZ1bmN0aW9ucyBhbmQgd2hhdCBpdCBjb250cm9scy4gVGhlIGRyb3Bkb3duIGJ1dHRvblxuICAgKiBpbmhlcml0cyB0aGlzIHZhbHVlIHRvIHNldCBpdHMgYGFyaWEtaGFzcG9wdXBgIHByb3BlcnR5LiBGb3IgaW5mb3JtYXRpb25cbiAgICogYWJvdXQgaG93IGFuIEFSSUEgcm9sZSBpbmRpY2F0ZXMgd2hhdCBhbiBpdGVtIHJlcHJlc2VudHMgb24gYSB3ZWIgcGFnZSwgc2VlIHRoZVxuICAgKiBbV0FJLUFSSUEgcm9sZXMgbW9kZWxdKGh0dHBzOi8vd3d3LnczLm9yZy9XQUkvUEYvYXJpYS9yb2xlcykuXG4gICAqIEBkZWZhdWx0IFwibWVudVwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGFyaWFSb2xlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9hcmlhUm9sZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBhcmlhUm9sZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hcmlhUm9sZSB8fCAnbWVudSc7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gdXNlIHRoZSBicm93c2VyJ3MgbmF0aXZlIGZvY3VzIGZ1bmN0aW9uIHdoZW4gdXNlcnMgbmF2aWdhdGUgdGhyb3VnaCBtZW51XG4gICAqIGl0ZW1zIHdpdGggdGhlIGtleWJvYXJkLiBUbyBkaXNhYmxlIHRoZSBuYXRpdmUgZm9jdXMgZnVuY3Rpb24sIHNldCB0aGlzIHByb3BlcnR5IHRvIGBmYWxzZWAuXG4gICAqIEZvciBleGFtcGxlLCB0byBsZXQgdXNlcnMgaW50ZXJhY3Qgd2l0aCB0aGUgZHJvcGRvd24gbWVudSBidXQga2VlcCB0aGUga2V5Ym9hcmQgZm9jdXMgb24gYVxuICAgKiBkaWZmZXJlbnQgZWxlbWVudCwgc2V0IHRoaXMgcHJvcGVydHkgdG8gYGZhbHNlYC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB1c2VOYXRpdmVGb2N1cyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3VzZU5hdGl2ZUZvY3VzID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHVzZU5hdGl2ZUZvY3VzKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl91c2VOYXRpdmVGb2N1cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fdXNlTmF0aXZlRm9jdXM7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgZHJvcGRvd24gbWVudSdzIGFjdGl2ZSBpbmRleCBvciBzZWxlY3RlZCBpdGVtIGNoYW5nZXMuIFRoaXMgZXZlbnQgcHJvdmlkZXMgYW5cbiAgICogb2JzZXJ2YWJsZSB0byBlbWl0IGNoYW5nZXMsIGFuZCB0aGUgcmVzcG9uc2UgaXMgb2ZcbiAgICogdGhlIFNreURyb3Bkb3duTWVudUNoYW5nZSB0eXBlLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBtZW51Q2hhbmdlcyA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5RHJvcGRvd25NZW51Q2hhbmdlPigpO1xuXG4gIHB1YmxpYyBkcm9wZG93bk1lbnVJZDogc3RyaW5nID0gYHNreS1kcm9wZG93bi1tZW51LSR7KytuZXh0SWR9YDtcblxuICBwcml2YXRlIGdldCBoYXNGb2N1c2FibGVJdGVtcygpOiBib29sZWFuIHtcbiAgICBjb25zdCBmb3VuZCA9IHRoaXMubWVudUl0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaXNGb2N1c2FibGUoKSk7XG4gICAgcmV0dXJuIGZvdW5kICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IG1lbnVJbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHZhbHVlIDwgMCkge1xuICAgICAgdmFsdWUgPSB0aGlzLm1lbnVJdGVtcy5sZW5ndGggLSAxO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSA+PSB0aGlzLm1lbnVJdGVtcy5sZW5ndGgpIHtcbiAgICAgIHZhbHVlID0gMDtcbiAgICB9XG5cbiAgICB0aGlzLl9tZW51SW5kZXggPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWVudUluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21lbnVJbmRleDtcbiAgfVxuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2t5RHJvcGRvd25JdGVtQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHB1YmxpYyBtZW51SXRlbXM6IFF1ZXJ5TGlzdDxTa3lEcm9wZG93bkl0ZW1Db21wb25lbnQ+O1xuXG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSBfYXJpYVJvbGU6IHN0cmluZztcblxuICBwcml2YXRlIF9tZW51SW5kZXggPSAwO1xuXG4gIHByaXZhdGUgX3VzZU5hdGl2ZUZvY3VzOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGRyb3Bkb3duQ29tcG9uZW50OiBTa3lEcm9wZG93bkNvbXBvbmVudFxuICApIHt9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLmRyb3Bkb3duQ29tcG9uZW50KSB7XG4gICAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50Lm1lbnVJZCA9IHRoaXMuZHJvcGRvd25NZW51SWQ7XG4gICAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50Lm1lbnVBcmlhUm9sZSA9IHRoaXMuYXJpYVJvbGU7XG5cbiAgICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnQubWVzc2FnZVN0cmVhbVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgobWVzc2FnZTogU2t5RHJvcGRvd25NZXNzYWdlKSA9PiB7XG4gICAgICAgICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnN3aXRjaC1kZWZhdWx0ICovXG4gICAgICAgICAgc3dpdGNoIChtZXNzYWdlLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5PcGVuOlxuICAgICAgICAgICAgY2FzZSBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlOlxuICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIFNreURyb3Bkb3duTWVzc2FnZVR5cGUuRm9jdXNGaXJzdEl0ZW06XG4gICAgICAgICAgICAgIHRoaXMuZm9jdXNGaXJzdEl0ZW0oKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c05leHRJdGVtOlxuICAgICAgICAgICAgICB0aGlzLmZvY3VzTmV4dEl0ZW0oKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c1ByZXZpb3VzSXRlbTpcbiAgICAgICAgICAgICAgdGhpcy5mb2N1c1ByZXZpb3VzSXRlbSgpO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkZvY3VzTGFzdEl0ZW06XG4gICAgICAgICAgICAgIHRoaXMuZm9jdXNMYXN0SXRlbSgpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICB0aGlzLm1lbnVDaGFuZ2VzXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKChjaGFuZ2U6IFNreURyb3Bkb3duTWVudUNoYW5nZSkgPT4ge1xuICAgICAgICAgIC8vIENsb3NlIHRoZSBkcm9wZG93biB3aGVuIGEgbWVudSBpdGVtIGlzIHNlbGVjdGVkLlxuICAgICAgICAgIGlmIChjaGFuZ2Uuc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UpO1xuICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkZvY3VzVHJpZ2dlckJ1dHRvbik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGNoYW5nZS5pdGVtcykge1xuICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBwb3BvdmVyIHN0eWxlIGFuZCBwb3NpdGlvbiB3aGVuZXZlciB0aGUgbnVtYmVyIG9mIGl0ZW1zIGNoYW5nZXMuXG4gICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuUmVwb3NpdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBSZXNldCBkcm9wZG93biB3aGVuZXZlciB0aGUgbWVudSBpdGVtcyBjaGFuZ2UuXG4gICAgdGhpcy5tZW51SXRlbXMuY2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChpdGVtczogUXVlcnlMaXN0PFNreURyb3Bkb3duSXRlbUNvbXBvbmVudD4pID0+IHtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICB0aGlzLm1lbnVDaGFuZ2VzLmVtaXQoe1xuICAgICAgICAgIGl0ZW1zOiBpdGVtcy50b0FycmF5KCksXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXJzKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgZm9jdXNGaXJzdEl0ZW0oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmhhc0ZvY3VzYWJsZUl0ZW1zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5tZW51SW5kZXggPSAwO1xuXG4gICAgY29uc3QgZmlyc3RJdGVtID0gdGhpcy5nZXRJdGVtQnlJbmRleCh0aGlzLm1lbnVJbmRleCk7XG4gICAgaWYgKGZpcnN0SXRlbSAmJiBmaXJzdEl0ZW0uaXNGb2N1c2FibGUoKSkge1xuICAgICAgdGhpcy5mb2N1c0l0ZW0oZmlyc3RJdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c05leHRJdGVtKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZvY3VzTGFzdEl0ZW0oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmhhc0ZvY3VzYWJsZUl0ZW1zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5tZW51SW5kZXggPSB0aGlzLm1lbnVJdGVtcy5sZW5ndGggLSAxO1xuXG4gICAgY29uc3QgbGFzdEl0ZW0gPSB0aGlzLmdldEl0ZW1CeUluZGV4KHRoaXMubWVudUluZGV4KTtcbiAgICBpZiAobGFzdEl0ZW0gJiYgbGFzdEl0ZW0uaXNGb2N1c2FibGUoKSkge1xuICAgICAgdGhpcy5mb2N1c0l0ZW0obGFzdEl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvY3VzUHJldmlvdXNJdGVtKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZvY3VzUHJldmlvdXNJdGVtKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5oYXNGb2N1c2FibGVJdGVtcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubWVudUluZGV4LS07XG5cbiAgICBjb25zdCBwcmV2aW91c0l0ZW0gPSB0aGlzLmdldEl0ZW1CeUluZGV4KHRoaXMubWVudUluZGV4KTtcbiAgICBpZiAocHJldmlvdXNJdGVtICYmIHByZXZpb3VzSXRlbS5pc0ZvY3VzYWJsZSgpKSB7XG4gICAgICB0aGlzLmZvY3VzSXRlbShwcmV2aW91c0l0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvY3VzUHJldmlvdXNJdGVtKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZvY3VzTmV4dEl0ZW0oKSB7XG4gICAgaWYgKCF0aGlzLmhhc0ZvY3VzYWJsZUl0ZW1zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5tZW51SW5kZXgrKztcblxuICAgIGNvbnN0IG5leHRJdGVtID0gdGhpcy5nZXRJdGVtQnlJbmRleCh0aGlzLm1lbnVJbmRleCk7XG4gICAgaWYgKG5leHRJdGVtICYmIG5leHRJdGVtLmlzRm9jdXNhYmxlKCkpIHtcbiAgICAgIHRoaXMuZm9jdXNJdGVtKG5leHRJdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c05leHRJdGVtKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuX21lbnVJbmRleCA9IC0xO1xuICAgIHRoaXMucmVzZXRJdGVtc0FjdGl2ZVN0YXRlKCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRJdGVtc0FjdGl2ZVN0YXRlKCkge1xuICAgIHRoaXMubWVudUl0ZW1zLmZvckVhY2goKGl0ZW06IFNreURyb3Bkb3duSXRlbUNvbXBvbmVudCkgPT4ge1xuICAgICAgaXRlbS5yZXNldFN0YXRlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGZvY3VzSXRlbShpdGVtOiBTa3lEcm9wZG93bkl0ZW1Db21wb25lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0SXRlbXNBY3RpdmVTdGF0ZSgpO1xuICAgIGl0ZW0uZm9jdXNFbGVtZW50KHRoaXMudXNlTmF0aXZlRm9jdXMpO1xuICAgIHRoaXMubWVudUNoYW5nZXMuZW1pdCh7XG4gICAgICBhY3RpdmVJbmRleDogdGhpcy5tZW51SW5kZXgsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldEl0ZW1CeUluZGV4KGluZGV4OiBudW1iZXIpOiBTa3lEcm9wZG93bkl0ZW1Db21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLm1lbnVJdGVtcy5maW5kKChpdGVtOiBhbnksIGk6IG51bWJlcikgPT4ge1xuICAgICAgcmV0dXJuIGkgPT09IGluZGV4O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RJdGVtQnlFdmVudFRhcmdldCh0YXJnZXQ6IEV2ZW50VGFyZ2V0KTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gdGhpcy5tZW51SXRlbXMuZmluZChcbiAgICAgIChpdGVtOiBTa3lEcm9wZG93bkl0ZW1Db21wb25lbnQsIGk6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBmb3VuZCA9IGl0ZW0uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldCk7XG5cbiAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgdGhpcy5tZW51SW5kZXggPSBpO1xuICAgICAgICAgIHRoaXMubWVudUNoYW5nZXMubmV4dCh7XG4gICAgICAgICAgICBhY3RpdmVJbmRleDogdGhpcy5tZW51SW5kZXgsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgICB9XG4gICAgKTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHNlbGVjdGVkSXRlbSkge1xuICAgICAgdGhpcy5tZW51Q2hhbmdlcy5uZXh0KHtcbiAgICAgICAgc2VsZWN0ZWRJdGVtLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZW5kTWVzc2FnZSh0eXBlOiBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlKTogdm9pZCB7XG4gICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudC5tZXNzYWdlU3RyZWFtLm5leHQoeyB0eXBlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCBkcm9wZG93bk1lbnVFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGRyb3Bkb3duTWVudUVsZW1lbnQsICdjbGljaycpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0SXRlbUJ5RXZlbnRUYXJnZXQoZXZlbnQudGFyZ2V0KTtcbiAgICAgIH0pO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudChkcm9wZG93bk1lbnVFbGVtZW50LCAna2V5ZG93bicpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIC8qdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnN3aXRjaC1kZWZhdWx0Ki9cbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICBjYXNlICdlc2NhcGUnOlxuICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlKTtcbiAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c1RyaWdnZXJCdXR0b24pO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdhcnJvd2Rvd24nOlxuICAgICAgICAgIGNhc2UgJ2Rvd24nOlxuICAgICAgICAgICAgdGhpcy5mb2N1c05leHRJdGVtKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdhcnJvd3VwJzpcbiAgICAgICAgICBjYXNlICd1cCc6XG4gICAgICAgICAgICB0aGlzLmZvY3VzUHJldmlvdXNJdGVtKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICd0YWInOlxuICAgICAgICAgICAgaWYgKHRoaXMuZHJvcGRvd25Db21wb25lbnQuZGlzbWlzc09uQmx1cikge1xuICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkZvY3VzVHJpZ2dlckJ1dHRvbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGRyb3Bkb3duTWVudUVsZW1lbnQsICdtb3VzZWVudGVyJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnQuaXNNb3VzZUVudGVyID0gdHJ1ZTtcbiAgICAgIH0pO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudChkcm9wZG93bk1lbnVFbGVtZW50LCAnbW91c2VsZWF2ZScpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50LmlzTW91c2VFbnRlciA9IGZhbHNlO1xuICAgICAgICAvLyBBbGxvdyB0aGUgZHJvcGRvd24gY29tcG9uZW50IHRvIHNldCBpc01vdXNlRW50ZXIgYmVmb3JlIGNoZWNraW5nIGlmIHRoZSBjbG9zZSBhY3Rpb25cbiAgICAgICAgLy8gc2hvdWxkIGJlIHRha2VuLlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50LnRyaWdnZXIgPT09ICdob3ZlcicgJiZcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnQuaXNNb3VzZUVudGVyID09PSBmYWxzZVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJza3ktZHJvcGRvd24tbWVudSBza3ktc2hhZG93IHNreS1lbGV2YXRpb24tNFwiXG4gIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gIFthdHRyLnJvbGVdPVwiYXJpYVJvbGVcIlxuICBbaWRdPVwiZHJvcGRvd25NZW51SWRcIlxuPlxuICA8bmctY29udGVudD4gPC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, ElementRef, Input, Optional, TemplateRef, ViewChild } from '@angular/core';
|
|
2
|
-
import { SkyAffixAutoFitContext } from '@skyux/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ElementRef, Input, Optional, TemplateRef, ViewChild, } from '@angular/core';
|
|
2
|
+
import { SkyAffixAutoFitContext, } from '@skyux/core';
|
|
3
3
|
import { fromEvent as observableFromEvent, Subject } from 'rxjs';
|
|
4
4
|
import { takeUntil } from 'rxjs/operators';
|
|
5
5
|
import { SkyDropdownMessageType } from './types/dropdown-message-type';
|
|
@@ -226,12 +226,10 @@ export class SkyDropdownComponent {
|
|
|
226
226
|
}
|
|
227
227
|
const overlay = this.overlayService.create({
|
|
228
228
|
enableScroll: true,
|
|
229
|
-
enablePointerEvents: true
|
|
229
|
+
enablePointerEvents: true,
|
|
230
230
|
});
|
|
231
231
|
overlay.attachTemplate(this.menuContainerTemplateRef);
|
|
232
|
-
overlay.backdropClick
|
|
233
|
-
.pipe(takeUntil(this.ngUnsubscribe))
|
|
234
|
-
.subscribe(() => {
|
|
232
|
+
overlay.backdropClick.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {
|
|
235
233
|
if (this.dismissOnBlur) {
|
|
236
234
|
this.sendMessage(SkyDropdownMessageType.Close);
|
|
237
235
|
}
|
|
@@ -257,7 +255,7 @@ export class SkyDropdownComponent {
|
|
|
257
255
|
affixer.placementChange
|
|
258
256
|
.pipe(takeUntil(this.ngUnsubscribe))
|
|
259
257
|
.subscribe((change) => {
|
|
260
|
-
this.isVisible =
|
|
258
|
+
this.isVisible = change.placement !== null;
|
|
261
259
|
this.changeDetector.markForCheck();
|
|
262
260
|
});
|
|
263
261
|
this.affixer = affixer;
|
|
@@ -300,22 +298,22 @@ export class SkyDropdownComponent {
|
|
|
300
298
|
enableAutoFit: true,
|
|
301
299
|
horizontalAlignment: parseAffixHorizontalAlignment(this.horizontalAlignment),
|
|
302
300
|
isSticky: true,
|
|
303
|
-
placement: 'below'
|
|
301
|
+
placement: 'below',
|
|
304
302
|
});
|
|
305
303
|
this.isVisible = true;
|
|
306
304
|
this.changeDetector.markForCheck();
|
|
307
305
|
});
|
|
308
306
|
}
|
|
309
307
|
}
|
|
310
|
-
SkyDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
311
|
-
SkyDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
312
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
308
|
+
SkyDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDropdownComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyAffixService }, { token: i1.SkyOverlayService }, { token: i2.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
309
|
+
SkyDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: SkyDropdownComponent, selector: "sky-dropdown", inputs: { buttonStyle: "buttonStyle", buttonType: "buttonType", disabled: "disabled", dismissOnBlur: "dismissOnBlur", label: "label", horizontalAlignment: "horizontalAlignment", messageStream: "messageStream", title: "title", trigger: "trigger" }, viewQueries: [{ propertyName: "menuContainerElementRef", first: true, predicate: ["menuContainerElementRef"], descendants: true, read: ElementRef }, { propertyName: "menuContainerTemplateRef", first: true, predicate: ["menuContainerTemplateRef"], descendants: true, read: TemplateRef, static: true }, { propertyName: "triggerButton", first: true, predicate: ["triggerButton"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div class=\"sky-dropdown\">\n <button\n class=\"sky-btn sky-dropdown-button\"\n type=\"button\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-controls]=\"isOpen ? menuId : null\"\n [attr.aria-haspopup]=\"menuAriaRole\"\n [attr.aria-label]=\"\n label || ('skyux_dropdown_context_menu_default_label' | skyLibResources)\n \"\n [attr.title]=\"title\"\n [disabled]=\"disabled\"\n [ngClass]=\"[\n 'sky-dropdown-button-type-' + buttonType,\n 'sky-btn-' + buttonStyle\n ]\"\n #triggerButton\n >\n <ng-container [ngSwitch]=\"buttonType\">\n <ng-template ngSwitchCase=\"context-menu\">\n <sky-icon *skyThemeIf=\"'default'\" icon=\"ellipsis-h\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"ellipsis\"\n iconType=\"skyux\"\n ></sky-icon>\n </ng-template>\n\n <ng-template ngSwitchDefault>\n <div\n *ngIf=\"buttonType === 'select' || buttonType === 'tab' || !buttonType\"\n class=\"sky-dropdown-button-container\"\n >\n <div class=\"sky-dropdown-button-content-container\">\n <ng-content select=\"sky-dropdown-button\"> </ng-content>\n </div>\n <div class=\"sky-dropdown-button-icon-container\">\n <sky-icon\n *skyThemeIf=\"'default'\"\n class=\"sky-dropdown-caret\"\n icon=\"caret-down\"\n >\n </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n class=\"sky-dropdown-caret\"\n icon=\"chevron-down\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </div>\n </div>\n <div\n *ngIf=\"buttonType !== 'select' && buttonType !== 'tab' && buttonType\"\n >\n <sky-icon [icon]=\"buttonType\" size=\"lg\"></sky-icon>\n </div>\n </ng-template>\n </ng-container>\n </button>\n</div>\n\n<ng-template #menuContainerTemplateRef>\n <div\n class=\"sky-dropdown-menu-container\"\n [class.hidden]=\"!isVisible\"\n #menuContainerElementRef\n >\n <ng-content select=\"sky-dropdown-menu\"></ng-content>\n </div>\n</ng-template>\n", styles: [".sky-dropdown-button-type-tab{background-color:transparent;border:none;border-radius:4px 4px 0 0;color:#686c73;cursor:pointer;display:inline-block;font-weight:600;line-height:1.8;padding:8px 16px;background-color:#0974a1;color:#fff;max-width:100%;text-align:left}.sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:#eeeeef;color:#212327;text-decoration:none}.sky-dropdown-button-type-tab.sky-btn-tab-disabled{background-color:#cdcfd2;cursor:default;outline:none;text-decoration:none}.sky-dropdown-button-type-tab.sky-btn-tab-disabled:hover{color:#686c73;cursor:default;text-decoration:none}.sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:#0974a1;color:#fff}.sky-dropdown-button-type-context-menu{border-radius:50%;padding:3px 8px}.sky-dropdown-caret{margin-left:10px}.sky-dropdown-button-container{display:flex}.sky-dropdown-button-content-container{flex-shrink:1;overflow:hidden;text-overflow:ellipsis}.sky-dropdown-button-icon-container{flex-grow:1}.sky-dropdown-menu-container{position:fixed}.hidden{visibility:hidden}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab{border:none;border-radius:0;font-weight:400;padding:10px 15px;transition:box-shadow .15s;background-color:transparent;color:#212327}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled):not(.sky-btn-tab-selected):not(.sky-dropdown-button-type-tab):not(:focus){background-color:transparent;border-bottom:solid 1px #00b4f1;padding-bottom:9px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:focus{background-color:transparent;outline:none}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:focus:not(:active){outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:active{border-bottom:solid 3px #00b4f1;padding-bottom:7px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:not(:active){border-bottom:solid 3px #1870B8;padding-bottom:7px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:transparent;color:#212327}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab .sky-btn-tab-close,:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab .sky-tab-header-count{color:#686c73}:host-context(.sky-theme-modern) .sky-dropdown-caret{margin-left:10px}.sky-theme-modern .sky-dropdown-button-type-tab{border:none;border-radius:0;font-weight:400;padding:10px 15px;transition:box-shadow .15s;background-color:transparent;color:#212327}.sky-theme-modern .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled):not(.sky-btn-tab-selected):not(.sky-dropdown-button-type-tab):not(:focus){background-color:transparent;border-bottom:solid 1px #00b4f1;padding-bottom:9px}.sky-theme-modern .sky-dropdown-button-type-tab:focus{background-color:transparent;outline:none}.sky-theme-modern .sky-dropdown-button-type-tab:focus:not(:active){outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}.sky-theme-modern .sky-dropdown-button-type-tab:active{border-bottom:solid 3px #00b4f1;padding-bottom:7px}.sky-theme-modern .sky-dropdown-button-type-tab:not(:active){border-bottom:solid 3px #1870B8;padding-bottom:7px}.sky-theme-modern .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:transparent;color:#212327}.sky-theme-modern .sky-dropdown-button-type-tab .sky-btn-tab-close,.sky-theme-modern .sky-dropdown-button-type-tab .sky-tab-header-count{color:#686c73}.sky-theme-modern .sky-dropdown-caret{margin-left:10px}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab{color:#fff}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab:hover{color:#fff}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab .sky-btn-tab-close,:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab .sky-tab-header-count{color:#efefef}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab{color:#fff}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab:hover{color:#fff}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab .sky-btn-tab-close,.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab .sky-tab-header-count{color:#efefef}\n"], components: [{ type: i3.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i2.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "skyLibResources": i5.SkyLibResourcesPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
310
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyDropdownComponent, decorators: [{
|
|
313
311
|
type: Component,
|
|
314
312
|
args: [{
|
|
315
313
|
selector: 'sky-dropdown',
|
|
316
314
|
templateUrl: './dropdown.component.html',
|
|
317
315
|
styleUrls: ['./dropdown.component.scss'],
|
|
318
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
316
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
319
317
|
}]
|
|
320
318
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.SkyAffixService }, { type: i1.SkyOverlayService }, { type: i2.SkyThemeService, decorators: [{
|
|
321
319
|
type: Optional
|
|
@@ -340,19 +338,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImpor
|
|
|
340
338
|
}], menuContainerElementRef: [{
|
|
341
339
|
type: ViewChild,
|
|
342
340
|
args: ['menuContainerElementRef', {
|
|
343
|
-
read: ElementRef
|
|
341
|
+
read: ElementRef,
|
|
344
342
|
}]
|
|
345
343
|
}], menuContainerTemplateRef: [{
|
|
346
344
|
type: ViewChild,
|
|
347
345
|
args: ['menuContainerTemplateRef', {
|
|
348
346
|
read: TemplateRef,
|
|
349
|
-
static: true
|
|
347
|
+
static: true,
|
|
350
348
|
}]
|
|
351
349
|
}], triggerButton: [{
|
|
352
350
|
type: ViewChild,
|
|
353
351
|
args: ['triggerButton', {
|
|
354
352
|
read: ElementRef,
|
|
355
|
-
static: true
|
|
353
|
+
static: true,
|
|
356
354
|
}]
|
|
357
355
|
}] } });
|
|
358
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcG9wb3ZlcnMvc3JjL21vZHVsZXMvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcG9wb3ZlcnMvc3JjL21vZHVsZXMvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFHTCxRQUFRLEVBQ1IsV0FBVyxFQUNYLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsc0JBQXNCLEVBS3ZCLE1BQU0sYUFBYSxDQUFDO0FBTXJCLE9BQU8sRUFDTCxTQUFTLElBQUksbUJBQW1CLEVBQ2hDLE9BQU8sRUFDUixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFDTCxTQUFTLEVBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQVV4QixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3ZCLE1BQU0sK0JBQStCLENBQUM7QUFNdkMsT0FBTyxFQUNMLDZCQUE2QixFQUM5QixNQUFNLHVCQUF1QixDQUFDOzs7Ozs7O0FBUS9CLE1BQU0sT0FBTyxvQkFBb0I7SUF3TC9CLFlBQ1UsY0FBaUMsRUFDakMsWUFBNkIsRUFDN0IsY0FBaUMsRUFDckIsUUFBMEI7UUFIdEMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLGlCQUFZLEdBQVosWUFBWSxDQUFpQjtRQUM3QixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7UUF4R2hEOzs7V0FHRztRQUdJLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQXNCLENBQUM7UUFvRGxELGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBRTlCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFv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QUFLO3NCQURYLEtBQUs7Z0JBY0ssT0FBTztzQkFEakIsS0FBSztnQkFxQkssdUJBQXVCO3NCQUhqQyxTQUFTO3VCQUFDLHlCQUF5QixFQUFFO3dCQUNwQyxJQUFJLEVBQUUsVUFBVTtxQkFDakI7Z0JBMEJPLHdCQUF3QjtzQkFKL0IsU0FBUzt1QkFBQywwQkFBMEIsRUFBRTt3QkFDckMsSUFBSSxFQUFFLFdBQVc7d0JBQ2pCLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2dCQU9PLGFBQWE7c0JBSnBCLFNBQVM7dUJBQUMsZUFBZSxFQUFFO3dCQUMxQixJQUFJLEVBQUUsVUFBVTt3QkFDaEIsTUFBTSxFQUFFLElBQUk7cUJBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgU2t5QWZmaXhBdXRvRml0Q29udGV4dCxcbiAgU2t5QWZmaXhlcixcbiAgU2t5QWZmaXhTZXJ2aWNlLFxuICBTa3lPdmVybGF5SW5zdGFuY2UsXG4gIFNreU92ZXJsYXlTZXJ2aWNlXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHtcbiAgU2t5VGhlbWVTZXJ2aWNlXG59IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7XG4gIGZyb21FdmVudCBhcyBvYnNlcnZhYmxlRnJvbUV2ZW50LFxuICBTdWJqZWN0XG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICB0YWtlVW50aWxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBTa3lEcm9wZG93bkhvcml6b250YWxBbGlnbm1lbnRcbn0gZnJvbSAnLi90eXBlcy9kcm9wZG93bi1ob3Jpem9udGFsLWFsaWdubWVudCc7XG5cbmltcG9ydCB7XG4gIFNreURyb3Bkb3duTWVzc2FnZVxufSBmcm9tICcuL3R5cGVzL2Ryb3Bkb3duLW1lc3NhZ2UnO1xuXG5pbXBvcnQge1xuICBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlXG59IGZyb20gJy4vdHlwZXMvZHJvcGRvd24tbWVzc2FnZS10eXBlJztcblxuaW1wb3J0IHtcbiAgU2t5RHJvcGRvd25UcmlnZ2VyVHlwZVxufSBmcm9tICcuL3R5cGVzL2Ryb3Bkb3duLXRyaWdnZXItdHlwZSc7XG5cbmltcG9ydCB7XG4gIHBhcnNlQWZmaXhIb3Jpem9udGFsQWxpZ25tZW50XG59IGZyb20gJy4vZHJvcGRvd24tZXh0ZW5zaW9ucyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1kcm9wZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNreURyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSBiYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgZHJvcGRvd24gYnV0dG9uLiBBdmFpbGFibGUgdmFsdWVzIGFyZSBgZGVmYXVsdGAgYW5kXG4gICAqIGBwcmltYXJ5YC4gVGhlc2UgdmFsdWVzIHNldCB0aGUgYmFja2dyb3VuZCBjb2xvciBmcm9tIHRoZVxuICAgKiBbc2Vjb25kYXJ5IGFuZCBwcmltYXJ5IGJ1dHRvbiBjbGFzc2VzXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvYnV0dG9uKSByZXNwZWN0aXZlbHkuXG4gICAqIEBkZWZhdWx0IFwiZGVmYXVsdFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGJ1dHRvblN0eWxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9idXR0b25TdHlsZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBidXR0b25TdHlsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9idXR0b25TdHlsZSB8fCAnZGVmYXVsdCc7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSB0eXBlIG9mIGJ1dHRvbiB0byByZW5kZXIgYXMgdGhlIGRyb3Bkb3duJ3MgdHJpZ2dlciBlbGVtZW50LiBUbyBkaXNwbGF5IGEgYnV0dG9uXG4gICAqIHdpdGggdGV4dCBhbmQgYSBjYXJldCwgc3BlY2lmeSBgc2VsZWN0YCBhbmQgdGhlbiBlbnRlciB0aGUgYnV0dG9uIHRleHQgaW4gYVxuICAgKiBgc2t5LWRyb3Bkb3duLWJ1dHRvbmAgZWxlbWVudC4gVG8gZGlzcGxheSBhIHJvdW5kIGJ1dHRvbiB3aXRoIGFuIGVsbGlwc2lzLCBzcGVjaWZ5XG4gICAqIGBjb250ZXh0LW1lbnVgLiBBbmQgdG8gZGlzcGxheSBhIGJ1dHRvbiB3aXRoIGEgW0ZvbnQgQXdlc29tZSBpY29uXShodHRwOi8vZm9udGF3ZXNvbWUuaW8vaWNvbnMvKSwgc3BlY2lmeSB0aGUgaWNvbidzIGNsYXNzIG5hbWUuXG4gICAqIEZvciBleGFtcGxlLCB0byBkaXNwbGF5IHRoZSBgZmEtZmlsdGVyYCBpY29uLCBzcGVjaWZ5IGBmaWx0ZXJgLlxuICAgKiBAZGVmYXVsdCBcInNlbGVjdFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGJ1dHRvblR5cGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2J1dHRvblR5cGUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYnV0dG9uVHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9idXR0b25UeXBlIHx8ICdzZWxlY3QnO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGRpc2FibGUgdGhlIGRyb3Bkb3duIGJ1dHRvbi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQgfHwgZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gY2xvc2UgdGhlIGRyb3Bkb3duIHdoZW4gdXNlcnMgY2xpY2sgYXdheSBmcm9tIHRoZSBtZW51LlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc21pc3NPbkJsdXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNtaXNzT25CbHVyID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc21pc3NPbkJsdXIoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX2Rpc21pc3NPbkJsdXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2Rpc21pc3NPbkJsdXI7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIGFuIEFSSUEgbGFiZWwgZm9yIHRoZSBkcm9wZG93bi4gVGhpcyBzZXRzIHRoZSBkcm9wZG93bidzIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGVcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIHRoZSBkcm9wZG93biBtZW51IGluIHJlbGF0aW9uIHRvIHRoZSBkcm9wZG93biBidXR0b24uXG4gICAqIEBkZWZhdWx0IFwibGVmdFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGhvcml6b250YWxBbGlnbm1lbnQodmFsdWU6IFNreURyb3Bkb3duSG9yaXpvbnRhbEFsaWdubWVudCkge1xuICAgIHRoaXMuX2hvcml6b250YWxBbGlnbm1lbnQgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaG9yaXpvbnRhbEFsaWdubWVudCgpOiBTa3lEcm9wZG93bkhvcml6b250YWxBbGlnbm1lbnQge1xuICAgIHJldHVybiB0aGlzLl9ob3Jpem9udGFsQWxpZ25tZW50IHx8ICdsZWZ0JztcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm92aWRlcyBhbiBvYnNlcnZhYmxlIHRvIHNlbmQgY29tbWFuZHMgdG8gdGhlIGRyb3Bkb3duLiBUaGUgY29tbWFuZHMgc2hvdWxkIHJlc3BlY3RcbiAgICogdGhlIFtbU2t5RHJvcGRvd25NZXNzYWdlXV0gdHlwZS5cbiAgICovXG5cbiAgQElucHV0KClcbiAgcHVibGljIG1lc3NhZ2VTdHJlYW0gPSBuZXcgU3ViamVjdDxTa3lEcm9wZG93bk1lc3NhZ2U+KCk7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhIHRpdGxlIHRvIGRpc3BsYXkgaW4gYSB0b29sdGlwIHdoZW4gdXNlcnMgaG92ZXIgdGhlIG1vdXNlIG92ZXIgdGhlIGRyb3Bkb3duIGJ1dHRvbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0aXRsZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaG93IHVzZXJzIGludGVyYWN0IHdpdGggdGhlIGRyb3Bkb3duIGJ1dHRvbiB0byBleHBvc2UgdGhlIGRyb3Bkb3duIG1lbnUuXG4gICAqIFdlIHJlY29tbWVuZCB0aGUgZGVmYXVsdCBgY2xpY2tgIHZhbHVlIGJlY2F1c2UgdGhlIGBob3ZlcmAgdmFsdWUgY2FuIHBvc2VcbiAgICogW2FjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkgaXNzdWVzXG4gICAqIGZvciB1c2VycyBvbiB0b3VjaCBkZXZpY2VzIHN1Y2ggYXMgcGhvbmVzIGFuZCB0YWJsZXRzLlxuICAgKiBAZGVwcmVjYXRlZCBXZSByZWNvbW1lbmQgYWdhaW5zdCB1c2luZyB0aGlzIHByb3BlcnR5LiBJZiB5b3UgY2hvb3NlIHRvIHVzZSB0aGUgZGVwcmVjYXRlZFxuICAgKiBgaG92ZXJgIHZhbHVlIGFueXdheSwgd2UgcmVjb21tZW5kIHRoYXQgeW91IG5vdCB1c2UgaXQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgYHRpdGxlYFxuICAgKiBwcm9wZXJ0eS4gKFRoaXMgcHJvcGVydHkgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZS4pXG4gICAqIEBkZWZhdWx0IFwiY2xpY2tcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0cmlnZ2VyKHZhbHVlOiBTa3lEcm9wZG93blRyaWdnZXJUeXBlKSB7XG4gICAgdGhpcy5fdHJpZ2dlciA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCB0cmlnZ2VyKCk6IFNreURyb3Bkb3duVHJpZ2dlclR5cGUge1xuICAgIHJldHVybiB0aGlzLl90cmlnZ2VyIHx8ICdjbGljayc7XG4gIH1cblxuICBwdWJsaWMgc2V0IGlzT3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzT3BlbiA9IHZhbHVlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNPcGVuIHx8IGZhbHNlO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnbWVudUNvbnRhaW5lckVsZW1lbnRSZWYnLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZlxuICB9KVxuICBwdWJsaWMgc2V0IG1lbnVDb250YWluZXJFbGVtZW50UmVmKHZhbHVlOiBFbGVtZW50UmVmKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLl9tZW51Q29udGFpbmVyRWxlbWVudFJlZiA9IHZhbHVlO1xuICAgICAgdGhpcy5kZXN0cm95QWZmaXhlcigpO1xuICAgICAgdGhpcy5jcmVhdGVBZmZpeGVyKCk7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWVudUNvbnRhaW5lckVsZW1lbnRSZWYoKTogRWxlbWVudFJlZiB7XG4gICAgcmV0dXJuIHRoaXMuX21lbnVDb250YWluZXJFbGVtZW50UmVmO1xuICB9XG5cbiAgcHVibGljIGlzTW91c2VFbnRlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBpc1Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgbWVudUlkOiBzdHJpbmc7XG5cbiAgcHVibGljIG1lbnVBcmlhUm9sZTogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoJ21lbnVDb250YWluZXJUZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWVcbiAgfSlcbiAgcHJpdmF0ZSBtZW51Q29udGFpbmVyVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQFZpZXdDaGlsZCgndHJpZ2dlckJ1dHRvbicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICAgIHN0YXRpYzogdHJ1ZVxuICB9KVxuICBwcml2YXRlIHRyaWdnZXJCdXR0b246IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBhZmZpeGVyOiBTa3lBZmZpeGVyO1xuXG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSBvdmVybGF5OiBTa3lPdmVybGF5SW5zdGFuY2U7XG5cbiAgcHJpdmF0ZSBfYnV0dG9uU3R5bGU6IHN0cmluZztcblxuICBwcml2YXRlIF9idXR0b25UeXBlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBfZGlzbWlzc09uQmx1cjogYm9vbGVhbjtcblxuICBwcml2YXRlIF9ob3Jpem9udGFsQWxpZ25tZW50OiBTa3lEcm9wZG93bkhvcml6b250YWxBbGlnbm1lbnQ7XG5cbiAgcHJpdmF0ZSBfaXNPcGVuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfbWVudUNvbnRhaW5lckVsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBfdHJpZ2dlcjogU2t5RHJvcGRvd25UcmlnZ2VyVHlwZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGFmZml4U2VydmljZTogU2t5QWZmaXhTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3ZlcmxheVNlcnZpY2U6IFNreU92ZXJsYXlTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgdGhlbWVTdmM/OiBTa3lUaGVtZVNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXJzKCk7XG5cbiAgICB0aGlzLm1lc3NhZ2VTdHJlYW1cbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgobWVzc2FnZTogU2t5RHJvcGRvd25NZXNzYWdlKSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhtZXNzYWdlKTtcbiAgICAgIH0pO1xuXG4gICAgLy8gTG9hZCBwcm9wZXIgaWNvbnMgb24gdGhlbWUgY2hhbmdlLlxuICAgIHRoaXMudGhlbWVTdmM/LnNldHRpbmdzQ2hhbmdlXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95QWZmaXhlcigpO1xuICAgIHRoaXMuZGVzdHJveU92ZXJsYXkoKTtcblxuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCBidXR0b25FbGVtZW50ID0gdGhpcy50cmlnZ2VyQnV0dG9uLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGJ1dHRvbkVsZW1lbnQsICdjbGljaycpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5PcGVuKTtcbiAgICAgICAgICAvLyBXYWl0IGZvciBkcm9wZG93biB0byBvcGVuLCB0aGVuIHNldCBmb2N1cyBvbiBmaXJzdCBpdGVtLlxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkZvY3VzRmlyc3RJdGVtKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGJ1dHRvbkVsZW1lbnQsICdrZXlkb3duJylcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5LnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnN3aXRjaC1kZWZhdWx0ICovXG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgY2FzZSAnZXNjYXBlJzpcbiAgICAgICAgICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5DbG9zZSk7XG4gICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c1RyaWdnZXJCdXR0b24pO1xuICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAndGFiJzpcbiAgICAgICAgICAgIGlmICh0aGlzLmlzT3BlbiAmJiB0aGlzLmRpc21pc3NPbkJsdXIpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnYXJyb3d1cCc6XG4gICAgICAgICAgY2FzZSAndXAnOlxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuT3Blbik7XG4gICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c0xhc3RJdGVtKTtcbiAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ2VudGVyJzpcbiAgICAgICAgICBjYXNlICdhcnJvd2Rvd24nOlxuICAgICAgICAgIGNhc2UgJ2Rvd24nOlxuICAgICAgICAgIGNhc2UgJyAnOiAvLyBTcGFjZWJhci5cbiAgICAgICAgICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuT3Blbik7XG4gICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c0ZpcnN0SXRlbSk7XG4gICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudChidXR0b25FbGVtZW50LCAnbW91c2VlbnRlcicpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzTW91c2VFbnRlciA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXIgPT09ICdob3ZlcicpIHtcbiAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuT3Blbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudChidXR0b25FbGVtZW50LCAnbW91c2VsZWF2ZScpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzTW91c2VFbnRlciA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy50cmlnZ2VyID09PSAnaG92ZXInKSB7XG4gICAgICAgICAgLy8gQWxsb3cgdGhlIGRyb3Bkb3duIG1lbnUgdG8gc2V0IGlzTW91c2VFbnRlciBiZWZvcmUgY2hlY2tpbmcgaWYgdGhlIGNsb3NlIGFjdGlvblxuICAgICAgICAgIC8vIHNob3VsZCBiZSB0YWtlbi5cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc01vdXNlRW50ZXIpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU92ZXJsYXkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3ZlcmxheSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG92ZXJsYXkgPSB0aGlzLm92ZXJsYXlTZXJ2aWNlLmNyZWF0ZSh7XG4gICAgICBlbmFibGVTY3JvbGw6IHRydWUsXG4gICAgICBlbmFibGVQb2ludGVyRXZlbnRzOiB0cnVlXG4gICAgfSk7XG5cbiAgICBvdmVybGF5LmF0dGFjaFRlbXBsYXRlKHRoaXMubWVudUNvbnRhaW5lclRlbXBsYXRlUmVmKTtcblxuICAgIG92ZXJsYXkuYmFja2Ryb3BDbGlja1xuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZGlzbWlzc09uQmx1cikge1xuICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5DbG9zZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5vdmVybGF5ID0gb3ZlcmxheTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveUFmZml4ZXIoKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHRoaXMuYWZmaXhlcikge1xuICAgICAgdGhpcy5hZmZpeGVyLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuYWZmaXhlciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lPdmVybGF5KCk6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLm92ZXJsYXkpIHtcbiAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UuY2xvc2UodGhpcy5vdmVybGF5KTtcbiAgICAgIHRoaXMub3ZlcmxheSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUFmZml4ZXIoKTogdm9pZCB7XG4gICAgY29uc3QgYWZmaXhlciA9IHRoaXMuYWZmaXhTZXJ2aWNlLmNyZWF0ZUFmZml4ZXIodGhpcy5tZW51Q29udGFpbmVyRWxlbWVudFJlZik7XG5cbiAgICBhZmZpeGVyLnBsYWNlbWVudENoYW5nZVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHtcbiAgICAgICAgdGhpcy5pc1Zpc2libGUgPSAoY2hhbmdlLnBsYWNlbWVudCAhPT0gbnVsbCk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuYWZmaXhlciA9IGFmZml4ZXI7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUluY29taW5nTWVzc2FnZXMobWVzc2FnZTogU2t5RHJvcGRvd25NZXNzYWdlKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6c3dpdGNoLWRlZmF1bHQgKi9cbiAgICAgIHN3aXRjaCAobWVzc2FnZS50eXBlKSB7XG4gICAgICAgIGNhc2UgU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5PcGVuOlxuICAgICAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uRHJvcGRvd25NZW51KCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlOlxuICAgICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5kZXN0cm95T3ZlcmxheSgpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5SZXBvc2l0aW9uOlxuICAgICAgICAgIC8vIE9ubHkgcmVwb3NpdGlvbiB0aGUgZHJvcGRvd24gaWYgaXQgaXMgYWxyZWFkeSBvcGVuLlxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKHRoaXMuaXNPcGVuICYmIHRoaXMuYWZmaXhlcikge1xuICAgICAgICAgICAgdGhpcy5hZmZpeGVyLnJlYWZmaXgoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkZvY3VzVHJpZ2dlckJ1dHRvbjpcbiAgICAgICAgICB0aGlzLnRyaWdnZXJCdXR0b24ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2VuZE1lc3NhZ2UodHlwZTogU2t5RHJvcGRvd25NZXNzYWdlVHlwZSk6IHZvaWQge1xuICAgIHRoaXMubWVzc2FnZVN0cmVhbS5uZXh0KHsgdHlwZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcG9zaXRpb25Ecm9wZG93bk1lbnUoKTogdm9pZCB7XG4gICAgdGhpcy5pc1Zpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLmNyZWF0ZU92ZXJsYXkoKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmFmZml4ZXIuYWZmaXhUbyh0aGlzLnRyaWdnZXJCdXR0b24ubmF0aXZlRWxlbWVudCwge1xuICAgICAgICBhdXRvRml0Q29udGV4dDogU2t5QWZmaXhBdXRvRml0Q29udGV4dC5WaWV3cG9ydCxcbiAgICAgICAgZW5hYmxlQXV0b0ZpdDogdHJ1ZSxcbiAgICAgICAgaG9yaXpvbnRhbEFsaWdubWVudDogcGFyc2VBZmZpeEhvcml6b250YWxBbGlnbm1lbnQodGhpcy5ob3Jpem9udGFsQWxpZ25tZW50KSxcbiAgICAgICAgaXNTdGlja3k6IHRydWUsXG4gICAgICAgIHBsYWNlbWVudDogJ2JlbG93J1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxufVxuIiwiPGRpdlxuICBjbGFzcz1cInNreS1kcm9wZG93blwiXG4+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cInNreS1idG4gc2t5LWRyb3Bkb3duLWJ1dHRvblwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc09wZW5cIlxuICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaXNPcGVuID8gbWVudUlkIDogbnVsbFwiXG4gICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJtZW51QXJpYVJvbGVcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGFiZWwgfHwgKCdza3l1eF9kcm9wZG93bl9jb250ZXh0X21lbnVfZGVmYXVsdF9sYWJlbCcgfCBza3lMaWJSZXNvdXJjZXMpXCJcbiAgICBbYXR0ci50aXRsZV09XCJ0aXRsZVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbbmdDbGFzc109XCJbXG4gICAgICAnc2t5LWRyb3Bkb3duLWJ1dHRvbi10eXBlLScgKyBidXR0b25UeXBlLFxuICAgICAgJ3NreS1idG4tJyArIGJ1dHRvblN0eWxlXG4gICAgXVwiXG4gICAgI3RyaWdnZXJCdXR0b25cbiAgPlxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImJ1dHRvblR5cGVcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBuZ1N3aXRjaENhc2U9XCJjb250ZXh0LW1lbnVcIj5cbiAgICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ2RlZmF1bHQnXCJcbiAgICAgICAgICBpY29uPVwiZWxsaXBzaXMtaFwiXG4gICAgICAgID48L3NreS1pY29uPlxuICAgICAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiXG4gICAgICAgICAgaWNvbj1cImVsbGlwc2lzXCJcbiAgICAgICAgICBpY29uVHlwZT1cInNreXV4XCJcbiAgICAgICAgPjwvc2t5LWljb24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYnV0dG9uVHlwZSA9PT0gJ3NlbGVjdCcgfHwgYnV0dG9uVHlwZSA9PT0gJ3RhYicgfHwgIWJ1dHRvblR5cGVcIlxuICAgICAgICAgIGNsYXNzPVwic2t5LWRyb3Bkb3duLWJ1dHRvbi1jb250YWluZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJza3ktZHJvcGRvd24tYnV0dG9uLWNvbnRlbnQtY29udGFpbmVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGVudFxuICAgICAgICAgICAgICBzZWxlY3Q9XCJza3ktZHJvcGRvd24tYnV0dG9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctY29udGVudD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInNreS1kcm9wZG93bi1idXR0b24taWNvbi1jb250YWluZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidkZWZhdWx0J1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWRyb3Bkb3duLWNhcmV0XCJcbiAgICAgICAgICAgICAgaWNvbj1cImNhcmV0LWRvd25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9za3ktaWNvbj5cbiAgICAgICAgICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidtb2Rlcm4nXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZHJvcGRvd24tY2FyZXRcIlxuICAgICAgICAgICAgICBpY29uPVwiY2hldnJvbi1kb3duXCJcbiAgICAgICAgICAgICAgaWNvblR5cGU9XCJza3l1eFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3NreS1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImJ1dHRvblR5cGUgIT09ICdzZWxlY3QnICYmIGJ1dHRvblR5cGUgIT09ICd0YWInICYmIGJ1dHRvblR5cGVcIj5cbiAgICAgICAgICA8c2t5LWljb25cbiAgICAgICAgICAgIFtpY29uXT1cImJ1dHRvblR5cGVcIlxuICAgICAgICAgICAgc2l6ZT1cImxnXCJcbiAgICAgICAgICA+PC9za3ktaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGVcbiAgI21lbnVDb250YWluZXJUZW1wbGF0ZVJlZlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktZHJvcGRvd24tbWVudS1jb250YWluZXJcIlxuICAgIFtjbGFzcy5oaWRkZW5dPVwiIWlzVmlzaWJsZVwiXG4gICAgI21lbnVDb250YWluZXJFbGVtZW50UmVmXG4gID5cbiAgICA8bmctY29udGVudFxuICAgICAgc2VsZWN0PVwic2t5LWRyb3Bkb3duLW1lbnVcIlxuICAgID48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
356
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcG9wb3ZlcnMvc3JjL21vZHVsZXMvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcG9wb3ZlcnMvc3JjL21vZHVsZXMvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFHTCxRQUFRLEVBQ1IsV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsc0JBQXNCLEdBS3ZCLE1BQU0sYUFBYSxDQUFDO0FBSXJCLE9BQU8sRUFBRSxTQUFTLElBQUksbUJBQW1CLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWpFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU0zQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUl2RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7OztBQVF0RSxNQUFNLE9BQU8sb0JBQW9CO0lBdUwvQixZQUNVLGNBQWlDLEVBQ2pDLFlBQTZCLEVBQzdCLGNBQWlDLEVBQ3JCLFFBQTBCO1FBSHRDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxpQkFBWSxHQUFaLFlBQVksQ0FBaUI7UUFDN0IsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQWtCO1FBeEdoRDs7O1dBR0c7UUFHSSxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFzQixDQUFDO1FBb0RsRCxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUU5QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBb0Ix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QUFLO2dCQWNLLE9BQU87c0JBRGpCLEtBQUs7Z0JBcUJLLHVCQUF1QjtzQkFIakMsU0FBUzt1QkFBQyx5QkFBeUIsRUFBRTt3QkFDcEMsSUFBSSxFQUFFLFVBQVU7cUJBQ2pCO2dCQTBCTyx3QkFBd0I7c0JBSi9CLFNBQVM7dUJBQUMsMEJBQTBCLEVBQUU7d0JBQ3JDLElBQUksRUFBRSxXQUFXO3dCQUNqQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFPTyxhQUFhO3NCQUpwQixTQUFTO3VCQUFDLGVBQWUsRUFBRTt3QkFDMUIsSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLE1BQU0sRUFBRSxJQUFJO3FCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBTa3lBZmZpeEF1dG9GaXRDb250ZXh0LFxuICBTa3lBZmZpeGVyLFxuICBTa3lBZmZpeFNlcnZpY2UsXG4gIFNreU92ZXJsYXlJbnN0YW5jZSxcbiAgU2t5T3ZlcmxheVNlcnZpY2UsXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgU2t5VGhlbWVTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L3RoZW1lJztcblxuaW1wb3J0IHsgZnJvbUV2ZW50IGFzIG9ic2VydmFibGVGcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lEcm9wZG93bkhvcml6b250YWxBbGlnbm1lbnQgfSBmcm9tICcuL3R5cGVzL2Ryb3Bkb3duLWhvcml6b250YWwtYWxpZ25tZW50JztcblxuaW1wb3J0IHsgU2t5RHJvcGRvd25NZXNzYWdlIH0gZnJvbSAnLi90eXBlcy9kcm9wZG93bi1tZXNzYWdlJztcblxuaW1wb3J0IHsgU2t5RHJvcGRvd25NZXNzYWdlVHlwZSB9IGZyb20gJy4vdHlwZXMvZHJvcGRvd24tbWVzc2FnZS10eXBlJztcblxuaW1wb3J0IHsgU2t5RHJvcGRvd25UcmlnZ2VyVHlwZSB9IGZyb20gJy4vdHlwZXMvZHJvcGRvd24tdHJpZ2dlci10eXBlJztcblxuaW1wb3J0IHsgcGFyc2VBZmZpeEhvcml6b250YWxBbGlnbm1lbnQgfSBmcm9tICcuL2Ryb3Bkb3duLWV4dGVuc2lvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktZHJvcGRvd24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSBiYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgZHJvcGRvd24gYnV0dG9uLiBBdmFpbGFibGUgdmFsdWVzIGFyZSBgZGVmYXVsdGAgYW5kXG4gICAqIGBwcmltYXJ5YC4gVGhlc2UgdmFsdWVzIHNldCB0aGUgYmFja2dyb3VuZCBjb2xvciBmcm9tIHRoZVxuICAgKiBbc2Vjb25kYXJ5IGFuZCBwcmltYXJ5IGJ1dHRvbiBjbGFzc2VzXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvYnV0dG9uKSByZXNwZWN0aXZlbHkuXG4gICAqIEBkZWZhdWx0IFwiZGVmYXVsdFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGJ1dHRvblN0eWxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9idXR0b25TdHlsZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBidXR0b25TdHlsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9idXR0b25TdHlsZSB8fCAnZGVmYXVsdCc7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSB0eXBlIG9mIGJ1dHRvbiB0byByZW5kZXIgYXMgdGhlIGRyb3Bkb3duJ3MgdHJpZ2dlciBlbGVtZW50LiBUbyBkaXNwbGF5IGEgYnV0dG9uXG4gICAqIHdpdGggdGV4dCBhbmQgYSBjYXJldCwgc3BlY2lmeSBgc2VsZWN0YCBhbmQgdGhlbiBlbnRlciB0aGUgYnV0dG9uIHRleHQgaW4gYVxuICAgKiBgc2t5LWRyb3Bkb3duLWJ1dHRvbmAgZWxlbWVudC4gVG8gZGlzcGxheSBhIHJvdW5kIGJ1dHRvbiB3aXRoIGFuIGVsbGlwc2lzLCBzcGVjaWZ5XG4gICAqIGBjb250ZXh0LW1lbnVgLiBBbmQgdG8gZGlzcGxheSBhIGJ1dHRvbiB3aXRoIGEgW0ZvbnQgQXdlc29tZSBpY29uXShodHRwOi8vZm9udGF3ZXNvbWUuaW8vaWNvbnMvKSwgc3BlY2lmeSB0aGUgaWNvbidzIGNsYXNzIG5hbWUuXG4gICAqIEZvciBleGFtcGxlLCB0byBkaXNwbGF5IHRoZSBgZmEtZmlsdGVyYCBpY29uLCBzcGVjaWZ5IGBmaWx0ZXJgLlxuICAgKiBAZGVmYXVsdCBcInNlbGVjdFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGJ1dHRvblR5cGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2J1dHRvblR5cGUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYnV0dG9uVHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9idXR0b25UeXBlIHx8ICdzZWxlY3QnO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGRpc2FibGUgdGhlIGRyb3Bkb3duIGJ1dHRvbi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQgfHwgZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gY2xvc2UgdGhlIGRyb3Bkb3duIHdoZW4gdXNlcnMgY2xpY2sgYXdheSBmcm9tIHRoZSBtZW51LlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc21pc3NPbkJsdXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNtaXNzT25CbHVyID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc21pc3NPbkJsdXIoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX2Rpc21pc3NPbkJsdXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2Rpc21pc3NPbkJsdXI7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIGFuIEFSSUEgbGFiZWwgZm9yIHRoZSBkcm9wZG93bi4gVGhpcyBzZXRzIHRoZSBkcm9wZG93bidzIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGVcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIHRoZSBkcm9wZG93biBtZW51IGluIHJlbGF0aW9uIHRvIHRoZSBkcm9wZG93biBidXR0b24uXG4gICAqIEBkZWZhdWx0IFwibGVmdFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGhvcml6b250YWxBbGlnbm1lbnQodmFsdWU6IFNreURyb3Bkb3duSG9yaXpvbnRhbEFsaWdubWVudCkge1xuICAgIHRoaXMuX2hvcml6b250YWxBbGlnbm1lbnQgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaG9yaXpvbnRhbEFsaWdubWVudCgpOiBTa3lEcm9wZG93bkhvcml6b250YWxBbGlnbm1lbnQge1xuICAgIHJldHVybiB0aGlzLl9ob3Jpem9udGFsQWxpZ25tZW50IHx8ICdsZWZ0JztcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm92aWRlcyBhbiBvYnNlcnZhYmxlIHRvIHNlbmQgY29tbWFuZHMgdG8gdGhlIGRyb3Bkb3duLiBUaGUgY29tbWFuZHMgc2hvdWxkIHJlc3BlY3RcbiAgICogdGhlIFtbU2t5RHJvcGRvd25NZXNzYWdlXV0gdHlwZS5cbiAgICovXG5cbiAgQElucHV0KClcbiAgcHVibGljIG1lc3NhZ2VTdHJlYW0gPSBuZXcgU3ViamVjdDxTa3lEcm9wZG93bk1lc3NhZ2U+KCk7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhIHRpdGxlIHRvIGRpc3BsYXkgaW4gYSB0b29sdGlwIHdoZW4gdXNlcnMgaG92ZXIgdGhlIG1vdXNlIG92ZXIgdGhlIGRyb3Bkb3duIGJ1dHRvbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0aXRsZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaG93IHVzZXJzIGludGVyYWN0IHdpdGggdGhlIGRyb3Bkb3duIGJ1dHRvbiB0byBleHBvc2UgdGhlIGRyb3Bkb3duIG1lbnUuXG4gICAqIFdlIHJlY29tbWVuZCB0aGUgZGVmYXVsdCBgY2xpY2tgIHZhbHVlIGJlY2F1c2UgdGhlIGBob3ZlcmAgdmFsdWUgY2FuIHBvc2VcbiAgICogW2FjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkgaXNzdWVzXG4gICAqIGZvciB1c2VycyBvbiB0b3VjaCBkZXZpY2VzIHN1Y2ggYXMgcGhvbmVzIGFuZCB0YWJsZXRzLlxuICAgKiBAZGVwcmVjYXRlZCBXZSByZWNvbW1lbmQgYWdhaW5zdCB1c2luZyB0aGlzIHByb3BlcnR5LiBJZiB5b3UgY2hvb3NlIHRvIHVzZSB0aGUgZGVwcmVjYXRlZFxuICAgKiBgaG92ZXJgIHZhbHVlIGFueXdheSwgd2UgcmVjb21tZW5kIHRoYXQgeW91IG5vdCB1c2UgaXQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgYHRpdGxlYFxuICAgKiBwcm9wZXJ0eS4gKFRoaXMgcHJvcGVydHkgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZS4pXG4gICAqIEBkZWZhdWx0IFwiY2xpY2tcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0cmlnZ2VyKHZhbHVlOiBTa3lEcm9wZG93blRyaWdnZXJUeXBlKSB7XG4gICAgdGhpcy5fdHJpZ2dlciA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCB0cmlnZ2VyKCk6IFNreURyb3Bkb3duVHJpZ2dlclR5cGUge1xuICAgIHJldHVybiB0aGlzLl90cmlnZ2VyIHx8ICdjbGljayc7XG4gIH1cblxuICBwdWJsaWMgc2V0IGlzT3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzT3BlbiA9IHZhbHVlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNPcGVuIHx8IGZhbHNlO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnbWVudUNvbnRhaW5lckVsZW1lbnRSZWYnLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZixcbiAgfSlcbiAgcHVibGljIHNldCBtZW51Q29udGFpbmVyRWxlbWVudFJlZih2YWx1ZTogRWxlbWVudFJlZikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5fbWVudUNvbnRhaW5lckVsZW1lbnRSZWYgPSB2YWx1ZTtcbiAgICAgIHRoaXMuZGVzdHJveUFmZml4ZXIoKTtcbiAgICAgIHRoaXMuY3JlYXRlQWZmaXhlcigpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1lbnVDb250YWluZXJFbGVtZW50UmVmKCk6IEVsZW1lbnRSZWYge1xuICAgIHJldHVybiB0aGlzLl9tZW51Q29udGFpbmVyRWxlbWVudFJlZjtcbiAgfVxuXG4gIHB1YmxpYyBpc01vdXNlRW50ZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgaXNWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIG1lbnVJZDogc3RyaW5nO1xuXG4gIHB1YmxpYyBtZW51QXJpYVJvbGU6IHN0cmluZztcblxuICBAVmlld0NoaWxkKCdtZW51Q29udGFpbmVyVGVtcGxhdGVSZWYnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwcml2YXRlIG1lbnVDb250YWluZXJUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAVmlld0NoaWxkKCd0cmlnZ2VyQnV0dG9uJywge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwcml2YXRlIHRyaWdnZXJCdXR0b246IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBhZmZpeGVyOiBTa3lBZmZpeGVyO1xuXG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSBvdmVybGF5OiBTa3lPdmVybGF5SW5zdGFuY2U7XG5cbiAgcHJpdmF0ZSBfYnV0dG9uU3R5bGU6IHN0cmluZztcblxuICBwcml2YXRlIF9idXR0b25UeXBlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBfZGlzbWlzc09uQmx1cjogYm9vbGVhbjtcblxuICBwcml2YXRlIF9ob3Jpem9udGFsQWxpZ25tZW50OiBTa3lEcm9wZG93bkhvcml6b250YWxBbGlnbm1lbnQ7XG5cbiAgcHJpdmF0ZSBfaXNPcGVuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfbWVudUNvbnRhaW5lckVsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBfdHJpZ2dlcjogU2t5RHJvcGRvd25UcmlnZ2VyVHlwZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGFmZml4U2VydmljZTogU2t5QWZmaXhTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3ZlcmxheVNlcnZpY2U6IFNreU92ZXJsYXlTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgdGhlbWVTdmM/OiBTa3lUaGVtZVNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXJzKCk7XG5cbiAgICB0aGlzLm1lc3NhZ2VTdHJlYW1cbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobWVzc2FnZTogU2t5RHJvcGRvd25NZXNzYWdlKSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhtZXNzYWdlKTtcbiAgICAgIH0pO1xuXG4gICAgLy8gTG9hZCBwcm9wZXIgaWNvbnMgb24gdGhlbWUgY2hhbmdlLlxuICAgIHRoaXMudGhlbWVTdmM/LnNldHRpbmdzQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95QWZmaXhlcigpO1xuICAgIHRoaXMuZGVzdHJveU92ZXJsYXkoKTtcblxuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCBidXR0b25FbGVtZW50ID0gdGhpcy50cmlnZ2VyQnV0dG9uLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGJ1dHRvbkVsZW1lbnQsICdjbGljaycpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5PcGVuKTtcbiAgICAgICAgICAvLyBXYWl0IGZvciBkcm9wZG93biB0byBvcGVuLCB0aGVuIHNldCBmb2N1cyBvbiBmaXJzdCBpdGVtLlxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkZvY3VzRmlyc3RJdGVtKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGJ1dHRvbkVsZW1lbnQsICdrZXlkb3duJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5LnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnN3aXRjaC1kZWZhdWx0ICovXG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgY2FzZSAnZXNjYXBlJzpcbiAgICAgICAgICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5DbG9zZSk7XG4gICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c1RyaWdnZXJCdXR0b24pO1xuICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAndGFiJzpcbiAgICAgICAgICAgIGlmICh0aGlzLmlzT3BlbiAmJiB0aGlzLmRpc21pc3NPbkJsdXIpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnYXJyb3d1cCc6XG4gICAgICAgICAgY2FzZSAndXAnOlxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuT3Blbik7XG4gICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c0xhc3RJdGVtKTtcbiAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ2VudGVyJzpcbiAgICAgICAgICBjYXNlICdhcnJvd2Rvd24nOlxuICAgICAgICAgIGNhc2UgJ2Rvd24nOlxuICAgICAgICAgIGNhc2UgJyAnOiAvLyBTcGFjZWJhci5cbiAgICAgICAgICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuT3Blbik7XG4gICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c0ZpcnN0SXRlbSk7XG4gICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudChidXR0b25FbGVtZW50LCAnbW91c2VlbnRlcicpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzTW91c2VFbnRlciA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXIgPT09ICdob3ZlcicpIHtcbiAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuT3Blbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudChidXR0b25FbGVtZW50LCAnbW91c2VsZWF2ZScpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzTW91c2VFbnRlciA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy50cmlnZ2VyID09PSAnaG92ZXInKSB7XG4gICAgICAgICAgLy8gQWxsb3cgdGhlIGRyb3Bkb3duIG1lbnUgdG8gc2V0IGlzTW91c2VFbnRlciBiZWZvcmUgY2hlY2tpbmcgaWYgdGhlIGNsb3NlIGFjdGlvblxuICAgICAgICAgIC8vIHNob3VsZCBiZSB0YWtlbi5cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc01vdXNlRW50ZXIpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU92ZXJsYXkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3ZlcmxheSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG92ZXJsYXkgPSB0aGlzLm92ZXJsYXlTZXJ2aWNlLmNyZWF0ZSh7XG4gICAgICBlbmFibGVTY3JvbGw6IHRydWUsXG4gICAgICBlbmFibGVQb2ludGVyRXZlbnRzOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgb3ZlcmxheS5hdHRhY2hUZW1wbGF0ZSh0aGlzLm1lbnVDb250YWluZXJUZW1wbGF0ZVJlZik7XG5cbiAgICBvdmVybGF5LmJhY2tkcm9wQ2xpY2sucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmRpc21pc3NPbkJsdXIpIHtcbiAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMub3ZlcmxheSA9IG92ZXJsYXk7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lBZmZpeGVyKCk6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLmFmZml4ZXIpIHtcbiAgICAgIHRoaXMuYWZmaXhlci5kZXN0cm95KCk7XG4gICAgICB0aGlzLmFmZml4ZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95T3ZlcmxheSgpOiB2b2lkIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodGhpcy5vdmVybGF5KSB7XG4gICAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLmNsb3NlKHRoaXMub3ZlcmxheSk7XG4gICAgICB0aGlzLm92ZXJsYXkgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBZmZpeGVyKCk6IHZvaWQge1xuICAgIGNvbnN0IGFmZml4ZXIgPSB0aGlzLmFmZml4U2VydmljZS5jcmVhdGVBZmZpeGVyKFxuICAgICAgdGhpcy5tZW51Q29udGFpbmVyRWxlbWVudFJlZlxuICAgICk7XG5cbiAgICBhZmZpeGVyLnBsYWNlbWVudENoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHtcbiAgICAgICAgdGhpcy5pc1Zpc2libGUgPSBjaGFuZ2UucGxhY2VtZW50ICE9PSBudWxsO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmFmZml4ZXIgPSBhZmZpeGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVJbmNvbWluZ01lc3NhZ2VzKG1lc3NhZ2U6IFNreURyb3Bkb3duTWVzc2FnZSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnN3aXRjaC1kZWZhdWx0ICovXG4gICAgICBzd2l0Y2ggKG1lc3NhZ2UudHlwZSkge1xuICAgICAgICBjYXNlIFNreURyb3Bkb3duTWVzc2FnZVR5cGUuT3BlbjpcbiAgICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wb3NpdGlvbkRyb3Bkb3duTWVudSgpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5DbG9zZTpcbiAgICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZGVzdHJveU92ZXJsYXkoKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFNreURyb3Bkb3duTWVzc2FnZVR5cGUuUmVwb3NpdGlvbjpcbiAgICAgICAgICAvLyBPbmx5IHJlcG9zaXRpb24gdGhlIGRyb3Bkb3duIGlmIGl0IGlzIGFscmVhZHkgb3Blbi5cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmICh0aGlzLmlzT3BlbiAmJiB0aGlzLmFmZml4ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuYWZmaXhlci5yZWFmZml4KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c1RyaWdnZXJCdXR0b246XG4gICAgICAgICAgdGhpcy50cmlnZ2VyQnV0dG9uLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlbmRNZXNzYWdlKHR5cGU6IFNreURyb3Bkb3duTWVzc2FnZVR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLm1lc3NhZ2VTdHJlYW0ubmV4dCh7IHR5cGUgfSk7XG4gIH1cblxuICBwcml2YXRlIHBvc2l0aW9uRHJvcGRvd25NZW51KCk6IHZvaWQge1xuICAgIHRoaXMuaXNWaXNpYmxlID0gZmFsc2U7XG4gICAgdGhpcy5jcmVhdGVPdmVybGF5KCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hZmZpeGVyLmFmZml4VG8odGhpcy50cmlnZ2VyQnV0dG9uLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgYXV0b0ZpdENvbnRleHQ6IFNreUFmZml4QXV0b0ZpdENvbnRleHQuVmlld3BvcnQsXG4gICAgICAgIGVuYWJsZUF1dG9GaXQ6IHRydWUsXG4gICAgICAgIGhvcml6b250YWxBbGlnbm1lbnQ6IHBhcnNlQWZmaXhIb3Jpem9udGFsQWxpZ25tZW50KFxuICAgICAgICAgIHRoaXMuaG9yaXpvbnRhbEFsaWdubWVudFxuICAgICAgICApLFxuICAgICAgICBpc1N0aWNreTogdHJ1ZSxcbiAgICAgICAgcGxhY2VtZW50OiAnYmVsb3cnLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktZHJvcGRvd25cIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwic2t5LWJ0biBza3ktZHJvcGRvd24tYnV0dG9uXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzT3BlblwiXG4gICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJpc09wZW4gPyBtZW51SWQgOiBudWxsXCJcbiAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cIm1lbnVBcmlhUm9sZVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgIGxhYmVsIHx8ICgnc2t5dXhfZHJvcGRvd25fY29udGV4dF9tZW51X2RlZmF1bHRfbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgIFwiXG4gICAgW2F0dHIudGl0bGVdPVwidGl0bGVcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW25nQ2xhc3NdPVwiW1xuICAgICAgJ3NreS1kcm9wZG93bi1idXR0b24tdHlwZS0nICsgYnV0dG9uVHlwZSxcbiAgICAgICdza3ktYnRuLScgKyBidXR0b25TdHlsZVxuICAgIF1cIlxuICAgICN0cmlnZ2VyQnV0dG9uXG4gID5cbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJidXR0b25UeXBlXCI+XG4gICAgICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hDYXNlPVwiY29udGV4dC1tZW51XCI+XG4gICAgICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidkZWZhdWx0J1wiIGljb249XCJlbGxpcHNpcy1oXCI+PC9za3ktaWNvbj5cbiAgICAgICAgPHNreS1pY29uXG4gICAgICAgICAgKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiXG4gICAgICAgICAgaWNvbj1cImVsbGlwc2lzXCJcbiAgICAgICAgICBpY29uVHlwZT1cInNreXV4XCJcbiAgICAgICAgPjwvc2t5LWljb24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJidXR0b25UeXBlID09PSAnc2VsZWN0JyB8fCBidXR0b25UeXBlID09PSAndGFiJyB8fCAhYnV0dG9uVHlwZVwiXG4gICAgICAgICAgY2xhc3M9XCJza3ktZHJvcGRvd24tYnV0dG9uLWNvbnRhaW5lclwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWRyb3Bkb3duLWJ1dHRvbi1jb250ZW50LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LWRyb3Bkb3duLWJ1dHRvblwiPiA8L25nLWNvbnRlbnQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1kcm9wZG93bi1idXR0b24taWNvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxza3ktaWNvblxuICAgICAgICAgICAgICAqc2t5VGhlbWVJZj1cIidkZWZhdWx0J1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWRyb3Bkb3duLWNhcmV0XCJcbiAgICAgICAgICAgICAgaWNvbj1cImNhcmV0LWRvd25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9za3ktaWNvbj5cbiAgICAgICAgICAgIDxza3ktaWNvblxuICAgICAgICAgICAgICAqc2t5VGhlbWVJZj1cIidtb2Rlcm4nXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZHJvcGRvd24tY2FyZXRcIlxuICAgICAgICAgICAgICBpY29uPVwiY2hldnJvbi1kb3duXCJcbiAgICAgICAgICAgICAgaWNvblR5cGU9XCJza3l1eFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3NreS1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiYnV0dG9uVHlwZSAhPT0gJ3NlbGVjdCcgJiYgYnV0dG9uVHlwZSAhPT0gJ3RhYicgJiYgYnV0dG9uVHlwZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2t5LWljb24gW2ljb25dPVwiYnV0dG9uVHlwZVwiIHNpemU9XCJsZ1wiPjwvc2t5LWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9idXR0b24+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNtZW51Q29udGFpbmVyVGVtcGxhdGVSZWY+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS1kcm9wZG93bi1tZW51LWNvbnRhaW5lclwiXG4gICAgW2NsYXNzLmhpZGRlbl09XCIhaXNWaXNpYmxlXCJcbiAgICAjbWVudUNvbnRhaW5lckVsZW1lbnRSZWZcbiAgPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1kcm9wZG93bi1tZW51XCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|