@c80/ui 1.0.39 → 1.0.41
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/icon/icon.component.mjs +15 -13
- package/esm2022/lib/icon/icon.constants.mjs +157 -5
- package/esm2022/lib/icon/icon.types.mjs +1 -1
- package/esm2022/lib/icon/icon.utils.mjs +4 -0
- package/esm2022/lib/stat-card/stat-card.component.mjs +1 -1
- package/esm2022/lib/table/table.component.mjs +2 -2
- package/lib/icon/icon.component.d.ts +6 -3
- package/lib/icon/icon.constants.d.ts +2 -6
- package/lib/icon/icon.types.d.ts +4 -0
- package/lib/icon/icon.utils.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
import { Component, input, output, computed } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { BASE_ICON_SIZE, BASE_ICON_COLORS, DISABLED_COLOR, DEFAULT_ICON_COLOR, DISABLED_OPACITY, SECONDARY_WARN_OPACITY, DEFAULT_OPACITY, ICON_PATHS, ICON_ADDITIONAL_SHAPES, } from './icon.constants';
|
|
4
|
+
import { transformToBoolean } from './icon.utils';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "@angular/common";
|
|
6
7
|
export class C80IconComponent {
|
|
7
|
-
icon = input('check');
|
|
8
|
-
color = input('primary');
|
|
9
|
-
customColor = input(undefined);
|
|
10
|
-
disabled = input(false);
|
|
11
|
-
size = input(1);
|
|
12
|
-
button = input(false, {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
8
|
+
icon = input('check'); // Tipo de icono a mostrar
|
|
9
|
+
color = input('primary'); // Color del icono (primary, secondary, warn, success)
|
|
10
|
+
customColor = input(undefined); // Color personalizado (sobrescribe color)
|
|
11
|
+
disabled = input(false); // Estado deshabilitado
|
|
12
|
+
size = input(1); // Multiplicador de tamaño (1 = 24px)
|
|
13
|
+
button = input(false, { transform: transformToBoolean }); // Renderiza como botón clickeable
|
|
14
|
+
border = input(false, { transform: transformToBoolean }); // Agrega borde al wrapper
|
|
15
|
+
type = input('button'); // Tipo de botón (button, submit, reset)
|
|
16
|
+
textLeft = input(undefined); // Texto a la izquierda del icono
|
|
17
|
+
textRight = input(undefined); // Texto a la derecha del icono
|
|
18
|
+
iconClick = output(); // Evento emitido al hacer click (solo si button=true)
|
|
17
19
|
iconSize = computed(() => BASE_ICON_SIZE * this.size());
|
|
18
20
|
iconColor = computed(() => {
|
|
19
21
|
if (this.disabled())
|
|
@@ -38,10 +40,10 @@ export class C80IconComponent {
|
|
|
38
40
|
}
|
|
39
41
|
}
|
|
40
42
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: C80IconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
41
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: C80IconComponent, isStandalone: true, selector: "c80-icon", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, customColor: { classPropertyName: "customColor", publicName: "customColor", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, button: { classPropertyName: "button", publicName: "button", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { iconClick: "iconClick" }, ngImport: i0, template: "<ng-template #svgContent>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n @for (shape of additionalShapes(); track $index) {\r\n @if (shape.type === 'circle') {\r\n <circle [attr.cx]=\"shape['cx']\" [attr.cy]=\"shape['cy']\" [attr.r]=\"shape['r']\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" />\r\n } @else if (shape.type === 'rect') {\r\n <rect [attr.x]=\"shape['x']\" [attr.y]=\"shape['y']\" [attr.width]=\"shape['width']\" [attr.height]=\"shape['height']\" [attr.rx]=\"shape['rx']\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" />\r\n } @else if (shape.type === 'path') {\r\n <path [attr.d]=\"shape['d']\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n }\r\n }\r\n <path [attr.d]=\"iconPath()\" [attr.stroke]=\"iconColor()\" [attr.fill]=\"icon() === 'delete' ? iconColor() : 'none'\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n\r\n@if (
|
|
43
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: C80IconComponent, isStandalone: true, selector: "c80-icon", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, customColor: { classPropertyName: "customColor", publicName: "customColor", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, button: { classPropertyName: "button", publicName: "button", isSignal: true, isRequired: false, transformFunction: null }, border: { classPropertyName: "border", publicName: "border", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, textLeft: { classPropertyName: "textLeft", publicName: "textLeft", isSignal: true, isRequired: false, transformFunction: null }, textRight: { classPropertyName: "textRight", publicName: "textRight", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { iconClick: "iconClick" }, ngImport: i0, template: "<ng-template #svgContent>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n @for (shape of additionalShapes(); track $index) {\r\n @if (shape.type === 'circle') {\r\n <circle [attr.cx]=\"shape['cx']\" [attr.cy]=\"shape['cy']\" [attr.r]=\"shape['r']\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" [attr.fill]=\"shape['fill'] === 'color' ? iconColor() : 'none'\" />\r\n } @else if (shape.type === 'rect') {\r\n <rect [attr.x]=\"shape['x']\" [attr.y]=\"shape['y']\" [attr.width]=\"shape['width']\" [attr.height]=\"shape['height']\" [attr.rx]=\"shape['rx']\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" />\r\n } @else if (shape.type === 'path') {\r\n <path [attr.d]=\"shape['d']\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" [attr.fill]=\"shape['fill'] === 'color' ? iconColor() : 'none'\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n }\r\n }\r\n <path [attr.d]=\"iconPath()\" [attr.stroke]=\"iconColor()\" [attr.fill]=\"icon() === 'delete' ? iconColor() : 'none'\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #textContent>\r\n @if (textLeft()) {\r\n <span class=\"icon-text\" style=\"margin-left: 12px\">{{ textLeft() }}</span>\r\n }\r\n <span class=\"icon-content\" [style.width.px]=\"iconSize() + 8\" [style.height.px]=\"iconSize() + 8\">\r\n <ng-container *ngTemplateOutlet=\"svgContent\" />\r\n </span>\r\n @if (textRight()) {\r\n <span class=\"icon-text\" style=\"margin-right: 12px\">{{ textRight() }}</span>\r\n }\r\n</ng-template>\r\n\r\n@if (button()) {\r\n<button [type]=\"type()\" [disabled]=\"disabled()\" class=\"icon-wrapper\" [class.icon-wrapper-border]=\"border()\" (click)=\"onButtonClick($event)\">\r\n <ng-container *ngTemplateOutlet=\"textContent\" />\r\n</button>\r\n} @else {\r\n<span class=\"icon-wrapper\" [class.icon-wrapper-border]=\"border()\">\r\n <ng-container *ngTemplateOutlet=\"textContent\" />\r\n</span>\r\n}", styles: [":host .icon-wrapper{display:inline-flex;align-items:center;gap:8px;background:transparent;padding:0;border:none;outline:none;cursor:pointer;transition:opacity .2s}:host button.icon-wrapper:focus-visible{outline:2px solid #1976d2;outline-offset:2px;border-radius:4px}:host button.icon-wrapper:disabled{opacity:.5;cursor:default}:host .icon-content{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;min-width:0;min-height:0;padding:4px;margin:0 4px;transition:background .2s;box-sizing:border-box}:host button.icon-wrapper:hover:not(:disabled) .icon-content{background:#1976d214}:host button.icon-wrapper:active:not(:disabled) .icon-content{background:#1976d229}:host .icon-text{font-size:14px;line-height:1;white-space:nowrap;-webkit-user-select:none;user-select:none}:host .icon-wrapper-border{border:1px solid rgba(0,0,0,.23);border-radius:4px;padding:4px 8px}:host button.icon-wrapper-border:hover:not(:disabled){border-color:#000000de}:host button.icon-wrapper-border:disabled{border-color:#0000001f}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
42
44
|
}
|
|
43
45
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: C80IconComponent, decorators: [{
|
|
44
46
|
type: Component,
|
|
45
|
-
args: [{ selector: 'c80-icon', standalone: true, imports: [CommonModule], template: "<ng-template #svgContent>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n @for (shape of additionalShapes(); track $index) {\r\n @if (shape.type === 'circle') {\r\n <circle [attr.cx]=\"shape['cx']\" [attr.cy]=\"shape['cy']\" [attr.r]=\"shape['r']\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" />\r\n } @else if (shape.type === 'rect') {\r\n <rect [attr.x]=\"shape['x']\" [attr.y]=\"shape['y']\" [attr.width]=\"shape['width']\" [attr.height]=\"shape['height']\" [attr.rx]=\"shape['rx']\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" />\r\n } @else if (shape.type === 'path') {\r\n <path [attr.d]=\"shape['d']\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n }\r\n }\r\n <path [attr.d]=\"iconPath()\" [attr.stroke]=\"iconColor()\" [attr.fill]=\"icon() === 'delete' ? iconColor() : 'none'\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n\r\n@if (
|
|
47
|
+
args: [{ selector: 'c80-icon', standalone: true, imports: [CommonModule], template: "<ng-template #svgContent>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n @for (shape of additionalShapes(); track $index) {\r\n @if (shape.type === 'circle') {\r\n <circle [attr.cx]=\"shape['cx']\" [attr.cy]=\"shape['cy']\" [attr.r]=\"shape['r']\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" [attr.fill]=\"shape['fill'] === 'color' ? iconColor() : 'none'\" />\r\n } @else if (shape.type === 'rect') {\r\n <rect [attr.x]=\"shape['x']\" [attr.y]=\"shape['y']\" [attr.width]=\"shape['width']\" [attr.height]=\"shape['height']\" [attr.rx]=\"shape['rx']\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" />\r\n } @else if (shape.type === 'path') {\r\n <path [attr.d]=\"shape['d']\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" [attr.fill]=\"shape['fill'] === 'color' ? iconColor() : 'none'\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n }\r\n }\r\n <path [attr.d]=\"iconPath()\" [attr.stroke]=\"iconColor()\" [attr.fill]=\"icon() === 'delete' ? iconColor() : 'none'\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #textContent>\r\n @if (textLeft()) {\r\n <span class=\"icon-text\" style=\"margin-left: 12px\">{{ textLeft() }}</span>\r\n }\r\n <span class=\"icon-content\" [style.width.px]=\"iconSize() + 8\" [style.height.px]=\"iconSize() + 8\">\r\n <ng-container *ngTemplateOutlet=\"svgContent\" />\r\n </span>\r\n @if (textRight()) {\r\n <span class=\"icon-text\" style=\"margin-right: 12px\">{{ textRight() }}</span>\r\n }\r\n</ng-template>\r\n\r\n@if (button()) {\r\n<button [type]=\"type()\" [disabled]=\"disabled()\" class=\"icon-wrapper\" [class.icon-wrapper-border]=\"border()\" (click)=\"onButtonClick($event)\">\r\n <ng-container *ngTemplateOutlet=\"textContent\" />\r\n</button>\r\n} @else {\r\n<span class=\"icon-wrapper\" [class.icon-wrapper-border]=\"border()\">\r\n <ng-container *ngTemplateOutlet=\"textContent\" />\r\n</span>\r\n}", styles: [":host .icon-wrapper{display:inline-flex;align-items:center;gap:8px;background:transparent;padding:0;border:none;outline:none;cursor:pointer;transition:opacity .2s}:host button.icon-wrapper:focus-visible{outline:2px solid #1976d2;outline-offset:2px;border-radius:4px}:host button.icon-wrapper:disabled{opacity:.5;cursor:default}:host .icon-content{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;min-width:0;min-height:0;padding:4px;margin:0 4px;transition:background .2s;box-sizing:border-box}:host button.icon-wrapper:hover:not(:disabled) .icon-content{background:#1976d214}:host button.icon-wrapper:active:not(:disabled) .icon-content{background:#1976d229}:host .icon-text{font-size:14px;line-height:1;white-space:nowrap;-webkit-user-select:none;user-select:none}:host .icon-wrapper-border{border:1px solid rgba(0,0,0,.23);border-radius:4px;padding:4px 8px}:host button.icon-wrapper-border:hover:not(:disabled){border-color:#000000de}:host button.icon-wrapper-border:disabled{border-color:#0000001f}\n"] }]
|
|
46
48
|
}] });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NyYy9saWIvaWNvbi9pY29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi9pY29uL2ljb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLGNBQWMsRUFDZCxnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZixVQUFVLEVBQ1Ysc0JBQXNCLEdBQ3ZCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDOzs7QUFVbEQsTUFBTSxPQUFPLGdCQUFnQjtJQUNsQixJQUFJLEdBQUcsS0FBSyxDQUFXLE9BQU8sQ0FBQyxDQUFDLENBQUMsMEJBQTBCO0lBQzNELEtBQUssR0FBRyxLQUFLLENBQVksU0FBUyxDQUFDLENBQUMsQ0FBQyxzREFBc0Q7SUFDM0YsV0FBVyxHQUFHLEtBQUssQ0FBcUIsU0FBUyxDQUFDLENBQUMsQ0FBQywwQ0FBMEM7SUFDOUYsUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHVCQUF1QjtJQUNoRCxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUNBQXFDO0lBQ3RELE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLGtDQUFrQztJQUM1RixNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQywwQkFBMEI7SUFDcEYsSUFBSSxHQUFHLEtBQUssQ0FBYSxRQUFRLENBQUMsQ0FBQyxDQUFDLHdDQUF3QztJQUM1RSxRQUFRLEdBQUcsS0FBSyxDQUFxQixTQUFTLENBQUMsQ0FBQyxDQUFDLGlDQUFpQztJQUNsRixTQUFTLEdBQUcsS0FBSyxDQUFxQixTQUFTLENBQUMsQ0FBQyxDQUFDLCtCQUErQjtJQUVqRixTQUFTLEdBQUcsTUFBTSxFQUFTLENBQUMsQ0FBQyxzREFBc0Q7SUFFbkYsUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFFeEQsU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDakMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQUUsT0FBTyxjQUFjLENBQUM7UUFFM0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLElBQUksTUFBTTtZQUFFLE9BQU8sTUFBTSxDQUFDO1FBRTFCLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksa0JBQWtCLENBQUM7SUFDOUQsQ0FBQyxDQUFDLENBQUM7SUFFTSxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUNuQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFBRSxPQUFPLGdCQUFnQixDQUFDO1FBRTdDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxTQUFTLENBQUM7UUFDeEQsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFdkUsT0FBTyxDQUFDLGNBQWMsSUFBSSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztJQUN6RixDQUFDLENBQUMsQ0FBQztJQUVNLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzVFLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUV0RixhQUFhLENBQUMsS0FBWTtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7d0dBekNVLGdCQUFnQjs0RkFBaEIsZ0JBQWdCLGsxQ0N4QjdCLGdqRUFtQ0Msb2tDRGZXLFlBQVk7OzRGQUlYLGdCQUFnQjtrQkFSNUIsU0FBUzsrQkFFRSxVQUFVLGNBQ1IsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbnB1dCwgb3V0cHV0LCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEJBU0VfSUNPTl9TSVpFLFxuICBCQVNFX0lDT05fQ09MT1JTLFxuICBESVNBQkxFRF9DT0xPUixcbiAgREVGQVVMVF9JQ09OX0NPTE9SLFxuICBESVNBQkxFRF9PUEFDSVRZLFxuICBTRUNPTkRBUllfV0FSTl9PUEFDSVRZLFxuICBERUZBVUxUX09QQUNJVFksXG4gIElDT05fUEFUSFMsXG4gIElDT05fQURESVRJT05BTF9TSEFQRVMsXG59IGZyb20gJy4vaWNvbi5jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBJY29uVHlwZSwgQ29sb3JUeXBlLCBCdXR0b25UeXBlIH0gZnJvbSAnLi9pY29uLnR5cGVzJztcbmltcG9ydCB7IHRyYW5zZm9ybVRvQm9vbGVhbiB9IGZyb20gJy4vaWNvbi51dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2M4MC1pY29uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9pY29uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaWNvbi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDODBJY29uQ29tcG9uZW50IHtcbiAgcmVhZG9ubHkgaWNvbiA9IGlucHV0PEljb25UeXBlPignY2hlY2snKTsgLy8gVGlwbyBkZSBpY29ubyBhIG1vc3RyYXJcbiAgcmVhZG9ubHkgY29sb3IgPSBpbnB1dDxDb2xvclR5cGU+KCdwcmltYXJ5Jyk7IC8vIENvbG9yIGRlbCBpY29ubyAocHJpbWFyeSwgc2Vjb25kYXJ5LCB3YXJuLCBzdWNjZXNzKVxuICByZWFkb25seSBjdXN0b21Db2xvciA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTsgLy8gQ29sb3IgcGVyc29uYWxpemFkbyAoc29icmVzY3JpYmUgY29sb3IpXG4gIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQoZmFsc2UpOyAvLyBFc3RhZG8gZGVzaGFiaWxpdGFkb1xuICByZWFkb25seSBzaXplID0gaW5wdXQoMSk7IC8vIE11bHRpcGxpY2Fkb3IgZGUgdGFtYcOxbyAoMSA9IDI0cHgpXG4gIHJlYWRvbmx5IGJ1dHRvbiA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogdHJhbnNmb3JtVG9Cb29sZWFuIH0pOyAvLyBSZW5kZXJpemEgY29tbyBib3TDs24gY2xpY2tlYWJsZVxuICByZWFkb25seSBib3JkZXIgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IHRyYW5zZm9ybVRvQm9vbGVhbiB9KTsgLy8gQWdyZWdhIGJvcmRlIGFsIHdyYXBwZXJcbiAgcmVhZG9ubHkgdHlwZSA9IGlucHV0PEJ1dHRvblR5cGU+KCdidXR0b24nKTsgLy8gVGlwbyBkZSBib3TDs24gKGJ1dHRvbiwgc3VibWl0LCByZXNldClcbiAgcmVhZG9ubHkgdGV4dExlZnQgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7IC8vIFRleHRvIGEgbGEgaXpxdWllcmRhIGRlbCBpY29ub1xuICByZWFkb25seSB0ZXh0UmlnaHQgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7IC8vIFRleHRvIGEgbGEgZGVyZWNoYSBkZWwgaWNvbm9cblxuICByZWFkb25seSBpY29uQ2xpY2sgPSBvdXRwdXQ8RXZlbnQ+KCk7IC8vIEV2ZW50byBlbWl0aWRvIGFsIGhhY2VyIGNsaWNrIChzb2xvIHNpIGJ1dHRvbj10cnVlKVxuXG4gIHJlYWRvbmx5IGljb25TaXplID0gY29tcHV0ZWQoKCkgPT4gQkFTRV9JQ09OX1NJWkUgKiB0aGlzLnNpemUoKSk7XG5cbiAgcmVhZG9ubHkgaWNvbkNvbG9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKCkpIHJldHVybiBESVNBQkxFRF9DT0xPUjtcblxuICAgIGNvbnN0IGN1c3RvbSA9IHRoaXMuY3VzdG9tQ29sb3IoKTtcbiAgICBpZiAoY3VzdG9tKSByZXR1cm4gY3VzdG9tO1xuXG4gICAgcmV0dXJuIEJBU0VfSUNPTl9DT0xPUlNbdGhpcy5jb2xvcigpXSA/PyBERUZBVUxUX0lDT05fQ09MT1I7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGljb25PcGFjaXR5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKCkpIHJldHVybiBESVNBQkxFRF9PUEFDSVRZO1xuXG4gICAgY29uc3QgaGFzQ3VzdG9tQ29sb3IgPSB0aGlzLmN1c3RvbUNvbG9yKCkgIT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBpc1NlY29uZGFyeU9yV2FybiA9IFsnc2Vjb25kYXJ5JywgJ3dhcm4nXS5pbmNsdWRlcyh0aGlzLmNvbG9yKCkpO1xuXG4gICAgcmV0dXJuICFoYXNDdXN0b21Db2xvciAmJiBpc1NlY29uZGFyeU9yV2FybiA/IFNFQ09OREFSWV9XQVJOX09QQUNJVFkgOiBERUZBVUxUX09QQUNJVFk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGljb25QYXRoID0gY29tcHV0ZWQoKCkgPT4gSUNPTl9QQVRIU1t0aGlzLmljb24oKV0gPz8gSUNPTl9QQVRIU1snZGVmYXVsdCddKTtcbiAgcmVhZG9ubHkgYWRkaXRpb25hbFNoYXBlcyA9IGNvbXB1dGVkKCgpID0+IElDT05fQURESVRJT05BTF9TSEFQRVNbdGhpcy5pY29uKCldID8/IFtdKTtcblxuICBvbkJ1dHRvbkNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCgpKSB7XG4gICAgICB0aGlzLmljb25DbGljay5lbWl0KGV2ZW50KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjc3ZnQ29udGVudD5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIEBmb3IgKHNoYXBlIG9mIGFkZGl0aW9uYWxTaGFwZXMoKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICBAaWYgKHNoYXBlLnR5cGUgPT09ICdjaXJjbGUnKSB7XHJcbiAgICA8Y2lyY2xlIFthdHRyLmN4XT1cInNoYXBlWydjeCddXCIgW2F0dHIuY3ldPVwic2hhcGVbJ2N5J11cIiBbYXR0ci5yXT1cInNoYXBlWydyJ11cIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgW2F0dHIuZmlsbF09XCJzaGFwZVsnZmlsbCddID09PSAnY29sb3InID8gaWNvbkNvbG9yKCkgOiAnbm9uZSdcIiAvPlxyXG4gICAgfSBAZWxzZSBpZiAoc2hhcGUudHlwZSA9PT0gJ3JlY3QnKSB7XHJcbiAgICA8cmVjdCBbYXR0ci54XT1cInNoYXBlWyd4J11cIiBbYXR0ci55XT1cInNoYXBlWyd5J11cIiBbYXR0ci53aWR0aF09XCJzaGFwZVsnd2lkdGgnXVwiIFthdHRyLmhlaWdodF09XCJzaGFwZVsnaGVpZ2h0J11cIiBbYXR0ci5yeF09XCJzaGFwZVsncngnXVwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICB9IEBlbHNlIGlmIChzaGFwZS50eXBlID09PSAncGF0aCcpIHtcclxuICAgIDxwYXRoIFthdHRyLmRdPVwic2hhcGVbJ2QnXVwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBbYXR0ci5maWxsXT1cInNoYXBlWydmaWxsJ10gPT09ICdjb2xvcicgPyBpY29uQ29sb3IoKSA6ICdub25lJ1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICB9XHJcbiAgICB9XHJcbiAgICA8cGF0aCBbYXR0ci5kXT1cImljb25QYXRoKClcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBbYXR0ci5maWxsXT1cImljb24oKSA9PT0gJ2RlbGV0ZScgPyBpY29uQ29sb3IoKSA6ICdub25lJ1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0ZXh0Q29udGVudD5cclxuICBAaWYgKHRleHRMZWZ0KCkpIHtcclxuICA8c3BhbiBjbGFzcz1cImljb24tdGV4dFwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEycHhcIj57eyB0ZXh0TGVmdCgpIH19PC9zcGFuPlxyXG4gIH1cclxuICA8c3BhbiBjbGFzcz1cImljb24tY29udGVudFwiIFtzdHlsZS53aWR0aC5weF09XCJpY29uU2l6ZSgpICsgOFwiIFtzdHlsZS5oZWlnaHQucHhdPVwiaWNvblNpemUoKSArIDhcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdmdDb250ZW50XCIgLz5cclxuICA8L3NwYW4+XHJcbiAgQGlmICh0ZXh0UmlnaHQoKSkge1xyXG4gIDxzcGFuIGNsYXNzPVwiaWNvbi10ZXh0XCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDEycHhcIj57eyB0ZXh0UmlnaHQoKSB9fTwvc3Bhbj5cclxuICB9XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG5AaWYgKGJ1dHRvbigpKSB7XHJcbjxidXR0b24gW3R5cGVdPVwidHlwZSgpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIiBjbGFzcz1cImljb24td3JhcHBlclwiIFtjbGFzcy5pY29uLXdyYXBwZXItYm9yZGVyXT1cImJvcmRlcigpXCIgKGNsaWNrKT1cIm9uQnV0dG9uQ2xpY2soJGV2ZW50KVwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZXh0Q29udGVudFwiIC8+XHJcbjwvYnV0dG9uPlxyXG59IEBlbHNlIHtcclxuPHNwYW4gY2xhc3M9XCJpY29uLXdyYXBwZXJcIiBbY2xhc3MuaWNvbi13cmFwcGVyLWJvcmRlcl09XCJib3JkZXIoKVwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZXh0Q29udGVudFwiIC8+XHJcbjwvc3Bhbj5cclxufSJdfQ==
|
|
@@ -21,6 +21,57 @@ export const ICON_NAMES = [
|
|
|
21
21
|
'upload',
|
|
22
22
|
'pendingActions',
|
|
23
23
|
'playCircle',
|
|
24
|
+
'play',
|
|
25
|
+
'stop',
|
|
26
|
+
'tune',
|
|
27
|
+
'visibility',
|
|
28
|
+
'visibilityOff',
|
|
29
|
+
'close',
|
|
30
|
+
'record',
|
|
31
|
+
'star',
|
|
32
|
+
'xCircle',
|
|
33
|
+
'key',
|
|
34
|
+
'exclamationTriangle',
|
|
35
|
+
'clipboard',
|
|
36
|
+
'download',
|
|
37
|
+
'shield',
|
|
38
|
+
'person',
|
|
39
|
+
'envelope',
|
|
40
|
+
'infoCircle',
|
|
41
|
+
'checkSquare',
|
|
42
|
+
'square',
|
|
43
|
+
'dashSquare',
|
|
44
|
+
'people',
|
|
45
|
+
'boxSeam',
|
|
46
|
+
'personBadge',
|
|
47
|
+
'listTask',
|
|
48
|
+
'shuffle',
|
|
49
|
+
'cpu',
|
|
50
|
+
'box',
|
|
51
|
+
'bell',
|
|
52
|
+
'message',
|
|
53
|
+
'send',
|
|
54
|
+
'file',
|
|
55
|
+
'folder',
|
|
56
|
+
'save',
|
|
57
|
+
'print',
|
|
58
|
+
'clock',
|
|
59
|
+
'calendar',
|
|
60
|
+
'timer',
|
|
61
|
+
'lock',
|
|
62
|
+
'unlock',
|
|
63
|
+
'chart',
|
|
64
|
+
'table',
|
|
65
|
+
'database',
|
|
66
|
+
'home',
|
|
67
|
+
'menu',
|
|
68
|
+
'arrowLeft',
|
|
69
|
+
'arrowRight',
|
|
70
|
+
'copy',
|
|
71
|
+
'filter',
|
|
72
|
+
'sort',
|
|
73
|
+
'help',
|
|
74
|
+
'warning',
|
|
24
75
|
'default',
|
|
25
76
|
];
|
|
26
77
|
export const BASE_ICON_COLORS = {
|
|
@@ -52,12 +103,66 @@ export const ICON_PATHS = {
|
|
|
52
103
|
queue: 'M3 12h18m-9-9v18',
|
|
53
104
|
arrowUp: 'm18 15-6-6-6 6',
|
|
54
105
|
arrowDown: 'm6 9 6 6 6-6',
|
|
55
|
-
toggleOn: '
|
|
56
|
-
toggleOff: '
|
|
106
|
+
toggleOn: '',
|
|
107
|
+
toggleOff: '',
|
|
57
108
|
search: 'm21 21-6-6m2-5a7 7 0 1 1-14 0 7 7 0 0 1 14 0z',
|
|
58
109
|
upload: 'M12 15V3m0 0l-4 4m4-4l4 4M2 17l.621 2.485A2 2 0 0 0 4.561 21h14.878a2 2 0 0 0 1.94-1.515L22 17',
|
|
59
110
|
pendingActions: 'M12 8v4l3 3m6-3a9 9 0 1 1-18 0 9 9 0 0 1 18 0z',
|
|
60
111
|
playCircle: 'M14.752 11.168l-3.197-2.132A1 1 0 0 0 10 9.87v4.263a1 1 0 0 0 1.555.832l3.197-2.132a1 1 0 0 0 0-1.664z',
|
|
112
|
+
play: 'M8 5v14l11-7z',
|
|
113
|
+
stop: 'M6 6h12v12H6z',
|
|
114
|
+
tune: 'M3 17v-2h6v2zm0-4v-2h10v2zm0-4V7h14v2zM6 21v-4h6v4zm7-8v-4h8v4zm3 8v-8h5v8z',
|
|
115
|
+
visibility: 'M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5z',
|
|
116
|
+
visibilityOff: 'M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7z' +
|
|
117
|
+
'M2 4.27l2.28 2.28.46.46A11.804 11.804 0 0 0 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27z' +
|
|
118
|
+
'M7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2z' +
|
|
119
|
+
'm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z',
|
|
120
|
+
close: 'M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z',
|
|
121
|
+
record: '',
|
|
122
|
+
star: 'M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z',
|
|
123
|
+
xCircle: 'M15 9l-6 6m0-6l6 6',
|
|
124
|
+
key: 'M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4',
|
|
125
|
+
exclamationTriangle: 'M12 9v4m0 4h.01',
|
|
126
|
+
clipboard: 'M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2',
|
|
127
|
+
download: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4m4-5l5 5m0 0l5-5m-5 5V3',
|
|
128
|
+
shield: 'M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z',
|
|
129
|
+
person: 'M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2',
|
|
130
|
+
envelope: 'M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z',
|
|
131
|
+
infoCircle: 'M12 16v-4m0-4h.01',
|
|
132
|
+
checkSquare: 'm9 11 3 3L22 4',
|
|
133
|
+
square: '',
|
|
134
|
+
dashSquare: 'M8 12h8',
|
|
135
|
+
people: 'M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2',
|
|
136
|
+
boxSeam: 'M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z',
|
|
137
|
+
personBadge: 'M17 21v-2a4 4 0 0 0-3-3.87m-4-5.13a4 4 0 0 0 2 7.75',
|
|
138
|
+
listTask: 'M3 6h18M3 12h18M3 18h18',
|
|
139
|
+
shuffle: 'M16 3h5v5M4 20L21 3M21 16v5h-5M15 15l6 6M4 4l5 5',
|
|
140
|
+
cpu: 'M4 4h16v16H4z',
|
|
141
|
+
box: 'M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8z',
|
|
142
|
+
bell: 'M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9M13.73 21a2 2 0 0 1-3.46 0',
|
|
143
|
+
message: 'M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z',
|
|
144
|
+
send: 'M22 2L11 13M22 2l-7 20-4-9-9-4 20-7z',
|
|
145
|
+
file: 'M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z',
|
|
146
|
+
folder: 'M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z',
|
|
147
|
+
save: 'M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z',
|
|
148
|
+
print: 'M6 9V2h12v7M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2',
|
|
149
|
+
clock: 'M12 6v6l4 2',
|
|
150
|
+
calendar: 'M8 2v4m8-4v4M3 10h18',
|
|
151
|
+
timer: 'M12 8v4l2 2',
|
|
152
|
+
lock: 'M19 11H5a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7a2 2 0 0 0-2-2zM7 11V7a5 5 0 0 1 10 0v4',
|
|
153
|
+
unlock: 'M19 11H5a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7a2 2 0 0 0-2-2zM7 11V7a5 5 0 0 1 9.9-1',
|
|
154
|
+
chart: 'M3 3v18h18M7 16l4-4 4 4 6-6',
|
|
155
|
+
table: 'M3 3h18v18H3zM3 9h18M3 15h18M9 3v18',
|
|
156
|
+
database: 'M12 8c-4.97 0-9-1.34-9-3s4.03-3 9-3 9 1.34 9 3-4.03 3-9 3zM3 5v5c0 1.66 4.03 3 9 3s9-1.34 9-3V5M3 10v5c0 1.66 4.03 3 9 3s9-1.34 9-3v-5',
|
|
157
|
+
home: 'm3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z',
|
|
158
|
+
menu: 'M3 12h18M3 6h18M3 18h18',
|
|
159
|
+
arrowLeft: 'm19 12-7-7m0 0-5 5m5-5v14',
|
|
160
|
+
arrowRight: 'm5 12 7 7m0 0 5-5m-5 5V5',
|
|
161
|
+
copy: 'M8 4v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7.242a2 2 0 0 0-.602-1.43L16.083 2.57A2 2 0 0 0 14.685 2H10a2 2 0 0 0-2 2z',
|
|
162
|
+
filter: 'M22 3H2l8 9.46V19l4 2v-8.54L22 3z',
|
|
163
|
+
sort: 'M11 5h10M11 9h7M11 13h4M3 17l3 3m0 0l3-3m-3 3V4',
|
|
164
|
+
help: 'M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3m.08 4h.01',
|
|
165
|
+
warning: 'M12 9v4',
|
|
61
166
|
default: '',
|
|
62
167
|
};
|
|
63
168
|
export const ICON_ADDITIONAL_SHAPES = {
|
|
@@ -76,10 +181,57 @@ export const ICON_ADDITIONAL_SHAPES = {
|
|
|
76
181
|
{ type: 'rect', x: '2', y: '3', width: '20', height: '6', rx: '1' },
|
|
77
182
|
{ type: 'rect', x: '2', y: '15', width: '20', height: '6', rx: '1' },
|
|
78
183
|
],
|
|
79
|
-
toggleOn: [
|
|
80
|
-
|
|
184
|
+
toggleOn: [
|
|
185
|
+
{ type: 'rect', x: '2', y: '7', width: '20', height: '10', rx: '5' },
|
|
186
|
+
{ type: 'circle', cx: '18', cy: '12', r: '4', fill: 'color' },
|
|
187
|
+
],
|
|
188
|
+
toggleOff: [
|
|
189
|
+
{ type: 'rect', x: '2', y: '7', width: '20', height: '10', rx: '5' },
|
|
190
|
+
{ type: 'circle', cx: '6', cy: '12', r: '4', fill: 'color' },
|
|
191
|
+
],
|
|
81
192
|
playCircle: [{ type: 'circle', cx: '12', cy: '12', r: '10' }],
|
|
193
|
+
visibility: [{ type: 'circle', cx: '12', cy: '12', r: '3' }],
|
|
194
|
+
record: [{ type: 'circle', cx: '12', cy: '12', r: '5', fill: 'color' }],
|
|
195
|
+
xCircle: [{ type: 'circle', cx: '12', cy: '12', r: '10' }],
|
|
196
|
+
exclamationTriangle: [{ type: 'path', d: 'M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z' }],
|
|
197
|
+
person: [{ type: 'circle', cx: '12', cy: '7', r: '4' }],
|
|
198
|
+
envelope: [{ type: 'path', d: 'm22 6-10 7L2 6' }],
|
|
199
|
+
infoCircle: [{ type: 'circle', cx: '12', cy: '12', r: '10' }],
|
|
200
|
+
checkSquare: [{ type: 'rect', x: '3', y: '3', width: '18', height: '18', rx: '2' }],
|
|
201
|
+
square: [{ type: 'rect', x: '3', y: '3', width: '18', height: '18', rx: '2' }],
|
|
202
|
+
dashSquare: [{ type: 'rect', x: '3', y: '3', width: '18', height: '18', rx: '2' }],
|
|
203
|
+
people: [{ type: 'circle', cx: '9', cy: '7', r: '4' }, { type: 'path', d: 'M3 21v-2a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v2' }, { type: 'path', d: 'M16 3.13a4 4 0 0 1 0 7.75' }, { type: 'path', d: 'M21 21v-2a4 4 0 0 0-3-3.85' }],
|
|
204
|
+
boxSeam: [{ type: 'path', d: 'M21 8.5v7c0 .6-.2 1.2-.6 1.7l-7 4c-.3.2-.6.3-1 .3-.3 0-.7-.1-1-.3l-7-4c-.4-.5-.6-1.1-.6-1.7v-7c0-.6.2-1.2.6-1.7l7-4c.6-.4 1.4-.4 2 0l7 4c.4.5.6 1.1.6 1.7z' }, { type: 'path', d: 'M3.3 7L12 12l8.7-5M12 22.5V12' }],
|
|
205
|
+
personBadge: [{ type: 'circle', cx: '12', cy: '8', r: '4' }, { type: 'rect', x: '8', y: '14', width: '8', height: '6', rx: '1' }, { type: 'path', d: 'M10 17h4' }],
|
|
206
|
+
listTask: [{ type: 'path', d: 'M9 6h11M9 12h11M9 18h11' }, { type: 'circle', cx: '5', cy: '6', r: '1', fill: 'color' }, { type: 'circle', cx: '5', cy: '12', r: '1', fill: 'color' }, { type: 'circle', cx: '5', cy: '18', r: '1', fill: 'color' }],
|
|
207
|
+
shuffle: [],
|
|
208
|
+
cpu: [{ type: 'rect', x: '6', y: '6', width: '12', height: '12', rx: '1' }, { type: 'rect', x: '9', y: '9', width: '6', height: '6' }, { type: 'path', d: 'M9 2v4M15 2v4M9 18v4M15 18v4M2 9h4M2 15h4M18 9h4M18 15h4' }],
|
|
209
|
+
box: [{ type: 'path', d: 'M12 2.7L3.3 7v9.3l8.7 5 8.7-5V7L12 2.7z' }, { type: 'path', d: 'M12 22V12M3.3 7L12 12l8.7-5' }],
|
|
210
|
+
bell: [],
|
|
211
|
+
message: [],
|
|
212
|
+
send: [],
|
|
213
|
+
file: [{ type: 'path', d: 'M13 2v7h7' }],
|
|
214
|
+
folder: [],
|
|
215
|
+
save: [{ type: 'path', d: 'M15 3v6h4M9 21v-8h6v8' }],
|
|
216
|
+
print: [{ type: 'rect', x: '6', y: '14', width: '12', height: '8', rx: '1' }],
|
|
217
|
+
clock: [{ type: 'circle', cx: '12', cy: '12', r: '10' }],
|
|
218
|
+
calendar: [{ type: 'rect', x: '3', y: '4', width: '18', height: '18', rx: '2' }],
|
|
219
|
+
timer: [{ type: 'circle', cx: '12', cy: '13', r: '9' }, { type: 'path', d: 'M9 2h6' }],
|
|
220
|
+
lock: [],
|
|
221
|
+
unlock: [],
|
|
222
|
+
chart: [],
|
|
223
|
+
table: [],
|
|
224
|
+
database: [],
|
|
225
|
+
home: [{ type: 'path', d: 'M9 22V12h6v10' }],
|
|
226
|
+
menu: [],
|
|
227
|
+
arrowLeft: [],
|
|
228
|
+
arrowRight: [],
|
|
229
|
+
copy: [{ type: 'rect', x: '4', y: '8', width: '12', height: '12', rx: '2' }],
|
|
230
|
+
filter: [],
|
|
231
|
+
sort: [],
|
|
232
|
+
help: [{ type: 'circle', cx: '12', cy: '12', r: '10' }],
|
|
233
|
+
warning: [{ type: 'circle', cx: '12', cy: '12', r: '10' }, { type: 'circle', cx: '12', cy: '17', r: '0.5', fill: 'color' }],
|
|
82
234
|
default: [{ type: 'circle', cx: '12', cy: '12', r: '10' }],
|
|
83
235
|
edit: [{ type: 'rect', x: '5', y: '19', width: '14', height: '2', rx: '1' }],
|
|
84
236
|
};
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NyYy9saWIvaWNvbi9pY29uLmNvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsT0FBTztJQUNQLFFBQVE7SUFDUixNQUFNO0lBQ04sUUFBUTtJQUNSLEtBQUs7SUFDTCxNQUFNO0lBQ04sS0FBSztJQUNMLFVBQVU7SUFDVixVQUFVO0lBQ1YsU0FBUztJQUNULGFBQWE7SUFDYixjQUFjO0lBQ2QsT0FBTztJQUNQLE9BQU87SUFDUCxTQUFTO0lBQ1QsV0FBVztJQUNYLFVBQVU7SUFDVixXQUFXO0lBQ1gsUUFBUTtJQUNSLFFBQVE7SUFDUixnQkFBZ0I7SUFDaEIsWUFBWTtJQUNaLFNBQVM7Q0FDRCxDQUFDO0FBRVgsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQXdDO0lBQ25FLE9BQU8sRUFBRSxXQUFXO0lBQ3BCLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLElBQUksRUFBRSxTQUFTO0lBQ2YsT0FBTyxFQUFFLFNBQVM7Q0FDbkIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUM7QUFDeEMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDO0FBQ3pDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztBQUNwQyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxHQUFHLENBQUM7QUFDMUMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQztBQUNqQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO0FBRWpDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBcUM7SUFDMUQsS0FBSyxFQUFFLGdCQUFnQjtJQUN2QixNQUFNLEVBQUUsc0JBQXNCO0lBQzlCLElBQUksRUFBRSwwREFBMEQ7SUFDaEUsTUFBTSxFQUFFLDhFQUE4RTtJQUN0RixHQUFHLEVBQUUsa0JBQWtCO0lBQ3ZCLElBQUksRUFBRSxpRkFBaUY7SUFDdkYsR0FBRyxFQUFFLGNBQWM7SUFDbkIsUUFBUSxFQUFFLHlFQUF5RTtJQUNuRixRQUFRLEVBQUUsYUFBYTtJQUN2QixPQUFPLEVBQUUsMkhBQTJIO0lBQ3BJLFdBQVcsRUFBRSxlQUFlO0lBQzVCLFlBQVksRUFBRSxtQkFBbUI7SUFDakMsS0FBSyxFQUFFLG9CQUFvQjtJQUMzQixLQUFLLEVBQUUsa0JBQWtCO0lBQ3pCLE9BQU8sRUFBRSxnQkFBZ0I7SUFDekIsU0FBUyxFQUFFLGNBQWM7SUFDekIsUUFBUSxFQUFFLG1DQUFtQztJQUM3QyxTQUFTLEVBQUUsa0NBQWtDO0lBQzdDLE1BQU0sRUFBRSwrQ0FBK0M7SUFDdkQsTUFBTSxFQUFFLGdHQUFnRztJQUN4RyxjQUFjLEVBQUUsZ0RBQWdEO0lBQ2hFLFVBQVUsRUFBRSx3R0FBd0c7SUFDcEgsT0FBTyxFQUFFLEVBQUU7Q0FDWixDQUFDO0FBT0YsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQWdEO0lBQ2pGLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3RELEdBQUcsRUFBRTtRQUNILEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRTtRQUM1QyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUU7UUFDOUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxnQkFBZ0IsRUFBRTtLQUN0QztJQUNELFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQzFELFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzNELFdBQVcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzlELFlBQVksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQy9ELEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3hELEtBQUssRUFBRTtRQUNMLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUU7UUFDbkUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRTtLQUNyRTtJQUNELFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUMvRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDaEYsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDN0QsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDMUQsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDO0NBQzdFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xvclR5cGUgfSBmcm9tICcuL2ljb24udHlwZXMnO1xuXG5leHBvcnQgY29uc3QgSUNPTl9OQU1FUyA9IFtcbiAgJ2NoZWNrJyxcbiAgJ2NhbmNlbCcsXG4gICdlZGl0JyxcbiAgJ2RlbGV0ZScsXG4gICdhZGQnLFxuICAndmlldycsXG4gICdnZXQnLFxuICAnc2V0dGluZ3MnLFxuICAnc2NoZWR1bGUnLFxuICAncmVmcmVzaCcsXG4gICdjaGVja0NpcmNsZScsXG4gICdjYW5jZWxDaXJjbGUnLFxuICAnZXJyb3InLFxuICAncXVldWUnLFxuICAnYXJyb3dVcCcsXG4gICdhcnJvd0Rvd24nLFxuICAndG9nZ2xlT24nLFxuICAndG9nZ2xlT2ZmJyxcbiAgJ3NlYXJjaCcsXG4gICd1cGxvYWQnLFxuICAncGVuZGluZ0FjdGlvbnMnLFxuICAncGxheUNpcmNsZScsXG4gICdkZWZhdWx0Jyxcbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBCQVNFX0lDT05fQ09MT1JTOiBSZWFkb25seTxSZWNvcmQ8Q29sb3JUeXBlLCBzdHJpbmc+PiA9IHtcbiAgcHJpbWFyeTogJyMwMDM3NzVjOCcsXG4gIHNlY29uZGFyeTogJyM2YjcyODAnLFxuICB3YXJuOiAnI2U1MzkzNScsXG4gIHN1Y2Nlc3M6ICcjNGNhZjUwJyxcbn07XG5cbmV4cG9ydCBjb25zdCBESVNBQkxFRF9DT0xPUiA9ICcjYmRiZGJkJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX0lDT05fQ09MT1IgPSAnIzIyMic7XG5leHBvcnQgY29uc3QgRElTQUJMRURfT1BBQ0lUWSA9IDAuNTtcbmV4cG9ydCBjb25zdCBTRUNPTkRBUllfV0FSTl9PUEFDSVRZID0gMC43O1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1BBQ0lUWSA9IDE7XG5leHBvcnQgY29uc3QgQkFTRV9JQ09OX1NJWkUgPSAyNDtcblxuZXhwb3J0IGNvbnN0IElDT05fUEFUSFM6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0ge1xuICBjaGVjazogJ001IDEzbDQgNEwxOSA3JyxcbiAgY2FuY2VsOiAnTTYgNmwxMiAxMk02IDE4TDE4IDYnLFxuICBlZGl0OiAnTTE2LjUgMy41YTIuMTIxIDIuMTIxIDAgMCAxIDMgM0w3IDE5bC00IDEgMS00IDEyLjUtMTIuNXonLFxuICBkZWxldGU6ICdNNiAxOWEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlY3SDZ2MTJ6TTE5IDRoLTMuNWwtMS0xaC01bC0xIDFINXYyaDE0VjR6JyxcbiAgYWRkOiAnTTEyIDV2MTRNNSAxMmgxNCcsXG4gIHZpZXc6ICdNMTIgNUM3IDUgMi43MyA4LjExIDEgMTJjMS43MyAzLjg5IDYgNyAxMSA3czkuMjctMy4xMSAxMS03Yy0xLjczLTMuODktNi03LTExLTd6JyxcbiAgZ2V0OiAnbTguNSA4LjUgNyA3JyxcbiAgc2V0dGluZ3M6ICdNMTIgMXY2bTAgNnYxME0zLjM0IDdsNS4yIDNNMTUuNDYgMTRsNS4yIDNNMy4zNCAxN2w1LjItM00xNS40NiAxMGw1LjItMycsXG4gIHNjaGVkdWxlOiAnTTEyIDZ2Nmw0IDInLFxuICByZWZyZXNoOiAnTTMgMTJhOSA5IDAgMCAxIDktOSA5Ljc1IDkuNzUgMCAwIDEgNi43NCAyLjc0TDIxIDhNMjEgM3Y1aC01TTIxIDEyYTkgOSAwIDAgMS05IDkgOS43NSA5Ljc1IDAgMCAxLTYuNzQtMi43NEwzIDE2TTMgMjF2LTVoNScsXG4gIGNoZWNrQ2lyY2xlOiAnbTkgMTIgMiAyIDQtNCcsXG4gIGNhbmNlbENpcmNsZTogJ20xNSA5LTYgNm0wLTYgNiA2JyxcbiAgZXJyb3I6ICdNMTUgOUw5IDE1TTkgOWw2IDYnLFxuICBxdWV1ZTogJ00zIDEyaDE4bS05LTl2MTgnLFxuICBhcnJvd1VwOiAnbTE4IDE1LTYtNi02IDYnLFxuICBhcnJvd0Rvd246ICdtNiA5IDYgNiA2LTYnLFxuICB0b2dnbGVPbjogJ00xNyA4YTEgMSAwIDEgMSAwIDIgMSAxIDAgMCAxIDAtMicsXG4gIHRvZ2dsZU9mZjogJ003IDhhMSAxIDAgMSAxIDAgMiAxIDEgMCAwIDEgMC0yJyxcbiAgc2VhcmNoOiAnbTIxIDIxLTYtNm0yLTVhNyA3IDAgMSAxLTE0IDAgNyA3IDAgMCAxIDE0IDB6JyxcbiAgdXBsb2FkOiAnTTEyIDE1VjNtMCAwbC00IDRtNC00bDQgNE0yIDE3bC42MjEgMi40ODVBMiAyIDAgMCAwIDQuNTYxIDIxaDE0Ljg3OGEyIDIgMCAwIDAgMS45NC0xLjUxNUwyMiAxNycsXG4gIHBlbmRpbmdBY3Rpb25zOiAnTTEyIDh2NGwzIDNtNi0zYTkgOSAwIDEgMS0xOCAwIDkgOSAwIDAgMSAxOCAweicsXG4gIHBsYXlDaXJjbGU6ICdNMTQuNzUyIDExLjE2OGwtMy4xOTctMi4xMzJBMSAxIDAgMCAwIDEwIDkuODd2NC4yNjNhMSAxIDAgMCAwIDEuNTU1LjgzMmwzLjE5Ny0yLjEzMmExIDEgMCAwIDAgMC0xLjY2NHonLFxuICBkZWZhdWx0OiAnJyxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcGVBdHRyaWJ1dGVzIHtcbiAgdHlwZTogJ2NpcmNsZScgfCAncmVjdCcgfCAncGF0aCc7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IElDT05fQURESVRJT05BTF9TSEFQRVM6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIFNoYXBlQXR0cmlidXRlc1tdPj4gPSB7XG4gIHZpZXc6IFt7IHR5cGU6ICdjaXJjbGUnLCBjeDogJzEyJywgY3k6ICcxMicsIHI6ICczJyB9XSxcbiAgZ2V0OiBbXG4gICAgeyB0eXBlOiAnY2lyY2xlJywgY3g6ICc2JywgY3k6ICc2JywgcjogJzMnIH0sXG4gICAgeyB0eXBlOiAnY2lyY2xlJywgY3g6ICcxOCcsIGN5OiAnMTgnLCByOiAnMycgfSxcbiAgICB7IHR5cGU6ICdwYXRoJywgZDogJ20xMyAxMSAyIDItMiAyJyB9LFxuICBdLFxuICBzZXR0aW5nczogW3sgdHlwZTogJ2NpcmNsZScsIGN4OiAnMTInLCBjeTogJzEyJywgcjogJzMnIH1dLFxuICBzY2hlZHVsZTogW3sgdHlwZTogJ2NpcmNsZScsIGN4OiAnMTInLCBjeTogJzEyJywgcjogJzEwJyB9XSxcbiAgY2hlY2tDaXJjbGU6IFt7IHR5cGU6ICdjaXJjbGUnLCBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcgfV0sXG4gIGNhbmNlbENpcmNsZTogW3sgdHlwZTogJ2NpcmNsZScsIGN4OiAnMTInLCBjeTogJzEyJywgcjogJzEwJyB9XSxcbiAgZXJyb3I6IFt7IHR5cGU6ICdjaXJjbGUnLCBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcgfV0sXG4gIHF1ZXVlOiBbXG4gICAgeyB0eXBlOiAncmVjdCcsIHg6ICcyJywgeTogJzMnLCB3aWR0aDogJzIwJywgaGVpZ2h0OiAnNicsIHJ4OiAnMScgfSxcbiAgICB7IHR5cGU6ICdyZWN0JywgeDogJzInLCB5OiAnMTUnLCB3aWR0aDogJzIwJywgaGVpZ2h0OiAnNicsIHJ4OiAnMScgfSxcbiAgXSxcbiAgdG9nZ2xlT246IFt7IHR5cGU6ICdyZWN0JywgeDogJzUnLCB5OiAnNScsIHdpZHRoOiAnMTQnLCBoZWlnaHQ6ICc2Jywgcng6ICczJyB9XSxcbiAgdG9nZ2xlT2ZmOiBbeyB0eXBlOiAncmVjdCcsIHg6ICc1JywgeTogJzUnLCB3aWR0aDogJzE0JywgaGVpZ2h0OiAnNicsIHJ4OiAnMycgfV0sXG4gIHBsYXlDaXJjbGU6IFt7IHR5cGU6ICdjaXJjbGUnLCBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcgfV0sXG4gIGRlZmF1bHQ6IFt7IHR5cGU6ICdjaXJjbGUnLCBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcgfV0sXG4gIGVkaXQ6IFt7IHR5cGU6ICdyZWN0JywgeDogJzUnLCB5OiAnMTknLCB3aWR0aDogJzE0JywgaGVpZ2h0OiAnMicsIHJ4OiAnMScgfV0sXG59O1xuIl19
|
|
237
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NyYy9saWIvaWNvbi9pY29uLmNvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsT0FBTztJQUNQLFFBQVE7SUFDUixNQUFNO0lBQ04sUUFBUTtJQUNSLEtBQUs7SUFDTCxNQUFNO0lBQ04sS0FBSztJQUNMLFVBQVU7SUFDVixVQUFVO0lBQ1YsU0FBUztJQUNULGFBQWE7SUFDYixjQUFjO0lBQ2QsT0FBTztJQUNQLE9BQU87SUFDUCxTQUFTO0lBQ1QsV0FBVztJQUNYLFVBQVU7SUFDVixXQUFXO0lBQ1gsUUFBUTtJQUNSLFFBQVE7SUFDUixnQkFBZ0I7SUFDaEIsWUFBWTtJQUNaLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLFlBQVk7SUFDWixlQUFlO0lBQ2YsT0FBTztJQUNQLFFBQVE7SUFDUixNQUFNO0lBQ04sU0FBUztJQUNULEtBQUs7SUFDTCxxQkFBcUI7SUFDckIsV0FBVztJQUNYLFVBQVU7SUFDVixRQUFRO0lBQ1IsUUFBUTtJQUNSLFVBQVU7SUFDVixZQUFZO0lBQ1osYUFBYTtJQUNiLFFBQVE7SUFDUixZQUFZO0lBQ1osUUFBUTtJQUNSLFNBQVM7SUFDVCxhQUFhO0lBQ2IsVUFBVTtJQUNWLFNBQVM7SUFDVCxLQUFLO0lBQ0wsS0FBSztJQUNMLE1BQU07SUFDTixTQUFTO0lBQ1QsTUFBTTtJQUNOLE1BQU07SUFDTixRQUFRO0lBQ1IsTUFBTTtJQUNOLE9BQU87SUFDUCxPQUFPO0lBQ1AsVUFBVTtJQUNWLE9BQU87SUFDUCxNQUFNO0lBQ04sUUFBUTtJQUNSLE9BQU87SUFDUCxPQUFPO0lBQ1AsVUFBVTtJQUNWLE1BQU07SUFDTixNQUFNO0lBQ04sV0FBVztJQUNYLFlBQVk7SUFDWixNQUFNO0lBQ04sUUFBUTtJQUNSLE1BQU07SUFDTixN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SSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzNELFdBQVcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzlELFlBQVksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQy9ELEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3hELEtBQUssRUFBRTtRQUNMLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUU7UUFDbkUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRTtLQUNyRTtJQUNELFFBQVEsRUFBRTtRQUNSLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUU7UUFDcEUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7S0FDOUQ7SUFDRCxTQUFTLEVBQUU7UUFDVCxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFO1FBQ3BFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0tBQzdEO0lBQ0QsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDN0QsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDNUQsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUN2RSxPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMxRCxtQkFBbUIsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsMEZBQTBGLEVBQUUsQ0FBQztJQUN0SSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN2RCxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLENBQUM7SUFDakQsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDN0QsV0FBVyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ25GLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUM5RSxVQUFVLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDbEYsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSwwQ0FBMEMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFD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QUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN4RCxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDaEYsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUN0RixJQUFJLEVBQUUsRUFBRTtJQUNSLE1BQU0sRUFBRSxFQUFFO0lBQ1YsS0FBSyxFQUFFLEVBQUU7SUFDVCxLQUFLLEVBQUUsRUFBRTtJQUNULFFBQVEsRUFBRSxFQUFFO0lBQ1osSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxlQUFlLEVBQUUsQ0FBQztJQUM1QyxJQUFJLEVBQUUsRUFBRTtJQUNSLFNBQVMsRUFBRSxFQUFFO0lBQ2IsVUFBVSxFQUFFLEVBQUU7SUFDZCxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDNUUsTUFBTSxFQUFFLEVBQUU7SUFDVixJQUFJLEVBQUUsRUFBRTtJQUNSLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3ZELE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDM0gsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDMUQsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDO0NBQzdFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xvclR5cGUsIFNoYXBlQXR0cmlidXRlcyB9IGZyb20gJy4vaWNvbi50eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBJQ09OX05BTUVTID0gW1xuICAnY2hlY2snLFxuICAnY2FuY2VsJyxcbiAgJ2VkaXQnLFxuICAnZGVsZXRlJyxcbiAgJ2FkZCcsXG4gICd2aWV3JyxcbiAgJ2dldCcsXG4gICdzZXR0aW5ncycsXG4gICdzY2hlZHVsZScsXG4gICdyZWZyZXNoJyxcbiAgJ2NoZWNrQ2lyY2xlJyxcbiAgJ2NhbmNlbENpcmNsZScsXG4gICdlcnJvcicsXG4gICdxdWV1ZScsXG4gICdhcnJvd1VwJyxcbiAgJ2Fycm93RG93bicsXG4gICd0b2dnbGVPbicsXG4gICd0b2dnbGVPZmYnLFxuICAnc2VhcmNoJyxcbiAgJ3VwbG9hZCcsXG4gICdwZW5kaW5nQWN0aW9ucycsXG4gICdwbGF5Q2lyY2xlJyxcbiAgJ3BsYXknLFxuICAnc3RvcCcsXG4gICd0dW5lJyxcbiAgJ3Zpc2liaWxpdHknLFxuICAndmlzaWJpbGl0eU9mZicsXG4gICdjbG9zZScsXG4gICdyZWNvcmQnLFxuICAnc3RhcicsXG4gICd4Q2lyY2xlJyxcbiAgJ2tleScsXG4gICdleGNsYW1hdGlvblRyaWFuZ2xlJyxcbiAgJ2NsaXBib2FyZCcsXG4gICdkb3dubG9hZCcsXG4gICdzaGllbGQnLFxuICAncGVyc29uJyxcbiAgJ2VudmVsb3BlJyxcbiAgJ2luZm9DaXJjbGUnLFxuICAnY2hlY2tTcXVhcmUnLFxuICAnc3F1YXJlJyxcbiAgJ2Rhc2hTcXVhcmUnLFxuICAncGVvcGxlJyxcbiAgJ2JveFNlYW0nLFxuICAncGVyc29uQmFkZ2UnLFxuICAnbGlzdFRhc2snLFxuICAnc2h1ZmZsZScsXG4gICdjcHUnLFxuICAnYm94JyxcbiAgJ2JlbGwnLFxuICAnbWVzc2FnZScsXG4gICdzZW5kJyxcbiAgJ2ZpbGUnLFxuICAnZm9sZGVyJyxcbiAgJ3NhdmUnLFxuICAncHJpbnQnLFxuICAnY2xvY2snLFxuICAnY2FsZW5kYXInLFxuICAndGltZXInLFxuICAnbG9jaycsXG4gICd1bmxvY2snLFxuICAnY2hhcnQnLFxuICAndGFibGUnLFxuICAnZGF0YWJhc2UnLFxuICAnaG9tZScsXG4gICdtZW51JyxcbiAgJ2Fycm93TGVmdCcsXG4gICdhcnJvd1JpZ2h0JyxcbiAgJ2NvcHknLFxuICAnZmlsdGVyJyxcbiAgJ3NvcnQnLFxuICAnaGVscCcsXG4gICd3YXJuaW5nJyxcbiAgJ2RlZmF1bHQnLFxuXSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEJBU0VfSUNPTl9DT0xPUlM6IFJlYWRvbmx5PFJlY29yZDxDb2xvclR5cGUsIHN0cmluZz4+ID0ge1xuICBwcmltYXJ5OiAnIzAwMzc3NWM4JyxcbiAgc2Vjb25kYXJ5OiAnIzZiNzI4MCcsXG4gIHdhcm46ICcjZTUzOTM1JyxcbiAgc3VjY2VzczogJyM0Y2FmNTAnLFxufTtcblxuZXhwb3J0IGNvbnN0IERJU0FCTEVEX0NPTE9SID0gJyNiZGJkYmQnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSUNPTl9DT0xPUiA9ICcjMjIyJztcbmV4cG9ydCBjb25zdCBESVNBQkxFRF9PUEFDSVRZID0gMC41O1xuZXhwb3J0IGNvbnN0IFNFQ09OREFSWV9XQVJOX09QQUNJVFkgPSAwLjc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9PUEFDSVRZID0gMTtcbmV4cG9ydCBjb25zdCBCQVNFX0lDT05fU0laRSA9IDI0O1xuXG5leHBvcnQgY29uc3QgSUNPTl9QQVRIUzogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPSB7XG4gIGNoZWNrOiAnTTUgMTNsNCA0TDE5IDcnLFxuICBjYW5jZWw6ICdNNiA2bDEyIDEyTTYgMThMMTggNicsXG4gIGVkaXQ6ICdNMTYuNSAzLjVhMi4xMjEgMi4xMjEgMCAwIDEgMyAzTDcgMTlsLTQgMSAxLTQgMTIuNS0xMi41eicsXG4gIGRlbGV0ZTogJ002IDE5YTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjdINnYxMnpNMTkgNGgtMy41bC0xLTFoLTVsLTEgMUg1djJoMTRWNHonLFxuICBhZGQ6ICdNMTIgNXYxNE01IDEyaDE0JyxcbiAgdmlldzogJ00xMiA1QzcgNSAyLjczIDguMTEgMSAxMmMxLjczIDMuODkgNiA3IDExIDdzOS4yNy0zLjExIDExLTdjLTEuNzMtMy44OS02LTctMTEtN3onLFxuICBnZXQ6ICdtOC41IDguNSA3IDcnLFxuICBzZXR0aW5nczogJ00xMiAxdjZtMCA2djEwTTMuMzQgN2w1LjIgM00xNS40NiAxNGw1LjIgM00zLjM0IDE3bDUuMi0zTTE1LjQ2IDEwbDUuMi0zJyxcbiAgc2NoZWR1bGU6ICdNMTIgNnY2bDQgMicsXG4gIHJlZnJlc2g6ICdNMyAxMmE5IDkgMCAwIDEgOS05IDkuNzUgOS43NSAwIDAgMSA2Ljc0IDIuNzRMMjEgOE0yMSAzdjVoLTVNMjEgMTJhOSA5IDAgMCAxLTkgOSA5Ljc1IDkuNzUgMCAwIDEtNi43NC0yLjc0TDMgMTZNMyAyMXYtNWg1JyxcbiAgY2hlY2tDaXJjbGU6ICdtOSAxMiAyIDIgNC00JyxcbiAgY2FuY2VsQ2lyY2xlOiAnbTE1IDktNiA2bTAtNiA2IDYnLFxuICBlcnJvcjogJ00xNSA5TDkgMTVNOSA5bDYgNicsXG4gIHF1ZXVlOiAnTTMgMTJoMThtLTktOXYxOCcsXG4gIGFycm93VXA6ICdtMTggMTUtNi02LTYgNicsXG4gIGFycm93RG93bjogJ202IDkgNiA2IDYtNicsXG4gIHRvZ2dsZU9uOiAnJyxcbiAgdG9nZ2xlT2ZmOiAnJyxcbiAgc2VhcmNoOiAnbTIxIDIxLTYtNm0yLTVhNyA3IDAgMSAxLTE0IDAgNyA3IDAgMCAxIDE0IDB6JyxcbiAgdXBsb2FkOiAnTTEyIDE1VjNtMCAwbC00IDRtNC00bDQgNE0yIDE3bC42MjEgMi40ODVBMiAyIDAgMCAwIDQuNTYxIDIxaDE0Ljg3OGEyIDIgMCAwIDAgMS45NC0xLjUxNUwyMiAxNycsXG4gIHBlbmRpbmdBY3Rpb25zOiAnTTEyIDh2NGwzIDNtNi0zYTkgOSAwIDEgMS0xOCAwIDkgOSAwIDAgMSAxOCAweicsXG4gIHBsYXlDaXJjbGU6ICdNMTQuNzUyIDExLjE2OGwtMy4xOTctMi4xMzJBMSAxIDAgMCAwIDEwIDkuODd2NC4yNjNhMSAxIDAgMCAwIDEuNTU1LjgzMmwzLjE5Ny0yLjEzMmExIDEgMCAwIDAgMC0xLjY2NHonLFxuICBwbGF5OiAnTTggNXYxNGwxMS03eicsXG4gIHN0b3A6ICdNNiA2aDEydjEySDZ6JyxcbiAgdHVuZTogJ00zIDE3di0yaDZ2MnptMC00di0yaDEwdjJ6bTAtNFY3aDE0djJ6TTYgMjF2LTRoNnY0em03LTh2LTRoOHY0em0zIDh2LThoNXY4eicsXG4gIHZpc2liaWxpdHk6ICdNMTIgNC41QzcgNC41IDIuNzMgNy42MSAxIDEyYzEuNzMgNC4zOSA2IDcuNSAxMSA3LjVzOS4yNy0zLjExIDExLTcuNWMtMS43My00LjM5LTYtNy41LTExLTcuNXonLFxuICB2aXNpYmlsaXR5T2ZmOlxuICAgICdNMTIgN2MyLjc2IDAgNSAyLjI0IDUgNSAwIC42NS0uMTMgMS4yNi0uMzYgMS44M2wyLjkyIDIuOTJjMS41MS0xLjI2IDIuNy0yLjg5IDMuNDMtNC43NS0xLjczLTQuMzktNi03LjUtMTEtNy41LTEuNCAwLTIuNzQuMjUtMy45OC43bDIuMTYgMi4xNkMxMC43NCA3LjEzIDExLjM1IDcgMTIgN3onICtcbiAgICAnTTIgNC4yN2wyLjI4IDIuMjguNDYuNDZBMTEuODA0IDExLjgwNCAwIDAgMCAxIDEyYzEuNzMgNC4zOSA2IDcuNSAxMSA3LjUgMS41NSAwIDMuMDMtLjMgNC4zOC0uODRsLjQyLjQyTDE5LjczIDIyIDIxIDIwLjczIDMuMjcgMyAyIDQuMjd6JyArXG4gICAgJ003LjUzIDkuOGwxLjU1IDEuNTVjLS4wNS4yMS0uMDguNDMtLjA4LjY1IDAgMS42NiAxLjM0IDMgMyAzIC4yMiAwIC40NC0uMDMuNjUtLjA4bDEuNTUgMS41NWMtLjY3LjMzLTEuNDEuNTMtMi4yLjUzLTIuNzYgMC01LTIuMjQtNS01IDAtLjc5LjItMS41My41My0yLjJ6JyArXG4gICAgJ200LjMxLS43OCAzLjE1IDMuMTUuMDItLjE2YzAtMS42Ni0xLjM0LTMtMy0zbC0uMTcuMDF6JyxcbiAgY2xvc2U6ICdNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeicsXG4gIHJlY29yZDogJycsXG4gIHN0YXI6ICdNMTIgMmwzLjA5IDYuMjZMMjIgOS4yN2wtNSA0Ljg3IDEuMTggNi44OEwxMiAxNy43N2wtNi4xOCAzLjI1TDcgMTQuMTQgMiA5LjI3bDYuOTEtMS4wMUwxMiAyeicsXG4gIHhDaXJjbGU6ICdNMTUgOWwtNiA2bTAtNmw2IDYnLFxuICBrZXk6ICdNMjEgMmwtMiAybS03LjYxIDcuNjFhNS41IDUuNSAwIDEgMS03Ljc3OCA3Ljc3OCA1LjUgNS41IDAgMCAxIDcuNzc3LTcuNzc3em0wIDBMMTUuNSA3LjVtMCAwbDMgM0wyMiA3bC0zLTNtLTMuNSAzLjVMMTkgNCcsXG4gIGV4Y2xhbWF0aW9uVHJpYW5nbGU6ICdNMTIgOXY0bTAgNGguMDEnLFxuICBjbGlwYm9hcmQ6ICdNOSA1SDdhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDEwYTIgMiAwIDAgMCAyLTJWN2EyIDIgMCAwIDAtMi0yaC0yTTkgNWEyIDIgMCAwIDAgMiAyaDJhMiAyIDAgMCAwIDItMk05IDVhMiAyIDAgMCAxIDItMmgyYTIgMiAwIDAgMSAyIDInLFxuICBkb3dubG9hZDogJ00yMSAxNXY0YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0ydi00bTQtNWw1IDVtMCAwbDUtNW0tNSA1VjMnLFxuICBzaGllbGQ6ICdNMTIgMjJzOC00IDgtMTBWNWwtOC0zLTggM3Y3YzAgNiA4IDEwIDggMTB6JyxcbiAgcGVyc29uOiAnTTIwIDIxdi0yYTQgNCAwIDAgMC00LTRIOGE0IDQgMCAwIDAtNCA0djInLFxuICBlbnZlbG9wZTogJ000IDRoMTZjMS4xIDAgMiAuOSAyIDJ2MTJjMCAxLjEtLjkgMi0yIDJINGMtMS4xIDAtMi0uOS0yLTJWNmMwLTEuMS45LTIgMi0yeicsXG4gIGluZm9DaXJjbGU6ICdNMTIgMTZ2LTRtMC00aC4wMScsXG4gIGNoZWNrU3F1YXJlOiAnbTkgMTEgMyAzTDIyIDQnLFxuICBzcXVhcmU6ICcnLFxuICBkYXNoU3F1YXJlOiAnTTggMTJoOCcsXG4gIHBlb3BsZTogJ00xNyAyMXYtMmE0IDQgMCAwIDAtNC00SDVhNCA0IDAgMCAwLTQgNHYyJyxcbiAgYm94U2VhbTogJ00yMSAxNlY4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzNsNyA0YTIgMiAwIDAgMCAyIDBsNy00QTIgMiAwIDAgMCAyMSAxNnonLFxuICBwZXJzb25CYWRnZTogJ00xNyAyMXYtMmE0IDQgMCAwIDAtMy0zLjg3bS00LTUuMTNhNCA0IDAgMCAwIDIgNy43NScsXG4gIGxpc3RUYXNrOiAnTTMgNmgxOE0zIDEyaDE4TTMgMThoMTgnLFxuICBzaHVmZmxlOiAnTTE2IDNoNXY1TTQgMjBMMjEgM00yMSAxNnY1aC01TTE1IDE1bDYgNk00IDRsNSA1JyxcbiAgY3B1OiAnTTQgNGgxNnYxNkg0eicsXG4gIGJveDogJ00yMSA4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzNsNyA0YTIgMiAwIDAgMCAyIDBsNy00QTIgMiAwIDAgMCAyMSAxNlY4eicsXG4gIGJlbGw6ICdNMTggOEE2IDYgMCAwIDAgNiA4YzAgNy0zIDktMyA5aDE4cy0zLTItMy05TTEzLjczIDIxYTIgMiAwIDAgMS0zLjQ2IDAnLFxuICBtZXNzYWdlOiAnTTIxIDE1YTIgMiAwIDAgMS0yIDJIN2wtNCA0VjVhMiAyIDAgMCAxIDItMmgxNGEyIDIgMCAwIDEgMiAyeicsXG4gIHNlbmQ6ICdNMjIgMkwxMSAxM00yMiAybC03IDIwLTQtOS05LTQgMjAtN3onLFxuICBmaWxlOiAnTTEzIDJINmEyIDIgMCAwIDAtMiAydjE2YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY5eicsXG4gIGZvbGRlcjogJ00yMiAxOWEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoNWwyIDNoOWEyIDIgMCAwIDEgMiAyeicsXG4gIHNhdmU6ICdNMTkgMjFINWEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmgxMWw1IDV2MTFhMiAyIDAgMCAxLTIgMnonLFxuICBwcmludDogJ002IDlWMmgxMnY3TTYgMThINGEyIDIgMCAwIDEtMi0ydi01YTIgMiAwIDAgMSAyLTJoMTZhMiAyIDAgMCAxIDIgMnY1YTIgMiAwIDAgMS0yIDJoLTInLFxuICBjbG9jazogJ00xMiA2djZsNCAyJyxcbiAgY2FsZW5kYXI6ICdNOCAydjRtOC00djRNMyAxMGgxOCcsXG4gIHRpbWVyOiAnTTEyIDh2NGwyIDInLFxuICBsb2NrOiAnTTE5IDExSDVhMiAyIDAgMCAwLTIgMnY3YTIgMiAwIDAgMCAyIDJoMTRhMiAyIDAgMCAwIDItMnYtN2EyIDIgMCAwIDAtMi0yek03IDExVjdhNSA1IDAgMCAxIDEwIDB2NCcsXG4gIHVubG9jazogJ00xOSAxMUg1YTIgMiAwIDAgMC0yIDJ2N2EyIDIgMCAwIDAgMiAyaDE0YTIgMiAwIDAgMCAyLTJ2LTdhMiAyIDAgMCAwLTItMnpNNyAxMVY3YTUgNSAwIDAgMSA5LjktMScsXG4gIGNoYXJ0OiAnTTMgM3YxOGgxOE03IDE2bDQtNCA0IDQgNi02JyxcbiAgdGFibGU6ICdNMyAzaDE4djE4SDN6TTMgOWgxOE0zIDE1aDE4TTkgM3YxOCcsXG4gIGRhdGFiYXNlOiAnTTEyIDhjLTQuOTcgMC05LTEuMzQtOS0zczQuMDMtMyA5LTMgOSAxLjM0IDkgMy00LjAzIDMtOSAzek0zIDV2NWMwIDEuNjYgNC4wMyAzIDkgM3M5LTEuMzQgOS0zVjVNMyAxMHY1YzAgMS42NiA0LjAzIDMgOSAzczktMS4zNCA5LTN2LTUnLFxuICBob21lOiAnbTMgOSA5LTcgOSA3djExYTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0yeicsXG4gIG1lbnU6ICdNMyAxMmgxOE0zIDZoMThNMyAxOGgxOCcsXG4gIGFycm93TGVmdDogJ20xOSAxMi03LTdtMCAwLTUgNW01LTV2MTQnLFxuICBhcnJvd1JpZ2h0OiAnbTUgMTIgNyA3bTAgMCA1LTVtLTUgNVY1JyxcbiAgY29weTogJ004IDR2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWNy4yNDJhMiAyIDAgMCAwLS42MDItMS40M0wxNi4wODMgMi41N0EyIDIgMCAwIDAgMTQuNjg1IDJIMTBhMiAyIDAgMCAwLTIgMnonLFxuICBmaWx0ZXI6ICdNMjIgM0gybDggOS40NlYxOWw0IDJ2LTguNTRMMjIgM3onLFxuICBzb3J0OiAnTTExIDVoMTBNMTEgOWg3TTExIDEzaDRNMyAxN2wzIDNtMCAwbDMtM20tMyAzVjQnLFxuICBoZWxwOiAnTTkuMDkgOWEzIDMgMCAwIDEgNS44MyAxYzAgMi0zIDMtMyAzbS4wOCA0aC4wMScsXG4gIHdhcm5pbmc6ICdNMTIgOXY0JyxcbiAgZGVmYXVsdDogJycsXG59O1xuXG5leHBvcnQgY29uc3QgSUNPTl9BRERJVElPTkFMX1NIQVBFUzogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgU2hhcGVBdHRyaWJ1dGVzW10+PiA9IHtcbiAgdmlldzogW3sgdHlwZTogJ2NpcmNsZScsIGN4OiAnMTInLCBjeTogJzEyJywgcjogJzMnIH1dLFxuICBnZXQ6IFtcbiAgICB7IHR5cGU6ICdjaXJjbGUnLCBjeDogJzYnLCBjeTogJzYnLCByOiAnMycgfSxcbiAgICB7IHR5cGU6ICdjaXJjbGUnLCBjeDogJzE4JywgY3k6ICcxOCcsIHI6ICczJyB9LFxuICAgIHsgdHlwZTogJ3BhdGgnLCBkOiAnbTEzIDExIDIgMi0yIDInIH0sXG4gIF0sXG4gIHNldHRpbmdzOiBbeyB0eXBlOiAnY2lyY2xlJywgY3g6ICcxMicsIGN5OiAnMTInLCByOiAnMycgfV0sXG4gIHNjaGVkdWxlOiBbeyB0eXBlOiAnY2lyY2xlJywgY3g6ICcxMicsIGN5OiAnMTInLCByOiAnMTAnIH1dLFxuICBjaGVja0NpcmNsZTogW3sgdHlwZTogJ2NpcmNsZScsIGN4OiAnMTInLCBjeTogJzEyJywgcjogJzEwJyB9XSxcbiAgY2FuY2VsQ2lyY2xlOiBbeyB0eXBlOiAnY2lyY2xlJywgY3g6ICcxMicsIGN5OiAnMTInLCByOiAnMTAnIH1dLFxuICBlcnJvcjogW3sgdHlwZTogJ2NpcmNsZScsIGN4OiAnMTInLCBjeTogJzEyJywgcjogJzEwJyB9XSxcbiAgcXVldWU6IFtcbiAgICB7IHR5cGU6ICdyZWN0JywgeDogJzInLCB5OiAnMycsIHdpZHRoOiAnMjAnLCBoZWlnaHQ6ICc2Jywgcng6ICcxJyB9LFxuICAgIHsgdHlwZTogJ3JlY3QnLCB4OiAnMicsIHk6ICcxNScsIHdpZHRoOiAnMjAnLCBoZWlnaHQ6ICc2Jywgcng6ICcxJyB9LFxuICBdLFxuICB0b2dnbGVPbjogW1xuICAgIHsgdHlwZTogJ3JlY3QnLCB4OiAnMicsIHk6ICc3Jywgd2lkdGg6ICcyMCcsIGhlaWdodDogJzEwJywgcng6ICc1JyB9LFxuICAgIHsgdHlwZTogJ2NpcmNsZScsIGN4OiAnMTgnLCBjeTogJzEyJywgcjogJzQnLCBmaWxsOiAnY29sb3InIH0sXG4gIF0sXG4gIHRvZ2dsZU9mZjogW1xuICAgIHsgdHlwZTogJ3JlY3QnLCB4OiAnMicsIHk6ICc3Jywgd2lkdGg6ICcyMCcsIGhlaWdodDogJzEwJywgcng6ICc1JyB9LFxuICAgIHsgdHlwZTogJ2NpcmNsZScsIGN4OiAnNicsIGN5OiAnMTInLCByOiAnNCcsIGZpbGw6ICdjb2xvcicgfSxcbiAgXSxcbiAgcGxheUNpcmNsZTogW3sgdHlwZTogJ2NpcmNsZScsIGN4OiAnMTInLCBjeTogJzEyJywgcjogJzEwJyB9XSxcbiAgdmlzaWJpbGl0eTogW3sgdHlwZTogJ2NpcmNsZScsIGN4OiAnMTInLCBjeTogJzEyJywgcjogJzMnIH1dLFxuICByZWNvcmQ6IFt7IHR5cGU6ICdjaXJjbGUnLCBjeDogJzEyJywgY3k6ICcxMicsIHI6ICc1JywgZmlsbDogJ2NvbG9yJyB9XSxcbiAgeENpcmNsZTogW3sgdHlwZTogJ2NpcmNsZScsIGN4OiAnMTInLCBjeTogJzEyJywgcjogJzEwJyB9XSxcbiAgZXhjbGFtYXRpb25UcmlhbmdsZTogW3sgdHlwZTogJ3BhdGgnLCBkOiAnTTEwLjI5IDMuODZMMS44MiAxOGEyIDIgMCAwIDAgMS43MSAzaDE2Ljk0YTIgMiAwIDAgMCAxLjcxLTNMMTMuNzEgMy44NmEyIDIgMCAwIDAtMy40MiAweicgfV0sXG4gIHBlcnNvbjogW3sgdHlwZTogJ2NpcmNsZScsIGN4OiAnMTInLCBjeTogJzcnLCByOiAnNCcgfV0sXG4gIGVudmVsb3BlOiBbeyB0eXBlOiAncGF0aCcsIGQ6ICdtMjIgNi0xMCA3TDIgNicgfV0sXG4gIGluZm9DaXJjbGU6IFt7IHR5cGU6ICdjaXJjbGUnLCBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcgfV0sXG4gIGNoZWNrU3F1YXJlOiBbeyB0eXBlOiAncmVjdCcsIHg6ICczJywgeTogJzMnLCB3aWR0aDogJzE4JywgaGVpZ2h0OiAnMTgnLCByeDogJzInIH1dLFxuICBzcXVhcmU6IFt7IHR5cGU6ICdyZWN0JywgeDogJzMnLCB5OiAnMycsIHdpZHRoOiAnMTgnLCBoZWlnaHQ6ICcxOCcsIHJ4OiAnMicgfV0sXG4gIGRhc2hTcXVhcmU6IFt7IHR5cGU6ICdyZWN0JywgeDogJzMnLCB5OiAnMycsIHdpZHRoOiAnMTgnLCBoZWlnaHQ6ICcxOCcsIHJ4OiAnMicgfV0sXG4gIHBlb3BsZTogW3sgdHlwZTogJ2NpcmNsZScsIGN4OiAnOScsIGN5OiAnNycsIHI6ICc0JyB9LCB7IHR5cGU6ICdwYXRoJywgZDogJ00zIDIxdi0yYTQgNCAwIDAgMSA0LTRoNGE0IDQgMCAwIDEgNCA0djInIH0sIHsgdHlwZTogJ3BhdGgnLCBkOiAnTTE2IDMuMTNhNCA0IDAgMCAxIDAgNy43NScgfSwgeyB0eXBlOiAncGF0aCcsIGQ6ICdNMjEgMjF2LTJhNCA0IDAgMCAwLTMtMy44NScgfV0sXG4gIGJveFNlYW06IFt7IHR5cGU6ICdwYXRoJywgZDogJ00yMSA4LjV2N2MwIC42LS4yIDEuMi0uNiAxLjdsLTcgNGMtLjMuMi0uNi4zLTEgLjMtLjMgMC0uNy0uMS0xLS4zbC03LTRjLS40LS41LS42LTEuMS0uNi0xLjd2LTdjMC0uNi4yLTEuMi42LTEuN2w3LTRjLjYtLjQgMS40LS40IDIgMGw3IDRjLjQuNS42IDEuMS42IDEuN3onIH0sIHsgdHlwZTogJ3BhdGgnLCBkOiAnTTMuMyA3TDEyIDEybDguNy01TTEyIDIyLjVWMTInIH1dLFxuICBwZXJzb25CYWRnZTogW3sgdHlwZTogJ2NpcmNsZScsIGN4OiAnMTInLCBjeTogJzgnLCByOiAnNCcgfSwgeyB0eXBlOiAncmVjdCcsIHg6ICc4JywgeTogJzE0Jywgd2lkdGg6ICc4JywgaGVpZ2h0OiAnNicsIHJ4OiAnMScgfSwgeyB0eXBlOiAncGF0aCcsIGQ6ICdNMTAgMTdoNCcgfV0sXG4gIGxpc3RUYXNrOiBbeyB0eXBlOiAncGF0aCcsIGQ6ICdNOSA2aDExTTkgMTJoMTFNOSAxOGgxMScgfSwgeyB0eXBlOiAnY2lyY2xlJywgY3g6ICc1JywgY3k6ICc2JywgcjogJzEnLCBmaWxsOiAnY29sb3InIH0sIHsgdHlwZTogJ2NpcmNsZScsIGN4OiAnNScsIGN5OiAnMTInLCByOiAnMScsIGZpbGw6ICdjb2xvcicgfSwgeyB0eXBlOiAnY2lyY2xlJywgY3g6ICc1JywgY3k6ICcxOCcsIHI6ICcxJywgZmlsbDogJ2NvbG9yJyB9XSxcbiAgc2h1ZmZsZTogW10sXG4gIGNwdTogW3sgdHlwZTogJ3JlY3QnLCB4OiAnNicsIHk6ICc2Jywgd2lkdGg6ICcxMicsIGhlaWdodDogJzEyJywgcng6ICcxJyB9LCB7IHR5cGU6ICdyZWN0JywgeDogJzknLCB5OiAnOScsIHdpZHRoOiAnNicsIGhlaWdodDogJzYnIH0sIHsgdHlwZTogJ3BhdGgnLCBkOiAnTTkgMnY0TTE1IDJ2NE05IDE4djRNMTUgMTh2NE0yIDloNE0yIDE1aDRNMTggOWg0TTE4IDE1aDQnIH1dLFxuICBib3g6IFt7IHR5cGU6ICdwYXRoJywgZDogJ00xMiAyLjdMMy4zIDd2OS4zbDguNyA1IDguNy01VjdMMTIgMi43eicgfSwgeyB0eXBlOiAncGF0aCcsIGQ6ICdNMTIgMjJWMTJNMy4zIDdMMTIgMTJsOC43LTUnIH1dLFxuICBiZWxsOiBbXSxcbiAgbWVzc2FnZTogW10sXG4gIHNlbmQ6IFtdLFxuICBmaWxlOiBbeyB0eXBlOiAncGF0aCcsIGQ6ICdNMTMgMnY3aDcnIH1dLFxuICBmb2xkZXI6IFtdLFxuICBzYXZlOiBbeyB0eXBlOiAncGF0aCcsIGQ6ICdNMTUgM3Y2aDRNOSAyMXYtOGg2djgnIH1dLFxuICBwcmludDogW3sgdHlwZTogJ3JlY3QnLCB4OiAnNicsIHk6ICcxNCcsIHdpZHRoOiAnMTInLCBoZWlnaHQ6ICc4Jywgcng6ICcxJyB9XSxcbiAgY2xvY2s6IFt7IHR5cGU6ICdjaXJjbGUnLCBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcgfV0sXG4gIGNhbGVuZGFyOiBbeyB0eXBlOiAncmVjdCcsIHg6ICczJywgeTogJzQnLCB3aWR0aDogJzE4JywgaGVpZ2h0OiAnMTgnLCByeDogJzInIH1dLFxuICB0aW1lcjogW3sgdHlwZTogJ2NpcmNsZScsIGN4OiAnMTInLCBjeTogJzEzJywgcjogJzknIH0sIHsgdHlwZTogJ3BhdGgnLCBkOiAnTTkgMmg2JyB9XSxcbiAgbG9jazogW10sXG4gIHVubG9jazogW10sXG4gIGNoYXJ0OiBbXSxcbiAgdGFibGU6IFtdLFxuICBkYXRhYmFzZTogW10sXG4gIGhvbWU6IFt7IHR5cGU6ICdwYXRoJywgZDogJ005IDIyVjEyaDZ2MTAnIH1dLFxuICBtZW51OiBbXSxcbiAgYXJyb3dMZWZ0OiBbXSxcbiAgYXJyb3dSaWdodDogW10sXG4gIGNvcHk6IFt7IHR5cGU6ICdyZWN0JywgeDogJzQnLCB5OiAnOCcsIHdpZHRoOiAnMTInLCBoZWlnaHQ6ICcxMicsIHJ4OiAnMicgfV0sXG4gIGZpbHRlcjogW10sXG4gIHNvcnQ6IFtdLFxuICBoZWxwOiBbeyB0eXBlOiAnY2lyY2xlJywgY3g6ICcxMicsIGN5OiAnMTInLCByOiAnMTAnIH1dLFxuICB3YXJuaW5nOiBbeyB0eXBlOiAnY2lyY2xlJywgY3g6ICcxMicsIGN5OiAnMTInLCByOiAnMTAnIH0sIHsgdHlwZTogJ2NpcmNsZScsIGN4OiAnMTInLCBjeTogJzE3JywgcjogJzAuNScsIGZpbGw6ICdjb2xvcicgfV0sXG4gIGRlZmF1bHQ6IFt7IHR5cGU6ICdjaXJjbGUnLCBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcgfV0sXG4gIGVkaXQ6IFt7IHR5cGU6ICdyZWN0JywgeDogJzUnLCB5OiAnMTknLCB3aWR0aDogJzE0JywgaGVpZ2h0OiAnMicsIHJ4OiAnMScgfV0sXG59O1xuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi9pY29uL2ljb24udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElDT05fTkFNRVMgfSBmcm9tICcuL2ljb24uY29uc3RhbnRzJztcblxuZXhwb3J0IHR5cGUgSWNvblR5cGUgPSAodHlwZW9mIElDT05fTkFNRVMpW251bWJlcl07XG5leHBvcnQgdHlwZSBDb2xvclR5cGUgPSAncHJpbWFyeScgfCAnc2Vjb25kYXJ5JyB8ICd3YXJuJyB8ICdzdWNjZXNzJztcbmV4cG9ydCB0eXBlIEJ1dHRvblR5cGUgPSAnYnV0dG9uJyB8ICdzdWJtaXQnIHwgJ3Jlc2V0JztcblxuZXhwb3J0IGludGVyZmFjZSBTaGFwZUF0dHJpYnV0ZXMge1xuICB0eXBlOiAnY2lyY2xlJyB8ICdyZWN0JyB8ICdwYXRoJztcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyO1xufVxuIl19
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export function transformToBoolean(val) {
|
|
2
|
+
return val !== null && val !== undefined && val !== false && val !== 'false';
|
|
3
|
+
}
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi9pY29uL2ljb24udXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEdBQXdDO0lBQ3pFLE9BQU8sR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSyxLQUFLLElBQUksR0FBRyxLQUFLLE9BQU8sQ0FBQztBQUMvRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybVRvQm9vbGVhbih2YWw6IGJvb2xlYW4gfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gIHJldHVybiB2YWwgIT09IG51bGwgJiYgdmFsICE9PSB1bmRlZmluZWQgJiYgdmFsICE9PSBmYWxzZSAmJiB2YWwgIT09ICdmYWxzZSc7XG59XG4iXX0=
|
|
@@ -5,7 +5,7 @@ import * as i0 from "@angular/core";
|
|
|
5
5
|
export class C80StatCardComponent {
|
|
6
6
|
cards = [];
|
|
7
7
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: C80StatCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: C80StatCardComponent, isStandalone: true, selector: "c80-stat-card", inputs: { cards: "cards" }, ngImport: i0, template: "<div class=\"stats-section py-4\">\r\n @for (card of cards; track card.text) {\r\n <div class=\"stat-card\" [style.border-left-color]=\"card.color\">\r\n <div class=\"stat-card-content\">\r\n <div class=\"stat-content\">\r\n <c80-icon [icon]=\"card.icon\" [color]=\"'secondary'\" [size]=\"1.1\"></c80-icon>\r\n <div class=\"stat-info\">\r\n <div class=\"stat-number\">{{ card.count }}</div>\r\n <div class=\"stat-label\">{{ card.text }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>", styles: [".stats-section{display:flex;flex-direction:row;flex-wrap:wrap;gap:16px}.stats-section .stat-card{flex:1;min-width:200px;box-shadow:0 2px 8px #0000001a;transition:box-shadow .3s ease;border-left:4px solid transparent;background:#fff;color:#000000de;border-radius:4px;display:block;position:relative;padding:0;overflow:hidden}.stats-section .stat-card:hover{box-shadow:0 4px 12px #00000026}.stats-section .stat-card-content{display:block;padding:16px}.stat-content{display:flex;align-items:center;gap:12px}.stat-info .stat-number{font-size:24px;font-weight:700;line-height:1;margin-bottom:4px;color:#6b7280}.stat-info .stat-label{font-size:12px;color:#666;text-transform:uppercase;letter-spacing:.5px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: C80IconComponent, selector: "c80-icon", inputs: ["icon", "color", "customColor", "disabled", "size", "button", "type"], outputs: ["iconClick"] }] });
|
|
8
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: C80StatCardComponent, isStandalone: true, selector: "c80-stat-card", inputs: { cards: "cards" }, ngImport: i0, template: "<div class=\"stats-section py-4\">\r\n @for (card of cards; track card.text) {\r\n <div class=\"stat-card\" [style.border-left-color]=\"card.color\">\r\n <div class=\"stat-card-content\">\r\n <div class=\"stat-content\">\r\n <c80-icon [icon]=\"card.icon\" [color]=\"'secondary'\" [size]=\"1.1\"></c80-icon>\r\n <div class=\"stat-info\">\r\n <div class=\"stat-number\">{{ card.count }}</div>\r\n <div class=\"stat-label\">{{ card.text }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>", styles: [".stats-section{display:flex;flex-direction:row;flex-wrap:wrap;gap:16px}.stats-section .stat-card{flex:1;min-width:200px;box-shadow:0 2px 8px #0000001a;transition:box-shadow .3s ease;border-left:4px solid transparent;background:#fff;color:#000000de;border-radius:4px;display:block;position:relative;padding:0;overflow:hidden}.stats-section .stat-card:hover{box-shadow:0 4px 12px #00000026}.stats-section .stat-card-content{display:block;padding:16px}.stat-content{display:flex;align-items:center;gap:12px}.stat-info .stat-number{font-size:24px;font-weight:700;line-height:1;margin-bottom:4px;color:#6b7280}.stat-info .stat-label{font-size:12px;color:#666;text-transform:uppercase;letter-spacing:.5px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: C80IconComponent, selector: "c80-icon", inputs: ["icon", "color", "customColor", "disabled", "size", "button", "border", "type", "textLeft", "textRight"], outputs: ["iconClick"] }] });
|
|
9
9
|
}
|
|
10
10
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: C80StatCardComponent, decorators: [{
|
|
11
11
|
type: Component,
|
|
@@ -422,7 +422,7 @@ import * as i0 from "@angular/core";
|
|
|
422
422
|
this.uploadAction.emit(row);
|
|
423
423
|
}
|
|
424
424
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: C80TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
425
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: C80TableComponent, isStandalone: true, selector: "c80-table", inputs: { data$: "data$", columns: "columns", inputValues$: "inputValues$", size: "size", multiple: "multiple", noConfirm: ["noConfirm", "noConfirm", (value) => value === '' || value === true || value === 'true'], customActionIcon: "customActionIcon", customActionTooltip: "customActionTooltip" }, outputs: { createAction: "createAction", updateAction: "updateAction", deleteAction: "deleteAction", cancelAction: "cancelAction", viewAction: "viewAction", uploadAction: "uploadAction", getRowButtonAction: "getRowButtonAction", customAction: "customAction", moveUpAction: "moveUpAction", moveDownAction: "moveDownAction", enableAction: "enableAction", searchTerm: "searchTerm", errorEvent: "errorEvent", selectable: "selectable" }, ngImport: i0, template: "<div class=\"table-responsive\" [style.max-height]=\"getTableMaxHeight()\" [style.overflow-y]=\"size > 0 ? 'auto' : 'visible'\">\n <!-- Search Bar -->\n @if (hasSearchTermListener()) {\n <div class=\"search-container\">\n <div class=\"search-input-wrapper\">\n <div class=\"input-group\">\n <span class=\"input-group-text\">\n <c80-icon icon=\"search\" [size]=\".8\"></c80-icon>\n </span>\n <input type=\"text\" class=\"form-control search-input\" placeholder=\"Buscar...\" [value]=\"searchValue()\" (input)=\"onSearchInput($event)\" aria-label=\"Buscar en la tabla\" />\n @if (searchValue()) {\n <button class=\"btn btn-outline-secondary btn-borrar\" type=\"button\" (click)=\"clearSearch()\" title=\"Limpiar b\u00FAsqueda\">\n <c80-icon icon=\"cancel\" [size]=\".7\"></c80-icon>\n </button>\n }\n </div>\n </div>\n </div>\n }\n\n <table class=\"table table-bordered table-hover align-middle\">\n <thead class=\"thead table-light sticky-header\">\n <tr>\n @if (hasSelectableListener() && data().length !== 0) {\n <th class=\"text-center selection-column\">\n @if (multiple) {\n <input type=\"checkbox\" [checked]=\"selectAllChecked()\" [indeterminate]=\"selectAllIndeterminate()\" (change)=\"toggleSelectAll()\" aria-label=\"Seleccionar todo\" />\n }\n </th>\n }\n @for (col of columns; track col) {\n @if (isColumnVisibleInHeader(col)) {\n @if (col.type === 'boolean') {\n <th class=\"text-center boolean-column\">{{ col.label }}</th>\n }\n @else if (col.type === 'number') {\n <th class=\"text-center number-column\">{{ col.label }}</th>\n }\n @else {\n <th>{{ col.label }}</th>\n }\n }\n }\n @if (hasCreateActionListener() || hasUpdateActionListener() || hasDeleteActionListener() ||\n hasCancelActionListener() || hasViewActionListener() || hasUploadActionListener() || hasGetRowButtonListener() ||\n hasMoveUpActionListener() || hasMoveDownActionListener()) {\n <th class=\"table-actions-header\">\n <div class=\"actions-wrapper\">\n <span>Actions</span>\n @if (hasCreateActionListener()) {\n <c80-icon button icon=\"add\" [disabled]=\"creating()\" title=\"Agregar\" [size]=\".6\" (iconClick)=\"startCreate()\"></c80-icon>\n }\n </div>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of data(); track trackById(i, row); let i = $index) {\n <tr>\n @if (hasSelectableListener() && data().length !== 0) {\n <td class=\"text-center selection-column\">\n <input type=\"checkbox\" [checked]=\"isItemSelected(row)\" (change)=\"toggleItemSelection(row)\" [attr.aria-label]=\"'Seleccionar fila ' + (i + 1)\" />\n </td>\n }\n @for (col of columns; track col) {\n @if (isColumnVisibleForRow(col, row)) {\n @if (col.type === 'boolean') {\n <td class=\"text-center boolean-column\">\n @if (editing() === row['id'] && !col.readOnly) {\n <input type=\"checkbox\" [checked]=\"!!editRow()?.[col.accessor]\" (change)=\"onEditInput($event, col.accessor, col)\" [attr.aria-label]=\"col.label\" />\n }\n @else {\n @if (getCellValue(row, col.accessor) === true) {\n <c80-icon icon=\"check\" [size]=\".7\"></c80-icon>\n <br />\n }\n @else if (getCellValue(row, col.accessor) === false) {\n <c80-icon icon=\"cancel\" [size]=\".7\"></c80-icon>\n <br />\n }\n }\n </td>\n }\n @else if (col.type === 'number') {\n <td class=\"text-center number-column\">\n @if (editing() === row['id'] && !col.readOnly) {\n <input class=\"form-control form-control-sm\" type=\"number\" [value]=\"editRow()?.[col.accessor] ?? ''\" [placeholder]=\"col.label\" (input)=\"onEditInput($event, col.accessor, col)\" />\n }\n @else {\n <span [style.color]=\"getCellColor(getCellValue(row, col.accessor), col)\">{{ getDisplayValue(getCellValue(row,\n col.accessor)) }}</span>\n }\n </td>\n }\n @else {\n <td>\n @if (editing() === row['id'] && !col.readOnly) {\n @if (col.type === 'enum') {\n <select class=\"form-control form-control-sm\" [value]=\"editRow()?.[col.accessor] ?? ''\" (change)=\"onEditInput($event, col.accessor, col)\">\n <option value=\"\">{{ col.label }}</option>\n @for (option of getEnumOptions(col); track option.value) {\n <option [value]=\"option.value\">{{ option.label }}</option>\n }\n </select>\n }\n @else {\n <input class=\"form-control form-control-sm\" [type]=\"col.type === 'password' ? 'password' : 'text'\" [value]=\"editRow()?.[col.accessor] ?? ''\" [placeholder]=\"col.label\" (input)=\"onEditInput($event, col.accessor, col)\" />\n }\n }\n @else {\n @if (col.type === 'password') {\n <span [style.color]=\"getCellColor(getCellValue(row, col.accessor), col)\">******</span>\n }\n @else if (col.type === 'enum') {\n <span [style.color]=\"getCellColor(getCellValue(row, col.accessor), col)\">{{\n getEnumDisplayValue(getCellValue(row, col.accessor), col)\n }}</span>\n }\n @else if (getCellValue(row, col.accessor) === true) {\n <c80-icon icon=\"check\" [size]=\".7\"></c80-icon>\n }\n @else if (getCellValue(row, col.accessor) === false) {\n <c80-icon icon=\"cancel\" [size]=\".7\"></c80-icon>\n }\n @else {\n <span [style.color]=\"getCellColor(getCellValue(row, col.accessor), col)\">{{ getDisplayValue(getCellValue(row,\n col.accessor)) }}</span>\n }\n }\n </td>\n }\n }\n }\n @if (hasCreateActionListener() || hasUpdateActionListener() || hasDeleteActionListener() ||\n hasCancelActionListener() || hasViewActionListener() || hasUploadActionListener() || hasGetRowButtonListener() ||\n hasMoveUpActionListener() || hasMoveDownActionListener()) {\n <td class=\"text-center actions-cell\">\n <div class=\"actions-container\">\n @if (editing() === row['id']) {\n <c80-icon button icon=\"check\" title=\"Guardar\" (iconClick)=\"saveEdit(row)\" [size]=\".7\"></c80-icon>\n <c80-icon button icon=\"cancel\" color=\"warn\" title=\"Cancelar\" (iconClick)=\"cancelEdit()\" [size]=\".7\"></c80-icon>\n }\n @else {\n @if (hasUpdateActionListener()) {\n <c80-icon button icon=\"edit\" title=\"Editar\" (iconClick)=\"onEdit(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasCancelActionListener()) {\n <c80-icon button icon=\"cancelCircle\" color=\"secondary\" title=\"Cancelar\" (iconClick)=\"onCancel(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasViewActionListener()) {\n <c80-icon button icon=\"view\" color=\"primary\" title=\"Ver\" (iconClick)=\"onView(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasUploadActionListener()) {\n <c80-icon button icon=\"upload\" color=\"primary\" title=\"Subir\" (iconClick)=\"onUpload(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasGetRowButtonListener()) {\n <c80-icon button icon=\"get\" color=\"success\" title=\"Vincular\" (iconClick)=\"onGetRowButton(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasCustomActionListener()) {\n <c80-icon button [icon]=\"customActionIcon\" color=\"primary\" [title]=\"customActionTooltip\" (iconClick)=\"onCustomAction(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasMoveUpActionListener()) {\n <c80-icon button icon=\"arrowUp\" color=\"secondary\" title=\"Mover arriba\" (iconClick)=\"onMoveUp(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasMoveDownActionListener()) {\n <c80-icon button icon=\"arrowDown\" color=\"secondary\" title=\"Mover abajo\" (iconClick)=\"onMoveDown(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasEnableActionListener()) {\n <c80-icon button [icon]=\"getCellValue(row, 'enabled') ? 'toggleOn' : 'toggleOff'\" [color]=\"getCellValue(row, 'enabled') ? 'success' : 'secondary'\" [title]=\"getCellValue(row, 'enabled') ? 'Deshabilitar' : 'Habilitar'\"\n (iconClick)=\"onEnable(row)\" [size]=\".7\">\n </c80-icon>\n }\n @if (hasDeleteActionListener()) {\n <c80-icon button icon=\"delete\" color=\"warn\" title=\"Borrar\" (iconClick)=\"onDelete(row)\" [size]=\".7\"></c80-icon>\n }\n }\n </div>\n </td>\n }\n </tr>\n }\n @if (creating() && hasCreateActionListener()) {\n <tr>\n @if (hasSelectableListener() && data().length !== 0) {\n <td class=\"text-center selection-column\">\n <!-- Empty cell for alignment -->\n </td>\n }\n @for (col of columns; track col) {\n @if (isColumnVisible(col, true)) {\n @if (col.type === 'boolean') {\n <td class=\"text-center\">\n @if (!col.readOnly) {\n <input type=\"checkbox\" [checked]=\"!!newRow()?.[col.accessor]\" (change)=\"onInput($event, col.accessor, col)\" [attr.aria-label]=\"col.label\" />\n }\n @else {\n <!-- ReadOnly boolean column in create mode shows empty -->\n <span class=\"text-muted\">-</span>\n }\n </td>\n } @else if (col.type === 'number') {\n <td class=\"text-center number-column\">\n @if (!col.readOnly) {\n <input class=\"form-control form-control-sm\" type=\"number\" [value]=\"newRow()?.[col.accessor] ?? ''\" [placeholder]=\"col.label\" (input)=\"onInput($event, col.accessor, col)\" />\n }\n @else {\n <!-- ReadOnly number column in create mode shows empty -->\n <span class=\"text-muted\">-</span>\n }\n </td>\n } @else {\n <td>\n @if (!col.readOnly) {\n @if (col.type === 'enum') {\n <select class=\"form-control form-control-sm\" [value]=\"newRow()?.[col.accessor] ?? ''\" (change)=\"onInput($event, col.accessor, col)\">\n <option value=\"\">{{ col.label }}</option>\n @for (option of getEnumOptions(col); track option.value) {\n <option [value]=\"option.value\">{{ option.label }}</option>\n }\n </select>\n }\n @else {\n <input class=\"form-control form-control-sm\" type=\"text\" [value]=\"newRow()?.[col.accessor] ?? ''\" [placeholder]=\"col.label\" (input)=\"onInput($event, col.accessor, col)\" />\n }\n }\n @else {\n <!-- ReadOnly column in create mode shows empty -->\n <span class=\"text-muted\">-</span>\n }\n </td>\n }\n }\n }\n <td class=\"text-center actions-cell\">\n <div class=\"actions-container\">\n <c80-icon button icon=\"check\" title=\"Guardar\" (iconClick)=\"saveCreate()\" [size]=\".7\"></c80-icon>\n <c80-icon button icon=\"cancel\" color=\"warn\" title=\"Cancelar\" (iconClick)=\"cancelCreate()\" [size]=\".7\"></c80-icon>\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n @if (data().length === 0 && !creating()) {\n <div class=\"text-center text-muted py-3 small\">\n No hay datos para mostrar.\n </div>\n }\n</div>\n\n<c80-modal></c80-modal>", styles: ["@charset \"UTF-8\";input[type=checkbox]{width:1.3rem!important;height:1.3rem!important;accent-color:rgba(226,0,0,.7647058824);background:#fff;margin:0 .25rem;vertical-align:middle;cursor:pointer}.table-responsive{width:100%;overflow-x:auto}.table-responsive .search-container{margin-bottom:-.06rem}.table-responsive .search-container .search-input-wrapper .input-group .btn-borrar{border-bottom-right-radius:0;border-color:#dee2e6}.table-responsive .search-container .search-input-wrapper .input-group .input-group-text{background-color:#f8f9fa;border-color:#dee2e6;border-bottom-left-radius:0;color:#6c757d;width:56px}.table-responsive .search-container .search-input-wrapper .input-group .input-group-text c80-icon{display:flex;align-items:center;justify-content:center;padding-bottom:.2rem}.table-responsive .search-container .search-input-wrapper .input-group .search-input{border-color:#dee2e6;border-bottom-right-radius:0;font-size:.95rem;outline:none!important}.table-responsive .search-container .search-input-wrapper .input-group .search-input:focus{outline:none!important}.table-responsive .search-container .search-input-wrapper .input-group .search-input::placeholder{color:#999;font-style:italic}.table-responsive .table{min-width:0px;margin-bottom:.5rem}.table-responsive .table .sticky-header{position:sticky;top:0;z-index:10;background-color:#f8f9fa!important}.table-responsive .table .sticky-header .table-actions-header{display:table-cell;vertical-align:middle;padding:.2rem .6rem!important;background-color:#f8f9fa!important}.table-responsive .table .sticky-header .actions-wrapper{display:flex;align-items:center;justify-content:center;gap:.5rem;height:100%}.table-responsive .table .sticky-header th{max-height:31px!important;vertical-align:middle!important;padding:.2rem .6rem!important;font-size:small!important;background-color:#f8f9fa!important;border-bottom:2px solid #dee2e6}.table-responsive .table tbody td{height:35px!important;min-height:35px!important;max-height:35px!important;vertical-align:middle!important;padding:.2rem .8rem!important;font-size:small}.table-responsive .table tbody tr{height:35px!important;min-height:35px!important;max-height:35px!important;cursor:pointer}.table-responsive .table tbody tr:hover{background-color:#f5f5f5}.table-responsive .table tbody input{border:1px solid rgba(34,0,255,.37);height:100%!important;font-size:smaller!important}.table-responsive .table tbody input[type=text],.table-responsive .table tbody input:not([type]){width:100%!important}.table-responsive .table tbody input[type=number]{min-width:80px!important;width:80px!important;text-align:center}.table-responsive .table thead th.boolean-column,.table-responsive .table tbody td.boolean-column,.table-responsive .table thead th.selection-column,.table-responsive .table tbody td.selection-column,.table-responsive .table thead th.table-actions-header,.table-responsive .table tbody td.table-actions-header{width:1%;white-space:nowrap}.table-responsive .table thead th.number-column,.table-responsive .table tbody td.number-column{width:1%;white-space:nowrap;text-align:center}.table-responsive .table thead th.number-column input[type=number],.table-responsive .table tbody td.number-column input[type=number]{min-width:80px!important;width:80px!important;text-align:center}.table-responsive .table .actions-cell{white-space:nowrap;padding:0!important}.table-responsive .table .actions-container{display:flex;flex-direction:row;justify-content:center;align-items:center;width:100%;height:100%}\n"], dependencies: [{ kind: "component", type: C80IconComponent, selector: "c80-icon", inputs: ["icon", "color", "customColor", "disabled", "size", "button", "type"], outputs: ["iconClick"] }, { kind: "component", type: C80ModalComponent, selector: "c80-modal" }] });
|
|
425
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: C80TableComponent, isStandalone: true, selector: "c80-table", inputs: { data$: "data$", columns: "columns", inputValues$: "inputValues$", size: "size", multiple: "multiple", noConfirm: ["noConfirm", "noConfirm", (value) => value === '' || value === true || value === 'true'], customActionIcon: "customActionIcon", customActionTooltip: "customActionTooltip" }, outputs: { createAction: "createAction", updateAction: "updateAction", deleteAction: "deleteAction", cancelAction: "cancelAction", viewAction: "viewAction", uploadAction: "uploadAction", getRowButtonAction: "getRowButtonAction", customAction: "customAction", moveUpAction: "moveUpAction", moveDownAction: "moveDownAction", enableAction: "enableAction", searchTerm: "searchTerm", errorEvent: "errorEvent", selectable: "selectable" }, ngImport: i0, template: "<div class=\"table-responsive\" [style.max-height]=\"getTableMaxHeight()\" [style.overflow-y]=\"size > 0 ? 'auto' : 'visible'\">\n <!-- Search Bar -->\n @if (hasSearchTermListener()) {\n <div class=\"search-container\">\n <div class=\"search-input-wrapper\">\n <div class=\"input-group\">\n <span class=\"input-group-text\">\n <c80-icon icon=\"search\" [size]=\".8\"></c80-icon>\n </span>\n <input type=\"text\" class=\"form-control search-input\" placeholder=\"Buscar...\" [value]=\"searchValue()\" (input)=\"onSearchInput($event)\" aria-label=\"Buscar en la tabla\" />\n @if (searchValue()) {\n <button class=\"btn btn-outline-secondary btn-borrar\" type=\"button\" (click)=\"clearSearch()\" title=\"Limpiar b\u00FAsqueda\">\n <c80-icon icon=\"cancel\" [size]=\".7\"></c80-icon>\n </button>\n }\n </div>\n </div>\n </div>\n }\n\n <table class=\"table table-bordered table-hover align-middle\">\n <thead class=\"thead table-light sticky-header\">\n <tr>\n @if (hasSelectableListener() && data().length !== 0) {\n <th class=\"text-center selection-column\">\n @if (multiple) {\n <input type=\"checkbox\" [checked]=\"selectAllChecked()\" [indeterminate]=\"selectAllIndeterminate()\" (change)=\"toggleSelectAll()\" aria-label=\"Seleccionar todo\" />\n }\n </th>\n }\n @for (col of columns; track col) {\n @if (isColumnVisibleInHeader(col)) {\n @if (col.type === 'boolean') {\n <th class=\"text-center boolean-column\">{{ col.label }}</th>\n }\n @else if (col.type === 'number') {\n <th class=\"text-center number-column\">{{ col.label }}</th>\n }\n @else {\n <th>{{ col.label }}</th>\n }\n }\n }\n @if (hasCreateActionListener() || hasUpdateActionListener() || hasDeleteActionListener() ||\n hasCancelActionListener() || hasViewActionListener() || hasUploadActionListener() || hasGetRowButtonListener() ||\n hasMoveUpActionListener() || hasMoveDownActionListener()) {\n <th class=\"table-actions-header\">\n <div class=\"actions-wrapper\">\n <span>Actions</span>\n @if (hasCreateActionListener()) {\n <c80-icon button icon=\"add\" [disabled]=\"creating()\" title=\"Agregar\" [size]=\".6\" (iconClick)=\"startCreate()\"></c80-icon>\n }\n </div>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of data(); track trackById(i, row); let i = $index) {\n <tr>\n @if (hasSelectableListener() && data().length !== 0) {\n <td class=\"text-center selection-column\">\n <input type=\"checkbox\" [checked]=\"isItemSelected(row)\" (change)=\"toggleItemSelection(row)\" [attr.aria-label]=\"'Seleccionar fila ' + (i + 1)\" />\n </td>\n }\n @for (col of columns; track col) {\n @if (isColumnVisibleForRow(col, row)) {\n @if (col.type === 'boolean') {\n <td class=\"text-center boolean-column\">\n @if (editing() === row['id'] && !col.readOnly) {\n <input type=\"checkbox\" [checked]=\"!!editRow()?.[col.accessor]\" (change)=\"onEditInput($event, col.accessor, col)\" [attr.aria-label]=\"col.label\" />\n }\n @else {\n @if (getCellValue(row, col.accessor) === true) {\n <c80-icon icon=\"check\" [size]=\".7\"></c80-icon>\n <br />\n }\n @else if (getCellValue(row, col.accessor) === false) {\n <c80-icon icon=\"cancel\" [size]=\".7\"></c80-icon>\n <br />\n }\n }\n </td>\n }\n @else if (col.type === 'number') {\n <td class=\"text-center number-column\">\n @if (editing() === row['id'] && !col.readOnly) {\n <input class=\"form-control form-control-sm\" type=\"number\" [value]=\"editRow()?.[col.accessor] ?? ''\" [placeholder]=\"col.label\" (input)=\"onEditInput($event, col.accessor, col)\" />\n }\n @else {\n <span [style.color]=\"getCellColor(getCellValue(row, col.accessor), col)\">{{ getDisplayValue(getCellValue(row,\n col.accessor)) }}</span>\n }\n </td>\n }\n @else {\n <td>\n @if (editing() === row['id'] && !col.readOnly) {\n @if (col.type === 'enum') {\n <select class=\"form-control form-control-sm\" [value]=\"editRow()?.[col.accessor] ?? ''\" (change)=\"onEditInput($event, col.accessor, col)\">\n <option value=\"\">{{ col.label }}</option>\n @for (option of getEnumOptions(col); track option.value) {\n <option [value]=\"option.value\">{{ option.label }}</option>\n }\n </select>\n }\n @else {\n <input class=\"form-control form-control-sm\" [type]=\"col.type === 'password' ? 'password' : 'text'\" [value]=\"editRow()?.[col.accessor] ?? ''\" [placeholder]=\"col.label\" (input)=\"onEditInput($event, col.accessor, col)\" />\n }\n }\n @else {\n @if (col.type === 'password') {\n <span [style.color]=\"getCellColor(getCellValue(row, col.accessor), col)\">******</span>\n }\n @else if (col.type === 'enum') {\n <span [style.color]=\"getCellColor(getCellValue(row, col.accessor), col)\">{{\n getEnumDisplayValue(getCellValue(row, col.accessor), col)\n }}</span>\n }\n @else if (getCellValue(row, col.accessor) === true) {\n <c80-icon icon=\"check\" [size]=\".7\"></c80-icon>\n }\n @else if (getCellValue(row, col.accessor) === false) {\n <c80-icon icon=\"cancel\" [size]=\".7\"></c80-icon>\n }\n @else {\n <span [style.color]=\"getCellColor(getCellValue(row, col.accessor), col)\">{{ getDisplayValue(getCellValue(row,\n col.accessor)) }}</span>\n }\n }\n </td>\n }\n }\n }\n @if (hasCreateActionListener() || hasUpdateActionListener() || hasDeleteActionListener() ||\n hasCancelActionListener() || hasViewActionListener() || hasUploadActionListener() || hasGetRowButtonListener() ||\n hasMoveUpActionListener() || hasMoveDownActionListener()) {\n <td class=\"text-center actions-cell\">\n <div class=\"actions-container\">\n @if (editing() === row['id']) {\n <c80-icon button icon=\"check\" title=\"Guardar\" (iconClick)=\"saveEdit(row)\" [size]=\".7\"></c80-icon>\n <c80-icon button icon=\"cancel\" color=\"warn\" title=\"Cancelar\" (iconClick)=\"cancelEdit()\" [size]=\".7\"></c80-icon>\n }\n @else {\n @if (hasUpdateActionListener()) {\n <c80-icon button icon=\"edit\" title=\"Editar\" (iconClick)=\"onEdit(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasCancelActionListener()) {\n <c80-icon button icon=\"cancelCircle\" color=\"secondary\" title=\"Cancelar\" (iconClick)=\"onCancel(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasViewActionListener()) {\n <c80-icon button icon=\"view\" color=\"primary\" title=\"Ver\" (iconClick)=\"onView(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasUploadActionListener()) {\n <c80-icon button icon=\"upload\" color=\"primary\" title=\"Subir\" (iconClick)=\"onUpload(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasGetRowButtonListener()) {\n <c80-icon button icon=\"get\" color=\"success\" title=\"Vincular\" (iconClick)=\"onGetRowButton(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasCustomActionListener()) {\n <c80-icon button [icon]=\"customActionIcon\" color=\"primary\" [title]=\"customActionTooltip\" (iconClick)=\"onCustomAction(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasMoveUpActionListener()) {\n <c80-icon button icon=\"arrowUp\" color=\"secondary\" title=\"Mover arriba\" (iconClick)=\"onMoveUp(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasMoveDownActionListener()) {\n <c80-icon button icon=\"arrowDown\" color=\"secondary\" title=\"Mover abajo\" (iconClick)=\"onMoveDown(row)\" [size]=\".7\"></c80-icon>\n }\n @if (hasEnableActionListener()) {\n <c80-icon button [icon]=\"getCellValue(row, 'enabled') ? 'toggleOn' : 'toggleOff'\" [color]=\"getCellValue(row, 'enabled') ? 'success' : 'secondary'\" [title]=\"getCellValue(row, 'enabled') ? 'Deshabilitar' : 'Habilitar'\"\n (iconClick)=\"onEnable(row)\" [size]=\".7\">\n </c80-icon>\n }\n @if (hasDeleteActionListener()) {\n <c80-icon button icon=\"delete\" color=\"warn\" title=\"Borrar\" (iconClick)=\"onDelete(row)\" [size]=\".7\"></c80-icon>\n }\n }\n </div>\n </td>\n }\n </tr>\n }\n @if (creating() && hasCreateActionListener()) {\n <tr>\n @if (hasSelectableListener() && data().length !== 0) {\n <td class=\"text-center selection-column\">\n <!-- Empty cell for alignment -->\n </td>\n }\n @for (col of columns; track col) {\n @if (isColumnVisible(col, true)) {\n @if (col.type === 'boolean') {\n <td class=\"text-center\">\n @if (!col.readOnly) {\n <input type=\"checkbox\" [checked]=\"!!newRow()?.[col.accessor]\" (change)=\"onInput($event, col.accessor, col)\" [attr.aria-label]=\"col.label\" />\n }\n @else {\n <!-- ReadOnly boolean column in create mode shows empty -->\n <span class=\"text-muted\">-</span>\n }\n </td>\n } @else if (col.type === 'number') {\n <td class=\"text-center number-column\">\n @if (!col.readOnly) {\n <input class=\"form-control form-control-sm\" type=\"number\" [value]=\"newRow()?.[col.accessor] ?? ''\" [placeholder]=\"col.label\" (input)=\"onInput($event, col.accessor, col)\" />\n }\n @else {\n <!-- ReadOnly number column in create mode shows empty -->\n <span class=\"text-muted\">-</span>\n }\n </td>\n } @else {\n <td>\n @if (!col.readOnly) {\n @if (col.type === 'enum') {\n <select class=\"form-control form-control-sm\" [value]=\"newRow()?.[col.accessor] ?? ''\" (change)=\"onInput($event, col.accessor, col)\">\n <option value=\"\">{{ col.label }}</option>\n @for (option of getEnumOptions(col); track option.value) {\n <option [value]=\"option.value\">{{ option.label }}</option>\n }\n </select>\n }\n @else {\n <input class=\"form-control form-control-sm\" type=\"text\" [value]=\"newRow()?.[col.accessor] ?? ''\" [placeholder]=\"col.label\" (input)=\"onInput($event, col.accessor, col)\" />\n }\n }\n @else {\n <!-- ReadOnly column in create mode shows empty -->\n <span class=\"text-muted\">-</span>\n }\n </td>\n }\n }\n }\n <td class=\"text-center actions-cell\">\n <div class=\"actions-container\">\n <c80-icon button icon=\"check\" title=\"Guardar\" (iconClick)=\"saveCreate()\" [size]=\".7\"></c80-icon>\n <c80-icon button icon=\"cancel\" color=\"warn\" title=\"Cancelar\" (iconClick)=\"cancelCreate()\" [size]=\".7\"></c80-icon>\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n @if (data().length === 0 && !creating()) {\n <div class=\"text-center text-muted py-3 small\">\n No hay datos para mostrar.\n </div>\n }\n</div>\n\n<c80-modal></c80-modal>", styles: ["@charset \"UTF-8\";input[type=checkbox]{width:1.3rem!important;height:1.3rem!important;accent-color:rgba(226,0,0,.7647058824);background:#fff;margin:0 .25rem;vertical-align:middle;cursor:pointer}.table-responsive{width:100%;overflow-x:auto}.table-responsive .search-container{margin-bottom:-.06rem}.table-responsive .search-container .search-input-wrapper .input-group .btn-borrar{border-bottom-right-radius:0;border-color:#dee2e6}.table-responsive .search-container .search-input-wrapper .input-group .input-group-text{background-color:#f8f9fa;border-color:#dee2e6;border-bottom-left-radius:0;color:#6c757d;width:56px}.table-responsive .search-container .search-input-wrapper .input-group .input-group-text c80-icon{display:flex;align-items:center;justify-content:center;padding-bottom:.2rem}.table-responsive .search-container .search-input-wrapper .input-group .search-input{border-color:#dee2e6;border-bottom-right-radius:0;font-size:.95rem;outline:none!important}.table-responsive .search-container .search-input-wrapper .input-group .search-input:focus{outline:none!important}.table-responsive .search-container .search-input-wrapper .input-group .search-input::placeholder{color:#999;font-style:italic}.table-responsive .table{min-width:0px;margin-bottom:.5rem}.table-responsive .table .sticky-header{position:sticky;top:0;z-index:10;background-color:#f8f9fa!important}.table-responsive .table .sticky-header .table-actions-header{display:table-cell;vertical-align:middle;padding:.2rem .6rem!important;background-color:#f8f9fa!important}.table-responsive .table .sticky-header .actions-wrapper{display:flex;align-items:center;justify-content:center;gap:.5rem;height:100%}.table-responsive .table .sticky-header th{max-height:31px!important;vertical-align:middle!important;padding:.2rem .6rem!important;font-size:small!important;background-color:#f8f9fa!important;border-bottom:2px solid #dee2e6}.table-responsive .table tbody td{height:35px!important;min-height:35px!important;max-height:35px!important;vertical-align:middle!important;padding:.2rem .8rem!important;font-size:small}.table-responsive .table tbody tr{height:35px!important;min-height:35px!important;max-height:35px!important;cursor:pointer}.table-responsive .table tbody tr:hover{background-color:#f5f5f5}.table-responsive .table tbody input{border:1px solid rgba(34,0,255,.37);height:100%!important;font-size:smaller!important}.table-responsive .table tbody input[type=text],.table-responsive .table tbody input:not([type]){width:100%!important}.table-responsive .table tbody input[type=number]{min-width:80px!important;width:80px!important;text-align:center}.table-responsive .table thead th.boolean-column,.table-responsive .table tbody td.boolean-column,.table-responsive .table thead th.selection-column,.table-responsive .table tbody td.selection-column,.table-responsive .table thead th.table-actions-header,.table-responsive .table tbody td.table-actions-header{width:1%;white-space:nowrap}.table-responsive .table thead th.number-column,.table-responsive .table tbody td.number-column{width:1%;white-space:nowrap;text-align:center}.table-responsive .table thead th.number-column input[type=number],.table-responsive .table tbody td.number-column input[type=number]{min-width:80px!important;width:80px!important;text-align:center}.table-responsive .table .actions-cell{white-space:nowrap;padding:0!important}.table-responsive .table .actions-container{display:flex;flex-direction:row;justify-content:center;align-items:center;width:100%;height:100%}\n"], dependencies: [{ kind: "component", type: C80IconComponent, selector: "c80-icon", inputs: ["icon", "color", "customColor", "disabled", "size", "button", "border", "type", "textLeft", "textRight"], outputs: ["iconClick"] }, { kind: "component", type: C80ModalComponent, selector: "c80-modal" }] });
|
|
426
426
|
}
|
|
427
427
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: C80TableComponent, decorators: [{
|
|
428
428
|
type: Component,
|
|
@@ -473,4 +473,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
473
473
|
}], selectable: [{
|
|
474
474
|
type: Output
|
|
475
475
|
}] } });
|
|
476
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy91aS9zcmMvbGliL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFlBQVksRUFHWixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFpQixNQUFNLFNBQVMsQ0FBQztBQUMxRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUUzRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVERyxDQVFILE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsdUJBQXVCO0lBQ04sWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNwQyxpQkFBaUIsR0FBRyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUN6RCxTQUFTLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDMUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDakQsV0FBVyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRTdE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RUFBRSxDQUFDLEtBQXVCLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxFQUFFLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssTUFBTSxFQUFFO2dCQUU1RixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUdJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBzaWduYWwsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEM4MEljb25Db21wb25lbnQsIHR5cGUgSWNvblR5cGUgfSBmcm9tICcuLi9pY29uJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uVmlzaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuL3RhYmxlLWNvbHVtbi12aXNpYmlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGVEYXRhVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi90YWJsZS1kYXRhLXV0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGVTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi90YWJsZS1zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBUYWJsZUNydWRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL3RhYmxlLWNydWQtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBDODBUYWJsZUNvbERlZiwgSUQgfSBmcm9tICcuL3RhYmxlLnR5cGVzJztcbmltcG9ydCB7IEM4ME1vZGFsQ29tcG9uZW50LCBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi9tb2RhbCc7XG5cbi8qKlxuICogQzgwVGFibGVDb21wb25lbnQgLSBDb21wb25lbnRlIGRlIHRhYmxhIGF2YW56YWRvIGNvbiBmdW5jaW9uYWxpZGFkZXMgQ1JVRFxuICpcbiAqIENPTVBPUlRBTUlFTlRPIERFIFZJU0lCSUxJREFEIERFIENPTFVNTkFTOlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIDEuIFBSSU9SSURBRCBNw4FYSU1BIC0gdmlzaWJsZTogZmFsc2VcbiAqICAgIC0gTGEgY29sdW1uYSBzZSBvY3VsdGEgU0lFTVBSRSwgc2luIGV4Y2VwY2lvbmVzXG4gKiAgICAtIE5pIGVuIG1vZG8gY3JlYWNpw7NuIG5pIGVuIG1vZG8gZWRpY2nDs24gc2UgbXVlc3RyYVxuICpcbiAqIDIuIE9DVUxUQUNJw5NOIEFVVE9Nw4FUSUNBIC0gaGlkZUlmQWxsVmFsdWVzQXJlTnVsbDogdHJ1ZVxuICogICAgLSBMYSBjb2x1bW5hIHNlIG9jdWx0YSBzb2xvIHNpIFRPRE9TIGxvcyB2YWxvcmVzIGFjdHVhbGVzIGVzdMOhbiB2YWPDrW9zXG4gKiAgICAtIFZhbG9yZXMgY29uc2lkZXJhZG9zIHZhY8Otb3M6IG51bGwsIHVuZGVmaW5lZCwgJycsIFtdLCB7fVxuICogICAgLSBWYWxvcmVzIE5PIHZhY8Otb3M6IDAsIGZhbHNlIChzb24gdmFsb3JlcyB2w6FsaWRvcylcbiAqICAgIC0gRVhDRVBDSU9ORVMgSU1QT1JUQU5URVM6XG4gKiAgICAgICogRW4gbW9kbyBjcmVhY2nDs24gKGNyZWF0aW5nPXRydWUpIGVzdGFzIGNvbHVtbmFzIFPDjSBzZSBtdWVzdHJhblxuICogICAgICAqIEVuIG1vZG8gZWRpY2nDs24gZGUgdW5hIGZpbGEgZXNwZWPDrWZpY2Egc2UgbXVlc3RyYW4gU09MTyBzaSBlc2EgZmlsYSB0aWVuZSB2YWxvclxuICpcbiAqIDMuIFBPUiBERUZFQ1RPIC0gQ29sdW1uYXMgbm9ybWFsZXNcbiAqICAgIC0gU2UgbXVlc3RyYW4gc2llbXByZSAodmlzdWFsaXphY2nDs24sIGNyZWFjacOzbiB5IGVkaWNpw7NuKVxuICpcbiAqIFZBTE9SRVMgUE9SIERFRkVDVE8gRU4gQ1JFQUNJw5NOOlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIC0gUHJvcGllZGFkIGBkZWZhdWx0PzogdW5rbm93bmAgcGVybWl0ZSBkZWZpbmlyIHZhbG9yZXMgcG9yIGRlZmVjdG8gcGFyYSBtb2RvIGNyZWFjacOzblxuICogLSBTb2xvIHNlIGFwbGljYSBjdWFuZG8gc2UgaW5pY2lhIGVsIG1vZG8gY3JlYWNpw7NuIChzdGFydENyZWF0ZSlcbiAqIC0gUHVlZGUgc2VyIGN1YWxxdWllciB0aXBvOiBzdHJpbmcsIG51bWJlciwgYm9vbGVhbiwgZXRjLlxuICogLSBTaSBubyBzZSBlc3BlY2lmaWNhIGBkZWZhdWx0YCwgc2UgdXNhIGNhZGVuYSB2YWPDrWEgKCcnKVxuICpcbiAqIFZBTE9SRVMgRElOw4FNSUNPUyBFTiBDUkVBQ0nDk04gWSBFRElDScOTTjpcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIC0gSW5wdXQgYGlucHV0VmFsdWVzJD86IE9ic2VydmFibGU8UGFydGlhbDxUPj5gIHBlcm1pdGUgYWN0dWFsaXphciB2YWxvcmVzIGRpbsOhbWljYW1lbnRlXG4gKiAtIFNvbG8gc2UgYXBsaWNhIGR1cmFudGUgbW9kbyBjcmVhY2nDs24gKGNyZWF0aW5nPXRydWUpIG8gZWRpY2nDs24gKGVkaXRpbmchPW51bGwpXG4gKiAtIExvcyB2YWxvcmVzIHNlIGFwbGljYW4gYXV0b23DoXRpY2FtZW50ZSBjdWFuZG8gZWwgT2JzZXJ2YWJsZSBlbWl0ZVxuICogLSBQZXJtaXRlIGNhbWJpb3MgbcO6bHRpcGxlcyBkdXJhbnRlIGVsIG1pc21vIG1vZG8gZGUgY3JlYWNpw7NuL2VkaWNpw7NuXG4gKiAtIExvcyBudWV2b3MgdmFsb3JlcyBzb2JyZXNjcmliZW4gbG9zIGV4aXN0ZW50ZXMgKHNwcmVhZCBvcGVyYXRvcilcbiAqXG4gKiBUSVBPUyBERSBEQVRPUyBTT1BPUlRBRE9TOlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIC0gJ3N0cmluZyc6IFRleHRvIG5vcm1hbCAoZGVmYXVsdClcbiAqIC0gJ251bWJlcic6IE7Dum1lcm9zIGRlY2ltYWxlcyAocHJlc2VydmEgZGVjaW1hbGVzOiA1LjMg4oaSIDUuMylcbiAqIC0gJ2ludGVnZXInOiBOw7ptZXJvcyBlbnRlcm9zIChjb252aWVydGUgYSBlbnRlcm86IDUuMyDihpIgNSlcbiAqIC0gJ2Jvb2xlYW4nOiBWZXJkYWRlcm8vRmFsc28gKGNoZWNrYm94KVxuICogLSAncGFzc3dvcmQnOiBUZXh0byBvY3VsdG8gKGlucHV0IHR5cGU9XCJwYXNzd29yZFwiKVxuICogLSAnZW51bSc6IExpc3RhIGRlIG9wY2lvbmVzIHByZWRlZmluaWRhcyAoc2VsZWN0KVxuICpcbiAqIEVKRU1QTE9TOlxuICogLSB7IGFjY2Vzc29yOiAnaWQnLCB2aXNpYmxlOiBmYWxzZSB9IOKGkiBOVU5DQSBzZSBtdWVzdHJhXG4gKiAtIHsgYWNjZXNzb3I6ICdtb3RvclBvcycsIGhpZGVJZkFsbFZhbHVlc0FyZU51bGw6IHRydWUsIGRlZmF1bHQ6IDAsIHR5cGU6ICdpbnRlZ2VyJyB9IOKGkiBFbnRlcm8gKDUuNyDihpIgNSlcbiAqIC0geyBhY2Nlc3NvcjogJ3dlaWdodCcsIHR5cGU6ICdudW1iZXInLCBkZWZhdWx0OiAyLjUgfSDihpIgRGVjaW1hbCBwcmVzZXJ2YWRvICg1Ljcg4oaSIDUuNylcbiAqIC0geyBhY2Nlc3NvcjogJ3N0YXR1cycsIGRlZmF1bHQ6ICdhY3RpdmUnIH0g4oaSIFNlIGF1dG9yZWxsZW5hIGNvbiAnYWN0aXZlJyBlbiBjcmVhY2nDs25cbiAqIC0geyBhY2Nlc3NvcjogJ25hbWUnIH0g4oaSIFNpZW1wcmUgdmlzaWJsZSwgc2luIHZhbG9yIHBvciBkZWZlY3RvIChjYWRlbmEgdmFjw61hKVxuICogLSBpbnB1dFZhbHVlcyQgZW1pdGUgeyBtb3RvclBvczogNSwgd2VpZ2h0OiAyLjMgfSDihpIgYWN0dWFsaXphIGlucHV0cyBkaW7DoW1pY2FtZW50ZVxuICovQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnYzgwLXRhYmxlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0M4MEljb25Db21wb25lbnQsIEM4ME1vZGFsQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgQzgwVGFibGVDb21wb25lbnQ8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLy8gU2VydmljaW9zIGlueWVjdGFkb3NcbiAgcHJpdmF0ZSByZWFkb25seSBtb2RhbFNlcnZpY2UgPSBpbmplY3QoTW9kYWxTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSB2aXNpYmlsaXR5U2VydmljZSA9IGluamVjdChUYWJsZUNvbHVtblZpc2liaWxpdHlTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkYXRhVXRpbHMgPSBpbmplY3QoVGFibGVEYXRhVXRpbHNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3Rpb25TZXJ2aWNlID0gaW5qZWN0KFRhYmxlU2VsZWN0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY3J1ZFNlcnZpY2UgPSBpbmplY3QoVGFibGVDcnVkU3RhdGVTZXJ2aWNlKTtcblxuICAvLyBJbnB1dHNcbiAgQElucHV0KCkgZGF0YSQhOiBPYnNlcnZhYmxlPFRbXT47XG4gIEBJbnB1dCgpIGNvbHVtbnM6IEM4MFRhYmxlQ29sRGVmW10gPSBbXTtcbiAgQElucHV0KCkgaW5wdXRWYWx1ZXMkPzogT2JzZXJ2YWJsZTxQYXJ0aWFsPFQ+PjsgLy8gT2JzZXJ2YWJsZSBwYXJhIGFjdHVhbGl6YXIgdmFsb3JlcyBkZSBpbnB1dHMgZGluw6FtaWNhbWVudGUgZW4gY3JlYWNpw7NuL2VkaWNpw7NuXG4gIEBJbnB1dCgpIHNpemUgPSAwOyAvLyBUYW1hw7FvIGRlIGxhIHRhYmxhICgwID0gc2luIGzDrW1pdGUsID4gMCBhcGxpY2EgbWF4LWhlaWdodClcbiAgQElucHV0KCkgbXVsdGlwbGUgPSB0cnVlOyAvLyBQZXJtaXRlIHNlbGVjY2nDs24gbcO6bHRpcGxlIHBvciBkZWZlY3RvXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogKHZhbHVlOiBib29sZWFuIHwgc3RyaW5nKSA9PiB2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09ICd0cnVlJyB9KVxuICBub0NvbmZpcm0gPSBmYWxzZTsgLy8gU2kgZXMgdHJ1ZSwgbm8gbXVlc3RyYSBjb25maXJtYWNpb25lcyBtb2RhbGVzXG4gIEBJbnB1dCgpIGN1c3RvbUFjdGlvbkljb246IEljb25UeXBlID0gJ3NldHRpbmdzJzsgLy8gSWNvbm8gcGFyYSBsYSBhY2Npw7NuIHBlcnNvbmFsaXphZGFcbiAgQElucHV0KCkgY3VzdG9tQWN0aW9uVG9vbHRpcCA9ICdBY2Npw7NuIHBlcnNvbmFsaXphZGEnOyAvLyBUb29sdGlwIHBhcmEgbGEgYWNjacOzbiBwZXJzb25hbGl6YWRhXG5cbiAgLy8gT3V0cHV0c1xuICBAT3V0cHV0KCkgY3JlYXRlQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx7IHJvdzogUGFydGlhbDxUPjsgZG9uZTogKHJlc3VsdDogYm9vbGVhbikgPT4gdm9pZDsgfT4oKTtcbiAgQE91dHB1dCgpIHVwZGF0ZUFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpZDogSUQ7IGNoYW5nZXM6IFBhcnRpYWw8VD47IGRvbmU6IChyZXN1bHQ6IGJvb2xlYW4pID0+IHZvaWQ7IH0+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGVBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgaWQ6IElEOyBkb25lOiAocmVzdWx0OiBib29sZWFuKSA9PiB2b2lkOyB9PigpO1xuICBAT3V0cHV0KCkgY2FuY2VsQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx7IGlkOiBJRDsgZG9uZTogKHJlc3VsdDogYm9vbGVhbikgPT4gdm9pZDsgfT4oKTtcbiAgQE91dHB1dCgpIHZpZXdBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG4gIEBPdXRwdXQoKSB1cGxvYWRBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG4gIEBPdXRwdXQoKSBnZXRSb3dCdXR0b25BY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG4gIEBPdXRwdXQoKSBjdXN0b21BY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7IC8vIEFjY2nDs24gcGVyc29uYWxpemFkYSBnZW7DqXJpY2FcbiAgQE91dHB1dCgpIG1vdmVVcEFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpZDogSUQ7IGRvbmU6IChyZXN1bHQ6IGJvb2xlYW4pID0+IHZvaWQ7IH0+KCk7XG4gIEBPdXRwdXQoKSBtb3ZlRG93bkFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpZDogSUQ7IGRvbmU6IChyZXN1bHQ6IGJvb2xlYW4pID0+IHZvaWQ7IH0+KCk7XG4gIEBPdXRwdXQoKSBlbmFibGVBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgaWQ6IElEOyBlbmFibGVkOiBib29sZWFuOyBkb25lOiAocmVzdWx0OiBib29sZWFuKSA9PiB2b2lkOyB9PigpO1xuICBAT3V0cHV0KCkgc2VhcmNoVGVybSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgZXJyb3JFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgc2VsZWN0YWJsZSA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xuXG4gIC8vIEVzdGFkbyBwcmluY2lwYWxcbiAgcmVhZG9ubHkgZGF0YSA9IHNpZ25hbDxUW10+KFtdKTtcbiAgcmVhZG9ubHkga2V5cyA9IHNpZ25hbDxzdHJpbmdbXT4oW10pO1xuICByZWFkb25seSBzZWFyY2hWYWx1ZSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcblxuICAvLyBFc3RhZG8gZGUgc2VsZWNjacOzbiAoZGVsZWdhZG8gYSBzZXJ2aWNpbylcbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3Rpb25TdGF0ZSA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5jcmVhdGVTZWxlY3Rpb25TdGF0ZTxUPigpO1xuICByZWFkb25seSBzZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3Rpb25TdGF0ZS5zZWxlY3RlZEl0ZW1zO1xuICByZWFkb25seSBzZWxlY3RBbGxDaGVja2VkID0gdGhpcy5zZWxlY3Rpb25TdGF0ZS5zZWxlY3RBbGxDaGVja2VkO1xuICByZWFkb25seSBzZWxlY3RBbGxJbmRldGVybWluYXRlID0gdGhpcy5zZWxlY3Rpb25TdGF0ZS5zZWxlY3RBbGxJbmRldGVybWluYXRlO1xuXG4gIC8vIEVzdGFkbyBDUlVEIChkZWxlZ2FkbyBhIHNlcnZpY2lvKVxuICBwcml2YXRlIHJlYWRvbmx5IGNydWRTdGF0ZSA9IHRoaXMuY3J1ZFNlcnZpY2UuY3JlYXRlQ3J1ZFN0YXRlPFQ+KCk7XG4gIHJlYWRvbmx5IGNyZWF0aW5nID0gdGhpcy5jcnVkU3RhdGUuY3JlYXRpbmc7XG4gIHJlYWRvbmx5IG5ld1JvdyA9IHRoaXMuY3J1ZFN0YXRlLm5ld1JvdztcbiAgcmVhZG9ubHkgZWRpdGluZyA9IHRoaXMuY3J1ZFN0YXRlLmVkaXRpbmc7XG4gIHJlYWRvbmx5IGVkaXRSb3cgPSB0aGlzLmNydWRTdGF0ZS5lZGl0Um93O1xuXG4gIC8vIEZsYWdzIHRvIGNoZWNrIGlmIGV2ZW50cyBoYXZlIGxpc3RlbmVyc1xuICByZWFkb25seSBoYXNDcmVhdGVBY3Rpb25MaXN0ZW5lciA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGhhc1VwZGF0ZUFjdGlvbkxpc3RlbmVyID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaGFzRGVsZXRlQWN0aW9uTGlzdGVuZXIgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBoYXNDYW5jZWxBY3Rpb25MaXN0ZW5lciA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGhhc1ZpZXdBY3Rpb25MaXN0ZW5lciA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGhhc1VwbG9hZEFjdGlvbkxpc3RlbmVyID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaGFzR2V0Um93QnV0dG9uTGlzdGVuZXIgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBoYXNDdXN0b21BY3Rpb25MaXN0ZW5lciA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGhhc01vdmVVcEFjdGlvbkxpc3RlbmVyID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaGFzTW92ZURvd25BY3Rpb25MaXN0ZW5lciA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGhhc0VuYWJsZUFjdGlvbkxpc3RlbmVyID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaGFzU2VhcmNoVGVybUxpc3RlbmVyID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaGFzU2VsZWN0YWJsZUxpc3RlbmVyID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcml2YXRlIGRhdGFTdWI/OiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgaW5wdXRWYWx1ZXNTdWI/OiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBnZXRFcnJvck1lc3NhZ2UoZXJyOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBjb25zdCBlcnJvciA9IGVyciBhcyB7IG1lc3NhZ2U/OiBzdHJpbmcgfTtcbiAgICByZXR1cm4gZXJyb3I/Lm1lc3NhZ2UgfHwgJ0Vycm9yIGFsIGNhcmdhciBkYXRvcyc7XG4gIH1cblxuICAvKipcbiAgICogQWN0dWFsaXphIGxhcyBrZXlzIGRlIGNvbHVtbmFzIHZpc2libGVzIGJhc8OhbmRvc2UgZW4gZWwgZXN0YWRvIGFjdHVhbFxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVWaXNpYmxlS2V5cygpOiB2b2lkIHtcbiAgICBjb25zdCB2aXNpYmxlS2V5cyA9IHRoaXMudmlzaWJpbGl0eVNlcnZpY2UudXBkYXRlVmlzaWJsZUtleXMoXG4gICAgICB0aGlzLmNvbHVtbnMsXG4gICAgICB0aGlzLmRhdGEoKSxcbiAgICAgIHRoaXMuY3JlYXRpbmcoKSxcbiAgICAgIHRoaXMuZWRpdGluZygpXG4gICAgKTtcbiAgICB0aGlzLmtleXMuc2V0KHZpc2libGVLZXlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcGxpY2EgdmFsb3JlcyBwYXJjaWFsZXMgYSBsb3MgaW5wdXRzIGVuIG1vZG8gY3JlYWNpw7NuIG8gZWRpY2nDs24uXG4gICAqIFNvbG8gYWN0dWFsaXphIHNpIGVzdGFtb3MgZW4gbW9kbyBjcmVhY2nDs24gKGNyZWF0aW5nID0gdHJ1ZSkgbyBlZGljacOzbiAoZWRpdGluZyAhPSBudWxsKVxuICAgKi9cbiAgcHJpdmF0ZSBhcHBseUlucHV0VmFsdWVzKHBhcnRpYWxWYWx1ZXM6IFBhcnRpYWw8VD4pOiB2b2lkIHtcbiAgICB0aGlzLmNydWRTdGF0ZS5hcHBseUlucHV0VmFsdWVzKHBhcnRpYWxWYWx1ZXMpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gQ2hlY2sgaWYgdGhlIG91dHB1dHMgaGF2ZSBsaXN0ZW5lcnNcbiAgICB0aGlzLmhhc0NyZWF0ZUFjdGlvbkxpc3RlbmVyLnNldCh0aGlzLmNyZWF0ZUFjdGlvbi5vYnNlcnZlZCk7XG4gICAgdGhpcy5oYXNVcGRhdGVBY3Rpb25MaXN0ZW5lci5zZXQodGhpcy51cGRhdGVBY3Rpb24ub2JzZXJ2ZWQpO1xuICAgIHRoaXMuaGFzRGVsZXRlQWN0aW9uTGlzdGVuZXIuc2V0KHRoaXMuZGVsZXRlQWN0aW9uLm9ic2VydmVkKTtcbiAgICB0aGlzLmhhc0NhbmNlbEFjdGlvbkxpc3RlbmVyLnNldCh0aGlzLmNhbmNlbEFjdGlvbi5vYnNlcnZlZCk7XG4gICAgdGhpcy5oYXNWaWV3QWN0aW9uTGlzdGVuZXIuc2V0KHRoaXMudmlld0FjdGlvbi5vYnNlcnZlZCk7XG4gICAgdGhpcy5oYXNVcGxvYWRBY3Rpb25MaXN0ZW5lci5zZXQodGhpcy51cGxvYWRBY3Rpb24ub2JzZXJ2ZWQpO1xuICAgIHRoaXMuaGFzR2V0Um93QnV0dG9uTGlzdGVuZXIuc2V0KHRoaXMuZ2V0Um93QnV0dG9uQWN0aW9uLm9ic2VydmVkKTtcbiAgICB0aGlzLmhhc0N1c3RvbUFjdGlvbkxpc3RlbmVyLnNldCh0aGlzLmN1c3RvbUFjdGlvbi5vYnNlcnZlZCk7XG4gICAgdGhpcy5oYXNNb3ZlVXBBY3Rpb25MaXN0ZW5lci5zZXQodGhpcy5tb3ZlVXBBY3Rpb24ub2JzZXJ2ZWQpO1xuICAgIHRoaXMuaGFzTW92ZURvd25BY3Rpb25MaXN0ZW5lci5zZXQodGhpcy5tb3ZlRG93bkFjdGlvbi5vYnNlcnZlZCk7XG4gICAgdGhpcy5oYXNFbmFibGVBY3Rpb25MaXN0ZW5lci5zZXQodGhpcy5lbmFibGVBY3Rpb24ub2JzZXJ2ZWQpO1xuICAgIHRoaXMuaGFzU2VhcmNoVGVybUxpc3RlbmVyLnNldCh0aGlzLnNlYXJjaFRlcm0ub2JzZXJ2ZWQpO1xuICAgIHRoaXMuaGFzU2VsZWN0YWJsZUxpc3RlbmVyLnNldCh0aGlzLnNlbGVjdGFibGUub2JzZXJ2ZWQpO1xuXG4gICAgaWYgKCF0aGlzLmRhdGEkKSByZXR1cm47XG4gICAgdGhpcy5kYXRhU3ViID0gdGhpcy5kYXRhJC5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGl0ZW1zKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0YVV0aWxzLmFwcGx5U29ydGluZyhpdGVtcywgdGhpcy5jb2x1bW5zKTtcbiAgICAgICAgdGhpcy5kYXRhLnNldChpdGVtcyk7XG4gICAgICAgIC8vIEFjdHVhbGl6YXIgbGFzIGNvbHVtbmFzIHZpc2libGVzIGJhc8OhbmRvc2UgZW4gZWwgZXN0YWRvIGFjdHVhbFxuICAgICAgICB0aGlzLnVwZGF0ZVZpc2libGVLZXlzKCk7XG4gICAgICAgIC8vIE1hbnRlbmVyIGxhIHNlbGVjY2nDs24gZXhpc3RlbnRlIGRlc3B1w6lzIGRlIGFjdHVhbGl6YXIgbG9zIGRhdG9zXG4gICAgICAgIHRoaXMucHJlc2VydmVTZWxlY3Rpb24oKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycjogdW5rbm93bikgPT5cbiAgICAgICAgdGhpcy5lcnJvckV2ZW50LmVtaXQodGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyKSksXG4gICAgfSk7XG5cbiAgICAvLyBTdXNjcmliaXJzZSBhIGlucHV0VmFsdWVzJCBwYXJhIGFjdHVhbGl6YXIgdmFsb3JlcyBkaW7DoW1pY2FtZW50ZSBlbiBjcmVhY2nDs24vZWRpY2nDs25cbiAgICBpZiAodGhpcy5pbnB1dFZhbHVlcyQpIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZXNTdWIgPSB0aGlzLmlucHV0VmFsdWVzJC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocGFydGlhbFZhbHVlcykgPT4ge1xuICAgICAgICAgIHRoaXMuYXBwbHlJbnB1dFZhbHVlcyhwYXJ0aWFsVmFsdWVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnI6IHVua25vd24pID0+XG4gICAgICAgICAgY29uc29sZS53YXJuKCdFcnJvciBlbiBpbnB1dFZhbHVlcyQ6JywgdGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyKSksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRhdGFTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5pbnB1dFZhbHVlc1N1Yj8udW5zdWJzY3JpYmUoKTtcblxuICAgIC8vIENsb3NlIGFueSBvcGVuIG1vZGFsIHdoZW4gY29tcG9uZW50IGlzIGRlc3Ryb3llZFxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLmNsb3NlTW9kYWwoKTtcbiAgfVxuXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50LCBrZXk6IHN0cmluZywgY29sPzogQzgwVGFibGVDb2xEZWYpIHtcbiAgICBpZiAoY29sPy50eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIGNvbnN0IGNoZWNrZWQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmNoZWNrZWQ7XG4gICAgICB0aGlzLnVwZGF0ZU5ld1JvdyhrZXksIGNoZWNrZWQpO1xuICAgIH0gZWxzZSBpZiAoY29sPy50eXBlID09PSAnZW51bScpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MU2VsZWN0RWxlbWVudCkudmFsdWU7XG4gICAgICB0aGlzLnVwZGF0ZU5ld1JvdyhrZXksIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICBpZiAodGFyZ2V0ICYmIHR5cGVvZiB0YXJnZXQudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTmV3Um93KGtleSwgdGFyZ2V0LnZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBvbkRlbGV0ZShyb3c6IFQpIHtcbiAgICBjb25zdCBpZCA9IHJvd1snaWQnXSBhcyBJRDtcblxuICAgIGxldCBjb25maXJtZWQgPSB0cnVlO1xuICAgIGlmICghdGhpcy5ub0NvbmZpcm0pIHtcbiAgICAgIGNvbmZpcm1lZCA9IGF3YWl0IHRoaXMubW9kYWxTZXJ2aWNlLmNvbmZpcm0oXG4gICAgICAgICdDb25maXJtYXIgZWxpbWluYWNpw7NuJyxcbiAgICAgICAgJ8K/RXN0w6Egc2VndXJvIGRlIHF1ZSBkZXNlYSBlbGltaW5hciBlc3RlIGVsZW1lbnRvPyBFc3RhIGFjY2nDs24gbm8gc2UgcHVlZGUgZGVzaGFjZXIuJyxcbiAgICAgICAgJ0VsaW1pbmFyJyxcbiAgICAgICAgJ0NhbmNlbGFyJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlybWVkKSB7XG4gICAgICB0aGlzLmRlbGV0ZUFjdGlvbi5lbWl0KHtcbiAgICAgICAgaWQsXG4gICAgICAgIGRvbmU6IChzdWNjZXNzOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgaWYgKHN1Y2Nlc3MpIHRoaXMuY2FuY2VsRWRpdCgpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb25DYW5jZWwocm93OiBUKSB7XG4gICAgY29uc3QgaWQgPSByb3dbJ2lkJ10gYXMgSUQ7XG5cbiAgICBsZXQgY29uZmlybWVkID0gdHJ1ZTtcbiAgICBpZiAoIXRoaXMubm9Db25maXJtKSB7XG4gICAgICBjb25maXJtZWQgPSBhd2FpdCB0aGlzLm1vZGFsU2VydmljZS5jb25maXJtKFxuICAgICAgICAnQ29uZmlybWFyIGNhbmNlbGFjacOzbicsXG4gICAgICAgICfCv0VzdMOhIHNlZ3VybyBkZSBxdWUgZGVzZWEgY2FuY2VsYXIgZXN0ZSBlbGVtZW50bz8nLFxuICAgICAgICAnQ2FuY2VsYXIgZWxlbWVudG8nLFxuICAgICAgICAnTm8gY2FuY2VsYXInXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChjb25maXJtZWQpIHtcbiAgICAgIHRoaXMuY2FuY2VsQWN0aW9uLmVtaXQoe1xuICAgICAgICBpZCxcbiAgICAgICAgZG9uZTogKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICBpZiAoc3VjY2VzcykgdGhpcy5jYW5jZWxFZGl0KCk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzdGFydENyZWF0ZSgpIHtcbiAgICB0aGlzLmNydWRTdGF0ZS5zdGFydENyZWF0ZSh0aGlzLmNvbHVtbnMsIHRoaXMuZGF0YSgpKTtcbiAgICAvLyBBY3R1YWxpemFyIGtleXMgZGUgY29sdW1uYXMgdmlzaWJsZXMgY3VhbmRvIGVudHJhbW9zIGVuIG1vZG8gY3JlYWNpw7NuXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlS2V5cygpO1xuICB9XG5cbiAgY2FuY2VsQ3JlYXRlKCkge1xuICAgIHRoaXMuY3J1ZFN0YXRlLmNhbmNlbENyZWF0ZSgpO1xuICAgIC8vIEFjdHVhbGl6YXIga2V5cyBkZSBjb2x1bW5hcyB2aXNpYmxlcyBjdWFuZG8gc2FsaW1vcyBkZWwgbW9kbyBjcmVhY2nDs25cbiAgICB0aGlzLnVwZGF0ZVZpc2libGVLZXlzKCk7XG4gIH1cblxuICB1cGRhdGVOZXdSb3coa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKSB7XG4gICAgdGhpcy5jcnVkU3RhdGUudXBkYXRlTmV3Um93KGtleSwgdmFsdWUpO1xuICB9XG5cbiAgc2F2ZUNyZWF0ZSgpIHtcbiAgICB0aGlzLmNydWRTdGF0ZS5zYXZlQ3JlYXRlKHRoaXMuY29sdW1ucywgdGhpcy5kYXRhKCksIHRoaXMuY3JlYXRlQWN0aW9uKTtcbiAgfVxuXG5cblxuICBvbkVkaXQocm93OiBUKSB7XG4gICAgdGhpcy5jcnVkU3RhdGUuc3RhcnRFZGl0KHJvdywgdGhpcy5jb2x1bW5zLCB0aGlzLmRhdGEoKSk7XG4gICAgLy8gQWN0dWFsaXphciBrZXlzIGRlIGNvbHVtbmFzIHZpc2libGVzIGN1YW5kbyBlbnRyYW1vcyBlbiBtb2RvIGVkaWNpw7NuXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlS2V5cygpO1xuICB9XG5cbiAgY2FuY2VsRWRpdCgpIHtcbiAgICB0aGlzLmNydWRTdGF0ZS5jYW5jZWxFZGl0KCk7XG4gICAgLy8gQWN0dWFsaXphciBrZXlzIGRlIGNvbHVtbmFzIHZpc2libGVzIGN1YW5kbyBzYWxpbW9zIGRlbCBtb2RvIGVkaWNpw7NuXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlS2V5cygpO1xuICB9XG5cbiAgb25FZGl0SW5wdXQoZXZlbnQ6IEV2ZW50LCBrZXk6IHN0cmluZywgY29sPzogQzgwVGFibGVDb2xEZWYpIHtcbiAgICBpZiAoY29sPy50eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIGNvbnN0IGNoZWNrZWQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmNoZWNrZWQ7XG4gICAgICB0aGlzLmNydWRTdGF0ZS51cGRhdGVFZGl0Um93KGtleSwgY2hlY2tlZCk7XG4gICAgfSBlbHNlIGlmIChjb2w/LnR5cGUgPT09ICdlbnVtJykge1xuICAgICAgY29uc3QgdmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxTZWxlY3RFbGVtZW50KS52YWx1ZTtcbiAgICAgIHRoaXMuY3J1ZFN0YXRlLnVwZGF0ZUVkaXRSb3coa2V5LCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgaWYgKHRhcmdldCAmJiB0eXBlb2YgdGFyZ2V0LnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLmNydWRTdGF0ZS51cGRhdGVFZGl0Um93KGtleSwgdGFyZ2V0LnZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzYXZlRWRpdChyb3c6IFQpIHtcbiAgICBjb25zdCBpZCA9IHJvd1snaWQnXSBhcyBJRDtcbiAgICB0aGlzLmNydWRTdGF0ZS5zYXZlRWRpdChpZCwgdGhpcy5jb2x1bW5zLCB0aGlzLmRhdGEoKSwgdGhpcy51cGRhdGVBY3Rpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYWNrQnkgZnVuY3Rpb24gZm9yIG5nRm9yIHRvIGF2b2lkIERPTSByZS1jcmVhdGlvbiAoTkcwOTU2IHdhcm5pbmcpLlxuICAgKi9cbiAgdHJhY2tCeUlkKGluZGV4OiBudW1iZXIsIHJvdzogVCk6IG51bWJlciB8IHN0cmluZyB7XG4gICAgY29uc3QgaWQgPVxuICAgICAgcm93ICYmIHR5cGVvZiByb3cgPT09ICdvYmplY3QnICYmICdpZCcgaW4gcm93XG4gICAgICAgID8gKHJvdyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbJ2lkJ11cbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHR5cGVvZiBpZCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGlkID09PSAnbnVtYmVyJyA/IGlkIDogaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgdGhlIHZpZXcgZXZlbnQgd2l0aCB0aGUgZW50aXJlIHJvdyBkYXRhXG4gICAqL1xuICBvblZpZXcocm93OiBUKTogdm9pZCB7XG4gICAgdGhpcy52aWV3QWN0aW9uLmVtaXQocm93KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgZ2V0Um93QnV0dG9uQWN0aW9uIGV2ZW50IHdpdGggdGhlIGVudGlyZSByb3cgZGF0YVxuICAgKi9cbiAgb25HZXRSb3dCdXR0b24ocm93OiBUKTogdm9pZCB7XG4gICAgdGhpcy5nZXRSb3dCdXR0b25BY3Rpb24uZW1pdChyb3cpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBjdXN0b21BY3Rpb24gZXZlbnQgd2l0aCB0aGUgZW50aXJlIHJvdyBkYXRhXG4gICAqL1xuICBvbkN1c3RvbUFjdGlvbihyb3c6IFQpOiB2b2lkIHtcbiAgICB0aGlzLmN1c3RvbUFjdGlvbi5lbWl0KHJvdyk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgdGhlIG1vdmVVcEFjdGlvbiBldmVudCB3aXRoIHRoZSByb3cgaWRcbiAgICovXG4gIGFzeW5jIG9uTW92ZVVwKHJvdzogVCkge1xuICAgIGNvbnN0IGlkID0gcm93WydpZCddIGFzIElEO1xuICAgIHRoaXMubW92ZVVwQWN0aW9uLmVtaXQoe1xuICAgICAgaWQsXG4gICAgICBkb25lOiAoc3VjY2VzczogYm9vbGVhbikgPT4ge1xuICAgICAgICBpZiAoc3VjY2VzcykgdGhpcy5jYW5jZWxFZGl0KCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBtb3ZlRG93bkFjdGlvbiBldmVudCB3aXRoIHRoZSByb3cgaWRcbiAgICovXG4gIGFzeW5jIG9uTW92ZURvd24ocm93OiBUKSB7XG4gICAgY29uc3QgaWQgPSByb3dbJ2lkJ10gYXMgSUQ7XG4gICAgdGhpcy5tb3ZlRG93bkFjdGlvbi5lbWl0KHtcbiAgICAgIGlkLFxuICAgICAgZG9uZTogKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKHN1Y2Nlc3MpIHRoaXMuY2FuY2VsRWRpdCgpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgZW5hYmxlQWN0aW9uIGV2ZW50IHdpdGggdGhlIHJvdyBpZCBhbmQgY3VycmVudCBlbmFibGVkIHN0YXR1c1xuICAgKi9cbiAgYXN5bmMgb25FbmFibGUocm93OiBUKSB7XG4gICAgY29uc3QgaWQgPSByb3dbJ2lkJ10gYXMgSUQ7XG4gICAgY29uc3QgY3VycmVudEVuYWJsZWQgPSByb3dbJ2VuYWJsZWQnXSBhcyBib29sZWFuO1xuICAgIHRoaXMuZW5hYmxlQWN0aW9uLmVtaXQoe1xuICAgICAgaWQsXG4gICAgICBlbmFibGVkOiAhY3VycmVudEVuYWJsZWQsIC8vIFRvZ2dsZSB0aGUgY3VycmVudCBzdGF0ZVxuICAgICAgZG9uZTogKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKHN1Y2Nlc3MpIHRoaXMuY2FuY2VsRWRpdCgpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHNlYXJjaCBpbnB1dCBjaGFuZ2VzIHdpdGggZGVib3VuY2luZ1xuICAgKi9cbiAgb25TZWFyY2hJbnB1dChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBjb25zdCB2YWx1ZSA9IHRhcmdldC52YWx1ZTtcbiAgICB0aGlzLnNlYXJjaFZhbHVlLnNldCh2YWx1ZSk7XG4gICAgdGhpcy5zZWFyY2hUZXJtLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUgc2VhcmNoIGlucHV0XG4gICAqL1xuICBjbGVhclNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFZhbHVlLnNldCgnJyk7XG4gICAgdGhpcy5zZWFyY2hUZXJtLmVtaXQoJycpO1xuICB9XG5cbiAgLy8gTcOpdG9kb3MgZGVsZWdhZG9zIGEgc2VydmljaW9zXG4gIGdldENlbGxWYWx1ZShyb3c6IFQsIGFjY2Vzc29yOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhVXRpbHMuZ2V0Q2VsbFZhbHVlKHJvdywgYWNjZXNzb3IpO1xuICB9XG5cbiAgZ2V0RGlzcGxheVZhbHVlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhVXRpbHMuZ2V0RGlzcGxheVZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIGdldEVudW1EaXNwbGF5VmFsdWUodmFsdWU6IHVua25vd24sIGNvbDogQzgwVGFibGVDb2xEZWYpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGFVdGlscy5nZXRFbnVtRGlzcGxheVZhbHVlKHZhbHVlLCBjb2wpO1xuICB9XG5cbiAgZ2V0RW51bU9wdGlvbnMoY29sOiBDODBUYWJsZUNvbERlZik6IHsgdmFsdWU6IHN0cmluZyB8IG51bWJlcjsgbGFiZWw6IHN0cmluZyB9W10ge1xuICAgIHJldHVybiB0aGlzLmRhdGFVdGlscy5nZXRFbnVtT3B0aW9ucyhjb2wpO1xuICB9XG5cbiAgZ2V0Q2VsbENvbG9yKHZhbHVlOiB1bmtub3duLCBjb2w6IEM4MFRhYmxlQ29sRGVmKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhVXRpbHMuZ2V0Q2VsbENvbG9yKHZhbHVlLCBjb2wpO1xuICB9XG5cbiAgZ2V0VGFibGVNYXhIZWlnaHQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhVXRpbHMuZ2V0VGFibGVNYXhIZWlnaHQodGhpcy5zaXplKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3Rpb24gbWV0aG9kc1xuICAgKi9cbiAgY2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3Rpb25TdGF0ZS5jbGVhclNlbGVjdGlvbigpO1xuICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5lbWl0U2VsZWN0aW9uKHRoaXMuc2VsZWN0aW9uU3RhdGUsIHRoaXMuZGF0YSgpLCB0aGlzLnNlbGVjdGFibGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbnRpZW5lIGxhIHNlbGVjY2nDs24gZXhpc3RlbnRlIGRlc3B1w6lzIGRlIGFjdHVhbGl6YXIgbG9zIGRhdG9zLFxuICAgKiBlbGltaW5hbmRvIHNvbG8gbG9zIElEcyBxdWUgeWEgbm8gZXhpc3RlbiBlbiBsb3MgbnVldm9zIGRhdG9zXG4gICAqL1xuICBwcml2YXRlIHByZXNlcnZlU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uU3RhdGUucHJlc2VydmVTZWxlY3Rpb24odGhpcy5kYXRhKCkpO1xuICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5lbWl0U2VsZWN0aW9uKHRoaXMuc2VsZWN0aW9uU3RhdGUsIHRoaXMuZGF0YSgpLCB0aGlzLnNlbGVjdGFibGUpO1xuICB9XG5cbiAgdG9nZ2xlU2VsZWN0QWxsKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uU3RhdGUudG9nZ2xlU2VsZWN0QWxsKHRoaXMuZGF0YSgpKTtcbiAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZW1pdFNlbGVjdGlvbih0aGlzLnNlbGVjdGlvblN0YXRlLCB0aGlzLmRhdGEoKSwgdGhpcy5zZWxlY3RhYmxlKTtcbiAgfVxuXG4gIHRvZ2dsZUl0ZW1TZWxlY3Rpb24oaXRlbTogVCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uU3RhdGUudG9nZ2xlSXRlbVNlbGVjdGlvbihpdGVtLCB0aGlzLm11bHRpcGxlKTtcbiAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZW1pdFNlbGVjdGlvbih0aGlzLnNlbGVjdGlvblN0YXRlLCB0aGlzLmRhdGEoKSwgdGhpcy5zZWxlY3RhYmxlKTtcbiAgfVxuXG4gIGlzSXRlbVNlbGVjdGVkKGl0ZW06IFQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25TdGF0ZS5pc0l0ZW1TZWxlY3RlZChpdGVtKTtcbiAgfVxuXG5cblxuICAvLyBNw6l0b2RvcyBkZSB2aXNpYmlsaWRhZCBkZWxlZ2Fkb3MgYSBzZXJ2aWNpb1xuICBpc0NvbHVtblZpc2libGUoY29sdW1uOiBDODBUYWJsZUNvbERlZiwgZm9yY2VTaG93SW5DcmVhdGlvbiA9IGZhbHNlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJpbGl0eVNlcnZpY2UuaXNDb2x1bW5WaXNpYmxlKGNvbHVtbiwgdGhpcy5kYXRhKCksIGZvcmNlU2hvd0luQ3JlYXRpb24pO1xuICB9XG5cbiAgaXNDb2x1bW5WaXNpYmxlSW5IZWFkZXIoY29sdW1uOiBDODBUYWJsZUNvbERlZik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZpc2liaWxpdHlTZXJ2aWNlLmlzQ29sdW1uVmlzaWJsZUluSGVhZGVyKFxuICAgICAgY29sdW1uLFxuICAgICAgdGhpcy5kYXRhKCksXG4gICAgICB0aGlzLmNyZWF0aW5nKCksXG4gICAgICB0aGlzLmVkaXRpbmcoKVxuICAgICk7XG4gIH1cblxuICBpc0NvbHVtblZpc2libGVGb3JSb3coY29sdW1uOiBDODBUYWJsZUNvbERlZiwgcm93OiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJpbGl0eVNlcnZpY2UuaXNDb2x1bW5WaXNpYmxlRm9yUm93KFxuICAgICAgY29sdW1uLFxuICAgICAgcm93LFxuICAgICAgdGhpcy5kYXRhKCksXG4gICAgICB0aGlzLmVkaXRpbmcoKVxuICAgICk7XG4gIH1cblxuICBvblVwbG9hZChyb3c6IFQpOiB2b2lkIHtcbiAgICB0aGlzLnVwbG9hZEFjdGlvbi5lbWl0KHJvdyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCIgW3N0eWxlLm1heC1oZWlnaHRdPVwiZ2V0VGFibGVNYXhIZWlnaHQoKVwiIFtzdHlsZS5vdmVyZmxvdy15XT1cInNpemUgPiAwID8gJ2F1dG8nIDogJ3Zpc2libGUnXCI+XG4gIDwhLS0gU2VhcmNoIEJhciAtLT5cbiAgQGlmIChoYXNTZWFyY2hUZXJtTGlzdGVuZXIoKSkge1xuICA8ZGl2IGNsYXNzPVwic2VhcmNoLWNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtaW5wdXQtd3JhcHBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtdGV4dFwiPlxuICAgICAgICAgIDxjODAtaWNvbiBpY29uPVwic2VhcmNoXCIgW3NpemVdPVwiLjhcIj48L2M4MC1pY29uPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHNlYXJjaC1pbnB1dFwiIHBsYWNlaG9sZGVyPVwiQnVzY2FyLi4uXCIgW3ZhbHVlXT1cInNlYXJjaFZhbHVlKClcIiAoaW5wdXQpPVwib25TZWFyY2hJbnB1dCgkZXZlbnQpXCIgYXJpYS1sYWJlbD1cIkJ1c2NhciBlbiBsYSB0YWJsYVwiIC8+XG4gICAgICAgIEBpZiAoc2VhcmNoVmFsdWUoKSkge1xuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBidG4tYm9ycmFyXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbGVhclNlYXJjaCgpXCIgdGl0bGU9XCJMaW1waWFyIGLDunNxdWVkYVwiPlxuICAgICAgICAgIDxjODAtaWNvbiBpY29uPVwiY2FuY2VsXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICB9XG5cbiAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtYm9yZGVyZWQgdGFibGUtaG92ZXIgYWxpZ24tbWlkZGxlXCI+XG4gICAgPHRoZWFkIGNsYXNzPVwidGhlYWQgdGFibGUtbGlnaHQgc3RpY2t5LWhlYWRlclwiPlxuICAgICAgPHRyPlxuICAgICAgICBAaWYgKGhhc1NlbGVjdGFibGVMaXN0ZW5lcigpICYmIGRhdGEoKS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1jZW50ZXIgc2VsZWN0aW9uLWNvbHVtblwiPlxuICAgICAgICAgIEBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwic2VsZWN0QWxsQ2hlY2tlZCgpXCIgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0QWxsSW5kZXRlcm1pbmF0ZSgpXCIgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGwoKVwiIGFyaWEtbGFiZWw9XCJTZWxlY2Npb25hciB0b2RvXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdGg+XG4gICAgICAgIH1cbiAgICAgICAgQGZvciAoY29sIG9mIGNvbHVtbnM7IHRyYWNrIGNvbCkge1xuICAgICAgICBAaWYgKGlzQ29sdW1uVmlzaWJsZUluSGVhZGVyKGNvbCkpIHtcbiAgICAgICAgQGlmIChjb2wudHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIDx0aCBjbGFzcz1cInRleHQtY2VudGVyIGJvb2xlYW4tY29sdW1uXCI+e3sgY29sLmxhYmVsIH19PC90aD5cbiAgICAgICAgfVxuICAgICAgICBAZWxzZSBpZiAoY29sLnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIDx0aCBjbGFzcz1cInRleHQtY2VudGVyIG51bWJlci1jb2x1bW5cIj57eyBjb2wubGFiZWwgfX08L3RoPlxuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgPHRoPnt7IGNvbC5sYWJlbCB9fTwvdGg+XG4gICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpZiAoaGFzQ3JlYXRlQWN0aW9uTGlzdGVuZXIoKSB8fCBoYXNVcGRhdGVBY3Rpb25MaXN0ZW5lcigpIHx8IGhhc0RlbGV0ZUFjdGlvbkxpc3RlbmVyKCkgfHxcbiAgICAgICAgaGFzQ2FuY2VsQWN0aW9uTGlzdGVuZXIoKSB8fCBoYXNWaWV3QWN0aW9uTGlzdGVuZXIoKSB8fCBoYXNVcGxvYWRBY3Rpb25MaXN0ZW5lcigpIHx8IGhhc0dldFJvd0J1dHRvbkxpc3RlbmVyKCkgfHxcbiAgICAgICAgaGFzTW92ZVVwQWN0aW9uTGlzdGVuZXIoKSB8fCBoYXNNb3ZlRG93bkFjdGlvbkxpc3RlbmVyKCkpIHtcbiAgICAgICAgPHRoIGNsYXNzPVwidGFibGUtYWN0aW9ucy1oZWFkZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy13cmFwcGVyXCI+XG4gICAgICAgICAgICA8c3Bhbj5BY3Rpb25zPC9zcGFuPlxuICAgICAgICAgICAgQGlmIChoYXNDcmVhdGVBY3Rpb25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJhZGRcIiBbZGlzYWJsZWRdPVwiY3JlYXRpbmcoKVwiIHRpdGxlPVwiQWdyZWdhclwiIFtzaXplXT1cIi42XCIgKGljb25DbGljayk9XCJzdGFydENyZWF0ZSgpXCI+PC9jODAtaWNvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgfVxuICAgICAgPC90cj5cbiAgICA8L3RoZWFkPlxuICAgIDx0Ym9keT5cbiAgICAgIEBmb3IgKHJvdyBvZiBkYXRhKCk7IHRyYWNrIHRyYWNrQnlJZChpLCByb3cpOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgPHRyPlxuICAgICAgICBAaWYgKGhhc1NlbGVjdGFibGVMaXN0ZW5lcigpICYmIGRhdGEoKS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXIgc2VsZWN0aW9uLWNvbHVtblwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJpc0l0ZW1TZWxlY3RlZChyb3cpXCIgKGNoYW5nZSk9XCJ0b2dnbGVJdGVtU2VsZWN0aW9uKHJvdylcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidTZWxlY2Npb25hciBmaWxhICcgKyAoaSArIDEpXCIgLz5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgfVxuICAgICAgICBAZm9yIChjb2wgb2YgY29sdW1uczsgdHJhY2sgY29sKSB7XG4gICAgICAgIEBpZiAoaXNDb2x1bW5WaXNpYmxlRm9yUm93KGNvbCwgcm93KSkge1xuICAgICAgICBAaWYgKGNvbC50eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXIgYm9vbGVhbi1jb2x1bW5cIj5cbiAgICAgICAgICBAaWYgKGVkaXRpbmcoKSA9PT0gcm93WydpZCddICYmICFjb2wucmVhZE9ubHkpIHtcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiISFlZGl0Um93KCk/Lltjb2wuYWNjZXNzb3JdXCIgKGNoYW5nZSk9XCJvbkVkaXRJbnB1dCgkZXZlbnQsIGNvbC5hY2Nlc3NvciwgY29sKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiY29sLmxhYmVsXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgIEBpZiAoZ2V0Q2VsbFZhbHVlKHJvdywgY29sLmFjY2Vzc29yKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIDxjODAtaWNvbiBpY29uPVwiY2hlY2tcIiBbc2l6ZV09XCIuN1wiPjwvYzgwLWljb24+XG4gICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBlbHNlIGlmIChnZXRDZWxsVmFsdWUocm93LCBjb2wuYWNjZXNzb3IpID09PSBmYWxzZSkge1xuICAgICAgICAgIDxjODAtaWNvbiBpY29uPVwiY2FuY2VsXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgIDxiciAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2UgaWYgKGNvbC50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlciBudW1iZXItY29sdW1uXCI+XG4gICAgICAgICAgQGlmIChlZGl0aW5nKCkgPT09IHJvd1snaWQnXSAmJiAhY29sLnJlYWRPbmx5KSB7XG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIHR5cGU9XCJudW1iZXJcIiBbdmFsdWVdPVwiZWRpdFJvdygpPy5bY29sLmFjY2Vzc29yXSA/PyAnJ1wiIFtwbGFjZWhvbGRlcl09XCJjb2wubGFiZWxcIiAoaW5wdXQpPVwib25FZGl0SW5wdXQoJGV2ZW50LCBjb2wuYWNjZXNzb3IsIGNvbClcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgPHNwYW4gW3N0eWxlLmNvbG9yXT1cImdldENlbGxDb2xvcihnZXRDZWxsVmFsdWUocm93LCBjb2wuYWNjZXNzb3IpLCBjb2wpXCI+e3sgZ2V0RGlzcGxheVZhbHVlKGdldENlbGxWYWx1ZShyb3csXG4gICAgICAgICAgICBjb2wuYWNjZXNzb3IpKSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICA8dGQ+XG4gICAgICAgICAgQGlmIChlZGl0aW5nKCkgPT09IHJvd1snaWQnXSAmJiAhY29sLnJlYWRPbmx5KSB7XG4gICAgICAgICAgQGlmIChjb2wudHlwZSA9PT0gJ2VudW0nKSB7XG4gICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBbdmFsdWVdPVwiZWRpdFJvdygpPy5bY29sLmFjY2Vzc29yXSA/PyAnJ1wiIChjaGFuZ2UpPVwib25FZGl0SW5wdXQoJGV2ZW50LCBjb2wuYWNjZXNzb3IsIGNvbClcIj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj57eyBjb2wubGFiZWwgfX08L29wdGlvbj5cbiAgICAgICAgICAgIEBmb3IgKG9wdGlvbiBvZiBnZXRFbnVtT3B0aW9ucyhjb2wpOyB0cmFjayBvcHRpb24udmFsdWUpIHtcbiAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiPnt7IG9wdGlvbi5sYWJlbCB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIH1cbiAgICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIFt0eXBlXT1cImNvbC50eXBlID09PSAncGFzc3dvcmQnID8gJ3Bhc3N3b3JkJyA6ICd0ZXh0J1wiIFt2YWx1ZV09XCJlZGl0Um93KCk/Lltjb2wuYWNjZXNzb3JdID8/ICcnXCIgW3BsYWNlaG9sZGVyXT1cImNvbC5sYWJlbFwiIChpbnB1dCk9XCJvbkVkaXRJbnB1dCgkZXZlbnQsIGNvbC5hY2Nlc3NvciwgY29sKVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgQGlmIChjb2wudHlwZSA9PT0gJ3Bhc3N3b3JkJykge1xuICAgICAgICAgIDxzcGFuIFtzdHlsZS5jb2xvcl09XCJnZXRDZWxsQ29sb3IoZ2V0Q2VsbFZhbHVlKHJvdywgY29sLmFjY2Vzc29yKSwgY29sKVwiPioqKioqKjwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2UgaWYgKGNvbC50eXBlID09PSAnZW51bScpIHtcbiAgICAgICAgICA8c3BhbiBbc3R5bGUuY29sb3JdPVwiZ2V0Q2VsbENvbG9yKGdldENlbGxWYWx1ZShyb3csIGNvbC5hY2Nlc3NvciksIGNvbClcIj57e1xuICAgICAgICAgICAgZ2V0RW51bURpc3BsYXlWYWx1ZShnZXRDZWxsVmFsdWUocm93LCBjb2wuYWNjZXNzb3IpLCBjb2wpXG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2UgaWYgKGdldENlbGxWYWx1ZShyb3csIGNvbC5hY2Nlc3NvcikgPT09IHRydWUpIHtcbiAgICAgICAgICA8YzgwLWljb24gaWNvbj1cImNoZWNrXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAZWxzZSBpZiAoZ2V0Q2VsbFZhbHVlKHJvdywgY29sLmFjY2Vzc29yKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICA8YzgwLWljb24gaWNvbj1cImNhbmNlbFwiIFtzaXplXT1cIi43XCI+PC9jODAtaWNvbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgIDxzcGFuIFtzdHlsZS5jb2xvcl09XCJnZXRDZWxsQ29sb3IoZ2V0Q2VsbFZhbHVlKHJvdywgY29sLmFjY2Vzc29yKSwgY29sKVwiPnt7IGdldERpc3BsYXlWYWx1ZShnZXRDZWxsVmFsdWUocm93LFxuICAgICAgICAgICAgY29sLmFjY2Vzc29yKSkgfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC90ZD5cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChoYXNDcmVhdGVBY3Rpb25MaXN0ZW5lcigpIHx8IGhhc1VwZGF0ZUFjdGlvbkxpc3RlbmVyKCkgfHwgaGFzRGVsZXRlQWN0aW9uTGlzdGVuZXIoKSB8fFxuICAgICAgICBoYXNDYW5jZWxBY3Rpb25MaXN0ZW5lcigpIHx8IGhhc1ZpZXdBY3Rpb25MaXN0ZW5lcigpIHx8IGhhc1VwbG9hZEFjdGlvbkxpc3RlbmVyKCkgfHwgaGFzR2V0Um93QnV0dG9uTGlzdGVuZXIoKSB8fFxuICAgICAgICBoYXNNb3ZlVXBBY3Rpb25MaXN0ZW5lcigpIHx8IGhhc01vdmVEb3duQWN0aW9uTGlzdGVuZXIoKSkge1xuICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlciBhY3Rpb25zLWNlbGxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIEBpZiAoZWRpdGluZygpID09PSByb3dbJ2lkJ10pIHtcbiAgICAgICAgICAgIDxjODAtaWNvbiBidXR0b24gaWNvbj1cImNoZWNrXCIgdGl0bGU9XCJHdWFyZGFyXCIgKGljb25DbGljayk9XCJzYXZlRWRpdChyb3cpXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgICAgPGM4MC1pY29uIGJ1dHRvbiBpY29uPVwiY2FuY2VsXCIgY29sb3I9XCJ3YXJuXCIgdGl0bGU9XCJDYW5jZWxhclwiIChpY29uQ2xpY2spPVwiY2FuY2VsRWRpdCgpXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICAgQGlmIChoYXNVcGRhdGVBY3Rpb25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJlZGl0XCIgdGl0bGU9XCJFZGl0YXJcIiAoaWNvbkNsaWNrKT1cIm9uRWRpdChyb3cpXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChoYXNDYW5jZWxBY3Rpb25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJjYW5jZWxDaXJjbGVcIiBjb2xvcj1cInNlY29uZGFyeVwiIHRpdGxlPVwiQ2FuY2VsYXJcIiAoaWNvbkNsaWNrKT1cIm9uQ2FuY2VsKHJvdylcIiBbc2l6ZV09XCIuN1wiPjwvYzgwLWljb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGhhc1ZpZXdBY3Rpb25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJ2aWV3XCIgY29sb3I9XCJwcmltYXJ5XCIgdGl0bGU9XCJWZXJcIiAoaWNvbkNsaWNrKT1cIm9uVmlldyhyb3cpXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChoYXNVcGxvYWRBY3Rpb25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJ1cGxvYWRcIiBjb2xvcj1cInByaW1hcnlcIiB0aXRsZT1cIlN1YmlyXCIgKGljb25DbGljayk9XCJvblVwbG9hZChyb3cpXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChoYXNHZXRSb3dCdXR0b25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJnZXRcIiBjb2xvcj1cInN1Y2Nlc3NcIiB0aXRsZT1cIlZpbmN1bGFyXCIgKGljb25DbGljayk9XCJvbkdldFJvd0J1dHRvbihyb3cpXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChoYXNDdXN0b21BY3Rpb25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIFtpY29uXT1cImN1c3RvbUFjdGlvbkljb25cIiBjb2xvcj1cInByaW1hcnlcIiBbdGl0bGVdPVwiY3VzdG9tQWN0aW9uVG9vbHRpcFwiIChpY29uQ2xpY2spPVwib25DdXN0b21BY3Rpb24ocm93KVwiIFtzaXplXT1cIi43XCI+PC9jODAtaWNvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoaGFzTW92ZVVwQWN0aW9uTGlzdGVuZXIoKSkge1xuICAgICAgICAgICAgPGM4MC1pY29uIGJ1dHRvbiBpY29uPVwiYXJyb3dVcFwiIGNvbG9yPVwic2Vjb25kYXJ5XCIgdGl0bGU9XCJNb3ZlciBhcnJpYmFcIiAoaWNvbkNsaWNrKT1cIm9uTW92ZVVwKHJvdylcIiBbc2l6ZV09XCIuN1wiPjwvYzgwLWljb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGhhc01vdmVEb3duQWN0aW9uTGlzdGVuZXIoKSkge1xuICAgICAgICAgICAgPGM4MC1pY29uIGJ1dHRvbiBpY29uPVwiYXJyb3dEb3duXCIgY29sb3I9XCJzZWNvbmRhcnlcIiB0aXRsZT1cIk1vdmVyIGFiYWpvXCIgKGljb25DbGljayk9XCJvbk1vdmVEb3duKHJvdylcIiBbc2l6ZV09XCIuN1wiPjwvYzgwLWljb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGhhc0VuYWJsZUFjdGlvbkxpc3RlbmVyKCkpIHtcbiAgICAgICAgICAgIDxjODAtaWNvbiBidXR0b24gW2ljb25dPVwiZ2V0Q2VsbFZhbHVlKHJvdywgJ2VuYWJsZWQnKSA/ICd0b2dnbGVPbicgOiAndG9nZ2xlT2ZmJ1wiIFtjb2xvcl09XCJnZXRDZWxsVmFsdWUocm93LCAnZW5hYmxlZCcpID8gJ3N1Y2Nlc3MnIDogJ3NlY29uZGFyeSdcIiBbdGl0bGVdPVwiZ2V0Q2VsbFZhbHVlKHJvdywgJ2VuYWJsZWQnKSA/ICdEZXNoYWJpbGl0YXInIDogJ0hhYmlsaXRhcidcIlxuICAgICAgICAgICAgICAoaWNvbkNsaWNrKT1cIm9uRW5hYmxlKHJvdylcIiBbc2l6ZV09XCIuN1wiPlxuICAgICAgICAgICAgPC9jODAtaWNvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoaGFzRGVsZXRlQWN0aW9uTGlzdGVuZXIoKSkge1xuICAgICAgICAgICAgPGM4MC1pY29uIGJ1dHRvbiBpY29uPVwiZGVsZXRlXCIgY29sb3I9XCJ3YXJuXCIgdGl0bGU9XCJCb3JyYXJcIiAoaWNvbkNsaWNrKT1cIm9uRGVsZXRlKHJvdylcIiBbc2l6ZV09XCIuN1wiPjwvYzgwLWljb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIH1cbiAgICAgIDwvdHI+XG4gICAgICB9XG4gICAgICBAaWYgKGNyZWF0aW5nKCkgJiYgaGFzQ3JlYXRlQWN0aW9uTGlzdGVuZXIoKSkge1xuICAgICAgPHRyPlxuICAgICAgICBAaWYgKGhhc1NlbGVjdGFibGVMaXN0ZW5lcigpICYmIGRhdGEoKS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXIgc2VsZWN0aW9uLWNvbHVtblwiPlxuICAgICAgICAgIDwhLS0gRW1wdHkgY2VsbCBmb3IgYWxpZ25tZW50IC0tPlxuICAgICAgICA8L3RkPlxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKGNvbCBvZiBjb2x1bW5zOyB0cmFjayBjb2wpIHtcbiAgICAgICAgQGlmIChpc0NvbHVtblZpc2libGUoY29sLCB0cnVlKSkge1xuICAgICAgICBAaWYgKGNvbC50eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICBAaWYgKCFjb2wucmVhZE9ubHkpIHtcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiISFuZXdSb3coKT8uW2NvbC5hY2Nlc3Nvcl1cIiAoY2hhbmdlKT1cIm9uSW5wdXQoJGV2ZW50LCBjb2wuYWNjZXNzb3IsIGNvbClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbC5sYWJlbFwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBlbHNlIHtcbiAgICAgICAgICA8IS0tIFJlYWRPbmx5IGJvb2xlYW4gY29sdW1uIGluIGNyZWF0ZSBtb2RlIHNob3dzIGVtcHR5IC0tPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZFwiPi08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L3RkPlxuICAgICAgICB9IEBlbHNlIGlmIChjb2wudHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXIgbnVtYmVyLWNvbHVtblwiPlxuICAgICAgICAgIEBpZiAoIWNvbC5yZWFkT25seSkge1xuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiB0eXBlPVwibnVtYmVyXCIgW3ZhbHVlXT1cIm5ld1JvdygpPy5bY29sLmFjY2Vzc29yXSA/PyAnJ1wiIFtwbGFjZWhvbGRlcl09XCJjb2wubGFiZWxcIiAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQsIGNvbC5hY2Nlc3NvciwgY29sKVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBlbHNlIHtcbiAgICAgICAgICA8IS0tIFJlYWRPbmx5IG51bWJlciBjb2x1bW4gaW4gY3JlYXRlIG1vZGUgc2hvd3MgZW1wdHkgLS0+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkXCI+LTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8dGQ+XG4gICAgICAgICAgQGlmICghY29sLnJlYWRPbmx5KSB7XG4gICAgICAgICAgQGlmIChjb2wudHlwZSA9PT0gJ2VudW0nKSB7XG4gICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBbdmFsdWVdPVwibmV3Um93KCk/Lltjb2wuYWNjZXNzb3JdID8/ICcnXCIgKGNoYW5nZSk9XCJvbklucHV0KCRldmVudCwgY29sLmFjY2Vzc29yLCBjb2wpXCI+XG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+e3sgY29sLmxhYmVsIH19PC9vcHRpb24+XG4gICAgICAgICAgICBAZm9yIChvcHRpb24gb2YgZ2V0RW51bU9wdGlvbnMoY29sKTsgdHJhY2sgb3B0aW9uLnZhbHVlKSB7XG4gICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj57eyBvcHRpb24ubGFiZWwgfX08L29wdGlvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiB0eXBlPVwidGV4dFwiIFt2YWx1ZV09XCJuZXdSb3coKT8uW2NvbC5hY2Nlc3Nvcl0gPz8gJydcIiBbcGxhY2Vob2xkZXJdPVwiY29sLmxhYmVsXCIgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50LCBjb2wuYWNjZXNzb3IsIGNvbClcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgIDwhLS0gUmVhZE9ubHkgY29sdW1uIGluIGNyZWF0ZSBtb2RlIHNob3dzIGVtcHR5IC0tPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZFwiPi08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L3RkPlxuICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlciBhY3Rpb25zLWNlbGxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxjODAtaWNvbiBidXR0b24gaWNvbj1cImNoZWNrXCIgdGl0bGU9XCJHdWFyZGFyXCIgKGljb25DbGljayk9XCJzYXZlQ3JlYXRlKClcIiBbc2l6ZV09XCIuN1wiPjwvYzgwLWljb24+XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJjYW5jZWxcIiBjb2xvcj1cIndhcm5cIiB0aXRsZT1cIkNhbmNlbGFyXCIgKGljb25DbGljayk9XCJjYW5jZWxDcmVhdGUoKVwiIFtzaXplXT1cIi43XCI+PC9jODAtaWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICB9XG4gICAgPC90Ym9keT5cbiAgPC90YWJsZT5cbiAgQGlmIChkYXRhKCkubGVuZ3RoID09PSAwICYmICFjcmVhdGluZygpKSB7XG4gIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0ZXh0LW11dGVkIHB5LTMgc21hbGxcIj5cbiAgICBObyBoYXkgZGF0b3MgcGFyYSBtb3N0cmFyLlxuICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG5cbjxjODAtbW9kYWw+PC9jODAtbW9kYWw+Il19
|
|
476
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy91aS9zcmMvbGliL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFlBQVksRUFHWixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFpQixNQUFNLFNBQVMsQ0FBQztBQUMxRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUUzRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVERyxDQVFILE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsdUJBQXVCO0lBQ04sWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNwQyxpQkFBaUIsR0FBRyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUN6RCxTQUFTLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDMUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDakQsV0FBVyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRTdELFNBQVM7SUFDQSxLQUFLLENBQW1CO0lBQ3hCLE9BQU8sR0FBcUIsRUFBRSxDQUFDO0lBQy9CLFlBQVksQ0FBMEIsQ0FBQyxpRkFBaUY7SUFDeEgsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLDZEQUE2RDtJQUN2RSxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMseUNBQXlDO0lBRW5FLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxnREFBZ0Q7SUFDMUQsZ0JBQWdCLEdBQWEsVUFBVSxDQUFDLENBQUMscUNBQXFDO0lBQzlFLG1CQUFtQixHQUFHLHNCQUFzQixDQUFDLENBQUMsdUNBQXVDO0lBRTlGLFVBQVU7SUFDQSxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQXlELENBQUM7SUFDekYsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFxRSxDQUFDO0lBQ3JHLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBZ0QsQ0FBQztJQUNoRixZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWdELENBQUM7SUFDaEYsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFLLENBQUM7SUFDbkMsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFLLENBQUM7SUFDckMsa0JBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQUssQ0FBQztJQUMzQyxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUssQ0FBQyxDQUFDLGdDQUFnQztJQUN0RSxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWdELENBQUM7SUFDaEYsY0FBYyxHQUFHLElBQUksWUFBWSxFQUFnRCxDQUFDO0lBQ2xGLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBa0UsQ0FBQztJQUNsRyxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUN4QyxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUN4QyxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUUvQyxtQkFBbUI7SUFDVixJQUFJLEdBQUcsTUFBTSxDQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLElBQUksR0FBRyxNQUFNLENBQVcsRUFBRSxDQUFDLENBQUM7SUFDNUIsV0FBVyxHQUFHLE1BQU0sQ0FBUyxFQUFFLENBQUMsQ0FBQztJQUUxQyw0Q0FBNEM7SUFDM0IsY0FBYyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsRUFBSyxDQUFDO0lBQ3pFLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQztJQUNsRCxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDO0lBQ3hELHNCQUFzQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUM7SUFFN0Usb0NBQW9DO0lBQ25CLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBSyxDQUFDO0lBQzFELFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztJQUNuQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDL0IsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO0lBQ2pDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztJQUUxQywwQ0FBMEM7SUFDakMsdUJBQXVCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4Qyx1QkFBdUIsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsdUJBQXVCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0Qyx1QkFBdUIsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsdUJBQXVCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4Qyx1QkFBdUIsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMseUJBQXlCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxxQkFBcUIsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMscUJBQXFCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXZDLE9BQU8sQ0FBZ0I7SUFDdkIsY0FBYyxDQUFnQjtJQUU5QixlQUFlLENBQUMsR0FBWTtRQUNsQyxNQUFNLEtBQUssR0FBRyxHQUEyQixDQUFDO1FBQzFDLE9BQU8sS0FBSyxFQUFFLE9BQU8sSUFBSSx1QkFBdUIsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxpQkFBaUI7UUFDdkIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixDQUMxRCxJQUFJLENBQUMsT0FBTyxFQUNaLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFDWCxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQ2YsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUNmLENBQUM7UUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssZ0JBQWdCLENBQUMsYUFBeUI7UUFDaEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsUUFBUTtRQUNOLHNDQUFzQztRQUN0QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV6RCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDbEMsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3JCLGlFQUFpRTtnQkFDakUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3pCLGtFQUFrRTtnQkFDbEUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDM0IsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQVksRUFBRSxFQUFFLENBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbEQsQ0FBQyxDQUFDO1FBRUgsdUZBQXVGO1FBQ3ZGLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUM7Z0JBQ2hELElBQUksRUFBRSxDQUFDLGFBQWEsRUFBRSxFQUFFO29CQUN0QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ3ZDLENBQUM7Z0JBQ0QsS0FBSyxFQUFFLENBQUMsR0FBWSxFQUFFLEVBQUUsQ0FDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3BFLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUVuQyxtREFBbUQ7UUFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVksRUFBRSxHQUFXLEVBQUUsR0FBb0I7UUFDckQsSUFBSSxHQUFHLEVBQUUsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzVCLE1BQU0sT0FBTyxHQUFJLEtBQUssQ0FBQyxNQUEyQixDQUFDLE9BQU8sQ0FBQztZQUMzRCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNsQyxDQUFDO2FBQU0sSUFBSSxHQUFHLEVBQUUsSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ2hDLE1BQU0sS0FBSyxHQUFJLEtBQUssQ0FBQyxNQUE0QixDQUFDLEtBQUssQ0FBQztZQUN4RCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNoQyxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUEwQixDQUFDO1lBQ2hELElBQUksTUFBTSxJQUFJLE9BQU8sTUFBTSxDQUFDLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBTTtRQUNuQixNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFPLENBQUM7UUFFM0IsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEIsU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQ3pDLHVCQUF1QixFQUN2QixxRkFBcUYsRUFDckYsVUFBVSxFQUNWLFVBQVUsQ0FDWCxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsRUFBRTtnQkFDRixJQUFJLEVBQUUsQ0FBQyxPQUFnQixFQUFFLEVBQUU7b0JBQ3pCLElBQUksT0FBTzt3QkFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2pDLENBQUM7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBTTtRQUNuQixNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFPLENBQUM7UUFFM0IsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEIsU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQ3pDLHVCQUF1QixFQUN2QixtREFBbUQsRUFDbkQsbUJBQW1CLEVBQ25CLGFBQWEsQ0FDZCxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsRUFBRTtnQkFDRixJQUFJLEVBQUUsQ0FBQyxPQUFnQixFQUFFLEVBQUU7b0JBQ3pCLElBQUksT0FBTzt3QkFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2pDLENBQUM7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELHdFQUF3RTtRQUN4RSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDOUIsd0VBQXdFO1FBQ3hFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxZQUFZLENBQUMsR0FBVyxFQUFFLEtBQWM7UUFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFJRCxNQUFNLENBQUMsR0FBTTtRQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELHVFQUF1RTtRQUN2RSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDNUIsdUVBQXVFO1FBQ3ZFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBWSxFQUFFLEdBQVcsRUFBRSxHQUFvQjtRQUN6RCxJQUFJLEdBQUcsRUFBRSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDNUIsTUFBTSxPQUFPLEdBQUksS0FBSyxDQUFDLE1BQTJCLENBQUMsT0FBTyxDQUFDO1lBQzNELElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM3QyxDQUFDO2FBQU0sSUFBSSxHQUFHLEVBQUUsSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ2hDLE1BQU0sS0FBSyxHQUFJLEtBQUssQ0FBQyxNQUE0QixDQUFDLEtBQUssQ0FBQztZQUN4RCxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0MsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztZQUNoRCxJQUFJLE1BQU0sSUFBSSxPQUFPLE1BQU0sQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQU07UUFDYixNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFPLENBQUM7UUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTLENBQUMsS0FBYSxFQUFFLEdBQU07UUFDN0IsTUFBTSxFQUFFLEdBQ04sR0FBRyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxJQUFJLElBQUksR0FBRztZQUMzQyxDQUFDLENBQUUsR0FBK0IsQ0FBQyxJQUFJLENBQUM7WUFDeEMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNoQixPQUFPLE9BQU8sRUFBRSxLQUFLLFFBQVEsSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxHQUFNO1FBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsY0FBYyxDQUFDLEdBQU07UUFDbkIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjLENBQUMsR0FBTTtRQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQU07UUFDbkIsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBTyxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQ3JCLEVBQUU7WUFDRixJQUFJLEVBQUUsQ0FBQyxPQUFnQixFQUFFLEVBQUU7Z0JBQ3pCLElBQUksT0FBTztvQkFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDakMsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBTTtRQUNyQixNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFPLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7WUFDdkIsRUFBRTtZQUNGLElBQUksRUFBRSxDQUFDLE9BQWdCLEVBQUUsRUFBRTtnQkFDekIsSUFBSSxPQUFPO29CQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNqQyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFNO1FBQ25CLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQU8sQ0FBQztRQUMzQixNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFZLENBQUM7UUFDakQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDckIsRUFBRTtZQUNGLE9BQU8sRUFBRSxDQUFDLGNBQWMsRUFBRSwyQkFBMkI7WUFDckQsSUFBSSxFQUFFLENBQUMsT0FBZ0IsRUFBRSxFQUFFO2dCQUN6QixJQUFJLE9BQU87b0JBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2pDLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhLENBQUMsS0FBWTtRQUN4QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUNoRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsZ0NBQWdDO0lBQ2hDLFlBQVksQ0FBQyxHQUFNLEVBQUUsUUFBZ0I7UUFDbkMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFjO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQWMsRUFBRSxHQUFtQjtRQUNyRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxjQUFjLENBQUMsR0FBbUI7UUFDaEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWMsRUFBRSxHQUFtQjtRQUM5QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjO1FBQ1osSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssaUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQsbUJBQW1CLENBQUMsSUFBTztRQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFPO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUlELDhDQUE4QztJQUM5QyxlQUFlLENBQUMsTUFBc0IsRUFBRSxtQkFBbUIsR0FBRyxLQUFLO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVELHVCQUF1QixDQUFDLE1BQXNCO1FBQzVDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLHVCQUF1QixDQUNuRCxNQUFNLEVBQ04sSUFBSSxDQUFDLElBQUksRUFBRSxFQUNYLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFDZixJQUFJLENBQUMsT0FBTyxFQUFFLENBQ2YsQ0FBQztJQUNKLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxNQUFzQixFQUFFLEdBQU07UUFDbEQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLENBQ2pELE1BQU0sRUFDTixHQUFHLEVBQ0gsSUFBSSxDQUFDLElBQUksRUFBRSxFQUNYLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FDZixDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVEsQ0FBQyxHQUFNO1FBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsQ0FBQzt3R0FwYlUsaUJBQWlCOzRGQUFqQixpQkFBaUIsbU1BY1IsQ0FBQyxLQUF1QixFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssRUFBRSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLE1BQU0sZ2lCQ2hHckcsMHBYQTJQdUIsb2dIRDdLWCxnQkFBZ0IsZ01BQUUsaUJBQWlCOzs0RkFJbEMsaUJBQWlCO2tCQVIxQixTQUFTOytCQUVELFdBQVcsY0FDVCxJQUFJLFdBQ1AsQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQzs4QkFhckMsS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVOLFNBQVM7c0JBRFIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEtBQXVCLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxFQUFFLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssTUFBTSxFQUFFO2dCQUU1RixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUdJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBzaWduYWwsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEM4MEljb25Db21wb25lbnQsIHR5cGUgSWNvblR5cGUgfSBmcm9tICcuLi9pY29uJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uVmlzaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuL3RhYmxlLWNvbHVtbi12aXNpYmlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGVEYXRhVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi90YWJsZS1kYXRhLXV0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGVTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi90YWJsZS1zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBUYWJsZUNydWRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL3RhYmxlLWNydWQtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBDODBUYWJsZUNvbERlZiwgSUQgfSBmcm9tICcuL3RhYmxlLnR5cGVzJztcbmltcG9ydCB7IEM4ME1vZGFsQ29tcG9uZW50LCBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi9tb2RhbCc7XG5cbi8qKlxuICogQzgwVGFibGVDb21wb25lbnQgLSBDb21wb25lbnRlIGRlIHRhYmxhIGF2YW56YWRvIGNvbiBmdW5jaW9uYWxpZGFkZXMgQ1JVRFxuICpcbiAqIENPTVBPUlRBTUlFTlRPIERFIFZJU0lCSUxJREFEIERFIENPTFVNTkFTOlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIDEuIFBSSU9SSURBRCBNw4FYSU1BIC0gdmlzaWJsZTogZmFsc2VcbiAqICAgIC0gTGEgY29sdW1uYSBzZSBvY3VsdGEgU0lFTVBSRSwgc2luIGV4Y2VwY2lvbmVzXG4gKiAgICAtIE5pIGVuIG1vZG8gY3JlYWNpw7NuIG5pIGVuIG1vZG8gZWRpY2nDs24gc2UgbXVlc3RyYVxuICpcbiAqIDIuIE9DVUxUQUNJw5NOIEFVVE9Nw4FUSUNBIC0gaGlkZUlmQWxsVmFsdWVzQXJlTnVsbDogdHJ1ZVxuICogICAgLSBMYSBjb2x1bW5hIHNlIG9jdWx0YSBzb2xvIHNpIFRPRE9TIGxvcyB2YWxvcmVzIGFjdHVhbGVzIGVzdMOhbiB2YWPDrW9zXG4gKiAgICAtIFZhbG9yZXMgY29uc2lkZXJhZG9zIHZhY8Otb3M6IG51bGwsIHVuZGVmaW5lZCwgJycsIFtdLCB7fVxuICogICAgLSBWYWxvcmVzIE5PIHZhY8Otb3M6IDAsIGZhbHNlIChzb24gdmFsb3JlcyB2w6FsaWRvcylcbiAqICAgIC0gRVhDRVBDSU9ORVMgSU1QT1JUQU5URVM6XG4gKiAgICAgICogRW4gbW9kbyBjcmVhY2nDs24gKGNyZWF0aW5nPXRydWUpIGVzdGFzIGNvbHVtbmFzIFPDjSBzZSBtdWVzdHJhblxuICogICAgICAqIEVuIG1vZG8gZWRpY2nDs24gZGUgdW5hIGZpbGEgZXNwZWPDrWZpY2Egc2UgbXVlc3RyYW4gU09MTyBzaSBlc2EgZmlsYSB0aWVuZSB2YWxvclxuICpcbiAqIDMuIFBPUiBERUZFQ1RPIC0gQ29sdW1uYXMgbm9ybWFsZXNcbiAqICAgIC0gU2UgbXVlc3RyYW4gc2llbXByZSAodmlzdWFsaXphY2nDs24sIGNyZWFjacOzbiB5IGVkaWNpw7NuKVxuICpcbiAqIFZBTE9SRVMgUE9SIERFRkVDVE8gRU4gQ1JFQUNJw5NOOlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIC0gUHJvcGllZGFkIGBkZWZhdWx0PzogdW5rbm93bmAgcGVybWl0ZSBkZWZpbmlyIHZhbG9yZXMgcG9yIGRlZmVjdG8gcGFyYSBtb2RvIGNyZWFjacOzblxuICogLSBTb2xvIHNlIGFwbGljYSBjdWFuZG8gc2UgaW5pY2lhIGVsIG1vZG8gY3JlYWNpw7NuIChzdGFydENyZWF0ZSlcbiAqIC0gUHVlZGUgc2VyIGN1YWxxdWllciB0aXBvOiBzdHJpbmcsIG51bWJlciwgYm9vbGVhbiwgZXRjLlxuICogLSBTaSBubyBzZSBlc3BlY2lmaWNhIGBkZWZhdWx0YCwgc2UgdXNhIGNhZGVuYSB2YWPDrWEgKCcnKVxuICpcbiAqIFZBTE9SRVMgRElOw4FNSUNPUyBFTiBDUkVBQ0nDk04gWSBFRElDScOTTjpcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIC0gSW5wdXQgYGlucHV0VmFsdWVzJD86IE9ic2VydmFibGU8UGFydGlhbDxUPj5gIHBlcm1pdGUgYWN0dWFsaXphciB2YWxvcmVzIGRpbsOhbWljYW1lbnRlXG4gKiAtIFNvbG8gc2UgYXBsaWNhIGR1cmFudGUgbW9kbyBjcmVhY2nDs24gKGNyZWF0aW5nPXRydWUpIG8gZWRpY2nDs24gKGVkaXRpbmchPW51bGwpXG4gKiAtIExvcyB2YWxvcmVzIHNlIGFwbGljYW4gYXV0b23DoXRpY2FtZW50ZSBjdWFuZG8gZWwgT2JzZXJ2YWJsZSBlbWl0ZVxuICogLSBQZXJtaXRlIGNhbWJpb3MgbcO6bHRpcGxlcyBkdXJhbnRlIGVsIG1pc21vIG1vZG8gZGUgY3JlYWNpw7NuL2VkaWNpw7NuXG4gKiAtIExvcyBudWV2b3MgdmFsb3JlcyBzb2JyZXNjcmliZW4gbG9zIGV4aXN0ZW50ZXMgKHNwcmVhZCBvcGVyYXRvcilcbiAqXG4gKiBUSVBPUyBERSBEQVRPUyBTT1BPUlRBRE9TOlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PVxuICpcbiAqIC0gJ3N0cmluZyc6IFRleHRvIG5vcm1hbCAoZGVmYXVsdClcbiAqIC0gJ251bWJlcic6IE7Dum1lcm9zIGRlY2ltYWxlcyAocHJlc2VydmEgZGVjaW1hbGVzOiA1LjMg4oaSIDUuMylcbiAqIC0gJ2ludGVnZXInOiBOw7ptZXJvcyBlbnRlcm9zIChjb252aWVydGUgYSBlbnRlcm86IDUuMyDihpIgNSlcbiAqIC0gJ2Jvb2xlYW4nOiBWZXJkYWRlcm8vRmFsc28gKGNoZWNrYm94KVxuICogLSAncGFzc3dvcmQnOiBUZXh0byBvY3VsdG8gKGlucHV0IHR5cGU9XCJwYXNzd29yZFwiKVxuICogLSAnZW51bSc6IExpc3RhIGRlIG9wY2lvbmVzIHByZWRlZmluaWRhcyAoc2VsZWN0KVxuICpcbiAqIEVKRU1QTE9TOlxuICogLSB7IGFjY2Vzc29yOiAnaWQnLCB2aXNpYmxlOiBmYWxzZSB9IOKGkiBOVU5DQSBzZSBtdWVzdHJhXG4gKiAtIHsgYWNjZXNzb3I6ICdtb3RvclBvcycsIGhpZGVJZkFsbFZhbHVlc0FyZU51bGw6IHRydWUsIGRlZmF1bHQ6IDAsIHR5cGU6ICdpbnRlZ2VyJyB9IOKGkiBFbnRlcm8gKDUuNyDihpIgNSlcbiAqIC0geyBhY2Nlc3NvcjogJ3dlaWdodCcsIHR5cGU6ICdudW1iZXInLCBkZWZhdWx0OiAyLjUgfSDihpIgRGVjaW1hbCBwcmVzZXJ2YWRvICg1Ljcg4oaSIDUuNylcbiAqIC0geyBhY2Nlc3NvcjogJ3N0YXR1cycsIGRlZmF1bHQ6ICdhY3RpdmUnIH0g4oaSIFNlIGF1dG9yZWxsZW5hIGNvbiAnYWN0aXZlJyBlbiBjcmVhY2nDs25cbiAqIC0geyBhY2Nlc3NvcjogJ25hbWUnIH0g4oaSIFNpZW1wcmUgdmlzaWJsZSwgc2luIHZhbG9yIHBvciBkZWZlY3RvIChjYWRlbmEgdmFjw61hKVxuICogLSBpbnB1dFZhbHVlcyQgZW1pdGUgeyBtb3RvclBvczogNSwgd2VpZ2h0OiAyLjMgfSDihpIgYWN0dWFsaXphIGlucHV0cyBkaW7DoW1pY2FtZW50ZVxuICovQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnYzgwLXRhYmxlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0M4MEljb25Db21wb25lbnQsIEM4ME1vZGFsQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgQzgwVGFibGVDb21wb25lbnQ8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLy8gU2VydmljaW9zIGlueWVjdGFkb3NcbiAgcHJpdmF0ZSByZWFkb25seSBtb2RhbFNlcnZpY2UgPSBpbmplY3QoTW9kYWxTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSB2aXNpYmlsaXR5U2VydmljZSA9IGluamVjdChUYWJsZUNvbHVtblZpc2liaWxpdHlTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkYXRhVXRpbHMgPSBpbmplY3QoVGFibGVEYXRhVXRpbHNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3Rpb25TZXJ2aWNlID0gaW5qZWN0KFRhYmxlU2VsZWN0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY3J1ZFNlcnZpY2UgPSBpbmplY3QoVGFibGVDcnVkU3RhdGVTZXJ2aWNlKTtcblxuICAvLyBJbnB1dHNcbiAgQElucHV0KCkgZGF0YSQhOiBPYnNlcnZhYmxlPFRbXT47XG4gIEBJbnB1dCgpIGNvbHVtbnM6IEM4MFRhYmxlQ29sRGVmW10gPSBbXTtcbiAgQElucHV0KCkgaW5wdXRWYWx1ZXMkPzogT2JzZXJ2YWJsZTxQYXJ0aWFsPFQ+PjsgLy8gT2JzZXJ2YWJsZSBwYXJhIGFjdHVhbGl6YXIgdmFsb3JlcyBkZSBpbnB1dHMgZGluw6FtaWNhbWVudGUgZW4gY3JlYWNpw7NuL2VkaWNpw7NuXG4gIEBJbnB1dCgpIHNpemUgPSAwOyAvLyBUYW1hw7FvIGRlIGxhIHRhYmxhICgwID0gc2luIGzDrW1pdGUsID4gMCBhcGxpY2EgbWF4LWhlaWdodClcbiAgQElucHV0KCkgbXVsdGlwbGUgPSB0cnVlOyAvLyBQZXJtaXRlIHNlbGVjY2nDs24gbcO6bHRpcGxlIHBvciBkZWZlY3RvXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogKHZhbHVlOiBib29sZWFuIHwgc3RyaW5nKSA9PiB2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09ICd0cnVlJyB9KVxuICBub0NvbmZpcm0gPSBmYWxzZTsgLy8gU2kgZXMgdHJ1ZSwgbm8gbXVlc3RyYSBjb25maXJtYWNpb25lcyBtb2RhbGVzXG4gIEBJbnB1dCgpIGN1c3RvbUFjdGlvbkljb246IEljb25UeXBlID0gJ3NldHRpbmdzJzsgLy8gSWNvbm8gcGFyYSBsYSBhY2Npw7NuIHBlcnNvbmFsaXphZGFcbiAgQElucHV0KCkgY3VzdG9tQWN0aW9uVG9vbHRpcCA9ICdBY2Npw7NuIHBlcnNvbmFsaXphZGEnOyAvLyBUb29sdGlwIHBhcmEgbGEgYWNjacOzbiBwZXJzb25hbGl6YWRhXG5cbiAgLy8gT3V0cHV0c1xuICBAT3V0cHV0KCkgY3JlYXRlQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx7IHJvdzogUGFydGlhbDxUPjsgZG9uZTogKHJlc3VsdDogYm9vbGVhbikgPT4gdm9pZDsgfT4oKTtcbiAgQE91dHB1dCgpIHVwZGF0ZUFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpZDogSUQ7IGNoYW5nZXM6IFBhcnRpYWw8VD47IGRvbmU6IChyZXN1bHQ6IGJvb2xlYW4pID0+IHZvaWQ7IH0+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGVBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgaWQ6IElEOyBkb25lOiAocmVzdWx0OiBib29sZWFuKSA9PiB2b2lkOyB9PigpO1xuICBAT3V0cHV0KCkgY2FuY2VsQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx7IGlkOiBJRDsgZG9uZTogKHJlc3VsdDogYm9vbGVhbikgPT4gdm9pZDsgfT4oKTtcbiAgQE91dHB1dCgpIHZpZXdBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG4gIEBPdXRwdXQoKSB1cGxvYWRBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG4gIEBPdXRwdXQoKSBnZXRSb3dCdXR0b25BY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG4gIEBPdXRwdXQoKSBjdXN0b21BY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7IC8vIEFjY2nDs24gcGVyc29uYWxpemFkYSBnZW7DqXJpY2FcbiAgQE91dHB1dCgpIG1vdmVVcEFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpZDogSUQ7IGRvbmU6IChyZXN1bHQ6IGJvb2xlYW4pID0+IHZvaWQ7IH0+KCk7XG4gIEBPdXRwdXQoKSBtb3ZlRG93bkFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpZDogSUQ7IGRvbmU6IChyZXN1bHQ6IGJvb2xlYW4pID0+IHZvaWQ7IH0+KCk7XG4gIEBPdXRwdXQoKSBlbmFibGVBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgaWQ6IElEOyBlbmFibGVkOiBib29sZWFuOyBkb25lOiAocmVzdWx0OiBib29sZWFuKSA9PiB2b2lkOyB9PigpO1xuICBAT3V0cHV0KCkgc2VhcmNoVGVybSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgZXJyb3JFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgc2VsZWN0YWJsZSA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xuXG4gIC8vIEVzdGFkbyBwcmluY2lwYWxcbiAgcmVhZG9ubHkgZGF0YSA9IHNpZ25hbDxUW10+KFtdKTtcbiAgcmVhZG9ubHkga2V5cyA9IHNpZ25hbDxzdHJpbmdbXT4oW10pO1xuICByZWFkb25seSBzZWFyY2hWYWx1ZSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcblxuICAvLyBFc3RhZG8gZGUgc2VsZWNjacOzbiAoZGVsZWdhZG8gYSBzZXJ2aWNpbylcbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3Rpb25TdGF0ZSA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5jcmVhdGVTZWxlY3Rpb25TdGF0ZTxUPigpO1xuICByZWFkb25seSBzZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3Rpb25TdGF0ZS5zZWxlY3RlZEl0ZW1zO1xuICByZWFkb25seSBzZWxlY3RBbGxDaGVja2VkID0gdGhpcy5zZWxlY3Rpb25TdGF0ZS5zZWxlY3RBbGxDaGVja2VkO1xuICByZWFkb25seSBzZWxlY3RBbGxJbmRldGVybWluYXRlID0gdGhpcy5zZWxlY3Rpb25TdGF0ZS5zZWxlY3RBbGxJbmRldGVybWluYXRlO1xuXG4gIC8vIEVzdGFkbyBDUlVEIChkZWxlZ2FkbyBhIHNlcnZpY2lvKVxuICBwcml2YXRlIHJlYWRvbmx5IGNydWRTdGF0ZSA9IHRoaXMuY3J1ZFNlcnZpY2UuY3JlYXRlQ3J1ZFN0YXRlPFQ+KCk7XG4gIHJlYWRvbmx5IGNyZWF0aW5nID0gdGhpcy5jcnVkU3RhdGUuY3JlYXRpbmc7XG4gIHJlYWRvbmx5IG5ld1JvdyA9IHRoaXMuY3J1ZFN0YXRlLm5ld1JvdztcbiAgcmVhZG9ubHkgZWRpdGluZyA9IHRoaXMuY3J1ZFN0YXRlLmVkaXRpbmc7XG4gIHJlYWRvbmx5IGVkaXRSb3cgPSB0aGlzLmNydWRTdGF0ZS5lZGl0Um93O1xuXG4gIC8vIEZsYWdzIHRvIGNoZWNrIGlmIGV2ZW50cyBoYXZlIGxpc3RlbmVyc1xuICByZWFkb25seSBoYXNDcmVhdGVBY3Rpb25MaXN0ZW5lciA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGhhc1VwZGF0ZUFjdGlvbkxpc3RlbmVyID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaGFzRGVsZXRlQWN0aW9uTGlzdGVuZXIgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBoYXNDYW5jZWxBY3Rpb25MaXN0ZW5lciA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGhhc1ZpZXdBY3Rpb25MaXN0ZW5lciA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGhhc1VwbG9hZEFjdGlvbkxpc3RlbmVyID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaGFzR2V0Um93QnV0dG9uTGlzdGVuZXIgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBoYXNDdXN0b21BY3Rpb25MaXN0ZW5lciA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGhhc01vdmVVcEFjdGlvbkxpc3RlbmVyID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaGFzTW92ZURvd25BY3Rpb25MaXN0ZW5lciA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGhhc0VuYWJsZUFjdGlvbkxpc3RlbmVyID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaGFzU2VhcmNoVGVybUxpc3RlbmVyID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaGFzU2VsZWN0YWJsZUxpc3RlbmVyID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcml2YXRlIGRhdGFTdWI/OiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgaW5wdXRWYWx1ZXNTdWI/OiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBnZXRFcnJvck1lc3NhZ2UoZXJyOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBjb25zdCBlcnJvciA9IGVyciBhcyB7IG1lc3NhZ2U/OiBzdHJpbmcgfTtcbiAgICByZXR1cm4gZXJyb3I/Lm1lc3NhZ2UgfHwgJ0Vycm9yIGFsIGNhcmdhciBkYXRvcyc7XG4gIH1cblxuICAvKipcbiAgICogQWN0dWFsaXphIGxhcyBrZXlzIGRlIGNvbHVtbmFzIHZpc2libGVzIGJhc8OhbmRvc2UgZW4gZWwgZXN0YWRvIGFjdHVhbFxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVWaXNpYmxlS2V5cygpOiB2b2lkIHtcbiAgICBjb25zdCB2aXNpYmxlS2V5cyA9IHRoaXMudmlzaWJpbGl0eVNlcnZpY2UudXBkYXRlVmlzaWJsZUtleXMoXG4gICAgICB0aGlzLmNvbHVtbnMsXG4gICAgICB0aGlzLmRhdGEoKSxcbiAgICAgIHRoaXMuY3JlYXRpbmcoKSxcbiAgICAgIHRoaXMuZWRpdGluZygpXG4gICAgKTtcbiAgICB0aGlzLmtleXMuc2V0KHZpc2libGVLZXlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcGxpY2EgdmFsb3JlcyBwYXJjaWFsZXMgYSBsb3MgaW5wdXRzIGVuIG1vZG8gY3JlYWNpw7NuIG8gZWRpY2nDs24uXG4gICAqIFNvbG8gYWN0dWFsaXphIHNpIGVzdGFtb3MgZW4gbW9kbyBjcmVhY2nDs24gKGNyZWF0aW5nID0gdHJ1ZSkgbyBlZGljacOzbiAoZWRpdGluZyAhPSBudWxsKVxuICAgKi9cbiAgcHJpdmF0ZSBhcHBseUlucHV0VmFsdWVzKHBhcnRpYWxWYWx1ZXM6IFBhcnRpYWw8VD4pOiB2b2lkIHtcbiAgICB0aGlzLmNydWRTdGF0ZS5hcHBseUlucHV0VmFsdWVzKHBhcnRpYWxWYWx1ZXMpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gQ2hlY2sgaWYgdGhlIG91dHB1dHMgaGF2ZSBsaXN0ZW5lcnNcbiAgICB0aGlzLmhhc0NyZWF0ZUFjdGlvbkxpc3RlbmVyLnNldCh0aGlzLmNyZWF0ZUFjdGlvbi5vYnNlcnZlZCk7XG4gICAgdGhpcy5oYXNVcGRhdGVBY3Rpb25MaXN0ZW5lci5zZXQodGhpcy51cGRhdGVBY3Rpb24ub2JzZXJ2ZWQpO1xuICAgIHRoaXMuaGFzRGVsZXRlQWN0aW9uTGlzdGVuZXIuc2V0KHRoaXMuZGVsZXRlQWN0aW9uLm9ic2VydmVkKTtcbiAgICB0aGlzLmhhc0NhbmNlbEFjdGlvbkxpc3RlbmVyLnNldCh0aGlzLmNhbmNlbEFjdGlvbi5vYnNlcnZlZCk7XG4gICAgdGhpcy5oYXNWaWV3QWN0aW9uTGlzdGVuZXIuc2V0KHRoaXMudmlld0FjdGlvbi5vYnNlcnZlZCk7XG4gICAgdGhpcy5oYXNVcGxvYWRBY3Rpb25MaXN0ZW5lci5zZXQodGhpcy51cGxvYWRBY3Rpb24ub2JzZXJ2ZWQpO1xuICAgIHRoaXMuaGFzR2V0Um93QnV0dG9uTGlzdGVuZXIuc2V0KHRoaXMuZ2V0Um93QnV0dG9uQWN0aW9uLm9ic2VydmVkKTtcbiAgICB0aGlzLmhhc0N1c3RvbUFjdGlvbkxpc3RlbmVyLnNldCh0aGlzLmN1c3RvbUFjdGlvbi5vYnNlcnZlZCk7XG4gICAgdGhpcy5oYXNNb3ZlVXBBY3Rpb25MaXN0ZW5lci5zZXQodGhpcy5tb3ZlVXBBY3Rpb24ub2JzZXJ2ZWQpO1xuICAgIHRoaXMuaGFzTW92ZURvd25BY3Rpb25MaXN0ZW5lci5zZXQodGhpcy5tb3ZlRG93bkFjdGlvbi5vYnNlcnZlZCk7XG4gICAgdGhpcy5oYXNFbmFibGVBY3Rpb25MaXN0ZW5lci5zZXQodGhpcy5lbmFibGVBY3Rpb24ub2JzZXJ2ZWQpO1xuICAgIHRoaXMuaGFzU2VhcmNoVGVybUxpc3RlbmVyLnNldCh0aGlzLnNlYXJjaFRlcm0ub2JzZXJ2ZWQpO1xuICAgIHRoaXMuaGFzU2VsZWN0YWJsZUxpc3RlbmVyLnNldCh0aGlzLnNlbGVjdGFibGUub2JzZXJ2ZWQpO1xuXG4gICAgaWYgKCF0aGlzLmRhdGEkKSByZXR1cm47XG4gICAgdGhpcy5kYXRhU3ViID0gdGhpcy5kYXRhJC5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGl0ZW1zKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0YVV0aWxzLmFwcGx5U29ydGluZyhpdGVtcywgdGhpcy5jb2x1bW5zKTtcbiAgICAgICAgdGhpcy5kYXRhLnNldChpdGVtcyk7XG4gICAgICAgIC8vIEFjdHVhbGl6YXIgbGFzIGNvbHVtbmFzIHZpc2libGVzIGJhc8OhbmRvc2UgZW4gZWwgZXN0YWRvIGFjdHVhbFxuICAgICAgICB0aGlzLnVwZGF0ZVZpc2libGVLZXlzKCk7XG4gICAgICAgIC8vIE1hbnRlbmVyIGxhIHNlbGVjY2nDs24gZXhpc3RlbnRlIGRlc3B1w6lzIGRlIGFjdHVhbGl6YXIgbG9zIGRhdG9zXG4gICAgICAgIHRoaXMucHJlc2VydmVTZWxlY3Rpb24oKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycjogdW5rbm93bikgPT5cbiAgICAgICAgdGhpcy5lcnJvckV2ZW50LmVtaXQodGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyKSksXG4gICAgfSk7XG5cbiAgICAvLyBTdXNjcmliaXJzZSBhIGlucHV0VmFsdWVzJCBwYXJhIGFjdHVhbGl6YXIgdmFsb3JlcyBkaW7DoW1pY2FtZW50ZSBlbiBjcmVhY2nDs24vZWRpY2nDs25cbiAgICBpZiAodGhpcy5pbnB1dFZhbHVlcyQpIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZXNTdWIgPSB0aGlzLmlucHV0VmFsdWVzJC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocGFydGlhbFZhbHVlcykgPT4ge1xuICAgICAgICAgIHRoaXMuYXBwbHlJbnB1dFZhbHVlcyhwYXJ0aWFsVmFsdWVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnI6IHVua25vd24pID0+XG4gICAgICAgICAgY29uc29sZS53YXJuKCdFcnJvciBlbiBpbnB1dFZhbHVlcyQ6JywgdGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyKSksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRhdGFTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5pbnB1dFZhbHVlc1N1Yj8udW5zdWJzY3JpYmUoKTtcblxuICAgIC8vIENsb3NlIGFueSBvcGVuIG1vZGFsIHdoZW4gY29tcG9uZW50IGlzIGRlc3Ryb3llZFxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLmNsb3NlTW9kYWwoKTtcbiAgfVxuXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50LCBrZXk6IHN0cmluZywgY29sPzogQzgwVGFibGVDb2xEZWYpIHtcbiAgICBpZiAoY29sPy50eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIGNvbnN0IGNoZWNrZWQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmNoZWNrZWQ7XG4gICAgICB0aGlzLnVwZGF0ZU5ld1JvdyhrZXksIGNoZWNrZWQpO1xuICAgIH0gZWxzZSBpZiAoY29sPy50eXBlID09PSAnZW51bScpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MU2VsZWN0RWxlbWVudCkudmFsdWU7XG4gICAgICB0aGlzLnVwZGF0ZU5ld1JvdyhrZXksIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICBpZiAodGFyZ2V0ICYmIHR5cGVvZiB0YXJnZXQudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTmV3Um93KGtleSwgdGFyZ2V0LnZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBvbkRlbGV0ZShyb3c6IFQpIHtcbiAgICBjb25zdCBpZCA9IHJvd1snaWQnXSBhcyBJRDtcblxuICAgIGxldCBjb25maXJtZWQgPSB0cnVlO1xuICAgIGlmICghdGhpcy5ub0NvbmZpcm0pIHtcbiAgICAgIGNvbmZpcm1lZCA9IGF3YWl0IHRoaXMubW9kYWxTZXJ2aWNlLmNvbmZpcm0oXG4gICAgICAgICdDb25maXJtYXIgZWxpbWluYWNpw7NuJyxcbiAgICAgICAgJ8K/RXN0w6Egc2VndXJvIGRlIHF1ZSBkZXNlYSBlbGltaW5hciBlc3RlIGVsZW1lbnRvPyBFc3RhIGFjY2nDs24gbm8gc2UgcHVlZGUgZGVzaGFjZXIuJyxcbiAgICAgICAgJ0VsaW1pbmFyJyxcbiAgICAgICAgJ0NhbmNlbGFyJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlybWVkKSB7XG4gICAgICB0aGlzLmRlbGV0ZUFjdGlvbi5lbWl0KHtcbiAgICAgICAgaWQsXG4gICAgICAgIGRvbmU6IChzdWNjZXNzOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgaWYgKHN1Y2Nlc3MpIHRoaXMuY2FuY2VsRWRpdCgpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb25DYW5jZWwocm93OiBUKSB7XG4gICAgY29uc3QgaWQgPSByb3dbJ2lkJ10gYXMgSUQ7XG5cbiAgICBsZXQgY29uZmlybWVkID0gdHJ1ZTtcbiAgICBpZiAoIXRoaXMubm9Db25maXJtKSB7XG4gICAgICBjb25maXJtZWQgPSBhd2FpdCB0aGlzLm1vZGFsU2VydmljZS5jb25maXJtKFxuICAgICAgICAnQ29uZmlybWFyIGNhbmNlbGFjacOzbicsXG4gICAgICAgICfCv0VzdMOhIHNlZ3VybyBkZSBxdWUgZGVzZWEgY2FuY2VsYXIgZXN0ZSBlbGVtZW50bz8nLFxuICAgICAgICAnQ2FuY2VsYXIgZWxlbWVudG8nLFxuICAgICAgICAnTm8gY2FuY2VsYXInXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChjb25maXJtZWQpIHtcbiAgICAgIHRoaXMuY2FuY2VsQWN0aW9uLmVtaXQoe1xuICAgICAgICBpZCxcbiAgICAgICAgZG9uZTogKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICBpZiAoc3VjY2VzcykgdGhpcy5jYW5jZWxFZGl0KCk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzdGFydENyZWF0ZSgpIHtcbiAgICB0aGlzLmNydWRTdGF0ZS5zdGFydENyZWF0ZSh0aGlzLmNvbHVtbnMsIHRoaXMuZGF0YSgpKTtcbiAgICAvLyBBY3R1YWxpemFyIGtleXMgZGUgY29sdW1uYXMgdmlzaWJsZXMgY3VhbmRvIGVudHJhbW9zIGVuIG1vZG8gY3JlYWNpw7NuXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlS2V5cygpO1xuICB9XG5cbiAgY2FuY2VsQ3JlYXRlKCkge1xuICAgIHRoaXMuY3J1ZFN0YXRlLmNhbmNlbENyZWF0ZSgpO1xuICAgIC8vIEFjdHVhbGl6YXIga2V5cyBkZSBjb2x1bW5hcyB2aXNpYmxlcyBjdWFuZG8gc2FsaW1vcyBkZWwgbW9kbyBjcmVhY2nDs25cbiAgICB0aGlzLnVwZGF0ZVZpc2libGVLZXlzKCk7XG4gIH1cblxuICB1cGRhdGVOZXdSb3coa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKSB7XG4gICAgdGhpcy5jcnVkU3RhdGUudXBkYXRlTmV3Um93KGtleSwgdmFsdWUpO1xuICB9XG5cbiAgc2F2ZUNyZWF0ZSgpIHtcbiAgICB0aGlzLmNydWRTdGF0ZS5zYXZlQ3JlYXRlKHRoaXMuY29sdW1ucywgdGhpcy5kYXRhKCksIHRoaXMuY3JlYXRlQWN0aW9uKTtcbiAgfVxuXG5cblxuICBvbkVkaXQocm93OiBUKSB7XG4gICAgdGhpcy5jcnVkU3RhdGUuc3RhcnRFZGl0KHJvdywgdGhpcy5jb2x1bW5zLCB0aGlzLmRhdGEoKSk7XG4gICAgLy8gQWN0dWFsaXphciBrZXlzIGRlIGNvbHVtbmFzIHZpc2libGVzIGN1YW5kbyBlbnRyYW1vcyBlbiBtb2RvIGVkaWNpw7NuXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlS2V5cygpO1xuICB9XG5cbiAgY2FuY2VsRWRpdCgpIHtcbiAgICB0aGlzLmNydWRTdGF0ZS5jYW5jZWxFZGl0KCk7XG4gICAgLy8gQWN0dWFsaXphciBrZXlzIGRlIGNvbHVtbmFzIHZpc2libGVzIGN1YW5kbyBzYWxpbW9zIGRlbCBtb2RvIGVkaWNpw7NuXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlS2V5cygpO1xuICB9XG5cbiAgb25FZGl0SW5wdXQoZXZlbnQ6IEV2ZW50LCBrZXk6IHN0cmluZywgY29sPzogQzgwVGFibGVDb2xEZWYpIHtcbiAgICBpZiAoY29sPy50eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIGNvbnN0IGNoZWNrZWQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmNoZWNrZWQ7XG4gICAgICB0aGlzLmNydWRTdGF0ZS51cGRhdGVFZGl0Um93KGtleSwgY2hlY2tlZCk7XG4gICAgfSBlbHNlIGlmIChjb2w/LnR5cGUgPT09ICdlbnVtJykge1xuICAgICAgY29uc3QgdmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxTZWxlY3RFbGVtZW50KS52YWx1ZTtcbiAgICAgIHRoaXMuY3J1ZFN0YXRlLnVwZGF0ZUVkaXRSb3coa2V5LCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgaWYgKHRhcmdldCAmJiB0eXBlb2YgdGFyZ2V0LnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLmNydWRTdGF0ZS51cGRhdGVFZGl0Um93KGtleSwgdGFyZ2V0LnZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzYXZlRWRpdChyb3c6IFQpIHtcbiAgICBjb25zdCBpZCA9IHJvd1snaWQnXSBhcyBJRDtcbiAgICB0aGlzLmNydWRTdGF0ZS5zYXZlRWRpdChpZCwgdGhpcy5jb2x1bW5zLCB0aGlzLmRhdGEoKSwgdGhpcy51cGRhdGVBY3Rpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYWNrQnkgZnVuY3Rpb24gZm9yIG5nRm9yIHRvIGF2b2lkIERPTSByZS1jcmVhdGlvbiAoTkcwOTU2IHdhcm5pbmcpLlxuICAgKi9cbiAgdHJhY2tCeUlkKGluZGV4OiBudW1iZXIsIHJvdzogVCk6IG51bWJlciB8IHN0cmluZyB7XG4gICAgY29uc3QgaWQgPVxuICAgICAgcm93ICYmIHR5cGVvZiByb3cgPT09ICdvYmplY3QnICYmICdpZCcgaW4gcm93XG4gICAgICAgID8gKHJvdyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbJ2lkJ11cbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHR5cGVvZiBpZCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGlkID09PSAnbnVtYmVyJyA/IGlkIDogaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgdGhlIHZpZXcgZXZlbnQgd2l0aCB0aGUgZW50aXJlIHJvdyBkYXRhXG4gICAqL1xuICBvblZpZXcocm93OiBUKTogdm9pZCB7XG4gICAgdGhpcy52aWV3QWN0aW9uLmVtaXQocm93KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgZ2V0Um93QnV0dG9uQWN0aW9uIGV2ZW50IHdpdGggdGhlIGVudGlyZSByb3cgZGF0YVxuICAgKi9cbiAgb25HZXRSb3dCdXR0b24ocm93OiBUKTogdm9pZCB7XG4gICAgdGhpcy5nZXRSb3dCdXR0b25BY3Rpb24uZW1pdChyb3cpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBjdXN0b21BY3Rpb24gZXZlbnQgd2l0aCB0aGUgZW50aXJlIHJvdyBkYXRhXG4gICAqL1xuICBvbkN1c3RvbUFjdGlvbihyb3c6IFQpOiB2b2lkIHtcbiAgICB0aGlzLmN1c3RvbUFjdGlvbi5lbWl0KHJvdyk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgdGhlIG1vdmVVcEFjdGlvbiBldmVudCB3aXRoIHRoZSByb3cgaWRcbiAgICovXG4gIGFzeW5jIG9uTW92ZVVwKHJvdzogVCkge1xuICAgIGNvbnN0IGlkID0gcm93WydpZCddIGFzIElEO1xuICAgIHRoaXMubW92ZVVwQWN0aW9uLmVtaXQoe1xuICAgICAgaWQsXG4gICAgICBkb25lOiAoc3VjY2VzczogYm9vbGVhbikgPT4ge1xuICAgICAgICBpZiAoc3VjY2VzcykgdGhpcy5jYW5jZWxFZGl0KCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBtb3ZlRG93bkFjdGlvbiBldmVudCB3aXRoIHRoZSByb3cgaWRcbiAgICovXG4gIGFzeW5jIG9uTW92ZURvd24ocm93OiBUKSB7XG4gICAgY29uc3QgaWQgPSByb3dbJ2lkJ10gYXMgSUQ7XG4gICAgdGhpcy5tb3ZlRG93bkFjdGlvbi5lbWl0KHtcbiAgICAgIGlkLFxuICAgICAgZG9uZTogKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKHN1Y2Nlc3MpIHRoaXMuY2FuY2VsRWRpdCgpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgZW5hYmxlQWN0aW9uIGV2ZW50IHdpdGggdGhlIHJvdyBpZCBhbmQgY3VycmVudCBlbmFibGVkIHN0YXR1c1xuICAgKi9cbiAgYXN5bmMgb25FbmFibGUocm93OiBUKSB7XG4gICAgY29uc3QgaWQgPSByb3dbJ2lkJ10gYXMgSUQ7XG4gICAgY29uc3QgY3VycmVudEVuYWJsZWQgPSByb3dbJ2VuYWJsZWQnXSBhcyBib29sZWFuO1xuICAgIHRoaXMuZW5hYmxlQWN0aW9uLmVtaXQoe1xuICAgICAgaWQsXG4gICAgICBlbmFibGVkOiAhY3VycmVudEVuYWJsZWQsIC8vIFRvZ2dsZSB0aGUgY3VycmVudCBzdGF0ZVxuICAgICAgZG9uZTogKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKHN1Y2Nlc3MpIHRoaXMuY2FuY2VsRWRpdCgpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHNlYXJjaCBpbnB1dCBjaGFuZ2VzIHdpdGggZGVib3VuY2luZ1xuICAgKi9cbiAgb25TZWFyY2hJbnB1dChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBjb25zdCB2YWx1ZSA9IHRhcmdldC52YWx1ZTtcbiAgICB0aGlzLnNlYXJjaFZhbHVlLnNldCh2YWx1ZSk7XG4gICAgdGhpcy5zZWFyY2hUZXJtLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUgc2VhcmNoIGlucHV0XG4gICAqL1xuICBjbGVhclNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFZhbHVlLnNldCgnJyk7XG4gICAgdGhpcy5zZWFyY2hUZXJtLmVtaXQoJycpO1xuICB9XG5cbiAgLy8gTcOpdG9kb3MgZGVsZWdhZG9zIGEgc2VydmljaW9zXG4gIGdldENlbGxWYWx1ZShyb3c6IFQsIGFjY2Vzc29yOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhVXRpbHMuZ2V0Q2VsbFZhbHVlKHJvdywgYWNjZXNzb3IpO1xuICB9XG5cbiAgZ2V0RGlzcGxheVZhbHVlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhVXRpbHMuZ2V0RGlzcGxheVZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIGdldEVudW1EaXNwbGF5VmFsdWUodmFsdWU6IHVua25vd24sIGNvbDogQzgwVGFibGVDb2xEZWYpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGFVdGlscy5nZXRFbnVtRGlzcGxheVZhbHVlKHZhbHVlLCBjb2wpO1xuICB9XG5cbiAgZ2V0RW51bU9wdGlvbnMoY29sOiBDODBUYWJsZUNvbERlZik6IHsgdmFsdWU6IHN0cmluZyB8IG51bWJlcjsgbGFiZWw6IHN0cmluZyB9W10ge1xuICAgIHJldHVybiB0aGlzLmRhdGFVdGlscy5nZXRFbnVtT3B0aW9ucyhjb2wpO1xuICB9XG5cbiAgZ2V0Q2VsbENvbG9yKHZhbHVlOiB1bmtub3duLCBjb2w6IEM4MFRhYmxlQ29sRGVmKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhVXRpbHMuZ2V0Q2VsbENvbG9yKHZhbHVlLCBjb2wpO1xuICB9XG5cbiAgZ2V0VGFibGVNYXhIZWlnaHQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhVXRpbHMuZ2V0VGFibGVNYXhIZWlnaHQodGhpcy5zaXplKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3Rpb24gbWV0aG9kc1xuICAgKi9cbiAgY2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3Rpb25TdGF0ZS5jbGVhclNlbGVjdGlvbigpO1xuICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5lbWl0U2VsZWN0aW9uKHRoaXMuc2VsZWN0aW9uU3RhdGUsIHRoaXMuZGF0YSgpLCB0aGlzLnNlbGVjdGFibGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbnRpZW5lIGxhIHNlbGVjY2nDs24gZXhpc3RlbnRlIGRlc3B1w6lzIGRlIGFjdHVhbGl6YXIgbG9zIGRhdG9zLFxuICAgKiBlbGltaW5hbmRvIHNvbG8gbG9zIElEcyBxdWUgeWEgbm8gZXhpc3RlbiBlbiBsb3MgbnVldm9zIGRhdG9zXG4gICAqL1xuICBwcml2YXRlIHByZXNlcnZlU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uU3RhdGUucHJlc2VydmVTZWxlY3Rpb24odGhpcy5kYXRhKCkpO1xuICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5lbWl0U2VsZWN0aW9uKHRoaXMuc2VsZWN0aW9uU3RhdGUsIHRoaXMuZGF0YSgpLCB0aGlzLnNlbGVjdGFibGUpO1xuICB9XG5cbiAgdG9nZ2xlU2VsZWN0QWxsKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uU3RhdGUudG9nZ2xlU2VsZWN0QWxsKHRoaXMuZGF0YSgpKTtcbiAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZW1pdFNlbGVjdGlvbih0aGlzLnNlbGVjdGlvblN0YXRlLCB0aGlzLmRhdGEoKSwgdGhpcy5zZWxlY3RhYmxlKTtcbiAgfVxuXG4gIHRvZ2dsZUl0ZW1TZWxlY3Rpb24oaXRlbTogVCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uU3RhdGUudG9nZ2xlSXRlbVNlbGVjdGlvbihpdGVtLCB0aGlzLm11bHRpcGxlKTtcbiAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZW1pdFNlbGVjdGlvbih0aGlzLnNlbGVjdGlvblN0YXRlLCB0aGlzLmRhdGEoKSwgdGhpcy5zZWxlY3RhYmxlKTtcbiAgfVxuXG4gIGlzSXRlbVNlbGVjdGVkKGl0ZW06IFQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25TdGF0ZS5pc0l0ZW1TZWxlY3RlZChpdGVtKTtcbiAgfVxuXG5cblxuICAvLyBNw6l0b2RvcyBkZSB2aXNpYmlsaWRhZCBkZWxlZ2Fkb3MgYSBzZXJ2aWNpb1xuICBpc0NvbHVtblZpc2libGUoY29sdW1uOiBDODBUYWJsZUNvbERlZiwgZm9yY2VTaG93SW5DcmVhdGlvbiA9IGZhbHNlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJpbGl0eVNlcnZpY2UuaXNDb2x1bW5WaXNpYmxlKGNvbHVtbiwgdGhpcy5kYXRhKCksIGZvcmNlU2hvd0luQ3JlYXRpb24pO1xuICB9XG5cbiAgaXNDb2x1bW5WaXNpYmxlSW5IZWFkZXIoY29sdW1uOiBDODBUYWJsZUNvbERlZik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZpc2liaWxpdHlTZXJ2aWNlLmlzQ29sdW1uVmlzaWJsZUluSGVhZGVyKFxuICAgICAgY29sdW1uLFxuICAgICAgdGhpcy5kYXRhKCksXG4gICAgICB0aGlzLmNyZWF0aW5nKCksXG4gICAgICB0aGlzLmVkaXRpbmcoKVxuICAgICk7XG4gIH1cblxuICBpc0NvbHVtblZpc2libGVGb3JSb3coY29sdW1uOiBDODBUYWJsZUNvbERlZiwgcm93OiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJpbGl0eVNlcnZpY2UuaXNDb2x1bW5WaXNpYmxlRm9yUm93KFxuICAgICAgY29sdW1uLFxuICAgICAgcm93LFxuICAgICAgdGhpcy5kYXRhKCksXG4gICAgICB0aGlzLmVkaXRpbmcoKVxuICAgICk7XG4gIH1cblxuICBvblVwbG9hZChyb3c6IFQpOiB2b2lkIHtcbiAgICB0aGlzLnVwbG9hZEFjdGlvbi5lbWl0KHJvdyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCIgW3N0eWxlLm1heC1oZWlnaHRdPVwiZ2V0VGFibGVNYXhIZWlnaHQoKVwiIFtzdHlsZS5vdmVyZmxvdy15XT1cInNpemUgPiAwID8gJ2F1dG8nIDogJ3Zpc2libGUnXCI+XG4gIDwhLS0gU2VhcmNoIEJhciAtLT5cbiAgQGlmIChoYXNTZWFyY2hUZXJtTGlzdGVuZXIoKSkge1xuICA8ZGl2IGNsYXNzPVwic2VhcmNoLWNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtaW5wdXQtd3JhcHBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtdGV4dFwiPlxuICAgICAgICAgIDxjODAtaWNvbiBpY29uPVwic2VhcmNoXCIgW3NpemVdPVwiLjhcIj48L2M4MC1pY29uPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHNlYXJjaC1pbnB1dFwiIHBsYWNlaG9sZGVyPVwiQnVzY2FyLi4uXCIgW3ZhbHVlXT1cInNlYXJjaFZhbHVlKClcIiAoaW5wdXQpPVwib25TZWFyY2hJbnB1dCgkZXZlbnQpXCIgYXJpYS1sYWJlbD1cIkJ1c2NhciBlbiBsYSB0YWJsYVwiIC8+XG4gICAgICAgIEBpZiAoc2VhcmNoVmFsdWUoKSkge1xuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBidG4tYm9ycmFyXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbGVhclNlYXJjaCgpXCIgdGl0bGU9XCJMaW1waWFyIGLDunNxdWVkYVwiPlxuICAgICAgICAgIDxjODAtaWNvbiBpY29uPVwiY2FuY2VsXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICB9XG5cbiAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtYm9yZGVyZWQgdGFibGUtaG92ZXIgYWxpZ24tbWlkZGxlXCI+XG4gICAgPHRoZWFkIGNsYXNzPVwidGhlYWQgdGFibGUtbGlnaHQgc3RpY2t5LWhlYWRlclwiPlxuICAgICAgPHRyPlxuICAgICAgICBAaWYgKGhhc1NlbGVjdGFibGVMaXN0ZW5lcigpICYmIGRhdGEoKS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1jZW50ZXIgc2VsZWN0aW9uLWNvbHVtblwiPlxuICAgICAgICAgIEBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwic2VsZWN0QWxsQ2hlY2tlZCgpXCIgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0QWxsSW5kZXRlcm1pbmF0ZSgpXCIgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGwoKVwiIGFyaWEtbGFiZWw9XCJTZWxlY2Npb25hciB0b2RvXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdGg+XG4gICAgICAgIH1cbiAgICAgICAgQGZvciAoY29sIG9mIGNvbHVtbnM7IHRyYWNrIGNvbCkge1xuICAgICAgICBAaWYgKGlzQ29sdW1uVmlzaWJsZUluSGVhZGVyKGNvbCkpIHtcbiAgICAgICAgQGlmIChjb2wudHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIDx0aCBjbGFzcz1cInRleHQtY2VudGVyIGJvb2xlYW4tY29sdW1uXCI+e3sgY29sLmxhYmVsIH19PC90aD5cbiAgICAgICAgfVxuICAgICAgICBAZWxzZSBpZiAoY29sLnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIDx0aCBjbGFzcz1cInRleHQtY2VudGVyIG51bWJlci1jb2x1bW5cIj57eyBjb2wubGFiZWwgfX08L3RoPlxuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgPHRoPnt7IGNvbC5sYWJlbCB9fTwvdGg+XG4gICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpZiAoaGFzQ3JlYXRlQWN0aW9uTGlzdGVuZXIoKSB8fCBoYXNVcGRhdGVBY3Rpb25MaXN0ZW5lcigpIHx8IGhhc0RlbGV0ZUFjdGlvbkxpc3RlbmVyKCkgfHxcbiAgICAgICAgaGFzQ2FuY2VsQWN0aW9uTGlzdGVuZXIoKSB8fCBoYXNWaWV3QWN0aW9uTGlzdGVuZXIoKSB8fCBoYXNVcGxvYWRBY3Rpb25MaXN0ZW5lcigpIHx8IGhhc0dldFJvd0J1dHRvbkxpc3RlbmVyKCkgfHxcbiAgICAgICAgaGFzTW92ZVVwQWN0aW9uTGlzdGVuZXIoKSB8fCBoYXNNb3ZlRG93bkFjdGlvbkxpc3RlbmVyKCkpIHtcbiAgICAgICAgPHRoIGNsYXNzPVwidGFibGUtYWN0aW9ucy1oZWFkZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy13cmFwcGVyXCI+XG4gICAgICAgICAgICA8c3Bhbj5BY3Rpb25zPC9zcGFuPlxuICAgICAgICAgICAgQGlmIChoYXNDcmVhdGVBY3Rpb25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJhZGRcIiBbZGlzYWJsZWRdPVwiY3JlYXRpbmcoKVwiIHRpdGxlPVwiQWdyZWdhclwiIFtzaXplXT1cIi42XCIgKGljb25DbGljayk9XCJzdGFydENyZWF0ZSgpXCI+PC9jODAtaWNvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgfVxuICAgICAgPC90cj5cbiAgICA8L3RoZWFkPlxuICAgIDx0Ym9keT5cbiAgICAgIEBmb3IgKHJvdyBvZiBkYXRhKCk7IHRyYWNrIHRyYWNrQnlJZChpLCByb3cpOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgPHRyPlxuICAgICAgICBAaWYgKGhhc1NlbGVjdGFibGVMaXN0ZW5lcigpICYmIGRhdGEoKS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXIgc2VsZWN0aW9uLWNvbHVtblwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJpc0l0ZW1TZWxlY3RlZChyb3cpXCIgKGNoYW5nZSk9XCJ0b2dnbGVJdGVtU2VsZWN0aW9uKHJvdylcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidTZWxlY2Npb25hciBmaWxhICcgKyAoaSArIDEpXCIgLz5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgfVxuICAgICAgICBAZm9yIChjb2wgb2YgY29sdW1uczsgdHJhY2sgY29sKSB7XG4gICAgICAgIEBpZiAoaXNDb2x1bW5WaXNpYmxlRm9yUm93KGNvbCwgcm93KSkge1xuICAgICAgICBAaWYgKGNvbC50eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXIgYm9vbGVhbi1jb2x1bW5cIj5cbiAgICAgICAgICBAaWYgKGVkaXRpbmcoKSA9PT0gcm93WydpZCddICYmICFjb2wucmVhZE9ubHkpIHtcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiISFlZGl0Um93KCk/Lltjb2wuYWNjZXNzb3JdXCIgKGNoYW5nZSk9XCJvbkVkaXRJbnB1dCgkZXZlbnQsIGNvbC5hY2Nlc3NvciwgY29sKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiY29sLmxhYmVsXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgIEBpZiAoZ2V0Q2VsbFZhbHVlKHJvdywgY29sLmFjY2Vzc29yKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIDxjODAtaWNvbiBpY29uPVwiY2hlY2tcIiBbc2l6ZV09XCIuN1wiPjwvYzgwLWljb24+XG4gICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBlbHNlIGlmIChnZXRDZWxsVmFsdWUocm93LCBjb2wuYWNjZXNzb3IpID09PSBmYWxzZSkge1xuICAgICAgICAgIDxjODAtaWNvbiBpY29uPVwiY2FuY2VsXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgIDxiciAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2UgaWYgKGNvbC50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlciBudW1iZXItY29sdW1uXCI+XG4gICAgICAgICAgQGlmIChlZGl0aW5nKCkgPT09IHJvd1snaWQnXSAmJiAhY29sLnJlYWRPbmx5KSB7XG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIHR5cGU9XCJudW1iZXJcIiBbdmFsdWVdPVwiZWRpdFJvdygpPy5bY29sLmFjY2Vzc29yXSA/PyAnJ1wiIFtwbGFjZWhvbGRlcl09XCJjb2wubGFiZWxcIiAoaW5wdXQpPVwib25FZGl0SW5wdXQoJGV2ZW50LCBjb2wuYWNjZXNzb3IsIGNvbClcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgPHNwYW4gW3N0eWxlLmNvbG9yXT1cImdldENlbGxDb2xvcihnZXRDZWxsVmFsdWUocm93LCBjb2wuYWNjZXNzb3IpLCBjb2wpXCI+e3sgZ2V0RGlzcGxheVZhbHVlKGdldENlbGxWYWx1ZShyb3csXG4gICAgICAgICAgICBjb2wuYWNjZXNzb3IpKSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICA8dGQ+XG4gICAgICAgICAgQGlmIChlZGl0aW5nKCkgPT09IHJvd1snaWQnXSAmJiAhY29sLnJlYWRPbmx5KSB7XG4gICAgICAgICAgQGlmIChjb2wudHlwZSA9PT0gJ2VudW0nKSB7XG4gICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBbdmFsdWVdPVwiZWRpdFJvdygpPy5bY29sLmFjY2Vzc29yXSA/PyAnJ1wiIChjaGFuZ2UpPVwib25FZGl0SW5wdXQoJGV2ZW50LCBjb2wuYWNjZXNzb3IsIGNvbClcIj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj57eyBjb2wubGFiZWwgfX08L29wdGlvbj5cbiAgICAgICAgICAgIEBmb3IgKG9wdGlvbiBvZiBnZXRFbnVtT3B0aW9ucyhjb2wpOyB0cmFjayBvcHRpb24udmFsdWUpIHtcbiAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiPnt7IG9wdGlvbi5sYWJlbCB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIH1cbiAgICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIFt0eXBlXT1cImNvbC50eXBlID09PSAncGFzc3dvcmQnID8gJ3Bhc3N3b3JkJyA6ICd0ZXh0J1wiIFt2YWx1ZV09XCJlZGl0Um93KCk/Lltjb2wuYWNjZXNzb3JdID8/ICcnXCIgW3BsYWNlaG9sZGVyXT1cImNvbC5sYWJlbFwiIChpbnB1dCk9XCJvbkVkaXRJbnB1dCgkZXZlbnQsIGNvbC5hY2Nlc3NvciwgY29sKVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgQGlmIChjb2wudHlwZSA9PT0gJ3Bhc3N3b3JkJykge1xuICAgICAgICAgIDxzcGFuIFtzdHlsZS5jb2xvcl09XCJnZXRDZWxsQ29sb3IoZ2V0Q2VsbFZhbHVlKHJvdywgY29sLmFjY2Vzc29yKSwgY29sKVwiPioqKioqKjwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2UgaWYgKGNvbC50eXBlID09PSAnZW51bScpIHtcbiAgICAgICAgICA8c3BhbiBbc3R5bGUuY29sb3JdPVwiZ2V0Q2VsbENvbG9yKGdldENlbGxWYWx1ZShyb3csIGNvbC5hY2Nlc3NvciksIGNvbClcIj57e1xuICAgICAgICAgICAgZ2V0RW51bURpc3BsYXlWYWx1ZShnZXRDZWxsVmFsdWUocm93LCBjb2wuYWNjZXNzb3IpLCBjb2wpXG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2UgaWYgKGdldENlbGxWYWx1ZShyb3csIGNvbC5hY2Nlc3NvcikgPT09IHRydWUpIHtcbiAgICAgICAgICA8YzgwLWljb24gaWNvbj1cImNoZWNrXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAZWxzZSBpZiAoZ2V0Q2VsbFZhbHVlKHJvdywgY29sLmFjY2Vzc29yKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICA8YzgwLWljb24gaWNvbj1cImNhbmNlbFwiIFtzaXplXT1cIi43XCI+PC9jODAtaWNvbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgIDxzcGFuIFtzdHlsZS5jb2xvcl09XCJnZXRDZWxsQ29sb3IoZ2V0Q2VsbFZhbHVlKHJvdywgY29sLmFjY2Vzc29yKSwgY29sKVwiPnt7IGdldERpc3BsYXlWYWx1ZShnZXRDZWxsVmFsdWUocm93LFxuICAgICAgICAgICAgY29sLmFjY2Vzc29yKSkgfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC90ZD5cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChoYXNDcmVhdGVBY3Rpb25MaXN0ZW5lcigpIHx8IGhhc1VwZGF0ZUFjdGlvbkxpc3RlbmVyKCkgfHwgaGFzRGVsZXRlQWN0aW9uTGlzdGVuZXIoKSB8fFxuICAgICAgICBoYXNDYW5jZWxBY3Rpb25MaXN0ZW5lcigpIHx8IGhhc1ZpZXdBY3Rpb25MaXN0ZW5lcigpIHx8IGhhc1VwbG9hZEFjdGlvbkxpc3RlbmVyKCkgfHwgaGFzR2V0Um93QnV0dG9uTGlzdGVuZXIoKSB8fFxuICAgICAgICBoYXNNb3ZlVXBBY3Rpb25MaXN0ZW5lcigpIHx8IGhhc01vdmVEb3duQWN0aW9uTGlzdGVuZXIoKSkge1xuICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlciBhY3Rpb25zLWNlbGxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIEBpZiAoZWRpdGluZygpID09PSByb3dbJ2lkJ10pIHtcbiAgICAgICAgICAgIDxjODAtaWNvbiBidXR0b24gaWNvbj1cImNoZWNrXCIgdGl0bGU9XCJHdWFyZGFyXCIgKGljb25DbGljayk9XCJzYXZlRWRpdChyb3cpXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgICAgPGM4MC1pY29uIGJ1dHRvbiBpY29uPVwiY2FuY2VsXCIgY29sb3I9XCJ3YXJuXCIgdGl0bGU9XCJDYW5jZWxhclwiIChpY29uQ2xpY2spPVwiY2FuY2VsRWRpdCgpXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICAgQGlmIChoYXNVcGRhdGVBY3Rpb25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJlZGl0XCIgdGl0bGU9XCJFZGl0YXJcIiAoaWNvbkNsaWNrKT1cIm9uRWRpdChyb3cpXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChoYXNDYW5jZWxBY3Rpb25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJjYW5jZWxDaXJjbGVcIiBjb2xvcj1cInNlY29uZGFyeVwiIHRpdGxlPVwiQ2FuY2VsYXJcIiAoaWNvbkNsaWNrKT1cIm9uQ2FuY2VsKHJvdylcIiBbc2l6ZV09XCIuN1wiPjwvYzgwLWljb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGhhc1ZpZXdBY3Rpb25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJ2aWV3XCIgY29sb3I9XCJwcmltYXJ5XCIgdGl0bGU9XCJWZXJcIiAoaWNvbkNsaWNrKT1cIm9uVmlldyhyb3cpXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChoYXNVcGxvYWRBY3Rpb25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJ1cGxvYWRcIiBjb2xvcj1cInByaW1hcnlcIiB0aXRsZT1cIlN1YmlyXCIgKGljb25DbGljayk9XCJvblVwbG9hZChyb3cpXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChoYXNHZXRSb3dCdXR0b25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJnZXRcIiBjb2xvcj1cInN1Y2Nlc3NcIiB0aXRsZT1cIlZpbmN1bGFyXCIgKGljb25DbGljayk9XCJvbkdldFJvd0J1dHRvbihyb3cpXCIgW3NpemVdPVwiLjdcIj48L2M4MC1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChoYXNDdXN0b21BY3Rpb25MaXN0ZW5lcigpKSB7XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIFtpY29uXT1cImN1c3RvbUFjdGlvbkljb25cIiBjb2xvcj1cInByaW1hcnlcIiBbdGl0bGVdPVwiY3VzdG9tQWN0aW9uVG9vbHRpcFwiIChpY29uQ2xpY2spPVwib25DdXN0b21BY3Rpb24ocm93KVwiIFtzaXplXT1cIi43XCI+PC9jODAtaWNvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoaGFzTW92ZVVwQWN0aW9uTGlzdGVuZXIoKSkge1xuICAgICAgICAgICAgPGM4MC1pY29uIGJ1dHRvbiBpY29uPVwiYXJyb3dVcFwiIGNvbG9yPVwic2Vjb25kYXJ5XCIgdGl0bGU9XCJNb3ZlciBhcnJpYmFcIiAoaWNvbkNsaWNrKT1cIm9uTW92ZVVwKHJvdylcIiBbc2l6ZV09XCIuN1wiPjwvYzgwLWljb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGhhc01vdmVEb3duQWN0aW9uTGlzdGVuZXIoKSkge1xuICAgICAgICAgICAgPGM4MC1pY29uIGJ1dHRvbiBpY29uPVwiYXJyb3dEb3duXCIgY29sb3I9XCJzZWNvbmRhcnlcIiB0aXRsZT1cIk1vdmVyIGFiYWpvXCIgKGljb25DbGljayk9XCJvbk1vdmVEb3duKHJvdylcIiBbc2l6ZV09XCIuN1wiPjwvYzgwLWljb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGhhc0VuYWJsZUFjdGlvbkxpc3RlbmVyKCkpIHtcbiAgICAgICAgICAgIDxjODAtaWNvbiBidXR0b24gW2ljb25dPVwiZ2V0Q2VsbFZhbHVlKHJvdywgJ2VuYWJsZWQnKSA/ICd0b2dnbGVPbicgOiAndG9nZ2xlT2ZmJ1wiIFtjb2xvcl09XCJnZXRDZWxsVmFsdWUocm93LCAnZW5hYmxlZCcpID8gJ3N1Y2Nlc3MnIDogJ3NlY29uZGFyeSdcIiBbdGl0bGVdPVwiZ2V0Q2VsbFZhbHVlKHJvdywgJ2VuYWJsZWQnKSA/ICdEZXNoYWJpbGl0YXInIDogJ0hhYmlsaXRhcidcIlxuICAgICAgICAgICAgICAoaWNvbkNsaWNrKT1cIm9uRW5hYmxlKHJvdylcIiBbc2l6ZV09XCIuN1wiPlxuICAgICAgICAgICAgPC9jODAtaWNvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoaGFzRGVsZXRlQWN0aW9uTGlzdGVuZXIoKSkge1xuICAgICAgICAgICAgPGM4MC1pY29uIGJ1dHRvbiBpY29uPVwiZGVsZXRlXCIgY29sb3I9XCJ3YXJuXCIgdGl0bGU9XCJCb3JyYXJcIiAoaWNvbkNsaWNrKT1cIm9uRGVsZXRlKHJvdylcIiBbc2l6ZV09XCIuN1wiPjwvYzgwLWljb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIH1cbiAgICAgIDwvdHI+XG4gICAgICB9XG4gICAgICBAaWYgKGNyZWF0aW5nKCkgJiYgaGFzQ3JlYXRlQWN0aW9uTGlzdGVuZXIoKSkge1xuICAgICAgPHRyPlxuICAgICAgICBAaWYgKGhhc1NlbGVjdGFibGVMaXN0ZW5lcigpICYmIGRhdGEoKS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXIgc2VsZWN0aW9uLWNvbHVtblwiPlxuICAgICAgICAgIDwhLS0gRW1wdHkgY2VsbCBmb3IgYWxpZ25tZW50IC0tPlxuICAgICAgICA8L3RkPlxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKGNvbCBvZiBjb2x1bW5zOyB0cmFjayBjb2wpIHtcbiAgICAgICAgQGlmIChpc0NvbHVtblZpc2libGUoY29sLCB0cnVlKSkge1xuICAgICAgICBAaWYgKGNvbC50eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICBAaWYgKCFjb2wucmVhZE9ubHkpIHtcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiISFuZXdSb3coKT8uW2NvbC5hY2Nlc3Nvcl1cIiAoY2hhbmdlKT1cIm9uSW5wdXQoJGV2ZW50LCBjb2wuYWNjZXNzb3IsIGNvbClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbC5sYWJlbFwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBlbHNlIHtcbiAgICAgICAgICA8IS0tIFJlYWRPbmx5IGJvb2xlYW4gY29sdW1uIGluIGNyZWF0ZSBtb2RlIHNob3dzIGVtcHR5IC0tPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZFwiPi08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L3RkPlxuICAgICAgICB9IEBlbHNlIGlmIChjb2wudHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXIgbnVtYmVyLWNvbHVtblwiPlxuICAgICAgICAgIEBpZiAoIWNvbC5yZWFkT25seSkge1xuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiB0eXBlPVwibnVtYmVyXCIgW3ZhbHVlXT1cIm5ld1JvdygpPy5bY29sLmFjY2Vzc29yXSA/PyAnJ1wiIFtwbGFjZWhvbGRlcl09XCJjb2wubGFiZWxcIiAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQsIGNvbC5hY2Nlc3NvciwgY29sKVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBlbHNlIHtcbiAgICAgICAgICA8IS0tIFJlYWRPbmx5IG51bWJlciBjb2x1bW4gaW4gY3JlYXRlIG1vZGUgc2hvd3MgZW1wdHkgLS0+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkXCI+LTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8dGQ+XG4gICAgICAgICAgQGlmICghY29sLnJlYWRPbmx5KSB7XG4gICAgICAgICAgQGlmIChjb2wudHlwZSA9PT0gJ2VudW0nKSB7XG4gICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBbdmFsdWVdPVwibmV3Um93KCk/Lltjb2wuYWNjZXNzb3JdID8/ICcnXCIgKGNoYW5nZSk9XCJvbklucHV0KCRldmVudCwgY29sLmFjY2Vzc29yLCBjb2wpXCI+XG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+e3sgY29sLmxhYmVsIH19PC9vcHRpb24+XG4gICAgICAgICAgICBAZm9yIChvcHRpb24gb2YgZ2V0RW51bU9wdGlvbnMoY29sKTsgdHJhY2sgb3B0aW9uLnZhbHVlKSB7XG4gICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj57eyBvcHRpb24ubGFiZWwgfX08L29wdGlvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiB0eXBlPVwidGV4dFwiIFt2YWx1ZV09XCJuZXdSb3coKT8uW2NvbC5hY2Nlc3Nvcl0gPz8gJydcIiBbcGxhY2Vob2xkZXJdPVwiY29sLmxhYmVsXCIgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50LCBjb2wuYWNjZXNzb3IsIGNvbClcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgIDwhLS0gUmVhZE9ubHkgY29sdW1uIGluIGNyZWF0ZSBtb2RlIHNob3dzIGVtcHR5IC0tPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZFwiPi08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L3RkPlxuICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlciBhY3Rpb25zLWNlbGxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxjODAtaWNvbiBidXR0b24gaWNvbj1cImNoZWNrXCIgdGl0bGU9XCJHdWFyZGFyXCIgKGljb25DbGljayk9XCJzYXZlQ3JlYXRlKClcIiBbc2l6ZV09XCIuN1wiPjwvYzgwLWljb24+XG4gICAgICAgICAgICA8YzgwLWljb24gYnV0dG9uIGljb249XCJjYW5jZWxcIiBjb2xvcj1cIndhcm5cIiB0aXRsZT1cIkNhbmNlbGFyXCIgKGljb25DbGljayk9XCJjYW5jZWxDcmVhdGUoKVwiIFtzaXplXT1cIi43XCI+PC9jODAtaWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICB9XG4gICAgPC90Ym9keT5cbiAgPC90YWJsZT5cbiAgQGlmIChkYXRhKCkubGVuZ3RoID09PSAwICYmICFjcmVhdGluZygpKSB7XG4gIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0ZXh0LW11dGVkIHB5LTMgc21hbGxcIj5cbiAgICBObyBoYXkgZGF0b3MgcGFyYSBtb3N0cmFyLlxuICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG5cbjxjODAtbW9kYWw+PC9jODAtbW9kYWw+Il19
|
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
import type { ColorType, ButtonType } from './icon.types';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export declare class C80IconComponent {
|
|
4
|
-
readonly icon: import("@angular/core").InputSignal<"check" | "cancel" | "edit" | "delete" | "add" | "view" | "get" | "settings" | "schedule" | "refresh" | "checkCircle" | "cancelCircle" | "error" | "queue" | "arrowUp" | "arrowDown" | "toggleOn" | "toggleOff" | "search" | "upload" | "pendingActions" | "playCircle" | "default">;
|
|
4
|
+
readonly icon: import("@angular/core").InputSignal<"check" | "cancel" | "edit" | "delete" | "add" | "view" | "get" | "settings" | "schedule" | "refresh" | "checkCircle" | "cancelCircle" | "error" | "queue" | "arrowUp" | "arrowDown" | "toggleOn" | "toggleOff" | "search" | "upload" | "pendingActions" | "playCircle" | "play" | "stop" | "tune" | "visibility" | "visibilityOff" | "close" | "record" | "star" | "xCircle" | "key" | "exclamationTriangle" | "clipboard" | "download" | "shield" | "person" | "envelope" | "infoCircle" | "checkSquare" | "square" | "dashSquare" | "people" | "boxSeam" | "personBadge" | "listTask" | "shuffle" | "cpu" | "box" | "bell" | "message" | "send" | "file" | "folder" | "save" | "print" | "clock" | "calendar" | "timer" | "lock" | "unlock" | "chart" | "table" | "database" | "home" | "menu" | "arrowLeft" | "arrowRight" | "copy" | "filter" | "sort" | "help" | "warning" | "default">;
|
|
5
5
|
readonly color: import("@angular/core").InputSignal<ColorType>;
|
|
6
6
|
readonly customColor: import("@angular/core").InputSignal<string | undefined>;
|
|
7
7
|
readonly disabled: import("@angular/core").InputSignal<boolean>;
|
|
8
8
|
readonly size: import("@angular/core").InputSignal<number>;
|
|
9
9
|
readonly button: import("@angular/core").InputSignalWithTransform<boolean, string | boolean | null | undefined>;
|
|
10
|
+
readonly border: import("@angular/core").InputSignalWithTransform<boolean, string | boolean | null | undefined>;
|
|
10
11
|
readonly type: import("@angular/core").InputSignal<ButtonType>;
|
|
12
|
+
readonly textLeft: import("@angular/core").InputSignal<string | undefined>;
|
|
13
|
+
readonly textRight: import("@angular/core").InputSignal<string | undefined>;
|
|
11
14
|
readonly iconClick: import("@angular/core").OutputEmitterRef<Event>;
|
|
12
15
|
readonly iconSize: import("@angular/core").Signal<number>;
|
|
13
16
|
readonly iconColor: import("@angular/core").Signal<string>;
|
|
14
17
|
readonly iconOpacity: import("@angular/core").Signal<0.5 | 0.7 | 1>;
|
|
15
18
|
readonly iconPath: import("@angular/core").Signal<string>;
|
|
16
|
-
readonly additionalShapes: import("@angular/core").Signal<import("./icon.
|
|
19
|
+
readonly additionalShapes: import("@angular/core").Signal<import("./icon.types").ShapeAttributes[]>;
|
|
17
20
|
onButtonClick(event: Event): void;
|
|
18
21
|
static ɵfac: i0.ɵɵFactoryDeclaration<C80IconComponent, never>;
|
|
19
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<C80IconComponent, "c80-icon", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "customColor": { "alias": "customColor"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "button": { "alias": "button"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; }, { "iconClick": "iconClick"; }, never, never, true, never>;
|
|
22
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<C80IconComponent, "c80-icon", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "customColor": { "alias": "customColor"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "button": { "alias": "button"; "required": false; "isSignal": true; }; "border": { "alias": "border"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "textLeft": { "alias": "textLeft"; "required": false; "isSignal": true; }; "textRight": { "alias": "textRight"; "required": false; "isSignal": true; }; }, { "iconClick": "iconClick"; }, never, never, true, never>;
|
|
20
23
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ColorType } from './icon.types';
|
|
2
|
-
export declare const ICON_NAMES: readonly ["check", "cancel", "edit", "delete", "add", "view", "get", "settings", "schedule", "refresh", "checkCircle", "cancelCircle", "error", "queue", "arrowUp", "arrowDown", "toggleOn", "toggleOff", "search", "upload", "pendingActions", "playCircle", "default"];
|
|
1
|
+
import { ColorType, ShapeAttributes } from './icon.types';
|
|
2
|
+
export declare const ICON_NAMES: readonly ["check", "cancel", "edit", "delete", "add", "view", "get", "settings", "schedule", "refresh", "checkCircle", "cancelCircle", "error", "queue", "arrowUp", "arrowDown", "toggleOn", "toggleOff", "search", "upload", "pendingActions", "playCircle", "play", "stop", "tune", "visibility", "visibilityOff", "close", "record", "star", "xCircle", "key", "exclamationTriangle", "clipboard", "download", "shield", "person", "envelope", "infoCircle", "checkSquare", "square", "dashSquare", "people", "boxSeam", "personBadge", "listTask", "shuffle", "cpu", "box", "bell", "message", "send", "file", "folder", "save", "print", "clock", "calendar", "timer", "lock", "unlock", "chart", "table", "database", "home", "menu", "arrowLeft", "arrowRight", "copy", "filter", "sort", "help", "warning", "default"];
|
|
3
3
|
export declare const BASE_ICON_COLORS: Readonly<Record<ColorType, string>>;
|
|
4
4
|
export declare const DISABLED_COLOR = "#bdbdbd";
|
|
5
5
|
export declare const DEFAULT_ICON_COLOR = "#222";
|
|
@@ -8,8 +8,4 @@ export declare const SECONDARY_WARN_OPACITY = 0.7;
|
|
|
8
8
|
export declare const DEFAULT_OPACITY = 1;
|
|
9
9
|
export declare const BASE_ICON_SIZE = 24;
|
|
10
10
|
export declare const ICON_PATHS: Readonly<Record<string, string>>;
|
|
11
|
-
export interface ShapeAttributes {
|
|
12
|
-
type: 'circle' | 'rect' | 'path';
|
|
13
|
-
[key: string]: string | number;
|
|
14
|
-
}
|
|
15
11
|
export declare const ICON_ADDITIONAL_SHAPES: Readonly<Record<string, ShapeAttributes[]>>;
|
package/lib/icon/icon.types.d.ts
CHANGED
|
@@ -2,3 +2,7 @@ import { ICON_NAMES } from './icon.constants';
|
|
|
2
2
|
export type IconType = (typeof ICON_NAMES)[number];
|
|
3
3
|
export type ColorType = 'primary' | 'secondary' | 'warn' | 'success';
|
|
4
4
|
export type ButtonType = 'button' | 'submit' | 'reset';
|
|
5
|
+
export interface ShapeAttributes {
|
|
6
|
+
type: 'circle' | 'rect' | 'path';
|
|
7
|
+
[key: string]: string | number;
|
|
8
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function transformToBoolean(val: boolean | string | null | undefined): boolean;
|