@flywheel-io/vision 2.0.0-beta.10 → 2.0.0-beta.11
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/components/paginator/paginator.component.d.ts +5 -2
- package/components/select-menu/multi-select-menu/multi-select-menu.component.d.ts +2 -1
- package/components/table/row.d.ts +2 -4
- package/components/text-input/text-input.component.d.ts +5 -4
- package/esm2022/components/alert/alert.component.mjs +3 -3
- package/esm2022/components/alert/alert.module.mjs +4 -4
- package/esm2022/components/app-icon/app-icon.component.mjs +3 -3
- package/esm2022/components/app-icon/app-icon.module.mjs +4 -4
- package/esm2022/components/avatar/avatar.component.mjs +3 -3
- package/esm2022/components/avatar/avatar.module.mjs +4 -4
- package/esm2022/components/badge/badge.component.mjs +5 -5
- package/esm2022/components/badge/badge.module.mjs +4 -4
- package/esm2022/components/breadcrumbs/breadcrumbs.component.mjs +4 -4
- package/esm2022/components/breadcrumbs/breadcrumbs.module.mjs +4 -4
- package/esm2022/components/breadcrumbs/crumb.component.mjs +4 -4
- package/esm2022/components/button/button.component.mjs +4 -4
- package/esm2022/components/button/button.directives.mjs +21 -21
- package/esm2022/components/button/button.module.mjs +9 -9
- package/esm2022/components/button-group/button-group.component.mjs +5 -5
- package/esm2022/components/button-group/button-group.module.mjs +4 -4
- package/esm2022/components/button-toggle/button-toggle-item/button-toggle-item.component.mjs +5 -5
- package/esm2022/components/button-toggle/button-toggle.component.mjs +5 -5
- package/esm2022/components/button-toggle/button-toggle.module.mjs +4 -4
- package/esm2022/components/card/card-attribute/card-attribute.component.mjs +3 -3
- package/esm2022/components/card/card-author/card-author.component.mjs +3 -3
- package/esm2022/components/card/card-content/card-content.component.mjs +3 -3
- package/esm2022/components/card/card-footer/card-footer.component.mjs +5 -5
- package/esm2022/components/card/card-header/card-header.component.mjs +3 -3
- package/esm2022/components/card/card.component.mjs +3 -3
- package/esm2022/components/card/card.module.mjs +4 -4
- package/esm2022/components/checkbox/checkbox.component.mjs +6 -6
- package/esm2022/components/checkbox/checkbox.module.mjs +4 -4
- package/esm2022/components/chip/chip.component.mjs +4 -4
- package/esm2022/components/chip/chip.module.mjs +4 -4
- package/esm2022/components/contained-input/contained-input.component.mjs +4 -4
- package/esm2022/components/contained-input/contained-input.module.mjs +4 -4
- package/esm2022/components/date-input/date-input.component.mjs +6 -6
- package/esm2022/components/date-input/date-input.module.mjs +4 -4
- package/esm2022/components/dialog/dialog-actions.component.mjs +5 -5
- package/esm2022/components/dialog/dialog-confirm.component.mjs +6 -6
- package/esm2022/components/dialog/dialog-content.component.mjs +5 -5
- package/esm2022/components/dialog/dialog-header.component.mjs +5 -5
- package/esm2022/components/dialog/dialog-simple.component.mjs +6 -6
- package/esm2022/components/dialog/dialog.component.mjs +6 -6
- package/esm2022/components/dialog/dialog.service.mjs +5 -5
- package/esm2022/components/dialog/dialogs.module.mjs +4 -4
- package/esm2022/components/form-heading/form-heading.component.mjs +5 -5
- package/esm2022/components/form-heading/form-heading.module.mjs +4 -4
- package/esm2022/components/forms/validators.mjs +1 -1
- package/esm2022/components/icon/icon.component.mjs +5 -5
- package/esm2022/components/icon/icon.module.mjs +4 -4
- package/esm2022/components/icon-button/icon-button.component.mjs +3 -3
- package/esm2022/components/icon-button/icon-button.module.mjs +4 -4
- package/esm2022/components/layouts/context/context.component.mjs +4 -4
- package/esm2022/components/layouts/grid/grid.component.mjs +6 -6
- package/esm2022/components/layouts/layout-group.component.mjs +4 -4
- package/esm2022/components/layouts/layouts.module.mjs +4 -4
- package/esm2022/components/layouts/panel/panel.component.mjs +3 -3
- package/esm2022/components/layouts/sidebar/sidebar.component.mjs +3 -3
- package/esm2022/components/layouts/toolbar/toolbar.component.mjs +3 -3
- package/esm2022/components/menu/menu-close-triggers.directive.mjs +4 -4
- package/esm2022/components/menu/menu-container/menu-container.component.mjs +5 -5
- package/esm2022/components/menu/menu-header/menu-header.component.mjs +3 -3
- package/esm2022/components/menu/menu-item/menu-item.component.mjs +5 -5
- package/esm2022/components/menu/menu-item-group/menu-item-group.component.mjs +4 -4
- package/esm2022/components/menu/menu-separator/menu-separator.component.mjs +3 -3
- package/esm2022/components/menu/menu-sub-item/menu-sub-item.component.mjs +4 -4
- package/esm2022/components/menu/menu.component.mjs +4 -4
- package/esm2022/components/menu/menu.module.mjs +4 -4
- package/esm2022/components/navbar/navbar-header/navbar-header.component.mjs +3 -3
- package/esm2022/components/navbar/navbar-item/navbar-item.component.mjs +5 -5
- package/esm2022/components/navbar/navbar-sub-item/navbar-sub-item.component.mjs +5 -5
- package/esm2022/components/navbar/navbar.component.mjs +4 -4
- package/esm2022/components/navbar/navbar.module.mjs +4 -4
- package/esm2022/components/number-input/number-input.component.mjs +6 -6
- package/esm2022/components/number-input/number-input.module.mjs +4 -4
- package/esm2022/components/paginator/paginator-advanced/paginator-advanced.component.mjs +4 -4
- package/esm2022/components/paginator/paginator.component.mjs +18 -18
- package/esm2022/components/paginator/paginator.module.mjs +4 -4
- package/esm2022/components/phone-input/phone-input.component.mjs +5 -5
- package/esm2022/components/phone-input/phone-input.module.mjs +4 -4
- package/esm2022/components/popover/popover-panel/popover-panel.component.mjs +3 -3
- package/esm2022/components/popover/popover.component.mjs +4 -4
- package/esm2022/components/popover/popover.module.mjs +4 -4
- package/esm2022/components/progress/bar/bar.component.mjs +5 -5
- package/esm2022/components/progress/progress.module.mjs +4 -4
- package/esm2022/components/progress/spinner/spinner.component.mjs +5 -5
- package/esm2022/components/radio/radio-group.component.mjs +5 -5
- package/esm2022/components/radio/radio.component.mjs +4 -4
- package/esm2022/components/radio/radio.module.mjs +4 -4
- package/esm2022/components/section-heading/back-button/back-button.component.mjs +5 -5
- package/esm2022/components/section-heading/section-heading.component.mjs +5 -5
- package/esm2022/components/section-heading/section-heading.module.mjs +4 -4
- package/esm2022/components/section-heading/subsection-heading/subsection-heading.component.mjs +5 -5
- package/esm2022/components/select-menu/multi-select-menu/multi-select-menu.component.mjs +9 -8
- package/esm2022/components/select-menu/select-menu.component.mjs +6 -6
- package/esm2022/components/select-menu/select-menu.module.mjs +4 -4
- package/esm2022/components/shared/pipes/pipes.module.mjs +4 -4
- package/esm2022/components/shared/pipes/translate.pipe.mjs +5 -5
- package/esm2022/components/shared/pipes/trusthtml.pipe.mjs +4 -4
- package/esm2022/components/shared/services/menu-manager.service.mjs +4 -4
- package/esm2022/components/shared/translation.service.mjs +3 -3
- package/esm2022/components/snackbar/snackbar/snackbar.component.mjs +5 -5
- package/esm2022/components/snackbar/snackbar-container/snackbar-container.component.mjs +6 -6
- package/esm2022/components/snackbar/snackbar.module.mjs +4 -4
- package/esm2022/components/snackbar/snackbar.service.mjs +4 -4
- package/esm2022/components/stepper/step.component.mjs +7 -7
- package/esm2022/components/stepper/stepper.component.mjs +5 -5
- package/esm2022/components/stepper/stepper.module.mjs +4 -4
- package/esm2022/components/switch/switch.component.mjs +4 -4
- package/esm2022/components/switch/switch.module.mjs +4 -4
- package/esm2022/components/table/cell.mjs +21 -21
- package/esm2022/components/table/row.mjs +22 -28
- package/esm2022/components/table/table-dense.component.mjs +3 -3
- package/esm2022/components/table/table.component.mjs +3 -3
- package/esm2022/components/table/table.module.mjs +4 -4
- package/esm2022/components/tabs/tab/tab.component.mjs +4 -4
- package/esm2022/components/tabs/tab-panel/tab-panel.component.mjs +3 -3
- package/esm2022/components/tabs/tabs.component.mjs +4 -4
- package/esm2022/components/tabs/tabs.module.mjs +4 -4
- package/esm2022/components/text-input/text-input.component.mjs +18 -12
- package/esm2022/components/text-input/text-input.module.mjs +4 -4
- package/esm2022/components/textarea-input/textarea-input.component.mjs +3 -3
- package/esm2022/components/textarea-input/textarea-input.module.mjs +4 -4
- package/esm2022/components/tooltip/tooltip-panel/tooltip-panel.component.mjs +3 -3
- package/esm2022/components/tooltip/tooltip.component.mjs +4 -4
- package/esm2022/components/tooltip/tooltip.module.mjs +4 -4
- package/esm2022/components/wrapped-input/wrapped-input.component.mjs +3 -3
- package/esm2022/components/wrapped-input/wrapped-input.module.mjs +4 -4
- package/esm2022/directives/menu-register.directive.mjs +6 -6
- package/fesm2022/flywheel-io-vision.mjs +559 -558
- package/fesm2022/flywheel-io-vision.mjs.map +1 -1
- package/flywheel-io-vision-2.0.0-beta.11.tgz +0 -0
- package/package.json +5 -2
- package/flywheel-io-vision-2.0.0-beta.10.tgz +0 -0
|
@@ -8,13 +8,13 @@ export class FwSectionHeadingComponent {
|
|
|
8
8
|
this.class = 'fw-section-heading';
|
|
9
9
|
this.backButton = false;
|
|
10
10
|
}
|
|
11
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
12
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
11
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwSectionHeadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FwSectionHeadingComponent, selector: "fw-section-heading", inputs: { title: "title", description: "description", backButton: "backButton", backFunction: "backFunction", icon: "icon" }, host: { properties: { "attr.class": "this.class" } }, ngImport: i0, template: "<div class=\"heading-area\">\n <fw-back-button *ngIf=\"backButton\" [backFunction]=\"backFunction\"></fw-back-button>\n <fw-icon *ngIf=\"icon\" class=\"heading-icon\">{{ icon }}</fw-icon>\n <ng-content select=\"fw-icon\"></ng-content>\n <div>\n <h2 class=\"vision-h2 section-heading\">{{ title }}\n <ng-content select=\"fw-chip\"></ng-content>\n </h2>\n <p *ngIf=\"description\" class=\"vision-p2\">{{ description }}</p>\n <ng-content select=\"p\"></ng-content>\n </div>\n</div>\n<div class=\"right-content\">\n <ng-content></ng-content>\n</div>\n", styles: [".fw-section-heading{width:100%;display:flex;justify-content:space-between;align-items:center}.fw-section-heading .heading-area{display:flex;align-items:center;gap:20px}.fw-section-heading .heading-area h2{color:var(--typography-base);margin:0;display:flex;align-items:center;gap:8px}.fw-section-heading .heading-area p{color:var(--typography-muted);margin:0;display:flex;align-items:center;gap:8px}.fw-section-heading .heading-area p a{color:var(--typography-muted)}.fw-section-heading .heading-area fw-icon.heading-icon{box-sizing:border-box;color:var(--primary-base);width:44px;height:44px;font-size:32px;text-align:center;justify-content:center;padding:6px}.fw-section-heading .right-content{display:flex;gap:10px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }, { kind: "component", type: i3.FwBackButtonComponent, selector: "fw-back-button", inputs: ["backFunction"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
13
13
|
}
|
|
14
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwSectionHeadingComponent, decorators: [{
|
|
15
15
|
type: Component,
|
|
16
16
|
args: [{ selector: 'fw-section-heading', encapsulation: ViewEncapsulation.None, template: "<div class=\"heading-area\">\n <fw-back-button *ngIf=\"backButton\" [backFunction]=\"backFunction\"></fw-back-button>\n <fw-icon *ngIf=\"icon\" class=\"heading-icon\">{{ icon }}</fw-icon>\n <ng-content select=\"fw-icon\"></ng-content>\n <div>\n <h2 class=\"vision-h2 section-heading\">{{ title }}\n <ng-content select=\"fw-chip\"></ng-content>\n </h2>\n <p *ngIf=\"description\" class=\"vision-p2\">{{ description }}</p>\n <ng-content select=\"p\"></ng-content>\n </div>\n</div>\n<div class=\"right-content\">\n <ng-content></ng-content>\n</div>\n", styles: [".fw-section-heading{width:100%;display:flex;justify-content:space-between;align-items:center}.fw-section-heading .heading-area{display:flex;align-items:center;gap:20px}.fw-section-heading .heading-area h2{color:var(--typography-base);margin:0;display:flex;align-items:center;gap:8px}.fw-section-heading .heading-area p{color:var(--typography-muted);margin:0;display:flex;align-items:center;gap:8px}.fw-section-heading .heading-area p a{color:var(--typography-muted)}.fw-section-heading .heading-area fw-icon.heading-icon{box-sizing:border-box;color:var(--primary-base);width:44px;height:44px;font-size:32px;text-align:center;justify-content:center;padding:6px}.fw-section-heading .right-content{display:flex;gap:10px}\n"] }]
|
|
17
|
-
}], ctorParameters:
|
|
17
|
+
}], ctorParameters: () => [], propDecorators: { class: [{
|
|
18
18
|
type: HostBinding,
|
|
19
19
|
args: ['attr.class']
|
|
20
20
|
}], title: [{
|
|
@@ -28,4 +28,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
28
28
|
}], icon: [{
|
|
29
29
|
type: Input
|
|
30
30
|
}] } });
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi1oZWFkaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NlY3Rpb24taGVhZGluZy9zZWN0aW9uLWhlYWRpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2VjdGlvbi1oZWFkaW5nL3NlY3Rpb24taGVhZGluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBVWpGLE1BQU0sT0FBTyx5QkFBeUI7SUFRcEM7UUFQMkIsVUFBSyxHQUFHLG9CQUFvQixDQUFDO1FBRy9DLGVBQVUsR0FBYSxLQUFLLENBQUM7SUFLdEMsQ0FBQzsrR0FUVSx5QkFBeUI7bUdBQXpCLHlCQUF5Qiw4T0NWdEMsNGpCQWVBOzs0RkRMYSx5QkFBeUI7a0JBTnJDLFNBQVM7K0JBQ0Usb0JBQW9CLGlCQUdmLGlCQUFpQixDQUFDLElBQUk7d0RBR1YsS0FBSztzQkFBL0IsV0FBVzt1QkFBQyxZQUFZO2dCQUNoQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEljb25UeXBlIH0gZnJvbSAnLi4vaWNvbi9pY29uLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnctc2VjdGlvbi1oZWFkaW5nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlY3Rpb24taGVhZGluZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlY3Rpb24taGVhZGluZy5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBGd1NlY3Rpb25IZWFkaW5nQ29tcG9uZW50IHtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmNsYXNzJykgY2xhc3MgPSAnZnctc2VjdGlvbi1oZWFkaW5nJztcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJhY2tCdXR0b24/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGJhY2tGdW5jdGlvbj86ICgpID0+IHt9O1xuICBASW5wdXQoKSBpY29uPzogSWNvblR5cGU7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJoZWFkaW5nLWFyZWFcIj5cbiAgPGZ3LWJhY2stYnV0dG9uICpuZ0lmPVwiYmFja0J1dHRvblwiIFtiYWNrRnVuY3Rpb25dPVwiYmFja0Z1bmN0aW9uXCI+PC9mdy1iYWNrLWJ1dHRvbj5cbiAgPGZ3LWljb24gKm5nSWY9XCJpY29uXCIgY2xhc3M9XCJoZWFkaW5nLWljb25cIj57eyBpY29uIH19PC9mdy1pY29uPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJmdy1pY29uXCI+PC9uZy1jb250ZW50PlxuICA8ZGl2PlxuICAgIDxoMiBjbGFzcz1cInZpc2lvbi1oMiBzZWN0aW9uLWhlYWRpbmdcIj57eyB0aXRsZSB9fVxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZnctY2hpcFwiPjwvbmctY29udGVudD5cbiAgICA8L2gyPlxuICAgIDxwICpuZ0lmPVwiZGVzY3JpcHRpb25cIiBjbGFzcz1cInZpc2lvbi1wMlwiPnt7IGRlc2NyaXB0aW9uIH19PC9wPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInBcIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwicmlnaHQtY29udGVudFwiPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -7,19 +7,19 @@ import { FwSectionHeadingComponent } from './section-heading.component';
|
|
|
7
7
|
import { FwSubsectionHeadingComponent } from './subsection-heading/subsection-heading.component';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
export class FwSectionHeadingModule {
|
|
10
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
11
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
10
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwSectionHeadingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
11
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: FwSectionHeadingModule, declarations: [FwBackButtonComponent,
|
|
12
12
|
FwSectionHeadingComponent,
|
|
13
13
|
FwSubsectionHeadingComponent], imports: [CommonModule,
|
|
14
14
|
FwButtonModule,
|
|
15
15
|
FwIconModule], exports: [FwBackButtonComponent,
|
|
16
16
|
FwSectionHeadingComponent,
|
|
17
17
|
FwSubsectionHeadingComponent] }); }
|
|
18
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
18
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwSectionHeadingModule, imports: [CommonModule,
|
|
19
19
|
FwButtonModule,
|
|
20
20
|
FwIconModule] }); }
|
|
21
21
|
}
|
|
22
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwSectionHeadingModule, decorators: [{
|
|
23
23
|
type: NgModule,
|
|
24
24
|
args: [{
|
|
25
25
|
imports: [
|
package/esm2022/components/section-heading/subsection-heading/subsection-heading.component.mjs
CHANGED
|
@@ -5,15 +5,15 @@ import * as i2 from "../../icon/icon.component";
|
|
|
5
5
|
export class FwSubsectionHeadingComponent {
|
|
6
6
|
constructor() {
|
|
7
7
|
}
|
|
8
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
9
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwSubsectionHeadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FwSubsectionHeadingComponent, selector: "fw-subsection-heading", inputs: { title: "title", icon: "icon" }, ngImport: i0, template: "<div class=\"heading-area\">\n <fw-icon *ngIf=\"icon\">{{ icon }}</fw-icon>\n <h3 class=\"vision-h3 subsection-heading\">{{ title }}</h3>\n</div>\n<div class=\"right-content\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{width:100%;display:flex;justify-content:space-between;align-items:center}:host .heading-area{display:flex;align-items:center;gap:8px}:host .heading-area h3{color:var(--typography-base);margin:0}:host .heading-area fw-icon{color:var(--typography-light);width:24px;height:24px;font-size:24px;text-align:center}:host .right-content{display:flex;gap:10px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }] }); }
|
|
10
10
|
}
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwSubsectionHeadingComponent, decorators: [{
|
|
12
12
|
type: Component,
|
|
13
13
|
args: [{ selector: 'fw-subsection-heading', template: "<div class=\"heading-area\">\n <fw-icon *ngIf=\"icon\">{{ icon }}</fw-icon>\n <h3 class=\"vision-h3 subsection-heading\">{{ title }}</h3>\n</div>\n<div class=\"right-content\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{width:100%;display:flex;justify-content:space-between;align-items:center}:host .heading-area{display:flex;align-items:center;gap:8px}:host .heading-area h3{color:var(--typography-base);margin:0}:host .heading-area fw-icon{color:var(--typography-light);width:24px;height:24px;font-size:24px;text-align:center}:host .right-content{display:flex;gap:10px}\n"] }]
|
|
14
|
-
}], ctorParameters:
|
|
14
|
+
}], ctorParameters: () => [], propDecorators: { title: [{
|
|
15
15
|
type: Input
|
|
16
16
|
}], icon: [{
|
|
17
17
|
type: Input
|
|
18
18
|
}] } });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2VjdGlvbi1oZWFkaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NlY3Rpb24taGVhZGluZy9zdWJzZWN0aW9uLWhlYWRpbmcvc3Vic2VjdGlvbi1oZWFkaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NlY3Rpb24taGVhZGluZy9zdWJzZWN0aW9uLWhlYWRpbmcvc3Vic2VjdGlvbi1oZWFkaW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBU2pELE1BQU0sT0FBTyw0QkFBNEI7SUFJdkM7SUFDQSxDQUFDOytHQUxVLDRCQUE0QjttR0FBNUIsNEJBQTRCLHVHQ1R6QywyTkFPQTs7NEZERWEsNEJBQTRCO2tCQUx4QyxTQUFTOytCQUNFLHVCQUF1Qjt3REFLeEIsS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgSWNvblR5cGUgfSBmcm9tICcuLi8uLi9pY29uL2ljb24udHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmdy1zdWJzZWN0aW9uLWhlYWRpbmcnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3Vic2VjdGlvbi1oZWFkaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3Vic2VjdGlvbi1oZWFkaW5nLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZ3U3Vic2VjdGlvbkhlYWRpbmdDb21wb25lbnQge1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBpY29uPzogSWNvblR5cGU7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImhlYWRpbmctYXJlYVwiPlxuICA8ZnctaWNvbiAqbmdJZj1cImljb25cIj57eyBpY29uIH19PC9mdy1pY29uPlxuICA8aDMgY2xhc3M9XCJ2aXNpb24taDMgc3Vic2VjdGlvbi1oZWFkaW5nXCI+e3sgdGl0bGUgfX08L2gzPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwicmlnaHQtY29udGVudFwiPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import { CdkMenuTrigger } from '@angular/cdk/menu';
|
|
3
|
-
import { Component, ContentChildren, EventEmitter, forwardRef, HostListener, Input, Output, ViewChild, ViewChildren, } from '@angular/core';
|
|
3
|
+
import { Component, ContentChildren, EventEmitter, forwardRef, HostListener, input, Input, Output, ViewChild, ViewChildren, } from '@angular/core';
|
|
4
4
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
5
5
|
import { FwMenuComponent } from '../../menu/menu.component';
|
|
6
6
|
import { FwMenuItemComponent } from '../../menu/menu-item/menu-item.component';
|
|
@@ -46,6 +46,7 @@ export class FwMultiSelectMenuComponent {
|
|
|
46
46
|
this.size = 'medium';
|
|
47
47
|
this.placeholder = 'Select something...';
|
|
48
48
|
this.emptyText = 'No matches found...';
|
|
49
|
+
this.showClear = input(false);
|
|
49
50
|
this.selectedValues = [];
|
|
50
51
|
this.selectedOptions = [];
|
|
51
52
|
this.filteredOptions = [];
|
|
@@ -293,16 +294,16 @@ export class FwMultiSelectMenuComponent {
|
|
|
293
294
|
});
|
|
294
295
|
this.moveFocused('zero');
|
|
295
296
|
}
|
|
296
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
297
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
297
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwMultiSelectMenuComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
298
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: FwMultiSelectMenuComponent, selector: "fw-multi-select", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: false, isRequired: false, transformFunction: null }, valueProperty: { classPropertyName: "valueProperty", publicName: "valueProperty", isSignal: false, isRequired: false, transformFunction: null }, titleProperty: { classPropertyName: "titleProperty", publicName: "titleProperty", isSignal: false, isRequired: false, transformFunction: null }, iconProperty: { classPropertyName: "iconProperty", publicName: "iconProperty", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, useCheckbox: { classPropertyName: "useCheckbox", publicName: "useCheckbox", isSignal: false, isRequired: false, transformFunction: null }, closeOnSelect: { classPropertyName: "closeOnSelect", publicName: "closeOnSelect", isSignal: false, isRequired: false, transformFunction: null }, filterItemsOnSelect: { classPropertyName: "filterItemsOnSelect", publicName: "filterItemsOnSelect", isSignal: false, isRequired: false, transformFunction: null }, maxSelectedShown: { classPropertyName: "maxSelectedShown", publicName: "maxSelectedShown", isSignal: false, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: false, isRequired: false, transformFunction: null }, minHeight: { classPropertyName: "minHeight", publicName: "minHeight", isSignal: false, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: false, isRequired: false, transformFunction: null }, optionsWidth: { classPropertyName: "optionsWidth", publicName: "optionsWidth", isSignal: false, isRequired: false, transformFunction: null }, minOptionsHeight: { classPropertyName: "minOptionsHeight", publicName: "minOptionsHeight", isSignal: false, isRequired: false, transformFunction: null }, maxOptionsHeight: { classPropertyName: "maxOptionsHeight", publicName: "maxOptionsHeight", isSignal: false, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: false, isRequired: false, transformFunction: null }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { change: "change" }, host: { listeners: { "document:click": "outsideClick()" } }, providers: [
|
|
298
299
|
{
|
|
299
300
|
provide: NG_VALUE_ACCESSOR,
|
|
300
301
|
useExisting: forwardRef(() => FwMultiSelectMenuComponent),
|
|
301
302
|
multi: true,
|
|
302
303
|
},
|
|
303
|
-
], queries: [{ propertyName: "customMenuItems", predicate: FwMenuItemComponent, descendants: true }], viewQueries: [{ propertyName: "trigger", first: true, predicate: CdkMenuTrigger, descendants: true }, { propertyName: "menu", first: true, predicate: FwMenuComponent, descendants: true }, { propertyName: "textInput", first: true, predicate: ["textInput"], descendants: true }, { propertyName: "textInitialInput", first: true, predicate: ["textInitialInput"], descendants: true }, { propertyName: "renderedMenuItems", predicate: FwMenuItemComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div [ngStyle]=\"{width: width}\" #wrapper>\n <div\n fwMenuRegister\n [ngClass]=\"['chip-grid', size]\"\n [ngStyle]=\"{minHeight: minHeight, maxHeight: maxHeight}\"\n [cdkMenuTriggerFor]=\"selectMenu\">\n <div class=\"inner-chip-grid\" *ngIf=\"value && value.length>0\">\n <fw-chip\n *ngFor=\"let chip of selectedOptions | slice:0:maxSelectedShown\"\n [title]=\"chip[titleProperty]\"\n [value]=\"chip[valueProperty]\"\n [icon]=\"chip[iconProperty]\"\n color=\"primary\"\n [showClose]=\"true\"\n (close)=\"handleClose(chip)\"\n [selectable]=\"false\">\n </fw-chip>\n <span *ngIf=\"value.length>maxSelectedShown\" class=\"max-exceeded\"
|
|
304
|
+
], queries: [{ propertyName: "customMenuItems", predicate: FwMenuItemComponent, descendants: true }], viewQueries: [{ propertyName: "trigger", first: true, predicate: CdkMenuTrigger, descendants: true }, { propertyName: "menu", first: true, predicate: FwMenuComponent, descendants: true }, { propertyName: "textInput", first: true, predicate: ["textInput"], descendants: true }, { propertyName: "textInitialInput", first: true, predicate: ["textInitialInput"], descendants: true }, { propertyName: "renderedMenuItems", predicate: FwMenuItemComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div [ngStyle]=\"{width: width}\" #wrapper>\n <div\n fwMenuRegister\n [ngClass]=\"['chip-grid', size]\"\n [ngStyle]=\"{minHeight: minHeight, maxHeight: maxHeight}\"\n [cdkMenuTriggerFor]=\"selectMenu\">\n <div class=\"inner-chip-grid\" *ngIf=\"value && value.length>0\">\n <fw-chip\n *ngFor=\"let chip of selectedOptions | slice:0:maxSelectedShown\"\n [title]=\"chip[titleProperty]\"\n [value]=\"chip[valueProperty]\"\n [icon]=\"chip[iconProperty]\"\n color=\"primary\"\n [showClose]=\"true\"\n (close)=\"handleClose(chip)\"\n [selectable]=\"false\">\n </fw-chip>\n <span *ngIf=\"maxSelectedShown === 0 && value.length > 0\" class=\"max-exceeded\">\n {{ value.length }} selected\n </span>\n <span *ngIf=\"value.length > maxSelectedShown && maxSelectedShown > 0\" class=\"max-exceeded\">\n +{{ value.length - maxSelectedShown }} more\n </span>\n <input\n type=\"text\" #textInput\n class=\"placeholder\"\n (keydown)=\"handleKeyDown($event)\" (input)=\"handleFilterChange($event)\">\n </div>\n <input\n type=\"text\" #textInitialInput\n *ngIf=\"!value || value.length===0\"\n class=\"placeholder\" [placeholder]=\"placeholder\"\n (focus)=\"handleTouched()\"\n (keydown)=\"handleKeyDown($event)\" (input)=\"handleFilterChange($event)\">\n <fw-icon *ngIf=\"showClear() && value.length > 0\" (click)=\"updateValue([])\">close</fw-icon>\n <fw-icon *ngIf=\"!showClear() || value.length === 0\">chevron-down</fw-icon>\n </div>\n <ng-template #selectMenu>\n <fw-menu-container\n [width]=\"optionsWidth || wrapper.offsetWidth + 'px'\" [maxHeight]=\"maxOptionsHeight\" [minHeight]=\"minOptionsHeight\"\n *ngIf=\"emptyText.length > 0 || (filteredOptions && filteredOptions.length > 0)\">\n <fw-menu\n [multiSelect]=\"true\"\n [disabled]=\"disabled || (filteredOptions && filteredOptions.length===0)\"\n [value]=\"selectedValues\"\n (change)=\"handleChange($event)\">\n <ng-container *ngIf=\"customMenuItems.length === 0\">\n <fw-menu-item\n *ngFor=\"let item of filteredOptions; index as $index\"\n [title]=\"item[titleProperty]\"\n [value]=\"item[valueProperty]\"\n [icon]=\"item[iconProperty]\"\n [multiSelect]=\"true\"\n [showCheckbox]=\"useCheckbox\"\n [focused]=\"focused===$index\"\n (mouseover)=\"focused=$index\"\n >\n </fw-menu-item>\n </ng-container>\n <fw-menu-item\n *ngIf=\"filteredOptions.length === 0 && emptyText\" [showCheckbox]=\"false\"\n [disabled]=\"true\" [title]=\"emptyText\">\n </fw-menu-item>\n <ng-content select=\"[fw-menu-item, fw-menu-separator, fw-menu-item-group, fw-menu-header]\"></ng-content>\n </fw-menu>\n </fw-menu-container>\n </ng-template>\n</div>\n", styles: [":host .chip-grid{min-height:36px;box-sizing:border-box;color:var(--typography-light);background:var(--page-light);display:flex;padding:4px;align-items:center;border-radius:6px;border:1px solid var(--separations-input);cursor:pointer;font-family:Inter,sans-serif}:host .chip-grid.small{min-height:30px;padding:2px}:host .chip-grid.large{min-height:40px;padding:6px}:host .chip-grid:focus-within{border-color:var(--primary-base)}:host .chip-grid .inner-chip-grid{display:flex;flex-wrap:wrap;gap:4px;overflow:hidden auto;align-items:center;flex:1}:host .chip-grid .inner-chip-grid input{display:inline-flex;width:10px;flex-grow:1}:host .chip-grid .placeholder{padding:0 2px 0 4px;font-size:14px;color:var(--typography-base);background:var(--page-light);border:0;outline:0;display:inline-flex;width:10px;flex-grow:1}:host .chip-grid .placeholder:focus{outline:none!important}:host .chip-grid .placeholder::placeholder{color:var(--typography-light)}:host .chip-grid fw-icon{font-size:20px}:host .chip-grid fw-icon:hover{color:var(--primary-base)}:host .chip-grid .max-exceeded{font-size:12px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.CdkMenuTrigger, selector: "[cdkMenuTriggerFor]", inputs: ["cdkMenuTriggerFor", "cdkMenuPosition", "cdkMenuTriggerData"], outputs: ["cdkMenuOpened", "cdkMenuClosed"], exportAs: ["cdkMenuTriggerFor"] }, { kind: "component", type: i3.FwChipComponent, selector: "fw-chip", inputs: ["value", "variant", "color", "icon", "title", "description", "showClose", "disabled", "selected", "selectable"], outputs: ["close", "select"] }, { kind: "component", type: i4.FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }, { kind: "component", type: i5.FwMenuComponent, selector: "fw-menu", inputs: ["disabled", "size", "multiSelect", "useCheckbox", "value", "variant", "collapsed", "collapsedWidth", "openWidth"], outputs: ["change", "filteredItemsChange"] }, { kind: "component", type: i6.FwMenuContainerComponent, selector: "fw-menu-container", inputs: ["width", "maxHeight", "minHeight", "border", "shadow", "showFilter", "filterText", "offset", "collapsed"], outputs: ["filterChanged"] }, { kind: "component", type: i7.FwMenuItemComponent, selector: "fw-menu-item", inputs: ["value", "size", "title", "description", "icon", "iconColor", "disabled", "showCheckbox", "checkboxColor", "multiSelect", "hidden", "collapsed", "href", "target", "subItemsOpen", "focused", "selected", "variant"], outputs: ["click"] }, { kind: "directive", type: i8.MenuRegisterDirective, selector: "[fwMenuRegister]" }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }] }); }
|
|
304
305
|
}
|
|
305
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
306
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwMultiSelectMenuComponent, decorators: [{
|
|
306
307
|
type: Component,
|
|
307
308
|
args: [{ selector: 'fw-multi-select', providers: [
|
|
308
309
|
{
|
|
@@ -310,8 +311,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
310
311
|
useExisting: forwardRef(() => FwMultiSelectMenuComponent),
|
|
311
312
|
multi: true,
|
|
312
313
|
},
|
|
313
|
-
], template: "<div [ngStyle]=\"{width: width}\" #wrapper>\n <div\n fwMenuRegister\n [ngClass]=\"['chip-grid', size]\"\n [ngStyle]=\"{minHeight: minHeight, maxHeight: maxHeight}\"\n [cdkMenuTriggerFor]=\"selectMenu\">\n <div class=\"inner-chip-grid\" *ngIf=\"value && value.length>0\">\n <fw-chip\n *ngFor=\"let chip of selectedOptions | slice:0:maxSelectedShown\"\n [title]=\"chip[titleProperty]\"\n [value]=\"chip[valueProperty]\"\n [icon]=\"chip[iconProperty]\"\n color=\"primary\"\n [showClose]=\"true\"\n (close)=\"handleClose(chip)\"\n [selectable]=\"false\">\n </fw-chip>\n <span *ngIf=\"value.length>maxSelectedShown\" class=\"max-exceeded\"
|
|
314
|
-
}], ctorParameters:
|
|
314
|
+
], template: "<div [ngStyle]=\"{width: width}\" #wrapper>\n <div\n fwMenuRegister\n [ngClass]=\"['chip-grid', size]\"\n [ngStyle]=\"{minHeight: minHeight, maxHeight: maxHeight}\"\n [cdkMenuTriggerFor]=\"selectMenu\">\n <div class=\"inner-chip-grid\" *ngIf=\"value && value.length>0\">\n <fw-chip\n *ngFor=\"let chip of selectedOptions | slice:0:maxSelectedShown\"\n [title]=\"chip[titleProperty]\"\n [value]=\"chip[valueProperty]\"\n [icon]=\"chip[iconProperty]\"\n color=\"primary\"\n [showClose]=\"true\"\n (close)=\"handleClose(chip)\"\n [selectable]=\"false\">\n </fw-chip>\n <span *ngIf=\"maxSelectedShown === 0 && value.length > 0\" class=\"max-exceeded\">\n {{ value.length }} selected\n </span>\n <span *ngIf=\"value.length > maxSelectedShown && maxSelectedShown > 0\" class=\"max-exceeded\">\n +{{ value.length - maxSelectedShown }} more\n </span>\n <input\n type=\"text\" #textInput\n class=\"placeholder\"\n (keydown)=\"handleKeyDown($event)\" (input)=\"handleFilterChange($event)\">\n </div>\n <input\n type=\"text\" #textInitialInput\n *ngIf=\"!value || value.length===0\"\n class=\"placeholder\" [placeholder]=\"placeholder\"\n (focus)=\"handleTouched()\"\n (keydown)=\"handleKeyDown($event)\" (input)=\"handleFilterChange($event)\">\n <fw-icon *ngIf=\"showClear() && value.length > 0\" (click)=\"updateValue([])\">close</fw-icon>\n <fw-icon *ngIf=\"!showClear() || value.length === 0\">chevron-down</fw-icon>\n </div>\n <ng-template #selectMenu>\n <fw-menu-container\n [width]=\"optionsWidth || wrapper.offsetWidth + 'px'\" [maxHeight]=\"maxOptionsHeight\" [minHeight]=\"minOptionsHeight\"\n *ngIf=\"emptyText.length > 0 || (filteredOptions && filteredOptions.length > 0)\">\n <fw-menu\n [multiSelect]=\"true\"\n [disabled]=\"disabled || (filteredOptions && filteredOptions.length===0)\"\n [value]=\"selectedValues\"\n (change)=\"handleChange($event)\">\n <ng-container *ngIf=\"customMenuItems.length === 0\">\n <fw-menu-item\n *ngFor=\"let item of filteredOptions; index as $index\"\n [title]=\"item[titleProperty]\"\n [value]=\"item[valueProperty]\"\n [icon]=\"item[iconProperty]\"\n [multiSelect]=\"true\"\n [showCheckbox]=\"useCheckbox\"\n [focused]=\"focused===$index\"\n (mouseover)=\"focused=$index\"\n >\n </fw-menu-item>\n </ng-container>\n <fw-menu-item\n *ngIf=\"filteredOptions.length === 0 && emptyText\" [showCheckbox]=\"false\"\n [disabled]=\"true\" [title]=\"emptyText\">\n </fw-menu-item>\n <ng-content select=\"[fw-menu-item, fw-menu-separator, fw-menu-item-group, fw-menu-header]\"></ng-content>\n </fw-menu>\n </fw-menu-container>\n </ng-template>\n</div>\n", styles: [":host .chip-grid{min-height:36px;box-sizing:border-box;color:var(--typography-light);background:var(--page-light);display:flex;padding:4px;align-items:center;border-radius:6px;border:1px solid var(--separations-input);cursor:pointer;font-family:Inter,sans-serif}:host .chip-grid.small{min-height:30px;padding:2px}:host .chip-grid.large{min-height:40px;padding:6px}:host .chip-grid:focus-within{border-color:var(--primary-base)}:host .chip-grid .inner-chip-grid{display:flex;flex-wrap:wrap;gap:4px;overflow:hidden auto;align-items:center;flex:1}:host .chip-grid .inner-chip-grid input{display:inline-flex;width:10px;flex-grow:1}:host .chip-grid .placeholder{padding:0 2px 0 4px;font-size:14px;color:var(--typography-base);background:var(--page-light);border:0;outline:0;display:inline-flex;width:10px;flex-grow:1}:host .chip-grid .placeholder:focus{outline:none!important}:host .chip-grid .placeholder::placeholder{color:var(--typography-light)}:host .chip-grid fw-icon{font-size:20px}:host .chip-grid fw-icon:hover{color:var(--primary-base)}:host .chip-grid .max-exceeded{font-size:12px}\n"] }]
|
|
315
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { outsideClick: [{
|
|
315
316
|
type: HostListener,
|
|
316
317
|
args: ['document:click']
|
|
317
318
|
}], options: [{
|
|
@@ -373,4 +374,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
373
374
|
}], value: [{
|
|
374
375
|
type: Input
|
|
375
376
|
}] } });
|
|
376
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2VsZWN0LW1lbnUvbXVsdGktc2VsZWN0LW1lbnUvbXVsdGktc2VsZWN0LW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2VsZWN0LW1lbnUvbXVsdGktc2VsZWN0LW1lbnUvbXVsdGktc2VsZWN0LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0RBQXdEO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBR0wsU0FBUyxFQUNULGVBQWUsRUFFZixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUdOLFNBQVMsRUFDVCxZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7OztBQWMvRSxNQUFNLE9BQU8sMEJBQTBCO0lBQ0wsWUFBWTtRQUMxQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztTQUN0QjtRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQW9DRCxJQUNJLEtBQUs7UUFD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RyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ3FCLE9BQU87c0JBQWpDLFNBQVM7dUJBQUMsY0FBYztnQkFDRyxJQUFJO3NCQUEvQixTQUFTO3VCQUFDLGVBQWU7Z0JBQ1MsaUJBQWlCO3NCQUFuRCxZQUFZO3VCQUFDLG1CQUFtQjtnQkFDNEIsZUFBZTtzQkFBM0UsZUFBZTt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBS25DLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDUyxnQkFBZ0I7c0JBQTlDLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUVuQixNQUFNO3NCQUFmLE1BQU07Z0JBTUgsS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IENka01lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL21lbnUnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZ3TWVudUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21lbnUvbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRndNZW51SXRlbUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21lbnUvbWVudS1pdGVtL21lbnUtaXRlbS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmdy1tdWx0aS1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbXVsdGktc2VsZWN0LW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tdWx0aS1zZWxlY3QtbWVudS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZ3TXVsdGlTZWxlY3RNZW51Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZ3TXVsdGlTZWxlY3RNZW51Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snKSBvdXRzaWRlQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2lzT3Blbikge1xuICAgICAgdGhpcy50cmlnZ2VyLmNsb3NlKCk7XG4gICAgICB0aGlzLl9pc09wZW4gPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMudHJpZ2dlciAmJiB0aGlzLnRyaWdnZXIuaXNPcGVuKCkpIHtcbiAgICAgIHRoaXMuX2lzT3BlbiA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCkgb3B0aW9uczogb2JqZWN0W10gPSBbXTtcbiAgQElucHV0KCkgdmFsdWVQcm9wZXJ0eT86IHN0cmluZyA9ICd2YWx1ZSc7XG4gIEBJbnB1dCgpIHRpdGxlUHJvcGVydHk/OiBzdHJpbmcgPSAndGl0bGUnO1xuICBASW5wdXQoKSBpY29uUHJvcGVydHk/OiBzdHJpbmcgPSAnaWNvbic7XG4gIEBJbnB1dCgpIGRpc2FibGVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSB1c2VDaGVja2JveD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY2xvc2VPblNlbGVjdD86IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBmaWx0ZXJJdGVtc09uU2VsZWN0PzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIG1heFNlbGVjdGVkU2hvd246IG51bWJlciA9IDEwMDtcbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZyA9ICcyMDBweCc7XG4gIEBJbnB1dCgpIG1pbkhlaWdodDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIG1heEhlaWdodDogc3RyaW5nID0gJzIwMHB4JztcbiAgQElucHV0KCkgb3B0aW9uc1dpZHRoPzogc3RyaW5nO1xuICBASW5wdXQoKSBtaW5PcHRpb25zSGVpZ2h0Pzogc3RyaW5nO1xuICBASW5wdXQoKSBtYXhPcHRpb25zSGVpZ2h0Pzogc3RyaW5nO1xuICBASW5wdXQoKSBzaXplPzogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJyA9ICdtZWRpdW0nO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ1NlbGVjdCBzb21ldGhpbmcuLi4nO1xuICBASW5wdXQoKSBlbXB0eVRleHQ6IHN0cmluZyA9ICdObyBtYXRjaGVzIGZvdW5kLi4uJztcbiAgQFZpZXdDaGlsZChDZGtNZW51VHJpZ2dlcikgdHJpZ2dlcjogQ2RrTWVudVRyaWdnZXI7XG4gIEBWaWV3Q2hpbGQoRndNZW51Q29tcG9uZW50KSBtZW51OiBGd01lbnVDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGRyZW4oRndNZW51SXRlbUNvbXBvbmVudCkgcmVuZGVyZWRNZW51SXRlbXM6IFF1ZXJ5TGlzdDxGd01lbnVJdGVtQ29tcG9uZW50PjtcbiAgQENvbnRlbnRDaGlsZHJlbihGd01lbnVJdGVtQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIGN1c3RvbU1lbnVJdGVtczogUXVlcnlMaXN0PEZ3TWVudUl0ZW1Db21wb25lbnQ+O1xuICBzZWxlY3RlZFZhbHVlczogc3RyaW5nW10gPSBbXTtcbiAgc2VsZWN0ZWRPcHRpb25zOiBvYmplY3RbXSA9IFtdO1xuICBmaWx0ZXJlZE9wdGlvbnM6IG9iamVjdFtdID0gW107XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgQFZpZXdDaGlsZCgndGV4dElucHV0JykgdGV4dElucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCd0ZXh0SW5pdGlhbElucHV0JykgdGV4dEluaXRpYWxJbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgZm9jdXNlZCA9IDA7XG4gIHByaXZhdGUgdG91Y2hlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9pc09wZW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBnZXQgdmFsdWUoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHNldCB2YWx1ZShuZXdWYWx1ZTogYW55W10pIHtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKG5ld1ZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgX3ZhbHVlOiBhbnlbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gIH1cblxuXG4gIG9uQ2hhbmdlOiAodmFsdWU6IGFueVtdKSA9PiB2b2lkO1xuICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7XG4gIH07XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnlbXSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueVtdKTogdm9pZCB7XG4gICAgLy8gdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLm9wdGlvbnMpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGZvciAoY29uc3Qgc3Vic2NyaXB0aW9uIG9mIHRoaXMuc3Vic2NyaXB0aW9ucykge1xuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVnaXN0ZXJDdXN0b21NZW51SXRlbXMoKVxuXG4gICAgdGhpcy5jdXN0b21NZW51SXRlbXMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZWdpc3RlckN1c3RvbU1lbnVJdGVtcygpO1xuICAgIH0pXG4gIH1cblxuICByZWdpc3RlckN1c3RvbU1lbnVJdGVtcygpOiB2b2lkIHtcbiAgICAvLyBmaXJzdCBmaWx0ZXIgYW55IG1lbnVJdGVtcyB3ZSd2ZSBhbHJlYWR5IHJlZ2lzdGVyZWQgYXMgb3B0aW9uc1xuICAgIGNvbnN0IG5ld01lbnVJdGVtcyA9IHRoaXMuY3VzdG9tTWVudUl0ZW1zLmZpbHRlcihcbiAgICAgIG1lbnVJdGVtID0+ICF0aGlzLm9wdGlvbnMuZmluZChvcHRpb24gPT4gbWVudUl0ZW0udmFsdWUgPT09IChvcHRpb24gYXMgYW55KS52YWx1ZSksXG4gICAgKVxuXG4gICAgbmV3TWVudUl0ZW1zLmZvckVhY2goKG5ld01lbnVJdGVtKSA9PiB7XG5cbiAgICAgIGNvbnN0IG5ld09wdGlvbiA9IHtcbiAgICAgICAgdmFsdWU6IG5ld01lbnVJdGVtLnZhbHVlLFxuICAgICAgICB0aXRsZTogbmV3TWVudUl0ZW0udGl0bGUsXG4gICAgICAgIGljb246IG5ld01lbnVJdGVtLmljb24sXG4gICAgICB9XG5cbiAgICAgIHRoaXMub3B0aW9ucy5wdXNoKG5ld09wdGlvbik7XG5cbiAgICAgIGNvbnN0IHN1YiA9IG5ld01lbnVJdGVtLmNsaWNrLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUoW3ZhbHVlXSwgdHJ1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuY2xvc2VPblNlbGVjdCkge1xuICAgICAgICAgIHRoaXMudHJpZ2dlci5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1Yik7XG4gICAgfSlcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkSXRlbXMoKTtcbiAgfVxuXG4gIGhhbmRsZVRvdWNoZWQoKTogdm9pZCB7XG4gICAgdGhpcy50b3VjaGVkID0gdHJ1ZTtcbiAgfVxuXG4gIGhhbmRsZUNsb3NlKGNoaXA6IG9iamVjdCk6IHZvaWQge1xuICAgIGNvbnN0IG5ld1ZhbHVlcyA9IHRoaXMudmFsdWUuZmlsdGVyKHZhbCA9PiB2YWwgIT09IGNoaXBbdGhpcy52YWx1ZVByb3BlcnR5XSk7XG4gICAgdGhpcy51cGRhdGVWYWx1ZShuZXdWYWx1ZXMpO1xuICAgIHRoaXMudHJpZ2dlci5jbG9zZSgpO1xuICB9XG5cbiAgaGFuZGxlQ2hhbmdlKGU6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHtcbiAgICAgIGlmIChlLnRvU3RyaW5nKCkgIT09IHRoaXMuc2VsZWN0ZWRWYWx1ZXMudG9TdHJpbmcoKSkge1xuICAgICAgICBpZiAodGhpcy5jbG9zZU9uU2VsZWN0KSB7XG4gICAgICAgICAgdGhpcy50cmlnZ2VyLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMudXBkYXRlVmFsdWUoZSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlRmlsdGVyZWRJdGVtcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5maWx0ZXJJdGVtc09uU2VsZWN0ICYmIHRoaXMub3B0aW9ucyAmJiB0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucy5maWx0ZXIoaSA9PiAhdGhpcy52YWx1ZS5pbmNsdWRlcyhpW3RoaXMudmFsdWVQcm9wZXJ0eV0pKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jdXN0b21NZW51SXRlbXMgJiYgdGhpcy5maWx0ZXJJdGVtc09uU2VsZWN0KSB7XG5cbiAgICAgIHRoaXMuY3VzdG9tTWVudUl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlLmluY2x1ZGVzKGl0ZW0udmFsdWUpKSB7XG4gICAgICAgICAgaXRlbS5oaWRkZW4gPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW0uaGlkZGVuID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAvLyB0aGlzIG5lZWRzIHRvIGJlIGRlbGF5ZWQgdG8gZ2l2ZSB0aW1lIGZvciBlbGVtZW50IHN3YXAgdG8gaGFwcGVuXG4gICAgICAgICAgaWYgKHRoaXMudGV4dEluaXRpYWxJbnB1dCAmJiB0aGlzLnRleHRJbml0aWFsSW5wdXQubmF0aXZlRWxlbWVudCAmJiB0aGlzLnRvdWNoZWQpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAcngtYW5ndWxhci9wcmVmZXItbm8tbGF5b3V0LXNlbnNpdGl2ZS1hcGlzXG4gICAgICAgICAgICB0aGlzLnRleHRJbml0aWFsSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIC8vIHRoaXMgbmVlZHMgdG8gYmUgZGVsYXllZCB0byBnaXZlIHRpbWUgZm9yIGVsZW1lbnQgc3dhcCB0byBoYXBwZW5cbiAgICAgICAgICBpZiAodGhpcy50ZXh0SW5wdXQgJiYgdGhpcy50ZXh0SW5wdXQubmF0aXZlRWxlbWVudCAmJiB0aGlzLnRvdWNoZWQpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAcngtYW5ndWxhci9wcmVmZXItbm8tbGF5b3V0LXNlbnNpdGl2ZS1hcGlzXG4gICAgICAgICAgICB0aGlzLnRleHRJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAxMDApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVZhbHVlKGluY29taW5nVmFsdWVzOiBhbnlbXSwgYWRkaXRpdmUgPSBmYWxzZSk6IHZvaWQge1xuXG4gICAgaWYgKCFpbmNvbWluZ1ZhbHVlcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghYWRkaXRpdmUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBbXTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gW107XG4gICAgfVxuXG4gICAgaW5jb21pbmdWYWx1ZXMuZm9yRWFjaChpbmNvbWluZyA9PiB7XG5cbiAgICAgIGlmICh0eXBlb2YgaW5jb21pbmcgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMucHVzaChpbmNvbWluZ1t0aGlzLnZhbHVlUHJvcGVydHldKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMucHVzaChpbmNvbWluZyk7XG5cbiAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcy5wdXNoKGluY29taW5nKTtcblxuICAgICAgICBjb25zdCBpbmNvbWluZ01hcHBlZFRvT3B0aW9uID0gdGhpcy5vcHRpb25zLmZpbmQob3B0ID0+IG9wdFt0aGlzLnZhbHVlUHJvcGVydHldID09PSBpbmNvbWluZyk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zLnB1c2goaW5jb21pbmdNYXBwZWRUb09wdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLl92YWx1ZSA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXM7XG4gICAgdGhpcy51cGRhdGVGaWx0ZXJlZEl0ZW1zKCk7XG4gICAgaWYgKHRoaXMub25DaGFuZ2UpIHtcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5fdmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLmNoYW5nZS5lbWl0KHRoaXMuX3ZhbHVlKTtcbiAgICBpZiAodGhpcy50ZXh0SW5wdXQgJiYgdGhpcy50ZXh0SW5wdXQubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy50ZXh0SW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIG1vdmVGb2N1c2VkKGRpcmVjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcbiAgICAgIGNhc2UgJ2Rvd24nOiB7XG4gICAgICAgIHRoaXMuZm9jdXNlZCsrO1xuICAgICAgICBpZiAodGhpcy5mb2N1c2VkID49IHRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuZm9jdXNlZCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICd1cCc6IHtcbiAgICAgICAgdGhpcy5mb2N1c2VkLS07XG4gICAgICAgIGlmICh0aGlzLmZvY3VzZWQgPCAwKSB7XG4gICAgICAgICAgdGhpcy5mb2N1c2VkID0gdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRyaWdnZXIuaXNPcGVuKCkpIHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgICAgIHRoaXMubW92ZUZvY3VzZWQoJ2Rvd24nKTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICAgICAgdGhpcy5tb3ZlRm9jdXNlZCgndXAnKTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnVGFiJykge1xuICAgICAgICB0aGlzLnRyaWdnZXIuY2xvc2UoKTtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCkge1xuICAgICAgICAgIGV2ZW50LnRhcmdldFsndmFsdWUnXSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgIHRoaXMudHJpZ2dlci5jbG9zZSgpO1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0KSB7XG4gICAgICAgICAgZXZlbnQudGFyZ2V0Wyd2YWx1ZSddID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICBpZiAodGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoID4gdGhpcy5mb2N1c2VkKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLnZhbHVlLmluY2x1ZGVzKHRoaXMuZmlsdGVyZWRPcHRpb25zW3RoaXMuZm9jdXNlZF0pKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IFsuLi50aGlzLnZhbHVlLCB0aGlzLmZpbHRlcmVkT3B0aW9uc1t0aGlzLmZvY3VzZWRdW3RoaXMudmFsdWVQcm9wZXJ0eV1dO1xuICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCkge1xuICAgICAgICAgICAgICBldmVudC50YXJnZXRbJ3ZhbHVlJ10gPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShuZXdWYWx1ZSk7XG4gICAgICAgICAgICBpZiAodGhpcy5jbG9zZU9uU2VsZWN0KSB7XG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlci5jbG9zZSgpO1xuICAgICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlci5vcGVuKCk7XG4gICAgICAgICAgICAgIH0sIDApO1xuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdCYWNrc3BhY2UnKSB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA+IDAgJiYgZXZlbnQudGFyZ2V0Wyd2YWx1ZSddLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMudmFsdWUuc3BsaWNlKHRoaXMudmFsdWUubGVuZ3RoIC0gMSwgMSk7XG4gICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUZpbHRlckNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcblxuICAgIGlmICghdGhpcy50cmlnZ2VyLmlzT3BlbigpKSB7XG4gICAgICB0aGlzLnRyaWdnZXIub3BlbigpO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld0ZpbHRlclZhbHVlID0gZXZlbnQudGFyZ2V0Wyd2YWx1ZSddO1xuXG4gICAgLy8gZW1wdHkgZmlsdGVyIGd1YXJkXG4gICAgaWYgKCFuZXdGaWx0ZXJWYWx1ZSkge1xuICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkSXRlbXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBoaWRlIGN1c3RvbSBpdGVtc1xuICAgIGlmICh0aGlzLmN1c3RvbU1lbnVJdGVtcykge1xuICAgICAgY29uc3QgZmlsdGVyZWRDdXN0b21JdGVtcyA9IHRoaXMuY3VzdG9tTWVudUl0ZW1zLmZpbHRlcihpdGVtID0+ICFpdGVtLnRpdGxlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobmV3RmlsdGVyVmFsdWUudG9Mb3dlckNhc2UoKSkpO1xuICAgICAgZmlsdGVyZWRDdXN0b21JdGVtcy5mb3JFYWNoKGl0ZW0gPT4gaXRlbS5oaWRkZW4gPSB0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBkZWNpZGUgd2hhdCB0byByZW5kZXIgaWYgd2UncmUgdXNpbmcgb3B0aW9uc1xuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zLmZpbHRlcihvcHRpb24gPT4ge1xuICAgICAgaWYgKG9wdGlvblt0aGlzLnRpdGxlUHJvcGVydHldLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZXZlbnQudGFyZ2V0Wyd2YWx1ZSddLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy52YWx1ZS5pbmNsdWRlcyhvcHRpb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5tb3ZlRm9jdXNlZCgnemVybycpO1xuICB9XG59XG4iLCI8ZGl2IFtuZ1N0eWxlXT1cInt3aWR0aDogd2lkdGh9XCIgI3dyYXBwZXI+XG4gIDxkaXZcbiAgICBmd01lbnVSZWdpc3RlclxuICAgIFtuZ0NsYXNzXT1cIlsnY2hpcC1ncmlkJywgc2l6ZV1cIlxuICAgIFtuZ1N0eWxlXT1cInttaW5IZWlnaHQ6IG1pbkhlaWdodCwgbWF4SGVpZ2h0OiBtYXhIZWlnaHR9XCJcbiAgICBbY2RrTWVudVRyaWdnZXJGb3JdPVwic2VsZWN0TWVudVwiPlxuICAgIDxkaXYgY2xhc3M9XCJpbm5lci1jaGlwLWdyaWRcIiAqbmdJZj1cInZhbHVlICYmIHZhbHVlLmxlbmd0aD4wXCI+XG4gICAgICA8ZnctY2hpcFxuICAgICAgICAqbmdGb3I9XCJsZXQgY2hpcCBvZiBzZWxlY3RlZE9wdGlvbnMgfCBzbGljZTowOm1heFNlbGVjdGVkU2hvd25cIlxuICAgICAgICBbdGl0bGVdPVwiY2hpcFt0aXRsZVByb3BlcnR5XVwiXG4gICAgICAgIFt2YWx1ZV09XCJjaGlwW3ZhbHVlUHJvcGVydHldXCJcbiAgICAgICAgW2ljb25dPVwiY2hpcFtpY29uUHJvcGVydHldXCJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgW3Nob3dDbG9zZV09XCJ0cnVlXCJcbiAgICAgICAgKGNsb3NlKT1cImhhbmRsZUNsb3NlKGNoaXApXCJcbiAgICAgICAgW3NlbGVjdGFibGVdPVwiZmFsc2VcIj5cbiAgICAgIDwvZnctY2hpcD5cbiAgICAgIDxzcGFuICpuZ0lmPVwidmFsdWUubGVuZ3RoPm1heFNlbGVjdGVkU2hvd25cIiBjbGFzcz1cIm1heC1leGNlZWRlZFwiPit7eyB2YWx1ZS5sZW5ndGggLSBtYXhTZWxlY3RlZFNob3duIH19XG4gICAgICAgIG1vcmU8L3NwYW4+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIiAjdGV4dElucHV0XG4gICAgICAgIGNsYXNzPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAoa2V5ZG93bik9XCJoYW5kbGVLZXlEb3duKCRldmVudClcIiAoaW5wdXQpPVwiaGFuZGxlRmlsdGVyQ2hhbmdlKCRldmVudClcIj5cbiAgICA8L2Rpdj5cbiAgICA8aW5wdXRcbiAgICAgIHR5cGU9XCJ0ZXh0XCIgI3RleHRJbml0aWFsSW5wdXRcbiAgICAgICpuZ0lmPVwiIXZhbHVlIHx8IHZhbHVlLmxlbmd0aD09PTBcIlxuICAgICAgY2xhc3M9XCJwbGFjZWhvbGRlclwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAoZm9jdXMpPVwiaGFuZGxlVG91Y2hlZCgpXCJcbiAgICAgIChrZXlkb3duKT1cImhhbmRsZUtleURvd24oJGV2ZW50KVwiIChpbnB1dCk9XCJoYW5kbGVGaWx0ZXJDaGFuZ2UoJGV2ZW50KVwiPlxuICAgIDxmdy1pY29uPmNoZXZyb24tZG93bjwvZnctaWNvbj5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjc2VsZWN0TWVudT5cbiAgICA8ZnctbWVudS1jb250YWluZXJcbiAgICAgIFt3aWR0aF09XCJvcHRpb25zV2lkdGggfHwgd3JhcHBlci5vZmZzZXRXaWR0aCArICdweCdcIiBbbWF4SGVpZ2h0XT1cIm1heE9wdGlvbnNIZWlnaHRcIiBbbWluSGVpZ2h0XT1cIm1pbk9wdGlvbnNIZWlnaHRcIlxuICAgICAgKm5nSWY9XCJlbXB0eVRleHQubGVuZ3RoID4gMCB8fCAoZmlsdGVyZWRPcHRpb25zICYmIGZpbHRlcmVkT3B0aW9ucy5sZW5ndGggPiAwKVwiPlxuICAgICAgPGZ3LW1lbnVcbiAgICAgICAgW211bHRpU2VsZWN0XT1cInRydWVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgKGZpbHRlcmVkT3B0aW9ucyAmJiBmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoPT09MClcIlxuICAgICAgICBbdmFsdWVdPVwic2VsZWN0ZWRWYWx1ZXNcIlxuICAgICAgICAoY2hhbmdlKT1cImhhbmRsZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21NZW51SXRlbXMubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgPGZ3LW1lbnUtaXRlbVxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWRPcHRpb25zOyBpbmRleCBhcyAkaW5kZXhcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW1bdGl0bGVQcm9wZXJ0eV1cIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW1bdmFsdWVQcm9wZXJ0eV1cIlxuICAgICAgICAgICAgW2ljb25dPVwiaXRlbVtpY29uUHJvcGVydHldXCJcbiAgICAgICAgICAgIFttdWx0aVNlbGVjdF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtzaG93Q2hlY2tib3hdPVwidXNlQ2hlY2tib3hcIlxuICAgICAgICAgICAgW2ZvY3VzZWRdPVwiZm9jdXNlZD09PSRpbmRleFwiXG4gICAgICAgICAgICAobW91c2VvdmVyKT1cImZvY3VzZWQ9JGluZGV4XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9mdy1tZW51LWl0ZW0+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8ZnctbWVudS1pdGVtXG4gICAgICAgICAgKm5nSWY9XCJmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoID09PSAwICYmIGVtcHR5VGV4dFwiIFtzaG93Q2hlY2tib3hdPVwiZmFsc2VcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCIgW3RpdGxlXT1cImVtcHR5VGV4dFwiPlxuICAgICAgICA8L2Z3LW1lbnUtaXRlbT5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2Z3LW1lbnUtaXRlbSwgZnctbWVudS1zZXBhcmF0b3IsIGZ3LW1lbnUtaXRlbS1ncm91cCwgZnctbWVudS1oZWFkZXJdXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9mdy1tZW51PlxuICAgIDwvZnctbWVudS1jb250YWluZXI+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
|
|
377
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2VsZWN0LW1lbnUvbXVsdGktc2VsZWN0LW1lbnUvbXVsdGktc2VsZWN0LW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2VsZWN0LW1lbnUvbXVsdGktc2VsZWN0LW1lbnUvbXVsdGktc2VsZWN0LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0RBQXdEO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBR0wsU0FBUyxFQUNULGVBQWUsRUFFZixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsS0FBSyxFQUdMLE1BQU0sRUFHTixTQUFTLEVBQ1QsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7Ozs7Ozs7QUFjL0UsTUFBTSxPQUFPLDBCQUEwQjtJQUNMLFlBQVk7UUFDMUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUN0QixDQUFD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QkFBQyxrQkFBa0I7Z0JBRW5CLE1BQU07c0JBQWYsTUFBTTtnQkFNSCxLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSAgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgQ2RrTWVudVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvbWVudSc7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBpbnB1dCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZ3TWVudUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21lbnUvbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRndNZW51SXRlbUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21lbnUvbWVudS1pdGVtL21lbnUtaXRlbS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmdy1tdWx0aS1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbXVsdGktc2VsZWN0LW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tdWx0aS1zZWxlY3QtbWVudS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZ3TXVsdGlTZWxlY3RNZW51Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZ3TXVsdGlTZWxlY3RNZW51Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snKSBvdXRzaWRlQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2lzT3Blbikge1xuICAgICAgdGhpcy50cmlnZ2VyLmNsb3NlKCk7XG4gICAgICB0aGlzLl9pc09wZW4gPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMudHJpZ2dlciAmJiB0aGlzLnRyaWdnZXIuaXNPcGVuKCkpIHtcbiAgICAgIHRoaXMuX2lzT3BlbiA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCkgb3B0aW9uczogb2JqZWN0W10gPSBbXTtcbiAgQElucHV0KCkgdmFsdWVQcm9wZXJ0eT86IHN0cmluZyA9ICd2YWx1ZSc7XG4gIEBJbnB1dCgpIHRpdGxlUHJvcGVydHk/OiBzdHJpbmcgPSAndGl0bGUnO1xuICBASW5wdXQoKSBpY29uUHJvcGVydHk/OiBzdHJpbmcgPSAnaWNvbic7XG4gIEBJbnB1dCgpIGRpc2FibGVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSB1c2VDaGVja2JveD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY2xvc2VPblNlbGVjdD86IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBmaWx0ZXJJdGVtc09uU2VsZWN0PzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIG1heFNlbGVjdGVkU2hvd246IG51bWJlciA9IDEwMDtcbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZyA9ICcyMDBweCc7XG4gIEBJbnB1dCgpIG1pbkhlaWdodDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIG1heEhlaWdodDogc3RyaW5nID0gJzIwMHB4JztcbiAgQElucHV0KCkgb3B0aW9uc1dpZHRoPzogc3RyaW5nO1xuICBASW5wdXQoKSBtaW5PcHRpb25zSGVpZ2h0Pzogc3RyaW5nO1xuICBASW5wdXQoKSBtYXhPcHRpb25zSGVpZ2h0Pzogc3RyaW5nO1xuICBASW5wdXQoKSBzaXplPzogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJyA9ICdtZWRpdW0nO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ1NlbGVjdCBzb21ldGhpbmcuLi4nO1xuICBASW5wdXQoKSBlbXB0eVRleHQ6IHN0cmluZyA9ICdObyBtYXRjaGVzIGZvdW5kLi4uJztcbiAgc2hvd0NsZWFyID0gaW5wdXQoZmFsc2UpO1xuICBAVmlld0NoaWxkKENka01lbnVUcmlnZ2VyKSB0cmlnZ2VyOiBDZGtNZW51VHJpZ2dlcjtcbiAgQFZpZXdDaGlsZChGd01lbnVDb21wb25lbnQpIG1lbnU6IEZ3TWVudUNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZHJlbihGd01lbnVJdGVtQ29tcG9uZW50KSByZW5kZXJlZE1lbnVJdGVtczogUXVlcnlMaXN0PEZ3TWVudUl0ZW1Db21wb25lbnQ+O1xuICBAQ29udGVudENoaWxkcmVuKEZ3TWVudUl0ZW1Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgY3VzdG9tTWVudUl0ZW1zOiBRdWVyeUxpc3Q8RndNZW51SXRlbUNvbXBvbmVudD47XG4gIHNlbGVjdGVkVmFsdWVzOiBzdHJpbmdbXSA9IFtdO1xuICBzZWxlY3RlZE9wdGlvbnM6IG9iamVjdFtdID0gW107XG4gIGZpbHRlcmVkT3B0aW9uczogb2JqZWN0W10gPSBbXTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBAVmlld0NoaWxkKCd0ZXh0SW5wdXQnKSB0ZXh0SW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3RleHRJbml0aWFsSW5wdXQnKSB0ZXh0SW5pdGlhbElucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgQE91dHB1dCgpIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBmb2N1c2VkID0gMDtcbiAgcHJpdmF0ZSB0b3VjaGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX2lzT3BlbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgc2V0IHZhbHVlKG5ld1ZhbHVlOiBhbnlbXSkge1xuICAgIHRoaXMudXBkYXRlVmFsdWUobmV3VmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmFsdWU6IGFueVtdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgfVxuXG5cbiAgb25DaGFuZ2U6ICh2YWx1ZTogYW55W10pID0+IHZvaWQ7XG4gIG9uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHtcbiAgfTtcblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueVtdKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55W10pOiB2b2lkIHtcbiAgICAvLyB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMub3B0aW9ucykge1xuICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBzdWJzY3JpcHRpb24gb2YgdGhpcy5zdWJzY3JpcHRpb25zKSB7XG4gICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZWdpc3RlckN1c3RvbU1lbnVJdGVtcygpXG5cbiAgICB0aGlzLmN1c3RvbU1lbnVJdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlZ2lzdGVyQ3VzdG9tTWVudUl0ZW1zKCk7XG4gICAgfSlcbiAgfVxuXG4gIHJlZ2lzdGVyQ3VzdG9tTWVudUl0ZW1zKCk6IHZvaWQge1xuICAgIC8vIGZpcnN0IGZpbHRlciBhbnkgbWVudUl0ZW1zIHdlJ3ZlIGFscmVhZHkgcmVnaXN0ZXJlZCBhcyBvcHRpb25zXG4gICAgY29uc3QgbmV3TWVudUl0ZW1zID0gdGhpcy5jdXN0b21NZW51SXRlbXMuZmlsdGVyKFxuICAgICAgbWVudUl0ZW0gPT4gIXRoaXMub3B0aW9ucy5maW5kKG9wdGlvbiA9PiBtZW51SXRlbS52YWx1ZSA9PT0gKG9wdGlvbiBhcyBhbnkpLnZhbHVlKSxcbiAgICApXG5cbiAgICBuZXdNZW51SXRlbXMuZm9yRWFjaCgobmV3TWVudUl0ZW0pID0+IHtcblxuICAgICAgY29uc3QgbmV3T3B0aW9uID0ge1xuICAgICAgICB2YWx1ZTogbmV3TWVudUl0ZW0udmFsdWUsXG4gICAgICAgIHRpdGxlOiBuZXdNZW51SXRlbS50aXRsZSxcbiAgICAgICAgaWNvbjogbmV3TWVudUl0ZW0uaWNvbixcbiAgICAgIH1cblxuICAgICAgdGhpcy5vcHRpb25zLnB1c2gobmV3T3B0aW9uKTtcblxuICAgICAgY29uc3Qgc3ViID0gbmV3TWVudUl0ZW0uY2xpY2suc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShbdmFsdWVdLCB0cnVlKTtcblxuICAgICAgICBpZiAodGhpcy5jbG9zZU9uU2VsZWN0KSB7XG4gICAgICAgICAgdGhpcy50cmlnZ2VyLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3ViKTtcbiAgICB9KVxuICAgIHRoaXMudXBkYXRlRmlsdGVyZWRJdGVtcygpO1xuICB9XG5cbiAgaGFuZGxlVG91Y2hlZCgpOiB2b2lkIHtcbiAgICB0aGlzLnRvdWNoZWQgPSB0cnVlO1xuICB9XG5cbiAgaGFuZGxlQ2xvc2UoY2hpcDogb2JqZWN0KTogdm9pZCB7XG4gICAgY29uc3QgbmV3VmFsdWVzID0gdGhpcy52YWx1ZS5maWx0ZXIodmFsID0+IHZhbCAhPT0gY2hpcFt0aGlzLnZhbHVlUHJvcGVydHldKTtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKG5ld1ZhbHVlcyk7XG4gICAgdGhpcy50cmlnZ2VyLmNsb3NlKCk7XG4gIH1cblxuICBoYW5kbGVDaGFuZ2UoZTogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShlKSkge1xuICAgICAgaWYgKGUudG9TdHJpbmcoKSAhPT0gdGhpcy5zZWxlY3RlZFZhbHVlcy50b1N0cmluZygpKSB7XG4gICAgICAgIGlmICh0aGlzLmNsb3NlT25TZWxlY3QpIHtcbiAgICAgICAgICB0aGlzLnRyaWdnZXIuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVWYWx1ZShlKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVGaWx0ZXJlZEl0ZW1zKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZpbHRlckl0ZW1zT25TZWxlY3QgJiYgdGhpcy5vcHRpb25zICYmIHRoaXMudmFsdWUpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zLmZpbHRlcihpID0+ICF0aGlzLnZhbHVlLmluY2x1ZGVzKGlbdGhpcy52YWx1ZVByb3BlcnR5XSkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmN1c3RvbU1lbnVJdGVtcyAmJiB0aGlzLmZpbHRlckl0ZW1zT25TZWxlY3QpIHtcblxuICAgICAgdGhpcy5jdXN0b21NZW51SXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUuaW5jbHVkZXMoaXRlbS52YWx1ZSkpIHtcbiAgICAgICAgICBpdGVtLmhpZGRlbiA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbS5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIC8vIHRoaXMgbmVlZHMgdG8gYmUgZGVsYXllZCB0byBnaXZlIHRpbWUgZm9yIGVsZW1lbnQgc3dhcCB0byBoYXBwZW5cbiAgICAgICAgICBpZiAodGhpcy50ZXh0SW5pdGlhbElucHV0ICYmIHRoaXMudGV4dEluaXRpYWxJbnB1dC5uYXRpdmVFbGVtZW50ICYmIHRoaXMudG91Y2hlZCkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEByeC1hbmd1bGFyL3ByZWZlci1uby1sYXlvdXQtc2Vuc2l0aXZlLWFwaXNcbiAgICAgICAgICAgIHRoaXMudGV4dEluaXRpYWxJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAxMDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgLy8gdGhpcyBuZWVkcyB0byBiZSBkZWxheWVkIHRvIGdpdmUgdGltZSBmb3IgZWxlbWVudCBzd2FwIHRvIGhhcHBlblxuICAgICAgICAgIGlmICh0aGlzLnRleHRJbnB1dCAmJiB0aGlzLnRleHRJbnB1dC5uYXRpdmVFbGVtZW50ICYmIHRoaXMudG91Y2hlZCkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEByeC1hbmd1bGFyL3ByZWZlci1uby1sYXlvdXQtc2Vuc2l0aXZlLWFwaXNcbiAgICAgICAgICAgIHRoaXMudGV4dElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDEwMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlVmFsdWUoaW5jb21pbmdWYWx1ZXM6IGFueVtdLCBhZGRpdGl2ZSA9IGZhbHNlKTogdm9pZCB7XG5cbiAgICBpZiAoIWluY29taW5nVmFsdWVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFhZGRpdGl2ZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBbXTtcbiAgICB9XG5cbiAgICBpbmNvbWluZ1ZhbHVlcy5mb3JFYWNoKGluY29taW5nID0+IHtcblxuICAgICAgaWYgKHR5cGVvZiBpbmNvbWluZyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcy5wdXNoKGluY29taW5nW3RoaXMudmFsdWVQcm9wZXJ0eV0pO1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucy5wdXNoKGluY29taW5nKTtcblxuICAgICAgfSBlbHNlIHtcblxuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzLnB1c2goaW5jb21pbmcpO1xuXG4gICAgICAgIGNvbnN0IGluY29taW5nTWFwcGVkVG9PcHRpb24gPSB0aGlzLm9wdGlvbnMuZmluZChvcHQgPT4gb3B0W3RoaXMudmFsdWVQcm9wZXJ0eV0gPT09IGluY29taW5nKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMucHVzaChpbmNvbWluZ01hcHBlZFRvT3B0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5zZWxlY3RlZFZhbHVlcztcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkSXRlbXMoKTtcbiAgICBpZiAodGhpcy5vbkNoYW5nZSkge1xuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLl92YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy5fdmFsdWUpO1xuICAgIGlmICh0aGlzLnRleHRJbnB1dCAmJiB0aGlzLnRleHRJbnB1dC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLnRleHRJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgfVxuICB9XG5cbiAgbW92ZUZvY3VzZWQoZGlyZWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xuICAgICAgY2FzZSAnZG93bic6IHtcbiAgICAgICAgdGhpcy5mb2N1c2VkKys7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzZWQgPj0gdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5mb2N1c2VkID0gMDtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3VwJzoge1xuICAgICAgICB0aGlzLmZvY3VzZWQtLTtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZCA8IDApIHtcbiAgICAgICAgICB0aGlzLmZvY3VzZWQgPSB0aGlzLmZpbHRlcmVkT3B0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSAwO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHJpZ2dlci5pc09wZW4oKSkge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgICAgdGhpcy5tb3ZlRm9jdXNlZCgnZG93bicpO1xuICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJykge1xuICAgICAgICB0aGlzLm1vdmVGb2N1c2VkKCd1cCcpO1xuICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdUYWInKSB7XG4gICAgICAgIHRoaXMudHJpZ2dlci5jbG9zZSgpO1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0KSB7XG4gICAgICAgICAgZXZlbnQudGFyZ2V0Wyd2YWx1ZSddID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgdGhpcy50cmlnZ2VyLmNsb3NlKCk7XG4gICAgICAgIGlmIChldmVudC50YXJnZXQpIHtcbiAgICAgICAgICBldmVudC50YXJnZXRbJ3ZhbHVlJ10gPSAnJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlcmVkT3B0aW9ucy5sZW5ndGggPiB0aGlzLmZvY3VzZWQpIHtcbiAgICAgICAgICBpZiAoIXRoaXMudmFsdWUuaW5jbHVkZXModGhpcy5maWx0ZXJlZE9wdGlvbnNbdGhpcy5mb2N1c2VkXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gWy4uLnRoaXMudmFsdWUsIHRoaXMuZmlsdGVyZWRPcHRpb25zW3RoaXMuZm9jdXNlZF1bdGhpcy52YWx1ZVByb3BlcnR5XV07XG4gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0KSB7XG4gICAgICAgICAgICAgIGV2ZW50LnRhcmdldFsndmFsdWUnXSA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmNsb3NlT25TZWxlY3QpIHtcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyLmNsb3NlKCk7XG4gICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyLm9wZW4oKTtcbiAgICAgICAgICAgICAgfSwgMCk7XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0JhY2tzcGFjZScpIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gMCAmJiBldmVudC50YXJnZXRbJ3ZhbHVlJ10ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy52YWx1ZS5zcGxpY2UodGhpcy52YWx1ZS5sZW5ndGggLSAxLCAxKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMudmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRmlsdGVyQ2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuXG4gICAgaWYgKCF0aGlzLnRyaWdnZXIuaXNPcGVuKCkpIHtcbiAgICAgIHRoaXMudHJpZ2dlci5vcGVuKCk7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3RmlsdGVyVmFsdWUgPSBldmVudC50YXJnZXRbJ3ZhbHVlJ107XG5cbiAgICAvLyBlbXB0eSBmaWx0ZXIgZ3VhcmRcbiAgICBpZiAoIW5ld0ZpbHRlclZhbHVlKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICAgIHRoaXMudXBkYXRlRmlsdGVyZWRJdGVtcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGhpZGUgY3VzdG9tIGl0ZW1zXG4gICAgaWYgKHRoaXMuY3VzdG9tTWVudUl0ZW1zKSB7XG4gICAgICBjb25zdCBmaWx0ZXJlZEN1c3RvbUl0ZW1zID0gdGhpcy5jdXN0b21NZW51SXRlbXMuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0udGl0bGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhuZXdGaWx0ZXJWYWx1ZS50b0xvd2VyQ2FzZSgpKSk7XG4gICAgICBmaWx0ZXJlZEN1c3RvbUl0ZW1zLmZvckVhY2goaXRlbSA9PiBpdGVtLmhpZGRlbiA9IHRydWUpO1xuICAgIH1cblxuICAgIC8vIGRlY2lkZSB3aGF0IHRvIHJlbmRlciBpZiB3ZSdyZSB1c2luZyBvcHRpb25zXG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKG9wdGlvbiA9PiB7XG4gICAgICBpZiAob3B0aW9uW3RoaXMudGl0bGVQcm9wZXJ0eV0udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhldmVudC50YXJnZXRbJ3ZhbHVlJ10udG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnZhbHVlLmluY2x1ZGVzKG9wdGlvbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLm1vdmVGb2N1c2VkKCd6ZXJvJyk7XG4gIH1cbn1cbiIsIjxkaXYgW25nU3R5bGVdPVwie3dpZHRoOiB3aWR0aH1cIiAjd3JhcHBlcj5cbiAgPGRpdlxuICAgIGZ3TWVudVJlZ2lzdGVyXG4gICAgW25nQ2xhc3NdPVwiWydjaGlwLWdyaWQnLCBzaXplXVwiXG4gICAgW25nU3R5bGVdPVwie21pbkhlaWdodDogbWluSGVpZ2h0LCBtYXhIZWlnaHQ6IG1heEhlaWdodH1cIlxuICAgIFtjZGtNZW51VHJpZ2dlckZvcl09XCJzZWxlY3RNZW51XCI+XG4gICAgPGRpdiBjbGFzcz1cImlubmVyLWNoaXAtZ3JpZFwiICpuZ0lmPVwidmFsdWUgJiYgdmFsdWUubGVuZ3RoPjBcIj5cbiAgICAgIDxmdy1jaGlwXG4gICAgICAgICpuZ0Zvcj1cImxldCBjaGlwIG9mIHNlbGVjdGVkT3B0aW9ucyB8IHNsaWNlOjA6bWF4U2VsZWN0ZWRTaG93blwiXG4gICAgICAgIFt0aXRsZV09XCJjaGlwW3RpdGxlUHJvcGVydHldXCJcbiAgICAgICAgW3ZhbHVlXT1cImNoaXBbdmFsdWVQcm9wZXJ0eV1cIlxuICAgICAgICBbaWNvbl09XCJjaGlwW2ljb25Qcm9wZXJ0eV1cIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICBbc2hvd0Nsb3NlXT1cInRydWVcIlxuICAgICAgICAoY2xvc2UpPVwiaGFuZGxlQ2xvc2UoY2hpcClcIlxuICAgICAgICBbc2VsZWN0YWJsZV09XCJmYWxzZVwiPlxuICAgICAgPC9mdy1jaGlwPlxuICAgICAgPHNwYW4gKm5nSWY9XCJtYXhTZWxlY3RlZFNob3duID09PSAwICYmIHZhbHVlLmxlbmd0aCA+IDBcIiBjbGFzcz1cIm1heC1leGNlZWRlZFwiPlxuICAgICAgICB7eyB2YWx1ZS5sZW5ndGggfX0gc2VsZWN0ZWRcbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwidmFsdWUubGVuZ3RoID4gbWF4U2VsZWN0ZWRTaG93biAmJiBtYXhTZWxlY3RlZFNob3duID4gMFwiIGNsYXNzPVwibWF4LWV4Y2VlZGVkXCI+XG4gICAgICAgICt7eyB2YWx1ZS5sZW5ndGggLSBtYXhTZWxlY3RlZFNob3duIH19IG1vcmVcbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiICN0ZXh0SW5wdXRcbiAgICAgICAgY2xhc3M9XCJwbGFjZWhvbGRlclwiXG4gICAgICAgIChrZXlkb3duKT1cImhhbmRsZUtleURvd24oJGV2ZW50KVwiIChpbnB1dCk9XCJoYW5kbGVGaWx0ZXJDaGFuZ2UoJGV2ZW50KVwiPlxuICAgIDwvZGl2PlxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cInRleHRcIiAjdGV4dEluaXRpYWxJbnB1dFxuICAgICAgKm5nSWY9XCIhdmFsdWUgfHwgdmFsdWUubGVuZ3RoPT09MFwiXG4gICAgICBjbGFzcz1cInBsYWNlaG9sZGVyXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgIChmb2N1cyk9XCJoYW5kbGVUb3VjaGVkKClcIlxuICAgICAgKGtleWRvd24pPVwiaGFuZGxlS2V5RG93bigkZXZlbnQpXCIgKGlucHV0KT1cImhhbmRsZUZpbHRlckNoYW5nZSgkZXZlbnQpXCI+XG4gICAgPGZ3LWljb24gKm5nSWY9XCJzaG93Q2xlYXIoKSAmJiB2YWx1ZS5sZW5ndGggPiAwXCIgKGNsaWNrKT1cInVwZGF0ZVZhbHVlKFtdKVwiPmNsb3NlPC9mdy1pY29uPlxuICAgIDxmdy1pY29uICpuZ0lmPVwiIXNob3dDbGVhcigpIHx8IHZhbHVlLmxlbmd0aCA9PT0gMFwiPmNoZXZyb24tZG93bjwvZnctaWNvbj5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjc2VsZWN0TWVudT5cbiAgICA8ZnctbWVudS1jb250YWluZXJcbiAgICAgIFt3aWR0aF09XCJvcHRpb25zV2lkdGggfHwgd3JhcHBlci5vZmZzZXRXaWR0aCArICdweCdcIiBbbWF4SGVpZ2h0XT1cIm1heE9wdGlvbnNIZWlnaHRcIiBbbWluSGVpZ2h0XT1cIm1pbk9wdGlvbnNIZWlnaHRcIlxuICAgICAgKm5nSWY9XCJlbXB0eVRleHQubGVuZ3RoID4gMCB8fCAoZmlsdGVyZWRPcHRpb25zICYmIGZpbHRlcmVkT3B0aW9ucy5sZW5ndGggPiAwKVwiPlxuICAgICAgPGZ3LW1lbnVcbiAgICAgICAgW211bHRpU2VsZWN0XT1cInRydWVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgKGZpbHRlcmVkT3B0aW9ucyAmJiBmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoPT09MClcIlxuICAgICAgICBbdmFsdWVdPVwic2VsZWN0ZWRWYWx1ZXNcIlxuICAgICAgICAoY2hhbmdlKT1cImhhbmRsZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21NZW51SXRlbXMubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgPGZ3LW1lbnUtaXRlbVxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWRPcHRpb25zOyBpbmRleCBhcyAkaW5kZXhcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW1bdGl0bGVQcm9wZXJ0eV1cIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW1bdmFsdWVQcm9wZXJ0eV1cIlxuICAgICAgICAgICAgW2ljb25dPVwiaXRlbVtpY29uUHJvcGVydHldXCJcbiAgICAgICAgICAgIFttdWx0aVNlbGVjdF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtzaG93Q2hlY2tib3hdPVwidXNlQ2hlY2tib3hcIlxuICAgICAgICAgICAgW2ZvY3VzZWRdPVwiZm9jdXNlZD09PSRpbmRleFwiXG4gICAgICAgICAgICAobW91c2VvdmVyKT1cImZvY3VzZWQ9JGluZGV4XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9mdy1tZW51LWl0ZW0+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8ZnctbWVudS1pdGVtXG4gICAgICAgICAgKm5nSWY9XCJmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoID09PSAwICYmIGVtcHR5VGV4dFwiIFtzaG93Q2hlY2tib3hdPVwiZmFsc2VcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCIgW3RpdGxlXT1cImVtcHR5VGV4dFwiPlxuICAgICAgICA8L2Z3LW1lbnUtaXRlbT5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2Z3LW1lbnUtaXRlbSwgZnctbWVudS1zZXBhcmF0b3IsIGZ3LW1lbnUtaXRlbS1ncm91cCwgZnctbWVudS1oZWFkZXJdXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9mdy1tZW51PlxuICAgIDwvZnctbWVudS1jb250YWluZXI+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -266,17 +266,17 @@ export class FwSelectMenuComponent {
|
|
|
266
266
|
this.filterValue = value;
|
|
267
267
|
this.filterChanged.emit(value);
|
|
268
268
|
}
|
|
269
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
270
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
269
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwSelectMenuComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
270
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FwSelectMenuComponent, selector: "fw-select", inputs: { options: "options", valueProperty: "valueProperty", useFullOptionAsValue: "useFullOptionAsValue", titleProperty: "titleProperty", iconProperty: "iconProperty", staticIcon: "staticIcon", descriptionProperty: "descriptionProperty", showFilter: "showFilter", showReset: "showReset", disabled: "disabled", errored: "errored", width: "width", optionsWidth: "optionsWidth", minOptionsHeight: "minOptionsHeight", maxOptionsHeight: "maxOptionsHeight", size: "size", placeholder: "placeholder", value: "value" }, outputs: { change: "change", filterChanged: "filterChanged" }, host: { listeners: { "document:click": "outsideClick($event.target)" } }, queries: [{ propertyName: "menuItems", predicate: FwMenuItemComponent, descendants: true }], viewQueries: [{ propertyName: "trigger", first: true, predicate: CdkMenuTrigger, descendants: true }, { propertyName: "menu", first: true, predicate: FwMenuComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #wrapper [ngStyle]=\"{width: width, cursor: 'pointer'}\">\n <fw-text-input\n fwMenuRegister\n [cdkMenuTriggerFor]=\"selectMenu\"\n [value]=\"selectTitle\"\n [leftIcon]=\"staticIcon || selectIcon\"\n [rightIcon]=\"(selectTitle&&showReset)?'close-circled':'chevron-down'\"\n (rightIconAction)=\"handleReset()\"\n [useActionableIcons]=\"true\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [size]=\"size\"\n [error]=\"errored || (invalid && touched)\"\n (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"handleKeyDown($event)\"\n readOnly=\"true\">\n </fw-text-input>\n <ng-template #selectMenu>\n <fw-menu-container\n [filterText]=\"filterValue\"\n *ngIf=\"!disabled\" [showFilter]=\"showFilter\" [width]=\"optionsWidth || wrapper.offsetWidth + 'px'\"\n [maxHeight]=\"maxOptionsHeight\" [minHeight]=\"minOptionsHeight\" (filterChanged)=\"onFilterChanged($event)\">\n <fw-menu [disabled]=\"disabled\" [value]=\"selectValue\" (change)=\"handleClick($event)\">\n <ng-container *ngIf=\"menuItems.length===0\">\n <fw-menu-item\n *ngFor=\"let item of options\"\n [title]=\"item[titleProperty]?.toString()\"\n [description]=\"item[descriptionProperty]\"\n [value]=\"useFullOptionAsValue ? JSON.stringify(item) : item?.[valueProperty]?.toString()\"\n [icon]=\"item[iconProperty]\"\n >\n </fw-menu-item>\n </ng-container>\n <div #menuContentWrapper>\n <ng-content select=\"[fw-menu-item, fw-menu-separator, fw-menu-item-group]\"></ng-content>\n </div>\n </fw-menu>\n </fw-menu-container>\n </ng-template>\n</div>\n", styles: [":host{box-sizing:border-box;max-width:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.CdkMenuTrigger, selector: "[cdkMenuTriggerFor]", inputs: ["cdkMenuTriggerFor", "cdkMenuPosition", "cdkMenuTriggerData"], outputs: ["cdkMenuOpened", "cdkMenuClosed"], exportAs: ["cdkMenuTriggerFor"] }, { kind: "component", type: i4.FwMenuComponent, selector: "fw-menu", inputs: ["disabled", "size", "multiSelect", "useCheckbox", "value", "variant", "collapsed", "collapsedWidth", "openWidth"], outputs: ["change", "filteredItemsChange"] }, { kind: "component", type: i5.FwMenuContainerComponent, selector: "fw-menu-container", inputs: ["width", "maxHeight", "minHeight", "border", "shadow", "showFilter", "filterText", "offset", "collapsed"], outputs: ["filterChanged"] }, { kind: "component", type: i6.FwMenuItemComponent, selector: "fw-menu-item", inputs: ["value", "size", "title", "description", "icon", "iconColor", "disabled", "showCheckbox", "checkboxColor", "multiSelect", "hidden", "collapsed", "href", "target", "subItemsOpen", "focused", "selected", "variant"], outputs: ["click"] }, { kind: "component", type: i7.FwTextInputComponent, selector: "fw-text-input", inputs: ["disabled", "useActionableIcons", "leftIcon", "rightIcon", "prefix", "context", "helperText", "errorText", "placeholder", "readOnly", "size", "type", "maxLength", "autofocus", "autocomplete", "value", "error", "width"], outputs: ["leftIconAction", "rightIconAction"] }, { kind: "directive", type: i8.MenuRegisterDirective, selector: "[fwMenuRegister]" }] }); }
|
|
271
271
|
}
|
|
272
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
272
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwSelectMenuComponent, decorators: [{
|
|
273
273
|
type: Component,
|
|
274
274
|
args: [{ selector: 'fw-select', template: "<div #wrapper [ngStyle]=\"{width: width, cursor: 'pointer'}\">\n <fw-text-input\n fwMenuRegister\n [cdkMenuTriggerFor]=\"selectMenu\"\n [value]=\"selectTitle\"\n [leftIcon]=\"staticIcon || selectIcon\"\n [rightIcon]=\"(selectTitle&&showReset)?'close-circled':'chevron-down'\"\n (rightIconAction)=\"handleReset()\"\n [useActionableIcons]=\"true\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [size]=\"size\"\n [error]=\"errored || (invalid && touched)\"\n (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"handleKeyDown($event)\"\n readOnly=\"true\">\n </fw-text-input>\n <ng-template #selectMenu>\n <fw-menu-container\n [filterText]=\"filterValue\"\n *ngIf=\"!disabled\" [showFilter]=\"showFilter\" [width]=\"optionsWidth || wrapper.offsetWidth + 'px'\"\n [maxHeight]=\"maxOptionsHeight\" [minHeight]=\"minOptionsHeight\" (filterChanged)=\"onFilterChanged($event)\">\n <fw-menu [disabled]=\"disabled\" [value]=\"selectValue\" (change)=\"handleClick($event)\">\n <ng-container *ngIf=\"menuItems.length===0\">\n <fw-menu-item\n *ngFor=\"let item of options\"\n [title]=\"item[titleProperty]?.toString()\"\n [description]=\"item[descriptionProperty]\"\n [value]=\"useFullOptionAsValue ? JSON.stringify(item) : item?.[valueProperty]?.toString()\"\n [icon]=\"item[iconProperty]\"\n >\n </fw-menu-item>\n </ng-container>\n <div #menuContentWrapper>\n <ng-content select=\"[fw-menu-item, fw-menu-separator, fw-menu-item-group]\"></ng-content>\n </div>\n </fw-menu>\n </fw-menu-container>\n </ng-template>\n</div>\n", styles: [":host{box-sizing:border-box;max-width:100%}\n"] }]
|
|
275
|
-
}], ctorParameters:
|
|
275
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.NgControl, decorators: [{
|
|
276
276
|
type: Optional
|
|
277
277
|
}, {
|
|
278
278
|
type: Self
|
|
279
|
-
}] }]
|
|
279
|
+
}] }], propDecorators: { outsideClick: [{
|
|
280
280
|
type: HostListener,
|
|
281
281
|
args: ['document:click', ['$event.target']]
|
|
282
282
|
}], options: [{
|
|
@@ -329,4 +329,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
329
329
|
}], value: [{
|
|
330
330
|
type: Input
|
|
331
331
|
}] } });
|
|
332
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2VsZWN0LW1lbnUvc2VsZWN0LW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2VsZWN0LW1lbnUvc2VsZWN0LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0RBQXdEO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBR0wsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLElBQUksRUFFSixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFLdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7Ozs7O0FBTzVFLE1BQU0sT0FBTyxxQkFBcUI7SUFDbUIsWUFBWSxDQUFDLEdBQVE7UUFDdEUsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQzVDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztTQUN0QjtRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQXNDRCxJQUNJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELElB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c0JBQWYsTUFBTTtnQkFDWSxhQUFhO3NCQUEvQixNQUFNO2dCQVlILEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBDZGtNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9tZW51JztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTZWxmLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBJY29uVHlwZSB9IGZyb20gJy4uL2ljb24vaWNvbi50eXBlcyc7XG5pbXBvcnQgeyBGd01lbnVDb21wb25lbnQgfSBmcm9tICcuLi9tZW51L21lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IEZ3TWVudUl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9tZW51L21lbnUtaXRlbS9tZW51LWl0ZW0uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnctc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LW1lbnUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRndTZWxlY3RNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudC50YXJnZXQnXSkgb3V0c2lkZUNsaWNrKGV2dDogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2lzT3BlbiAmJiBldnQubm9kZU5hbWUgIT09ICdJTlBVVCcpIHtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB0aGlzLl9pc09wZW4gPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMudHJpZ2dlciAmJiB0aGlzLnRyaWdnZXIuaXNPcGVuKCkpIHtcbiAgICAgIHRoaXMuX2lzT3BlbiA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLy8gYmluZCBpdCBmb3IgdGhlIHRlbXBsYXRlXG4gIHB1YmxpYyBKU09OID0gSlNPTjtcblxuICBASW5wdXQoKSBvcHRpb25zOiBvYmplY3RbXSA9IFtdO1xuICBASW5wdXQoKSB2YWx1ZVByb3BlcnR5Pzogc3RyaW5nID0gJ3ZhbHVlJztcbiAgQElucHV0KCkgdXNlRnVsbE9wdGlvbkFzVmFsdWUgPSBmYWxzZTtcbiAgQElucHV0KCkgdGl0bGVQcm9wZXJ0eT86IHN0cmluZyA9ICd0aXRsZSc7XG4gIEBJbnB1dCgpIGljb25Qcm9wZXJ0eT86IHN0cmluZyA9ICdpY29uJztcbiAgQElucHV0KCkgc3RhdGljSWNvbj86IEljb25UeXBlO1xuICBASW5wdXQoKSBkZXNjcmlwdGlvblByb3BlcnR5Pzogc3RyaW5nID0gJ2Rlc2NyaXB0aW9uJztcbiAgQElucHV0KCkgc2hvd0ZpbHRlcj86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd1Jlc2V0PzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZXJyb3JlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZyA9ICcyMDBweCc7XG4gIEBJbnB1dCgpIG9wdGlvbnNXaWR0aD86IHN0cmluZztcbiAgQElucHV0KCkgbWluT3B0aW9uc0hlaWdodD86IHN0cmluZztcbiAgQElucHV0KCkgbWF4T3B0aW9uc0hlaWdodD86IHN0cmluZztcbiAgQElucHV0KCkgc2l6ZT86ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgPSAnbWVkaXVtJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWxlY3Qgc29tZXRoaW5nLi4uJztcbiAgQFZpZXdDaGlsZChDZGtNZW51VHJpZ2dlcikgdHJpZ2dlcjogQ2RrTWVudVRyaWdnZXI7XG4gIEBWaWV3Q2hpbGQoRndNZW51Q29tcG9uZW50KSBtZW51OiBGd01lbnVDb21wb25lbnQ7XG4gIEBDb250ZW50Q2hpbGRyZW4oRndNZW51SXRlbUNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBtZW51SXRlbXM6IFF1ZXJ5TGlzdDxGd01lbnVJdGVtQ29tcG9uZW50PjtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGZpbHRlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgc2VsZWN0VmFsdWU6IHN0cmluZyA9ICcnO1xuICBzZWxlY3RUaXRsZTogc3RyaW5nID0gJyc7XG4gIHNlbGVjdEljb246IHN0cmluZyA9ICcnO1xuICBmaWx0ZXJWYWx1ZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBfaXNPcGVuID0gZmFsc2U7XG4gIGZvY3VzZWQgPSAwO1xuICBpbkZvY3VzT3BlbiA9IGZhbHNlO1xuICBwcmVGb2N1c1ZhbHVlOiBhbnk7XG5cbiAgQElucHV0KClcbiAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgc2V0IHZhbHVlKG5ld1ZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKG5ld1ZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgX3ZhbHVlOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwcml2YXRlIG5nQ29udHJvbDogTmdDb250cm9sLFxuICApIHtcbiAgICAvLyB0aGlzIGlzIGp1c3QgYSBkaWZmZXJlbnQgd2F5IG9mIGJpbmRpbmcgdGhlIGNvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gICAgLy8gaXQgY2FuIGJlIGFjY2Vzc2VkIGluIHRoZSBjb21wb25lbnQgdGhpcyB3YXlcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50T3B0aW9ucyA9IGNoYW5nZXMub3B0aW9ucz8uY3VycmVudFZhbHVlO1xuXG4gICAgLy8gaWYgdGhlIG9wdGlvbnMgY2hhbmdlIGNoZWNrIGlmIHRoZSB0aXRsZSB3ZSBzaG91bGQgYmUgZGlzcGxheWluZyBoYXMgY2hhbmdlZFxuICAgIGlmIChjdXJyZW50T3B0aW9ucyAmJiBjdXJyZW50T3B0aW9ucyAhPT0gY2hhbmdlcy5vcHRpb25zPy5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZE9wdGlvbiA9IGN1cnJlbnRPcHRpb25zLmZpbmQoaXRlbSA9PiBpdGVtWyd2YWx1ZSddPy50b1N0cmluZygpID09PSB0aGlzLnNlbGVjdFZhbHVlKTtcblxuICAgICAgaWYgKHNlbGVjdGVkT3B0aW9uKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0VGl0bGUgPSBzZWxlY3RlZE9wdGlvblsndGl0bGUnXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMgfHwgKHRoaXMub3B0aW9ucy5sZW5ndGggPT09IDAgJiYgdGhpcy5tZW51SXRlbXMgJiYgdGhpcy5tZW51SXRlbXMubGVuZ3RoID4gMCkpIHtcbiAgICAgIHRoaXMub3B0aW9ucyA9IFtdO1xuICAgICAgdGhpcy5tZW51SXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgdGhpcy5vcHRpb25zLnB1c2goe1xuICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLnRvU3RyaW5nKCksXG4gICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUudG9TdHJpbmcoKSxcbiAgICAgICAgICBpY29uOiBpdGVtLmljb24sXG4gICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0uZGVzY3JpcHRpb24sXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzdWIgPSBpdGVtLmNsaWNrLnN1YnNjcmliZSh2YWx1ZSA9PiB0aGlzLm1lbnUud3JpdGVWYWx1ZSh2YWx1ZSkpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWIpO1xuICAgICAgICBpZiAoaXRlbS52YWx1ZS50b1N0cmluZygpID09PSB0aGlzLnNlbGVjdFZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RUaXRsZSA9IGl0ZW0udGl0bGUudG9TdHJpbmcoKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdEljb24gPSBpdGVtLmljb247XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGZvciAoY29uc3Qgc3Vic2NyaXB0aW9uIG9mIHRoaXMuc3Vic2NyaXB0aW9ucykge1xuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmdDb250cm9sPy5pbnZhbGlkO1xuICB9XG5cbiAgZ2V0IHRvdWNoZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmdDb250cm9sPy50b3VjaGVkO1xuICB9XG5cbiAgb25DaGFuZ2UobmV3VmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX3ZhbHVlID0gdHlwZW9mIG5ld1ZhbHVlID09PSAnb2JqZWN0JyA/IEpTT04uc3RyaW5naWZ5KG5ld1ZhbHVlKSA6IG5ld1ZhbHVlO1xuICAgIHRoaXMuY2hhbmdlLmVtaXQobmV3VmFsdWUpO1xuICAgIHRoaXMuZXh0ZXJuYWxPbkNoYW5nZT8uKG5ld1ZhbHVlKTtcbiAgfTtcblxuICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7XG4gIH07XG5cbiAgZXh0ZXJuYWxPbkNoYW5nZTtcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLmV4dGVybmFsT25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB7fSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEByeC1hbmd1bGFyL25vLWV4cGxpY2l0LWNoYW5nZS1kZXRlY3Rpb24tYXBpc1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBoYW5kbGVDbGljayhlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuXG4gICAgaWYgKHRoaXMuc2VsZWN0VmFsdWUgPT09IGUpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy51c2VGdWxsT3B0aW9uQXNWYWx1ZSkge1xuICAgICAgY29uc3QgcGFyc2VkVmFsdWUgPSBKU09OLnBhcnNlKGUpO1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZShwYXJzZWRWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUoZSk7XG4gICAgfVxuXG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgbW92ZUZvY3VzZWQoZGlyZWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xuICAgICAgY2FzZSAnZG93bic6IHtcbiAgICAgICAgdGhpcy5mb2N1c2VkKys7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzZWQgPj0gdGhpcy5vcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuZm9jdXNlZCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICd1cCc6IHtcbiAgICAgICAgdGhpcy5mb2N1c2VkLS07XG4gICAgICAgIGlmICh0aGlzLmZvY3VzZWQgPCAwKSB7XG4gICAgICAgICAgdGhpcy5mb2N1c2VkID0gdGhpcy5vcHRpb25zLmxlbmd0aCAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50cmlnZ2VyLmlzT3BlbigpKSB7XG4gICAgICBpZiAodGhpcy5pbkZvY3VzT3Blbikge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgIHRoaXMubW92ZUZvY3VzZWQoJ2Rvd24nKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMub3B0aW9uc1t0aGlzLmZvY3VzZWRdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICAgICAgICB0aGlzLm1vdmVGb2N1c2VkKCd1cCcpO1xuICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUodGhpcy5vcHRpb25zW3RoaXMuZm9jdXNlZF0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdUYWInKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgIHRoaXMuaW5Gb2N1c09wZW4gPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMucHJlRm9jdXNWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICB0aGlzLmluRm9jdXNPcGVuID0gZmFsc2U7XG4gICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnVzZUZ1bGxPcHRpb25Bc1ZhbHVlID8gdGhpcy5KU09OLnBhcnNlKHRoaXMudmFsdWUpIDogdGhpcy52YWx1ZTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbkZvY3VzT3BlbiA9IHRydWU7XG4gICAgICAgIHRoaXMucHJlRm9jdXNWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgdGhpcy5pbkZvY3VzT3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLnByZUZvY3VzVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUtleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHJpZ2dlci5pc09wZW4oKSkge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB0aGlzLmluRm9jdXNPcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUodGhpcy5wcmVGb2N1c1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuc2hvd1Jlc2V0KSB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVSZXNldCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICB1cGRhdGVWYWx1ZShuZXdWYWx1ZTogdW5rbm93bik6IHZvaWQge1xuXG4gICAgLy8gZG8gaG91c2VrZWVwaW5nIGZpcnN0XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcblxuICAgIC8vIG51bGwgZ3VhcmRcbiAgICBpZiAoIW5ld1ZhbHVlKSB7XG4gICAgICB0aGlzLnNlbGVjdFZhbHVlID0gJyc7XG4gICAgICB0aGlzLnNlbGVjdFRpdGxlID0gJyc7XG4gICAgICB0aGlzLnNlbGVjdEljb24gPSAnJztcbiAgICAgIHJldHVybiB0aGlzLm9uQ2hhbmdlKG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG5ld1ZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgdGhpcy5zZWxlY3RWYWx1ZSA9IG5ld1ZhbHVlPy5bdGhpcy52YWx1ZVByb3BlcnR5XT8udG9TdHJpbmcoKTtcbiAgICAgIHRoaXMuc2VsZWN0VGl0bGUgPSBuZXdWYWx1ZT8uW3RoaXMudGl0bGVQcm9wZXJ0eV0/LnRvU3RyaW5nKCk7XG4gICAgICB0aGlzLnNlbGVjdEljb24gPSBuZXdWYWx1ZT8uW3RoaXMuaWNvblByb3BlcnR5XTtcblxuICAgICAgY29uc3QgY2hhbmdlVG9FbWl0ID0gdGhpcy51c2VGdWxsT3B0aW9uQXNWYWx1ZSA/IG5ld1ZhbHVlIDogbmV3VmFsdWVbdGhpcy52YWx1ZVByb3BlcnR5XTtcbiAgICAgIHJldHVybiB0aGlzLm9uQ2hhbmdlKGNoYW5nZVRvRW1pdCk7XG4gICAgfVxuXG4gICAgLy8gdHJ5IGFuZCBmaW5kIGEgbWF0Y2hpbmcgb3B0aW9uXG4gICAgY29uc3QgbWF0Y2hlZE9wdGlvbiA9IHRoaXMub3B0aW9ucy5maW5kKG9wdGlvbiA9PiB7XG4gICAgICBjb25zdCBtYXRjaGVzVmFsdWUgPSBvcHRpb25bdGhpcy52YWx1ZVByb3BlcnR5XSA9PT0gbmV3VmFsdWU7XG4gICAgICBjb25zdCBtYXRjaGVzVGl0bGUgPSBvcHRpb25bdGhpcy50aXRsZVByb3BlcnR5XSA9PT0gbmV3VmFsdWU7XG5cbiAgICAgIHJldHVybiBtYXRjaGVzVmFsdWUgfHwgbWF0Y2hlc1RpdGxlO1xuICAgIH0pO1xuXG4gICAgaWYgKG1hdGNoZWRPcHRpb24pIHtcbiAgICAgIHRoaXMuc2VsZWN0VmFsdWUgPSBtYXRjaGVkT3B0aW9uW3RoaXMudmFsdWVQcm9wZXJ0eV0/LnRvU3RyaW5nKCk7XG4gICAgICB0aGlzLnNlbGVjdFRpdGxlID0gbWF0Y2hlZE9wdGlvblt0aGlzLnRpdGxlUHJvcGVydHldPy50b1N0cmluZygpO1xuICAgICAgdGhpcy5zZWxlY3RJY29uID0gbWF0Y2hlZE9wdGlvblt0aGlzLmljb25Qcm9wZXJ0eV07XG5cbiAgICAgIGNvbnN0IGNoYW5nZVRvRW1pdCA9IHRoaXMudXNlRnVsbE9wdGlvbkFzVmFsdWUgPyBtYXRjaGVkT3B0aW9uIDogbWF0Y2hlZE9wdGlvblt0aGlzLnZhbHVlUHJvcGVydHldO1xuICAgICAgcmV0dXJuIHRoaXMub25DaGFuZ2UoY2hhbmdlVG9FbWl0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZmFsbCBiYWNrIHRvIHN0cmluZ2lmeVxuICAgICAgY29uc3Qgc3RyaW5naWZpZWQgPSBuZXdWYWx1ZS50b1N0cmluZygpIHx8ICcnO1xuICAgICAgdGhpcy5zZWxlY3RWYWx1ZSA9IHN0cmluZ2lmaWVkO1xuICAgICAgdGhpcy5zZWxlY3RUaXRsZSA9IHN0cmluZ2lmaWVkO1xuICAgICAgcmV0dXJuIHRoaXMub25DaGFuZ2Uoc3RyaW5naWZpZWQpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVJlc2V0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNob3dSZXNldCkge1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRyaWdnZXIuY2xvc2UoKTtcbiAgICB0aGlzLmZpbHRlclZhbHVlID0gJyc7XG4gICAgdGhpcy5maWx0ZXJDaGFuZ2VkLmVtaXQodGhpcy5maWx0ZXJWYWx1ZSk7XG4gIH1cblxuICBvbkZpbHRlckNoYW5nZWQodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyVmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmZpbHRlckNoYW5nZWQuZW1pdCh2YWx1ZSk7XG4gIH1cbn1cbiIsIjxkaXYgI3dyYXBwZXIgW25nU3R5bGVdPVwie3dpZHRoOiB3aWR0aCwgY3Vyc29yOiAncG9pbnRlcid9XCI+XG4gIDxmdy10ZXh0LWlucHV0XG4gICAgZndNZW51UmVnaXN0ZXJcbiAgICBbY2RrTWVudVRyaWdnZXJGb3JdPVwic2VsZWN0TWVudVwiXG4gICAgW3ZhbHVlXT1cInNlbGVjdFRpdGxlXCJcbiAgICBbbGVmdEljb25dPVwic3RhdGljSWNvbiB8fCBzZWxlY3RJY29uXCJcbiAgICBbcmlnaHRJY29uXT1cIihzZWxlY3RUaXRsZSYmc2hvd1Jlc2V0KT8nY2xvc2UtY2lyY2xlZCc6J2NoZXZyb24tZG93bidcIlxuICAgIChyaWdodEljb25BY3Rpb24pPVwiaGFuZGxlUmVzZXQoKVwiXG4gICAgW3VzZUFjdGlvbmFibGVJY29uc109XCJ0cnVlXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW3NpemVdPVwic2l6ZVwiXG4gICAgW2Vycm9yXT1cImVycm9yZWQgfHwgKGludmFsaWQgJiYgdG91Y2hlZClcIlxuICAgIChrZXl1cCk9XCJoYW5kbGVLZXlVcCgkZXZlbnQpXCJcbiAgICAoa2V5ZG93bik9XCJoYW5kbGVLZXlEb3duKCRldmVudClcIlxuICAgIHJlYWRPbmx5PVwidHJ1ZVwiPlxuICA8L2Z3LXRleHQtaW5wdXQ+XG4gIDxuZy10ZW1wbGF0ZSAjc2VsZWN0TWVudT5cbiAgICA8ZnctbWVudS1jb250YWluZXJcbiAgICAgIFtmaWx0ZXJUZXh0XT1cImZpbHRlclZhbHVlXCJcbiAgICAgICpuZ0lmPVwiIWRpc2FibGVkXCIgW3Nob3dGaWx0ZXJdPVwic2hvd0ZpbHRlclwiIFt3aWR0aF09XCJvcHRpb25zV2lkdGggfHwgd3JhcHBlci5vZmZzZXRXaWR0aCArICdweCdcIlxuICAgICAgW21heEhlaWdodF09XCJtYXhPcHRpb25zSGVpZ2h0XCIgW21pbkhlaWdodF09XCJtaW5PcHRpb25zSGVpZ2h0XCIgKGZpbHRlckNoYW5nZWQpPVwib25GaWx0ZXJDaGFuZ2VkKCRldmVudClcIj5cbiAgICAgIDxmdy1tZW51IFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFt2YWx1ZV09XCJzZWxlY3RWYWx1ZVwiIChjaGFuZ2UpPVwiaGFuZGxlQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVudUl0ZW1zLmxlbmd0aD09PTBcIj5cbiAgICAgICAgICA8ZnctbWVudS1pdGVtXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25zXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtW3RpdGxlUHJvcGVydHldPy50b1N0cmluZygpXCJcbiAgICAgICAgICAgIFtkZXNjcmlwdGlvbl09XCJpdGVtW2Rlc2NyaXB0aW9uUHJvcGVydHldXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ1c2VGdWxsT3B0aW9uQXNWYWx1ZSA/IEpTT04uc3RyaW5naWZ5KGl0ZW0pIDogaXRlbT8uW3ZhbHVlUHJvcGVydHldPy50b1N0cmluZygpXCJcbiAgICAgICAgICAgIFtpY29uXT1cIml0ZW1baWNvblByb3BlcnR5XVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvZnctbWVudS1pdGVtPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiAjbWVudUNvbnRlbnRXcmFwcGVyPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltmdy1tZW51LWl0ZW0sIGZ3LW1lbnUtc2VwYXJhdG9yLCBmdy1tZW51LWl0ZW0tZ3JvdXBdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZnctbWVudT5cbiAgICA8L2Z3LW1lbnUtY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
|
|
332
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2VsZWN0LW1lbnUvc2VsZWN0LW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2VsZWN0LW1lbnUvc2VsZWN0LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0RBQXdEO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBR0wsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLElBQUksRUFFSixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFLdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7Ozs7O0FBTzVFLE1BQU0sT0FBTyxxQkFBcUI7SUFDbUIsWUFBWSxDQUFDLEdBQVE7UUFDdEUsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBc0NELElBQ0ksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FB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QUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDcUIsT0FBTztzQkFBakMsU0FBUzt1QkFBQyxjQUFjO2dCQUNHLElBQUk7c0JBQS9CLFNBQVM7dUJBQUMsZUFBZTtnQkFDbUMsU0FBUztzQkFBckUsZUFBZTt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBRWpELE1BQU07c0JBQWYsTUFBTTtnQkFDWSxhQUFhO3NCQUEvQixNQUFNO2dCQVlILEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBDZGtNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9tZW51JztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTZWxmLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBJY29uVHlwZSB9IGZyb20gJy4uL2ljb24vaWNvbi50eXBlcyc7XG5pbXBvcnQgeyBGd01lbnVDb21wb25lbnQgfSBmcm9tICcuLi9tZW51L21lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IEZ3TWVudUl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9tZW51L21lbnUtaXRlbS9tZW51LWl0ZW0uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnctc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LW1lbnUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRndTZWxlY3RNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudC50YXJnZXQnXSkgb3V0c2lkZUNsaWNrKGV2dDogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2lzT3BlbiAmJiBldnQubm9kZU5hbWUgIT09ICdJTlBVVCcpIHtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB0aGlzLl9pc09wZW4gPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMudHJpZ2dlciAmJiB0aGlzLnRyaWdnZXIuaXNPcGVuKCkpIHtcbiAgICAgIHRoaXMuX2lzT3BlbiA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLy8gYmluZCBpdCBmb3IgdGhlIHRlbXBsYXRlXG4gIHB1YmxpYyBKU09OID0gSlNPTjtcblxuICBASW5wdXQoKSBvcHRpb25zOiBvYmplY3RbXSA9IFtdO1xuICBASW5wdXQoKSB2YWx1ZVByb3BlcnR5Pzogc3RyaW5nID0gJ3ZhbHVlJztcbiAgQElucHV0KCkgdXNlRnVsbE9wdGlvbkFzVmFsdWUgPSBmYWxzZTtcbiAgQElucHV0KCkgdGl0bGVQcm9wZXJ0eT86IHN0cmluZyA9ICd0aXRsZSc7XG4gIEBJbnB1dCgpIGljb25Qcm9wZXJ0eT86IHN0cmluZyA9ICdpY29uJztcbiAgQElucHV0KCkgc3RhdGljSWNvbj86IEljb25UeXBlO1xuICBASW5wdXQoKSBkZXNjcmlwdGlvblByb3BlcnR5Pzogc3RyaW5nID0gJ2Rlc2NyaXB0aW9uJztcbiAgQElucHV0KCkgc2hvd0ZpbHRlcj86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd1Jlc2V0PzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZXJyb3JlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZyA9ICcyMDBweCc7XG4gIEBJbnB1dCgpIG9wdGlvbnNXaWR0aD86IHN0cmluZztcbiAgQElucHV0KCkgbWluT3B0aW9uc0hlaWdodD86IHN0cmluZztcbiAgQElucHV0KCkgbWF4T3B0aW9uc0hlaWdodD86IHN0cmluZztcbiAgQElucHV0KCkgc2l6ZT86ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgPSAnbWVkaXVtJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWxlY3Qgc29tZXRoaW5nLi4uJztcbiAgQFZpZXdDaGlsZChDZGtNZW51VHJpZ2dlcikgdHJpZ2dlcjogQ2RrTWVudVRyaWdnZXI7XG4gIEBWaWV3Q2hpbGQoRndNZW51Q29tcG9uZW50KSBtZW51OiBGd01lbnVDb21wb25lbnQ7XG4gIEBDb250ZW50Q2hpbGRyZW4oRndNZW51SXRlbUNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBtZW51SXRlbXM6IFF1ZXJ5TGlzdDxGd01lbnVJdGVtQ29tcG9uZW50PjtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGZpbHRlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgc2VsZWN0VmFsdWU6IHN0cmluZyA9ICcnO1xuICBzZWxlY3RUaXRsZTogc3RyaW5nID0gJyc7XG4gIHNlbGVjdEljb246IHN0cmluZyA9ICcnO1xuICBmaWx0ZXJWYWx1ZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBfaXNPcGVuID0gZmFsc2U7XG4gIGZvY3VzZWQgPSAwO1xuICBpbkZvY3VzT3BlbiA9IGZhbHNlO1xuICBwcmVGb2N1c1ZhbHVlOiBhbnk7XG5cbiAgQElucHV0KClcbiAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgc2V0IHZhbHVlKG5ld1ZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKG5ld1ZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgX3ZhbHVlOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwcml2YXRlIG5nQ29udHJvbDogTmdDb250cm9sLFxuICApIHtcbiAgICAvLyB0aGlzIGlzIGp1c3QgYSBkaWZmZXJlbnQgd2F5IG9mIGJpbmRpbmcgdGhlIGNvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gICAgLy8gaXQgY2FuIGJlIGFjY2Vzc2VkIGluIHRoZSBjb21wb25lbnQgdGhpcyB3YXlcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50T3B0aW9ucyA9IGNoYW5nZXMub3B0aW9ucz8uY3VycmVudFZhbHVlO1xuXG4gICAgLy8gaWYgdGhlIG9wdGlvbnMgY2hhbmdlIGNoZWNrIGlmIHRoZSB0aXRsZSB3ZSBzaG91bGQgYmUgZGlzcGxheWluZyBoYXMgY2hhbmdlZFxuICAgIGlmIChjdXJyZW50T3B0aW9ucyAmJiBjdXJyZW50T3B0aW9ucyAhPT0gY2hhbmdlcy5vcHRpb25zPy5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZE9wdGlvbiA9IGN1cnJlbnRPcHRpb25zLmZpbmQoaXRlbSA9PiBpdGVtWyd2YWx1ZSddPy50b1N0cmluZygpID09PSB0aGlzLnNlbGVjdFZhbHVlKTtcblxuICAgICAgaWYgKHNlbGVjdGVkT3B0aW9uKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0VGl0bGUgPSBzZWxlY3RlZE9wdGlvblsndGl0bGUnXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMgfHwgKHRoaXMub3B0aW9ucy5sZW5ndGggPT09IDAgJiYgdGhpcy5tZW51SXRlbXMgJiYgdGhpcy5tZW51SXRlbXMubGVuZ3RoID4gMCkpIHtcbiAgICAgIHRoaXMub3B0aW9ucyA9IFtdO1xuICAgICAgdGhpcy5tZW51SXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgdGhpcy5vcHRpb25zLnB1c2goe1xuICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLnRvU3RyaW5nKCksXG4gICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUudG9TdHJpbmcoKSxcbiAgICAgICAgICBpY29uOiBpdGVtLmljb24sXG4gICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0uZGVzY3JpcHRpb24sXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzdWIgPSBpdGVtLmNsaWNrLnN1YnNjcmliZSh2YWx1ZSA9PiB0aGlzLm1lbnUud3JpdGVWYWx1ZSh2YWx1ZSkpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWIpO1xuICAgICAgICBpZiAoaXRlbS52YWx1ZS50b1N0cmluZygpID09PSB0aGlzLnNlbGVjdFZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RUaXRsZSA9IGl0ZW0udGl0bGUudG9TdHJpbmcoKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdEljb24gPSBpdGVtLmljb247XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGZvciAoY29uc3Qgc3Vic2NyaXB0aW9uIG9mIHRoaXMuc3Vic2NyaXB0aW9ucykge1xuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmdDb250cm9sPy5pbnZhbGlkO1xuICB9XG5cbiAgZ2V0IHRvdWNoZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmdDb250cm9sPy50b3VjaGVkO1xuICB9XG5cbiAgb25DaGFuZ2UobmV3VmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX3ZhbHVlID0gdHlwZW9mIG5ld1ZhbHVlID09PSAnb2JqZWN0JyA/IEpTT04uc3RyaW5naWZ5KG5ld1ZhbHVlKSA6IG5ld1ZhbHVlO1xuICAgIHRoaXMuY2hhbmdlLmVtaXQobmV3VmFsdWUpO1xuICAgIHRoaXMuZXh0ZXJuYWxPbkNoYW5nZT8uKG5ld1ZhbHVlKTtcbiAgfTtcblxuICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7XG4gIH07XG5cbiAgZXh0ZXJuYWxPbkNoYW5nZTtcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLmV4dGVybmFsT25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB7fSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEByeC1hbmd1bGFyL25vLWV4cGxpY2l0LWNoYW5nZS1kZXRlY3Rpb24tYXBpc1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBoYW5kbGVDbGljayhlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuXG4gICAgaWYgKHRoaXMuc2VsZWN0VmFsdWUgPT09IGUpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy51c2VGdWxsT3B0aW9uQXNWYWx1ZSkge1xuICAgICAgY29uc3QgcGFyc2VkVmFsdWUgPSBKU09OLnBhcnNlKGUpO1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZShwYXJzZWRWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUoZSk7XG4gICAgfVxuXG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgbW92ZUZvY3VzZWQoZGlyZWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xuICAgICAgY2FzZSAnZG93bic6IHtcbiAgICAgICAgdGhpcy5mb2N1c2VkKys7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzZWQgPj0gdGhpcy5vcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuZm9jdXNlZCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICd1cCc6IHtcbiAgICAgICAgdGhpcy5mb2N1c2VkLS07XG4gICAgICAgIGlmICh0aGlzLmZvY3VzZWQgPCAwKSB7XG4gICAgICAgICAgdGhpcy5mb2N1c2VkID0gdGhpcy5vcHRpb25zLmxlbmd0aCAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50cmlnZ2VyLmlzT3BlbigpKSB7XG4gICAgICBpZiAodGhpcy5pbkZvY3VzT3Blbikge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgIHRoaXMubW92ZUZvY3VzZWQoJ2Rvd24nKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMub3B0aW9uc1t0aGlzLmZvY3VzZWRdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICAgICAgICB0aGlzLm1vdmVGb2N1c2VkKCd1cCcpO1xuICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUodGhpcy5vcHRpb25zW3RoaXMuZm9jdXNlZF0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdUYWInKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgIHRoaXMuaW5Gb2N1c09wZW4gPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMucHJlRm9jdXNWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICB0aGlzLmluRm9jdXNPcGVuID0gZmFsc2U7XG4gICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnVzZUZ1bGxPcHRpb25Bc1ZhbHVlID8gdGhpcy5KU09OLnBhcnNlKHRoaXMudmFsdWUpIDogdGhpcy52YWx1ZTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbkZvY3VzT3BlbiA9IHRydWU7XG4gICAgICAgIHRoaXMucHJlRm9jdXNWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgdGhpcy5pbkZvY3VzT3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLnByZUZvY3VzVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUtleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHJpZ2dlci5pc09wZW4oKSkge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB0aGlzLmluRm9jdXNPcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUodGhpcy5wcmVGb2N1c1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuc2hvd1Jlc2V0KSB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVSZXNldCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICB1cGRhdGVWYWx1ZShuZXdWYWx1ZTogdW5rbm93bik6IHZvaWQge1xuXG4gICAgLy8gZG8gaG91c2VrZWVwaW5nIGZpcnN0XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcblxuICAgIC8vIG51bGwgZ3VhcmRcbiAgICBpZiAoIW5ld1ZhbHVlKSB7XG4gICAgICB0aGlzLnNlbGVjdFZhbHVlID0gJyc7XG4gICAgICB0aGlzLnNlbGVjdFRpdGxlID0gJyc7XG4gICAgICB0aGlzLnNlbGVjdEljb24gPSAnJztcbiAgICAgIHJldHVybiB0aGlzLm9uQ2hhbmdlKG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG5ld1ZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgdGhpcy5zZWxlY3RWYWx1ZSA9IG5ld1ZhbHVlPy5bdGhpcy52YWx1ZVByb3BlcnR5XT8udG9TdHJpbmcoKTtcbiAgICAgIHRoaXMuc2VsZWN0VGl0bGUgPSBuZXdWYWx1ZT8uW3RoaXMudGl0bGVQcm9wZXJ0eV0/LnRvU3RyaW5nKCk7XG4gICAgICB0aGlzLnNlbGVjdEljb24gPSBuZXdWYWx1ZT8uW3RoaXMuaWNvblByb3BlcnR5XTtcblxuICAgICAgY29uc3QgY2hhbmdlVG9FbWl0ID0gdGhpcy51c2VGdWxsT3B0aW9uQXNWYWx1ZSA/IG5ld1ZhbHVlIDogbmV3VmFsdWVbdGhpcy52YWx1ZVByb3BlcnR5XTtcbiAgICAgIHJldHVybiB0aGlzLm9uQ2hhbmdlKGNoYW5nZVRvRW1pdCk7XG4gICAgfVxuXG4gICAgLy8gdHJ5IGFuZCBmaW5kIGEgbWF0Y2hpbmcgb3B0aW9uXG4gICAgY29uc3QgbWF0Y2hlZE9wdGlvbiA9IHRoaXMub3B0aW9ucy5maW5kKG9wdGlvbiA9PiB7XG4gICAgICBjb25zdCBtYXRjaGVzVmFsdWUgPSBvcHRpb25bdGhpcy52YWx1ZVByb3BlcnR5XSA9PT0gbmV3VmFsdWU7XG4gICAgICBjb25zdCBtYXRjaGVzVGl0bGUgPSBvcHRpb25bdGhpcy50aXRsZVByb3BlcnR5XSA9PT0gbmV3VmFsdWU7XG5cbiAgICAgIHJldHVybiBtYXRjaGVzVmFsdWUgfHwgbWF0Y2hlc1RpdGxlO1xuICAgIH0pO1xuXG4gICAgaWYgKG1hdGNoZWRPcHRpb24pIHtcbiAgICAgIHRoaXMuc2VsZWN0VmFsdWUgPSBtYXRjaGVkT3B0aW9uW3RoaXMudmFsdWVQcm9wZXJ0eV0/LnRvU3RyaW5nKCk7XG4gICAgICB0aGlzLnNlbGVjdFRpdGxlID0gbWF0Y2hlZE9wdGlvblt0aGlzLnRpdGxlUHJvcGVydHldPy50b1N0cmluZygpO1xuICAgICAgdGhpcy5zZWxlY3RJY29uID0gbWF0Y2hlZE9wdGlvblt0aGlzLmljb25Qcm9wZXJ0eV07XG5cbiAgICAgIGNvbnN0IGNoYW5nZVRvRW1pdCA9IHRoaXMudXNlRnVsbE9wdGlvbkFzVmFsdWUgPyBtYXRjaGVkT3B0aW9uIDogbWF0Y2hlZE9wdGlvblt0aGlzLnZhbHVlUHJvcGVydHldO1xuICAgICAgcmV0dXJuIHRoaXMub25DaGFuZ2UoY2hhbmdlVG9FbWl0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZmFsbCBiYWNrIHRvIHN0cmluZ2lmeVxuICAgICAgY29uc3Qgc3RyaW5naWZpZWQgPSBuZXdWYWx1ZS50b1N0cmluZygpIHx8ICcnO1xuICAgICAgdGhpcy5zZWxlY3RWYWx1ZSA9IHN0cmluZ2lmaWVkO1xuICAgICAgdGhpcy5zZWxlY3RUaXRsZSA9IHN0cmluZ2lmaWVkO1xuICAgICAgcmV0dXJuIHRoaXMub25DaGFuZ2Uoc3RyaW5naWZpZWQpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVJlc2V0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNob3dSZXNldCkge1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRyaWdnZXIuY2xvc2UoKTtcbiAgICB0aGlzLmZpbHRlclZhbHVlID0gJyc7XG4gICAgdGhpcy5maWx0ZXJDaGFuZ2VkLmVtaXQodGhpcy5maWx0ZXJWYWx1ZSk7XG4gIH1cblxuICBvbkZpbHRlckNoYW5nZWQodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyVmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmZpbHRlckNoYW5nZWQuZW1pdCh2YWx1ZSk7XG4gIH1cbn1cbiIsIjxkaXYgI3dyYXBwZXIgW25nU3R5bGVdPVwie3dpZHRoOiB3aWR0aCwgY3Vyc29yOiAncG9pbnRlcid9XCI+XG4gIDxmdy10ZXh0LWlucHV0XG4gICAgZndNZW51UmVnaXN0ZXJcbiAgICBbY2RrTWVudVRyaWdnZXJGb3JdPVwic2VsZWN0TWVudVwiXG4gICAgW3ZhbHVlXT1cInNlbGVjdFRpdGxlXCJcbiAgICBbbGVmdEljb25dPVwic3RhdGljSWNvbiB8fCBzZWxlY3RJY29uXCJcbiAgICBbcmlnaHRJY29uXT1cIihzZWxlY3RUaXRsZSYmc2hvd1Jlc2V0KT8nY2xvc2UtY2lyY2xlZCc6J2NoZXZyb24tZG93bidcIlxuICAgIChyaWdodEljb25BY3Rpb24pPVwiaGFuZGxlUmVzZXQoKVwiXG4gICAgW3VzZUFjdGlvbmFibGVJY29uc109XCJ0cnVlXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW3NpemVdPVwic2l6ZVwiXG4gICAgW2Vycm9yXT1cImVycm9yZWQgfHwgKGludmFsaWQgJiYgdG91Y2hlZClcIlxuICAgIChrZXl1cCk9XCJoYW5kbGVLZXlVcCgkZXZlbnQpXCJcbiAgICAoa2V5ZG93bik9XCJoYW5kbGVLZXlEb3duKCRldmVudClcIlxuICAgIHJlYWRPbmx5PVwidHJ1ZVwiPlxuICA8L2Z3LXRleHQtaW5wdXQ+XG4gIDxuZy10ZW1wbGF0ZSAjc2VsZWN0TWVudT5cbiAgICA8ZnctbWVudS1jb250YWluZXJcbiAgICAgIFtmaWx0ZXJUZXh0XT1cImZpbHRlclZhbHVlXCJcbiAgICAgICpuZ0lmPVwiIWRpc2FibGVkXCIgW3Nob3dGaWx0ZXJdPVwic2hvd0ZpbHRlclwiIFt3aWR0aF09XCJvcHRpb25zV2lkdGggfHwgd3JhcHBlci5vZmZzZXRXaWR0aCArICdweCdcIlxuICAgICAgW21heEhlaWdodF09XCJtYXhPcHRpb25zSGVpZ2h0XCIgW21pbkhlaWdodF09XCJtaW5PcHRpb25zSGVpZ2h0XCIgKGZpbHRlckNoYW5nZWQpPVwib25GaWx0ZXJDaGFuZ2VkKCRldmVudClcIj5cbiAgICAgIDxmdy1tZW51IFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFt2YWx1ZV09XCJzZWxlY3RWYWx1ZVwiIChjaGFuZ2UpPVwiaGFuZGxlQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVudUl0ZW1zLmxlbmd0aD09PTBcIj5cbiAgICAgICAgICA8ZnctbWVudS1pdGVtXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25zXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtW3RpdGxlUHJvcGVydHldPy50b1N0cmluZygpXCJcbiAgICAgICAgICAgIFtkZXNjcmlwdGlvbl09XCJpdGVtW2Rlc2NyaXB0aW9uUHJvcGVydHldXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ1c2VGdWxsT3B0aW9uQXNWYWx1ZSA/IEpTT04uc3RyaW5naWZ5KGl0ZW0pIDogaXRlbT8uW3ZhbHVlUHJvcGVydHldPy50b1N0cmluZygpXCJcbiAgICAgICAgICAgIFtpY29uXT1cIml0ZW1baWNvblByb3BlcnR5XVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvZnctbWVudS1pdGVtPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiAjbWVudUNvbnRlbnRXcmFwcGVyPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltmdy1tZW51LWl0ZW0sIGZ3LW1lbnUtc2VwYXJhdG9yLCBmdy1tZW51LWl0ZW0tZ3JvdXBdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZnctbWVudT5cbiAgICA8L2Z3LW1lbnUtY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
|