@cqa-lib/cqa-ui 1.1.557 → 1.1.558

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.
Files changed (29) hide show
  1. package/esm2020/lib/sidebar/nav-item.component.mjs +171 -0
  2. package/esm2020/lib/sidebar/nav-menu.component.mjs +56 -0
  3. package/esm2020/lib/sidebar/nav-sub-item.component.mjs +27 -0
  4. package/esm2020/lib/sidebar/profile-menu/profile-menu.component.mjs +122 -0
  5. package/esm2020/lib/sidebar/profile-menu/profile-menu.models.mjs +4 -0
  6. package/esm2020/lib/sidebar/sidebar.component.mjs +286 -0
  7. package/esm2020/lib/sidebar/sidebar.models.mjs +5 -0
  8. package/esm2020/lib/sidebar/workspace-menu/workspace-menu.component.mjs +120 -0
  9. package/esm2020/lib/sidebar/workspace-menu/workspace-menu.models.mjs +2 -0
  10. package/esm2020/lib/templates/modular-table-template/modular-table-template.component.mjs +3 -3
  11. package/esm2020/lib/ui-kit.module.mjs +31 -1
  12. package/esm2020/lib/utils/tw-overlay-container.mjs +3 -1
  13. package/esm2020/public-api.mjs +10 -1
  14. package/fesm2015/cqa-lib-cqa-ui.mjs +818 -20
  15. package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
  16. package/fesm2020/cqa-lib-cqa-ui.mjs +801 -20
  17. package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
  18. package/lib/sidebar/nav-item.component.d.ts +48 -0
  19. package/lib/sidebar/nav-menu.component.d.ts +19 -0
  20. package/lib/sidebar/nav-sub-item.component.d.ts +11 -0
  21. package/lib/sidebar/profile-menu/profile-menu.component.d.ts +35 -0
  22. package/lib/sidebar/profile-menu/profile-menu.models.d.ts +35 -0
  23. package/lib/sidebar/sidebar.component.d.ts +97 -0
  24. package/lib/sidebar/sidebar.models.d.ts +63 -0
  25. package/lib/sidebar/workspace-menu/workspace-menu.component.d.ts +34 -0
  26. package/lib/sidebar/workspace-menu/workspace-menu.models.d.ts +12 -0
  27. package/lib/ui-kit.module.d.ts +164 -158
  28. package/package.json +1 -1
  29. package/public-api.d.ts +9 -0
