UNPKG

@nova-ui/bits

Version:

SolarWinds Nova Framework

67 lines 23.6 kB
// © 2022 SolarWinds Worldwide, LLC. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to // deal in the Software without restriction, including without limitation the // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or // sell copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. import { Directionality } from "@angular/cdk/bidi"; import { CdkStepper } from "@angular/cdk/stepper"; import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, Optional, ViewEncapsulation, } from "@angular/core"; import { WizardDirective } from "../wizard.directive"; import * as i0 from "@angular/core"; import * as i1 from "@angular/cdk/bidi"; import * as i2 from "@angular/common"; import * as i3 from "../wizard-step-header/wizard-step-header.component"; import * as i4 from "../wizard-footer/wizard-footer.component"; /** ignore should be removed in scope of the NUI-6099 */ /** @ignore */ export class WizardVerticalComponent extends WizardDirective { static { this.ngAcceptInputTypeEditable = undefined; } static { this.ngAcceptInputTypeOptional = undefined; } static { this.ngAcceptInputTypeCompleted = undefined; } static { this.ngAcceptInputTypeHasError = undefined; } get selectedIndex() { return super.selectedIndex; } set selectedIndex(value) { super.selectedIndex = value; } constructor(dir, changeDetectorRef, elementRef) { super(dir, changeDetectorRef, elementRef); this["_orientation"] = "vertical"; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WizardVerticalComponent, deps: [{ token: i1.Directionality, optional: true }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: WizardVerticalComponent, selector: "nui-wizard-vertical", inputs: { selectedIndex: "selectedIndex" }, host: { attributes: { "aria-orientation": "vertical", "role": "tablist" }, classAttribute: "nui-wizard-vertical-layout" }, providers: [ { provide: WizardDirective, useExisting: WizardVerticalComponent }, { provide: CdkStepper, useExisting: WizardVerticalComponent }, ], exportAs: ["wizardVertical"], usesInheritance: true, ngImport: i0, template: "<div\n class=\"nui-wizard-vertical-header-container\"\n *ngFor=\"let step of steps; let i = index; let isLast = last\"\n>\n <nui-wizard-step-header\n class=\"nui-wizard-vertical-header\"\n (click)=\"step.select()\"\n (keydown)=\"_onKeydown($event)\"\n [tabIndex]=\"_getFocusIndex() === i ? 0 : -1\"\n [id]=\"labelIds[i]\"\n [attr.aria-posinset]=\"i + 1\"\n [attr.aria-setsize]=\"steps.length\"\n [attr.aria-controls]=\"stepContentIds[i]\"\n [attr.aria-selected]=\"selectedIndex === i\"\n [attr.aria-label]=\"step.ariaLabel || null\"\n [attr.aria-labelledby]=\"\n !step.ariaLabel && step.ariaLabelledby ? step.ariaLabelledby : null\n \"\n [index]=\"i\"\n [label]=\"step.stepLabel || step.label\"\n [selected]=\"selectedIndex === i\"\n [active]=\"step.completed || selectedIndex === i || !linear\"\n [errorMessage]=\"step.errorMessage\"\n >\n </nui-wizard-step-header>\n\n <div\n class=\"nui-wizard-vertical-content-container\"\n [class.nui-wizard-vertical-line]=\"!isLast\"\n >\n <div\n class=\"nui-wizard-vertical-content\"\n role=\"tabpanel\"\n [attr.tabindex]=\"selectedIndex === i ? 0 : null\"\n [id]=\"_getStepContentId(i)\"\n [attr.aria-labelledby]=\"_getStepLabelId(i)\"\n [attr.aria-expanded]=\"selectedIndex === i\"\n >\n <div class=\"nui-wizard-vertical-content\">\n <ng-container [ngTemplateOutlet]=\"step.content\"></ng-container>\n </div>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"selected.stepFooter\" class=\"nui-wizard-vertical-footer-container\">\n <wizard-footer [footer]=\"selected.stepFooter\"></wizard-footer>\n</div>\n", styles: [".nui-wizard-vertical,.nui-wizard-horizontal{display:block}.nui-dialog .nui-wizard-vertical,.nui-dialog .nui-wizard-horizontal{padding-top:0}.nui-dialog .nui-wizard-vertical .nui-wizard-horizontal-header-container,.nui-dialog .nui-wizard-horizontal .nui-wizard-horizontal-header-container{border-top:none}.nui-wizard-horizontal-header{display:flex;min-height:32px;max-height:72px;align-items:center}.nui-popover-container__content .nui-wizard-horizontal-header{flex-flow:row-reverse;justify-content:flex-end;padding:0;min-height:17px}[dir=rtl] .nui-wizard-horizontal-header .nui-wizard-step-header-icon{margin-right:0;margin-left:0}.nui-popover-container__content .nui-wizard-horizontal-header .nui-wizard-step-header-icon{margin-right:5px}.nui-wizard-step-header__label-position--top .nui-wizard-horizontal-header{flex-direction:column;height:auto}.nui-wizard-step-header__label-position--top .nui-wizard-horizontal-header .nui-wizard-step-header-icon{margin-right:0;margin-left:0}.nui-wizard-horizontal-header-container{display:flex;justify-content:center;text-align:center;padding:10px;border:1px solid;border-left:none;border-right:none;overflow:hidden;white-space:nowrap;align-items:center;background-color:var(--nui-color-bg-secondary,#fafafa);border-color:var(--nui-color-line-default,#d9d9d9);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.nui-wizard-horizontal-header-wrapper{position:relative}.nui-popover-container__content .nui-wizard-horizontal-header-wrapper:not(:last-child){margin-bottom:5px}.nui-popover-container__content .nui-wizard-horizontal-header-wrapper:hover{background-color:var(--nui-color-bg-secondary,#fafafa)}.nui-wizard-horizontal__step-connector-line{border-top-width:2px;border-top-style:solid;border-color:var(--nui-color-line-default,#d9d9d9)}.nui-wizard-horizontal__step-connector-line--completed{border-color:var(--nui-color-text-link,#0079aa)}.nui-wizard-step-header__label-position--top .nui-wizard-horizontal__step-connector-line{bottom:8px;right:80.5px;width:129px;position:absolute}.nui-popover-container__content .nui-wizard-horizontal__step-connector-line{position:absolute;top:-6px;left:7px;height:6px;border-left-width:1px;border-left-style:solid;border-top:none;border-bottom:none;border-right:none}.nui-wizard-horizontal-content{outline:0}.nui-wizard-horizontal-content[aria-expanded=false]{height:0;overflow:hidden}.nui-wizard-horizontal-content-container{overflow:hidden}.nui-wizard-vertical-content{outline:0;overflow:hidden}.nui-wizard-vertical-content-container{margin-left:36px;border:0;position:relative}[dir=rtl] .nui-wizard-vertical-content-container{margin-left:0;margin-right:36px}.nui-wizard-vertical-line:before{content:\"\";position:absolute;left:0;border-left-width:2px;border-left-style:solid}[dir=rtl] .nui-wizard-vertical-line:before{left:auto;right:0}.nui-step:last-child .nui-wizard-vertical-content-container{border:none}\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.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.WizardStepHeaderComponent, selector: "nui-wizard-step-header", inputs: ["stepStateConfig", "label", "optionalLabel", "errorMessage", "index", "selected", "active", "step"] }, { kind: "component", type: i4.WizardFooterComponent, selector: "wizard-footer", inputs: ["footer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WizardVerticalComponent, decorators: [{ type: Component, args: [{ selector: "nui-wizard-vertical", exportAs: "wizardVertical", host: { class: "nui-wizard-vertical-layout", "aria-orientation": "vertical", role: "tablist", }, providers: [ { provide: WizardDirective, useExisting: WizardVerticalComponent }, { provide: CdkStepper, useExisting: WizardVerticalComponent }, ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"nui-wizard-vertical-header-container\"\n *ngFor=\"let step of steps; let i = index; let isLast = last\"\n>\n <nui-wizard-step-header\n class=\"nui-wizard-vertical-header\"\n (click)=\"step.select()\"\n (keydown)=\"_onKeydown($event)\"\n [tabIndex]=\"_getFocusIndex() === i ? 0 : -1\"\n [id]=\"labelIds[i]\"\n [attr.aria-posinset]=\"i + 1\"\n [attr.aria-setsize]=\"steps.length\"\n [attr.aria-controls]=\"stepContentIds[i]\"\n [attr.aria-selected]=\"selectedIndex === i\"\n [attr.aria-label]=\"step.ariaLabel || null\"\n [attr.aria-labelledby]=\"\n !step.ariaLabel && step.ariaLabelledby ? step.ariaLabelledby : null\n \"\n [index]=\"i\"\n [label]=\"step.stepLabel || step.label\"\n [selected]=\"selectedIndex === i\"\n [active]=\"step.completed || selectedIndex === i || !linear\"\n [errorMessage]=\"step.errorMessage\"\n >\n </nui-wizard-step-header>\n\n <div\n class=\"nui-wizard-vertical-content-container\"\n [class.nui-wizard-vertical-line]=\"!isLast\"\n >\n <div\n class=\"nui-wizard-vertical-content\"\n role=\"tabpanel\"\n [attr.tabindex]=\"selectedIndex === i ? 0 : null\"\n [id]=\"_getStepContentId(i)\"\n [attr.aria-labelledby]=\"_getStepLabelId(i)\"\n [attr.aria-expanded]=\"selectedIndex === i\"\n >\n <div class=\"nui-wizard-vertical-content\">\n <ng-container [ngTemplateOutlet]=\"step.content\"></ng-container>\n </div>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"selected.stepFooter\" class=\"nui-wizard-vertical-footer-container\">\n <wizard-footer [footer]=\"selected.stepFooter\"></wizard-footer>\n</div>\n", styles: [".nui-wizard-vertical,.nui-wizard-horizontal{display:block}.nui-dialog .nui-wizard-vertical,.nui-dialog .nui-wizard-horizontal{padding-top:0}.nui-dialog .nui-wizard-vertical .nui-wizard-horizontal-header-container,.nui-dialog .nui-wizard-horizontal .nui-wizard-horizontal-header-container{border-top:none}.nui-wizard-horizontal-header{display:flex;min-height:32px;max-height:72px;align-items:center}.nui-popover-container__content .nui-wizard-horizontal-header{flex-flow:row-reverse;justify-content:flex-end;padding:0;min-height:17px}[dir=rtl] .nui-wizard-horizontal-header .nui-wizard-step-header-icon{margin-right:0;margin-left:0}.nui-popover-container__content .nui-wizard-horizontal-header .nui-wizard-step-header-icon{margin-right:5px}.nui-wizard-step-header__label-position--top .nui-wizard-horizontal-header{flex-direction:column;height:auto}.nui-wizard-step-header__label-position--top .nui-wizard-horizontal-header .nui-wizard-step-header-icon{margin-right:0;margin-left:0}.nui-wizard-horizontal-header-container{display:flex;justify-content:center;text-align:center;padding:10px;border:1px solid;border-left:none;border-right:none;overflow:hidden;white-space:nowrap;align-items:center;background-color:var(--nui-color-bg-secondary,#fafafa);border-color:var(--nui-color-line-default,#d9d9d9);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.nui-wizard-horizontal-header-wrapper{position:relative}.nui-popover-container__content .nui-wizard-horizontal-header-wrapper:not(:last-child){margin-bottom:5px}.nui-popover-container__content .nui-wizard-horizontal-header-wrapper:hover{background-color:var(--nui-color-bg-secondary,#fafafa)}.nui-wizard-horizontal__step-connector-line{border-top-width:2px;border-top-style:solid;border-color:var(--nui-color-line-default,#d9d9d9)}.nui-wizard-horizontal__step-connector-line--completed{border-color:var(--nui-color-text-link,#0079aa)}.nui-wizard-step-header__label-position--top .nui-wizard-horizontal__step-connector-line{bottom:8px;right:80.5px;width:129px;position:absolute}.nui-popover-container__content .nui-wizard-horizontal__step-connector-line{position:absolute;top:-6px;left:7px;height:6px;border-left-width:1px;border-left-style:solid;border-top:none;border-bottom:none;border-right:none}.nui-wizard-horizontal-content{outline:0}.nui-wizard-horizontal-content[aria-expanded=false]{height:0;overflow:hidden}.nui-wizard-horizontal-content-container{overflow:hidden}.nui-wizard-vertical-content{outline:0;overflow:hidden}.nui-wizard-vertical-content-container{margin-left:36px;border:0;position:relative}[dir=rtl] .nui-wizard-vertical-content-container{margin-left:0;margin-right:36px}.nui-wizard-vertical-line:before{content:\"\";position:absolute;left:0;border-left-width:2px;border-left-style:solid}[dir=rtl] .nui-wizard-vertical-line:before{left:auto;right:0}.nui-step:last-child .nui-wizard-vertical-content-container{border:none}\n"] }] }], ctorParameters: () => [{ type: i1.Directionality, decorators: [{ type: Optional }] }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { selectedIndex: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLXZlcnRpY2FsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvd2l6YXJkLXYyL3dpemFyZC12ZXJ0aWNhbC93aXphcmQtdmVydGljYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi93aXphcmQtdjIvd2l6YXJkLXZlcnRpY2FsL3dpemFyZC12ZXJ0aWNhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5REFBeUQ7QUFDekQsRUFBRTtBQUNGLCtFQUErRTtBQUMvRSw0RUFBNEU7QUFDNUUsOEVBQThFO0FBQzlFLCtFQUErRTtBQUMvRSw4RUFBOEU7QUFDOUUsNERBQTREO0FBQzVELEVBQUU7QUFDRiw2RUFBNkU7QUFDN0UsdURBQXVEO0FBQ3ZELEVBQUU7QUFDRiw2RUFBNkU7QUFDN0UsNEVBQTRFO0FBQzVFLCtFQUErRTtBQUMvRSwwRUFBMEU7QUFDMUUsaUZBQWlGO0FBQ2pGLDZFQUE2RTtBQUM3RSxpQkFBaUI7QUFFakIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFDTCxRQUFRLEVBQ1IsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBRXRELHlEQUF5RDtBQUN6RCxjQUFjO0FBa0JkLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxlQUFlO2FBQ2pELDhCQUF5QixHQUFpQixTQUFTLEFBQTFCLENBQTJCO2FBQ3BELDhCQUF5QixHQUFpQixTQUFTLEFBQTFCLENBQTJCO2FBQ3BELCtCQUEwQixHQUFpQixTQUFTLEFBQTFCLENBQTJCO2FBQ3JELDhCQUF5QixHQUFpQixTQUFTLEFBQTFCLENBQTJCO0lBRTNELElBQVcsYUFBYTtRQUNwQixPQUFPLEtBQUssQ0FBQyxhQUFhLENBQUM7SUFDL0IsQ0FBQztJQUNELElBQ1csYUFBYSxDQUFDLEtBQWE7UUFDbEMsS0FBSyxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQ2dCLEdBQW1CLEVBQy9CLGlCQUFvQyxFQUNwQyxVQUFtQztRQUVuQyxLQUFLLENBQUMsR0FBRyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxVQUFVLENBQUM7SUFDdEMsQ0FBQzsrR0FyQlEsdUJBQXVCO21HQUF2Qix1QkFBdUIscU5BUHJCO1lBQ1AsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSx1QkFBdUIsRUFBRTtZQUNsRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLHVCQUF1QixFQUFFO1NBQ2hFLCtFQ2xETCw0eURBZ0RBOzs0RkRNYSx1QkFBdUI7a0JBakJuQyxTQUFTOytCQUNJLHFCQUFxQixZQUNyQixnQkFBZ0IsUUFHcEI7d0JBQ0YsS0FBSyxFQUFFLDRCQUE0Qjt3QkFDbkMsa0JBQWtCLEVBQUUsVUFBVTt3QkFDOUIsSUFBSSxFQUFFLFNBQVM7cUJBQ2xCLGFBQ1U7d0JBQ1AsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcseUJBQXlCLEVBQUU7d0JBQ2xFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLHlCQUF5QixFQUFFO3FCQUNoRSxpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNOzswQkFpQjFDLFFBQVE7a0dBTEYsYUFBYTtzQkFEdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIMKpIDIwMjIgU29sYXJXaW5kcyBXb3JsZHdpZGUsIExMQy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyAgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG9cbi8vICBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZVxuLy8gIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vclxuLy8gIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyAgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vICBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vICBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vICBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyAgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vICBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyAgVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gXCJAYW5ndWxhci9jZGsvYmlkaVwiO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9jb2VyY2lvblwiO1xuaW1wb3J0IHsgQ2RrU3RlcHBlciB9IGZyb20gXCJAYW5ndWxhci9jZGsvc3RlcHBlclwiO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbnB1dCxcbiAgICBPcHRpb25hbCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHsgV2l6YXJkRGlyZWN0aXZlIH0gZnJvbSBcIi4uL3dpemFyZC5kaXJlY3RpdmVcIjtcblxuLyoqICBpZ25vcmUgc2hvdWxkIGJlIHJlbW92ZWQgaW4gc2NvcGUgb2YgdGhlIE5VSS02MDk5ICovXG4vKiogQGlnbm9yZSAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwibnVpLXdpemFyZC12ZXJ0aWNhbFwiLFxuICAgIGV4cG9ydEFzOiBcIndpemFyZFZlcnRpY2FsXCIsXG4gICAgdGVtcGxhdGVVcmw6IFwid2l6YXJkLXZlcnRpY2FsLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuLi93aXphcmQuY29tcG9uZW50Lmxlc3NcIl0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogXCJudWktd2l6YXJkLXZlcnRpY2FsLWxheW91dFwiLFxuICAgICAgICBcImFyaWEtb3JpZW50YXRpb25cIjogXCJ2ZXJ0aWNhbFwiLFxuICAgICAgICByb2xlOiBcInRhYmxpc3RcIixcbiAgICB9LFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IFdpemFyZERpcmVjdGl2ZSwgdXNlRXhpc3Rpbmc6IFdpemFyZFZlcnRpY2FsQ29tcG9uZW50IH0sXG4gICAgICAgIHsgcHJvdmlkZTogQ2RrU3RlcHBlciwgdXNlRXhpc3Rpbmc6IFdpemFyZFZlcnRpY2FsQ29tcG9uZW50IH0sXG4gICAgXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBXaXphcmRWZXJ0aWNhbENvbXBvbmVudCBleHRlbmRzIFdpemFyZERpcmVjdGl2ZSB7XG4gICAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlRWRpdGFibGU6IEJvb2xlYW5JbnB1dCA9IHVuZGVmaW5lZDtcbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVPcHRpb25hbDogQm9vbGVhbklucHV0ID0gdW5kZWZpbmVkO1xuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZUNvbXBsZXRlZDogQm9vbGVhbklucHV0ID0gdW5kZWZpbmVkO1xuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZUhhc0Vycm9yOiBCb29sZWFuSW5wdXQgPSB1bmRlZmluZWQ7XG5cbiAgICBwdWJsaWMgZ2V0IHNlbGVjdGVkSW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLnNlbGVjdGVkSW5kZXg7XG4gICAgfVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBzZWxlY3RlZEluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgc3VwZXIuc2VsZWN0ZWRJbmRleCA9IHZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBkaXI6IERpcmVjdGlvbmFsaXR5LFxuICAgICAgICBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGRpciwgY2hhbmdlRGV0ZWN0b3JSZWYsIGVsZW1lbnRSZWYpO1xuICAgICAgICB0aGlzW1wiX29yaWVudGF0aW9uXCJdID0gXCJ2ZXJ0aWNhbFwiO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cIm51aS13aXphcmQtdmVydGljYWwtaGVhZGVyLWNvbnRhaW5lclwiXG4gICAgKm5nRm9yPVwibGV0IHN0ZXAgb2Ygc3RlcHM7IGxldCBpID0gaW5kZXg7IGxldCBpc0xhc3QgPSBsYXN0XCJcbj5cbiAgICA8bnVpLXdpemFyZC1zdGVwLWhlYWRlclxuICAgICAgICBjbGFzcz1cIm51aS13aXphcmQtdmVydGljYWwtaGVhZGVyXCJcbiAgICAgICAgKGNsaWNrKT1cInN0ZXAuc2VsZWN0KClcIlxuICAgICAgICAoa2V5ZG93bik9XCJfb25LZXlkb3duKCRldmVudClcIlxuICAgICAgICBbdGFiSW5kZXhdPVwiX2dldEZvY3VzSW5kZXgoKSA9PT0gaSA/IDAgOiAtMVwiXG4gICAgICAgIFtpZF09XCJsYWJlbElkc1tpXVwiXG4gICAgICAgIFthdHRyLmFyaWEtcG9zaW5zZXRdPVwiaSArIDFcIlxuICAgICAgICBbYXR0ci5hcmlhLXNldHNpemVdPVwic3RlcHMubGVuZ3RoXCJcbiAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJzdGVwQ29udGVudElkc1tpXVwiXG4gICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwic2VsZWN0ZWRJbmRleCA9PT0gaVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwic3RlcC5hcmlhTGFiZWwgfHwgbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJcbiAgICAgICAgICAgICFzdGVwLmFyaWFMYWJlbCAmJiBzdGVwLmFyaWFMYWJlbGxlZGJ5ID8gc3RlcC5hcmlhTGFiZWxsZWRieSA6IG51bGxcbiAgICAgICAgXCJcbiAgICAgICAgW2luZGV4XT1cImlcIlxuICAgICAgICBbbGFiZWxdPVwic3RlcC5zdGVwTGFiZWwgfHwgc3RlcC5sYWJlbFwiXG4gICAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZEluZGV4ID09PSBpXCJcbiAgICAgICAgW2FjdGl2ZV09XCJzdGVwLmNvbXBsZXRlZCB8fCBzZWxlY3RlZEluZGV4ID09PSBpIHx8ICFsaW5lYXJcIlxuICAgICAgICBbZXJyb3JNZXNzYWdlXT1cInN0ZXAuZXJyb3JNZXNzYWdlXCJcbiAgICA+XG4gICAgPC9udWktd2l6YXJkLXN0ZXAtaGVhZGVyPlxuXG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm51aS13aXphcmQtdmVydGljYWwtY29udGVudC1jb250YWluZXJcIlxuICAgICAgICBbY2xhc3MubnVpLXdpemFyZC12ZXJ0aWNhbC1saW5lXT1cIiFpc0xhc3RcIlxuICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJudWktd2l6YXJkLXZlcnRpY2FsLWNvbnRlbnRcIlxuICAgICAgICAgICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cInNlbGVjdGVkSW5kZXggPT09IGkgPyAwIDogbnVsbFwiXG4gICAgICAgICAgICBbaWRdPVwiX2dldFN0ZXBDb250ZW50SWQoaSlcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIl9nZXRTdGVwTGFiZWxJZChpKVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cInNlbGVjdGVkSW5kZXggPT09IGlcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibnVpLXdpemFyZC12ZXJ0aWNhbC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLmNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwic2VsZWN0ZWQuc3RlcEZvb3RlclwiIGNsYXNzPVwibnVpLXdpemFyZC12ZXJ0aWNhbC1mb290ZXItY29udGFpbmVyXCI+XG4gICAgPHdpemFyZC1mb290ZXIgW2Zvb3Rlcl09XCJzZWxlY3RlZC5zdGVwRm9vdGVyXCI+PC93aXphcmQtZm9vdGVyPlxuPC9kaXY+XG4iXX0=