@cqa-lib/cqa-ui 1.1.557-beta.20 → 1.1.557-beta.24
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/esm2022/lib/dialog/dialog.component.mjs +7 -2
- package/esm2022/lib/sidebar/nav-item.component.mjs +3 -3
- package/esm2022/lib/sidebar/nav-menu.component.mjs +3 -3
- package/esm2022/lib/sidebar/nav-sub-item.component.mjs +3 -3
- package/esm2022/lib/sidebar/profile-menu/profile-menu.component.mjs +128 -0
- package/esm2022/lib/sidebar/profile-menu/profile-menu.models.mjs +4 -0
- package/esm2022/lib/sidebar/sidebar.component.mjs +61 -12
- package/esm2022/lib/sidebar/sidebar.models.mjs +2 -1
- package/esm2022/lib/templates/modular-table-template/modular-table-template.component.mjs +3 -3
- package/esm2022/lib/ui-kit.module.mjs +6 -1
- package/esm2022/lib/utils/tw-overlay-container.mjs +2 -1
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/cqa-lib-cqa-ui.mjs +221 -38
- package/fesm2022/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/sidebar/profile-menu/profile-menu.component.d.ts +35 -0
- package/lib/sidebar/profile-menu/profile-menu.models.d.ts +35 -0
- package/lib/sidebar/sidebar.component.d.ts +24 -4
- package/lib/sidebar/sidebar.models.d.ts +1 -0
- package/lib/ui-kit.module.d.ts +158 -157
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/styles.css +1 -1
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
1
|
+
import { Component, Input, Output, EventEmitter, ViewChild, } from '@angular/core';
|
|
2
2
|
import { isNavSection } from './sidebar.models';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@angular/platform-browser";
|
|
5
5
|
import * as i2 from "@angular/common";
|
|
6
6
|
import * as i3 from "@angular/material/tooltip";
|
|
7
7
|
import * as i4 from "./nav-menu.component";
|
|
8
|
+
import * as i5 from "./profile-menu/profile-menu.component";
|
|
8
9
|
export class SidebarComponent {
|
|
9
10
|
sanitizer;
|
|
10
11
|
config = {};
|
|
@@ -12,6 +13,17 @@ export class SidebarComponent {
|
|
|
12
13
|
activeNavId = '';
|
|
13
14
|
/** Parent item IDs to open by default (in addition to the one containing the active item). */
|
|
14
15
|
initialOpenParentIds = [];
|
|
16
|
+
/**
|
|
17
|
+
* User details rendered in the profile-menu popover header. Required for the popover
|
|
18
|
+
* to open; when undefined the profile card retains its legacy single-action behavior
|
|
19
|
+
* (clicking it directly fires `logoutClick`).
|
|
20
|
+
*/
|
|
21
|
+
profileUser;
|
|
22
|
+
/**
|
|
23
|
+
* Menu entries shown inside the profile-menu popover. Provide at least one entry to
|
|
24
|
+
* enable the popover; an empty array preserves the legacy `logoutClick` behavior.
|
|
25
|
+
*/
|
|
26
|
+
profileMenuEntries = [];
|
|
15
27
|
navItemClick = new EventEmitter();
|
|
16
28
|
ctaClick = new EventEmitter();
|
|
17
29
|
searchClick = new EventEmitter();
|
|
@@ -22,10 +34,13 @@ export class SidebarComponent {
|
|
|
22
34
|
speakerClick = new EventEmitter();
|
|
23
35
|
liveChatClick = new EventEmitter();
|
|
24
36
|
expandedChange = new EventEmitter();
|
|
37
|
+
/** Emits `ProfileMenuItem.id` when the user activates an entry in the profile popover. */
|
|
38
|
+
profileMenuItemClick = new EventEmitter();
|
|
39
|
+
profileAnchorRef;
|
|
25
40
|
isExpanded = false;
|
|
26
|
-
/** When true, expanded state is kept until the user collapses (mouse leave does not close). */
|
|
27
41
|
isPinned = false;
|
|
28
42
|
openParents = [];
|
|
43
|
+
isProfileMenuOpen = false;
|
|
29
44
|
leaveCollapseTimer = null;
|
|
30
45
|
static LEAVE_COLLAPSE_MS = 220;
|
|
31
46
|
constructor(sanitizer) {
|
|
@@ -57,6 +72,21 @@ export class SidebarComponent {
|
|
|
57
72
|
this.ensureActiveParentOpen();
|
|
58
73
|
}
|
|
59
74
|
}
|
|
75
|
+
onProfileClick() {
|
|
76
|
+
if (this.profileUser && this.profileMenuEntries?.length) {
|
|
77
|
+
this.isProfileMenuOpen = !this.isProfileMenuOpen;
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
// Legacy single-action behaviour preserved for consumers that haven't migrated.
|
|
81
|
+
this.logoutClick.emit();
|
|
82
|
+
}
|
|
83
|
+
onProfileMenuItemClick(id) {
|
|
84
|
+
this.isProfileMenuOpen = false;
|
|
85
|
+
this.profileMenuItemClick.emit(id);
|
|
86
|
+
}
|
|
87
|
+
onProfileMenuDismissed() {
|
|
88
|
+
this.isProfileMenuOpen = false;
|
|
89
|
+
}
|
|
60
90
|
/** Burger: wide sidebar without pinning — collapses on mouse leave. */
|
|
61
91
|
openSidebar() {
|
|
62
92
|
this.clearLeaveCollapseTimer();
|
|
@@ -113,7 +143,12 @@ export class SidebarComponent {
|
|
|
113
143
|
}
|
|
114
144
|
}
|
|
115
145
|
onNavItemClick(id) {
|
|
116
|
-
|
|
146
|
+
// Submenu leaf: always emit navigation (child id was wrongly treated as a parent for toggle).
|
|
147
|
+
if (this.isChildNavId(id)) {
|
|
148
|
+
this.navItemClick.emit(id);
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const item = this.findTopLevelNavItem(id);
|
|
117
152
|
if (!item) {
|
|
118
153
|
this.navItemClick.emit(id);
|
|
119
154
|
return;
|
|
@@ -143,15 +178,20 @@ export class SidebarComponent {
|
|
|
143
178
|
this.openParents = [...this.openParents, id];
|
|
144
179
|
}
|
|
145
180
|
}
|
|
146
|
-
|
|
181
|
+
/** True if `id` matches a submenu row under some top-level nav item. */
|
|
182
|
+
isChildNavId(id) {
|
|
183
|
+
for (const item of this.navItems) {
|
|
184
|
+
if (isNavSection(item))
|
|
185
|
+
continue;
|
|
186
|
+
if (item.children?.some((c) => c.id === id))
|
|
187
|
+
return true;
|
|
188
|
+
}
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
findTopLevelNavItem(id) {
|
|
147
192
|
for (const item of this.navItems) {
|
|
148
193
|
if (!isNavSection(item) && item.id === id)
|
|
149
194
|
return item;
|
|
150
|
-
if (!isNavSection(item) && item.children) {
|
|
151
|
-
const child = item.children.find(c => c.id === id);
|
|
152
|
-
if (child)
|
|
153
|
-
return item;
|
|
154
|
-
}
|
|
155
195
|
}
|
|
156
196
|
return null;
|
|
157
197
|
}
|
|
@@ -166,11 +206,11 @@ export class SidebarComponent {
|
|
|
166
206
|
}
|
|
167
207
|
}
|
|
168
208
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SidebarComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
|
|
169
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SidebarComponent, selector: "cqa-sidebar", inputs: { config: "config", navItems: "navItems", activeNavId: "activeNavId", initialOpenParentIds: "initialOpenParentIds" }, outputs: { navItemClick: "navItemClick", ctaClick: "ctaClick", searchClick: "searchClick", workspaceSwitchClick: "workspaceSwitchClick", logoutClick: "logoutClick", notificationsClick: "notificationsClick", helpDocsClick: "helpDocsClick", speakerClick: "speakerClick", liveChatClick: "liveChatClick", expandedChange: "expandedChange" }, usesOnChanges: true, ngImport: i0, template: "<div id=\"cqa-ui-root\" style=\"display:block;height:100%\">\n <aside\n class=\"cqa-sb\"\n [class.cqa-sb--expanded]=\"isExpanded\"\n (mouseenter)=\"onAsideMouseEnter()\"\n (mouseleave)=\"onAsideMouseLeave($event)\">\n\n <!-- ===== 1. Workspace header ===== -->\n <div class=\"cqa-sb-header\" [class.cqa-sb-header--expanded]=\"isExpanded\">\n <!-- Collapsed: hamburger chip -->\n <button\n *ngIf=\"!isExpanded\"\n class=\"cqa-sb-burger\"\n (click)=\"openSidebar()\"\n type=\"button\"\n aria-label=\"Open sidebar\">\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"1.33\" stroke-linecap=\"round\"\n width=\"16\" height=\"16\">\n <line x1=\"2\" y1=\"4\" x2=\"14\" y2=\"4\"/>\n <line x1=\"2\" y1=\"8\" x2=\"14\" y2=\"8\"/>\n <line x1=\"2\" y1=\"12\" x2=\"14\" y2=\"12\"/>\n </svg>\n </button>\n\n <!-- Expanded: workspace selector + pin (unpinned) or close (pinned) -->\n <ng-container *ngIf=\"isExpanded\">\n <button class=\"cqa-sb-ws\" type=\"button\" (click)=\"workspaceSwitchClick.emit()\">\n <span class=\"cqa-sb-ws-main\">\n <span class=\"cqa-sb-ws-avatar\">\n <img *ngIf=\"workspaceLogoSafe; else wsInitialTpl\"\n class=\"cqa-sb-ws-logo\"\n [src]=\"workspaceLogoSafe\"\n [alt]=\"config?.workspaceName || 'Workspace logo'\" />\n <ng-template #wsInitialTpl>\n <span class=\"cqa-sb-ws-initial\">{{ workspaceInitial }}</span>\n </ng-template>\n <span *ngIf=\"config?.workspaceStatus === 'live'\" class=\"cqa-sb-ws-status\"></span>\n </span>\n <span class=\"cqa-sb-ws-info\">\n <span class=\"cqa-sb-ws-name-row\">\n <span class=\"cqa-sb-ws-name\">{{ config?.workspaceName || 'Workspace' }}</span>\n </span>\n </span>\n </span>\n <span class=\"cqa-sb-ws-switch\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 14 14\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"1.17\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n width=\"14\" height=\"14\">\n <polyline points=\"3,9 7,12 11,9\"/>\n <polyline points=\"3,5 7,2 11,5\"/>\n </svg>\n </span>\n </button>\n\n <button\n *ngIf=\"isPinned || config?.showSidebarPin !== false\"\n class=\"cqa-sb-pin-or-close\"\n type=\"button\"\n (click)=\"isPinned ? closeSidebar() : pinSidebar()\"\n [matTooltip]=\"isPinned ? 'Close sidebar' : 'Pin sidebar'\"\n [matTooltipPosition]=\"isPinned ? 'right' : 'left'\"\n [attr.aria-label]=\"isPinned ? 'Close sidebar' : 'Pin sidebar'\">\n <svg\n *ngIf=\"isPinned\"\n viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.35\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"18\" height=\"18\">\n <rect x=\"1.5\" y=\"1.5\" width=\"15\" height=\"15\" rx=\"2.5\"/>\n <line x1=\"6.5\" y1=\"1.5\" x2=\"6.5\" y2=\"16.5\"/>\n <polyline points=\"10.5,12 8.5,9 10.5,6\"/>\n </svg>\n <svg\n *ngIf=\"!isPinned\"\n viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.35\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"18\" height=\"18\">\n <path d=\"M9 3v4M7 3h4v4l2 3H5l2-3V3z\"/>\n <line x1=\"9\" y1=\"10\" x2=\"9\" y2=\"15\"/>\n </svg>\n </button>\n </ng-container>\n </div>\n\n <!-- ===== 2. Search ===== -->\n <div *ngIf=\"config?.showSearch !== false\" class=\"cqa-sb-search-wrap\">\n <button class=\"cqa-sb-search\" type=\"button\"\n [matTooltip]=\"!isExpanded ? 'Search' : ''\" matTooltipPosition=\"right\"\n (click)=\"searchClick.emit()\">\n <svg class=\"cqa-sb-search-icon\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"1.33\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"16\" height=\"16\">\n <circle cx=\"7\" cy=\"7\" r=\"4.5\"/>\n <line x1=\"10.5\" y1=\"10.5\" x2=\"13.5\" y2=\"13.5\"/>\n </svg>\n <span class=\"cqa-sb-search-text\" [class.cqa-sb-search-text--visible]=\"isExpanded\">\n {{ config?.searchPlaceholder || 'Search Anything...' }}\n </span>\n <span\n *ngIf=\"config?.showSearchShortcut !== false && isExpanded\"\n class=\"cqa-sb-search-kbd\">\u2318K</span>\n </button>\n </div>\n\n <!-- ===== 3. CTA ===== -->\n <div *ngIf=\"config?.showCta !== false\" class=\"cqa-sb-cta-wrap\">\n <button class=\"cqa-sb-cta\" type=\"button\"\n [matTooltip]=\"!isExpanded ? (config?.ctaLabel || 'New') : ''\" matTooltipPosition=\"right\"\n (click)=\"ctaClick.emit()\">\n <svg viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"\n stroke-linecap=\"round\" width=\"18\" height=\"18\">\n <line x1=\"9\" y1=\"3\" x2=\"9\" y2=\"15\"/>\n <line x1=\"3\" y1=\"9\" x2=\"15\" y2=\"9\"/>\n </svg>\n <span class=\"cqa-sb-cta-text\" [class.cqa-sb-cta-text--visible]=\"isExpanded\">\n {{ config?.ctaLabel || 'New Test Cases' }}\n </span>\n </button>\n </div>\n\n <!-- ===== 4. Nav menu ===== -->\n <cqa-nav-menu\n [items]=\"navItems\"\n [activeId]=\"activeNavId\"\n [isExpanded]=\"isExpanded\"\n [openParents]=\"openParents\"\n (itemClick)=\"onNavItemClick($event)\">\n </cqa-nav-menu>\n\n <!-- ===== 5. Utility bar ===== -->\n <div class=\"cqa-sb-utility\" [class.cqa-sb-utility--expanded]=\"isExpanded\">\n <!-- Expanded: 2 wide tiles (Help & docs + Live chat) -->\n <ng-container *ngIf=\"isExpanded\">\n <button\n *ngIf=\"config?.showHelpDocs !== false\"\n class=\"cqa-sb-util-tile\"\n type=\"button\"\n (click)=\"helpDocsClick.emit()\">\n <svg viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.35\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"18\" height=\"18\">\n <circle cx=\"9\" cy=\"9\" r=\"7.25\"/>\n <path d=\"M6.85 7a2.15 2.15 0 0 1 4.18.75c0 1.4-2.15 1.8-2.15 3.05\"/>\n <line x1=\"9\" y1=\"13.4\" x2=\"9.01\" y2=\"13.4\"/>\n </svg>\n <span class=\"cqa-sb-util-tile-label\">{{ config?.helpDocsLabel || 'Help & docs' }}</span>\n </button>\n\n <button\n *ngIf=\"config?.showLiveChat !== false\"\n class=\"cqa-sb-util-tile\"\n type=\"button\"\n (click)=\"liveChatClick.emit()\">\n <svg viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.35\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"18\" height=\"18\">\n <path d=\"M16 2H2a1 1 0 0 0-1 1v9a1 1 0 0 0 1 1h3v3l4.5-3H16a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z\"/>\n </svg>\n <span class=\"cqa-sb-util-tile-label\">Live chat</span>\n </button>\n </ng-container>\n\n <!-- Collapsed: help + live chat only (notifications / speaker are not shown on the rail) -->\n <ng-container *ngIf=\"!isExpanded\">\n <button\n *ngIf=\"config?.showHelpDocs !== false\"\n class=\"cqa-sb-util-compact\"\n type=\"button\"\n [matTooltip]=\"config?.helpDocsLabel || 'Help & docs'\" matTooltipPosition=\"right\"\n (click)=\"helpDocsClick.emit()\">\n <svg viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.35\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"18\" height=\"18\">\n <circle cx=\"9\" cy=\"9\" r=\"7.25\"/>\n <path d=\"M6.85 7a2.15 2.15 0 0 1 4.18.75c0 1.4-2.15 1.8-2.15 3.05\"/>\n <line x1=\"9\" y1=\"13.4\" x2=\"9.01\" y2=\"13.4\"/>\n </svg>\n </button>\n\n <button\n *ngIf=\"config?.showLiveChat !== false\"\n class=\"cqa-sb-util-compact\"\n type=\"button\"\n matTooltip=\"Live chat\" matTooltipPosition=\"right\"\n (click)=\"liveChatClick.emit()\">\n <svg viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.35\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"18\" height=\"18\">\n <path d=\"M16 2H2a1 1 0 0 0-1 1v9a1 1 0 0 0 1 1h3v3l4.5-3H16a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z\"/>\n </svg>\n </button>\n </ng-container>\n </div>\n\n <!-- ===== 6. Profile card ===== -->\n <button class=\"cqa-sb-profile\" type=\"button\"\n [matTooltip]=\"!isExpanded ? (config?.userName || '') : ''\" matTooltipPosition=\"right\"\n (click)=\"logoutClick.emit()\">\n <div class=\"cqa-sb-profile-avatar\">{{ config?.userInitials || '?' }}</div>\n <div class=\"cqa-sb-profile-info\" [class.cqa-sb-profile-info--visible]=\"isExpanded\">\n <span class=\"cqa-sb-profile-name\">{{ config?.userName }}</span>\n <span *ngIf=\"config?.userRole\" class=\"cqa-sb-profile-role\">{{ config.userRole }}</span>\n </div>\n <span *ngIf=\"isExpanded\" class=\"cqa-sb-profile-logout\" aria-label=\"Logout\">\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"16\" height=\"16\">\n <path d=\"M6 14H3a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h3\"/>\n <polyline points=\"11,11 14,8 11,5\"/>\n <line x1=\"14\" y1=\"8\" x2=\"6\" y2=\"8\"/>\n </svg>\n </span>\n </button>\n\n </aside>\n</div>\n", styles: [":host{display:flex;height:100%;flex-shrink:0}.cqa-sb{background:#3f43ee;color:#fff;height:100%;display:flex;flex-direction:column;flex-shrink:0;width:60px;transition:width .24s cubic-bezier(.32,.72,0,1);position:relative;z-index:50;overflow-x:visible;overflow-y:hidden}.cqa-sb--expanded{width:264px;overflow-x:hidden}.cqa-sb-header{padding:10px;position:relative;border-bottom:1px solid rgba(255,255,255,.08);min-height:51px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.cqa-sb-header--expanded{justify-content:flex-start;padding:12px 40px 11px 12px;min-height:71px;gap:0}.cqa-sb-burger{width:28px;height:28px;border-radius:7px;background:#d8d9fc2e;display:flex;align-items:center;justify-content:center;border:none;cursor:pointer;color:#d8d9fc;flex-shrink:0;transition:background .15s,color .15s}.cqa-sb-burger:hover{background:#d8d9fc47;color:#fff}.cqa-sb-pin-or-close{position:absolute;right:10px;top:50%;transform:translateY(calc(-50% + 1px));width:28px;height:28px;border-radius:7px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;cursor:pointer;color:#d8d9fc;flex-shrink:0;transition:background .15s,color .15s}.cqa-sb-pin-or-close:hover{background:#ffffff1a;color:#fff}.cqa-sb-ws{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 14px 6px 6px;border-radius:10px;transition:background .12s;flex:1;min-width:0;text-align:left;background:transparent;border:none;cursor:pointer;color:#fff;overflow:hidden}.cqa-sb-ws:hover{background:#ffffff14}.cqa-sb-ws-main{display:flex;align-items:center;gap:10px;min-width:0}.cqa-sb-ws-avatar{width:36px;height:36px;border-radius:9px;background:linear-gradient(135deg,#cce1f4,#d7e7f9);display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;box-shadow:0 1px 2px #0000001f,inset 0 0 0 1px #fff6;overflow:hidden}.cqa-sb-ws-avatar:after{content:\"\";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(to bottom,#ffffff80,#fff0 50%);pointer-events:none}.cqa-sb-ws-logo{position:relative;z-index:1;width:22px;height:26px;object-fit:contain;display:block}.cqa-sb-ws-initial{position:relative;z-index:1;color:#1216cc;font-weight:800;font-size:15px}.cqa-sb-ws-status{position:absolute;bottom:-3px;right:-3px;width:12px;height:12px;background:#0dbd7d;border-radius:50%;border:2.5px solid #3f43ee;box-shadow:0 0 6px #0dbd7d}.cqa-sb-ws-info{flex:1;min-width:0;overflow:hidden}.cqa-sb-ws-name-row{display:flex;align-items:center;gap:6px}.cqa-sb-ws-name{font-weight:600;font-size:14px;line-height:16.8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff}.cqa-sb-ws-badge{background:#0dbd7d2e;color:#5ed3a8;font-size:9.5px;font-weight:700;padding:1px 6px 1px 4px;border-radius:4px;display:inline-flex;align-items:center;gap:3px;flex-shrink:0;text-transform:uppercase;letter-spacing:.04em}.cqa-sb-ws-badge:before{content:\"\";width:4px;height:4px;background:#0dbd7d;border-radius:50%;box-shadow:0 0 6px #0dbd7d}.cqa-sb-ws-switch{color:#ffffff8c;flex-shrink:0;padding:4px 0 7px;display:flex;align-items:center}.cqa-sb-search-wrap{padding:8px 12px;flex-shrink:0}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-search-wrap{padding:8px 10px 6px;display:flex;justify-content:center}.cqa-sb-search{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:8px;min-height:38px;padding:0 13px;font-size:12px;letter-spacing:-.02em;color:#ffffff80;display:flex;align-items:center;gap:8px;width:100%;cursor:pointer;transition:all .15s;overflow:hidden;font-family:inherit}.cqa-sb-search:hover{background:#ffffff14;color:#ffffffbf;border-color:#ffffff29}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-search{padding:0;width:40px;max-width:40px;height:40px;min-height:40px;margin:0 auto;justify-content:center;align-items:center;gap:0;background:transparent;border-color:#d8d9fc;border-radius:9px}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-search .cqa-sb-search-text,.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-search .cqa-sb-search-kbd{flex:0 0 0;width:0;min-width:0;height:0;margin:0;padding:0;overflow:hidden;opacity:0;border:0;pointer-events:none}.cqa-sb-search-icon{flex-shrink:0;width:14px;height:14px}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-search-icon{width:16px;height:16px}.cqa-sb-search-text{flex:1;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:0;transition:opacity .16s 80ms}.cqa-sb-search-text--visible{opacity:1}.cqa-sb-search-kbd{font-size:10.5px;background:#ffffff26;padding:2px 6px;border-radius:4px;color:#ffffffd9;font-family:ui-monospace,monospace;flex-shrink:0;opacity:0;transition:opacity .16s 80ms}.cqa-sb-search-kbd--visible{opacity:1}.cqa-sb-cta-wrap{padding:0 12px 12px;flex-shrink:0}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-cta-wrap{padding:0 10px 12px;display:flex;justify-content:center}.cqa-sb-cta{background:#5256f0;color:#fbfcff;border:none;border-radius:8px;padding:10px 24px 10px 16px;font-size:14px;font-weight:600;line-height:14px;letter-spacing:0;width:100%;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;transition:background .15s,transform .15s;overflow:hidden;font-family:inherit}.cqa-sb-cta:hover{background:#5b5ff2;transform:translateY(-1px)}.cqa-sb-cta:active{transform:translateY(0)}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-cta{padding:0;width:40px;height:40px;min-height:40px;margin:0 auto;position:relative;background:transparent;color:#fff}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-cta:before{content:\"\";position:absolute;inset:0;border-radius:9px;background:#b1b2f838;pointer-events:none}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-cta svg{position:relative;z-index:1;width:16px;height:16px}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-cta{box-shadow:inset 0 0 0 1px #d8d9fc38}.cqa-sb-cta-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:0;transition:opacity .16s 80ms;position:relative;z-index:1}.cqa-sb-cta-text--visible{opacity:1}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-cta-text{display:none}.cqa-sb-utility{border-top:none;box-shadow:inset 0 1px #ffffff1a;flex-shrink:0}.cqa-sb-utility--expanded{display:flex;align-items:center;justify-content:space-between;height:68px;gap:0;padding:9px 10px 8px}.cqa-sb-utility:not(.cqa-sb-utility--expanded){display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:1px;padding:6px 10px}.cqa-sb-util-tile{width:110px;max-width:110px;border-radius:9px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:8px 6px 6px;color:#ffffffd9;background:#ffffff0f;border:none;cursor:pointer;transition:background .12s,color .12s;font-family:inherit}.cqa-sb-util-tile:hover{background:#b1b2f838;color:#fff}.cqa-sb-util-tile-label{font-size:10.5px;font-weight:600;line-height:10.5px;letter-spacing:.105px;text-align:center;white-space:nowrap}.cqa-sb-util-compact{position:relative;width:36px;height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:#ffffffe0;background:transparent;border:none;cursor:pointer;transition:background .12s,color .12s;padding:0;flex-shrink:0}.cqa-sb-util-compact:hover{background:#ffffff14;color:#fff}.cqa-sb-util-compact-dot{position:absolute;top:6px;right:6px;width:8px;height:8px;background:#ee3f3f;border-radius:4px;border:2px solid #3f43ee;pointer-events:none}.cqa-sb-profile{border-top:1px solid rgba(255,255,255,.1);padding:13px 14px 12px;display:flex;align-items:center;gap:12px;background:#00000029;transition:background .15s;overflow:hidden;position:relative;width:100%;flex-shrink:0;border-left:none;border-right:none;border-bottom:none;cursor:pointer;color:#fff;font-family:inherit}.cqa-sb-profile:hover{background:#00000042}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-profile{justify-content:center;padding:12px 0;gap:0;background:#0000001f;border-top-color:#ffffff1f}.cqa-sb-profile-avatar{width:34px;height:34px;border-radius:17px;background:linear-gradient(135deg,#f472b6,#db2777);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0;box-shadow:0 0 0 2px #ffffff26}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-profile-avatar{width:32px;height:32px;border-radius:16px;font-size:11.5px}.cqa-sb-profile-info{flex:1;min-width:0;overflow:hidden;opacity:0;transition:opacity .16s 80ms;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:4px}.cqa-sb-profile-info--visible{opacity:1}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-profile-info{display:none}.cqa-sb-profile-name{font-weight:600;font-size:12.5px;line-height:13.75px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff}.cqa-sb-profile-role{display:inline-block;font-size:9px;font-weight:700;background:#d8d9fc38;padding:3px 8px;border-radius:999px;line-height:12.6px;color:#fff;border:1px solid rgba(216,217,252,.2);white-space:nowrap;align-self:flex-start}.cqa-sb-profile-logout{color:#ffffff8c;padding:6px 6px 9px;border-radius:6px;flex-shrink:0;transition:background .12s,color .12s;display:flex;align-items:center}.cqa-sb-profile-logout:hover{background:#ffffff1f;color:#fff}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i4.NavMenuComponent, selector: "cqa-nav-menu", inputs: ["items", "activeId", "isExpanded", "openParents"], outputs: ["itemClick"] }] });
|
|
209
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SidebarComponent, selector: "cqa-sidebar", inputs: { config: "config", navItems: "navItems", activeNavId: "activeNavId", initialOpenParentIds: "initialOpenParentIds", profileUser: "profileUser", profileMenuEntries: "profileMenuEntries" }, outputs: { navItemClick: "navItemClick", ctaClick: "ctaClick", searchClick: "searchClick", workspaceSwitchClick: "workspaceSwitchClick", logoutClick: "logoutClick", notificationsClick: "notificationsClick", helpDocsClick: "helpDocsClick", speakerClick: "speakerClick", liveChatClick: "liveChatClick", expandedChange: "expandedChange", profileMenuItemClick: "profileMenuItemClick" }, viewQueries: [{ propertyName: "profileAnchorRef", first: true, predicate: ["profileAnchor"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div id=\"cqa-ui-root\" class=\"cqa-sb-root\">\n <aside\n class=\"cqa-sb\"\n [class.cqa-sb--expanded]=\"isExpanded\"\n (mouseenter)=\"onAsideMouseEnter()\"\n (mouseleave)=\"onAsideMouseLeave($event)\">\n\n <!-- ===== 1. Workspace header ===== -->\n <div class=\"cqa-sb-header\" [class.cqa-sb-header--expanded]=\"isExpanded\">\n <!-- Collapsed: hamburger chip -->\n <button\n *ngIf=\"!isExpanded\"\n class=\"cqa-sb-burger\"\n (click)=\"openSidebar()\"\n type=\"button\"\n aria-label=\"Open sidebar\">\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"1.33\" stroke-linecap=\"round\"\n width=\"16\" height=\"16\">\n <line x1=\"2\" y1=\"4\" x2=\"14\" y2=\"4\"/>\n <line x1=\"2\" y1=\"8\" x2=\"14\" y2=\"8\"/>\n <line x1=\"2\" y1=\"12\" x2=\"14\" y2=\"12\"/>\n </svg>\n </button>\n\n <!-- Expanded: workspace selector + pin (unpinned) or close (pinned) -->\n <ng-container *ngIf=\"isExpanded\">\n <button class=\"cqa-sb-ws\" type=\"button\" (click)=\"workspaceSwitchClick.emit()\">\n <span class=\"cqa-sb-ws-main\">\n <span class=\"cqa-sb-ws-avatar\">\n <img *ngIf=\"workspaceLogoSafe; else defaultLogoTpl\"\n class=\"cqa-sb-ws-logo\"\n [src]=\"workspaceLogoSafe\"\n [alt]=\"config?.workspaceName || 'Workspace logo'\" />\n <ng-template #defaultLogoTpl>\n <svg class=\"cqa-sb-ws-default\" width=\"36\" height=\"36\" viewBox=\"0 0 40 40\"\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"9\" fill=\"url(#cqa-sb-ws-grad)\"/>\n <g filter=\"url(#cqa-sb-ws-shadow)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"9\" fill=\"white\" fill-opacity=\"0.01\" shape-rendering=\"crispEdges\"/>\n </g>\n <rect width=\"8.07969\" height=\"2.59969\" rx=\"1.29985\" transform=\"matrix(0.0555427 -0.998456 0.998194 0.0600698 10.3188 28.9912)\" fill=\"#97AFC5\"/>\n <rect width=\"8.0708\" height=\"2.60278\" rx=\"1.30139\" transform=\"matrix(-0.173269 -0.984874 0.982367 -0.186964 27.3413 29.4043)\" fill=\"#97AFC5\"/>\n <path d=\"M11.1884 23.5958C11.4549 23.7473 11.7865 23.6502 11.9291 23.3789L13.3623 20.6523C13.5049 20.381 13.4045 20.0382 13.1381 19.8867C12.2055 19.3564 11.0448 19.6964 10.5457 20.646L10.4037 20.9162C9.90451 21.8658 10.2559 23.0655 11.1884 23.5958Z\" fill=\"#C2DBF2\"/>\n <path d=\"M11.6714 22.4677C11.6714 20.1863 13.5208 18.3369 15.8022 18.3369H23.9505C26.2319 18.3369 28.0813 20.1863 28.0813 22.4677V23.7953C28.0813 28.3268 24.4078 32.0003 19.8764 32.0003C15.3449 32.0003 11.6714 28.3268 11.6714 23.7953V22.4677Z\" fill=\"#D7E7F9\"/>\n <path d=\"M28.8116 23.7315C28.5451 23.883 28.2135 23.7859 28.0709 23.5146L26.6377 20.7881C26.4951 20.5167 26.5955 20.174 26.8619 20.0225C27.7945 19.4922 28.9552 19.8321 29.4543 20.7817L29.5963 21.0519C30.0955 22.0015 29.7441 23.2012 28.8116 23.7315Z\" fill=\"#C2DBF2\"/>\n <path d=\"M26.3774 19.1758C26.3774 19.8026 23.4762 20.3107 19.8974 20.3107C16.3186 20.3107 13.4175 19.8026 13.4175 19.1758C13.4175 18.5491 16.3186 18.041 19.8974 18.041C23.4762 18.041 26.3774 18.5491 26.3774 19.1758Z\" fill=\"#C2DBF2\"/>\n <path d=\"M21.7507 26.7785L21.6221 26.6448C22.1471 25.7868 22.0506 24.6335 21.3329 23.8869C20.5026 23.0234 19.1473 23.0234 18.317 23.8869C17.4868 24.7505 17.4868 26.1601 18.317 27.0236C19.0348 27.7702 20.1437 27.8705 20.9686 27.3245L21.0972 27.4582L21.2686 27.6365C21.4507 27.8259 21.7453 27.8259 21.9221 27.6365C22.1042 27.4471 22.1042 27.1406 21.9221 26.9568L21.7507 26.7785ZM18.9706 26.3439C18.4992 25.8536 18.4992 25.0569 18.9706 24.5722C19.4419 24.0819 20.208 24.0819 20.674 24.5722C21.0275 24.9399 21.1132 25.4804 20.9365 25.9372C20.8775 26.0876 20.7918 26.2269 20.674 26.3439C20.5561 26.4665 20.4222 26.5556 20.2829 26.6169C19.8491 26.8008 19.3241 26.7116 18.9706 26.3439Z\" fill=\"#6366F1\"/>\n <rect width=\"17.4575\" height=\"10.8035\" rx=\"5.40176\" transform=\"matrix(0.999918 0.0128129 -0.0118443 0.99993 11.1401 6.9248)\" fill=\"#D7E7F9\"/>\n <path d=\"M11.9068 9.74961C12.2603 9.75414 12.5435 10.0444 12.5393 10.3979L12.4926 14.3376C12.4884 14.6911 12.1985 14.974 11.845 14.9694C10.6078 14.9536 9.61668 13.9377 9.63133 12.7005L9.64009 11.9611C9.65475 10.7239 10.6696 9.73376 11.9068 9.74961Z\" fill=\"#C2DBF2\"/>\n <path d=\"M27.7011 15.1723C27.3476 15.1677 27.0644 14.8775 27.0686 14.524L27.1153 10.5843C27.1195 10.2308 27.4094 9.94792 27.7629 9.95245C29.0001 9.9683 29.9912 10.9841 29.9766 12.2214L29.9678 12.9607C29.9532 14.198 28.9383 15.1881 27.7011 15.1723Z\" fill=\"#C2DBF2\"/>\n <rect width=\"13.0931\" height=\"6.80894\" rx=\"3.40447\" transform=\"matrix(0.999918 0.0128129 -0.0118443 0.99993 13.2988 8.9502)\" fill=\"#2F445B\"/>\n <ellipse cx=\"0.872874\" cy=\"0.907858\" rx=\"0.872874\" ry=\"0.907858\" transform=\"matrix(0.999918 0.0128129 -0.0118443 0.99993 22.2153 11.5605)\" fill=\"#6366F1\"/>\n <ellipse cx=\"0.872874\" cy=\"0.907858\" rx=\"0.872874\" ry=\"0.907858\" transform=\"matrix(0.999918 0.0128129 -0.0118443 0.99993 15.6255 11.4766)\" fill=\"#6366F1\"/>\n <path d=\"M16.9047 6.66572C16.9091 6.29805 17.2106 6.00382 17.5783 6.00853L22.1819 6.06752C22.5496 6.07223 22.8441 6.3741 22.8398 6.74177C22.8245 8.02859 21.769 9.05841 20.4822 9.04192L19.2071 9.02558C17.9203 9.00909 16.8895 7.95254 16.9047 6.66572Z\" fill=\"#C2DBF2\"/>\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"9\" fill=\"url(#cqa-sb-ws-gloss)\"/>\n <defs>\n <filter id=\"cqa-sb-ws-shadow\" x=\"0\" y=\"0\" width=\"40\" height=\"40\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/>\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\"/>\n <feOffset dy=\"1\"/>\n <feGaussianBlur stdDeviation=\"1\"/>\n <feComposite in2=\"hardAlpha\" operator=\"out\"/>\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.12 0\"/>\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow\"/>\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\"/>\n <feMorphology radius=\"1\" operator=\"erode\" in=\"SourceAlpha\" result=\"effect2_innerShadow\"/>\n <feOffset/>\n <feComposite in2=\"hardAlpha\" operator=\"arithmetic\" k2=\"-1\" k3=\"1\"/>\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.4 0\"/>\n <feBlend mode=\"normal\" in2=\"effect1_dropShadow\" result=\"effect2_innerShadow\"/>\n </filter>\n <linearGradient id=\"cqa-sb-ws-grad\" x1=\"2\" y1=\"1\" x2=\"38\" y2=\"37\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#CCE1F4\"/>\n <stop offset=\"1\" stop-color=\"#D7E7F9\"/>\n </linearGradient>\n <linearGradient id=\"cqa-sb-ws-gloss\" x1=\"20\" y1=\"1\" x2=\"20\" y2=\"37\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"white\" stop-opacity=\"0.5\"/>\n <stop offset=\"0.5\" stop-color=\"white\" stop-opacity=\"0\"/>\n </linearGradient>\n </defs>\n </svg>\n </ng-template>\n <span *ngIf=\"config?.workspaceStatus === 'live'\" class=\"cqa-sb-ws-status\"></span>\n </span>\n <span class=\"cqa-sb-ws-info\">\n <span class=\"cqa-sb-ws-name-row\">\n <span class=\"cqa-sb-ws-name\">{{ config?.workspaceName || 'Workspace' }}</span>\n </span>\n </span>\n </span>\n <span class=\"cqa-sb-ws-switch\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 14 14\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"1.17\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n width=\"14\" height=\"14\">\n <polyline points=\"3,9 7,12 11,9\"/>\n <polyline points=\"3,5 7,2 11,5\"/>\n </svg>\n </span>\n </button>\n\n <button\n *ngIf=\"isPinned || config?.showSidebarPin !== false\"\n class=\"cqa-sb-pin-or-close\"\n type=\"button\"\n (click)=\"isPinned ? closeSidebar() : pinSidebar()\"\n [matTooltip]=\"isPinned ? 'Close sidebar' : 'Pin sidebar'\"\n [matTooltipPosition]=\"isPinned ? 'right' : 'left'\"\n [attr.aria-label]=\"isPinned ? 'Close sidebar' : 'Pin sidebar'\">\n <svg\n *ngIf=\"isPinned\"\n viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.35\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"18\" height=\"18\">\n <rect x=\"1.5\" y=\"1.5\" width=\"15\" height=\"15\" rx=\"2.5\"/>\n <line x1=\"6.5\" y1=\"1.5\" x2=\"6.5\" y2=\"16.5\"/>\n <polyline points=\"10.5,12 8.5,9 10.5,6\"/>\n </svg>\n <svg\n *ngIf=\"!isPinned\"\n viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.35\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"18\" height=\"18\">\n <path d=\"M9 3v4M7 3h4v4l2 3H5l2-3V3z\"/>\n <line x1=\"9\" y1=\"10\" x2=\"9\" y2=\"15\"/>\n </svg>\n </button>\n </ng-container>\n </div>\n\n <!-- ===== 2. Search ===== -->\n <div *ngIf=\"config?.showSearch !== false\" class=\"cqa-sb-search-wrap\">\n <button class=\"cqa-sb-search\" type=\"button\"\n [matTooltip]=\"!isExpanded ? 'Search' : ''\" matTooltipPosition=\"right\"\n (click)=\"searchClick.emit()\">\n <svg class=\"cqa-sb-search-icon\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"1.33\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"16\" height=\"16\">\n <circle cx=\"7\" cy=\"7\" r=\"4.5\"/>\n <line x1=\"10.5\" y1=\"10.5\" x2=\"13.5\" y2=\"13.5\"/>\n </svg>\n <span class=\"cqa-sb-search-text\" [class.cqa-sb-search-text--visible]=\"isExpanded\">\n {{ config?.searchPlaceholder || 'Search Anything...' }}\n </span>\n <span\n *ngIf=\"config?.showSearchShortcut !== false && isExpanded\"\n class=\"cqa-sb-search-kbd\">\u2318K</span>\n </button>\n </div>\n\n <!-- ===== 3. CTA ===== -->\n <div *ngIf=\"config?.showCta !== false\" class=\"cqa-sb-cta-wrap\">\n <button class=\"cqa-sb-cta\" type=\"button\"\n [matTooltip]=\"!isExpanded ? (config?.ctaLabel || 'New') : ''\" matTooltipPosition=\"right\"\n (click)=\"ctaClick.emit()\">\n <svg viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"\n stroke-linecap=\"round\" width=\"18\" height=\"18\">\n <line x1=\"9\" y1=\"3.75\" x2=\"9\" y2=\"14.25\"/>\n <line x1=\"3.75\" y1=\"9\" x2=\"14.25\" y2=\"9\"/>\n </svg>\n <span class=\"cqa-sb-cta-text\" [class.cqa-sb-cta-text--visible]=\"isExpanded\">\n {{ config?.ctaLabel || 'New Test Cases' }}\n </span>\n </button>\n </div>\n\n <!-- ===== 4. Nav menu ===== -->\n <cqa-nav-menu\n [items]=\"navItems\"\n [activeId]=\"activeNavId\"\n [isExpanded]=\"isExpanded\"\n [openParents]=\"openParents\"\n (itemClick)=\"onNavItemClick($event)\">\n </cqa-nav-menu>\n\n <!-- ===== 5. Utility bar ===== -->\n <div class=\"cqa-sb-utility\" [class.cqa-sb-utility--expanded]=\"isExpanded\">\n <!-- Expanded: 2 wide tiles (Help & docs + Live chat) -->\n <ng-container *ngIf=\"isExpanded\">\n <button\n *ngIf=\"config?.showHelpDocs !== false\"\n class=\"cqa-sb-util-tile\"\n type=\"button\"\n (click)=\"helpDocsClick.emit()\">\n <svg viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.35\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"18\" height=\"18\">\n <circle cx=\"9\" cy=\"9\" r=\"7.25\"/>\n <path d=\"M6.85 7a2.15 2.15 0 0 1 4.18.75c0 1.4-2.15 1.8-2.15 3.05\"/>\n <line x1=\"9\" y1=\"13.4\" x2=\"9.01\" y2=\"13.4\"/>\n </svg>\n <span class=\"cqa-sb-util-tile-label\">{{ config?.helpDocsLabel || 'Help & docs' }}</span>\n </button>\n\n <button\n *ngIf=\"config?.showLiveChat !== false\"\n class=\"cqa-sb-util-tile\"\n type=\"button\"\n (click)=\"liveChatClick.emit()\">\n <svg viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.35\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"18\" height=\"18\">\n <path d=\"M16 2H2a1 1 0 0 0-1 1v9a1 1 0 0 0 1 1h3v3l4.5-3H16a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z\"/>\n </svg>\n <span class=\"cqa-sb-util-tile-label\">Live chat</span>\n </button>\n </ng-container>\n\n <!-- Collapsed: help + live chat only (notifications / speaker are not shown on the rail) -->\n <ng-container *ngIf=\"!isExpanded\">\n <button\n *ngIf=\"config?.showHelpDocs !== false\"\n class=\"cqa-sb-util-compact\"\n type=\"button\"\n [matTooltip]=\"config?.helpDocsLabel || 'Help & docs'\" matTooltipPosition=\"right\"\n (click)=\"helpDocsClick.emit()\">\n <svg viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.35\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"18\" height=\"18\">\n <circle cx=\"9\" cy=\"9\" r=\"7.25\"/>\n <path d=\"M6.85 7a2.15 2.15 0 0 1 4.18.75c0 1.4-2.15 1.8-2.15 3.05\"/>\n <line x1=\"9\" y1=\"13.4\" x2=\"9.01\" y2=\"13.4\"/>\n </svg>\n </button>\n\n <button\n *ngIf=\"config?.showLiveChat !== false\"\n class=\"cqa-sb-util-compact\"\n type=\"button\"\n matTooltip=\"Live chat\" matTooltipPosition=\"right\"\n (click)=\"liveChatClick.emit()\">\n <svg viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.35\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"18\" height=\"18\">\n <path d=\"M16 2H2a1 1 0 0 0-1 1v9a1 1 0 0 0 1 1h3v3l4.5-3H16a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z\"/>\n </svg>\n </button>\n </ng-container>\n </div>\n\n <!-- ===== 6. Profile card ===== -->\n <div class=\"cqa-sb-profile\" #profileAnchor>\n <button class=\"cqa-sb-profile-main\" type=\"button\"\n [matTooltip]=\"!isExpanded ? (config?.userName || profileUser?.name || '') : ''\" matTooltipPosition=\"right\"\n [attr.aria-haspopup]=\"(profileUser && profileMenuEntries?.length) ? 'menu' : null\"\n [attr.aria-expanded]=\"(profileUser && profileMenuEntries?.length) ? isProfileMenuOpen : null\"\n (click)=\"onProfileClick()\">\n <div class=\"cqa-sb-profile-avatar\">{{ config?.userInitials || '?' }}</div>\n <div class=\"cqa-sb-profile-info\" [class.cqa-sb-profile-info--visible]=\"isExpanded\">\n <span class=\"cqa-sb-profile-name\">{{ config?.userName }}</span>\n <span *ngIf=\"config?.userRole\" class=\"cqa-sb-profile-role\">{{ config.userRole }}</span>\n </div>\n </button>\n <button *ngIf=\"isExpanded\" class=\"cqa-sb-profile-logout\" type=\"button\"\n aria-label=\"Logout\" (click)=\"logoutClick.emit()\">\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"16\" height=\"16\">\n <path d=\"M6 14H3a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h3\"/>\n <polyline points=\"11,11 14,8 11,5\"/>\n <line x1=\"14\" y1=\"8\" x2=\"6\" y2=\"8\"/>\n </svg>\n </button>\n </div>\n\n <cqa-profile-menu\n *ngIf=\"isProfileMenuOpen && profileUser && profileMenuEntries?.length\"\n [user]=\"profileUser\"\n [entries]=\"profileMenuEntries\"\n [anchor]=\"profileAnchorRef?.nativeElement || null\"\n (itemClick)=\"onProfileMenuItemClick($event)\"\n (dismissed)=\"onProfileMenuDismissed()\">\n </cqa-profile-menu>\n\n </aside>\n</div>\n", styles: ["*{box-sizing:border-box}:host{display:flex;flex-direction:column;flex:1;align-self:stretch;min-height:0;max-height:100%;height:100%;flex-shrink:0}.cqa-sb-root{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;max-height:100%;width:100%}.cqa-sb{background:#3f43ee;color:#fff;flex:1 1 auto;min-height:0;max-height:100%;height:100%;display:flex;flex-direction:column;flex-shrink:0;width:60px;transition:width .24s cubic-bezier(.32,.72,0,1);position:relative;z-index:50;overflow-x:visible;overflow-y:hidden}.cqa-sb--expanded{width:264px;overflow-x:hidden}.cqa-sb>cqa-nav-menu{flex:1 1 0;min-height:0;min-width:0;display:flex;flex-direction:column}.cqa-sb-header{padding:10px;position:relative;border-bottom:1px solid rgba(255,255,255,.08);min-height:51px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.cqa-sb-header--expanded{justify-content:flex-start;padding:12px 40px 10px 12px;height:71px;max-height:71px;gap:0}.cqa-sb-burger{width:28px;height:28px;border-radius:7px;background:#d8d9fc2e;display:flex;align-items:center;justify-content:center;border:none;cursor:pointer;color:#d8d9fc;flex-shrink:0;transition:background .15s,color .15s}.cqa-sb-burger:hover{background:#d8d9fc47;color:#fff}.cqa-sb-pin-or-close{position:absolute;right:10px;top:50%;transform:translateY(calc(-50% + 1px));width:28px;height:28px;border-radius:7px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;cursor:pointer;color:#d8d9fc;flex-shrink:0;transition:background .15s,color .15s}.cqa-sb-pin-or-close:hover{background:#ffffff1a;color:#fff}.cqa-sb-ws{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 14px 6px 6px;border-radius:10px;line-height:1;height:48px;transition:background .12s;flex:1;min-width:0;text-align:left;background:transparent;border:none;cursor:pointer;color:#fff;overflow:hidden}.cqa-sb-ws:hover{background:#ffffff14}.cqa-sb-ws-main{display:flex;align-items:center;gap:10px;min-width:0}.cqa-sb-ws-avatar{width:36px;height:36px;border-radius:9px;display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;overflow:hidden}.cqa-sb-ws-logo{position:relative;z-index:1;width:100%;height:100%;object-fit:contain;display:block}.cqa-sb-ws-default{position:relative;z-index:1;display:block;pointer-events:none}.cqa-sb-ws-status{position:absolute;bottom:-3px;right:-3px;width:12px;height:12px;background:#0dbd7d;border-radius:50%;border:2.5px solid #3f43ee;box-shadow:0 0 6px #0dbd7d}.cqa-sb-ws-info{flex:1;min-width:0;overflow:hidden}.cqa-sb-ws-name-row{display:flex;align-items:center;gap:6px}.cqa-sb-ws-name{font-weight:600;font-size:14px;line-height:16.8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff}.cqa-sb-ws-badge{background:#0dbd7d2e;color:#5ed3a8;font-size:9.5px;font-weight:700;padding:1px 6px 1px 4px;border-radius:4px;display:inline-flex;align-items:center;gap:3px;flex-shrink:0;text-transform:uppercase;letter-spacing:.04em}.cqa-sb-ws-badge:before{content:\"\";width:4px;height:4px;background:#0dbd7d;border-radius:50%;box-shadow:0 0 6px #0dbd7d}.cqa-sb-ws-switch{color:#ffffff8c;flex-shrink:0;padding:4px 0 7px;border-radius:6px;display:flex;align-items:center}.cqa-sb-search-wrap{padding:8px 12px;flex-shrink:0}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-search-wrap{padding:8px 10px 6px;display:flex;justify-content:center}.cqa-sb-search{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:8px;height:38px;padding:0 12px;font-size:12px;line-height:1;letter-spacing:-.31px;color:#ffffff80;display:flex;align-items:center;gap:8px;width:100%;cursor:pointer;transition:all .15s;overflow:hidden;font-family:inherit}.cqa-sb-search:hover{background:#ffffff14;color:#ffffffbf;border-color:#ffffff29}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-search{padding:0;width:40px;max-width:40px;height:40px;min-height:40px;margin:0 auto;justify-content:center;align-items:center;gap:0;background:transparent;border-color:#d8d9fc;border-radius:9px}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-search .cqa-sb-search-text,.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-search .cqa-sb-search-kbd{flex:0 0 0;width:0;min-width:0;height:0;margin:0;padding:0;overflow:hidden;opacity:0;border:0;pointer-events:none}.cqa-sb-search-icon{flex-shrink:0;width:14px;height:14px}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-search-icon{width:16px;height:16px}.cqa-sb-search-text{flex:1;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;font-weight:400;font-size:12px;line-height:1;letter-spacing:-.31px;color:#ffffff80;opacity:0;transition:opacity .16s 80ms}.cqa-sb-search-text--visible{opacity:1}.cqa-sb-search-kbd{display:inline-flex;align-items:center;justify-content:center;height:16px;font-size:10.5px;line-height:1;letter-spacing:normal;text-align:center;background:#ffffff26;padding:2px 6px;border-radius:4px;color:#ffffffd9;font-family:Menlo,ui-monospace,monospace;flex-shrink:0}.cqa-sb-cta-wrap{padding:8px 12px;flex-shrink:0}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-cta-wrap{padding:0 10px 12px;display:flex;justify-content:center}.cqa-sb-cta{background:#5256f0;color:#fbfcff;border:none;border-radius:8px;height:38px;padding:10px 24px 10px 16px;font-size:14px;font-weight:600;line-height:14px;letter-spacing:0;width:100%;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;transition:background .15s,transform .15s;overflow:hidden;font-family:inherit}.cqa-sb-cta:hover{background:#5b5ff2;transform:translateY(-1px)}.cqa-sb-cta:active{transform:translateY(0)}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-cta{padding:0;width:40px;height:40px;min-height:40px;margin:0 auto;position:relative;background:transparent;color:#fff}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-cta:before{content:\"\";position:absolute;inset:0;border-radius:9px;background:#b1b2f838;pointer-events:none}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-cta svg{position:relative;z-index:1;width:16px;height:16px}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-cta{box-shadow:inset 0 0 0 1px #d8d9fc38}.cqa-sb-cta-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;font-weight:600;font-size:14px;line-height:1;letter-spacing:0;color:#fbfcff;opacity:0;transition:opacity .16s 80ms;position:relative;z-index:1}.cqa-sb-cta-text--visible{opacity:1}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-cta-text{display:none}.cqa-sb-utility{border-top:none;box-shadow:inset 0 1px #ffffff1a;flex-shrink:0}.cqa-sb-utility--expanded{display:flex;align-items:center;justify-content:space-between;height:68px;gap:0;padding:8px 10px}.cqa-sb-utility:not(.cqa-sb-utility--expanded){display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:1px;padding:6px 10px}.cqa-sb-util-tile{width:110px;max-width:110px;border-radius:9px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:8px 6px 6px;color:#ffffffd9;background:#ffffff0f;border:none;cursor:pointer;transition:background .12s,color .12s;font-family:inherit}.cqa-sb-util-tile:hover{background:#b1b2f838;color:#fff}.cqa-sb-util-tile-label{font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;font-size:10.5px;font-weight:600;line-height:10.5px;letter-spacing:.1px;color:#ffffffd9;text-align:center;white-space:nowrap}.cqa-sb-util-compact{position:relative;width:36px;height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:#ffffffe0;background:transparent;border:none;cursor:pointer;transition:background .12s,color .12s;padding:0;flex-shrink:0}.cqa-sb-util-compact:hover{background:#ffffff14;color:#fff}.cqa-sb-util-compact-dot{position:absolute;top:6px;right:6px;width:8px;height:8px;background:#ee3f3f;border-radius:4px;border:2px solid #3f43ee;pointer-events:none}.cqa-sb-profile{border-top:1px solid rgba(255,255,255,.1);padding:12px 14px;height:62px;display:flex;align-items:center;gap:12px;background:#00000029;overflow:hidden;position:relative;width:100%;flex-shrink:0;color:#fff}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-profile{justify-content:center;padding:12px 0;height:auto;gap:0;background:#0000001f;border-top-color:#ffffff1f}.cqa-sb-profile-main{flex:1;min-width:0;display:flex;align-items:center;gap:12px;padding:0;background:transparent;border:none;border-radius:8px;cursor:pointer;color:inherit;font-family:inherit;text-align:left;transition:background .15s}.cqa-sb-profile-main:hover{background:#0000001a}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-profile-main{justify-content:center;flex:0 0 auto}.cqa-sb-profile-avatar{width:34px;height:34px;border-radius:17px;background:linear-gradient(135deg,#f472b6,#db2777);display:flex;align-items:center;justify-content:center;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;font-size:12px;font-weight:700;line-height:1;letter-spacing:0;color:#fff;flex-shrink:0;box-shadow:0 0 0 2px #ffffff26}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-profile-avatar{width:32px;height:32px;border-radius:16px;font-size:11.5px}.cqa-sb-profile-info{flex:1;min-width:0;overflow:hidden;opacity:0;transition:opacity .16s 80ms;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:4px}.cqa-sb-profile-info--visible{opacity:1}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-profile-info{display:none}.cqa-sb-profile-name{font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;font-weight:600;font-size:12.5px;line-height:13.75px;letter-spacing:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff}.cqa-sb-profile-role{display:inline-block;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;font-size:9px;font-weight:700;line-height:12.6px;letter-spacing:0;background:#d8d9fc38;padding:2px 7px;border-radius:999px;color:#fff;border:1px solid rgba(216,217,252,.2);white-space:nowrap;align-self:flex-start}.cqa-sb-profile-logout{color:#ffffff8c;padding:6px 6px 9px;border-radius:6px;background:transparent;border:none;cursor:pointer;flex-shrink:0;transition:background .12s,color .12s;display:flex;align-items:center;justify-content:center}.cqa-sb-profile-logout:hover{background:#ffffff1f;color:#fff}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i4.NavMenuComponent, selector: "cqa-nav-menu", inputs: ["items", "activeId", "isExpanded", "openParents"], outputs: ["itemClick"] }, { kind: "component", type: i5.ProfileMenuComponent, selector: "cqa-profile-menu", inputs: ["user", "entries", "anchor", "popoverId"], outputs: ["itemClick", "dismissed"] }] });
|
|
170
210
|
}
|
|
171
211
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SidebarComponent, decorators: [{
|
|
172
212
|
type: Component,
|
|
173
|
-
args: [{ selector: 'cqa-sidebar', template: "<div id=\"cqa-ui-root\" style=\"display:block;height:100%\">\n <aside\n class=\"cqa-sb\"\n [class.cqa-sb--expanded]=\"isExpanded\"\n (mouseenter)=\"onAsideMouseEnter()\"\n (mouseleave)=\"onAsideMouseLeave($event)\">\n\n <!-- ===== 1. Workspace header ===== -->\n <div class=\"cqa-sb-header\" [class.cqa-sb-header--expanded]=\"isExpanded\">\n <!-- Collapsed: hamburger chip -->\n <button\n *ngIf=\"!isExpanded\"\n class=\"cqa-sb-burger\"\n (click)=\"openSidebar()\"\n type=\"button\"\n aria-label=\"Open sidebar\">\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"1.33\" stroke-linecap=\"round\"\n width=\"16\" height=\"16\">\n <line x1=\"2\" y1=\"4\" x2=\"14\" y2=\"4\"/>\n <line x1=\"2\" y1=\"8\" x2=\"14\" y2=\"8\"/>\n <line x1=\"2\" y1=\"12\" x2=\"14\" y2=\"12\"/>\n </svg>\n </button>\n\n <!-- Expanded: workspace selector + pin (unpinned) or close (pinned) -->\n <ng-container *ngIf=\"isExpanded\">\n <button class=\"cqa-sb-ws\" type=\"button\" (click)=\"workspaceSwitchClick.emit()\">\n <span class=\"cqa-sb-ws-main\">\n <span class=\"cqa-sb-ws-avatar\">\n <img *ngIf=\"workspaceLogoSafe; else wsInitialTpl\"\n class=\"cqa-sb-ws-logo\"\n [src]=\"workspaceLogoSafe\"\n [alt]=\"config?.workspaceName || 'Workspace logo'\" />\n <ng-template #wsInitialTpl>\n <span class=\"cqa-sb-ws-initial\">{{ workspaceInitial }}</span>\n </ng-template>\n <span *ngIf=\"config?.workspaceStatus === 'live'\" class=\"cqa-sb-ws-status\"></span>\n </span>\n <span class=\"cqa-sb-ws-info\">\n <span class=\"cqa-sb-ws-name-row\">\n <span class=\"cqa-sb-ws-name\">{{ config?.workspaceName || 'Workspace' }}</span>\n </span>\n </span>\n </span>\n <span class=\"cqa-sb-ws-switch\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 14 14\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"1.17\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n width=\"14\" height=\"14\">\n <polyline points=\"3,9 7,12 11,9\"/>\n <polyline points=\"3,5 7,2 11,5\"/>\n </svg>\n </span>\n </button>\n\n <button\n *ngIf=\"isPinned || config?.showSidebarPin !== false\"\n class=\"cqa-sb-pin-or-close\"\n type=\"button\"\n (click)=\"isPinned ? closeSidebar() : pinSidebar()\"\n [matTooltip]=\"isPinned ? 'Close sidebar' : 'Pin sidebar'\"\n [matTooltipPosition]=\"isPinned ? 'right' : 'left'\"\n [attr.aria-label]=\"isPinned ? 'Close sidebar' : 'Pin sidebar'\">\n <svg\n *ngIf=\"isPinned\"\n viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.35\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"18\" height=\"18\">\n <rect x=\"1.5\" y=\"1.5\" width=\"15\" height=\"15\" rx=\"2.5\"/>\n <line x1=\"6.5\" y1=\"1.5\" x2=\"6.5\" y2=\"16.5\"/>\n <polyline points=\"10.5,12 8.5,9 10.5,6\"/>\n </svg>\n <svg\n *ngIf=\"!isPinned\"\n viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.35\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"18\" height=\"18\">\n <path d=\"M9 3v4M7 3h4v4l2 3H5l2-3V3z\"/>\n <line x1=\"9\" y1=\"10\" x2=\"9\" y2=\"15\"/>\n </svg>\n </button>\n </ng-container>\n </div>\n\n <!-- ===== 2. Search ===== -->\n <div *ngIf=\"config?.showSearch !== false\" class=\"cqa-sb-search-wrap\">\n <button class=\"cqa-sb-search\" type=\"button\"\n [matTooltip]=\"!isExpanded ? 'Search' : ''\" matTooltipPosition=\"right\"\n (click)=\"searchClick.emit()\">\n <svg class=\"cqa-sb-search-icon\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"1.33\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"16\" height=\"16\">\n <circle cx=\"7\" cy=\"7\" r=\"4.5\"/>\n <line x1=\"10.5\" y1=\"10.5\" x2=\"13.5\" y2=\"13.5\"/>\n </svg>\n <span class=\"cqa-sb-search-text\" [class.cqa-sb-search-text--visible]=\"isExpanded\">\n {{ config?.searchPlaceholder || 'Search Anything...' }}\n </span>\n <span\n *ngIf=\"config?.showSearchShortcut !== false && isExpanded\"\n class=\"cqa-sb-search-kbd\">\u2318K</span>\n </button>\n </div>\n\n <!-- ===== 3. CTA ===== -->\n <div *ngIf=\"config?.showCta !== false\" class=\"cqa-sb-cta-wrap\">\n <button class=\"cqa-sb-cta\" type=\"button\"\n [matTooltip]=\"!isExpanded ? (config?.ctaLabel || 'New') : ''\" matTooltipPosition=\"right\"\n (click)=\"ctaClick.emit()\">\n <svg viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"\n stroke-linecap=\"round\" width=\"18\" height=\"18\">\n <line x1=\"9\" y1=\"3\" x2=\"9\" y2=\"15\"/>\n <line x1=\"3\" y1=\"9\" x2=\"15\" y2=\"9\"/>\n </svg>\n <span class=\"cqa-sb-cta-text\" [class.cqa-sb-cta-text--visible]=\"isExpanded\">\n {{ config?.ctaLabel || 'New Test Cases' }}\n </span>\n </button>\n </div>\n\n <!-- ===== 4. Nav menu ===== -->\n <cqa-nav-menu\n [items]=\"navItems\"\n [activeId]=\"activeNavId\"\n [isExpanded]=\"isExpanded\"\n [openParents]=\"openParents\"\n (itemClick)=\"onNavItemClick($event)\">\n </cqa-nav-menu>\n\n <!-- ===== 5. Utility bar ===== -->\n <div class=\"cqa-sb-utility\" [class.cqa-sb-utility--expanded]=\"isExpanded\">\n <!-- Expanded: 2 wide tiles (Help & docs + Live chat) -->\n <ng-container *ngIf=\"isExpanded\">\n <button\n *ngIf=\"config?.showHelpDocs !== false\"\n class=\"cqa-sb-util-tile\"\n type=\"button\"\n (click)=\"helpDocsClick.emit()\">\n <svg viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.35\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"18\" height=\"18\">\n <circle cx=\"9\" cy=\"9\" r=\"7.25\"/>\n <path d=\"M6.85 7a2.15 2.15 0 0 1 4.18.75c0 1.4-2.15 1.8-2.15 3.05\"/>\n <line x1=\"9\" y1=\"13.4\" x2=\"9.01\" y2=\"13.4\"/>\n </svg>\n <span class=\"cqa-sb-util-tile-label\">{{ config?.helpDocsLabel || 'Help & docs' }}</span>\n </button>\n\n <button\n *ngIf=\"config?.showLiveChat !== false\"\n class=\"cqa-sb-util-tile\"\n type=\"button\"\n (click)=\"liveChatClick.emit()\">\n <svg viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.35\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"18\" height=\"18\">\n <path d=\"M16 2H2a1 1 0 0 0-1 1v9a1 1 0 0 0 1 1h3v3l4.5-3H16a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z\"/>\n </svg>\n <span class=\"cqa-sb-util-tile-label\">Live chat</span>\n </button>\n </ng-container>\n\n <!-- Collapsed: help + live chat only (notifications / speaker are not shown on the rail) -->\n <ng-container *ngIf=\"!isExpanded\">\n <button\n *ngIf=\"config?.showHelpDocs !== false\"\n class=\"cqa-sb-util-compact\"\n type=\"button\"\n [matTooltip]=\"config?.helpDocsLabel || 'Help & docs'\" matTooltipPosition=\"right\"\n (click)=\"helpDocsClick.emit()\">\n <svg viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.35\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"18\" height=\"18\">\n <circle cx=\"9\" cy=\"9\" r=\"7.25\"/>\n <path d=\"M6.85 7a2.15 2.15 0 0 1 4.18.75c0 1.4-2.15 1.8-2.15 3.05\"/>\n <line x1=\"9\" y1=\"13.4\" x2=\"9.01\" y2=\"13.4\"/>\n </svg>\n </button>\n\n <button\n *ngIf=\"config?.showLiveChat !== false\"\n class=\"cqa-sb-util-compact\"\n type=\"button\"\n matTooltip=\"Live chat\" matTooltipPosition=\"right\"\n (click)=\"liveChatClick.emit()\">\n <svg viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.35\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"18\" height=\"18\">\n <path d=\"M16 2H2a1 1 0 0 0-1 1v9a1 1 0 0 0 1 1h3v3l4.5-3H16a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z\"/>\n </svg>\n </button>\n </ng-container>\n </div>\n\n <!-- ===== 6. Profile card ===== -->\n <button class=\"cqa-sb-profile\" type=\"button\"\n [matTooltip]=\"!isExpanded ? (config?.userName || '') : ''\" matTooltipPosition=\"right\"\n (click)=\"logoutClick.emit()\">\n <div class=\"cqa-sb-profile-avatar\">{{ config?.userInitials || '?' }}</div>\n <div class=\"cqa-sb-profile-info\" [class.cqa-sb-profile-info--visible]=\"isExpanded\">\n <span class=\"cqa-sb-profile-name\">{{ config?.userName }}</span>\n <span *ngIf=\"config?.userRole\" class=\"cqa-sb-profile-role\">{{ config.userRole }}</span>\n </div>\n <span *ngIf=\"isExpanded\" class=\"cqa-sb-profile-logout\" aria-label=\"Logout\">\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"16\" height=\"16\">\n <path d=\"M6 14H3a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h3\"/>\n <polyline points=\"11,11 14,8 11,5\"/>\n <line x1=\"14\" y1=\"8\" x2=\"6\" y2=\"8\"/>\n </svg>\n </span>\n </button>\n\n </aside>\n</div>\n", styles: [":host{display:flex;height:100%;flex-shrink:0}.cqa-sb{background:#3f43ee;color:#fff;height:100%;display:flex;flex-direction:column;flex-shrink:0;width:60px;transition:width .24s cubic-bezier(.32,.72,0,1);position:relative;z-index:50;overflow-x:visible;overflow-y:hidden}.cqa-sb--expanded{width:264px;overflow-x:hidden}.cqa-sb-header{padding:10px;position:relative;border-bottom:1px solid rgba(255,255,255,.08);min-height:51px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.cqa-sb-header--expanded{justify-content:flex-start;padding:12px 40px 11px 12px;min-height:71px;gap:0}.cqa-sb-burger{width:28px;height:28px;border-radius:7px;background:#d8d9fc2e;display:flex;align-items:center;justify-content:center;border:none;cursor:pointer;color:#d8d9fc;flex-shrink:0;transition:background .15s,color .15s}.cqa-sb-burger:hover{background:#d8d9fc47;color:#fff}.cqa-sb-pin-or-close{position:absolute;right:10px;top:50%;transform:translateY(calc(-50% + 1px));width:28px;height:28px;border-radius:7px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;cursor:pointer;color:#d8d9fc;flex-shrink:0;transition:background .15s,color .15s}.cqa-sb-pin-or-close:hover{background:#ffffff1a;color:#fff}.cqa-sb-ws{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 14px 6px 6px;border-radius:10px;transition:background .12s;flex:1;min-width:0;text-align:left;background:transparent;border:none;cursor:pointer;color:#fff;overflow:hidden}.cqa-sb-ws:hover{background:#ffffff14}.cqa-sb-ws-main{display:flex;align-items:center;gap:10px;min-width:0}.cqa-sb-ws-avatar{width:36px;height:36px;border-radius:9px;background:linear-gradient(135deg,#cce1f4,#d7e7f9);display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;box-shadow:0 1px 2px #0000001f,inset 0 0 0 1px #fff6;overflow:hidden}.cqa-sb-ws-avatar:after{content:\"\";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(to bottom,#ffffff80,#fff0 50%);pointer-events:none}.cqa-sb-ws-logo{position:relative;z-index:1;width:22px;height:26px;object-fit:contain;display:block}.cqa-sb-ws-initial{position:relative;z-index:1;color:#1216cc;font-weight:800;font-size:15px}.cqa-sb-ws-status{position:absolute;bottom:-3px;right:-3px;width:12px;height:12px;background:#0dbd7d;border-radius:50%;border:2.5px solid #3f43ee;box-shadow:0 0 6px #0dbd7d}.cqa-sb-ws-info{flex:1;min-width:0;overflow:hidden}.cqa-sb-ws-name-row{display:flex;align-items:center;gap:6px}.cqa-sb-ws-name{font-weight:600;font-size:14px;line-height:16.8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff}.cqa-sb-ws-badge{background:#0dbd7d2e;color:#5ed3a8;font-size:9.5px;font-weight:700;padding:1px 6px 1px 4px;border-radius:4px;display:inline-flex;align-items:center;gap:3px;flex-shrink:0;text-transform:uppercase;letter-spacing:.04em}.cqa-sb-ws-badge:before{content:\"\";width:4px;height:4px;background:#0dbd7d;border-radius:50%;box-shadow:0 0 6px #0dbd7d}.cqa-sb-ws-switch{color:#ffffff8c;flex-shrink:0;padding:4px 0 7px;display:flex;align-items:center}.cqa-sb-search-wrap{padding:8px 12px;flex-shrink:0}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-search-wrap{padding:8px 10px 6px;display:flex;justify-content:center}.cqa-sb-search{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:8px;min-height:38px;padding:0 13px;font-size:12px;letter-spacing:-.02em;color:#ffffff80;display:flex;align-items:center;gap:8px;width:100%;cursor:pointer;transition:all .15s;overflow:hidden;font-family:inherit}.cqa-sb-search:hover{background:#ffffff14;color:#ffffffbf;border-color:#ffffff29}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-search{padding:0;width:40px;max-width:40px;height:40px;min-height:40px;margin:0 auto;justify-content:center;align-items:center;gap:0;background:transparent;border-color:#d8d9fc;border-radius:9px}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-search .cqa-sb-search-text,.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-search .cqa-sb-search-kbd{flex:0 0 0;width:0;min-width:0;height:0;margin:0;padding:0;overflow:hidden;opacity:0;border:0;pointer-events:none}.cqa-sb-search-icon{flex-shrink:0;width:14px;height:14px}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-search-icon{width:16px;height:16px}.cqa-sb-search-text{flex:1;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:0;transition:opacity .16s 80ms}.cqa-sb-search-text--visible{opacity:1}.cqa-sb-search-kbd{font-size:10.5px;background:#ffffff26;padding:2px 6px;border-radius:4px;color:#ffffffd9;font-family:ui-monospace,monospace;flex-shrink:0;opacity:0;transition:opacity .16s 80ms}.cqa-sb-search-kbd--visible{opacity:1}.cqa-sb-cta-wrap{padding:0 12px 12px;flex-shrink:0}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-cta-wrap{padding:0 10px 12px;display:flex;justify-content:center}.cqa-sb-cta{background:#5256f0;color:#fbfcff;border:none;border-radius:8px;padding:10px 24px 10px 16px;font-size:14px;font-weight:600;line-height:14px;letter-spacing:0;width:100%;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;transition:background .15s,transform .15s;overflow:hidden;font-family:inherit}.cqa-sb-cta:hover{background:#5b5ff2;transform:translateY(-1px)}.cqa-sb-cta:active{transform:translateY(0)}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-cta{padding:0;width:40px;height:40px;min-height:40px;margin:0 auto;position:relative;background:transparent;color:#fff}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-cta:before{content:\"\";position:absolute;inset:0;border-radius:9px;background:#b1b2f838;pointer-events:none}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-cta svg{position:relative;z-index:1;width:16px;height:16px}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-cta{box-shadow:inset 0 0 0 1px #d8d9fc38}.cqa-sb-cta-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:0;transition:opacity .16s 80ms;position:relative;z-index:1}.cqa-sb-cta-text--visible{opacity:1}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-cta-text{display:none}.cqa-sb-utility{border-top:none;box-shadow:inset 0 1px #ffffff1a;flex-shrink:0}.cqa-sb-utility--expanded{display:flex;align-items:center;justify-content:space-between;height:68px;gap:0;padding:9px 10px 8px}.cqa-sb-utility:not(.cqa-sb-utility--expanded){display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:1px;padding:6px 10px}.cqa-sb-util-tile{width:110px;max-width:110px;border-radius:9px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:8px 6px 6px;color:#ffffffd9;background:#ffffff0f;border:none;cursor:pointer;transition:background .12s,color .12s;font-family:inherit}.cqa-sb-util-tile:hover{background:#b1b2f838;color:#fff}.cqa-sb-util-tile-label{font-size:10.5px;font-weight:600;line-height:10.5px;letter-spacing:.105px;text-align:center;white-space:nowrap}.cqa-sb-util-compact{position:relative;width:36px;height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:#ffffffe0;background:transparent;border:none;cursor:pointer;transition:background .12s,color .12s;padding:0;flex-shrink:0}.cqa-sb-util-compact:hover{background:#ffffff14;color:#fff}.cqa-sb-util-compact-dot{position:absolute;top:6px;right:6px;width:8px;height:8px;background:#ee3f3f;border-radius:4px;border:2px solid #3f43ee;pointer-events:none}.cqa-sb-profile{border-top:1px solid rgba(255,255,255,.1);padding:13px 14px 12px;display:flex;align-items:center;gap:12px;background:#00000029;transition:background .15s;overflow:hidden;position:relative;width:100%;flex-shrink:0;border-left:none;border-right:none;border-bottom:none;cursor:pointer;color:#fff;font-family:inherit}.cqa-sb-profile:hover{background:#00000042}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-profile{justify-content:center;padding:12px 0;gap:0;background:#0000001f;border-top-color:#ffffff1f}.cqa-sb-profile-avatar{width:34px;height:34px;border-radius:17px;background:linear-gradient(135deg,#f472b6,#db2777);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0;box-shadow:0 0 0 2px #ffffff26}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-profile-avatar{width:32px;height:32px;border-radius:16px;font-size:11.5px}.cqa-sb-profile-info{flex:1;min-width:0;overflow:hidden;opacity:0;transition:opacity .16s 80ms;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:4px}.cqa-sb-profile-info--visible{opacity:1}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-profile-info{display:none}.cqa-sb-profile-name{font-weight:600;font-size:12.5px;line-height:13.75px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff}.cqa-sb-profile-role{display:inline-block;font-size:9px;font-weight:700;background:#d8d9fc38;padding:3px 8px;border-radius:999px;line-height:12.6px;color:#fff;border:1px solid rgba(216,217,252,.2);white-space:nowrap;align-self:flex-start}.cqa-sb-profile-logout{color:#ffffff8c;padding:6px 6px 9px;border-radius:6px;flex-shrink:0;transition:background .12s,color .12s;display:flex;align-items:center}.cqa-sb-profile-logout:hover{background:#ffffff1f;color:#fff}\n"] }]
|
|
213
|
+
args: [{ selector: 'cqa-sidebar', template: "<div id=\"cqa-ui-root\" class=\"cqa-sb-root\">\n <aside\n class=\"cqa-sb\"\n [class.cqa-sb--expanded]=\"isExpanded\"\n (mouseenter)=\"onAsideMouseEnter()\"\n (mouseleave)=\"onAsideMouseLeave($event)\">\n\n <!-- ===== 1. Workspace header ===== -->\n <div class=\"cqa-sb-header\" [class.cqa-sb-header--expanded]=\"isExpanded\">\n <!-- Collapsed: hamburger chip -->\n <button\n *ngIf=\"!isExpanded\"\n class=\"cqa-sb-burger\"\n (click)=\"openSidebar()\"\n type=\"button\"\n aria-label=\"Open sidebar\">\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"1.33\" stroke-linecap=\"round\"\n width=\"16\" height=\"16\">\n <line x1=\"2\" y1=\"4\" x2=\"14\" y2=\"4\"/>\n <line x1=\"2\" y1=\"8\" x2=\"14\" y2=\"8\"/>\n <line x1=\"2\" y1=\"12\" x2=\"14\" y2=\"12\"/>\n </svg>\n </button>\n\n <!-- Expanded: workspace selector + pin (unpinned) or close (pinned) -->\n <ng-container *ngIf=\"isExpanded\">\n <button class=\"cqa-sb-ws\" type=\"button\" (click)=\"workspaceSwitchClick.emit()\">\n <span class=\"cqa-sb-ws-main\">\n <span class=\"cqa-sb-ws-avatar\">\n <img *ngIf=\"workspaceLogoSafe; else defaultLogoTpl\"\n class=\"cqa-sb-ws-logo\"\n [src]=\"workspaceLogoSafe\"\n [alt]=\"config?.workspaceName || 'Workspace logo'\" />\n <ng-template #defaultLogoTpl>\n <svg class=\"cqa-sb-ws-default\" width=\"36\" height=\"36\" viewBox=\"0 0 40 40\"\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"9\" fill=\"url(#cqa-sb-ws-grad)\"/>\n <g filter=\"url(#cqa-sb-ws-shadow)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"9\" fill=\"white\" fill-opacity=\"0.01\" shape-rendering=\"crispEdges\"/>\n </g>\n <rect width=\"8.07969\" height=\"2.59969\" rx=\"1.29985\" transform=\"matrix(0.0555427 -0.998456 0.998194 0.0600698 10.3188 28.9912)\" fill=\"#97AFC5\"/>\n <rect width=\"8.0708\" height=\"2.60278\" rx=\"1.30139\" transform=\"matrix(-0.173269 -0.984874 0.982367 -0.186964 27.3413 29.4043)\" fill=\"#97AFC5\"/>\n <path d=\"M11.1884 23.5958C11.4549 23.7473 11.7865 23.6502 11.9291 23.3789L13.3623 20.6523C13.5049 20.381 13.4045 20.0382 13.1381 19.8867C12.2055 19.3564 11.0448 19.6964 10.5457 20.646L10.4037 20.9162C9.90451 21.8658 10.2559 23.0655 11.1884 23.5958Z\" fill=\"#C2DBF2\"/>\n <path d=\"M11.6714 22.4677C11.6714 20.1863 13.5208 18.3369 15.8022 18.3369H23.9505C26.2319 18.3369 28.0813 20.1863 28.0813 22.4677V23.7953C28.0813 28.3268 24.4078 32.0003 19.8764 32.0003C15.3449 32.0003 11.6714 28.3268 11.6714 23.7953V22.4677Z\" fill=\"#D7E7F9\"/>\n <path d=\"M28.8116 23.7315C28.5451 23.883 28.2135 23.7859 28.0709 23.5146L26.6377 20.7881C26.4951 20.5167 26.5955 20.174 26.8619 20.0225C27.7945 19.4922 28.9552 19.8321 29.4543 20.7817L29.5963 21.0519C30.0955 22.0015 29.7441 23.2012 28.8116 23.7315Z\" fill=\"#C2DBF2\"/>\n <path d=\"M26.3774 19.1758C26.3774 19.8026 23.4762 20.3107 19.8974 20.3107C16.3186 20.3107 13.4175 19.8026 13.4175 19.1758C13.4175 18.5491 16.3186 18.041 19.8974 18.041C23.4762 18.041 26.3774 18.5491 26.3774 19.1758Z\" fill=\"#C2DBF2\"/>\n <path d=\"M21.7507 26.7785L21.6221 26.6448C22.1471 25.7868 22.0506 24.6335 21.3329 23.8869C20.5026 23.0234 19.1473 23.0234 18.317 23.8869C17.4868 24.7505 17.4868 26.1601 18.317 27.0236C19.0348 27.7702 20.1437 27.8705 20.9686 27.3245L21.0972 27.4582L21.2686 27.6365C21.4507 27.8259 21.7453 27.8259 21.9221 27.6365C22.1042 27.4471 22.1042 27.1406 21.9221 26.9568L21.7507 26.7785ZM18.9706 26.3439C18.4992 25.8536 18.4992 25.0569 18.9706 24.5722C19.4419 24.0819 20.208 24.0819 20.674 24.5722C21.0275 24.9399 21.1132 25.4804 20.9365 25.9372C20.8775 26.0876 20.7918 26.2269 20.674 26.3439C20.5561 26.4665 20.4222 26.5556 20.2829 26.6169C19.8491 26.8008 19.3241 26.7116 18.9706 26.3439Z\" fill=\"#6366F1\"/>\n <rect width=\"17.4575\" height=\"10.8035\" rx=\"5.40176\" transform=\"matrix(0.999918 0.0128129 -0.0118443 0.99993 11.1401 6.9248)\" fill=\"#D7E7F9\"/>\n <path d=\"M11.9068 9.74961C12.2603 9.75414 12.5435 10.0444 12.5393 10.3979L12.4926 14.3376C12.4884 14.6911 12.1985 14.974 11.845 14.9694C10.6078 14.9536 9.61668 13.9377 9.63133 12.7005L9.64009 11.9611C9.65475 10.7239 10.6696 9.73376 11.9068 9.74961Z\" fill=\"#C2DBF2\"/>\n <path d=\"M27.7011 15.1723C27.3476 15.1677 27.0644 14.8775 27.0686 14.524L27.1153 10.5843C27.1195 10.2308 27.4094 9.94792 27.7629 9.95245C29.0001 9.9683 29.9912 10.9841 29.9766 12.2214L29.9678 12.9607C29.9532 14.198 28.9383 15.1881 27.7011 15.1723Z\" fill=\"#C2DBF2\"/>\n <rect width=\"13.0931\" height=\"6.80894\" rx=\"3.40447\" transform=\"matrix(0.999918 0.0128129 -0.0118443 0.99993 13.2988 8.9502)\" fill=\"#2F445B\"/>\n <ellipse cx=\"0.872874\" cy=\"0.907858\" rx=\"0.872874\" ry=\"0.907858\" transform=\"matrix(0.999918 0.0128129 -0.0118443 0.99993 22.2153 11.5605)\" fill=\"#6366F1\"/>\n <ellipse cx=\"0.872874\" cy=\"0.907858\" rx=\"0.872874\" ry=\"0.907858\" transform=\"matrix(0.999918 0.0128129 -0.0118443 0.99993 15.6255 11.4766)\" fill=\"#6366F1\"/>\n <path d=\"M16.9047 6.66572C16.9091 6.29805 17.2106 6.00382 17.5783 6.00853L22.1819 6.06752C22.5496 6.07223 22.8441 6.3741 22.8398 6.74177C22.8245 8.02859 21.769 9.05841 20.4822 9.04192L19.2071 9.02558C17.9203 9.00909 16.8895 7.95254 16.9047 6.66572Z\" fill=\"#C2DBF2\"/>\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"9\" fill=\"url(#cqa-sb-ws-gloss)\"/>\n <defs>\n <filter id=\"cqa-sb-ws-shadow\" x=\"0\" y=\"0\" width=\"40\" height=\"40\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/>\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\"/>\n <feOffset dy=\"1\"/>\n <feGaussianBlur stdDeviation=\"1\"/>\n <feComposite in2=\"hardAlpha\" operator=\"out\"/>\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.12 0\"/>\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow\"/>\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\"/>\n <feMorphology radius=\"1\" operator=\"erode\" in=\"SourceAlpha\" result=\"effect2_innerShadow\"/>\n <feOffset/>\n <feComposite in2=\"hardAlpha\" operator=\"arithmetic\" k2=\"-1\" k3=\"1\"/>\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.4 0\"/>\n <feBlend mode=\"normal\" in2=\"effect1_dropShadow\" result=\"effect2_innerShadow\"/>\n </filter>\n <linearGradient id=\"cqa-sb-ws-grad\" x1=\"2\" y1=\"1\" x2=\"38\" y2=\"37\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#CCE1F4\"/>\n <stop offset=\"1\" stop-color=\"#D7E7F9\"/>\n </linearGradient>\n <linearGradient id=\"cqa-sb-ws-gloss\" x1=\"20\" y1=\"1\" x2=\"20\" y2=\"37\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"white\" stop-opacity=\"0.5\"/>\n <stop offset=\"0.5\" stop-color=\"white\" stop-opacity=\"0\"/>\n </linearGradient>\n </defs>\n </svg>\n </ng-template>\n <span *ngIf=\"config?.workspaceStatus === 'live'\" class=\"cqa-sb-ws-status\"></span>\n </span>\n <span class=\"cqa-sb-ws-info\">\n <span class=\"cqa-sb-ws-name-row\">\n <span class=\"cqa-sb-ws-name\">{{ config?.workspaceName || 'Workspace' }}</span>\n </span>\n </span>\n </span>\n <span class=\"cqa-sb-ws-switch\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 14 14\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"1.17\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n width=\"14\" height=\"14\">\n <polyline points=\"3,9 7,12 11,9\"/>\n <polyline points=\"3,5 7,2 11,5\"/>\n </svg>\n </span>\n </button>\n\n <button\n *ngIf=\"isPinned || config?.showSidebarPin !== false\"\n class=\"cqa-sb-pin-or-close\"\n type=\"button\"\n (click)=\"isPinned ? closeSidebar() : pinSidebar()\"\n [matTooltip]=\"isPinned ? 'Close sidebar' : 'Pin sidebar'\"\n [matTooltipPosition]=\"isPinned ? 'right' : 'left'\"\n [attr.aria-label]=\"isPinned ? 'Close sidebar' : 'Pin sidebar'\">\n <svg\n *ngIf=\"isPinned\"\n viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.35\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"18\" height=\"18\">\n <rect x=\"1.5\" y=\"1.5\" width=\"15\" height=\"15\" rx=\"2.5\"/>\n <line x1=\"6.5\" y1=\"1.5\" x2=\"6.5\" y2=\"16.5\"/>\n <polyline points=\"10.5,12 8.5,9 10.5,6\"/>\n </svg>\n <svg\n *ngIf=\"!isPinned\"\n viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.35\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"18\" height=\"18\">\n <path d=\"M9 3v4M7 3h4v4l2 3H5l2-3V3z\"/>\n <line x1=\"9\" y1=\"10\" x2=\"9\" y2=\"15\"/>\n </svg>\n </button>\n </ng-container>\n </div>\n\n <!-- ===== 2. Search ===== -->\n <div *ngIf=\"config?.showSearch !== false\" class=\"cqa-sb-search-wrap\">\n <button class=\"cqa-sb-search\" type=\"button\"\n [matTooltip]=\"!isExpanded ? 'Search' : ''\" matTooltipPosition=\"right\"\n (click)=\"searchClick.emit()\">\n <svg class=\"cqa-sb-search-icon\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"1.33\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"16\" height=\"16\">\n <circle cx=\"7\" cy=\"7\" r=\"4.5\"/>\n <line x1=\"10.5\" y1=\"10.5\" x2=\"13.5\" y2=\"13.5\"/>\n </svg>\n <span class=\"cqa-sb-search-text\" [class.cqa-sb-search-text--visible]=\"isExpanded\">\n {{ config?.searchPlaceholder || 'Search Anything...' }}\n </span>\n <span\n *ngIf=\"config?.showSearchShortcut !== false && isExpanded\"\n class=\"cqa-sb-search-kbd\">\u2318K</span>\n </button>\n </div>\n\n <!-- ===== 3. CTA ===== -->\n <div *ngIf=\"config?.showCta !== false\" class=\"cqa-sb-cta-wrap\">\n <button class=\"cqa-sb-cta\" type=\"button\"\n [matTooltip]=\"!isExpanded ? (config?.ctaLabel || 'New') : ''\" matTooltipPosition=\"right\"\n (click)=\"ctaClick.emit()\">\n <svg viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"\n stroke-linecap=\"round\" width=\"18\" height=\"18\">\n <line x1=\"9\" y1=\"3.75\" x2=\"9\" y2=\"14.25\"/>\n <line x1=\"3.75\" y1=\"9\" x2=\"14.25\" y2=\"9\"/>\n </svg>\n <span class=\"cqa-sb-cta-text\" [class.cqa-sb-cta-text--visible]=\"isExpanded\">\n {{ config?.ctaLabel || 'New Test Cases' }}\n </span>\n </button>\n </div>\n\n <!-- ===== 4. Nav menu ===== -->\n <cqa-nav-menu\n [items]=\"navItems\"\n [activeId]=\"activeNavId\"\n [isExpanded]=\"isExpanded\"\n [openParents]=\"openParents\"\n (itemClick)=\"onNavItemClick($event)\">\n </cqa-nav-menu>\n\n <!-- ===== 5. Utility bar ===== -->\n <div class=\"cqa-sb-utility\" [class.cqa-sb-utility--expanded]=\"isExpanded\">\n <!-- Expanded: 2 wide tiles (Help & docs + Live chat) -->\n <ng-container *ngIf=\"isExpanded\">\n <button\n *ngIf=\"config?.showHelpDocs !== false\"\n class=\"cqa-sb-util-tile\"\n type=\"button\"\n (click)=\"helpDocsClick.emit()\">\n <svg viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.35\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"18\" height=\"18\">\n <circle cx=\"9\" cy=\"9\" r=\"7.25\"/>\n <path d=\"M6.85 7a2.15 2.15 0 0 1 4.18.75c0 1.4-2.15 1.8-2.15 3.05\"/>\n <line x1=\"9\" y1=\"13.4\" x2=\"9.01\" y2=\"13.4\"/>\n </svg>\n <span class=\"cqa-sb-util-tile-label\">{{ config?.helpDocsLabel || 'Help & docs' }}</span>\n </button>\n\n <button\n *ngIf=\"config?.showLiveChat !== false\"\n class=\"cqa-sb-util-tile\"\n type=\"button\"\n (click)=\"liveChatClick.emit()\">\n <svg viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.35\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"18\" height=\"18\">\n <path d=\"M16 2H2a1 1 0 0 0-1 1v9a1 1 0 0 0 1 1h3v3l4.5-3H16a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z\"/>\n </svg>\n <span class=\"cqa-sb-util-tile-label\">Live chat</span>\n </button>\n </ng-container>\n\n <!-- Collapsed: help + live chat only (notifications / speaker are not shown on the rail) -->\n <ng-container *ngIf=\"!isExpanded\">\n <button\n *ngIf=\"config?.showHelpDocs !== false\"\n class=\"cqa-sb-util-compact\"\n type=\"button\"\n [matTooltip]=\"config?.helpDocsLabel || 'Help & docs'\" matTooltipPosition=\"right\"\n (click)=\"helpDocsClick.emit()\">\n <svg viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.35\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"18\" height=\"18\">\n <circle cx=\"9\" cy=\"9\" r=\"7.25\"/>\n <path d=\"M6.85 7a2.15 2.15 0 0 1 4.18.75c0 1.4-2.15 1.8-2.15 3.05\"/>\n <line x1=\"9\" y1=\"13.4\" x2=\"9.01\" y2=\"13.4\"/>\n </svg>\n </button>\n\n <button\n *ngIf=\"config?.showLiveChat !== false\"\n class=\"cqa-sb-util-compact\"\n type=\"button\"\n matTooltip=\"Live chat\" matTooltipPosition=\"right\"\n (click)=\"liveChatClick.emit()\">\n <svg viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.35\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"18\" height=\"18\">\n <path d=\"M16 2H2a1 1 0 0 0-1 1v9a1 1 0 0 0 1 1h3v3l4.5-3H16a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z\"/>\n </svg>\n </button>\n </ng-container>\n </div>\n\n <!-- ===== 6. Profile card ===== -->\n <div class=\"cqa-sb-profile\" #profileAnchor>\n <button class=\"cqa-sb-profile-main\" type=\"button\"\n [matTooltip]=\"!isExpanded ? (config?.userName || profileUser?.name || '') : ''\" matTooltipPosition=\"right\"\n [attr.aria-haspopup]=\"(profileUser && profileMenuEntries?.length) ? 'menu' : null\"\n [attr.aria-expanded]=\"(profileUser && profileMenuEntries?.length) ? isProfileMenuOpen : null\"\n (click)=\"onProfileClick()\">\n <div class=\"cqa-sb-profile-avatar\">{{ config?.userInitials || '?' }}</div>\n <div class=\"cqa-sb-profile-info\" [class.cqa-sb-profile-info--visible]=\"isExpanded\">\n <span class=\"cqa-sb-profile-name\">{{ config?.userName }}</span>\n <span *ngIf=\"config?.userRole\" class=\"cqa-sb-profile-role\">{{ config.userRole }}</span>\n </div>\n </button>\n <button *ngIf=\"isExpanded\" class=\"cqa-sb-profile-logout\" type=\"button\"\n aria-label=\"Logout\" (click)=\"logoutClick.emit()\">\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"16\" height=\"16\">\n <path d=\"M6 14H3a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h3\"/>\n <polyline points=\"11,11 14,8 11,5\"/>\n <line x1=\"14\" y1=\"8\" x2=\"6\" y2=\"8\"/>\n </svg>\n </button>\n </div>\n\n <cqa-profile-menu\n *ngIf=\"isProfileMenuOpen && profileUser && profileMenuEntries?.length\"\n [user]=\"profileUser\"\n [entries]=\"profileMenuEntries\"\n [anchor]=\"profileAnchorRef?.nativeElement || null\"\n (itemClick)=\"onProfileMenuItemClick($event)\"\n (dismissed)=\"onProfileMenuDismissed()\">\n </cqa-profile-menu>\n\n </aside>\n</div>\n", styles: ["*{box-sizing:border-box}:host{display:flex;flex-direction:column;flex:1;align-self:stretch;min-height:0;max-height:100%;height:100%;flex-shrink:0}.cqa-sb-root{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;max-height:100%;width:100%}.cqa-sb{background:#3f43ee;color:#fff;flex:1 1 auto;min-height:0;max-height:100%;height:100%;display:flex;flex-direction:column;flex-shrink:0;width:60px;transition:width .24s cubic-bezier(.32,.72,0,1);position:relative;z-index:50;overflow-x:visible;overflow-y:hidden}.cqa-sb--expanded{width:264px;overflow-x:hidden}.cqa-sb>cqa-nav-menu{flex:1 1 0;min-height:0;min-width:0;display:flex;flex-direction:column}.cqa-sb-header{padding:10px;position:relative;border-bottom:1px solid rgba(255,255,255,.08);min-height:51px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.cqa-sb-header--expanded{justify-content:flex-start;padding:12px 40px 10px 12px;height:71px;max-height:71px;gap:0}.cqa-sb-burger{width:28px;height:28px;border-radius:7px;background:#d8d9fc2e;display:flex;align-items:center;justify-content:center;border:none;cursor:pointer;color:#d8d9fc;flex-shrink:0;transition:background .15s,color .15s}.cqa-sb-burger:hover{background:#d8d9fc47;color:#fff}.cqa-sb-pin-or-close{position:absolute;right:10px;top:50%;transform:translateY(calc(-50% + 1px));width:28px;height:28px;border-radius:7px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;cursor:pointer;color:#d8d9fc;flex-shrink:0;transition:background .15s,color .15s}.cqa-sb-pin-or-close:hover{background:#ffffff1a;color:#fff}.cqa-sb-ws{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 14px 6px 6px;border-radius:10px;line-height:1;height:48px;transition:background .12s;flex:1;min-width:0;text-align:left;background:transparent;border:none;cursor:pointer;color:#fff;overflow:hidden}.cqa-sb-ws:hover{background:#ffffff14}.cqa-sb-ws-main{display:flex;align-items:center;gap:10px;min-width:0}.cqa-sb-ws-avatar{width:36px;height:36px;border-radius:9px;display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;overflow:hidden}.cqa-sb-ws-logo{position:relative;z-index:1;width:100%;height:100%;object-fit:contain;display:block}.cqa-sb-ws-default{position:relative;z-index:1;display:block;pointer-events:none}.cqa-sb-ws-status{position:absolute;bottom:-3px;right:-3px;width:12px;height:12px;background:#0dbd7d;border-radius:50%;border:2.5px solid #3f43ee;box-shadow:0 0 6px #0dbd7d}.cqa-sb-ws-info{flex:1;min-width:0;overflow:hidden}.cqa-sb-ws-name-row{display:flex;align-items:center;gap:6px}.cqa-sb-ws-name{font-weight:600;font-size:14px;line-height:16.8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff}.cqa-sb-ws-badge{background:#0dbd7d2e;color:#5ed3a8;font-size:9.5px;font-weight:700;padding:1px 6px 1px 4px;border-radius:4px;display:inline-flex;align-items:center;gap:3px;flex-shrink:0;text-transform:uppercase;letter-spacing:.04em}.cqa-sb-ws-badge:before{content:\"\";width:4px;height:4px;background:#0dbd7d;border-radius:50%;box-shadow:0 0 6px #0dbd7d}.cqa-sb-ws-switch{color:#ffffff8c;flex-shrink:0;padding:4px 0 7px;border-radius:6px;display:flex;align-items:center}.cqa-sb-search-wrap{padding:8px 12px;flex-shrink:0}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-search-wrap{padding:8px 10px 6px;display:flex;justify-content:center}.cqa-sb-search{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:8px;height:38px;padding:0 12px;font-size:12px;line-height:1;letter-spacing:-.31px;color:#ffffff80;display:flex;align-items:center;gap:8px;width:100%;cursor:pointer;transition:all .15s;overflow:hidden;font-family:inherit}.cqa-sb-search:hover{background:#ffffff14;color:#ffffffbf;border-color:#ffffff29}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-search{padding:0;width:40px;max-width:40px;height:40px;min-height:40px;margin:0 auto;justify-content:center;align-items:center;gap:0;background:transparent;border-color:#d8d9fc;border-radius:9px}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-search .cqa-sb-search-text,.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-search .cqa-sb-search-kbd{flex:0 0 0;width:0;min-width:0;height:0;margin:0;padding:0;overflow:hidden;opacity:0;border:0;pointer-events:none}.cqa-sb-search-icon{flex-shrink:0;width:14px;height:14px}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-search-icon{width:16px;height:16px}.cqa-sb-search-text{flex:1;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;font-weight:400;font-size:12px;line-height:1;letter-spacing:-.31px;color:#ffffff80;opacity:0;transition:opacity .16s 80ms}.cqa-sb-search-text--visible{opacity:1}.cqa-sb-search-kbd{display:inline-flex;align-items:center;justify-content:center;height:16px;font-size:10.5px;line-height:1;letter-spacing:normal;text-align:center;background:#ffffff26;padding:2px 6px;border-radius:4px;color:#ffffffd9;font-family:Menlo,ui-monospace,monospace;flex-shrink:0}.cqa-sb-cta-wrap{padding:8px 12px;flex-shrink:0}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-cta-wrap{padding:0 10px 12px;display:flex;justify-content:center}.cqa-sb-cta{background:#5256f0;color:#fbfcff;border:none;border-radius:8px;height:38px;padding:10px 24px 10px 16px;font-size:14px;font-weight:600;line-height:14px;letter-spacing:0;width:100%;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;transition:background .15s,transform .15s;overflow:hidden;font-family:inherit}.cqa-sb-cta:hover{background:#5b5ff2;transform:translateY(-1px)}.cqa-sb-cta:active{transform:translateY(0)}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-cta{padding:0;width:40px;height:40px;min-height:40px;margin:0 auto;position:relative;background:transparent;color:#fff}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-cta:before{content:\"\";position:absolute;inset:0;border-radius:9px;background:#b1b2f838;pointer-events:none}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-cta svg{position:relative;z-index:1;width:16px;height:16px}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-cta{box-shadow:inset 0 0 0 1px #d8d9fc38}.cqa-sb-cta-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;font-weight:600;font-size:14px;line-height:1;letter-spacing:0;color:#fbfcff;opacity:0;transition:opacity .16s 80ms;position:relative;z-index:1}.cqa-sb-cta-text--visible{opacity:1}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-cta-text{display:none}.cqa-sb-utility{border-top:none;box-shadow:inset 0 1px #ffffff1a;flex-shrink:0}.cqa-sb-utility--expanded{display:flex;align-items:center;justify-content:space-between;height:68px;gap:0;padding:8px 10px}.cqa-sb-utility:not(.cqa-sb-utility--expanded){display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:1px;padding:6px 10px}.cqa-sb-util-tile{width:110px;max-width:110px;border-radius:9px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:8px 6px 6px;color:#ffffffd9;background:#ffffff0f;border:none;cursor:pointer;transition:background .12s,color .12s;font-family:inherit}.cqa-sb-util-tile:hover{background:#b1b2f838;color:#fff}.cqa-sb-util-tile-label{font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;font-size:10.5px;font-weight:600;line-height:10.5px;letter-spacing:.1px;color:#ffffffd9;text-align:center;white-space:nowrap}.cqa-sb-util-compact{position:relative;width:36px;height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:#ffffffe0;background:transparent;border:none;cursor:pointer;transition:background .12s,color .12s;padding:0;flex-shrink:0}.cqa-sb-util-compact:hover{background:#ffffff14;color:#fff}.cqa-sb-util-compact-dot{position:absolute;top:6px;right:6px;width:8px;height:8px;background:#ee3f3f;border-radius:4px;border:2px solid #3f43ee;pointer-events:none}.cqa-sb-profile{border-top:1px solid rgba(255,255,255,.1);padding:12px 14px;height:62px;display:flex;align-items:center;gap:12px;background:#00000029;overflow:hidden;position:relative;width:100%;flex-shrink:0;color:#fff}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-profile{justify-content:center;padding:12px 0;height:auto;gap:0;background:#0000001f;border-top-color:#ffffff1f}.cqa-sb-profile-main{flex:1;min-width:0;display:flex;align-items:center;gap:12px;padding:0;background:transparent;border:none;border-radius:8px;cursor:pointer;color:inherit;font-family:inherit;text-align:left;transition:background .15s}.cqa-sb-profile-main:hover{background:#0000001a}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-profile-main{justify-content:center;flex:0 0 auto}.cqa-sb-profile-avatar{width:34px;height:34px;border-radius:17px;background:linear-gradient(135deg,#f472b6,#db2777);display:flex;align-items:center;justify-content:center;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;font-size:12px;font-weight:700;line-height:1;letter-spacing:0;color:#fff;flex-shrink:0;box-shadow:0 0 0 2px #ffffff26}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-profile-avatar{width:32px;height:32px;border-radius:16px;font-size:11.5px}.cqa-sb-profile-info{flex:1;min-width:0;overflow:hidden;opacity:0;transition:opacity .16s 80ms;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:4px}.cqa-sb-profile-info--visible{opacity:1}.cqa-sb:not(.cqa-sb--expanded) .cqa-sb-profile-info{display:none}.cqa-sb-profile-name{font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;font-weight:600;font-size:12.5px;line-height:13.75px;letter-spacing:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff}.cqa-sb-profile-role{display:inline-block;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;font-size:9px;font-weight:700;line-height:12.6px;letter-spacing:0;background:#d8d9fc38;padding:2px 7px;border-radius:999px;color:#fff;border:1px solid rgba(216,217,252,.2);white-space:nowrap;align-self:flex-start}.cqa-sb-profile-logout{color:#ffffff8c;padding:6px 6px 9px;border-radius:6px;background:transparent;border:none;cursor:pointer;flex-shrink:0;transition:background .12s,color .12s;display:flex;align-items:center;justify-content:center}.cqa-sb-profile-logout:hover{background:#ffffff1f;color:#fff}\n"] }]
|
|
174
214
|
}], ctorParameters: () => [{ type: i1.DomSanitizer }], propDecorators: { config: [{
|
|
175
215
|
type: Input
|
|
176
216
|
}], navItems: [{
|
|
@@ -179,6 +219,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
179
219
|
type: Input
|
|
180
220
|
}], initialOpenParentIds: [{
|
|
181
221
|
type: Input
|
|
222
|
+
}], profileUser: [{
|
|
223
|
+
type: Input
|
|
224
|
+
}], profileMenuEntries: [{
|
|
225
|
+
type: Input
|
|
182
226
|
}], navItemClick: [{
|
|
183
227
|
type: Output
|
|
184
228
|
}], ctaClick: [{
|
|
@@ -199,5 +243,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
199
243
|
type: Output
|
|
200
244
|
}], expandedChange: [{
|
|
201
245
|
type: Output
|
|
246
|
+
}], profileMenuItemClick: [{
|
|
247
|
+
type: Output
|
|
248
|
+
}], profileAnchorRef: [{
|
|
249
|
+
type: ViewChild,
|
|
250
|
+
args: ['profileAnchor', { static: false }]
|
|
202
251
|
}] } });
|
|
203
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUtiLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBdUMsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7OztBQU9yRixNQUFNLE9BQU8sZ0JBQWdCO0lBMEJQO0lBekJYLE1BQU0sR0FBa0IsRUFBRSxDQUFDO0lBQzNCLFFBQVEsR0FBa0IsRUFBRSxDQUFDO0lBQzdCLFdBQVcsR0FBVyxFQUFFLENBQUM7SUFDbEMsOEZBQThGO0lBQ3JGLG9CQUFvQixHQUFhLEVBQUUsQ0FBQztJQUVuQyxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUMxQyxRQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUNwQyxXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUN2QyxvQkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBQ2hELFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBQ3ZDLGtCQUFrQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFDOUMsYUFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFDekMsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFDeEMsYUFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFDekMsY0FBYyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7SUFFdkQsVUFBVSxHQUFZLEtBQUssQ0FBQztJQUM1QiwrRkFBK0Y7SUFDL0YsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUMxQixXQUFXLEdBQWEsRUFBRSxDQUFDO0lBRW5CLGtCQUFrQixHQUF5QyxJQUFJLENBQUM7SUFDaEUsTUFBTSxDQUFVLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztJQUVoRCxZQUFvQixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO0lBQUcsQ0FBQztJQUUvQzs7O09BR0c7SUFDSCxJQUFJLGlCQUFpQjtRQUNuQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQztRQUN2QyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pFLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQztJQUVELHVFQUF1RTtJQUN2RSxXQUFXO1FBQ1QsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELDZEQUE2RDtJQUM3RCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsdUVBQXVFO0lBQ3ZFLGlCQUFpQjtRQUNmLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxpQkFBaUIsQ0FBQyxFQUFjO1FBQzlCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTztRQUM5QyxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsYUFBNEIsQ0FBQztRQUNoRCxJQUFJLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxPQUFPLENBQUM7WUFBRSxPQUFPO1FBRTFELElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7WUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztnQkFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTywrQkFBK0IsQ0FBQyxJQUFpQjtRQUN2RCxJQUFJLENBQUMsQ0FBQyxJQUFJLFlBQVksT0FBTyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDN0MsT0FBTyxDQUFDLENBQUMsQ0FDUCxJQUFJLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDO1lBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsOEJBQThCLENBQUM7WUFDNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQ0FBbUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUM3QixDQUFDO0lBQ0osQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzVCLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0lBRUQsY0FBYyxDQUFDLEVBQVU7UUFDdkIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUssSUFBZ0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDdkMsb0ZBQW9GO1lBQ3BGLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3hCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM3QixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLEdBQUcsQ0FBQztJQUNyRSxDQUFDO0lBRU8sWUFBWSxDQUFDLEVBQVU7UUFDN0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDNUQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRU8sV0FBVyxDQUFDLEVBQVU7UUFDNUIsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUU7Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDdkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3pDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDbkQsSUFBSSxLQUFLO29CQUFFLE9BQU8sSUFBSSxDQUFDO1lBQ3pCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN6QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUMxRSxJQUFJLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO29CQUMxRCxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDcEQsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzt3R0E1S1UsZ0JBQWdCOzRGQUFoQixnQkFBZ0IsdWhCQ2xCN0Isa3RUQWdOQTs7NEZEOUxhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxhQUFhO2lGQUtkLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsb0JBQW9CO3NCQUE1QixLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IE5hdk1lbnVJdGVtLCBOYXZJdGVtLCBTaWRlYmFyQ29uZmlnLCBpc05hdlNlY3Rpb24gfSBmcm9tICcuL3NpZGViYXIubW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLXNpZGViYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2lkZWJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NpZGViYXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTaWRlYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGNvbmZpZzogU2lkZWJhckNvbmZpZyA9IHt9O1xuICBASW5wdXQoKSBuYXZJdGVtczogTmF2TWVudUl0ZW1bXSA9IFtdO1xuICBASW5wdXQoKSBhY3RpdmVOYXZJZDogc3RyaW5nID0gJyc7XG4gIC8qKiBQYXJlbnQgaXRlbSBJRHMgdG8gb3BlbiBieSBkZWZhdWx0IChpbiBhZGRpdGlvbiB0byB0aGUgb25lIGNvbnRhaW5pbmcgdGhlIGFjdGl2ZSBpdGVtKS4gKi9cbiAgQElucHV0KCkgaW5pdGlhbE9wZW5QYXJlbnRJZHM6IHN0cmluZ1tdID0gW107XG5cbiAgQE91dHB1dCgpIG5hdkl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgY3RhQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBzZWFyY2hDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHdvcmtzcGFjZVN3aXRjaENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgbG9nb3V0Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBub3RpZmljYXRpb25zQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBoZWxwRG9jc0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgc3BlYWtlckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgbGl2ZUNoYXRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGV4cGFuZGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIGlzRXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqIFdoZW4gdHJ1ZSwgZXhwYW5kZWQgc3RhdGUgaXMga2VwdCB1bnRpbCB0aGUgdXNlciBjb2xsYXBzZXMgKG1vdXNlIGxlYXZlIGRvZXMgbm90IGNsb3NlKS4gKi9cbiAgaXNQaW5uZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgb3BlblBhcmVudHM6IHN0cmluZ1tdID0gW107XG5cbiAgcHJpdmF0ZSBsZWF2ZUNvbGxhcHNlVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IExFQVZFX0NPTExBUFNFX01TID0gMjIwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHt9XG5cbiAgLyoqXG4gICAqIFNhbml0aXplciBieXBhc3Mgc28gYGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQs4oCmYCBVUklzIHJlbmRlciBpbiB0aGUgd29ya3NwYWNlXG4gICAqIGF2YXRhciDigJQgQW5ndWxhciAxMydzIGRlZmF1bHQgVVJMIHNhbml0aXplciByZXdyaXRlcyB0aGVtIHRvIGB1bnNhZmU64oCmYC5cbiAgICovXG4gIGdldCB3b3Jrc3BhY2VMb2dvU2FmZSgpOiBTYWZlVXJsIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5jb25maWc/LndvcmtzcGFjZUxvZ287XG4gICAgcmV0dXJuIHVybCA/IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwodXJsKSA6IG51bGw7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maWc/LmRlZmF1bHRQaW5uZWQpIHtcbiAgICAgIHRoaXMuaXNQaW5uZWQgPSB0cnVlO1xuICAgICAgdGhpcy5pc0V4cGFuZGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaW5pdGlhbE9wZW5QYXJlbnRJZHM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5vcGVuUGFyZW50cyA9IFsuLi50aGlzLmluaXRpYWxPcGVuUGFyZW50SWRzXTtcbiAgICB9XG4gICAgdGhpcy5lbnN1cmVBY3RpdmVQYXJlbnRPcGVuKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyTGVhdmVDb2xsYXBzZVRpbWVyKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2FjdGl2ZU5hdklkJ10gJiYgdGhpcy5hY3RpdmVOYXZJZCkge1xuICAgICAgdGhpcy5lbnN1cmVBY3RpdmVQYXJlbnRPcGVuKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEJ1cmdlcjogd2lkZSBzaWRlYmFyIHdpdGhvdXQgcGlubmluZyDigJQgY29sbGFwc2VzIG9uIG1vdXNlIGxlYXZlLiAqL1xuICBvcGVuU2lkZWJhcigpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyTGVhdmVDb2xsYXBzZVRpbWVyKCk7XG4gICAgdGhpcy5pc0V4cGFuZGVkID0gdHJ1ZTtcbiAgICB0aGlzLmlzUGlubmVkID0gZmFsc2U7XG4gICAgdGhpcy5leHBhbmRlZENoYW5nZS5lbWl0KHRydWUpO1xuICB9XG5cbiAgLyoqIEhlYWRlciBjb2xsYXBzZSBjb250cm9sOiBhbHdheXMgY2xvc2VzIGFuZCBjbGVhcnMgcGluLiAqL1xuICBjbG9zZVNpZGViYXIoKTogdm9pZCB7XG4gICAgdGhpcy5pc0V4cGFuZGVkID0gZmFsc2U7XG4gICAgdGhpcy5pc1Bpbm5lZCA9IGZhbHNlO1xuICAgIHRoaXMuY2xlYXJMZWF2ZUNvbGxhcHNlVGltZXIoKTtcbiAgICB0aGlzLmV4cGFuZGVkQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICB9XG5cbiAgcGluU2lkZWJhcigpOiB2b2lkIHtcbiAgICB0aGlzLmlzUGlubmVkID0gdHJ1ZTtcbiAgICB0aGlzLmNsZWFyTGVhdmVDb2xsYXBzZVRpbWVyKCk7XG4gIH1cblxuICAvKiogQ2FuY2VsIGRlbGF5ZWQgY29sbGFwc2Ugd2hlbiB0aGUgcG9pbnRlciByZXR1cm5zIHRvIHRoZSBzaWRlYmFyLiAqL1xuICBvbkFzaWRlTW91c2VFbnRlcigpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyTGVhdmVDb2xsYXBzZVRpbWVyKCk7XG4gIH1cblxuICAvKipcbiAgICogV2hlbiBleHBhbmRlZCBidXQgbm90IHBpbm5lZCwgY29sbGFwc2UgYWZ0ZXIgdGhlIHBvaW50ZXIgbGVhdmVzIHRoZSByYWlsLlxuICAgKiBTa2lwcyBzY2hlZHVsaW5nIGlmIHRoZSBwb2ludGVyIGlzIG1vdmluZyBpbnRvIG91ciBDREsgZmx5b3V0IC8gcmFpbCB0b29sdGlwIG92ZXJsYXlzLlxuICAgKi9cbiAgb25Bc2lkZU1vdXNlTGVhdmUoZXY6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1Bpbm5lZCB8fCAhdGhpcy5pc0V4cGFuZGVkKSByZXR1cm47XG4gICAgY29uc3QgcmVsYXRlZCA9IGV2LnJlbGF0ZWRUYXJnZXQgYXMgTm9kZSB8IG51bGw7XG4gICAgaWYgKHRoaXMuaXNQb2ludGVyRW50ZXJpbmdTaWRlYmFyT3ZlcmxheShyZWxhdGVkKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5jbGVhckxlYXZlQ29sbGFwc2VUaW1lcigpO1xuICAgIHRoaXMubGVhdmVDb2xsYXBzZVRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmxlYXZlQ29sbGFwc2VUaW1lciA9IG51bGw7XG4gICAgICBpZiAoIXRoaXMuaXNQaW5uZWQgJiYgdGhpcy5pc0V4cGFuZGVkKSB7XG4gICAgICAgIHRoaXMuaXNFeHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmV4cGFuZGVkQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgICAgfVxuICAgIH0sIFNpZGViYXJDb21wb25lbnQuTEVBVkVfQ09MTEFQU0VfTVMpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1BvaW50ZXJFbnRlcmluZ1NpZGViYXJPdmVybGF5KG5vZGU6IE5vZGUgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKCEobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQpKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICEhKFxuICAgICAgbm9kZS5jbG9zZXN0KCcuY3FhLW5hdi1mbHlvdXQtb3ZlcmxheScpIHx8XG4gICAgICBub2RlLmNsb3Nlc3QoJy5jcWEtbmF2LWZseW91dC1vdmVybGF5LXBhbmUnKSB8fFxuICAgICAgbm9kZS5jbG9zZXN0KCcubWF0LXRvb2x0aXAuY3FhLW5hdi1yYWlsLXRvb2x0aXAnKSB8fFxuICAgICAgbm9kZS5jbG9zZXN0KCcubWF0LXRvb2x0aXAnKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyTGVhdmVDb2xsYXBzZVRpbWVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxlYXZlQ29sbGFwc2VUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMubGVhdmVDb2xsYXBzZVRpbWVyKTtcbiAgICAgIHRoaXMubGVhdmVDb2xsYXBzZVRpbWVyID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBvbk5hdkl0ZW1DbGljayhpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbSA9IHRoaXMuZmluZE5hdkl0ZW0oaWQpO1xuICAgIGlmICghaXRlbSkge1xuICAgICAgdGhpcy5uYXZJdGVtQ2xpY2suZW1pdChpZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKChpdGVtIGFzIE5hdkl0ZW0pLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgIC8vIFBhcmVudCBpdGVtIHdpdGggY2hpbGRyZW46IHRvZ2dsZSBzdWItbWVudSB3aGVuIGV4cGFuZGVkLCBuYXZpZ2F0ZSB3aGVuIGNvbGxhcHNlZFxuICAgICAgaWYgKHRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgICB0aGlzLnRvZ2dsZVBhcmVudChpZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm5hdkl0ZW1DbGljay5lbWl0KGlkKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5uYXZJdGVtQ2xpY2suZW1pdChpZCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHdvcmtzcGFjZUluaXRpYWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWc/LndvcmtzcGFjZU5hbWU/LmNoYXJBdCgwKT8udG9VcHBlckNhc2UoKSB8fCAnVyc7XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZVBhcmVudChpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgaWR4ID0gdGhpcy5vcGVuUGFyZW50cy5pbmRleE9mKGlkKTtcbiAgICBpZiAoaWR4ID4gLTEpIHtcbiAgICAgIHRoaXMub3BlblBhcmVudHMgPSB0aGlzLm9wZW5QYXJlbnRzLmZpbHRlcihwID0+IHAgIT09IGlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuUGFyZW50cyA9IFsuLi50aGlzLm9wZW5QYXJlbnRzLCBpZF07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmaW5kTmF2SXRlbShpZDogc3RyaW5nKTogTmF2TWVudUl0ZW0gfCBudWxsIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5uYXZJdGVtcykge1xuICAgICAgaWYgKCFpc05hdlNlY3Rpb24oaXRlbSkgJiYgaXRlbS5pZCA9PT0gaWQpIHJldHVybiBpdGVtO1xuICAgICAgaWYgKCFpc05hdlNlY3Rpb24oaXRlbSkgJiYgaXRlbS5jaGlsZHJlbikge1xuICAgICAgICBjb25zdCBjaGlsZCA9IGl0ZW0uY2hpbGRyZW4uZmluZChjID0+IGMuaWQgPT09IGlkKTtcbiAgICAgICAgaWYgKGNoaWxkKSByZXR1cm4gaXRlbTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIGVuc3VyZUFjdGl2ZVBhcmVudE9wZW4oKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMubmF2SXRlbXMpIHtcbiAgICAgIGlmICghaXNOYXZTZWN0aW9uKGl0ZW0pICYmIGl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgICAgY29uc3QgaGFzQWN0aXZlQ2hpbGQgPSBpdGVtLmNoaWxkcmVuLnNvbWUoYyA9PiBjLmlkID09PSB0aGlzLmFjdGl2ZU5hdklkKTtcbiAgICAgICAgaWYgKGhhc0FjdGl2ZUNoaWxkICYmICF0aGlzLm9wZW5QYXJlbnRzLmluY2x1ZGVzKGl0ZW0uaWQpKSB7XG4gICAgICAgICAgdGhpcy5vcGVuUGFyZW50cyA9IFsuLi50aGlzLm9wZW5QYXJlbnRzLCBpdGVtLmlkXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBpZD1cImNxYS11aS1yb290XCIgc3R5bGU9XCJkaXNwbGF5OmJsb2NrO2hlaWdodDoxMDAlXCI+XG4gIDxhc2lkZVxuICAgIGNsYXNzPVwiY3FhLXNiXCJcbiAgICBbY2xhc3MuY3FhLXNiLS1leHBhbmRlZF09XCJpc0V4cGFuZGVkXCJcbiAgICAobW91c2VlbnRlcik9XCJvbkFzaWRlTW91c2VFbnRlcigpXCJcbiAgICAobW91c2VsZWF2ZSk9XCJvbkFzaWRlTW91c2VMZWF2ZSgkZXZlbnQpXCI+XG5cbiAgICA8IS0tID09PT09IDEuIFdvcmtzcGFjZSBoZWFkZXIgPT09PT0gLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1zYi1oZWFkZXJcIiBbY2xhc3MuY3FhLXNiLWhlYWRlci0tZXhwYW5kZWRdPVwiaXNFeHBhbmRlZFwiPlxuICAgICAgPCEtLSBDb2xsYXBzZWQ6IGhhbWJ1cmdlciBjaGlwIC0tPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cIiFpc0V4cGFuZGVkXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtc2ItYnVyZ2VyXCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5TaWRlYmFyKClcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIk9wZW4gc2lkZWJhclwiPlxuICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiPlxuICAgICAgICAgIDxsaW5lIHgxPVwiMlwiIHkxPVwiNFwiIHgyPVwiMTRcIiB5Mj1cIjRcIi8+XG4gICAgICAgICAgPGxpbmUgeDE9XCIyXCIgeTE9XCI4XCIgeDI9XCIxNFwiIHkyPVwiOFwiLz5cbiAgICAgICAgICA8bGluZSB4MT1cIjJcIiB5MT1cIjEyXCIgeDI9XCIxNFwiIHkyPVwiMTJcIi8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDwhLS0gRXhwYW5kZWQ6IHdvcmtzcGFjZSBzZWxlY3RvciArIHBpbiAodW5waW5uZWQpIG9yIGNsb3NlIChwaW5uZWQpIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRXhwYW5kZWRcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNxYS1zYi13c1wiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwid29ya3NwYWNlU3dpdGNoQ2xpY2suZW1pdCgpXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtc2Itd3MtbWFpblwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtc2Itd3MtYXZhdGFyXCI+XG4gICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJ3b3Jrc3BhY2VMb2dvU2FmZTsgZWxzZSB3c0luaXRpYWxUcGxcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3FhLXNiLXdzLWxvZ29cIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwid29ya3NwYWNlTG9nb1NhZmVcIlxuICAgICAgICAgICAgICAgIFthbHRdPVwiY29uZmlnPy53b3Jrc3BhY2VOYW1lIHx8ICdXb3Jrc3BhY2UgbG9nbydcIiAvPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3dzSW5pdGlhbFRwbD5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1zYi13cy1pbml0aWFsXCI+e3sgd29ya3NwYWNlSW5pdGlhbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb25maWc/LndvcmtzcGFjZVN0YXR1cyA9PT0gJ2xpdmUnXCIgY2xhc3M9XCJjcWEtc2Itd3Mtc3RhdHVzXCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtc2Itd3MtaW5mb1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1zYi13cy1uYW1lLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXNiLXdzLW5hbWVcIj57eyBjb25maWc/LndvcmtzcGFjZU5hbWUgfHwgJ1dvcmtzcGFjZScgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtc2Itd3Mtc3dpdGNoXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMTdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgICAgICB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIj5cbiAgICAgICAgICAgICAgPHBvbHlsaW5lIHBvaW50cz1cIjMsOSA3LDEyIDExLDlcIi8+XG4gICAgICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9XCIzLDUgNywyIDExLDVcIi8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cImlzUGlubmVkIHx8IGNvbmZpZz8uc2hvd1NpZGViYXJQaW4gIT09IGZhbHNlXCJcbiAgICAgICAgICBjbGFzcz1cImNxYS1zYi1waW4tb3ItY2xvc2VcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJpc1Bpbm5lZCA/IGNsb3NlU2lkZWJhcigpIDogcGluU2lkZWJhcigpXCJcbiAgICAgICAgICBbbWF0VG9vbHRpcF09XCJpc1Bpbm5lZCA/ICdDbG9zZSBzaWRlYmFyJyA6ICdQaW4gc2lkZWJhcidcIlxuICAgICAgICAgIFttYXRUb29sdGlwUG9zaXRpb25dPVwiaXNQaW5uZWQgPyAncmlnaHQnIDogJ2xlZnQnXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImlzUGlubmVkID8gJ0Nsb3NlIHNpZGViYXInIDogJ1BpbiBzaWRlYmFyJ1wiPlxuICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICpuZ0lmPVwiaXNQaW5uZWRcIlxuICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4zNVwiXG4gICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIj5cbiAgICAgICAgICAgIDxyZWN0IHg9XCIxLjVcIiB5PVwiMS41XCIgd2lkdGg9XCIxNVwiIGhlaWdodD1cIjE1XCIgcng9XCIyLjVcIi8+XG4gICAgICAgICAgICA8bGluZSB4MT1cIjYuNVwiIHkxPVwiMS41XCIgeDI9XCI2LjVcIiB5Mj1cIjE2LjVcIi8+XG4gICAgICAgICAgICA8cG9seWxpbmUgcG9pbnRzPVwiMTAuNSwxMiA4LjUsOSAxMC41LDZcIi8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgKm5nSWY9XCIhaXNQaW5uZWRcIlxuICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4zNVwiXG4gICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIj5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSAzdjRNNyAzaDR2NGwyIDNINWwyLTNWM3pcIi8+XG4gICAgICAgICAgICA8bGluZSB4MT1cIjlcIiB5MT1cIjEwXCIgeDI9XCI5XCIgeTI9XCIxNVwiLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gPT09PT0gMi4gU2VhcmNoID09PT09IC0tPlxuICAgIDxkaXYgKm5nSWY9XCJjb25maWc/LnNob3dTZWFyY2ggIT09IGZhbHNlXCIgY2xhc3M9XCJjcWEtc2Itc2VhcmNoLXdyYXBcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJjcWEtc2Itc2VhcmNoXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFttYXRUb29sdGlwXT1cIiFpc0V4cGFuZGVkID8gJ1NlYXJjaCcgOiAnJ1wiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgKGNsaWNrKT1cInNlYXJjaENsaWNrLmVtaXQoKVwiPlxuICAgICAgICA8c3ZnIGNsYXNzPVwiY3FhLXNiLXNlYXJjaC1pY29uXCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCI+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjdcIiBjeT1cIjdcIiByPVwiNC41XCIvPlxuICAgICAgICAgIDxsaW5lIHgxPVwiMTAuNVwiIHkxPVwiMTAuNVwiIHgyPVwiMTMuNVwiIHkyPVwiMTMuNVwiLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXNiLXNlYXJjaC10ZXh0XCIgW2NsYXNzLmNxYS1zYi1zZWFyY2gtdGV4dC0tdmlzaWJsZV09XCJpc0V4cGFuZGVkXCI+XG4gICAgICAgICAge3sgY29uZmlnPy5zZWFyY2hQbGFjZWhvbGRlciB8fCAnU2VhcmNoIEFueXRoaW5nLi4uJyB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKm5nSWY9XCJjb25maWc/LnNob3dTZWFyY2hTaG9ydGN1dCAhPT0gZmFsc2UgJiYgaXNFeHBhbmRlZFwiXG4gICAgICAgICAgY2xhc3M9XCJjcWEtc2Itc2VhcmNoLWtiZFwiPuKMmEs8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gPT09PT0gMy4gQ1RBID09PT09IC0tPlxuICAgIDxkaXYgKm5nSWY9XCJjb25maWc/LnNob3dDdGEgIT09IGZhbHNlXCIgY2xhc3M9XCJjcWEtc2ItY3RhLXdyYXBcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJjcWEtc2ItY3RhXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFttYXRUb29sdGlwXT1cIiFpc0V4cGFuZGVkID8gKGNvbmZpZz8uY3RhTGFiZWwgfHwgJ05ldycpIDogJydcIiBtYXRUb29sdGlwUG9zaXRpb249XCJyaWdodFwiXG4gICAgICAgIChjbGljayk9XCJjdGFDbGljay5lbWl0KClcIj5cbiAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjZcIlxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIj5cbiAgICAgICAgICA8bGluZSB4MT1cIjlcIiB5MT1cIjNcIiB4Mj1cIjlcIiB5Mj1cIjE1XCIvPlxuICAgICAgICAgIDxsaW5lIHgxPVwiM1wiIHkxPVwiOVwiIHgyPVwiMTVcIiB5Mj1cIjlcIi8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1zYi1jdGEtdGV4dFwiIFtjbGFzcy5jcWEtc2ItY3RhLXRleHQtLXZpc2libGVdPVwiaXNFeHBhbmRlZFwiPlxuICAgICAgICAgIHt7IGNvbmZpZz8uY3RhTGFiZWwgfHwgJ05ldyBUZXN0IENhc2VzJyB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gPT09PT0gNC4gTmF2IG1lbnUgPT09PT0gLS0+XG4gICAgPGNxYS1uYXYtbWVudVxuICAgICAgW2l0ZW1zXT1cIm5hdkl0ZW1zXCJcbiAgICAgIFthY3RpdmVJZF09XCJhY3RpdmVOYXZJZFwiXG4gICAgICBbaXNFeHBhbmRlZF09XCJpc0V4cGFuZGVkXCJcbiAgICAgIFtvcGVuUGFyZW50c109XCJvcGVuUGFyZW50c1wiXG4gICAgICAoaXRlbUNsaWNrKT1cIm9uTmF2SXRlbUNsaWNrKCRldmVudClcIj5cbiAgICA8L2NxYS1uYXYtbWVudT5cblxuICAgIDwhLS0gPT09PT0gNS4gVXRpbGl0eSBiYXIgPT09PT0gLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1zYi11dGlsaXR5XCIgW2NsYXNzLmNxYS1zYi11dGlsaXR5LS1leHBhbmRlZF09XCJpc0V4cGFuZGVkXCI+XG4gICAgICA8IS0tIEV4cGFuZGVkOiAyIHdpZGUgdGlsZXMgKEhlbHAgJiBkb2NzICsgTGl2ZSBjaGF0KSAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0V4cGFuZGVkXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cImNvbmZpZz8uc2hvd0hlbHBEb2NzICE9PSBmYWxzZVwiXG4gICAgICAgICAgY2xhc3M9XCJjcWEtc2ItdXRpbC10aWxlXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwiaGVscERvY3NDbGljay5lbWl0KClcIj5cbiAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMzVcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCI+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiOVwiIHI9XCI3LjI1XCIvPlxuICAgICAgICAgICAgPHBhdGggZD1cIk02Ljg1IDdhMi4xNSAyLjE1IDAgMCAxIDQuMTguNzVjMCAxLjQtMi4xNSAxLjgtMi4xNSAzLjA1XCIvPlxuICAgICAgICAgICAgPGxpbmUgeDE9XCI5XCIgeTE9XCIxMy40XCIgeDI9XCI5LjAxXCIgeTI9XCIxMy40XCIvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXNiLXV0aWwtdGlsZS1sYWJlbFwiPnt7IGNvbmZpZz8uaGVscERvY3NMYWJlbCB8fCAnSGVscCAmIGRvY3MnIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJjb25maWc/LnNob3dMaXZlQ2hhdCAhPT0gZmFsc2VcIlxuICAgICAgICAgIGNsYXNzPVwiY3FhLXNiLXV0aWwtdGlsZVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cImxpdmVDaGF0Q2xpY2suZW1pdCgpXCI+XG4gICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjM1XCJcbiAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiPlxuICAgICAgICAgICAgPHBhdGggZD1cIk0xNiAySDJhMSAxIDAgMCAwLTEgMXY5YTEgMSAwIDAgMCAxIDFoM3YzbDQuNS0zSDE2YTEgMSAwIDAgMCAxLTFWM2ExIDEgMCAwIDAtMS0xelwiLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1zYi11dGlsLXRpbGUtbGFiZWxcIj5MaXZlIGNoYXQ8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gQ29sbGFwc2VkOiBoZWxwICsgbGl2ZSBjaGF0IG9ubHkgKG5vdGlmaWNhdGlvbnMgLyBzcGVha2VyIGFyZSBub3Qgc2hvd24gb24gdGhlIHJhaWwpIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0V4cGFuZGVkXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cImNvbmZpZz8uc2hvd0hlbHBEb2NzICE9PSBmYWxzZVwiXG4gICAgICAgICAgY2xhc3M9XCJjcWEtc2ItdXRpbC1jb21wYWN0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbbWF0VG9vbHRpcF09XCJjb25maWc/LmhlbHBEb2NzTGFiZWwgfHwgJ0hlbHAgJiBkb2NzJ1wiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgICAoY2xpY2spPVwiaGVscERvY3NDbGljay5lbWl0KClcIj5cbiAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMzVcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCI+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiOVwiIHI9XCI3LjI1XCIvPlxuICAgICAgICAgICAgPHBhdGggZD1cIk02Ljg1IDdhMi4xNSAyLjE1IDAgMCAxIDQuMTguNzVjMCAxLjQtMi4xNSAxLjgtMi4xNSAzLjA1XCIvPlxuICAgICAgICAgICAgPGxpbmUgeDE9XCI5XCIgeTE9XCIxMy40XCIgeDI9XCI5LjAxXCIgeTI9XCIxMy40XCIvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJjb25maWc/LnNob3dMaXZlQ2hhdCAhPT0gZmFsc2VcIlxuICAgICAgICAgIGNsYXNzPVwiY3FhLXNiLXV0aWwtY29tcGFjdFwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgbWF0VG9vbHRpcD1cIkxpdmUgY2hhdFwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgICAoY2xpY2spPVwibGl2ZUNoYXRDbGljay5lbWl0KClcIj5cbiAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMzVcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCI+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDJIMmExIDEgMCAwIDAtMSAxdjlhMSAxIDAgMCAwIDEgMWgzdjNsNC41LTNIMTZhMSAxIDAgMCAwIDEtMVYzYTEgMSAwIDAgMC0xLTF6XCIvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSA9PT09PSA2LiBQcm9maWxlIGNhcmQgPT09PT0gLS0+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImNxYS1zYi1wcm9maWxlXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbbWF0VG9vbHRpcF09XCIhaXNFeHBhbmRlZCA/IChjb25maWc/LnVzZXJOYW1lIHx8ICcnKSA6ICcnXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgKGNsaWNrKT1cImxvZ291dENsaWNrLmVtaXQoKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1zYi1wcm9maWxlLWF2YXRhclwiPnt7IGNvbmZpZz8udXNlckluaXRpYWxzIHx8ICc/JyB9fTwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1zYi1wcm9maWxlLWluZm9cIiBbY2xhc3MuY3FhLXNiLXByb2ZpbGUtaW5mby0tdmlzaWJsZV09XCJpc0V4cGFuZGVkXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXNiLXByb2ZpbGUtbmFtZVwiPnt7IGNvbmZpZz8udXNlck5hbWUgfX08L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiY29uZmlnPy51c2VyUm9sZVwiIGNsYXNzPVwiY3FhLXNiLXByb2ZpbGUtcm9sZVwiPnt7IGNvbmZpZy51c2VyUm9sZSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW4gKm5nSWY9XCJpc0V4cGFuZGVkXCIgY2xhc3M9XCJjcWEtc2ItcHJvZmlsZS1sb2dvdXRcIiBhcmlhLWxhYmVsPVwiTG9nb3V0XCI+XG4gICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4yXCJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTYgMTRIM2ExIDEgMCAwIDEtMS0xVjNhMSAxIDAgMCAxIDEtMWgzXCIvPlxuICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9XCIxMSwxMSAxNCw4IDExLDVcIi8+XG4gICAgICAgICAgPGxpbmUgeDE9XCIxNFwiIHkxPVwiOFwiIHgyPVwiNlwiIHkyPVwiOFwiLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L3NwYW4+XG4gICAgPC9idXR0b24+XG5cbiAgPC9hc2lkZT5cbjwvZGl2PlxuIl19
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUlaLFNBQVMsR0FHVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQXVDLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7O0FBUXJGLE1BQU0sT0FBTyxnQkFBZ0I7SUF5Q1A7SUF4Q1gsTUFBTSxHQUFrQixFQUFFLENBQUM7SUFDM0IsUUFBUSxHQUFrQixFQUFFLENBQUM7SUFDN0IsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUNsQyw4RkFBOEY7SUFDckYsb0JBQW9CLEdBQWEsRUFBRSxDQUFDO0lBQzdDOzs7O09BSUc7SUFDTSxXQUFXLENBQW1CO0lBQ3ZDOzs7T0FHRztJQUNNLGtCQUFrQixHQUF1QixFQUFFLENBQUM7SUFFM0MsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFDMUMsUUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFDcEMsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFDdkMsb0JBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUNoRCxXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUN2QyxrQkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBQzlDLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBQ3pDLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBQ3hDLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBQ3pDLGNBQWMsR0FBRyxJ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d0MsZ0JBQWdCO3NCQUE5RCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgT25EZXN0cm95LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgTmF2TWVudUl0ZW0sIE5hdkl0ZW0sIFNpZGViYXJDb25maWcsIGlzTmF2U2VjdGlvbiB9IGZyb20gJy4vc2lkZWJhci5tb2RlbHMnO1xuaW1wb3J0IHsgUHJvZmlsZU1lbnVFbnRyeSwgUHJvZmlsZU1lbnVVc2VyIH0gZnJvbSAnLi9wcm9maWxlLW1lbnUvcHJvZmlsZS1tZW51Lm1vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1zaWRlYmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZGViYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaWRlYmFyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2lkZWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBjb25maWc6IFNpZGViYXJDb25maWcgPSB7fTtcbiAgQElucHV0KCkgbmF2SXRlbXM6IE5hdk1lbnVJdGVtW10gPSBbXTtcbiAgQElucHV0KCkgYWN0aXZlTmF2SWQ6IHN0cmluZyA9ICcnO1xuICAvKiogUGFyZW50IGl0ZW0gSURzIHRvIG9wZW4gYnkgZGVmYXVsdCAoaW4gYWRkaXRpb24gdG8gdGhlIG9uZSBjb250YWluaW5nIHRoZSBhY3RpdmUgaXRlbSkuICovXG4gIEBJbnB1dCgpIGluaXRpYWxPcGVuUGFyZW50SWRzOiBzdHJpbmdbXSA9IFtdO1xuICAvKipcbiAgICogVXNlciBkZXRhaWxzIHJlbmRlcmVkIGluIHRoZSBwcm9maWxlLW1lbnUgcG9wb3ZlciBoZWFkZXIuIFJlcXVpcmVkIGZvciB0aGUgcG9wb3ZlclxuICAgKiB0byBvcGVuOyB3aGVuIHVuZGVmaW5lZCB0aGUgcHJvZmlsZSBjYXJkIHJldGFpbnMgaXRzIGxlZ2FjeSBzaW5nbGUtYWN0aW9uIGJlaGF2aW9yXG4gICAqIChjbGlja2luZyBpdCBkaXJlY3RseSBmaXJlcyBgbG9nb3V0Q2xpY2tgKS5cbiAgICovXG4gIEBJbnB1dCgpIHByb2ZpbGVVc2VyPzogUHJvZmlsZU1lbnVVc2VyO1xuICAvKipcbiAgICogTWVudSBlbnRyaWVzIHNob3duIGluc2lkZSB0aGUgcHJvZmlsZS1tZW51IHBvcG92ZXIuIFByb3ZpZGUgYXQgbGVhc3Qgb25lIGVudHJ5IHRvXG4gICAqIGVuYWJsZSB0aGUgcG9wb3ZlcjsgYW4gZW1wdHkgYXJyYXkgcHJlc2VydmVzIHRoZSBsZWdhY3kgYGxvZ291dENsaWNrYCBiZWhhdmlvci5cbiAgICovXG4gIEBJbnB1dCgpIHByb2ZpbGVNZW51RW50cmllczogUHJvZmlsZU1lbnVFbnRyeVtdID0gW107XG5cbiAgQE91dHB1dCgpIG5hdkl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgY3RhQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBzZWFyY2hDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHdvcmtzcGFjZVN3aXRjaENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgbG9nb3V0Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBub3RpZmljYXRpb25zQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBoZWxwRG9jc0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgc3BlYWtlckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgbGl2ZUNoYXRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGV4cGFuZGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAvKiogRW1pdHMgYFByb2ZpbGVNZW51SXRlbS5pZGAgd2hlbiB0aGUgdXNlciBhY3RpdmF0ZXMgYW4gZW50cnkgaW4gdGhlIHByb2ZpbGUgcG9wb3Zlci4gKi9cbiAgQE91dHB1dCgpIHByb2ZpbGVNZW51SXRlbUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQFZpZXdDaGlsZCgncHJvZmlsZUFuY2hvcicsIHsgc3RhdGljOiBmYWxzZSB9KSBwcm9maWxlQW5jaG9yUmVmPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgaXNFeHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1Bpbm5lZDogYm9vbGVhbiA9IGZhbHNlO1xuICBvcGVuUGFyZW50czogc3RyaW5nW10gPSBbXTtcbiAgaXNQcm9maWxlTWVudU9wZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIGxlYXZlQ29sbGFwc2VUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgTEVBVkVfQ09MTEFQU0VfTVMgPSAyMjA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikge31cblxuICAvKipcbiAgICogU2FuaXRpemVyIGJ5cGFzcyBzbyBgZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCzigKZgIFVSSXMgcmVuZGVyIGluIHRoZSB3b3Jrc3BhY2VcbiAgICogYXZhdGFyIOKAlCBBbmd1bGFyIDEzJ3MgZGVmYXVsdCBVUkwgc2FuaXRpemVyIHJld3JpdGVzIHRoZW0gdG8gYHVuc2FmZTrigKZgLlxuICAgKi9cbiAgZ2V0IHdvcmtzcGFjZUxvZ29TYWZlKCk6IFNhZmVVcmwgfCBudWxsIHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmNvbmZpZz8ud29ya3NwYWNlTG9nbztcbiAgICByZXR1cm4gdXJsID8gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybCh1cmwpIDogbnVsbDtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbmZpZz8uZGVmYXVsdFBpbm5lZCkge1xuICAgICAgdGhpcy5pc1Bpbm5lZCA9IHRydWU7XG4gICAgICB0aGlzLmlzRXhwYW5kZWQgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAodGhpcy5pbml0aWFsT3BlblBhcmVudElkcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLm9wZW5QYXJlbnRzID0gWy4uLnRoaXMuaW5pdGlhbE9wZW5QYXJlbnRJZHNdO1xuICAgIH1cbiAgICB0aGlzLmVuc3VyZUFjdGl2ZVBhcmVudE9wZW4oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJMZWF2ZUNvbGxhcHNlVGltZXIoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snYWN0aXZlTmF2SWQnXSAmJiB0aGlzLmFjdGl2ZU5hdklkKSB7XG4gICAgICB0aGlzLmVuc3VyZUFjdGl2ZVBhcmVudE9wZW4oKTtcbiAgICB9XG4gIH1cblxuXG4gIG9uUHJvZmlsZUNsaWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb2ZpbGVVc2VyICYmIHRoaXMucHJvZmlsZU1lbnVFbnRyaWVzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuaXNQcm9maWxlTWVudU9wZW4gPSAhdGhpcy5pc1Byb2ZpbGVNZW51T3BlbjtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gTGVnYWN5IHNpbmdsZS1hY3Rpb24gYmVoYXZpb3VyIHByZXNlcnZlZCBmb3IgY29uc3VtZXJzIHRoYXQgaGF2ZW4ndCBtaWdyYXRlZC5cbiAgICB0aGlzLmxvZ291dENsaWNrLmVtaXQoKTtcbiAgfVxuXG4gIG9uUHJvZmlsZU1lbnVJdGVtQ2xpY2soaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaXNQcm9maWxlTWVudU9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLnByb2ZpbGVNZW51SXRlbUNsaWNrLmVtaXQoaWQpO1xuICB9XG5cbiAgb25Qcm9maWxlTWVudURpc21pc3NlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzUHJvZmlsZU1lbnVPcGVuID0gZmFsc2U7XG4gIH1cblxuICAvKiogQnVyZ2VyOiB3aWRlIHNpZGViYXIgd2l0aG91dCBwaW5uaW5nIOKAlCBjb2xsYXBzZXMgb24gbW91c2UgbGVhdmUuICovXG4gIG9wZW5TaWRlYmFyKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJMZWF2ZUNvbGxhcHNlVGltZXIoKTtcbiAgICB0aGlzLmlzRXhwYW5kZWQgPSB0cnVlO1xuICAgIHRoaXMuaXNQaW5uZWQgPSBmYWxzZTtcbiAgICB0aGlzLmV4cGFuZGVkQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gIH1cblxuICAvKiogSGVhZGVyIGNvbGxhcHNlIGNvbnRyb2w6IGFsd2F5cyBjbG9zZXMgYW5kIGNsZWFycyBwaW4uICovXG4gIGNsb3NlU2lkZWJhcigpOiB2b2lkIHtcbiAgICB0aGlzLmlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgICB0aGlzLmlzUGlubmVkID0gZmFsc2U7XG4gICAgdGhpcy5jbGVhckxlYXZlQ29sbGFwc2VUaW1lcigpO1xuICAgIHRoaXMuZXhwYW5kZWRDaGFuZ2UuZW1pdChmYWxzZSk7XG4gIH1cblxuICBwaW5TaWRlYmFyKCk6IHZvaWQge1xuICAgIHRoaXMuaXNQaW5uZWQgPSB0cnVlO1xuICAgIHRoaXMuY2xlYXJMZWF2ZUNvbGxhcHNlVGltZXIoKTtcbiAgfVxuXG4gIC8qKiBDYW5jZWwgZGVsYXllZCBjb2xsYXBzZSB3aGVuIHRoZSBwb2ludGVyIHJldHVybnMgdG8gdGhlIHNpZGViYXIuICovXG4gIG9uQXNpZGVNb3VzZUVudGVyKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJMZWF2ZUNvbGxhcHNlVGltZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIGV4cGFuZGVkIGJ1dCBub3QgcGlubmVkLCBjb2xsYXBzZSBhZnRlciB0aGUgcG9pbnRlciBsZWF2ZXMgdGhlIHJhaWwuXG4gICAqIFNraXBzIHNjaGVkdWxpbmcgaWYgdGhlIHBvaW50ZXIgaXMgbW92aW5nIGludG8gb3VyIENESyBmbHlvdXQgLyByYWlsIHRvb2x0aXAgb3ZlcmxheXMuXG4gICAqL1xuICBvbkFzaWRlTW91c2VMZWF2ZShldjogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzUGlubmVkIHx8ICF0aGlzLmlzRXhwYW5kZWQpIHJldHVybjtcbiAgICBjb25zdCByZWxhdGVkID0gZXYucmVsYXRlZFRhcmdldCBhcyBOb2RlIHwgbnVsbDtcbiAgICBpZiAodGhpcy5pc1BvaW50ZXJFbnRlcmluZ1NpZGViYXJPdmVybGF5KHJlbGF0ZWQpKSByZXR1cm47XG5cbiAgICB0aGlzLmNsZWFyTGVhdmVDb2xsYXBzZVRpbWVyKCk7XG4gICAgdGhpcy5sZWF2ZUNvbGxhcHNlVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubGVhdmVDb2xsYXBzZVRpbWVyID0gbnVsbDtcbiAgICAgIGlmICghdGhpcy5pc1Bpbm5lZCAmJiB0aGlzLmlzRXhwYW5kZWQpIHtcbiAgICAgICAgdGhpcy5pc0V4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZXhwYW5kZWRDaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgICB9XG4gICAgfSwgU2lkZWJhckNvbXBvbmVudC5MRUFWRV9DT0xMQVBTRV9NUyk7XG4gIH1cblxuICBwcml2YXRlIGlzUG9pbnRlckVudGVyaW5nU2lkZWJhck92ZXJsYXkobm9kZTogTm9kZSB8IG51bGwpOiBib29sZWFuIHtcbiAgICBpZiAoIShub2RlIGluc3RhbmNlb2YgRWxlbWVudCkpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gISEoXG4gICAgICBub2RlLmNsb3Nlc3QoJy5jcWEtbmF2LWZseW91dC1vdmVybGF5JykgfHxcbiAgICAgIG5vZGUuY2xvc2VzdCgnLmNxYS1uYXYtZmx5b3V0LW92ZXJsYXktcGFuZScpIHx8XG4gICAgICBub2RlLmNsb3Nlc3QoJy5tYXQtdG9vbHRpcC5jcWEtbmF2LXJhaWwtdG9vbHRpcCcpIHx8XG4gICAgICBub2RlLmNsb3Nlc3QoJy5tYXQtdG9vbHRpcCcpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJMZWF2ZUNvbGxhcHNlVGltZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubGVhdmVDb2xsYXBzZVRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5sZWF2ZUNvbGxhcHNlVGltZXIpO1xuICAgICAgdGhpcy5sZWF2ZUNvbGxhcHNlVGltZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIG9uTmF2SXRlbUNsaWNrKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyBTdWJtZW51IGxlYWY6IGFsd2F5cyBlbWl0IG5hdmlnYXRpb24gKGNoaWxkIGlkIHdhcyB3cm9uZ2x5IHRyZWF0ZWQgYXMgYSBwYXJlbnQgZm9yIHRvZ2dsZSkuXG4gICAgaWYgKHRoaXMuaXNDaGlsZE5hdklkKGlkKSkge1xuICAgICAgdGhpcy5uYXZJdGVtQ2xpY2suZW1pdChpZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaXRlbSA9IHRoaXMuZmluZFRvcExldmVsTmF2SXRlbShpZCk7XG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICB0aGlzLm5hdkl0ZW1DbGljay5lbWl0KGlkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoKGl0ZW0gYXMgTmF2SXRlbSkuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgLy8gUGFyZW50IGl0ZW0gd2l0aCBjaGlsZHJlbjogdG9nZ2xlIHN1Yi1tZW51IHdoZW4gZXhwYW5kZWQsIG5hdmlnYXRlIHdoZW4gY29sbGFwc2VkXG4gICAgICBpZiAodGhpcy5pc0V4cGFuZGVkKSB7XG4gICAgICAgIHRoaXMudG9nZ2xlUGFyZW50KGlkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubmF2SXRlbUNsaWNrLmVtaXQoaWQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5hdkl0ZW1DbGljay5lbWl0KGlkKTtcbiAgICB9XG4gIH1cblxuICBnZXQgd29ya3NwYWNlSW5pdGlhbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZz8ud29ya3NwYWNlTmFtZT8uY2hhckF0KDApPy50b1VwcGVyQ2FzZSgpIHx8ICdXJztcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlUGFyZW50KGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBpZHggPSB0aGlzLm9wZW5QYXJlbnRzLmluZGV4T2YoaWQpO1xuICAgIGlmIChpZHggPiAtMSkge1xuICAgICAgdGhpcy5vcGVuUGFyZW50cyA9IHRoaXMub3BlblBhcmVudHMuZmlsdGVyKHAgPT4gcCAhPT0gaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW5QYXJlbnRzID0gWy4uLnRoaXMub3BlblBhcmVudHMsIGlkXTtcbiAgICB9XG4gIH1cblxuICAvKiogVHJ1ZSBpZiBgaWRgIG1hdGNoZXMgYSBzdWJtZW51IHJvdyB1bmRlciBzb21lIHRvcC1sZXZlbCBuYXYgaXRlbS4gKi9cbiAgcHJpdmF0ZSBpc0NoaWxkTmF2SWQoaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLm5hdkl0ZW1zKSB7XG4gICAgICBpZiAoaXNOYXZTZWN0aW9uKGl0ZW0pKSBjb250aW51ZTtcbiAgICAgIGlmIChpdGVtLmNoaWxkcmVuPy5zb21lKChjKSA9PiBjLmlkID09PSBpZCkpIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGZpbmRUb3BMZXZlbE5hdkl0ZW0oaWQ6IHN0cmluZyk6IE5hdk1lbnVJdGVtIHwgbnVsbCB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMubmF2SXRlbXMpIHtcbiAgICAgIGlmICghaXNOYXZTZWN0aW9uKGl0ZW0pICYmIGl0ZW0uaWQgPT09IGlkKSByZXR1cm4gaXRlbTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIGVuc3VyZUFjdGl2ZVBhcmVudE9wZW4oKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMubmF2SXRlbXMpIHtcbiAgICAgIGlmICghaXNOYXZTZWN0aW9uKGl0ZW0pICYmIGl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgICAgY29uc3QgaGFzQWN0aXZlQ2hpbGQgPSBpdGVtLmNoaWxkcmVuLnNvbWUoYyA9PiBjLmlkID09PSB0aGlzLmFjdGl2ZU5hdklkKTtcbiAgICAgICAgaWYgKGhhc0FjdGl2ZUNoaWxkICYmICF0aGlzLm9wZW5QYXJlbnRzLmluY2x1ZGVzKGl0ZW0uaWQpKSB7XG4gICAgICAgICAgdGhpcy5vcGVuUGFyZW50cyA9IFsuLi50aGlzLm9wZW5QYXJlbnRzLCBpdGVtLmlkXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBpZD1cImNxYS11aS1yb290XCIgY2xhc3M9XCJjcWEtc2Itcm9vdFwiPlxuICA8YXNpZGVcbiAgICBjbGFzcz1cImNxYS1zYlwiXG4gICAgW2NsYXNzLmNxYS1zYi0tZXhwYW5kZWRdPVwiaXNFeHBhbmRlZFwiXG4gICAgKG1vdXNlZW50ZXIpPVwib25Bc2lkZU1vdXNlRW50ZXIoKVwiXG4gICAgKG1vdXNlbGVhdmUpPVwib25Bc2lkZU1vdXNlTGVhdmUoJGV2ZW50KVwiPlxuXG4gICAgPCEtLSA9PT09PSAxLiBXb3Jrc3BhY2UgaGVhZGVyID09PT09IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtc2ItaGVhZGVyXCIgW2NsYXNzLmNxYS1zYi1oZWFkZXItLWV4cGFuZGVkXT1cImlzRXhwYW5kZWRcIj5cbiAgICAgIDwhLS0gQ29sbGFwc2VkOiBoYW1idXJnZXIgY2hpcCAtLT5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCIhaXNFeHBhbmRlZFwiXG4gICAgICAgIGNsYXNzPVwiY3FhLXNiLWJ1cmdlclwiXG4gICAgICAgIChjbGljayk9XCJvcGVuU2lkZWJhcigpXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJPcGVuIHNpZGViYXJcIj5cbiAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIj5cbiAgICAgICAgICA8bGluZSB4MT1cIjJcIiB5MT1cIjRcIiB4Mj1cIjE0XCIgeTI9XCI0XCIvPlxuICAgICAgICAgIDxsaW5lIHgxPVwiMlwiIHkxPVwiOFwiIHgyPVwiMTRcIiB5Mj1cIjhcIi8+XG4gICAgICAgICAgPGxpbmUgeDE9XCIyXCIgeTE9XCIxMlwiIHgyPVwiMTRcIiB5Mj1cIjEyXCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8IS0tIEV4cGFuZGVkOiB3b3Jrc3BhY2Ugc2VsZWN0b3IgKyBwaW4gKHVucGlubmVkKSBvciBjbG9zZSAocGlubmVkKSAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0V4cGFuZGVkXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJjcWEtc2Itd3NcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIndvcmtzcGFjZVN3aXRjaENsaWNrLmVtaXQoKVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXNiLXdzLW1haW5cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXNiLXdzLWF2YXRhclwiPlxuICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwid29ya3NwYWNlTG9nb1NhZmU7IGVsc2UgZGVmYXVsdExvZ29UcGxcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3FhLXNiLXdzLWxvZ29cIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwid29ya3NwYWNlTG9nb1NhZmVcIlxuICAgICAgICAgICAgICAgIFthbHRdPVwiY29uZmlnPy53b3Jrc3BhY2VOYW1lIHx8ICdXb3Jrc3BhY2UgbG9nbydcIiAvPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRMb2dvVHBsPlxuICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjcWEtc2Itd3MtZGVmYXVsdFwiIHdpZHRoPVwiMzZcIiBoZWlnaHQ9XCIzNlwiIHZpZXdCb3g9XCIwIDAgNDAgNDBcIlxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIxXCIgd2lkdGg9XCIzNlwiIGhlaWdodD1cIjM2XCIgcng9XCI5XCIgZmlsbD1cInVybCgjY3FhLXNiLXdzLWdyYWQpXCIvPlxuICAgICAgICAgICAgICAgICAgPGcgZmlsdGVyPVwidXJsKCNjcWEtc2Itd3Mtc2hhZG93KVwiPlxuICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIxXCIgd2lkdGg9XCIzNlwiIGhlaWdodD1cIjM2XCIgcng9XCI5XCIgZmlsbD1cIndoaXRlXCIgZmlsbC1vcGFjaXR5PVwiMC4wMVwiIHNoYXBlLXJlbmRlcmluZz1cImNyaXNwRWRnZXNcIi8+XG4gICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjguMDc5NjlcIiBoZWlnaHQ9XCIyLjU5OTY5XCIgcng9XCIxLjI5OTg1XCIgdHJhbnNmb3JtPVwibWF0cml4KDAuMDU1NTQyNyAtMC45OTg0NTYgMC45OTgxOTQgMC4wNjAwNjk4IDEwLjMxODggMjguOTkxMilcIiBmaWxsPVwiIzk3QUZDNVwiLz5cbiAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiOC4wNzA4XCIgaGVpZ2h0PVwiMi42MDI3OFwiIHJ4PVwiMS4zMDEzOVwiIHRyYW5zZm9ybT1cIm1hdHJpeCgtMC4xNzMyNjkgLTAuOTg0ODc0IDAuOTgyMzY3IC0wLjE4Njk2NCAyNy4zNDEzIDI5LjQwNDMpXCIgZmlsbD1cIiM5N0FGQzVcIi8+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjE4ODQgMjMuNTk1OEMxMS40NTQ5IDIzLjc0NzMgMTEuNzg2NSAyMy42NTAyIDExLjkyOTEgMjMuMzc4OUwxMy4zNjIzIDIwLjY1MjNDMTMuNTA0OSAyMC4zODEgMTMuNDA0NSAyMC4wMzgyIDEzLjEzODEgMTkuODg2N0MxMi4yMDU1IDE5LjM1NjQgMTEuMDQ0OCAxOS42OTY0IDEwLjU0NTcgMjAuNjQ2TDEwLjQwMzcgMjAuOTE2MkM5LjkwNDUxIDIxLjg2NTggMTAuMjU1OSAyMy4wNjU1IDExLjE4ODQgMjMuNTk1OFpcIiBmaWxsPVwiI0MyREJGMlwiLz5cbiAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNjcxNCAyMi40Njc3QzExLjY3MTQgMjAuMTg2MyAxMy41MjA4IDE4LjMzNjkgMTUuODAyMiAxOC4zMzY5SDIzLjk1MDVDMjYuMjMxOSAxOC4zMzY5IDI4LjA4MTMgMjAuMTg2MyAyOC4wODEzIDIyLjQ2NzdWMjMuNzk1M0MyOC4wODEzIDI4LjMyNjggMjQuNDA3OCAzMi4wMDAzIDE5Ljg3NjQgMzIuMDAwM0MxNS4zNDQ5IDMyLjAwMDMgMTEuNjcxNCAyOC4zMjY4IDExLjY3MTQgMjMuNzk1M1YyMi40Njc3WlwiIGZpbGw9XCIjRDdFN0Y5XCIvPlxuICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yOC44MTE2IDIzLjczMTVDMjguNTQ1MSAyMy44ODMgMjguMjEzNSAyMy43ODU5IDI4LjA3MDkgMjMuNTE0NkwyNi42Mzc3IDIwLjc4ODFDMjYuNDk1MSAyMC41MTY3IDI2LjU5NTUgMjAuMTc0IDI2Ljg2MTkgMjAuMDIyNUMyNy43OTQ1IDE5LjQ5MjIgMjguOTU1MiAxOS44MzIxIDI5LjQ1NDMgMjAuNzgxN0wyOS41OTYzIDIxLjA1MTlDMzAuMDk1NSAyMi4wMDE1IDI5Ljc0NDEgMjMuMjAxMiAyOC44MTE2IDIzLjczMTVaXCIgZmlsbD1cIiNDMkRCRjJcIi8+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTI2LjM3NzQgMTkuMTc1OEMyNi4zNzc0IDE5LjgwMjYgMjMuNDc2MiAyMC4zMTA3IDE5Ljg5NzQgMjAuMzEwN0MxNi4zMTg2IDIwLjMxMDcgMTMuNDE3NSAxOS44MDI2IDEzLjQxNzUgMTkuMTc1OEMxMy40MTc1IDE4LjU0OTEgMTYuMzE4NiAxOC4wNDEgMTkuODk3NCAxOC4wNDFDMjMuNDc2MiAxOC4wNDEgMjYuMzc3NCAxOC41NDkxIDI2LjM3NzQgMTkuMTc1OFpcIiBmaWxsPVwiI0MyREJGMlwiLz5cbiAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjEuNzUwNyAyNi43Nzg1TDIxLjYyMjEgMjYuNjQ0OEMyMi4xNDcxIDI1Ljc4NjggMjIuMDUwNiAyNC42MzM1IDIxLjMzMjkgMjMuODg2OUMyMC41MDI2IDIzLjAyMzQgMTkuMTQ3MyAyMy4wMjM0IDE4LjMxNyAyMy44ODY5QzE3LjQ4NjggMjQuNzUwNSAxNy40ODY4IDI2LjE2MDEgMTguMzE3IDI3LjAyMzZDMTkuMDM0OCAyNy43NzAyIDIwLjE0MzcgMjcuODcwNSAyMC45Njg2IDI3LjMyNDVMMjEuMDk3MiAyNy40NTgyTDIxLjI2ODYgMjcuNjM2NUMyMS40NTA3IDI3LjgyNTkgMjEuNzQ1MyAyNy44MjU5IDIxLjkyMjEgMjcuNjM2NUMyMi4xMDQyIDI3LjQ0NzEgMjIuMTA0MiAyNy4xNDA2IDIxLjkyMjEgMjYuOTU2OEwyMS43NTA3IDI2Ljc3ODVaTTE4Ljk3MDYgMjYuMzQzOUMxOC40OTkyIDI1Ljg1MzYgMTguNDk5MiAyNS4wNTY5IDE4Ljk3MDYgMjQuNTcyMkMxOS40NDE5IDI0LjA4MTkgMjAuMjA4IDI0LjA4MTkgMjAuNjc0IDI0LjU3MjJDMjEuMDI3NSAyNC45Mzk5IDIxLjExMzIgMjUuNDgwNCAyMC45MzY1IDI1LjkzNzJDMjAuODc3NSAyNi4wODc2IDIwLjc5MTggMjYuMjI2OSAyMC42NzQgMjYuMzQzOUMyMC41NTYxIDI2LjQ2NjUgMjAuNDIyMiAyNi41NTU2IDIwLjI4MjkgMjYuNjE2OUMxOS44NDkxIDI2LjgwMDggMTkuMzI0MSAyNi43MTE2IDE4Ljk3MDYgMjYuMzQzOVpcIiBmaWxsPVwiIzYzNjZGMVwiLz5cbiAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTcuNDU3NVwiIGhlaWdodD1cIjEwLjgwMzVcIiByeD1cIjUuNDAxNzZcIiB0cmFuc2Zvcm09XCJtYXRyaXgoMC45OTk5MTggMC4wMTI4MTI5IC0wLjAxMTg0NDMgMC45OTk5MyAxMS4xNDAxIDYuOTI0OClcIiBmaWxsPVwiI0Q3RTdGOVwiLz5cbiAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuOTA2OCA5Ljc0OTYxQzEyLjI2MDMgOS43NTQxNCAxMi41NDM1IDEwLjA0NDQgMTIuNTM5MyAxMC4zOTc5TDEyLjQ5MjYgMTQuMzM3NkMxMi40ODg0IDE0LjY5MTEgMTIuMTk4NSAxNC45NzQgMTEuODQ1IDE0Ljk2OTRDMTAuNjA3OCAxNC45NTM2IDkuNjE2NjggMTMuOTM3NyA5LjYzMTMzIDEyLjcwMDVMOS42NDAwOSAxMS45NjExQzkuNjU0NzUgMTAuNzIzOSAxMC42Njk2IDkuNzMzNzYgMTEuOTA2OCA5Ljc0OTYxWlwiIGZpbGw9XCIjQzJEQkYyXCIvPlxuICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yNy43MDExIDE1LjE3MjNDMjcuMzQ3NiAxNS4xNjc3IDI3LjA2NDQgMTQuODc3NSAyNy4wNjg2IDE0LjUyNEwyNy4xMTUzIDEwLjU4NDNDMjcuMTE5NSAxMC4yMzA4IDI3LjQwOTQgOS45NDc5MiAyNy43NjI5IDkuOTUyNDVDMjkuMDAwMSA5Ljk2ODMgMjkuOTkxMiAxMC45ODQxIDI5Ljk3NjYgMTIuMjIxNEwyOS45Njc4IDEyLjk2MDdDMjkuOTUzMiAxNC4xOTggMjguOTM4MyAxNS4xODgxIDI3LjcwMTEgMTUuMTcyM1pcIiBmaWxsPVwiI0MyREJGMlwiLz5cbiAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTMuMDkzMVwiIGhlaWdodD1cIjYuODA4OTRcIiByeD1cIjMuNDA0NDdcIiB0cmFuc2Zvcm09XCJtYXRyaXgoMC45OTk5MTggMC4wMTI4MTI5IC0wLjAxMTg0NDMgMC45OTk5MyAxMy4yOTg4IDguOTUwMilcIiBmaWxsPVwiIzJGNDQ1QlwiLz5cbiAgICAgICAgICAgICAgICAgIDxlbGxpcHNlIGN4PVwiMC44NzI4NzRcIiBjeT1cIjAuOTA3ODU4XCIgcng9XCIwLjg3Mjg3NFwiIHJ5PVwiMC45MDc4NThcIiB0cmFuc2Zvcm09XCJtYXRyaXgoMC45OTk5MTggMC4wMTI4MTI5IC0wLjAxMTg0NDMgMC45OTk5MyAyMi4yMTUzIDExLjU2MDUpXCIgZmlsbD1cIiM2MzY2RjFcIi8+XG4gICAgICAgICAgICAgICAgICA8ZWxsaXBzZSBjeD1cIjAuODcyODc0XCIgY3k9XCIwLjkwNzg1OFwiIHJ4PVwiMC44NzI4NzRcIiByeT1cIjAuOTA3ODU4XCIgdHJhbnNmb3JtPVwibWF0cml4KDAuOTk5OTE4IDAuMDEyODEyOSAtMC4wMTE4NDQzIDAuOTk5OTMgMTUuNjI1NSAxMS40NzY2KVwiIGZpbGw9XCIjNjM2NkYxXCIvPlxuICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNi45MDQ3IDYuNjY1NzJDMTYuOTA5MSA2LjI5ODA1IDE3LjIxMDYgNi4wMDM4MiAxNy41NzgzIDYuMDA4NTNMMjIuMTgxOSA2LjA2NzUyQzIyLjU0OTYgNi4wNzIyMyAyMi44NDQxIDYuMzc0MSAyMi44Mzk4IDYuNzQxNzdDMjIuODI0NSA4LjAyODU5IDIxLjc2OSA5LjA1ODQxIDIwLjQ4MjIgOS4wNDE5MkwxOS4yMDcxIDkuMDI1NThDMTcuOTIwMyA5LjAwOTA5IDE2Ljg4OTUgNy45NTI1NCAxNi45MDQ3IDYuNjY1NzJaXCIgZmlsbD1cIiNDMkRCRjJcIi8+XG4gICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIxXCIgd2lkdGg9XCIzNlwiIGhlaWdodD1cIjM2XCIgcng9XCI5XCIgZmlsbD1cInVybCgjY3FhLXNiLXdzLWdsb3NzKVwiLz5cbiAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwiY3FhLXNiLXdzLXNoYWRvd1wiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIvPlxuICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgPGZlT2Zmc2V0IGR5PVwiMVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICA8ZmVDb21wb3NpdGUgaW4yPVwiaGFyZEFscGhhXCIgb3BlcmF0b3I9XCJvdXRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAuMTIgMFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCIgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93XCIvPlxuICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgPGZlTW9ycGhvbG9neSByYWRpdXM9XCIxXCIgb3BlcmF0b3I9XCJlcm9kZVwiIGluPVwiU291cmNlQWxwaGFcIiByZXN1bHQ9XCJlZmZlY3QyX2lubmVyU2hhZG93XCIvPlxuICAgICAgICAgICAgICAgICAgICAgIDxmZU9mZnNldC8+XG4gICAgICAgICAgICAgICAgICAgICAgPGZlQ29tcG9zaXRlIGluMj1cImhhcmRBbHBoYVwiIG9wZXJhdG9yPVwiYXJpdGhtZXRpY1wiIGsyPVwiLTFcIiBrMz1cIjFcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAuNCAwXCIvPlxuICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dcIiByZXN1bHQ9XCJlZmZlY3QyX2lubmVyU2hhZG93XCIvPlxuICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cbiAgICAgICAgICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50IGlkPVwiY3FhLXNiLXdzLWdyYWRcIiB4MT1cIjJcIiB5MT1cIjFcIiB4Mj1cIjM4XCIgeTI9XCIzN1wiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9XCIjQ0NFMUY0XCIvPlxuICAgICAgICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI0Q3RTdGOVwiLz5cbiAgICAgICAgICAgICAgICAgICAgPC9saW5lYXJHcmFkaWVudD5cbiAgICAgICAgICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50IGlkPVwiY3FhLXNiLXdzLWdsb3NzXCIgeDE9XCIyMFwiIHkxPVwiMVwiIHgyPVwiMjBcIiB5Mj1cIjM3XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj1cIndoaXRlXCIgc3RvcC1vcGFjaXR5PVwiMC41XCIvPlxuICAgICAgICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjAuNVwiIHN0b3AtY29sb3I9XCJ3aGl0ZVwiIHN0b3Atb3BhY2l0eT1cIjBcIi8+XG4gICAgICAgICAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XG4gICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29uZmlnPy53b3Jrc3BhY2VTdGF0dXMgPT09ICdsaXZlJ1wiIGNsYXNzPVwiY3FhLXNiLXdzLXN0YXR1c1wiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXNiLXdzLWluZm9cIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtc2Itd3MtbmFtZS1yb3dcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1zYi13cy1uYW1lXCI+e3sgY29uZmlnPy53b3Jrc3BhY2VOYW1lIHx8ICdXb3Jrc3BhY2UnIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXNiLXdzLXN3aXRjaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjE3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCI+XG4gICAgICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9XCIzLDkgNywxMiAxMSw5XCIvPlxuICAgICAgICAgICAgICA8cG9seWxpbmUgcG9pbnRzPVwiMyw1IDcsMiAxMSw1XCIvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJpc1Bpbm5lZCB8fCBjb25maWc/LnNob3dTaWRlYmFyUGluICE9PSBmYWxzZVwiXG4gICAgICAgICAgY2xhc3M9XCJjcWEtc2ItcGluLW9yLWNsb3NlXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwiaXNQaW5uZWQgPyBjbG9zZVNpZGViYXIoKSA6IHBpblNpZGViYXIoKVwiXG4gICAgICAgICAgW21hdFRvb2x0aXBdPVwiaXNQaW5uZWQgPyAnQ2xvc2Ugc2lkZWJhcicgOiAnUGluIHNpZGViYXInXCJcbiAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cImlzUGlubmVkID8gJ3JpZ2h0JyA6ICdsZWZ0J1wiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpc1Bpbm5lZCA/ICdDbG9zZSBzaWRlYmFyJyA6ICdQaW4gc2lkZWJhcidcIj5cbiAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAqbmdJZj1cImlzUGlubmVkXCJcbiAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMzVcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCI+XG4gICAgICAgICAgICA8cmVjdCB4PVwiMS41XCIgeT1cIjEuNVwiIHdpZHRoPVwiMTVcIiBoZWlnaHQ9XCIxNVwiIHJ4PVwiMi41XCIvPlxuICAgICAgICAgICAgPGxpbmUgeDE9XCI2LjVcIiB5MT1cIjEuNVwiIHgyPVwiNi41XCIgeTI9XCIxNi41XCIvPlxuICAgICAgICAgICAgPHBvbHlsaW5lIHBvaW50cz1cIjEwLjUsMTIgOC41LDkgMTAuNSw2XCIvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICpuZ0lmPVwiIWlzUGlubmVkXCJcbiAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMzVcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCI+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTkgM3Y0TTcgM2g0djRsMiAzSDVsMi0zVjN6XCIvPlxuICAgICAgICAgICAgPGxpbmUgeDE9XCI5XCIgeTE9XCIxMFwiIHgyPVwiOVwiIHkyPVwiMTVcIi8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tID09PT09IDIuIFNlYXJjaCA9PT09PSAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnPy5zaG93U2VhcmNoICE9PSBmYWxzZVwiIGNsYXNzPVwiY3FhLXNiLXNlYXJjaC13cmFwXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiY3FhLXNiLXNlYXJjaFwiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbbWF0VG9vbHRpcF09XCIhaXNFeHBhbmRlZCA/ICdTZWFyY2gnIDogJydcIiBtYXRUb29sdGlwUG9zaXRpb249XCJyaWdodFwiXG4gICAgICAgIChjbGljayk9XCJzZWFyY2hDbGljay5lbWl0KClcIj5cbiAgICAgICAgPHN2ZyBjbGFzcz1cImNxYS1zYi1zZWFyY2gtaWNvblwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI3XCIgY3k9XCI3XCIgcj1cIjQuNVwiLz5cbiAgICAgICAgICA8bGluZSB4MT1cIjEwLjVcIiB5MT1cIjEwLjVcIiB4Mj1cIjEzLjVcIiB5Mj1cIjEzLjVcIi8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1zYi1zZWFyY2gtdGV4dFwiIFtjbGFzcy5jcWEtc2Itc2VhcmNoLXRleHQtLXZpc2libGVdPVwiaXNFeHBhbmRlZFwiPlxuICAgICAgICAgIHt7IGNvbmZpZz8uc2VhcmNoUGxhY2Vob2xkZXIgfHwgJ1NlYXJjaCBBbnl0aGluZy4uLicgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICpuZ0lmPVwiY29uZmlnPy5zaG93U2VhcmNoU2hvcnRjdXQgIT09IGZhbHNlICYmIGlzRXhwYW5kZWRcIlxuICAgICAgICAgIGNsYXNzPVwiY3FhLXNiLXNlYXJjaC1rYmRcIj7ijJhLPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tID09PT09IDMuIENUQSA9PT09PSAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnPy5zaG93Q3RhICE9PSBmYWxzZVwiIGNsYXNzPVwiY3FhLXNiLWN0YS13cmFwXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiY3FhLXNiLWN0YVwiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbbWF0VG9vbHRpcF09XCIhaXNFeHBhbmRlZCA/IChjb25maWc/LmN0YUxhYmVsIHx8ICdOZXcnKSA6ICcnXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgICAoY2xpY2spPVwiY3RhQ2xpY2suZW1pdCgpXCI+XG4gICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS42XCJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCI+XG4gICAgICAgICAgPGxpbmUgeDE9XCI5XCIgeTE9XCIzLjc1XCIgeDI9XCI5XCIgeTI9XCIxNC4yNVwiLz5cbiAgICAgICAgICA8bGluZSB4MT1cIjMuNzVcIiB5MT1cIjlcIiB4Mj1cIjE0LjI1XCIgeTI9XCI5XCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtc2ItY3RhLXRleHRcIiBbY2xhc3MuY3FhLXNiLWN0YS10ZXh0LS12aXNpYmxlXT1cImlzRXhwYW5kZWRcIj5cbiAgICAgICAgICB7eyBjb25maWc/LmN0YUxhYmVsIHx8ICdOZXcgVGVzdCBDYXNlcycgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tID09PT09IDQuIE5hdiBtZW51ID09PT09IC0tPlxuICAgIDxjcWEtbmF2LW1lbnVcbiAgICAgIFtpdGVtc109XCJuYXZJdGVtc1wiXG4gICAgICBbYWN0aXZlSWRdPVwiYWN0aXZlTmF2SWRcIlxuICAgICAgW2lzRXhwYW5kZWRdPVwiaXNFeHBhbmRlZFwiXG4gICAgICBbb3BlblBhcmVudHNdPVwib3BlblBhcmVudHNcIlxuICAgICAgKGl0ZW1DbGljayk9XCJvbk5hdkl0ZW1DbGljaygkZXZlbnQpXCI+XG4gICAgPC9jcWEtbmF2LW1lbnU+XG5cbiAgICA8IS0tID09PT09IDUuIFV0aWxpdHkgYmFyID09PT09IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtc2ItdXRpbGl0eVwiIFtjbGFzcy5jcWEtc2ItdXRpbGl0eS0tZXhwYW5kZWRdPVwiaXNFeHBhbmRlZFwiPlxuICAgICAgPCEtLSBFeHBhbmRlZDogMiB3aWRlIHRpbGVzIChIZWxwICYgZG9jcyArIExpdmUgY2hhdCkgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFeHBhbmRlZFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJjb25maWc/LnNob3dIZWxwRG9jcyAhPT0gZmFsc2VcIlxuICAgICAgICAgIGNsYXNzPVwiY3FhLXNiLXV0aWwtdGlsZVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cImhlbHBEb2NzQ2xpY2suZW1pdCgpXCI+XG4gICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjM1XCJcbiAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjlcIiBjeT1cIjlcIiByPVwiNy4yNVwiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi44NSA3YTIuMTUgMi4xNSAwIDAgMSA0LjE4Ljc1YzAgMS40LTIuMTUgMS44LTIuMTUgMy4wNVwiLz5cbiAgICAgICAgICAgIDxsaW5lIHgxPVwiOVwiIHkxPVwiMTMuNFwiIHgyPVwiOS4wMVwiIHkyPVwiMTMuNFwiLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1zYi11dGlsLXRpbGUtbGFiZWxcIj57eyBjb25maWc/LmhlbHBEb2NzTGFiZWwgfHwgJ0hlbHAgJiBkb2NzJyB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiY29uZmlnPy5zaG93TGl2ZUNoYXQgIT09IGZhbHNlXCJcbiAgICAgICAgICBjbGFzcz1cImNxYS1zYi11dGlsLXRpbGVcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJsaXZlQ2hhdENsaWNrLmVtaXQoKVwiPlxuICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4zNVwiXG4gICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIj5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTYgMkgyYTEgMSAwIDAgMC0xIDF2OWExIDEgMCAwIDAgMSAxaDN2M2w0LjUtM0gxNmExIDEgMCAwIDAgMS0xVjNhMSAxIDAgMCAwLTEtMXpcIi8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtc2ItdXRpbC10aWxlLWxhYmVsXCI+TGl2ZSBjaGF0PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIENvbGxhcHNlZDogaGVscCArIGxpdmUgY2hhdCBvbmx5IChub3RpZmljYXRpb25zIC8gc3BlYWtlciBhcmUgbm90IHNob3duIG9uIHRoZSByYWlsKSAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNFeHBhbmRlZFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJjb25maWc/LnNob3dIZWxwRG9jcyAhPT0gZmFsc2VcIlxuICAgICAgICAgIGNsYXNzPVwiY3FhLXNiLXV0aWwtY29tcGFjdFwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW21hdFRvb2x0aXBdPVwiY29uZmlnPy5oZWxwRG9jc0xhYmVsIHx8ICdIZWxwICYgZG9jcydcIiBtYXRUb29sdGlwUG9zaXRpb249XCJyaWdodFwiXG4gICAgICAgICAgKGNsaWNrKT1cImhlbHBEb2NzQ2xpY2suZW1pdCgpXCI+XG4gICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjM1XCJcbiAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjlcIiBjeT1cIjlcIiByPVwiNy4yNVwiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi44NSA3YTIuMTUgMi4xNSAwIDAgMSA0LjE4Ljc1YzAgMS40LTIuMTUgMS44LTIuMTUgMy4wNVwiLz5cbiAgICAgICAgICAgIDxsaW5lIHgxPVwiOVwiIHkxPVwiMTMuNFwiIHgyPVwiOS4wMVwiIHkyPVwiMTMuNFwiLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiY29uZmlnPy5zaG93TGl2ZUNoYXQgIT09IGZhbHNlXCJcbiAgICAgICAgICBjbGFzcz1cImNxYS1zYi11dGlsLWNvbXBhY3RcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIG1hdFRvb2x0aXA9XCJMaXZlIGNoYXRcIiBtYXRUb29sdGlwUG9zaXRpb249XCJyaWdodFwiXG4gICAgICAgICAgKGNsaWNrKT1cImxpdmVDaGF0Q2xpY2suZW1pdCgpXCI+XG4gICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjM1XCJcbiAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiPlxuICAgICAgICAgICAgPHBhdGggZD1cIk0xNiAySDJhMSAxIDAgMCAwLTEgMXY5YTEgMSAwIDAgMCAxIDFoM3YzbDQuNS0zSDE2YTEgMSAwIDAgMCAxLTFWM2ExIDEgMCAwIDAtMS0xelwiLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gPT09PT0gNi4gUHJvZmlsZSBjYXJkID09PT09IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtc2ItcHJvZmlsZVwiICNwcm9maWxlQW5jaG9yPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImNxYS1zYi1wcm9maWxlLW1haW5cIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiIWlzRXhwYW5kZWQgPyAoY29uZmlnPy51c2VyTmFtZSB8fCBwcm9maWxlVXNlcj8ubmFtZSB8fCAnJykgOiAnJ1wiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCIocHJvZmlsZVVzZXIgJiYgcHJvZmlsZU1lbnVFbnRyaWVzPy5sZW5ndGgpID8gJ21lbnUnIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiKHByb2ZpbGVVc2VyICYmIHByb2ZpbGVNZW51RW50cmllcz8ubGVuZ3RoKSA/IGlzUHJvZmlsZU1lbnVPcGVuIDogbnVsbFwiXG4gICAgICAgIChjbGljayk9XCJvblByb2ZpbGVDbGljaygpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtc2ItcHJvZmlsZS1hdmF0YXJcIj57eyBjb25maWc/LnVzZXJJbml0aWFscyB8fCAnPycgfX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1zYi1wcm9maWxlLWluZm9cIiBbY2xhc3MuY3FhLXNiLXByb2ZpbGUtaW5mby0tdmlzaWJsZV09XCJpc0V4cGFuZGVkXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtc2ItcHJvZmlsZS1uYW1lXCI+e3sgY29uZmlnPy51c2VyTmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbmZpZz8udXNlclJvbGVcIiBjbGFzcz1cImNxYS1zYi1wcm9maWxlLXJvbGVcIj57eyBjb25maWcudXNlclJvbGUgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uICpuZ0lmPVwiaXNFeHBhbmRlZFwiIGNsYXNzPVwiY3FhLXNiLXByb2ZpbGUtbG9nb3V0XCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJMb2dvdXRcIiAoY2xpY2spPVwibG9nb3V0Q2xpY2suZW1pdCgpXCI+XG4gICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4yXCJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTYgMTRIM2ExIDEgMCAwIDEtMS0xVjNhMSAxIDAgMCAxIDEtMWgzXCIvPlxuICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9XCIxMSwxMSAxNCw4IDExLDVcIi8+XG4gICAgICAgICAgPGxpbmUgeDE9XCIxNFwiIHkxPVwiOFwiIHgyPVwiNlwiIHkyPVwiOFwiLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxjcWEtcHJvZmlsZS1tZW51XG4gICAgICAqbmdJZj1cImlzUHJvZmlsZU1lbnVPcGVuICYmIHByb2ZpbGVVc2VyICYmIHByb2ZpbGVNZW51RW50cmllcz8ubGVuZ3RoXCJcbiAgICAgIFt1c2VyXT1cInByb2ZpbGVVc2VyXCJcbiAgICAgIFtlbnRyaWVzXT1cInByb2ZpbGVNZW51RW50cmllc1wiXG4gICAgICBbYW5jaG9yXT1cInByb2ZpbGVBbmNob3JSZWY/Lm5hdGl2ZUVsZW1lbnQgfHwgbnVsbFwiXG4gICAgICAoaXRlbUNsaWNrKT1cIm9uUHJvZmlsZU1lbnVJdGVtQ2xpY2soJGV2ZW50KVwiXG4gICAgICAoZGlzbWlzc2VkKT1cIm9uUHJvZmlsZU1lbnVEaXNtaXNzZWQoKVwiPlxuICAgIDwvY3FhLXByb2ZpbGUtbWVudT5cblxuICA8L2FzaWRlPlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export function isNavSection(item) {
|
|
2
2
|
return item.type === 'section';
|
|
3
3
|
}
|
|
4
|
-
|
|
4
|
+
export { isProfileMenuDivider, } from './profile-menu/profile-menu.models';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5tb2RlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NpZGViYXIvc2lkZWJhci5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0NBLE1BQU0sVUFBVSxZQUFZLENBQUMsSUFBaUI7SUFDNUMsT0FBUSxJQUFtQixDQUFDLElBQUksS0FBSyxTQUFTLENBQUM7QUFDakQsQ0FBQztBQUVELE9BQU8sRUFLTCxvQkFBb0IsR0FDckIsTUFBTSxvQ0FBb0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgTmF2SXRlbSB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIC8qKiBDU1MgaWNvbiBjbGFzcyByZW5kZXJlZCBhcyA8aSBjbGFzcz1cImljb25DbGFzc1wiPiAqL1xuICBpY29uQ2xhc3M/OiBzdHJpbmc7XG4gIC8qKiBSb3V0ZSBwYXRoIOKAlCBjb25zdW1pbmcgY29tcG9uZW50IG5hdmlnYXRlcyBvbiBuYXZJdGVtQ2xpY2sgKi9cbiAgcm91dGVyTGluaz86IHN0cmluZztcbiAgY2hpbGRyZW4/OiBOYXZDaGlsZEl0ZW1bXTtcbiAgLyoqIEJhZGdlIGNvdW50IG9yIGxhYmVsLCBlLmcuIFwiM1wiICovXG4gIGJhZGdlPzogc3RyaW5nO1xuICBzdGF0dXM/OiAnbGl2ZScgfCAnZGFuZ2VyJztcbiAgaXNOZXc/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGRpc2FibGVkVG9vbHRpcD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOYXZDaGlsZEl0ZW0ge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBpY29uQ2xhc3M/OiBzdHJpbmc7XG4gIHJvdXRlckxpbms/OiBzdHJpbmc7XG4gIGlzTmV3PzogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5hdlNlY3Rpb24ge1xuICB0eXBlOiAnc2VjdGlvbic7XG4gIGxhYmVsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIE5hdk1lbnVJdGVtID0gTmF2SXRlbSB8IE5hdlNlY3Rpb247XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05hdlNlY3Rpb24oaXRlbTogTmF2TWVudUl0ZW0pOiBpdGVtIGlzIE5hdlNlY3Rpb24ge1xuICByZXR1cm4gKGl0ZW0gYXMgTmF2U2VjdGlvbikudHlwZSA9PT0gJ3NlY3Rpb24nO1xufVxuXG5leHBvcnQge1xuICBQcm9maWxlTWVudVVzZXIsXG4gIFByb2ZpbGVNZW51SXRlbSxcbiAgUHJvZmlsZU1lbnVEaXZpZGVyLFxuICBQcm9maWxlTWVudUVudHJ5LFxuICBpc1Byb2ZpbGVNZW51RGl2aWRlcixcbn0gZnJvbSAnLi9wcm9maWxlLW1lbnUvcHJvZmlsZS1tZW51Lm1vZGVscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lkZWJhckNvbmZpZyB7XG4gIHdvcmtzcGFjZU5hbWU/OiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCBsb2dvIGltYWdlIFVSTC9kYXRhLVVSSSBzaG93biBpbnNpZGUgdGhlIHdvcmtzcGFjZSBhdmF0YXIuIEZhbGxzIGJhY2sgdG8gdGhlIHdvcmtzcGFjZSBpbml0aWFsIHdoZW4gbm90IHByb3ZpZGVkLiAqL1xuICB3b3Jrc3BhY2VMb2dvPzogc3RyaW5nO1xuICAvKiogZS5nLiAnTGl2ZScgKi9cbiAgd29ya3NwYWNlQmFkZ2U/OiBzdHJpbmc7XG4gIHdvcmtzcGFjZVN0YXR1cz86ICdsaXZlJyB8ICd3YXJuaW5nJyB8ICdvZmZsaW5lJztcbiAgdXNlck5hbWU/OiBzdHJpbmc7XG4gIHVzZXJJbml0aWFscz86IHN0cmluZztcbiAgdXNlclJvbGU/OiBzdHJpbmc7XG4gIC8qKiBMYWJlbCBmb3IgdGhlIENUQSBidXR0b24sIGUuZy4gJ05ldyBUZXN0IENhc2UnICovXG4gIGN0YUxhYmVsPzogc3RyaW5nO1xuICBzZWFyY2hQbGFjZWhvbGRlcj86IHN0cmluZztcbiAgc2hvd1NlYXJjaD86IGJvb2xlYW47XG4gIC8qKiBXaGVuIHRydWUsIHNob3dzIGEg4oyYSyBoaW50IGluIHRoZSBleHBhbmRlZCBzZWFyY2ggcm93ICovXG4gIHNob3dTZWFyY2hTaG9ydGN1dD86IGJvb2xlYW47XG4gIHNob3dDdGE/OiBib29sZWFuO1xuICAvKiogUmVzZXJ2ZWQ7IG5vdGlmaWNhdGlvbnMgYXJlIG5vdCBzaG93biBvbiB0aGUgY29sbGFwc2VkIHJhaWwuICovXG4gIHNob3dOb3RpZmljYXRpb25zPzogYm9vbGVhbjtcbiAgLyoqIFJlc2VydmVkOyBiYWRnZSBpcyBub3Qgc2hvd24gb24gdGhlIGNvbGxhcHNlZCByYWlsLiAqL1xuICBub3RpZmljYXRpb25Db3VudD86IG51bWJlcjtcbiAgc2hvd0xpdmVDaGF0PzogYm9vbGVhbjtcbiAgLyoqIEhlbHAgJiBkb2NzIGVudHJ5IChleHBhbmRlZCBmb290ZXIgKyBjb2xsYXBzZWQgdXRpbGl0eSBzdGFjaykuIERlZmF1bHQgdHJ1ZSAqL1xuICBzaG93SGVscERvY3M/OiBib29sZWFuO1xuICAvKiogUmVzZXJ2ZWQ7IHNwZWFrZXIgLyDigJx3aGF04oCZcyBuZXfigJ0gaXMgbm90IHNob3duIG9uIHRoZSBjb2xsYXBzZWQgcmFpbC4gKi9cbiAgc2hvd1NwZWFrZXI/OiBib29sZWFuO1xuICAvKiogTGFiZWwgZm9yIHRoZSBoZWxwIHV0aWxpdHkgd2hlbiB0aGUgc2lkZWJhciBpcyBleHBhbmRlZCAqL1xuICBoZWxwRG9jc0xhYmVsPzogc3RyaW5nO1xuICAvKiogV2hlbiB0cnVlLCB0aGUgc2lkZWJhciBzdGFydHMgZXhwYW5kZWQgYW5kIHBpbm5lZCAobW91c2UgbGVhdmUgZG9lcyBub3QgY29sbGFwc2UpLiAqL1xuICBkZWZhdWx0UGlubmVkPzogYm9vbGVhbjtcbiAgLyoqIFdoZW4gZmFsc2UsIGhpZGVzIHRoZSBoZWFkZXIgcGluIGNvbnRyb2wgKGV4cGFuZGVkIHNpZGViYXIgYWx3YXlzIGF1dG8tY29sbGFwc2VzIG9uIG1vdXNlIGxlYXZlIHVubGVzcyBkZWZhdWx0UGlubmVkKS4gRGVmYXVsdDogdHJ1ZS4gKi9cbiAgc2hvd1NpZGViYXJQaW4/OiBib29sZWFuO1xufVxuIl19
|