@@ -0,0 +1,120 @@
1
+ import { Component, Input, Output, EventEmitter, ViewChild, } from '@angular/core';
2
+ import { TemplatePortal } from '@angular/cdk/portal';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/cdk/overlay";
5
+ import * as i2 from "@angular/common";
6
+ export class WorkspaceMenuComponent {
7
+ constructor(overlay, viewContainerRef) {
8
+ this.overlay = overlay;
9
+ this.viewContainerRef = viewContainerRef;
10
+ this.workspaces = [];
11
+ this.anchor = null;
12
+ this.workspaceSelected = new EventEmitter();
13
+ this.manageWorkspacesClick = new EventEmitter();
14
+ this.dismissed = new EventEmitter();
15
+ this.overlayRef = null;
16
+ this.keySub = null;
17
+ this.backdropSub = null;
18
+ this.viewInitialized = false;
19
+ this.trackByWs = (_index, item) => item.id;
20
+ }
21
+ ngAfterViewInit() {
22
+ this.viewInitialized = true;
23
+ if (this.anchor) {
24
+ this.openOverlay();
25
+ }
26
+ }
27
+ ngOnChanges(changes) {
28
+ if (!this.viewInitialized || !changes['anchor'])
29
+ return;
30
+ if (this.anchor) {
31
+ this.openOverlay();
32
+ }
33
+ else {
34
+ this.closeOverlay();
35
+ }
36
+ }
37
+ ngOnDestroy() {
38
+ this.closeOverlay();
39
+ }
40
+ onItemClick(item) {
41
+ this.workspaceSelected.emit(item.id);
42
+ }
43
+ onManageClick() {
44
+ this.manageWorkspacesClick.emit();
45
+ }
46
+ openOverlay() {
47
+ if (!this.anchor) {
48
+ return;
49
+ }
50
+ this.closeOverlay();
51
+ // Popover floats out to the right of the workspace button, top-aligned with the button.
52
+ // Both position pairs pin overlayY: 'top' so the popover always extends downward (mirror of
53
+ // profile-menu, which always extends upward from a bottom-anchored card).
54
+ // `withPush(false)` is critical — otherwise CDK slides the overlay back over the sidebar
55
+ // when its viewport calculation thinks the popover doesn't fit.
56
+ const positions = [
57
+ { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top', offsetX: 0, offsetY: 0 },
58
+ { originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetX: 0, offsetY: 4 },
59
+ ];
60
+ const positionStrategy = this.overlay
61
+ .position()
62
+ .flexibleConnectedTo(this.anchor)
63
+ .withPositions(positions)
64
+ .withFlexibleDimensions(false)
65
+ .withViewportMargin(8)
66
+ .withPush(false);
67
+ this.overlayRef = this.overlay.create({
68
+ positionStrategy,
69
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
70
+ hasBackdrop: true,
71
+ backdropClass: 'cdk-overlay-transparent-backdrop',
72
+ panelClass: 'cqa-workspace-menu-panel',
73
+ });
74
+ const portal = new TemplatePortal(this.popoverTpl, this.viewContainerRef);
75
+ this.overlayRef.attach(portal);
76
+ this.backdropSub = this.overlayRef.backdropClick().subscribe(() => this.dismissed.emit());
77
+ this.keySub = this.overlayRef.keydownEvents().subscribe((event) => {
78
+ if (event.key === 'Escape') {
79
+ event.preventDefault();
80
+ this.dismissed.emit();
81
+ }
82
+ });
83
+ }
84
+ closeOverlay() {
85
+ this.backdropSub?.unsubscribe();
86
+ this.backdropSub = null;
87
+ this.keySub?.unsubscribe();
88
+ this.keySub = null;
89
+ if (this.overlayRef) {
90
+ this.overlayRef.dispose();
91
+ this.overlayRef = null;
92
+ }
93
+ }
94
+ }
95
+ WorkspaceMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: WorkspaceMenuComponent, deps: [{ token: i1.Overlay }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
96
+ WorkspaceMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: WorkspaceMenuComponent, selector: "cqa-workspace-menu", inputs: { workspaces: "workspaces", currentWorkspaceId: "currentWorkspaceId", workspaceName: "workspaceName", anchor: "anchor", popoverId: "popoverId" }, outputs: { workspaceSelected: "workspaceSelected", manageWorkspacesClick: "manageWorkspacesClick", dismissed: "dismissed" }, viewQueries: [{ propertyName: "popoverTpl", first: true, predicate: ["popoverTpl"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #popoverTpl>\n <div class=\"cqa-wm\" [attr.id]=\"popoverId\" role=\"dialog\" aria-label=\"Switch workspace\">\n <header class=\"cqa-wm-header\">\n <h2 class=\"cqa-wm-heading\">Workspaces in {{ workspaceName }}</h2>\n </header>\n\n <ul class=\"cqa-wm-list\" role=\"listbox\">\n <li *ngFor=\"let ws of workspaces; trackBy: trackByWs\">\n <button\n type=\"button\"\n class=\"cqa-wm-item\"\n [class.cqa-wm-item--active]=\"ws.id === currentWorkspaceId\"\n role=\"option\"\n [attr.aria-selected]=\"ws.id === currentWorkspaceId\"\n (click)=\"onItemClick(ws)\">\n <span class=\"cqa-wm-avatar\" [style.background]=\"ws.avatarColor || null\">\n <img *ngIf=\"ws.logoUrl; else initialsTpl\" class=\"cqa-wm-logo\" [src]=\"ws.logoUrl\" [alt]=\"ws.name\"/>\n <ng-template #initialsTpl>\n <span class=\"cqa-wm-initials\">{{ ws.initials }}</span>\n </ng-template>\n </span>\n <span class=\"cqa-wm-text\">\n <span class=\"cqa-wm-name\" [title]=\"ws.name\">{{ ws.name }}</span>\n <span *ngIf=\"ws.subtitle\" class=\"cqa-wm-subtitle\" [title]=\"ws.subtitle\">{{ ws.subtitle }}</span>\n </span>\n <span *ngIf=\"ws.id === currentWorkspaceId\" class=\"cqa-wm-check\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\">\n <polyline points=\"3,8.5 6.5,12 13,4.5\"/>\n </svg>\n </span>\n </button>\n </li>\n </ul>\n\n <div class=\"cqa-wm-divider\"></div>\n\n <button type=\"button\" class=\"cqa-wm-footer\" (click)=\"onManageClick()\">\n <span class=\"cqa-wm-footer-icon\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"15\" height=\"15\">\n <circle cx=\"8\" cy=\"8\" r=\"2\"/>\n <path d=\"M13 8a5 5 0 0 0-.1-1l1.4-1-1.4-2.4-1.7.5a5 5 0 0 0-1.7-1L9 1H7l-.5 1.6a5 5 0 0 0-1.7 1L3.1 3.6 1.7 6l1.4 1A5 5 0 0 0 3 8a5 5 0 0 0 .1 1l-1.4 1L3.1 12.4l1.7-.5a5 5 0 0 0 1.7 1L7 15h2l.5-1.6a5 5 0 0 0 1.7-1l1.7.5L14.3 10 13 9a5 5 0 0 0 0-1z\"/>\n </svg>\n </span>\n <span class=\"cqa-wm-footer-label\">Workspace Management</span>\n </button>\n </div>\n</ng-template>\n", styles: ["::ng-deep .cqa-workspace-menu-panel{z-index:1200}.cqa-wm{width:270px;background:#fbfcff;border-radius:12px;box-shadow:0 0 0 1px #0f12a80a,0 12px 32px #0f12a82e;padding:6px;font-family:inherit;color:#161617;-webkit-user-select:none;user-select:none;animation:cqaWmFadeIn .12s cubic-bezier(.16,1,.3,1)}@keyframes cqaWmFadeIn{0%{opacity:0;transform:translateY(2px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}.cqa-wm-header{display:flex;align-items:center;min-height:36px;padding:4px 16px;border-bottom:1px solid #f0f0f1}.cqa-wm-heading{font-size:12px;font-weight:600;line-height:1;color:#99999e;margin:0}.cqa-wm-list{list-style:none;margin:0;padding:0;max-height:208px;overflow-y:auto;display:flex;flex-direction:column}.cqa-wm-list::-webkit-scrollbar{width:6px}.cqa-wm-list::-webkit-scrollbar-thumb{background:rgba(15,18,168,.16);border-radius:3px}.cqa-wm-list::-webkit-scrollbar-track{background:transparent}.cqa-wm-item{width:100%;display:flex;align-items:center;gap:11px;padding:8px 10px 12px;min-height:52px;background:transparent;border:none;border-radius:8px;cursor:pointer;text-align:left;font-family:inherit;color:#161617;transition:background .12s}.cqa-wm-item:hover{background:#f4f5f7}.cqa-wm-item:focus-visible{outline:2px solid #3f43ee;outline-offset:1px}.cqa-wm-item--active,.cqa-wm-item--active:hover{background:#d8d9fc}.cqa-wm-avatar{width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;background:linear-gradient(135deg,#a78bfa,#6d28d9);box-shadow:0 1px 2px #0000001f;color:#fff}.cqa-wm-logo{width:100%;height:100%;object-fit:contain;display:block}.cqa-wm-initials{font-family:Nunito Sans,Inter,system-ui,sans-serif;font-size:14px;font-weight:800;letter-spacing:0;line-height:1;color:#fff}.cqa-wm-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.cqa-wm-name{font-size:13px;font-weight:600;line-height:16.2px;color:#161617;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cqa-wm-subtitle{font-size:11px;font-weight:400;line-height:1;color:#6d6d74;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cqa-wm-check{color:#3f43ee;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}.cqa-wm-divider{height:1px;background:#f0f0f1;margin:0}.cqa-wm-footer{width:100%;display:flex;align-items:center;gap:10px;padding:9px 12px;background:transparent;border:none;border-radius:7px;cursor:pointer;font-family:inherit;font-size:13px;font-weight:400;line-height:1;color:#4c4c51;text-align:left;transition:background .12s}.cqa-wm-footer:hover{background:#f4f5f7}.cqa-wm-footer:focus-visible{outline:2px solid #3f43ee;outline-offset:1px}.cqa-wm-footer-icon{width:15px;height:15px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;opacity:.7;color:currentColor}.cqa-wm-footer-label{flex:1;min-width:0}\n"], directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
97
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: WorkspaceMenuComponent, decorators: [{
98
+ type: Component,
99
+ args: [{ selector: 'cqa-workspace-menu', template: "<ng-template #popoverTpl>\n <div class=\"cqa-wm\" [attr.id]=\"popoverId\" role=\"dialog\" aria-label=\"Switch workspace\">\n <header class=\"cqa-wm-header\">\n <h2 class=\"cqa-wm-heading\">Workspaces in {{ workspaceName }}</h2>\n </header>\n\n <ul class=\"cqa-wm-list\" role=\"listbox\">\n <li *ngFor=\"let ws of workspaces; trackBy: trackByWs\">\n <button\n type=\"button\"\n class=\"cqa-wm-item\"\n [class.cqa-wm-item--active]=\"ws.id === currentWorkspaceId\"\n role=\"option\"\n [attr.aria-selected]=\"ws.id === currentWorkspaceId\"\n (click)=\"onItemClick(ws)\">\n <span class=\"cqa-wm-avatar\" [style.background]=\"ws.avatarColor || null\">\n <img *ngIf=\"ws.logoUrl; else initialsTpl\" class=\"cqa-wm-logo\" [src]=\"ws.logoUrl\" [alt]=\"ws.name\"/>\n <ng-template #initialsTpl>\n <span class=\"cqa-wm-initials\">{{ ws.initials }}</span>\n </ng-template>\n </span>\n <span class=\"cqa-wm-text\">\n <span class=\"cqa-wm-name\" [title]=\"ws.name\">{{ ws.name }}</span>\n <span *ngIf=\"ws.subtitle\" class=\"cqa-wm-subtitle\" [title]=\"ws.subtitle\">{{ ws.subtitle }}</span>\n </span>\n <span *ngIf=\"ws.id === currentWorkspaceId\" class=\"cqa-wm-check\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\">\n <polyline points=\"3,8.5 6.5,12 13,4.5\"/>\n </svg>\n </span>\n </button>\n </li>\n </ul>\n\n <div class=\"cqa-wm-divider\"></div>\n\n <button type=\"button\" class=\"cqa-wm-footer\" (click)=\"onManageClick()\">\n <span class=\"cqa-wm-footer-icon\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"15\" height=\"15\">\n <circle cx=\"8\" cy=\"8\" r=\"2\"/>\n <path d=\"M13 8a5 5 0 0 0-.1-1l1.4-1-1.4-2.4-1.7.5a5 5 0 0 0-1.7-1L9 1H7l-.5 1.6a5 5 0 0 0-1.7 1L3.1 3.6 1.7 6l1.4 1A5 5 0 0 0 3 8a5 5 0 0 0 .1 1l-1.4 1L3.1 12.4l1.7-.5a5 5 0 0 0 1.7 1L7 15h2l.5-1.6a5 5 0 0 0 1.7-1l1.7.5L14.3 10 13 9a5 5 0 0 0 0-1z\"/>\n </svg>\n </span>\n <span class=\"cqa-wm-footer-label\">Workspace Management</span>\n </button>\n </div>\n</ng-template>\n", styles: ["::ng-deep .cqa-workspace-menu-panel{z-index:1200}.cqa-wm{width:270px;background:#fbfcff;border-radius:12px;box-shadow:0 0 0 1px #0f12a80a,0 12px 32px #0f12a82e;padding:6px;font-family:inherit;color:#161617;-webkit-user-select:none;user-select:none;animation:cqaWmFadeIn .12s cubic-bezier(.16,1,.3,1)}@keyframes cqaWmFadeIn{0%{opacity:0;transform:translateY(2px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}.cqa-wm-header{display:flex;align-items:center;min-height:36px;padding:4px 16px;border-bottom:1px solid #f0f0f1}.cqa-wm-heading{font-size:12px;font-weight:600;line-height:1;color:#99999e;margin:0}.cqa-wm-list{list-style:none;margin:0;padding:0;max-height:208px;overflow-y:auto;display:flex;flex-direction:column}.cqa-wm-list::-webkit-scrollbar{width:6px}.cqa-wm-list::-webkit-scrollbar-thumb{background:rgba(15,18,168,.16);border-radius:3px}.cqa-wm-list::-webkit-scrollbar-track{background:transparent}.cqa-wm-item{width:100%;display:flex;align-items:center;gap:11px;padding:8px 10px 12px;min-height:52px;background:transparent;border:none;border-radius:8px;cursor:pointer;text-align:left;font-family:inherit;color:#161617;transition:background .12s}.cqa-wm-item:hover{background:#f4f5f7}.cqa-wm-item:focus-visible{outline:2px solid #3f43ee;outline-offset:1px}.cqa-wm-item--active,.cqa-wm-item--active:hover{background:#d8d9fc}.cqa-wm-avatar{width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;background:linear-gradient(135deg,#a78bfa,#6d28d9);box-shadow:0 1px 2px #0000001f;color:#fff}.cqa-wm-logo{width:100%;height:100%;object-fit:contain;display:block}.cqa-wm-initials{font-family:Nunito Sans,Inter,system-ui,sans-serif;font-size:14px;font-weight:800;letter-spacing:0;line-height:1;color:#fff}.cqa-wm-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.cqa-wm-name{font-size:13px;font-weight:600;line-height:16.2px;color:#161617;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cqa-wm-subtitle{font-size:11px;font-weight:400;line-height:1;color:#6d6d74;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cqa-wm-check{color:#3f43ee;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}.cqa-wm-divider{height:1px;background:#f0f0f1;margin:0}.cqa-wm-footer{width:100%;display:flex;align-items:center;gap:10px;padding:9px 12px;background:transparent;border:none;border-radius:7px;cursor:pointer;font-family:inherit;font-size:13px;font-weight:400;line-height:1;color:#4c4c51;text-align:left;transition:background .12s}.cqa-wm-footer:hover{background:#f4f5f7}.cqa-wm-footer:focus-visible{outline:2px solid #3f43ee;outline-offset:1px}.cqa-wm-footer-icon{width:15px;height:15px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;opacity:.7;color:currentColor}.cqa-wm-footer-label{flex:1;min-width:0}\n"] }]
100
+ }], ctorParameters: function () { return [{ type: i1.Overlay }, { type: i0.ViewContainerRef }]; }, propDecorators: { workspaces: [{
101
+ type: Input
102
+ }], currentWorkspaceId: [{
103
+ type: Input
104
+ }], workspaceName: [{
105
+ type: Input
106
+ }], anchor: [{
107
+ type: Input
108
+ }], popoverId: [{
109
+ type: Input
110
+ }], workspaceSelected: [{
111
+ type: Output
112
+ }], manageWorkspacesClick: [{
113
+ type: Output
114
+ }], dismissed: [{
115
+ type: Output
116
+ }], popoverTpl: [{
117
+ type: ViewChild,
118
+ args: ['popoverTpl', { static: true }]
119
+ }] } });
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zaWRlYmFyL3dvcmtzcGFjZS1tZW51L3dvcmtzcGFjZS1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2lkZWJhci93b3Jrc3BhY2UtbWVudS93b3Jrc3BhY2UtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUlaLFNBQVMsR0FHVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFTckQsTUFBTSxPQUFPLHNCQUFzQjtJQW9CakMsWUFDVSxPQUFnQixFQUNoQixnQkFBa0M7UUFEbEMsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBckJuQyxlQUFVLEdBQXdCLEVBQUUsQ0FBQztRQUlyQyxXQUFNLEdBQXVCLElBQUksQ0FBQztRQUlqQyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUN4RCwwQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ2pELGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBSXZDLGVBQVUsR0FBc0IsSUFBSSxDQUFDO1FBQ3JDLFdBQU0sR0FBd0IsSUFBSSxDQUFDO1FBQ25DLGdCQUFXLEdBQXdCLElBQUksQ0FBQztRQUN4QyxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQTJCaEMsY0FBUyxHQUFHLENBQUMsTUFBYyxFQUFFLElBQXVCLEVBQW1CLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBdEIvRSxDQUFDO0lBRUosZUFBZTtRQUNiLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFB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QUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ3ZCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sWUFBWTtRQUNsQixJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7U0FDeEI7SUFDSCxDQUFDOzttSEE1R1Usc0JBQXNCO3VHQUF0QixzQkFBc0IsOGRDdkJuQyw0K0VBaURBOzJGRDFCYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0Usb0JBQW9COzZIQUtyQixVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFFb0MsVUFBVTtzQkFBcEQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlSZWYsIENvbm5lY3Rpb25Qb3NpdGlvblBhaXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBXb3Jrc3BhY2VNZW51SXRlbSB9IGZyb20gJy4vd29ya3NwYWNlLW1lbnUubW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLXdvcmtzcGFjZS1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmtzcGFjZS1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd29ya3NwYWNlLW1lbnUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgV29ya3NwYWNlTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KCkgd29ya3NwYWNlczogV29ya3NwYWNlTWVudUl0ZW1bXSA9IFtdO1xuICBASW5wdXQoKSBjdXJyZW50V29ya3NwYWNlSWQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gIC8qKiBOYW1lIG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlIHdvcmtzcGFjZSDigJQgaW50ZXJwb2xhdGVkIGludG8gdGhlIHBvcG92ZXIgaGVhZGluZy4gKi9cbiAgQElucHV0KCkgd29ya3NwYWNlTmFtZT86IHN0cmluZztcbiAgQElucHV0KCkgYW5jaG9yOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAvKiogT3B0aW9uYWwgaWQgb24gdGhlIHBvcG92ZXIgZWxlbWVudCDigJQgdXNlZnVsIGZvciBhcmlhLWxhYmVsbGVkYnkgd2lyaW5nLiAqL1xuICBASW5wdXQoKSBwb3BvdmVySWQ/OiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpIHdvcmtzcGFjZVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBtYW5hZ2VXb3Jrc3BhY2VzQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBkaXNtaXNzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQFZpZXdDaGlsZCgncG9wb3ZlclRwbCcsIHsgc3RhdGljOiB0cnVlIH0pIHBvcG92ZXJUcGwhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBwcml2YXRlIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBrZXlTdWI6IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGJhY2tkcm9wU3ViOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSB2aWV3SW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICApIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMudmlld0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5hbmNob3IpIHtcbiAgICAgIHRoaXMub3Blbk92ZXJsYXkoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnZpZXdJbml0aWFsaXplZCB8fCAhY2hhbmdlc1snYW5jaG9yJ10pIHJldHVybjtcbiAgICBpZiAodGhpcy5hbmNob3IpIHtcbiAgICAgIHRoaXMub3Blbk92ZXJsYXkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbG9zZU92ZXJsYXkoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlT3ZlcmxheSgpO1xuICB9XG5cbiAgdHJhY2tCeVdzID0gKF9pbmRleDogbnVtYmVyLCBpdGVtOiBXb3Jrc3BhY2VNZW51SXRlbSk6IHN0cmluZyB8IG51bWJlciA9PiBpdGVtLmlkO1xuXG4gIG9uSXRlbUNsaWNrKGl0ZW06IFdvcmtzcGFjZU1lbnVJdGVtKTogdm9pZCB7XG4gICAgdGhpcy53b3Jrc3BhY2VTZWxlY3RlZC5lbWl0KGl0ZW0uaWQpO1xuICB9XG5cbiAgb25NYW5hZ2VDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLm1hbmFnZVdvcmtzcGFjZXNDbGljay5lbWl0KCk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5PdmVybGF5KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hbmNob3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jbG9zZU92ZXJsYXkoKTtcblxuICAgIC8vIFBvcG92ZXIgZmxvYXRzIG91dCB0byB0aGUgcmlnaHQgb2YgdGhlIHdvcmtzcGFjZSBidXR0b24sIHRvcC1hbGlnbmVkIHdpdGggdGhlIGJ1dHRvbi5cbiAgICAvLyBCb3RoIHBvc2l0aW9uIHBhaXJzIHBpbiBvdmVybGF5WTogJ3RvcCcgc28gdGhlIHBvcG92ZXIgYWx3YXlzIGV4dGVuZHMgZG93bndhcmQgKG1pcnJvciBvZlxuICAgIC8vIHByb2ZpbGUtbWVudSwgd2hpY2ggYWx3YXlzIGV4dGVuZHMgdXB3YXJkIGZyb20gYSBib3R0b20tYW5jaG9yZWQgY2FyZCkuXG4gICAgLy8gYHdpdGhQdXNoKGZhbHNlKWAgaXMgY3JpdGljYWwg4oCUIG90aGVyd2lzZSBDREsgc2xpZGVzIHRoZSBvdmVybGF5IGJhY2sgb3ZlciB0aGUgc2lkZWJhclxuICAgIC8vIHdoZW4gaXRzIHZpZXdwb3J0IGNhbGN1bGF0aW9uIHRoaW5rcyB0aGUgcG9wb3ZlciBkb2Vzbid0IGZpdC5cbiAgICBjb25zdCBwb3NpdGlvbnM6IENvbm5lY3Rpb25Qb3NpdGlvblBhaXJbXSA9IFtcbiAgICAgIHsgb3JpZ2luWDogJ2VuZCcsIG9yaWdpblk6ICd0b3AnLCAgICBvdmVybGF5WDogJ3N0YXJ0Jywgb3ZlcmxheVk6ICd0b3AnLCBvZmZzZXRYOiAwLCBvZmZzZXRZOiAwIH0sXG4gICAgICB7IG9yaWdpblg6ICdlbmQnLCBvcmlnaW5ZOiAnYm90dG9tJywgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAndG9wJywgb2Zmc2V0WDogMCwgb2Zmc2V0WTogNCB9LFxuICAgIF07XG5cbiAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5XG4gICAgICAucG9zaXRpb24oKVxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5hbmNob3IpXG4gICAgICAud2l0aFBvc2l0aW9ucyhwb3NpdGlvbnMpXG4gICAgICAud2l0aEZsZXhpYmxlRGltZW5zaW9ucyhmYWxzZSlcbiAgICAgIC53aXRoVmlld3BvcnRNYXJnaW4oOClcbiAgICAgIC53aXRoUHVzaChmYWxzZSk7XG5cbiAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpLFxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICBiYWNrZHJvcENsYXNzOiAnY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnLFxuICAgICAgcGFuZWxDbGFzczogJ2NxYS13b3Jrc3BhY2UtbWVudS1wYW5lbCcsXG4gICAgfSk7XG5cbiAgICBjb25zdCBwb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5wb3BvdmVyVHBsLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gocG9ydGFsKTtcblxuICAgIHRoaXMuYmFja2Ryb3BTdWIgPSB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmRpc21pc3NlZC5lbWl0KCkpO1xuICAgIHRoaXMua2V5U3ViID0gdGhpcy5vdmVybGF5UmVmLmtleWRvd25FdmVudHMoKS5zdWJzY3JpYmUoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmRpc21pc3NlZC5lbWl0KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNsb3NlT3ZlcmxheSgpOiB2b2lkIHtcbiAgICB0aGlzLmJhY2tkcm9wU3ViPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuYmFja2Ryb3BTdWIgPSBudWxsO1xuICAgIHRoaXMua2V5U3ViPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMua2V5U3ViID0gbnVsbDtcbiAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjcG9wb3ZlclRwbD5cbiAgPGRpdiBjbGFzcz1cImNxYS13bVwiIFthdHRyLmlkXT1cInBvcG92ZXJJZFwiIHJvbGU9XCJkaWFsb2dcIiBhcmlhLWxhYmVsPVwiU3dpdGNoIHdvcmtzcGFjZVwiPlxuICAgIDxoZWFkZXIgY2xhc3M9XCJjcWEtd20taGVhZGVyXCI+XG4gICAgICA8aDIgY2xhc3M9XCJjcWEtd20taGVhZGluZ1wiPldvcmtzcGFjZXMgaW4ge3sgd29ya3NwYWNlTmFtZSB9fTwvaDI+XG4gICAgPC9oZWFkZXI+XG5cbiAgICA8dWwgY2xhc3M9XCJjcWEtd20tbGlzdFwiIHJvbGU9XCJsaXN0Ym94XCI+XG4gICAgICA8bGkgKm5nRm9yPVwibGV0IHdzIG9mIHdvcmtzcGFjZXM7IHRyYWNrQnk6IHRyYWNrQnlXc1wiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJjcWEtd20taXRlbVwiXG4gICAgICAgICAgW2NsYXNzLmNxYS13bS1pdGVtLS1hY3RpdmVdPVwid3MuaWQgPT09IGN1cnJlbnRXb3Jrc3BhY2VJZFwiXG4gICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJ3cy5pZCA9PT0gY3VycmVudFdvcmtzcGFjZUlkXCJcbiAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2sod3MpXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtd20tYXZhdGFyXCIgW3N0eWxlLmJhY2tncm91bmRdPVwid3MuYXZhdGFyQ29sb3IgfHwgbnVsbFwiPlxuICAgICAgICAgICAgPGltZyAqbmdJZj1cIndzLmxvZ29Vcmw7IGVsc2UgaW5pdGlhbHNUcGxcIiBjbGFzcz1cImNxYS13bS1sb2dvXCIgW3NyY109XCJ3cy5sb2dvVXJsXCIgW2FsdF09XCJ3cy5uYW1lXCIvPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpbml0aWFsc1RwbD5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtd20taW5pdGlhbHNcIj57eyB3cy5pbml0aWFscyB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXdtLXRleHRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXdtLW5hbWVcIiBbdGl0bGVdPVwid3MubmFtZVwiPnt7IHdzLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIndzLnN1YnRpdGxlXCIgY2xhc3M9XCJjcWEtd20tc3VidGl0bGVcIiBbdGl0bGVdPVwid3Muc3VidGl0bGVcIj57eyB3cy5zdWJ0aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJ3cy5pZCA9PT0gY3VycmVudFdvcmtzcGFjZUlkXCIgY2xhc3M9XCJjcWEtd20tY2hlY2tcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS40XCJcbiAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCI+XG4gICAgICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9XCIzLDguNSA2LjUsMTIgMTMsNC41XCIvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cblxuICAgIDxkaXYgY2xhc3M9XCJjcWEtd20tZGl2aWRlclwiPjwvZGl2PlxuXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjcWEtd20tZm9vdGVyXCIgKGNsaWNrKT1cIm9uTWFuYWdlQ2xpY2soKVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtd20tZm9vdGVyLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjRcIlxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHdpZHRoPVwiMTVcIiBoZWlnaHQ9XCIxNVwiPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI4XCIgY3k9XCI4XCIgcj1cIjJcIi8+XG4gICAgICAgICAgPHBhdGggZD1cIk0xMyA4YTUgNSAwIDAgMC0uMS0xbDEuNC0xLTEuNC0yLjQtMS43LjVhNSA1IDAgMCAwLTEuNy0xTDkgMUg3bC0uNSAxLjZhNSA1IDAgMCAwLTEuNyAxTDMuMSAzLjYgMS43IDZsMS40IDFBNSA1IDAgMCAwIDMgOGE1IDUgMCAwIDAgLjEgMWwtMS40IDFMMy4xIDEyLjRsMS43LS41YTUgNSAwIDAgMCAxLjcgMUw3IDE1aDJsLjUtMS42YTUgNSAwIDAgMCAxLjctMWwxLjcuNUwxNC4zIDEwIDEzIDlhNSA1IDAgMCAwIDAtMXpcIi8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtd20tZm9vdGVyLWxhYmVsXCI+V29ya3NwYWNlIE1hbmFnZW1lbnQ8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLW1lbnUubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zaWRlYmFyL3dvcmtzcGFjZS1tZW51L3dvcmtzcGFjZS1tZW51Lm1vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VNZW51SXRlbSB7XG4gIGlkOiBzdHJpbmcgfCBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIE9uZS1saW5lIG1ldGEgdGV4dCBzaG93biB1bmRlciB0aGUgbmFtZSwgZS5nLiBcIldlYiDCtyAxMiBtZW1iZXJzXCIuIEZyZWUtZm9ybS4gKi9cbiAgc3VidGl0bGU/OiBzdHJpbmc7XG4gIC8qKiBJbml0aWFscyBkcmF3biBpbnNpZGUgdGhlIGF2YXRhciB0aWxlIHdoZW4gbm8gbG9nbyBVUkwgaXMgcHJvdmlkZWQgKGUuZy4gXCJDUVwiKS4gKi9cbiAgaW5pdGlhbHM/OiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCBsb2dvIGltYWdlIFVSTCBvciBkYXRhLVVSSS4gVGFrZXMgcHJlY2VkZW5jZSBvdmVyIGBpbml0aWFsc2AuICovXG4gIGxvZ29Vcmw/OiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCBDU1MgYmFja2dyb3VuZCBmb3IgdGhlIGF2YXRhciB0aWxlIChncmFkaWVudCBvciBzb2xpZCkuICovXG4gIGF2YXRhckNvbG9yPzogc3RyaW5nO1xufVxuIl19