UNPKG

ng-devui

Version:

DevUI components based on Angular

52 lines 26.1 kB
import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Output, TemplateRef } from '@angular/core'; import { BreadCrumbService } from '../breadcrumb.service'; import { BREADCRUMB } from '../breadcrumb.token'; import * as i0 from "@angular/core"; import * as i1 from "../breadcrumb.service"; import * as i2 from "@angular/common"; import * as i3 from "ng-devui/dropdown"; import * as i4 from "ng-devui/search"; export class BreadCrumbItemComponent { constructor(breadCrumbComponent, breadCrumbService) { this.breadCrumbComponent = breadCrumbComponent; this.breadCrumbService = breadCrumbService; this.showMenu = false; this.isSearch = false; this.toggleEvent = new EventEmitter(); } ngOnInit() { this.menuListDisplay = this.menuList; } onToggle($event) { this.isOpen = $event; this.toggleEvent.emit($event); } searchEvent($event) { if (this.menuList) { this.menuListDisplay = this.menuList.filter(item => item.name.toLowerCase().includes($event.toLowerCase())); } } navigateTo($event, item) { this.breadCrumbService.navigateTo($event, item); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BreadCrumbItemComponent, deps: [{ token: BREADCRUMB }, { token: i1.BreadCrumbService }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BreadCrumbItemComponent, selector: "d-breadcrumb-item", inputs: { showMenu: "showMenu", customMenuTemplate: "customMenuTemplate", menuList: "menuList", isSearch: "isSearch" }, outputs: { toggleEvent: "toggleEvent" }, exportAs: ["dBreadcrumbItem"], ngImport: i0, template: "<ng-container *ngIf=\"showMenu; else breadcrumbContentTpl\">\n <span\n class=\"devui-breadcrumb-item-with-menu devui-dropdown-no-border devui-dropdown-origin devui-breadcrumb-dropdown-origin\"\n dDropDown\n dDropDownToggle\n appendToBody\n trigger=\"hover\"\n (toggleEvent)=\"onToggle($event)\"\n [ngClass]=\"{ 'devui-breadcrumb-item-active': isOpen }\"\n >\n <ng-template [ngTemplateOutlet]=\"breadcrumbContentTpl\"></ng-template>\n <i class=\"devui-breadcrumb-down-icon\">\n <svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n >\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M3.64644661,5.64644661 C3.82001296,5.47288026 4.08943736,5.45359511 4.2843055,5.58859116 L4.35355339,5.64644661 L8,9.293 L11.6464466,5.64644661 C11.820013,5.47288026 12.0894374,5.45359511 12.2843055,5.58859116 L12.3535534,5.64644661 C12.5271197,5.82001296 12.5464049,6.08943736 12.4114088,6.2843055 L12.3535534,6.35355339 L8.35355339,10.3535534 C8.17998704,10.5271197 7.91056264,10.5464049 7.7156945,10.4114088 L7.64644661,10.3535534 L3.64644661,6.35355339 C3.45118446,6.15829124 3.45118446,5.84170876 3.64644661,5.64644661 Z\"\n ></path>\n </g>\n </svg>\n </i>\n <div dDropDownMenu class=\"devui-dropdown-menu\">\n <ng-template\n [ngTemplateOutlet]=\"customMenuTemplate ? customMenuTemplate : dropDownMenuTpl\"\n [ngTemplateOutletContext]=\"{\n $implicit: this\n }\"\n >\n </ng-template>\n </div>\n </span>\n</ng-container>\n\n<ng-template #breadcrumbContentTpl>\n <span class=\"devui-breadcrumb-item\">\n <ng-content></ng-content>\n </span>\n</ng-template>\n\n<ng-template #dropDownMenuTpl>\n <div *ngIf=\"isSearch\" class=\"devui-search-container\">\n <d-search [size]=\"'sm'\" (searchFn)=\"searchEvent($event)\" [cssClass]=\"'devui-search-in-dropdown'\"></d-search>\n </div>\n <ul class=\"devui-breadcrumb-dropdown-menu\">\n <li *ngFor=\"let item of menuListDisplay\" title=\"{{ item.name }}\">\n <a\n *ngIf=\"!item.linkType || item.linkType === 'hrefLink'\"\n [href]=\"item.link\"\n rel=\"noopener\"\n [target]=\"item.target ? item.target : '_self'\"\n >{{ item.name }}</a\n >\n <a\n *ngIf=\"item.linkType === 'routerLink'\"\n rel=\"noopener\"\n [target]=\"item.target\"\n [href]=\"item.link\"\n (click)=\"navigateTo($event, item)\"\n >{{ item.name }}</a\n >\n </li>\n </ul>\n</ng-template>\n\n<span class=\"devui-breadcrumb-separator\">\n <ng-template\n [ngTemplateOutlet]=\"breadCrumbComponent.separatorIcon ? breadCrumbComponent.separatorIcon : defaultSeparator\"\n [ngTemplateOutletContext]=\"{\n $implicit: this\n }\"\n >\n </ng-template>\n</span>\n\n<ng-template #defaultSeparator>\n <span class=\"devui-breadcrumb-separator\">/</span>\n</ng-template>\n", styles: [".devui-font-size-base{font-size:var(--devui-font-size, 12px)}.devui-font-base{font-size:var(--devui-font-size, 12px);font-weight:var(--devui-font-content-weight, normal);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-modal-title{font-size:var(--devui-font-size-modal-title, 18px)}.devui-font-modal-title{font-size:var(--devui-font-size-modal-title, 18px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-page-title{font-size:var(--devui-font-size-page-title, 16px)}.devui-font-page-title{font-size:var(--devui-font-size-page-title, 16px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-secondary-title{font-size:var(--devui-font-size-card-title, 14px)}.devui-font-secondary-title{font-size:var(--devui-font-size-card-title, 14px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}:host{display:inline-flex;align-items:center}.devui-breadcrumb-font-style,.devui-breadcrumb-separator,.devui-breadcrumb-item ::ng-deep a,.devui-breadcrumb-item{font-size:var(--devui-font-size, 12px);color:var(--devui-aide-text, #595959)}.devui-breadcrumb-item{cursor:auto}.devui-breadcrumb-item ::ng-deep a:hover{color:var(--devui-text, #191919);text-decoration:none}.devui-breadcrumb-item ::ng-deep a{cursor:pointer}.devui-breadcrumb-item ::ng-deep a:focus{text-decoration:none}.devui-breadcrumb-down-icon{vertical-align:middle;display:inline-block;cursor:pointer;width:16px;height:16px;margin-right:-8px;text-align:center;outline:none}.devui-breadcrumb-down-icon svg g path{fill:var(--devui-icon-fill, #595959)}.devui-breadcrumb-item-active{color:var(--devui-text, #191919)}.devui-breadcrumb-item-active ::ng-deep a{color:var(--devui-text, #191919);text-decoration:none}.devui-breadcrumb-item-active svg g path{fill:var(--devui-icon-text, #808080)}.devui-breadcrumb-item-active span{color:var(--devui-text, #191919)}.devui-breadcrumb-separator{margin:0 4px}.devui-breadcrumb-dropdown-menu{padding:8px 0;max-width:200px}.devui-breadcrumb-dropdown-menu li{padding:0 12px;font-size:var(--devui-font-size, 12px);line-height:36px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;cursor:pointer}.devui-breadcrumb-dropdown-menu li a{color:var(--devui-text, #191919);line-height:36px;width:170px;display:inline-block;vertical-align:top}.devui-breadcrumb-dropdown-menu li a:focus{text-decoration:none}.devui-breadcrumb-dropdown-menu li:hover{background:var(--devui-list-item-hover-bg, #f2f2f3)}.devui-breadcrumb-dropdown-menu li:hover a{text-decoration:none}.devui-search-container{max-width:200px}span.devui-breadcrumb-dropdown-origin{min-width:unset;display:inline-flex;padding:0}d-search{width:100%}.devui-breadcrumb-item-with-menu .devui-breadcrumb-item{cursor:pointer}.devui-breadcrumb-item-with-menu:hover svg g path{fill:var(--devui-icon-fill-hover, #191919)}.devui-dropdown-open .devui-breadcrumb-down-icon{transform:rotate(180deg)}.devui-breadcrumb-item ::ng-deep a,.devui-breadcrumb-item ::ng-deep span{transition:color var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1));display:inline-block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:440px;vertical-align:top}.devui-breadcrumb-down-icon{transition:transform var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1));transform-origin:center}.devui-breadcrumb-down-icon svg g path{transition:fill var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1))}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: "directive", type: i3.DropDownDirective, selector: "[dDropDown]", inputs: ["isOpen", "disabled", "showAnimation", "trigger", "closeScope", "closeOnMouseLeaveMenu", "autofocusToggleElement"], outputs: ["toggleEvent"], exportAs: ["d-dropdown"] }, { kind: "directive", type: i3.DropDownMenuDirective, selector: "[dDropDownMenu]", exportAs: ["d-dropdown-menu"] }, { kind: "directive", type: i3.DropDownToggleDirective, selector: "[dDropDownToggle]", inputs: ["toggleOnFocus", "autoFocus"], exportAs: ["d-dropdown-toggle"] }, { kind: "component", type: i3.DropDownAppendToBodyComponent, selector: "[dDropDown][appendToBody]", inputs: ["alignOrigin", "appendToBodyDirections", "appendToBodyScrollStrategy"], exportAs: ["d-dropdown-append-to-body"] }, { kind: "component", type: i4.SearchComponent, selector: "d-search", inputs: ["size", "placeholder", "maxLength", "isKeyupSearch", "delay", "disabled", "cssClass", "iconPosition", "noBorder", "autoFocus", "styleType", "showGlowStyle"], outputs: ["searchFn"], exportAs: ["search"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BreadCrumbItemComponent, decorators: [{ type: Component, args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'd-breadcrumb-item', exportAs: 'dBreadcrumbItem', preserveWhitespaces: false, template: "<ng-container *ngIf=\"showMenu; else breadcrumbContentTpl\">\n <span\n class=\"devui-breadcrumb-item-with-menu devui-dropdown-no-border devui-dropdown-origin devui-breadcrumb-dropdown-origin\"\n dDropDown\n dDropDownToggle\n appendToBody\n trigger=\"hover\"\n (toggleEvent)=\"onToggle($event)\"\n [ngClass]=\"{ 'devui-breadcrumb-item-active': isOpen }\"\n >\n <ng-template [ngTemplateOutlet]=\"breadcrumbContentTpl\"></ng-template>\n <i class=\"devui-breadcrumb-down-icon\">\n <svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n >\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M3.64644661,5.64644661 C3.82001296,5.47288026 4.08943736,5.45359511 4.2843055,5.58859116 L4.35355339,5.64644661 L8,9.293 L11.6464466,5.64644661 C11.820013,5.47288026 12.0894374,5.45359511 12.2843055,5.58859116 L12.3535534,5.64644661 C12.5271197,5.82001296 12.5464049,6.08943736 12.4114088,6.2843055 L12.3535534,6.35355339 L8.35355339,10.3535534 C8.17998704,10.5271197 7.91056264,10.5464049 7.7156945,10.4114088 L7.64644661,10.3535534 L3.64644661,6.35355339 C3.45118446,6.15829124 3.45118446,5.84170876 3.64644661,5.64644661 Z\"\n ></path>\n </g>\n </svg>\n </i>\n <div dDropDownMenu class=\"devui-dropdown-menu\">\n <ng-template\n [ngTemplateOutlet]=\"customMenuTemplate ? customMenuTemplate : dropDownMenuTpl\"\n [ngTemplateOutletContext]=\"{\n $implicit: this\n }\"\n >\n </ng-template>\n </div>\n </span>\n</ng-container>\n\n<ng-template #breadcrumbContentTpl>\n <span class=\"devui-breadcrumb-item\">\n <ng-content></ng-content>\n </span>\n</ng-template>\n\n<ng-template #dropDownMenuTpl>\n <div *ngIf=\"isSearch\" class=\"devui-search-container\">\n <d-search [size]=\"'sm'\" (searchFn)=\"searchEvent($event)\" [cssClass]=\"'devui-search-in-dropdown'\"></d-search>\n </div>\n <ul class=\"devui-breadcrumb-dropdown-menu\">\n <li *ngFor=\"let item of menuListDisplay\" title=\"{{ item.name }}\">\n <a\n *ngIf=\"!item.linkType || item.linkType === 'hrefLink'\"\n [href]=\"item.link\"\n rel=\"noopener\"\n [target]=\"item.target ? item.target : '_self'\"\n >{{ item.name }}</a\n >\n <a\n *ngIf=\"item.linkType === 'routerLink'\"\n rel=\"noopener\"\n [target]=\"item.target\"\n [href]=\"item.link\"\n (click)=\"navigateTo($event, item)\"\n >{{ item.name }}</a\n >\n </li>\n </ul>\n</ng-template>\n\n<span class=\"devui-breadcrumb-separator\">\n <ng-template\n [ngTemplateOutlet]=\"breadCrumbComponent.separatorIcon ? breadCrumbComponent.separatorIcon : defaultSeparator\"\n [ngTemplateOutletContext]=\"{\n $implicit: this\n }\"\n >\n </ng-template>\n</span>\n\n<ng-template #defaultSeparator>\n <span class=\"devui-breadcrumb-separator\">/</span>\n</ng-template>\n", styles: [".devui-font-size-base{font-size:var(--devui-font-size, 12px)}.devui-font-base{font-size:var(--devui-font-size, 12px);font-weight:var(--devui-font-content-weight, normal);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-modal-title{font-size:var(--devui-font-size-modal-title, 18px)}.devui-font-modal-title{font-size:var(--devui-font-size-modal-title, 18px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-page-title{font-size:var(--devui-font-size-page-title, 16px)}.devui-font-page-title{font-size:var(--devui-font-size-page-title, 16px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-secondary-title{font-size:var(--devui-font-size-card-title, 14px)}.devui-font-secondary-title{font-size:var(--devui-font-size-card-title, 14px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}:host{display:inline-flex;align-items:center}.devui-breadcrumb-font-style,.devui-breadcrumb-separator,.devui-breadcrumb-item ::ng-deep a,.devui-breadcrumb-item{font-size:var(--devui-font-size, 12px);color:var(--devui-aide-text, #595959)}.devui-breadcrumb-item{cursor:auto}.devui-breadcrumb-item ::ng-deep a:hover{color:var(--devui-text, #191919);text-decoration:none}.devui-breadcrumb-item ::ng-deep a{cursor:pointer}.devui-breadcrumb-item ::ng-deep a:focus{text-decoration:none}.devui-breadcrumb-down-icon{vertical-align:middle;display:inline-block;cursor:pointer;width:16px;height:16px;margin-right:-8px;text-align:center;outline:none}.devui-breadcrumb-down-icon svg g path{fill:var(--devui-icon-fill, #595959)}.devui-breadcrumb-item-active{color:var(--devui-text, #191919)}.devui-breadcrumb-item-active ::ng-deep a{color:var(--devui-text, #191919);text-decoration:none}.devui-breadcrumb-item-active svg g path{fill:var(--devui-icon-text, #808080)}.devui-breadcrumb-item-active span{color:var(--devui-text, #191919)}.devui-breadcrumb-separator{margin:0 4px}.devui-breadcrumb-dropdown-menu{padding:8px 0;max-width:200px}.devui-breadcrumb-dropdown-menu li{padding:0 12px;font-size:var(--devui-font-size, 12px);line-height:36px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;cursor:pointer}.devui-breadcrumb-dropdown-menu li a{color:var(--devui-text, #191919);line-height:36px;width:170px;display:inline-block;vertical-align:top}.devui-breadcrumb-dropdown-menu li a:focus{text-decoration:none}.devui-breadcrumb-dropdown-menu li:hover{background:var(--devui-list-item-hover-bg, #f2f2f3)}.devui-breadcrumb-dropdown-menu li:hover a{text-decoration:none}.devui-search-container{max-width:200px}span.devui-breadcrumb-dropdown-origin{min-width:unset;display:inline-flex;padding:0}d-search{width:100%}.devui-breadcrumb-item-with-menu .devui-breadcrumb-item{cursor:pointer}.devui-breadcrumb-item-with-menu:hover svg g path{fill:var(--devui-icon-fill-hover, #191919)}.devui-dropdown-open .devui-breadcrumb-down-icon{transform:rotate(180deg)}.devui-breadcrumb-item ::ng-deep a,.devui-breadcrumb-item ::ng-deep span{transition:color var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1));display:inline-block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:440px;vertical-align:top}.devui-breadcrumb-down-icon{transition:transform var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1));transform-origin:center}.devui-breadcrumb-down-icon svg g path{transition:fill var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1))}\n"] }] }], ctorParameters: () => [{ type: undefined, decorators: [{ type: Inject, args: [BREADCRUMB] }] }, { type: i1.BreadCrumbService }], propDecorators: { showMenu: [{ type: Input }], customMenuTemplate: [{ type: Input }], menuList: [{ type: Input }], isSearch: [{ type: Input }], toggleEvent: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2RldnVpL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi1pdGVtL2JyZWFkY3J1bWItaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9kZXZ1aS9icmVhZGNydW1iL2JyZWFkY3J1bWItaXRlbS9icmVhZGNydW1iLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBV2pELE1BQU0sT0FBTyx1QkFBdUI7SUFXbEMsWUFBdUMsbUJBQXdCLEVBQVUsaUJBQW9DO1FBQXRFLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBSztRQUFVLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFUcEcsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUdqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUs2RCxDQUFDO0lBQ2xILFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkMsQ0FBQztJQUNELFFBQVEsQ0FBQyxNQUFNO1FBQ2IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUNELFdBQVcsQ0FBQyxNQUFNO1FBQ2hCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzlHLENBQUM7SUFDSCxDQUFDO0lBQ0QsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJO1FBQ3JCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2xELENBQUM7K0dBMUJVLHVCQUF1QixrQkFXZCxVQUFVO21HQVhuQix1QkFBdUIseVBDZHBDLG1qR0FtRkE7OzRGRHJFYSx1QkFBdUI7a0JBUm5DLFNBQVM7c0NBQ1MsdUJBQXVCLENBQUMsTUFBTSxZQUNyQyxtQkFBbUIsWUFDbkIsaUJBQWlCLHVCQUdOLEtBQUs7OzBCQWFiLE1BQU07MkJBQUMsVUFBVTt5RUFUckIsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCcmVhZENydW1iU2VydmljZSB9IGZyb20gJy4uL2JyZWFkY3J1bWIuc2VydmljZSc7XG5pbXBvcnQgeyBCUkVBRENSVU1CIH0gZnJvbSAnLi4vYnJlYWRjcnVtYi50b2tlbic7XG5pbXBvcnQgeyBNZW51Q29uZmlnIH0gZnJvbSAnLi4vYnJlYWRjcnVtYi50eXBlJztcblxuQENvbXBvbmVudCh7XG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzZWxlY3RvcjogJ2QtYnJlYWRjcnVtYi1pdGVtJyxcbiAgZXhwb3J0QXM6ICdkQnJlYWRjcnVtYkl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vYnJlYWRjcnVtYi1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYnJlYWRjcnVtYi1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBCcmVhZENydW1iSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgc2hvd01lbnUgPSBmYWxzZTtcbiAgQElucHV0KCkgY3VzdG9tTWVudVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBtZW51TGlzdDogQXJyYXk8TWVudUNvbmZpZz47XG4gIEBJbnB1dCgpIGlzU2VhcmNoID0gZmFsc2U7XG4gIEBPdXRwdXQoKSB0b2dnbGVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBtZW51TGlzdERpc3BsYXk6IEFycmF5PE1lbnVDb25maWc+O1xuICBpc09wZW46IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChCUkVBRENSVU1CKSBwdWJsaWMgYnJlYWRDcnVtYkNvbXBvbmVudDogYW55LCBwcml2YXRlIGJyZWFkQ3J1bWJTZXJ2aWNlOiBCcmVhZENydW1iU2VydmljZSkgeyB9XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubWVudUxpc3REaXNwbGF5ID0gdGhpcy5tZW51TGlzdDtcbiAgfVxuICBvblRvZ2dsZSgkZXZlbnQpIHtcbiAgICB0aGlzLmlzT3BlbiA9ICRldmVudDtcbiAgICB0aGlzLnRvZ2dsZUV2ZW50LmVtaXQoJGV2ZW50KTtcbiAgfVxuICBzZWFyY2hFdmVudCgkZXZlbnQpIHtcbiAgICBpZiAodGhpcy5tZW51TGlzdCkge1xuICAgICAgdGhpcy5tZW51TGlzdERpc3BsYXkgPSB0aGlzLm1lbnVMaXN0LmZpbHRlcihpdGVtID0+IGl0ZW0ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCRldmVudC50b0xvd2VyQ2FzZSgpKSk7XG4gICAgfVxuICB9XG4gIG5hdmlnYXRlVG8oJGV2ZW50LCBpdGVtKSB7XG4gICAgdGhpcy5icmVhZENydW1iU2VydmljZS5uYXZpZ2F0ZVRvKCRldmVudCwgaXRlbSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93TWVudTsgZWxzZSBicmVhZGNydW1iQ29udGVudFRwbFwiPlxuICA8c3BhblxuICAgIGNsYXNzPVwiZGV2dWktYnJlYWRjcnVtYi1pdGVtLXdpdGgtbWVudSBkZXZ1aS1kcm9wZG93bi1uby1ib3JkZXIgZGV2dWktZHJvcGRvd24tb3JpZ2luIGRldnVpLWJyZWFkY3J1bWItZHJvcGRvd24tb3JpZ2luXCJcbiAgICBkRHJvcERvd25cbiAgICBkRHJvcERvd25Ub2dnbGVcbiAgICBhcHBlbmRUb0JvZHlcbiAgICB0cmlnZ2VyPVwiaG92ZXJcIlxuICAgICh0b2dnbGVFdmVudCk9XCJvblRvZ2dsZSgkZXZlbnQpXCJcbiAgICBbbmdDbGFzc109XCJ7ICdkZXZ1aS1icmVhZGNydW1iLWl0ZW0tYWN0aXZlJzogaXNPcGVuIH1cIlxuICA+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJyZWFkY3J1bWJDb250ZW50VHBsXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8aSBjbGFzcz1cImRldnVpLWJyZWFkY3J1bWItZG93bi1pY29uXCI+XG4gICAgICA8c3ZnXG4gICAgICAgIHdpZHRoPVwiMTZweFwiXG4gICAgICAgIGhlaWdodD1cIjE2cHhcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcbiAgICAgICAgdmVyc2lvbj1cIjEuMVwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIlxuICAgICAgPlxuICAgICAgICA8ZyBzdHJva2U9XCJub25lXCIgc3Ryb2tlLXdpZHRoPVwiMVwiIGZpbGw9XCJub25lXCIgZmlsbC1ydWxlPVwiZXZlbm9kZFwiPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPVwiTTMuNjQ2NDQ2NjEsNS42NDY0NDY2MSBDMy44MjAwMTI5Niw1LjQ3Mjg4MDI2IDQuMDg5NDM3MzYsNS40NTM1OTUxMSA0LjI4NDMwNTUsNS41ODg1OTExNiBMNC4zNTM1NTMzOSw1LjY0NjQ0NjYxIEw4LDkuMjkzIEwxMS42NDY0NDY2LDUuNjQ2NDQ2NjEgQzExLjgyMDAxMyw1LjQ3Mjg4MDI2IDEyLjA4OTQzNzQsNS40NTM1OTUxMSAxMi4yODQzMDU1LDUuNTg4NTkxMTYgTDEyLjM1MzU1MzQsNS42NDY0NDY2MSBDMTIuNTI3MTE5Nyw1LjgyMDAxMjk2IDEyLjU0NjQwNDksNi4wODk0MzczNiAxMi40MTE0MDg4LDYuMjg0MzA1NSBMMTIuMzUzNTUzNCw2LjM1MzU1MzM5IEw4LjM1MzU1MzM5LDEwLjM1MzU1MzQgQzguMTc5OTg3MDQsMTAuNTI3MTE5NyA3LjkxMDU2MjY0LDEwLjU0NjQwNDkgNy43MTU2OTQ1LDEwLjQxMTQwODggTDcuNjQ2NDQ2NjEsMTAuMzUzNTUzNCBMMy42NDY0NDY2MSw2LjM1MzU1MzM5IEMzLjQ1MTE4NDQ2LDYuMTU4MjkxMjQgMy40NTExODQ0Niw1Ljg0MTcwODc2IDMuNjQ2NDQ2NjEsNS42NDY0NDY2MSBaXCJcbiAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICA8L2c+XG4gICAgICA8L3N2Zz5cbiAgICA8L2k+XG4gICAgPGRpdiBkRHJvcERvd25NZW51IGNsYXNzPVwiZGV2dWktZHJvcGRvd24tbWVudVwiPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbU1lbnVUZW1wbGF0ZSA/IGN1c3RvbU1lbnVUZW1wbGF0ZSA6IGRyb3BEb3duTWVudVRwbFwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgJGltcGxpY2l0OiB0aGlzXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9zcGFuPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjYnJlYWRjcnVtYkNvbnRlbnRUcGw+XG4gIDxzcGFuIGNsYXNzPVwiZGV2dWktYnJlYWRjcnVtYi1pdGVtXCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Ryb3BEb3duTWVudVRwbD5cbiAgPGRpdiAqbmdJZj1cImlzU2VhcmNoXCIgY2xhc3M9XCJkZXZ1aS1zZWFyY2gtY29udGFpbmVyXCI+XG4gICAgPGQtc2VhcmNoIFtzaXplXT1cIidzbSdcIiAoc2VhcmNoRm4pPVwic2VhcmNoRXZlbnQoJGV2ZW50KVwiIFtjc3NDbGFzc109XCInZGV2dWktc2VhcmNoLWluLWRyb3Bkb3duJ1wiPjwvZC1zZWFyY2g+XG4gIDwvZGl2PlxuICA8dWwgY2xhc3M9XCJkZXZ1aS1icmVhZGNydW1iLWRyb3Bkb3duLW1lbnVcIj5cbiAgICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbWVudUxpc3REaXNwbGF5XCIgdGl0bGU9XCJ7eyBpdGVtLm5hbWUgfX1cIj5cbiAgICAgIDxhXG4gICAgICAgICpuZ0lmPVwiIWl0ZW0ubGlua1R5cGUgfHwgaXRlbS5saW5rVHlwZSA9PT0gJ2hyZWZMaW5rJ1wiXG4gICAgICAgIFtocmVmXT1cIml0ZW0ubGlua1wiXG4gICAgICAgIHJlbD1cIm5vb3BlbmVyXCJcbiAgICAgICAgW3RhcmdldF09XCJpdGVtLnRhcmdldCA/IGl0ZW0udGFyZ2V0IDogJ19zZWxmJ1wiXG4gICAgICAgID57eyBpdGVtLm5hbWUgfX08L2FcbiAgICAgID5cbiAgICAgIDxhXG4gICAgICAgICpuZ0lmPVwiaXRlbS5saW5rVHlwZSA9PT0gJ3JvdXRlckxpbmsnXCJcbiAgICAgICAgcmVsPVwibm9vcGVuZXJcIlxuICAgICAgICBbdGFyZ2V0XT1cIml0ZW0udGFyZ2V0XCJcbiAgICAgICAgW2hyZWZdPVwiaXRlbS5saW5rXCJcbiAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG8oJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgID57eyBpdGVtLm5hbWUgfX08L2FcbiAgICAgID5cbiAgICA8L2xpPlxuICA8L3VsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPHNwYW4gY2xhc3M9XCJkZXZ1aS1icmVhZGNydW1iLXNlcGFyYXRvclwiPlxuICA8bmctdGVtcGxhdGVcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJicmVhZENydW1iQ29tcG9uZW50LnNlcGFyYXRvckljb24gPyBicmVhZENydW1iQ29tcG9uZW50LnNlcGFyYXRvckljb24gOiBkZWZhdWx0U2VwYXJhdG9yXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgJGltcGxpY2l0OiB0aGlzXG4gICAgfVwiXG4gID5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvc3Bhbj5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0U2VwYXJhdG9yPlxuICA8c3BhbiBjbGFzcz1cImRldnVpLWJyZWFkY3J1bWItc2VwYXJhdG9yXCI+Lzwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=