UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

274 lines 40.8 kB
/** * @packageDocumentation * @module common-layout */ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewEncapsulation, } from '@angular/core'; import { head, isEqual } from 'lodash-es'; import { BehaviorSubject, combineLatest, map, startWith, switchMap, take, tap, } from 'rxjs'; import { K8sUtilService, publishRef, } from '../../../../core/public-api'; import { BaseSelection } from '../project-select/base-selection'; import { CommonLayoutStoreService } from '../store.service'; import * as i0 from "@angular/core"; import * as i1 from "../store.service"; import * as i2 from "../../../../core/public-api"; import * as i3 from "@angular/common"; import * as i4 from "@alauda/ui"; import * as i5 from "../../../../translate/translate.pipe"; import * as i6 from "../../../../core/pipes/pure.pipe"; import * as i7 from "../../../../core/pipes/k8s-util.pipe"; const _c0 = (a0, a1, a2, a3, a4) => ({ group: a0, groups: a1, i: a2, j: a3, focusedMenuItemIndex: a4 }); function NamespaceSelectComponent_a_2_Template(rf, ctx) { if (rf & 1) { const _r1 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "a", 5); i0.ɵɵpipe(1, "translate"); i0.ɵɵlistener("auiDropdownVisibleChange", function NamespaceSelectComponent_a_2_Template_a_auiDropdownVisibleChange_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.handleMenuVisible($event)); }); i0.ɵɵelement(2, "aui-icon", 6); i0.ɵɵelementContainerStart(3); i0.ɵɵelementStart(4, "span"); i0.ɵɵtext(5); i0.ɵɵelementEnd(); i0.ɵɵelement(6, "aui-icon", 7); i0.ɵɵelementContainerEnd(); i0.ɵɵelementEnd(); } if (rf & 2) { const ctx_r1 = i0.ɵɵnextContext(); const menu_r3 = i0.ɵɵreference(5); i0.ɵɵpropertyInterpolate2("title", "", i0.ɵɵpipeBind1(1, 7, "namespace"), ": ", ctx_r1.selected == null ? null : ctx_r1.selected.name, ""); i0.ɵɵproperty("auiDropdown", menu_r3)("auiDropdownPosition", "bottom start")("auiDropdownClass", "acl-namespace-select__menu"); i0.ɵɵadvance(5); i0.ɵɵtextInterpolate(ctx_r1.selected ? ctx_r1.selected.name : "-"); } } function NamespaceSelectComponent_ng_template_4_ng_container_5_div_1_ng_container_1_aui_menu_group_1_aui_menu_item_4_span_6_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "span", 18); i0.ɵɵtext(1); i0.ɵɵpipe(2, "aclDisplayName"); i0.ɵɵelementEnd(); } if (rf & 2) { const item_r6 = i0.ɵɵnextContext().$implicit; i0.ɵɵadvance(); i0.ɵɵtextInterpolate1(" (", i0.ɵɵpipeBind1(2, 1, item_r6), ") "); } } function NamespaceSelectComponent_ng_template_4_ng_container_5_div_1_ng_container_1_aui_menu_group_1_aui_menu_item_4_Template(rf, ctx) { if (rf & 1) { const _r5 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "aui-menu-item", 16); i0.ɵɵpipe(1, "aclName"); i0.ɵɵpipe(2, "pure"); i0.ɵɵlistener("click", function NamespaceSelectComponent_ng_template_4_ng_container_5_div_1_ng_container_1_aui_menu_group_1_aui_menu_item_4_Template_aui_menu_item_click_0_listener() { const item_r6 = i0.ɵɵrestoreView(_r5).$implicit; const group_r7 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onSelect(group_r7, item_r6)); }); i0.ɵɵelementStart(3, "span"); i0.ɵɵtext(4); i0.ɵɵpipe(5, "aclName"); i0.ɵɵelementEnd(); i0.ɵɵtemplate(6, NamespaceSelectComponent_ng_template_4_ng_container_5_div_1_ng_container_1_aui_menu_group_1_aui_menu_item_4_span_6_Template, 3, 3, "span", 17); i0.ɵɵpipe(7, "aclDisplayName"); i0.ɵɵelementEnd(); } if (rf & 2) { const item_r6 = ctx.$implicit; const j_r8 = ctx.index; const ctx_r8 = i0.ɵɵnextContext(2); const group_r7 = ctx_r8.$implicit; const i_r10 = ctx_r8.index; const groups_r11 = i0.ɵɵnextContext(2).ngIf; const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵpropertyInterpolate("title", i0.ɵɵpipeBind1(1, 4, item_r6)); i0.ɵɵproperty("actived", i0.ɵɵpipeBind4(2, 6, item_r6, ctx_r1.isActive, ctx_r1.selected, i0.ɵɵpureFunction5(15, _c0, group_r7, groups_r11, i_r10, j_r8, ctx_r1.focusedMenuItemIndex))); i0.ɵɵadvance(4); i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 11, item_r6)); i0.ɵɵadvance(2); i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(7, 13, item_r6)); } } function NamespaceSelectComponent_ng_template_4_ng_container_5_div_1_ng_container_1_aui_menu_group_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "aui-menu-group")(1, "span", 14); i0.ɵɵtext(2); i0.ɵɵpipe(3, "aclDisplayName"); i0.ɵɵelementEnd(); i0.ɵɵtemplate(4, NamespaceSelectComponent_ng_template_4_ng_container_5_div_1_ng_container_1_aui_menu_group_1_aui_menu_item_4_Template, 8, 21, "aui-menu-item", 15); i0.ɵɵelementEnd(); } if (rf & 2) { const group_r7 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵadvance(2); i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 3, group_r7.cluster)); i0.ɵɵadvance(2); i0.ɵɵproperty("ngForOf", group_r7.namespaces)("ngForTrackBy", ctx_r1.trackFn); } } function NamespaceSelectComponent_ng_template_4_ng_container_5_div_1_ng_container_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵtemplate(1, NamespaceSelectComponent_ng_template_4_ng_container_5_div_1_ng_container_1_aui_menu_group_1_Template, 5, 5, "aui-menu-group", 10); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const group_r7 = ctx.$implicit; i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", group_r7.namespaces == null ? null : group_r7.namespaces.length); } } function NamespaceSelectComponent_ng_template_4_ng_container_5_div_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div", 12); i0.ɵɵtemplate(1, NamespaceSelectComponent_ng_template_4_ng_container_5_div_1_ng_container_1_Template, 2, 1, "ng-container", 13); i0.ɵɵelementEnd(); } if (rf & 2) { const groups_r11 = i0.ɵɵnextContext().ngIf; const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵadvance(); i0.ɵɵproperty("ngForOf", groups_r11)("ngForTrackBy", ctx_r1.groupTrackFn); } } function NamespaceSelectComponent_ng_template_4_ng_container_5_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵtemplate(1, NamespaceSelectComponent_ng_template_4_ng_container_5_div_1_Template, 2, 2, "div", 11); i0.ɵɵpipe(2, "pure"); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const groups_r11 = ctx.ngIf; const ctx_r1 = i0.ɵɵnextContext(2); const noResult_r12 = i0.ɵɵreference(9); i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind2(2, 2, groups_r11, ctx_r1.hasResult))("ngIfElse", noResult_r12); } } function NamespaceSelectComponent_ng_template_4_Template(rf, ctx) { if (rf & 1) { const _r4 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "aui-menu")(1, "div", 8)(2, "aui-search", 9); i0.ɵɵpipe(3, "translate"); i0.ɵɵpipe(4, "async"); i0.ɵɵlistener("keywordChange", function NamespaceSelectComponent_ng_template_4_Template_aui_search_keywordChange_2_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.keyword$$.next($event)); }); i0.ɵɵelementEnd()(); i0.ɵɵtemplate(5, NamespaceSelectComponent_ng_template_4_ng_container_5_Template, 3, 5, "ng-container", 10); i0.ɵɵpipe(6, "async"); i0.ɵɵelementEnd(); } if (rf & 2) { const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵadvance(2); i0.ɵɵproperty("placeholder", i0.ɵɵpipeBind1(3, 4, "filter_by_name"))("searchButton", false)("keyword", i0.ɵɵpipeBind1(4, 6, ctx_r1.keyword$$)); i0.ɵɵadvance(3); i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(6, 8, ctx_r1.groups$)); } } function NamespaceSelectComponent_ng_template_6_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "a", 19); i0.ɵɵelement(1, "aui-icon", 6); i0.ɵɵelementStart(2, "span"); i0.ɵɵtext(3); i0.ɵɵpipe(4, "translate"); i0.ɵɵelementEnd(); i0.ɵɵelement(5, "aui-icon", 20); i0.ɵɵelementEnd(); } if (rf & 2) { i0.ɵɵadvance(3); i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 1, "no_namespace")); } } function NamespaceSelectComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div", 21); i0.ɵɵtext(1); i0.ɵɵpipe(2, "translate"); i0.ɵɵelementEnd(); } if (rf & 2) { i0.ɵɵadvance(); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "no_namespace"), " "); } } export class NamespaceSelectComponent extends BaseSelection { set projectName(projectName) { this.projectName$$.next(projectName); } constructor(store, k8sUtil, cdr) { super(cdr); this.store = store; this.k8sUtil = k8sUtil; this.projectName$$ = new BehaviorSubject(''); this.selectedChange = new EventEmitter(); this.availableGroups$ = this.projectName$$.pipe(switchMap(projectName => this.store.selectNamespacesByProjectName(projectName)), publishRef()); this.hasNamespace$ = this.availableGroups$.pipe(map(groups => head(groups .map(([cluster, namespaces]) => { const namespace = head(namespaces); if (!namespace) { return null; } return { cluster: this.name(cluster), name: this.name(namespace), }; }) .filter(item => !!item))), tap(first => { // TODO: temp fix for asm if (!this.selected && !first) { this.selectedChange.emit(null); } if (!this.selected && first) { this.selectedChange.emit(first); } }), map(first => !!first), publishRef()); this.groups$ = combineLatest([ this.keyword$$.pipe(startWith(''), tap(() => { this.focusedMenuItemIndex = -1; })), this.availableGroups$, ]).pipe(map(([keywords, groups]) => groups.map(([cluster, namespaces]) => ({ cluster, namespaces: (namespaces || []).filter(namespace => this.name(namespace).includes(keywords)), }))), publishRef()); this.name = (item) => this.k8sUtil.getName(item); this.isActive = (item, selected, { group: { cluster }, groups, i, j, focusedMenuItemIndex, }) => { if (!selected) { return false; } const isSelected = this.name(cluster) === selected.cluster && this.name(item) === selected.name; if (isSelected) { return isSelected; } return (focusedMenuItemIndex - groups.reduce((acc, curr, index) => index >= i ? acc : curr.namespaces.length + acc, 0) === j); }; this.trackFn = (_, item) => this.name(item); this.groupTrackFn = (_, { cluster, }) => this.name(cluster); } hasResult(groups) { return groups.some(group => !!group.namespaces.length); } onSelect({ cluster }, namespace) { if (isEqual(this.selected, { cluster: this.name(cluster), namespace: this.name(namespace), })) { return; } this.selectedChange.emit({ cluster: this.name(cluster), name: this.name(namespace), }); } selectByIndex(index) { this.groups$.pipe(take(1)).subscribe(groups => { for (const [i, group] of groups.entries()) { const namespaces = group.namespaces; index = index - i; if (index < namespaces.length) { this.onSelect(group, namespaces[index]); break; } } }); } static { this.ɵfac = function NamespaceSelectComponent_Factory(t) { return new (t || NamespaceSelectComponent)(i0.ɵɵdirectiveInject(i1.CommonLayoutStoreService), i0.ɵɵdirectiveInject(i2.K8sUtilService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; } static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NamespaceSelectComponent, selectors: [["acl-namespace-select"]], inputs: { projectName: "projectName", selected: "selected" }, outputs: { selectedChange: "selectedChange" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 10, vars: 8, consts: [["menu", ""], ["empty", ""], ["noResult", ""], [1, "acl-namespace-select"], ["href", "javascript:;", "auiDropdownActive", "acl-namespace-select--active", 3, "auiDropdown", "auiDropdownPosition", "auiDropdownClass", "title", "auiDropdownVisibleChange", 4, "ngIf", "ngIfElse"], ["href", "javascript:;", "auiDropdownActive", "acl-namespace-select--active", 3, "auiDropdownVisibleChange", "auiDropdown", "auiDropdownPosition", "auiDropdownClass", "title"], ["icon", "prod:namespace", "size", "16px", "color", "#fff"], ["icon", "caret_down_s", "size", "16px"], [1, "acl-namespace-select__input"], [3, "keywordChange", "placeholder", "searchButton", "keyword"], [4, "ngIf"], ["class", "acl-namespace-select__options", 4, "ngIf", "ngIfElse"], [1, "acl-namespace-select__options"], [4, "ngFor", "ngForOf", "ngForTrackBy"], ["auiMenuGroupTitle", ""], [3, "actived", "title", "click", 4, "ngFor", "ngForOf", "ngForTrackBy"], [3, "click", "actived", "title"], ["class", "acl-namespace-select__display-name", 4, "ngIf"], [1, "acl-namespace-select__display-name"], ["href", "javascript:;"], ["icon", "caret_down_s", "size", "16px", "color", "#999"], [1, "acl-namespace-select__no-result"]], template: function NamespaceSelectComponent_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div", 3); i0.ɵɵpipe(1, "async"); i0.ɵɵtemplate(2, NamespaceSelectComponent_a_2_Template, 7, 9, "a", 4); i0.ɵɵpipe(3, "async"); i0.ɵɵelementEnd(); i0.ɵɵtemplate(4, NamespaceSelectComponent_ng_template_4_Template, 7, 10, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor)(6, NamespaceSelectComponent_ng_template_6_Template, 6, 3, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor)(8, NamespaceSelectComponent_ng_template_8_Template, 3, 3, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor); } if (rf & 2) { const empty_r13 = i0.ɵɵreference(7); i0.ɵɵclassProp("disabled", !i0.ɵɵpipeBind1(1, 4, ctx.hasNamespace$)); i0.ɵɵadvance(2); i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(3, 6, ctx.hasNamespace$))("ngIfElse", empty_r13); } }, dependencies: [i3.NgForOf, i3.NgIf, i4.DropdownDirective, i4.DropdownActiveDirective, i4.MenuComponent, i4.MenuGroupComponent, i4.MenuGroupTitleDirective, i4.MenuItemComponent, i4.SearchComponent, i4.IconComponent, i3.AsyncPipe, i5.TranslatePipe, i6.PurePipe, i7.K8sDisplayNamePipe, i7.K8sNamePipe], styles: [":host{display:block}.acl-namespace-select{padding:4px 8px;display:flex}.acl-namespace-select.disabled{position:relative}.acl-namespace-select.disabled:before{content:\"\";position:absolute;top:0;right:0;bottom:0;left:0}.acl-namespace-select>a{flex:1;display:flex;border-radius:2px;flex-direction:row;align-items:center;justify-content:flex-start;height:36px;padding:0 8px;width:100%;color:rgb(var(--aui-color-n-10));text-decoration:none}.acl-namespace-select>a:hover{background-color:#fff3}.acl-namespace-select>a>span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0 8px}.acl-namespace-select>a aui-icon{height:16px}.acl-namespace-select--active{background-color:#fff3}.acl-namespace-select__menu .aui-menu{max-width:320px;max-height:400px;display:flex;flex-direction:column}.acl-namespace-select__input{flex-shrink:0;padding-bottom:8px}.acl-namespace-select__options{flex:1;overflow:auto}.acl-namespace-select__options::-webkit-scrollbar{width:8px;height:4px}.acl-namespace-select__options::-webkit-scrollbar-thumb{border-radius:4px;background-color:rgb(var(--aui-color-n-7))}.acl-namespace-select__options::-webkit-scrollbar-thumb:hover{background-color:rgb(var(--aui-color-n-5))}.acl-namespace-select__options::-webkit-scrollbar-corner{background-color:transparent}.acl-namespace-select__display-name{color:rgb(var(--aui-color-n-4));margin-left:4px}.acl-namespace-select__no-result{border-top:solid 1px rgb(var(--aui-color-n-8));line-height:28px;padding:8px 0 0;margin:0 -8px;display:flex;align-items:center;justify-content:center;color:rgb(var(--aui-color-n-6))}\n"], encapsulation: 2, changeDetection: 0 }); } } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NamespaceSelectComponent, [{ type: Component, args: [{ selector: 'acl-namespace-select', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n class=\"acl-namespace-select\"\n [class.disabled]=\"!(hasNamespace$ | async)\"\n>\n <a\n *ngIf=\"hasNamespace$ | async; else empty\"\n href=\"javascript:;\"\n [auiDropdown]=\"menu\"\n [auiDropdownPosition]=\"'bottom start'\"\n [auiDropdownClass]=\"'acl-namespace-select__menu'\"\n auiDropdownActive=\"acl-namespace-select--active\"\n (auiDropdownVisibleChange)=\"handleMenuVisible($event)\"\n title=\"{{ 'namespace' | translate }}: {{ selected?.name }}\"\n >\n <aui-icon\n icon=\"prod:namespace\"\n size=\"16px\"\n color=\"#fff\"\n ></aui-icon>\n <ng-container>\n <span>{{ selected ? selected.name : '-' }}</span>\n <aui-icon\n icon=\"caret_down_s\"\n size=\"16px\"\n ></aui-icon>\n </ng-container>\n </a>\n</div>\n\n<ng-template #menu\n ><aui-menu\n ><div class=\"acl-namespace-select__input\">\n <aui-search\n [placeholder]=\"'filter_by_name' | translate\"\n [searchButton]=\"false\"\n [keyword]=\"keyword$$ | async\"\n (keywordChange)=\"keyword$$.next($event)\"\n ></aui-search>\n </div>\n <ng-container *ngIf=\"groups$ | async as groups\">\n <div\n class=\"acl-namespace-select__options\"\n *ngIf=\"groups | pure: hasResult; else noResult\"\n >\n <ng-container\n *ngFor=\"let group of groups; index as i; trackBy: groupTrackFn\"\n >\n <aui-menu-group *ngIf=\"group.namespaces?.length\">\n <span auiMenuGroupTitle>{{ group.cluster | aclDisplayName }}</span>\n <aui-menu-item\n *ngFor=\"\n let item of group.namespaces;\n index as j;\n trackBy: trackFn\n \"\n [actived]=\"\n item\n | pure\n : isActive\n : selected\n : {\n group: group,\n groups: groups,\n i: i,\n j: j,\n focusedMenuItemIndex: focusedMenuItemIndex\n }\n \"\n (click)=\"onSelect(group, item)\"\n title=\"{{ item | aclName }}\"\n >\n <span>{{ item | aclName }}</span>\n <span\n *ngIf=\"item | aclDisplayName\"\n class=\"acl-namespace-select__display-name\"\n >\n ({{ item | aclDisplayName }})\n </span>\n </aui-menu-item>\n </aui-menu-group>\n </ng-container>\n </div>\n </ng-container>\n </aui-menu></ng-template\n>\n\n<ng-template #empty>\n <a href=\"javascript:;\">\n <aui-icon\n icon=\"prod:namespace\"\n size=\"16px\"\n color=\"#fff\"\n ></aui-icon>\n <span>{{ 'no_namespace' | translate }}</span>\n <aui-icon\n icon=\"caret_down_s\"\n size=\"16px\"\n color=\"#999\"\n ></aui-icon>\n </a>\n</ng-template>\n\n<ng-template #noResult>\n <div class=\"acl-namespace-select__no-result\">\n {{ 'no_namespace' | translate }}\n </div>\n</ng-template>\n", styles: [":host{display:block}.acl-namespace-select{padding:4px 8px;display:flex}.acl-namespace-select.disabled{position:relative}.acl-namespace-select.disabled:before{content:\"\";position:absolute;top:0;right:0;bottom:0;left:0}.acl-namespace-select>a{flex:1;display:flex;border-radius:2px;flex-direction:row;align-items:center;justify-content:flex-start;height:36px;padding:0 8px;width:100%;color:rgb(var(--aui-color-n-10));text-decoration:none}.acl-namespace-select>a:hover{background-color:#fff3}.acl-namespace-select>a>span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0 8px}.acl-namespace-select>a aui-icon{height:16px}.acl-namespace-select--active{background-color:#fff3}.acl-namespace-select__menu .aui-menu{max-width:320px;max-height:400px;display:flex;flex-direction:column}.acl-namespace-select__input{flex-shrink:0;padding-bottom:8px}.acl-namespace-select__options{flex:1;overflow:auto}.acl-namespace-select__options::-webkit-scrollbar{width:8px;height:4px}.acl-namespace-select__options::-webkit-scrollbar-thumb{border-radius:4px;background-color:rgb(var(--aui-color-n-7))}.acl-namespace-select__options::-webkit-scrollbar-thumb:hover{background-color:rgb(var(--aui-color-n-5))}.acl-namespace-select__options::-webkit-scrollbar-corner{background-color:transparent}.acl-namespace-select__display-name{color:rgb(var(--aui-color-n-4));margin-left:4px}.acl-namespace-select__no-result{border-top:solid 1px rgb(var(--aui-color-n-8));line-height:28px;padding:8px 0 0;margin:0 -8px;display:flex;align-items:center;justify-content:center;color:rgb(var(--aui-color-n-6))}\n"] }] }], () => [{ type: i1.CommonLayoutStoreService }, { type: i2.K8sUtilService }, { type: i0.ChangeDetectorRef }], { projectName: [{ type: Input }], selected: [{ type: Input }], selectedChange: [{ type: Output }] }); })(); (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NamespaceSelectComponent, { className: "NamespaceSelectComponent" }); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3BhZ2Utc2NhZmZvbGQvcGFnZS1oZWFkZXIvY29tbW9uLWxheW91dC9uYW1lc3BhY2Utc2VsZWN0L2NvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9wYWdlLXNjYWZmb2xkL3BhZ2UtaGVhZGVyL2NvbW1vbi1sYXlvdXQvbmFtZXNwYWNlLXNlbGVjdC9jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLEdBQUcsRUFDSCxTQUFTLEVBQ1QsU0FBUyxFQUNULElBQUksRUFDSixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBRUwsY0FBYyxFQUNkLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBRXJDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsd0JBQXdCLEVBQVMsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7Ozs7O0lDM0JqRSw0QkFTQzs7SUFGQyx5TkFBNEIsZ0NBQXlCLEtBQUM7SUFHdEQsOEJBSVk7SUFDWiw2QkFBYztJQUNaLDRCQUFNO0lBQUEsWUFBb0M7SUFBQSxpQkFBTztJQUNqRCw4QkFHWTs7SUFFaEIsaUJBQUk7Ozs7SUFkRiwwSUFBMkQ7SUFIM0QsQUFEQSxBQURBLHFDQUFvQix1Q0FDa0Is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VUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDeEMsTUFBTTtnQkFDUixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt5RkFuS1Usd0JBQXdCO29FQUF4Qix3QkFBd0I7WUN4Q3JDLDhCQUdDOztZQUNDLHFFQVNDOztZQWNILGlCQUFNO1lBMkVOLEFBaEJBLEFBekRBLDJIQUNHLDZHQXdEaUIsNkdBZ0JHOzs7WUFwR3JCLG9FQUEyQztZQUd4QyxlQUE2QjtZQUFBLEFBQTdCLDhEQUE2Qix1QkFBVTs7O2lGRG1DL0Isd0JBQXdCO2NBUHBDLFNBQVM7MkJBQ0Usc0JBQXNCLG1CQUdmLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7c0hBTWpDLFdBQVc7a0JBRGQsS0FBSztZQUtHLFFBQVE7a0JBQWhCLEtBQUs7WUFFSSxjQUFjO2tCQUF2QixNQUFNOztrRkFWSSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICogQG1vZHVsZSBjb21tb24tbGF5b3V0XG4gKi9cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGhlYWQsIGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBtYXAsXG4gIHN0YXJ0V2l0aCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBLdWJlcm5ldGVzUmVzb3VyY2UsXG4gIEs4c1V0aWxTZXJ2aWNlLFxuICBwdWJsaXNoUmVmLFxufSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgTmFtZXNwYWNlSWRlbnRpdHkgfSBmcm9tICcuLi9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZVNlbGVjdGlvbiB9IGZyb20gJy4uL3Byb2plY3Qtc2VsZWN0L2Jhc2Utc2VsZWN0aW9uJztcbmltcG9ydCB7IENvbW1vbkxheW91dFN0b3JlU2VydmljZSwgR3JvdXAgfSBmcm9tICcuLi9zdG9yZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNsLW5hbWVzcGFjZS1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgTmFtZXNwYWNlU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgQmFzZVNlbGVjdGlvbiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvamVjdE5hbWUkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoJycpO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBwcm9qZWN0TmFtZShwcm9qZWN0TmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wcm9qZWN0TmFtZSQkLm5leHQocHJvamVjdE5hbWUpO1xuICB9XG5cbiAgQElucHV0KCkgc2VsZWN0ZWQ/OiBOYW1lc3BhY2VJZGVudGl0eTtcblxuICBAT3V0cHV0KCkgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE5hbWVzcGFjZUlkZW50aXR5IHwgbnVsbD4oKTtcblxuICBhdmFpbGFibGVHcm91cHMkID0gdGhpcy5wcm9qZWN0TmFtZSQkLnBpcGUoXG4gICAgc3dpdGNoTWFwKHByb2plY3ROYW1lID0+XG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdE5hbWVzcGFjZXNCeVByb2plY3ROYW1lKHByb2plY3ROYW1lKSxcbiAgICApLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgKTtcblxuICBoYXNOYW1lc3BhY2UkID0gdGhpcy5hdmFpbGFibGVHcm91cHMkLnBpcGUoXG4gICAgbWFwKGdyb3VwcyA9PlxuICAgICAgaGVhZChcbiAgICAgICAgZ3JvdXBzXG4gICAgICAgICAgLm1hcCgoW2NsdXN0ZXIsIG5hbWVzcGFjZXNdKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuYW1lc3BhY2UgPSBoZWFkKG5hbWVzcGFjZXMpO1xuXG4gICAgICAgICAgICBpZiAoIW5hbWVzcGFjZSkge1xuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgY2x1c3RlcjogdGhpcy5uYW1lKGNsdXN0ZXIpLFxuICAgICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUobmFtZXNwYWNlKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gISFpdGVtKSxcbiAgICAgICksXG4gICAgKSxcbiAgICB0YXAoZmlyc3QgPT4ge1xuICAgICAgLy8gVE9ETzogdGVtcCBmaXggZm9yIGFzbVxuICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkICYmICFmaXJzdCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQobnVsbCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZCAmJiBmaXJzdCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQoZmlyc3QpO1xuICAgICAgfVxuICAgIH0pLFxuICAgIG1hcChmaXJzdCA9PiAhIWZpcnN0KSxcbiAgICBwdWJsaXNoUmVmKCksXG4gICk7XG5cbiAgZ3JvdXBzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMua2V5d29yZCQkLnBpcGUoXG4gICAgICBzdGFydFdpdGgoJycpLFxuICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgdGhpcy5mb2N1c2VkTWVudUl0ZW1JbmRleCA9IC0xO1xuICAgICAgfSksXG4gICAgKSxcbiAgICB0aGlzLmF2YWlsYWJsZUdyb3VwcyQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChba2V5d29yZHMsIGdyb3Vwc10pID0+XG4gICAgICBncm91cHMubWFwKChbY2x1c3RlciwgbmFtZXNwYWNlc10pID0+ICh7XG4gICAgICAgIGNsdXN0ZXIsXG4gICAgICAgIG5hbWVzcGFjZXM6IChuYW1lc3BhY2VzIHx8IFtdKS5maWx0ZXIobmFtZXNwYWNlID0+XG4gICAgICAgICAgdGhpcy5uYW1lKG5hbWVzcGFjZSkuaW5jbHVkZXMoa2V5d29yZHMpLFxuICAgICAgICApLFxuICAgICAgfSkpLFxuICAgICksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmU6IENvbW1vbkxheW91dFN0b3JlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGs4c1V0aWw6IEs4c1V0aWxTZXJ2aWNlLFxuICAgIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge1xuICAgIHN1cGVyKGNkcik7XG4gIH1cblxuICBuYW1lID0gKGl0ZW06IEt1YmVybmV0ZXNSZXNvdXJjZSkgPT4gdGhpcy5rOHNVdGlsLmdldE5hbWUoaXRlbSk7XG5cbiAgaXNBY3RpdmUgPSAoXG4gICAgaXRlbTogS3ViZXJuZXRlc1Jlc291cmNlLFxuICAgIHNlbGVjdGVkOiBOYW1lc3BhY2VJZGVudGl0eSxcbiAgICB7XG4gICAgICBncm91cDogeyBjbHVzdGVyIH0sXG4gICAgICBncm91cHMsXG4gICAgICBpLFxuICAgICAgaixcbiAgICAgIGZvY3VzZWRNZW51SXRlbUluZGV4LFxuICAgIH06IHtcbiAgICAgIGdyb3VwOiB7IGNsdXN0ZXI6IEt1YmVybmV0ZXNSZXNvdXJjZSB9O1xuICAgICAgZ3JvdXBzOiBBcnJheTx7IG5hbWVzcGFjZXM6IHVua25vd25bXSB9PjtcbiAgICAgIGk6IG51bWJlcjtcbiAgICAgIGo6IG51bWJlcjtcbiAgICAgIGZvY3VzZWRNZW51SXRlbUluZGV4OiBudW1iZXI7XG4gICAgfSxcbiAgKSA9PiB7XG4gICAgaWYgKCFzZWxlY3RlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBpc1NlbGVjdGVkID1cbiAgICAgIHRoaXMubmFtZShjbHVzdGVyKSA9PT0gc2VsZWN0ZWQuY2x1c3RlciAmJlxuICAgICAgdGhpcy5uYW1lKGl0ZW0pID09PSBzZWxlY3RlZC5uYW1lO1xuICAgIGlmIChpc1NlbGVjdGVkKSB7XG4gICAgICByZXR1cm4gaXNTZWxlY3RlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgZm9jdXNlZE1lbnVJdGVtSW5kZXggLVxuICAgICAgICBncm91cHMucmVkdWNlKFxuICAgICAgICAgIChhY2MsIGN1cnIsIGluZGV4KSA9PlxuICAgICAgICAgICAgaW5kZXggPj0gaSA/IGFjYyA6IGN1cnIubmFtZXNwYWNlcy5sZW5ndGggKyBhY2MsXG4gICAgICAgICAgMCxcbiAgICAgICAgKSA9PT1cbiAgICAgIGpcbiAgICApO1xuICB9O1xuXG4gIHRyYWNrRm4gPSAoXzogbnVtYmVyLCBpdGVtOiBLdWJlcm5ldGVzUmVzb3VyY2UpID0+IHRoaXMubmFtZShpdGVtKTtcblxuICBncm91cFRyYWNrRm4gPSAoXG4gICAgXzogbnVtYmVyLFxuICAgIHtcbiAgICAgIGNsdXN0ZXIsXG4gICAgfTogeyBjbHVzdGVyOiBLdWJlcm5ldGVzUmVzb3VyY2U7IG5hbWVzcGFjZXM6IEt1YmVybmV0ZXNSZXNvdXJjZVtdIH0sXG4gICkgPT4gdGhpcy5uYW1lKGNsdXN0ZXIpO1xuXG4gIGhhc1Jlc3VsdChncm91cHM6IEdyb3VwW10pIHtcbiAgICByZXR1cm4gZ3JvdXBzLnNvbWUoZ3JvdXAgPT4gISFncm91cC5uYW1lc3BhY2VzLmxlbmd0aCk7XG4gIH1cblxuICBvblNlbGVjdChcbiAgICB7IGNsdXN0ZXIgfTogeyBjbHVzdGVyOiBLdWJlcm5ldGVzUmVzb3VyY2UgfSxcbiAgICBuYW1lc3BhY2U6IEt1YmVybmV0ZXNSZXNvdXJjZSxcbiAgKSB7XG4gICAgaWYgKFxuICAgICAgaXNFcXVhbCh0aGlzLnNlbGVjdGVkLCB7XG4gICAgICAgIGNsdXN0ZXI6IHRoaXMubmFtZShjbHVzdGVyKSxcbiAgICAgICAgbmFtZXNwYWNlOiB0aGlzLm5hbWUobmFtZXNwYWNlKSxcbiAgICAgIH0pXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHtcbiAgICAgIGNsdXN0ZXI6IHRoaXMubmFtZShjbHVzdGVyKSxcbiAgICAgIG5hbWU6IHRoaXMubmFtZShuYW1lc3BhY2UpLFxuICAgIH0pO1xuICB9XG5cbiAgc2VsZWN0QnlJbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5ncm91cHMkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGdyb3VwcyA9PiB7XG4gICAgICBmb3IgKGNvbnN0IFtpLCBncm91cF0gb2YgZ3JvdXBzLmVudHJpZXMoKSkge1xuICAgICAgICBjb25zdCBuYW1lc3BhY2VzID0gZ3JvdXAubmFtZXNwYWNlcztcbiAgICAgICAgaW5kZXggPSBpbmRleCAtIGk7XG4gICAgICAgIGlmIChpbmRleCA8IG5hbWVzcGFjZXMubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5vblNlbGVjdChncm91cCwgbmFtZXNwYWNlc1tpbmRleF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJhY2wtbmFtZXNwYWNlLXNlbGVjdFwiXG4gIFtjbGFzcy5kaXNhYmxlZF09XCIhKGhhc05hbWVzcGFjZSQgfCBhc3luYylcIlxuPlxuICA8YVxuICAgICpuZ0lmPVwiaGFzTmFtZXNwYWNlJCB8IGFzeW5jOyBlbHNlIGVtcHR5XCJcbiAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICBbYXVpRHJvcGRvd25dPVwibWVudVwiXG4gICAgW2F1aURyb3Bkb3duUG9zaXRpb25dPVwiJ2JvdHRvbSBzdGFydCdcIlxuICAgIFthdWlEcm9wZG93bkNsYXNzXT1cIidhY2wtbmFtZXNwYWNlLXNlbGVjdF9fbWVudSdcIlxuICAgIGF1aURyb3Bkb3duQWN0aXZlPVwiYWNsLW5hbWVzcGFjZS1zZWxlY3QtLWFjdGl2ZVwiXG4gICAgKGF1aURyb3Bkb3duVmlzaWJsZUNoYW5nZSk9XCJoYW5kbGVNZW51VmlzaWJsZSgkZXZlbnQpXCJcbiAgICB0aXRsZT1cInt7ICduYW1lc3BhY2UnIHwgdHJhbnNsYXRlIH19OiB7eyBzZWxlY3RlZD8ubmFtZSB9fVwiXG4gID5cbiAgICA8YXVpLWljb25cbiAgICAgIGljb249XCJwcm9kOm5hbWVzcGFjZVwiXG4gICAgICBzaXplPVwiMTZweFwiXG4gICAgICBjb2xvcj1cIiNmZmZcIlxuICAgID48L2F1aS1pY29uPlxuICAgIDxuZy1jb250YWluZXI+XG4gICAgICA8c3Bhbj57eyBzZWxlY3RlZCA/IHNlbGVjdGVkLm5hbWUgOiAnLScgfX08L3NwYW4+XG4gICAgICA8YXVpLWljb25cbiAgICAgICAgaWNvbj1cImNhcmV0X2Rvd25fc1wiXG4gICAgICAgIHNpemU9XCIxNnB4XCJcbiAgICAgID48L2F1aS1pY29uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2E+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNtZW51XG4gID48YXVpLW1lbnVcbiAgICA+PGRpdiBjbGFzcz1cImFjbC1uYW1lc3BhY2Utc2VsZWN0X19pbnB1dFwiPlxuICAgICAgPGF1aS1zZWFyY2hcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidmaWx0ZXJfYnlfbmFtZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbc2VhcmNoQnV0dG9uXT1cImZhbHNlXCJcbiAgICAgICAgW2tleXdvcmRdPVwia2V5d29yZCQkIHwgYXN5bmNcIlxuICAgICAgICAoa2V5d29yZENoYW5nZSk9XCJrZXl3b3JkJCQubmV4dCgkZXZlbnQpXCJcbiAgICAgID48L2F1aS1zZWFyY2g+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyb3VwcyQgfCBhc3luYyBhcyBncm91cHNcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJhY2wtbmFtZXNwYWNlLXNlbGVjdF9fb3B0aW9uc1wiXG4gICAgICAgICpuZ0lmPVwiZ3JvdXBzIHwgcHVyZTogaGFzUmVzdWx0OyBlbHNlIG5vUmVzdWx0XCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBncm91cCBvZiBncm91cHM7IGluZGV4IGFzIGk7IHRyYWNrQnk6IGdyb3VwVHJhY2tGblwiXG4gICAgICAgID5cbiAgICAgICAgICA8YXVpLW1lbnUtZ3JvdXAgKm5nSWY9XCJncm91cC5uYW1lc3BhY2VzPy5sZW5ndGhcIj5cbiAgICAgICAgICAgIDxzcGFuIGF1aU1lbnVHcm91cFRpdGxlPnt7IGdyb3VwLmNsdXN0ZXIgfCBhY2xEaXNwbGF5TmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxhdWktbWVudS1pdGVtXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBpdGVtIG9mIGdyb3VwLm5hbWVzcGFjZXM7XG4gICAgICAgICAgICAgICAgaW5kZXggYXMgajtcbiAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0ZuXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFthY3RpdmVkXT1cIlxuICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgIHwgcHVyZVxuICAgICAgICAgICAgICAgICAgICA6IGlzQWN0aXZlXG4gICAgICAgICAgICAgICAgICAgIDogc2VsZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogZ3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cHM6IGdyb3VwcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGk6IGksXG4gICAgICAgICAgICAgICAgICAgICAgICBqOiBqLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNlZE1lbnVJdGVtSW5kZXg6IGZvY3VzZWRNZW51SXRlbUluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3QoZ3JvdXAsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBpdGVtIHwgYWNsTmFtZSB9fVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0gfCBhY2xOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbSB8IGFjbERpc3BsYXlOYW1lXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFjbC1uYW1lc3BhY2Utc2VsZWN0X19kaXNwbGF5LW5hbWVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgKHt7IGl0ZW0gfCBhY2xEaXNwbGF5TmFtZSB9fSlcbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9hdWktbWVudS1pdGVtPlxuICAgICAgICAgIDwvYXVpLW1lbnUtZ3JvdXA+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvYXVpLW1lbnU+PC9uZy10ZW1wbGF0ZVxuPlxuXG48bmctdGVtcGxhdGUgI2VtcHR5PlxuICA8YSBocmVmPVwiamF2YXNjcmlwdDo7XCI+XG4gICAgPGF1aS1pY29uXG4gICAgICBpY29uPVwicHJvZDpuYW1lc3BhY2VcIlxuICAgICAgc2l6ZT1cIjE2cHhcIlxuICAgICAgY29sb3I9XCIjZmZmXCJcbiAgICA+PC9hdWktaWNvbj5cbiAgICA8c3Bhbj57eyAnbm9fbmFtZXNwYWNlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICA8YXVpLWljb25cbiAgICAgIGljb249XCJjYXJldF9kb3duX3NcIlxuICAgICAgc2l6ZT1cIjE2cHhcIlxuICAgICAgY29sb3I9XCIjOTk5XCJcbiAgICA+PC9hdWktaWNvbj5cbiAgPC9hPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNub1Jlc3VsdD5cbiAgPGRpdiBjbGFzcz1cImFjbC1uYW1lc3BhY2Utc2VsZWN0X19uby1yZXN1bHRcIj5cbiAgICB7eyAnbm9fbmFtZXNwYWNlJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=