imm-element-ui 0.7.4 → 0.7.6
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/import/import.component.mjs +11 -5
- package/esm2022/lib/log/log.component.mjs +3 -3
- package/esm2022/lib/page-form/page-form.component.mjs +3 -3
- package/esm2022/lib/page-grid-list/page-grid-list.component.mjs +3 -3
- package/esm2022/lib/steps/steps.component.mjs +5 -3
- package/fesm2022/imm-element-ui.mjs +20 -12
- package/fesm2022/imm-element-ui.mjs.map +1 -1
- package/lib/crumb-action/crumb-action.component.d.ts +1 -1
- package/lib/grid/grid/grid.component.d.ts +1 -1
- package/lib/import/import.component.d.ts +4 -1
- package/lib/steps/steps.component.d.ts +2 -1
- package/package.json +1 -1
- package/src/lib/log/log.component.scss +5 -0
|
@@ -21,8 +21,10 @@ export class ImportComponent {
|
|
|
21
21
|
this.visible = model(false);
|
|
22
22
|
this.fileName = input();
|
|
23
23
|
this.funcName = input();
|
|
24
|
+
this.orgVisible = input(false);
|
|
24
25
|
this.orgField = input();
|
|
25
26
|
this.modelName = input('');
|
|
27
|
+
this.grid = input();
|
|
26
28
|
this.disabled = false;
|
|
27
29
|
this.platformLocation = inject(PlatformLocation);
|
|
28
30
|
this.depts = [];
|
|
@@ -49,7 +51,7 @@ export class ImportComponent {
|
|
|
49
51
|
const link = document.createElement('a');
|
|
50
52
|
link.href = isDevMode()
|
|
51
53
|
? '/importFiles/' + this.fileName() + '.xlsx'
|
|
52
|
-
: `/${baseHref.replace(/\/(.*?)\//,
|
|
54
|
+
: `/${baseHref.replace(/\/(.*?)\//, '$1')}/importFiles/${this.fileName()}.xlsx`;
|
|
53
55
|
link.download = this.fileName() + '.xlsx';
|
|
54
56
|
document.body.appendChild(link);
|
|
55
57
|
link.click();
|
|
@@ -60,7 +62,9 @@ export class ImportComponent {
|
|
|
60
62
|
let userInfo = JSON.parse(window.localStorage.getItem('userInfo')) || {};
|
|
61
63
|
const formData = new FormData();
|
|
62
64
|
formData.append('file', item.files[0]);
|
|
63
|
-
|
|
65
|
+
if (this.orgVisible()) {
|
|
66
|
+
formData.append(this.orgField() ?? 'orgId', this.dept ?? '');
|
|
67
|
+
}
|
|
64
68
|
formData.append('modelName', this.modelName());
|
|
65
69
|
formData.append('operator', userInfo.userName || '');
|
|
66
70
|
const req = new HttpRequest('POST', this.funcName() ?? 'import', formData, {
|
|
@@ -71,23 +75,25 @@ export class ImportComponent {
|
|
|
71
75
|
next: (event) => {
|
|
72
76
|
if (event instanceof HttpResponse) {
|
|
73
77
|
this.disabled = false;
|
|
78
|
+
this.grid()?.getData();
|
|
74
79
|
this.fileUpload.clear();
|
|
75
80
|
}
|
|
76
81
|
},
|
|
77
82
|
error: (err) => {
|
|
78
83
|
this.disabled = false;
|
|
84
|
+
this.grid()?.getData();
|
|
79
85
|
this.fileUpload.clear();
|
|
80
86
|
},
|
|
81
87
|
});
|
|
82
88
|
}
|
|
83
89
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImportComponent, deps: [{ token: i1.HttpClient }, { token: i2.ActionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
84
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.
|
|
90
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ImportComponent, isStandalone: true, selector: "app-import", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, fileName: { classPropertyName: "fileName", publicName: "fileName", isSignal: true, isRequired: false, transformFunction: null }, funcName: { classPropertyName: "funcName", publicName: "funcName", isSignal: true, isRequired: false, transformFunction: null }, orgVisible: { classPropertyName: "orgVisible", publicName: "orgVisible", isSignal: true, isRequired: false, transformFunction: null }, orgField: { classPropertyName: "orgField", publicName: "orgField", isSignal: true, isRequired: false, transformFunction: null }, modelName: { classPropertyName: "modelName", publicName: "modelName", isSignal: true, isRequired: false, transformFunction: null }, grid: { classPropertyName: "grid", publicName: "grid", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visible: "visibleChange" }, viewQueries: [{ propertyName: "fileUpload", first: true, predicate: FileUpload, descendants: true }], ngImport: i0, template: "<p-dialog\r\n\t[header]=\"'import.title' | translate\"\r\n\t[modal]=\"true\"\r\n\tappendTo=\"body\"\r\n\t[style]=\"{ width: '30rem' }\"\r\n\t(onHide)=\"cancel()\"\r\n\t[(visible)]=\"visible\">\r\n\t<div class=\"grid p-fluid\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<span style=\"font-size: 14px\">1.{{ 'import.templateDownload' | translate }}</span>\r\n\t\t</div>\r\n\t\t<div\r\n\t\t\tclass=\"col-12\"\r\n\t\t\tstyle=\"padding: 0.5rem\">\r\n\t\t\t<button\r\n\t\t\t\tpButton\r\n\t\t\t\tclass=\"p-element p-button-text p-button p-component\"\r\n\t\t\t\t(click)=\"download()\">\r\n\t\t\t\t<span class=\"p-button-label\">\r\n\t\t\t\t\t<i class=\"pi pi-download\"></i><span class=\"pl-2\">{{ 'import.downloadTemplate' | translate }}</span>\r\n\t\t\t\t</span>\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<span style=\"font-size: 14px\">2.{{ 'import.fileUpload' | translate }}</span>\r\n\t\t</div>\r\n\t\t@if (orgVisible()) {\r\n\t\t\t<div\r\n\t\t\t\tclass=\"col-12\"\r\n\t\t\t\tstyle=\"padding: 1rem 0.5rem 0 0.5rem\">\r\n\t\t\t\t<p-select\r\n\t\t\t\t\t[style]=\"{ width: '275px' }\"\r\n\t\t\t\t\t[options]=\"depts\"\r\n\t\t\t\t\t[(ngModel)]=\"dept\"\r\n\t\t\t\t\tappendTo=\"body\"\r\n\t\t\t\t\toptionLabel=\"deptName\"\r\n\t\t\t\t\toptionValue=\"deptId\"\r\n\t\t\t\t\t[placeholder]=\"'import.deptPlaceholder' | translate\"\r\n\t\t\t\t\t[size]=\"'small'\"\r\n\t\t\t\t\tclass=\"w-full md:w-56\" />\r\n\t\t\t</div>\r\n\t\t}\r\n\t\t<div\r\n\t\t\tclass=\"p-file-import col-12\"\r\n\t\t\tstyle=\"padding: 0.5rem\">\r\n\t\t\t<p-fileUpload\r\n\t\t\t\t#primeFileUpload\r\n\t\t\t\tchooseStyleClass=\"p-element p-button-text p-button p-component\"\r\n\t\t\t\tmode=\"basic\"\r\n\t\t\t\tchooseIcon=\"pi pi-upload\"\r\n\t\t\t\t[chooseLabel]=\"'import.uploadFile' | translate\"\r\n\t\t\t\t[auto]=\"true\"\r\n\t\t\t\t[customUpload]=\"true\"\r\n\t\t\t\t(uploadHandler)=\"upload($event)\"></p-fileUpload>\r\n\t\t</div>\r\n\t</div>\r\n</p-dialog>\r\n", styles: ["::ng-deep .p-file-import .p-fileupload-basic{justify-content:start}.btn-link{color:var(--p-primary-color);padding:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain", "fluid", "label", "icon", "buttonProps"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i5.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "component", type: FileUpload, selector: "p-fileupload, p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "chooseButtonProps", "uploadButtonProps", "cancelButtonProps", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i6.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "size", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "fluid", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
|
85
91
|
}
|
|
86
92
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImportComponent, decorators: [{
|
|
87
93
|
type: Component,
|
|
88
|
-
args: [{ selector: 'app-import', standalone: true, imports: [FormsModule, ButtonModule, DialogModule, FileUpload, SelectModule, TranslatePipe], template: "<p-dialog\r\n\t[header]=\"'import.title' | translate\"\r\n\t[modal]=\"true\"\r\n\tappendTo=\"body\"\r\n\t[style]=\"{ width: '30rem' }\"\r\n\t(onHide)=\"cancel()\"\r\n\t[(visible)]=\"visible\">\r\n\t<div class=\"grid p-fluid\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<span style=\"font-size: 14px\">1.{{ 'import.templateDownload' | translate }}</span>\r\n\t\t</div>\r\n\t\t<div\r\n\t\t\tclass=\"col-12\"\r\n\t\t\tstyle=\"padding: 0.5rem\">\r\n\t\t\t<button\r\n\t\t\t\tpButton\r\n\t\t\t\tclass=\"p-element p-button-text p-button p-component\"\r\n\t\t\t\t(click)=\"download()\">\r\n\t\t\t\t<span class=\"p-button-label\">\r\n\t\t\t\t\t<i class=\"pi pi-download\"></i><span class=\"pl-2\">{{ 'import.downloadTemplate' | translate }}</span>\r\n\t\t\t\t</span>\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<span style=\"font-size: 14px\">2.{{ 'import.fileUpload' | translate }}</span>\r\n\t\t</div>\r\n\t\t<div\r\n\t\t\tclass=\"col-12\"\r\n\t\t\tstyle=\"padding: 1rem 0.5rem 0 0.5rem\">\r\n\t\t\t<p-select\r\n\t\t\t\t[style]=\"{ width: '275px' }\"\r\n\t\t\t\t[options]=\"depts\"\r\n\t\t\t\t[(ngModel)]=\"dept\"\r\n\t\t\t\tappendTo=\"body\"\r\n\t\t\t\toptionLabel=\"deptName\"\r\n\t\t\t\toptionValue=\"deptId\"\r\n\t\t\t\t[placeholder]=\"'import.deptPlaceholder' | translate\"\r\n\t\t\t\t[size]=\"'small'\"\r\n\t\t\t\tclass=\"w-full md:w-56\" />\r\n\t\t</div>\r\n\t\t<div\r\n\t\t\tclass=\"p-file-import col-12\"\r\n\t\t\tstyle=\"padding: 0.5rem\">\r\n\t\t\t<p-fileUpload\r\n\t\t\t\t#primeFileUpload\r\n\t\t\t\tchooseStyleClass=\"p-element p-button-text p-button p-component\"\r\n\t\t\t\tmode=\"basic\"\r\n\t\t\t\tchooseIcon=\"pi pi-upload\"\r\n\t\t\t\t[chooseLabel]=\"'import.uploadFile' | translate\"\r\n\t\t\t\t[auto]=\"true\"\r\n\t\t\t\t[customUpload]=\"true\"\r\n\t\t\t\t(uploadHandler)=\"upload($event)\"></p-fileUpload>\r\n\t\t</div>\r\n\t</div>\r\n</p-dialog>\r\n", styles: ["::ng-deep .p-file-import .p-fileupload-basic{justify-content:start}.btn-link{color:var(--p-primary-color);padding:.5rem}\n"] }]
|
|
94
|
+
args: [{ selector: 'app-import', standalone: true, imports: [FormsModule, ButtonModule, DialogModule, FileUpload, SelectModule, TranslatePipe], template: "<p-dialog\r\n\t[header]=\"'import.title' | translate\"\r\n\t[modal]=\"true\"\r\n\tappendTo=\"body\"\r\n\t[style]=\"{ width: '30rem' }\"\r\n\t(onHide)=\"cancel()\"\r\n\t[(visible)]=\"visible\">\r\n\t<div class=\"grid p-fluid\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<span style=\"font-size: 14px\">1.{{ 'import.templateDownload' | translate }}</span>\r\n\t\t</div>\r\n\t\t<div\r\n\t\t\tclass=\"col-12\"\r\n\t\t\tstyle=\"padding: 0.5rem\">\r\n\t\t\t<button\r\n\t\t\t\tpButton\r\n\t\t\t\tclass=\"p-element p-button-text p-button p-component\"\r\n\t\t\t\t(click)=\"download()\">\r\n\t\t\t\t<span class=\"p-button-label\">\r\n\t\t\t\t\t<i class=\"pi pi-download\"></i><span class=\"pl-2\">{{ 'import.downloadTemplate' | translate }}</span>\r\n\t\t\t\t</span>\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<span style=\"font-size: 14px\">2.{{ 'import.fileUpload' | translate }}</span>\r\n\t\t</div>\r\n\t\t@if (orgVisible()) {\r\n\t\t\t<div\r\n\t\t\t\tclass=\"col-12\"\r\n\t\t\t\tstyle=\"padding: 1rem 0.5rem 0 0.5rem\">\r\n\t\t\t\t<p-select\r\n\t\t\t\t\t[style]=\"{ width: '275px' }\"\r\n\t\t\t\t\t[options]=\"depts\"\r\n\t\t\t\t\t[(ngModel)]=\"dept\"\r\n\t\t\t\t\tappendTo=\"body\"\r\n\t\t\t\t\toptionLabel=\"deptName\"\r\n\t\t\t\t\toptionValue=\"deptId\"\r\n\t\t\t\t\t[placeholder]=\"'import.deptPlaceholder' | translate\"\r\n\t\t\t\t\t[size]=\"'small'\"\r\n\t\t\t\t\tclass=\"w-full md:w-56\" />\r\n\t\t\t</div>\r\n\t\t}\r\n\t\t<div\r\n\t\t\tclass=\"p-file-import col-12\"\r\n\t\t\tstyle=\"padding: 0.5rem\">\r\n\t\t\t<p-fileUpload\r\n\t\t\t\t#primeFileUpload\r\n\t\t\t\tchooseStyleClass=\"p-element p-button-text p-button p-component\"\r\n\t\t\t\tmode=\"basic\"\r\n\t\t\t\tchooseIcon=\"pi pi-upload\"\r\n\t\t\t\t[chooseLabel]=\"'import.uploadFile' | translate\"\r\n\t\t\t\t[auto]=\"true\"\r\n\t\t\t\t[customUpload]=\"true\"\r\n\t\t\t\t(uploadHandler)=\"upload($event)\"></p-fileUpload>\r\n\t\t</div>\r\n\t</div>\r\n</p-dialog>\r\n", styles: ["::ng-deep .p-file-import .p-fileupload-basic{justify-content:start}.btn-link{color:var(--p-primary-color);padding:.5rem}\n"] }]
|
|
89
95
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ActionService }], propDecorators: { fileUpload: [{
|
|
90
96
|
type: ViewChild,
|
|
91
97
|
args: [FileUpload]
|
|
92
98
|
}] } });
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvaW1wb3J0L2ltcG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL2ltcG9ydC9pbXBvcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUF5QixXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7QUFlbkQsTUFBTSxPQUFPLGVBQWU7SUFZM0IsWUFDUyxJQUFnQixFQUNoQixNQUFxQjtRQURyQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFaOUIsWUFBTyxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNoQyxhQUFRLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDM0IsYUFBUSxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQzNCLGFBQVEsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUMzQixjQUFTLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFDM0MsVUFBSyxHQUFVLEVBQUUsQ0FBQztRQU9qQixNQUFNLENBQ0wsR0FBRyxFQUFFO1lBQ0osTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN2QyxJQUFJLE1BQU0sRUFBRSxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEIsQ0FBQztRQUNGLENBQUMsRUFDRCxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsU0FBUztRQUNSLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUUsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUM3QixDQUFDO0lBRUQsTUFBTTtRQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxRQUFRO1FBQ1AsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsRUFBRTtZQUN0QixDQUFDLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxPQUFPO1lBQzdDLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUE7UUFDaEYsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQzFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBUztRQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFFLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDekUsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNoQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBUSxDQUFDLENBQUM7UUFDOUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RCxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUMvQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBQyxRQUFRLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQ25ELE1BQU0sR0FBRyxHQUFHLElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUMxRSxjQUFjLEVBQUUsSUFBSTtZQUNwQixlQUFlLEVBQUUsS0FBSztTQUN0QixDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUN2QyxJQUFJLEVBQUUsQ0FBQyxLQUFxQixFQUFFLEVBQUU7Z0JBQy9CLElBQUksS0FBSyxZQUFZLFlBQVksRUFBRSxDQUFDO29CQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztvQkFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDekIsQ0FBQztZQUNGLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDZCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN6QixDQUFDO1NBQ0QsQ0FBQyxDQUFDO0lBQ0osQ0FBQzsrR0E5RVcsZUFBZTttR0FBZixlQUFlLDB5QkFDaEIsVUFBVSxnREN6QnRCLG8yREF1REEsbUxEbkNXLFdBQVcsOFZBQUUsWUFBWSxvUUFBRSxZQUFZLG82QkFBRSxVQUFVLGc1QkFBRSxZQUFZLG9yQ0FBRSxhQUFhOzs0RkFJOUUsZUFBZTtrQkFQM0IsU0FBUzsrQkFDQyxZQUFZLGNBQ1YsSUFBSSxXQUNQLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUM7MkdBS3BFLFVBQVU7c0JBQWhDLFNBQVM7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBtb2RlbCwgaW5wdXQsIG91dHB1dCwgaW5qZWN0LCBlZmZlY3QsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XHJcbmltcG9ydCB7IERpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGlhbG9nJztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZCB9IGZyb20gJ3ByaW1lbmcvZmlsZXVwbG9hZCc7XHJcbmltcG9ydCB7IFNlbGVjdE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc2VsZWN0JztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEV2ZW50LCBIdHRwUmVxdWVzdCwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9hY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IFBsYXRmb3JtTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJbXBvcnRPcHRpb25zIHtcclxuXHR0aXRsZT86IHN0cmluZztcclxuXHRmaWxlTmFtZT86IHN0cmluZztcclxuXHRkYXRhPzogYW55O1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2FwcC1pbXBvcnQnLFxyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0aW1wb3J0czogW0Zvcm1zTW9kdWxlLCBCdXR0b25Nb2R1bGUsIERpYWxvZ01vZHVsZSwgRmlsZVVwbG9hZCwgU2VsZWN0TW9kdWxlLCBUcmFuc2xhdGVQaXBlXSxcclxuXHR0ZW1wbGF0ZVVybDogJy4vaW1wb3J0LmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybDogJy4vaW1wb3J0LmNvbXBvbmVudC5zY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEltcG9ydENvbXBvbmVudCB7XHJcblx0QFZpZXdDaGlsZChGaWxlVXBsb2FkKSBmaWxlVXBsb2FkITogRmlsZVVwbG9hZDtcclxuXHR2aXNpYmxlID0gbW9kZWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdGZpbGVOYW1lID0gaW5wdXQ8c3RyaW5nPigpO1xyXG5cdGZ1bmNOYW1lID0gaW5wdXQ8c3RyaW5nPigpO1xyXG5cdG9yZ0ZpZWxkID0gaW5wdXQ8c3RyaW5nPigpO1xyXG5cdG1vZGVsTmFtZSA9IGlucHV0PHN0cmluZz4oJycpO1xyXG5cdGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblx0cGxhdGZvcm1Mb2NhdGlvbiA9IGluamVjdChQbGF0Zm9ybUxvY2F0aW9uKVxyXG5cdGRlcHRzOiBhbnlbXSA9IFtdO1xyXG5cdGRlcHQ6IGFueTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcblx0XHRwcml2YXRlIGFjdGlvbjogQWN0aW9uU2VydmljZSxcclxuXHQpIHtcclxuXHRcdGVmZmVjdChcclxuXHRcdFx0KCkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IGFjdGlvbiA9IHRoaXMuYWN0aW9uLmdldEFjdGlvbigpO1xyXG5cdFx0XHRcdGlmIChhY3Rpb24/LnR5cGUgPT09ICdpbXBvcnQnKSB7XHJcblx0XHRcdFx0XHR0aGlzLmluaXREZXB0cygpO1xyXG5cdFx0XHRcdFx0dGhpcy52aXNpYmxlLnNldCh0cnVlKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRuZ09uRGVzdHJveSgpIHtcclxuXHRcdHRoaXMuYWN0aW9uLnNldEFjdGlvbih1bmRlZmluZWQpO1xyXG5cdH1cclxuXHJcblx0aW5pdERlcHRzKCkge1xyXG5cdFx0Y29uc3QgdXNlckluZm8gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd1c2VySW5mbycpISk7XHJcblx0XHR0aGlzLmRlcHRzID0gdXNlckluZm8uZGVwdHM7XHJcblx0fVxyXG5cclxuXHRjYW5jZWwoKSB7XHJcblx0XHR0aGlzLnZpc2libGUuc2V0KGZhbHNlKTtcclxuXHR9XHJcblxyXG5cdGRvd25sb2FkKCkge1xyXG5cdFx0bGV0IGJhc2VIcmVmID0gdGhpcy5wbGF0Zm9ybUxvY2F0aW9uLmdldEJhc2VIcmVmRnJvbURPTSgpO1xyXG5cdFx0Y29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuXHRcdGxpbmsuaHJlZiA9IGlzRGV2TW9kZSgpIFxyXG5cdFx0XHQ/ICcvaW1wb3J0RmlsZXMvJyArIHRoaXMuZmlsZU5hbWUoKSArICcueGxzeCcgXHJcblx0XHRcdDogYC8ke2Jhc2VIcmVmLnJlcGxhY2UoL1xcLyguKj8pXFwvLywgXCIkMVwiKX0vaW1wb3J0RmlsZXMvJHt0aGlzLmZpbGVOYW1lKCl9Lnhsc3hgXHJcblx0XHRsaW5rLmRvd25sb2FkID0gdGhpcy5maWxlTmFtZSgpICsgJy54bHN4JztcclxuXHRcdGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcblx0XHRsaW5rLmNsaWNrKCk7XHJcblx0XHRkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xyXG5cdH1cclxuXHJcblx0dXBsb2FkKGl0ZW06IGFueSkge1xyXG5cdFx0dGhpcy5kaXNhYmxlZCA9IHRydWU7XHJcblx0XHRsZXQgdXNlckluZm8gPSBKU09OLnBhcnNlKHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndXNlckluZm8nKSEpIHx8IHt9XHJcblx0XHRjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG5cdFx0Zm9ybURhdGEuYXBwZW5kKCdmaWxlJywgaXRlbS5maWxlc1swXSBhcyBhbnkpO1xyXG5cdFx0Zm9ybURhdGEuYXBwZW5kKHRoaXMub3JnRmllbGQoKSA/PyAnb3JnSWQnLCB0aGlzLmRlcHQpO1xyXG5cdFx0Zm9ybURhdGEuYXBwZW5kKCdtb2RlbE5hbWUnLCB0aGlzLm1vZGVsTmFtZSgpKTtcclxuXHRcdGZvcm1EYXRhLmFwcGVuZCgnb3BlcmF0b3InLHVzZXJJbmZvLnVzZXJOYW1lIHx8ICcnKVxyXG5cdFx0Y29uc3QgcmVxID0gbmV3IEh0dHBSZXF1ZXN0KCdQT1NUJywgdGhpcy5mdW5jTmFtZSgpID8/ICdpbXBvcnQnLCBmb3JtRGF0YSwge1xyXG5cdFx0XHRyZXBvcnRQcm9ncmVzczogdHJ1ZSxcclxuXHRcdFx0d2l0aENyZWRlbnRpYWxzOiBmYWxzZSxcclxuXHRcdH0pO1xyXG5cclxuXHRcdHJldHVybiB0aGlzLmh0dHAucmVxdWVzdChyZXEpLnN1YnNjcmliZSh7XHJcblx0XHRcdG5leHQ6IChldmVudDogSHR0cEV2ZW50PGFueT4pID0+IHtcclxuXHRcdFx0XHRpZiAoZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcclxuXHRcdFx0XHRcdHRoaXMuZGlzYWJsZWQgPSBmYWxzZTtcclxuXHRcdFx0XHRcdHRoaXMuZmlsZVVwbG9hZC5jbGVhcigpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0ZXJyb3I6IChlcnIpID0+IHtcclxuXHRcdFx0XHR0aGlzLmRpc2FibGVkID0gZmFsc2U7XHJcblx0XHRcdFx0dGhpcy5maWxlVXBsb2FkLmNsZWFyKCk7XHJcblx0XHRcdH0sXHJcblx0XHR9KTtcclxuXHR9XHJcbn0iLCI8cC1kaWFsb2dcclxuXHRbaGVhZGVyXT1cIidpbXBvcnQudGl0bGUnIHwgdHJhbnNsYXRlXCJcclxuXHRbbW9kYWxdPVwidHJ1ZVwiXHJcblx0YXBwZW5kVG89XCJib2R5XCJcclxuXHRbc3R5bGVdPVwieyB3aWR0aDogJzMwcmVtJyB9XCJcclxuXHQob25IaWRlKT1cImNhbmNlbCgpXCJcclxuXHRbKHZpc2libGUpXT1cInZpc2libGVcIj5cclxuXHQ8ZGl2IGNsYXNzPVwiZ3JpZCBwLWZsdWlkXCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcblx0XHRcdDxzcGFuIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4XCI+MS57eyAnaW1wb3J0LnRlbXBsYXRlRG93bmxvYWQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8ZGl2XHJcblx0XHRcdGNsYXNzPVwiY29sLTEyXCJcclxuXHRcdFx0c3R5bGU9XCJwYWRkaW5nOiAwLjVyZW1cIj5cclxuXHRcdFx0PGJ1dHRvblxyXG5cdFx0XHRcdHBCdXR0b25cclxuXHRcdFx0XHRjbGFzcz1cInAtZWxlbWVudCBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uIHAtY29tcG9uZW50XCJcclxuXHRcdFx0XHQoY2xpY2spPVwiZG93bmxvYWQoKVwiPlxyXG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwicC1idXR0b24tbGFiZWxcIj5cclxuXHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktZG93bmxvYWRcIj48L2k+PHNwYW4gY2xhc3M9XCJwbC0yXCI+e3sgJ2ltcG9ydC5kb3dubG9hZFRlbXBsYXRlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuXHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcblx0XHRcdDxzcGFuIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4XCI+Mi57eyAnaW1wb3J0LmZpbGVVcGxvYWQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8ZGl2XHJcblx0XHRcdGNsYXNzPVwiY29sLTEyXCJcclxuXHRcdFx0c3R5bGU9XCJwYWRkaW5nOiAxcmVtIDAuNXJlbSAwIDAuNXJlbVwiPlxyXG5cdFx0XHQ8cC1zZWxlY3RcclxuXHRcdFx0XHRbc3R5bGVdPVwieyB3aWR0aDogJzI3NXB4JyB9XCJcclxuXHRcdFx0XHRbb3B0aW9uc109XCJkZXB0c1wiXHJcblx0XHRcdFx0WyhuZ01vZGVsKV09XCJkZXB0XCJcclxuXHRcdFx0XHRhcHBlbmRUbz1cImJvZHlcIlxyXG5cdFx0XHRcdG9wdGlvbkxhYmVsPVwiZGVwdE5hbWVcIlxyXG5cdFx0XHRcdG9wdGlvblZhbHVlPVwiZGVwdElkXCJcclxuXHRcdFx0XHRbcGxhY2Vob2xkZXJdPVwiJ2ltcG9ydC5kZXB0UGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcclxuXHRcdFx0XHRbc2l6ZV09XCInc21hbGwnXCJcclxuXHRcdFx0XHRjbGFzcz1cInctZnVsbCBtZDp3LTU2XCIgLz5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PGRpdlxyXG5cdFx0XHRjbGFzcz1cInAtZmlsZS1pbXBvcnQgY29sLTEyXCJcclxuXHRcdFx0c3R5bGU9XCJwYWRkaW5nOiAwLjVyZW1cIj5cclxuXHRcdFx0PHAtZmlsZVVwbG9hZFxyXG5cdFx0XHRcdCNwcmltZUZpbGVVcGxvYWRcclxuXHRcdFx0XHRjaG9vc2VTdHlsZUNsYXNzPVwicC1lbGVtZW50IHAtYnV0dG9uLXRleHQgcC1idXR0b24gcC1jb21wb25lbnRcIlxyXG5cdFx0XHRcdG1vZGU9XCJiYXNpY1wiXHJcblx0XHRcdFx0Y2hvb3NlSWNvbj1cInBpIHBpLXVwbG9hZFwiXHJcblx0XHRcdFx0W2Nob29zZUxhYmVsXT1cIidpbXBvcnQudXBsb2FkRmlsZScgfCB0cmFuc2xhdGVcIlxyXG5cdFx0XHRcdFthdXRvXT1cInRydWVcIlxyXG5cdFx0XHRcdFtjdXN0b21VcGxvYWRdPVwidHJ1ZVwiXHJcblx0XHRcdFx0KHVwbG9hZEhhbmRsZXIpPVwidXBsb2FkKCRldmVudClcIj48L3AtZmlsZVVwbG9hZD5cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG48L3AtZGlhbG9nPlxyXG4iXX0=
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvaW1wb3J0L2ltcG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL2ltcG9ydC9pbXBvcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUF5QixXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7QUFlbkQsTUFBTSxPQUFPLGVBQWU7SUFjM0IsWUFDUyxJQUFnQixFQUNoQixNQUFxQjtRQURyQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFkOUIsWUFBTyxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNoQyxhQUFRLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDM0IsYUFBUSxHQUFH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Q1YsSUFBSSxXQUNQLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUM7MkdBS3BFLFVBQVU7c0JBQWhDLFNBQVM7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBtb2RlbCwgaW5wdXQsIG91dHB1dCwgaW5qZWN0LCBlZmZlY3QsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XHJcbmltcG9ydCB7IERpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGlhbG9nJztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZCB9IGZyb20gJ3ByaW1lbmcvZmlsZXVwbG9hZCc7XHJcbmltcG9ydCB7IFNlbGVjdE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc2VsZWN0JztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEV2ZW50LCBIdHRwUmVxdWVzdCwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9hY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBHcmlkQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC9ncmlkL2dyaWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBQbGF0Zm9ybUxvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSW1wb3J0T3B0aW9ucyB7XHJcblx0dGl0bGU/OiBzdHJpbmc7XHJcblx0ZmlsZU5hbWU/OiBzdHJpbmc7XHJcblx0ZGF0YT86IGFueTtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcHAtaW1wb3J0JyxcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdGltcG9ydHM6IFtGb3Jtc01vZHVsZSwgQnV0dG9uTW9kdWxlLCBEaWFsb2dNb2R1bGUsIEZpbGVVcGxvYWQsIFNlbGVjdE1vZHVsZSwgVHJhbnNsYXRlUGlwZV0sXHJcblx0dGVtcGxhdGVVcmw6ICcuL2ltcG9ydC5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmw6ICcuL2ltcG9ydC5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbXBvcnRDb21wb25lbnQge1xyXG5cdEBWaWV3Q2hpbGQoRmlsZVVwbG9hZCkgZmlsZVVwbG9hZCE6IEZpbGVVcGxvYWQ7XHJcblx0dmlzaWJsZSA9IG1vZGVsPGJvb2xlYW4+KGZhbHNlKTtcclxuXHRmaWxlTmFtZSA9IGlucHV0PHN0cmluZz4oKTtcclxuXHRmdW5jTmFtZSA9IGlucHV0PHN0cmluZz4oKTtcclxuXHRvcmdWaXNpYmxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdG9yZ0ZpZWxkID0gaW5wdXQ8c3RyaW5nPigpO1xyXG5cdG1vZGVsTmFtZSA9IGlucHV0PHN0cmluZz4oJycpO1xyXG5cdGdyaWQgPSBpbnB1dDxHcmlkQ29tcG9uZW50PigpO1xyXG5cdGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblx0cGxhdGZvcm1Mb2NhdGlvbiA9IGluamVjdChQbGF0Zm9ybUxvY2F0aW9uKTtcclxuXHRkZXB0czogYW55W10gPSBbXTtcclxuXHRkZXB0OiBhbnk7XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG5cdFx0cHJpdmF0ZSBhY3Rpb246IEFjdGlvblNlcnZpY2UsXHJcblx0KSB7XHJcblx0XHRlZmZlY3QoXHJcblx0XHRcdCgpID0+IHtcclxuXHRcdFx0XHRjb25zdCBhY3Rpb24gPSB0aGlzLmFjdGlvbi5nZXRBY3Rpb24oKTtcclxuXHRcdFx0XHRpZiAoYWN0aW9uPy50eXBlID09PSAnaW1wb3J0Jykge1xyXG5cdFx0XHRcdFx0dGhpcy5pbml0RGVwdHMoKTtcclxuXHRcdFx0XHRcdHRoaXMudmlzaWJsZS5zZXQodHJ1ZSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHR0aGlzLmFjdGlvbi5zZXRBY3Rpb24odW5kZWZpbmVkKTtcclxuXHR9XHJcblxyXG5cdGluaXREZXB0cygpIHtcclxuXHRcdGNvbnN0IHVzZXJJbmZvID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndXNlckluZm8nKSEpO1xyXG5cdFx0dGhpcy5kZXB0cyA9IHVzZXJJbmZvLmRlcHRzO1xyXG5cdH1cclxuXHJcblx0Y2FuY2VsKCkge1xyXG5cdFx0dGhpcy52aXNpYmxlLnNldChmYWxzZSk7XHJcblx0fVxyXG5cclxuXHRkb3dubG9hZCgpIHtcclxuXHRcdGxldCBiYXNlSHJlZiA9IHRoaXMucGxhdGZvcm1Mb2NhdGlvbi5nZXRCYXNlSHJlZkZyb21ET00oKTtcclxuXHRcdGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcblx0XHRsaW5rLmhyZWYgPSBpc0Rldk1vZGUoKVxyXG5cdFx0XHQ/ICcvaW1wb3J0RmlsZXMvJyArIHRoaXMuZmlsZU5hbWUoKSArICcueGxzeCdcclxuXHRcdFx0OiBgLyR7YmFzZUhyZWYucmVwbGFjZSgvXFwvKC4qPylcXC8vLCAnJDEnKX0vaW1wb3J0RmlsZXMvJHt0aGlzLmZpbGVOYW1lKCl9Lnhsc3hgO1xyXG5cdFx0bGluay5kb3dubG9hZCA9IHRoaXMuZmlsZU5hbWUoKSArICcueGxzeCc7XHJcblx0XHRkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG5cdFx0bGluay5jbGljaygpO1xyXG5cdFx0ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuXHR9XHJcblxyXG5cdHVwbG9hZChpdGVtOiBhbnkpIHtcclxuXHRcdHRoaXMuZGlzYWJsZWQgPSB0cnVlO1xyXG5cdFx0bGV0IHVzZXJJbmZvID0gSlNPTi5wYXJzZSh3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXJJbmZvJykhKSB8fCB7fTtcclxuXHRcdGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcblx0XHRmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBpdGVtLmZpbGVzWzBdIGFzIGFueSk7XHJcblx0XHRpZiAodGhpcy5vcmdWaXNpYmxlKCkpIHtcclxuXHRcdFx0Zm9ybURhdGEuYXBwZW5kKHRoaXMub3JnRmllbGQoKSA/PyAnb3JnSWQnLCB0aGlzLmRlcHQgPz8gJycpO1xyXG5cdFx0fVxyXG5cdFx0Zm9ybURhdGEuYXBwZW5kKCdtb2RlbE5hbWUnLCB0aGlzLm1vZGVsTmFtZSgpKTtcclxuXHRcdGZvcm1EYXRhLmFwcGVuZCgnb3BlcmF0b3InLCB1c2VySW5mby51c2VyTmFtZSB8fCAnJyk7XHJcblx0XHRjb25zdCByZXEgPSBuZXcgSHR0cFJlcXVlc3QoJ1BPU1QnLCB0aGlzLmZ1bmNOYW1lKCkgPz8gJ2ltcG9ydCcsIGZvcm1EYXRhLCB7XHJcblx0XHRcdHJlcG9ydFByb2dyZXNzOiB0cnVlLFxyXG5cdFx0XHR3aXRoQ3JlZGVudGlhbHM6IGZhbHNlLFxyXG5cdFx0fSk7XHJcblxyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5yZXF1ZXN0KHJlcSkuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKGV2ZW50OiBIdHRwRXZlbnQ8YW55PikgPT4ge1xyXG5cdFx0XHRcdGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xyXG5cdFx0XHRcdFx0dGhpcy5kaXNhYmxlZCA9IGZhbHNlO1xyXG5cdFx0XHRcdFx0dGhpcy5ncmlkKCk/LmdldERhdGEoKTtcclxuXHRcdFx0XHRcdHRoaXMuZmlsZVVwbG9hZC5jbGVhcigpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0ZXJyb3I6IChlcnIpID0+IHtcclxuXHRcdFx0XHR0aGlzLmRpc2FibGVkID0gZmFsc2U7XHJcblx0XHRcdFx0dGhpcy5ncmlkKCk/LmdldERhdGEoKTtcclxuXHRcdFx0XHR0aGlzLmZpbGVVcGxvYWQuY2xlYXIoKTtcclxuXHRcdFx0fSxcclxuXHRcdH0pO1xyXG5cdH1cclxufVxyXG4iLCI8cC1kaWFsb2dcclxuXHRbaGVhZGVyXT1cIidpbXBvcnQudGl0bGUnIHwgdHJhbnNsYXRlXCJcclxuXHRbbW9kYWxdPVwidHJ1ZVwiXHJcblx0YXBwZW5kVG89XCJib2R5XCJcclxuXHRbc3R5bGVdPVwieyB3aWR0aDogJzMwcmVtJyB9XCJcclxuXHQob25IaWRlKT1cImNhbmNlbCgpXCJcclxuXHRbKHZpc2libGUpXT1cInZpc2libGVcIj5cclxuXHQ8ZGl2IGNsYXNzPVwiZ3JpZCBwLWZsdWlkXCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcblx0XHRcdDxzcGFuIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4XCI+MS57eyAnaW1wb3J0LnRlbXBsYXRlRG93bmxvYWQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8ZGl2XHJcblx0XHRcdGNsYXNzPVwiY29sLTEyXCJcclxuXHRcdFx0c3R5bGU9XCJwYWRkaW5nOiAwLjVyZW1cIj5cclxuXHRcdFx0PGJ1dHRvblxyXG5cdFx0XHRcdHBCdXR0b25cclxuXHRcdFx0XHRjbGFzcz1cInAtZWxlbWVudCBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uIHAtY29tcG9uZW50XCJcclxuXHRcdFx0XHQoY2xpY2spPVwiZG93bmxvYWQoKVwiPlxyXG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwicC1idXR0b24tbGFiZWxcIj5cclxuXHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktZG93bmxvYWRcIj48L2k+PHNwYW4gY2xhc3M9XCJwbC0yXCI+e3sgJ2ltcG9ydC5kb3dubG9hZFRlbXBsYXRlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuXHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcblx0XHRcdDxzcGFuIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4XCI+Mi57eyAnaW1wb3J0LmZpbGVVcGxvYWQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG5cdFx0PC9kaXY+XHJcblx0XHRAaWYgKG9yZ1Zpc2libGUoKSkge1xyXG5cdFx0XHQ8ZGl2XHJcblx0XHRcdFx0Y2xhc3M9XCJjb2wtMTJcIlxyXG5cdFx0XHRcdHN0eWxlPVwicGFkZGluZzogMXJlbSAwLjVyZW0gMCAwLjVyZW1cIj5cclxuXHRcdFx0XHQ8cC1zZWxlY3RcclxuXHRcdFx0XHRcdFtzdHlsZV09XCJ7IHdpZHRoOiAnMjc1cHgnIH1cIlxyXG5cdFx0XHRcdFx0W29wdGlvbnNdPVwiZGVwdHNcIlxyXG5cdFx0XHRcdFx0WyhuZ01vZGVsKV09XCJkZXB0XCJcclxuXHRcdFx0XHRcdGFwcGVuZFRvPVwiYm9keVwiXHJcblx0XHRcdFx0XHRvcHRpb25MYWJlbD1cImRlcHROYW1lXCJcclxuXHRcdFx0XHRcdG9wdGlvblZhbHVlPVwiZGVwdElkXCJcclxuXHRcdFx0XHRcdFtwbGFjZWhvbGRlcl09XCInaW1wb3J0LmRlcHRQbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcIlxyXG5cdFx0XHRcdFx0W3NpemVdPVwiJ3NtYWxsJ1wiXHJcblx0XHRcdFx0XHRjbGFzcz1cInctZnVsbCBtZDp3LTU2XCIgLz5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHR9XHJcblx0XHQ8ZGl2XHJcblx0XHRcdGNsYXNzPVwicC1maWxlLWltcG9ydCBjb2wtMTJcIlxyXG5cdFx0XHRzdHlsZT1cInBhZGRpbmc6IDAuNXJlbVwiPlxyXG5cdFx0XHQ8cC1maWxlVXBsb2FkXHJcblx0XHRcdFx0I3ByaW1lRmlsZVVwbG9hZFxyXG5cdFx0XHRcdGNob29zZVN0eWxlQ2xhc3M9XCJwLWVsZW1lbnQgcC1idXR0b24tdGV4dCBwLWJ1dHRvbiBwLWNvbXBvbmVudFwiXHJcblx0XHRcdFx0bW9kZT1cImJhc2ljXCJcclxuXHRcdFx0XHRjaG9vc2VJY29uPVwicGkgcGktdXBsb2FkXCJcclxuXHRcdFx0XHRbY2hvb3NlTGFiZWxdPVwiJ2ltcG9ydC51cGxvYWRGaWxlJyB8IHRyYW5zbGF0ZVwiXHJcblx0XHRcdFx0W2F1dG9dPVwidHJ1ZVwiXHJcblx0XHRcdFx0W2N1c3RvbVVwbG9hZF09XCJ0cnVlXCJcclxuXHRcdFx0XHQodXBsb2FkSGFuZGxlcik9XCJ1cGxvYWQoJGV2ZW50KVwiPjwvcC1maWxlVXBsb2FkPlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcbjwvcC1kaWFsb2c+XHJcbiJdfQ==
|
|
@@ -28,10 +28,10 @@ export class LogComponent {
|
|
|
28
28
|
return str?.slice(-2);
|
|
29
29
|
}
|
|
30
30
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LogComponent, deps: [{ token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LogComponent, isStandalone: true, selector: "custom-log", inputs: { logs: { classPropertyName: "logs", publicName: "logs", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, providers: [DatePipe], ngImport: i0, template: "<div class=\"log-panel\">\r\n\t<div class=\"log-content\">\r\n\t\t@for (log of parsedLogs; track log) {\r\n\t\t\t<div class=\"log-item p-2\">\r\n\t\t\t\t<div class=\"log-item-header flex flex-row\">\r\n\t\t\t\t\t<p-avatar\r\n\t\t\t\t\t\t[label]=\"getLastTwoCharacters(log.operator)\"\r\n\t\t\t\t\t\tstyleClass=\"mr-2\"\r\n\t\t\t\t\t\tsize=\"large\" />\r\n\t\t\t\t\t<div>\r\n\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t<span class=\"px-2 font-semibold log-item-user\">{{ log.operator }}</span>\r\n\t\t\t\t\t\t\t<span class=\"log-item-time\">{{ log.createdAt | date: 'yyyy-MM-dd HH:mm:ss' : 'GMT' }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"px-2\">\r\n\t\t\t\t\t\t\t@for (item of log.content; track item) {\r\n\t\t\t\t\t\t\t\t<div class=\"flex items-
|
|
31
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LogComponent, isStandalone: true, selector: "custom-log", inputs: { logs: { classPropertyName: "logs", publicName: "logs", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, providers: [DatePipe], ngImport: i0, template: "<div class=\"log-panel\">\r\n\t<div class=\"log-content\">\r\n\t\t@for (log of parsedLogs; track log) {\r\n\t\t\t<div class=\"log-item p-2\">\r\n\t\t\t\t<div class=\"log-item-header flex flex-row\">\r\n\t\t\t\t\t<p-avatar\r\n\t\t\t\t\t\t[label]=\"getLastTwoCharacters(log.operator)\"\r\n\t\t\t\t\t\tstyleClass=\"mr-2 min-w-[40px]\"\r\n\t\t\t\t\t\tsize=\"large\" />\r\n\t\t\t\t\t<div>\r\n\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t<span class=\"px-2 font-semibold log-item-user\">{{ log.operator }}</span>\r\n\t\t\t\t\t\t\t<span class=\"log-item-time\">{{ log.createdAt | date: 'yyyy-MM-dd HH:mm:ss' : 'GMT' }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"px-2\">\r\n\t\t\t\t\t\t\t@for (item of log.content; track item) {\r\n\t\t\t\t\t\t\t\t<div class=\"flex items-start\">\r\n\t\t\t\t\t\t\t\t\t<span class=\"iconfont icon-main mr-1\"></span>\r\n\t\t\t\t\t\t\t\t\t<span class=\"log-item-content\">{{ item }}</span>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t@for (subItem of log.subContent; track subItem) {\r\n\t\t\t\t\t\t\t\t<div class=\"flex items-start\">\r\n\t\t\t\t\t\t\t\t\t<span class=\"ml-6 log-item-content\">{{ subItem }}</span>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n</div>\r\n", styles: [".log-panel{color:#334155}.log-item-user{font-size:13px}.log-item-time{color:#989ea6;font-size:11px}.log-item-unit{font-size:6px}.log-item-content{padding-top:1px;white-space:normal!important;word-break:break-word!important}:host ::ng-deep .p-avatar-lg{font-size:1rem;background:var(--p-primary-color);color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i2.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "style", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "pipe", type: DatePipe, name: "date" }] }); }
|
|
32
32
|
}
|
|
33
33
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LogComponent, decorators: [{
|
|
34
34
|
type: Component,
|
|
35
|
-
args: [{ selector: 'custom-log', standalone: true, imports: [AvatarModule, DatePipe], providers: [DatePipe], template: "<div class=\"log-panel\">\r\n\t<div class=\"log-content\">\r\n\t\t@for (log of parsedLogs; track log) {\r\n\t\t\t<div class=\"log-item p-2\">\r\n\t\t\t\t<div class=\"log-item-header flex flex-row\">\r\n\t\t\t\t\t<p-avatar\r\n\t\t\t\t\t\t[label]=\"getLastTwoCharacters(log.operator)\"\r\n\t\t\t\t\t\tstyleClass=\"mr-2\"\r\n\t\t\t\t\t\tsize=\"large\" />\r\n\t\t\t\t\t<div>\r\n\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t<span class=\"px-2 font-semibold log-item-user\">{{ log.operator }}</span>\r\n\t\t\t\t\t\t\t<span class=\"log-item-time\">{{ log.createdAt | date: 'yyyy-MM-dd HH:mm:ss' : 'GMT' }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"px-2\">\r\n\t\t\t\t\t\t\t@for (item of log.content; track item) {\r\n\t\t\t\t\t\t\t\t<div class=\"flex items-
|
|
35
|
+
args: [{ selector: 'custom-log', standalone: true, imports: [AvatarModule, DatePipe], providers: [DatePipe], template: "<div class=\"log-panel\">\r\n\t<div class=\"log-content\">\r\n\t\t@for (log of parsedLogs; track log) {\r\n\t\t\t<div class=\"log-item p-2\">\r\n\t\t\t\t<div class=\"log-item-header flex flex-row\">\r\n\t\t\t\t\t<p-avatar\r\n\t\t\t\t\t\t[label]=\"getLastTwoCharacters(log.operator)\"\r\n\t\t\t\t\t\tstyleClass=\"mr-2 min-w-[40px]\"\r\n\t\t\t\t\t\tsize=\"large\" />\r\n\t\t\t\t\t<div>\r\n\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t<span class=\"px-2 font-semibold log-item-user\">{{ log.operator }}</span>\r\n\t\t\t\t\t\t\t<span class=\"log-item-time\">{{ log.createdAt | date: 'yyyy-MM-dd HH:mm:ss' : 'GMT' }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"px-2\">\r\n\t\t\t\t\t\t\t@for (item of log.content; track item) {\r\n\t\t\t\t\t\t\t\t<div class=\"flex items-start\">\r\n\t\t\t\t\t\t\t\t\t<span class=\"iconfont icon-main mr-1\"></span>\r\n\t\t\t\t\t\t\t\t\t<span class=\"log-item-content\">{{ item }}</span>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t@for (subItem of log.subContent; track subItem) {\r\n\t\t\t\t\t\t\t\t<div class=\"flex items-start\">\r\n\t\t\t\t\t\t\t\t\t<span class=\"ml-6 log-item-content\">{{ subItem }}</span>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n</div>\r\n", styles: [".log-panel{color:#334155}.log-item-user{font-size:13px}.log-item-time{color:#989ea6;font-size:11px}.log-item-unit{font-size:6px}.log-item-content{padding-top:1px;white-space:normal!important;word-break:break-word!important}:host ::ng-deep .p-avatar-lg{font-size:1rem;background:var(--p-primary-color);color:#fff}\n"] }]
|
|
36
36
|
}], ctorParameters: () => [{ type: i1.DatePipe }] });
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvbG9nL2xvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL2xvZy9sb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFVM0MsTUFBTSxPQUFPLFlBQVk7SUFNeEIsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUx0QyxTQUFJLEdBQUcsS0FBSyxDQUFpQixFQUFFLENBQUMsQ0FBQztRQUNqQyxlQUFVLEdBQVUsRUFBRSxDQUFDO1FBQ3ZCLE9BQUUsR0FBRyxLQUFLLEVBQU8sQ0FBQztRQUNsQixZQUFPLEdBQVUsRUFBRSxDQUFDO1FBR25CLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ2xCLE9BQU87WUFDUixDQUFDO1lBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUMzQixNQUFNLFNBQVMsR0FBUSxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUM7Z0JBQ2xDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDOUQsU0FBUyxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzFGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsb0JBQW9CLENBQUMsR0FBVztRQUMvQixPQUFPLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixDQUFDOytHQXZCVyxZQUFZO21HQUFaLFlBQVkseVNBRmIsQ0FBQyxRQUFRLENBQUMsMEJDWHRCLHV5Q0FpQ0EsbVhEekJXLFlBQVksOE5BQUUsUUFBUTs7NEZBS3BCLFlBQVk7a0JBUnhCLFNBQVM7K0JBQ0MsWUFBWSxjQUNWLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsYUFHdEIsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGVmZmVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXZhdGFyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9hdmF0YXInO1xyXG5pbXBvcnQgeyBUcmFjZU1lc3NhZ2UgfSBmcm9tICcuLi9hbS9hbS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2N1c3RvbS1sb2cnLFxyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0aW1wb3J0czogW0F2YXRhck1vZHVsZSwgRGF0ZVBpcGVdLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9sb2cuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsOiAnLi9sb2cuY29tcG9uZW50LnNjc3MnLFxyXG5cdHByb3ZpZGVyczogW0RhdGVQaXBlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIExvZ0NvbXBvbmVudCB7XHJcblx0bG9ncyA9IGlucHV0PFRyYWNlTWVzc2FnZVtdPihbXSk7XHJcblx0cGFyc2VkTG9nczogYW55W10gPSBbXTtcclxuXHRpZCA9IGlucHV0PGFueT4oKTtcclxuXHR0YXJnZXRzOiBhbnlbXSA9IFtdO1xyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSkge1xyXG5cdFx0ZWZmZWN0KCgpID0+IHtcclxuXHRcdFx0aWYgKCF0aGlzLmxvZ3MoKSkge1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLnBhcnNlZExvZ3MgPSBbXTtcclxuXHRcdFx0dGhpcy5sb2dzKCkuZm9yRWFjaCgobG9nKSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgcGFyc2VkTG9nOiBhbnkgPSB7IC4uLmxvZyB9O1xyXG5cdFx0XHRcdHBhcnNlZExvZy5jb250ZW50ID0gbG9nLmNvbnRlbnQgPyBsb2cuY29udGVudC5zcGxpdCgnOycpIDogW107XHJcblx0XHRcdFx0cGFyc2VkTG9nLnN1YkNvbnRlbnQgPSBsb2cuc3ViQ29udGVudCA/IGxvZy5zdWJDb250ZW50LnJlcGxhY2UoLzsrJC8sICcnKS5zcGxpdCgnOycpIDogW107XHJcblx0XHRcdFx0dGhpcy5wYXJzZWRMb2dzLnB1c2gocGFyc2VkTG9nKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGdldExhc3RUd29DaGFyYWN0ZXJzKHN0cjogc3RyaW5nKSB7XHJcblx0XHRyZXR1cm4gc3RyPy5zbGljZSgtMik7XHJcblx0fVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJsb2ctcGFuZWxcIj5cclxuXHQ8ZGl2IGNsYXNzPVwibG9nLWNvbnRlbnRcIj5cclxuXHRcdEBmb3IgKGxvZyBvZiBwYXJzZWRMb2dzOyB0cmFjayBsb2cpIHtcclxuXHRcdFx0PGRpdiBjbGFzcz1cImxvZy1pdGVtIHAtMlwiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJsb2ctaXRlbS1oZWFkZXIgZmxleCBmbGV4LXJvd1wiPlxyXG5cdFx0XHRcdFx0PHAtYXZhdGFyXHJcblx0XHRcdFx0XHRcdFtsYWJlbF09XCJnZXRMYXN0VHdvQ2hhcmFjdGVycyhsb2cub3BlcmF0b3IpXCJcclxuXHRcdFx0XHRcdFx0c3R5bGVDbGFzcz1cIm1yLTIgbWluLXctWzQwcHhdXCJcclxuXHRcdFx0XHRcdFx0c2l6ZT1cImxhcmdlXCIgLz5cclxuXHRcdFx0XHRcdDxkaXY+XHJcblx0XHRcdFx0XHRcdDxkaXY+XHJcblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJweC0yIGZvbnQtc2VtaWJvbGQgbG9nLWl0ZW0tdXNlclwiPnt7IGxvZy5vcGVyYXRvciB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImxvZy1pdGVtLXRpbWVcIj57eyBsb2cuY3JlYXRlZEF0IHwgZGF0ZTogJ3l5eXktTU0tZGQgSEg6bW06c3MnIDogJ0dNVCcgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicHgtMlwiPlxyXG5cdFx0XHRcdFx0XHRcdEBmb3IgKGl0ZW0gb2YgbG9nLmNvbnRlbnQ7IHRyYWNrIGl0ZW0pIHtcclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLXN0YXJ0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiaWNvbmZvbnQgaWNvbi1tYWluIG1yLTFcIj48L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibG9nLWl0ZW0tY29udGVudFwiPnt7IGl0ZW0gfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0QGZvciAoc3ViSXRlbSBvZiBsb2cuc3ViQ29udGVudDsgdHJhY2sgc3ViSXRlbSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXggaXRlbXMtc3RhcnRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJtbC02IGxvZy1pdGVtLWNvbnRlbnRcIj57eyBzdWJJdGVtIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdH1cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -296,7 +296,7 @@ export class PageFormComponent extends AmComponent {
|
|
|
296
296
|
}, 0);
|
|
297
297
|
}
|
|
298
298
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
299
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PageFormComponent, isStandalone: true, selector: "app-page-form", inputs: { addVisible: { classPropertyName: "addVisible", publicName: "addVisible", isSignal: true, isRequired: false, transformFunction: null }, gridList: { classPropertyName: "gridList", publicName: "gridList", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: true, transformFunction: null }, getPrmInput: { classPropertyName: "getPrmInput", publicName: "getPrmInput", isSignal: true, isRequired: true, transformFunction: null }, statusSteps: { classPropertyName: "statusSteps", publicName: "statusSteps", isSignal: true, isRequired: false, transformFunction: null }, statusKey: { classPropertyName: "statusKey", publicName: "statusKey", isSignal: true, isRequired: false, transformFunction: null }, hrefBtnList: { classPropertyName: "hrefBtnList", publicName: "hrefBtnList", isSignal: true, isRequired: false, transformFunction: null }, setTitle: { classPropertyName: "setTitle", publicName: "setTitle", isSignal: true, isRequired: false, transformFunction: null }, actionList: { classPropertyName: "actionList", publicName: "actionList", isSignal: true, isRequired: false, transformFunction: null }, modelLog: { classPropertyName: "modelLog", publicName: "modelLog", isSignal: true, isRequired: false, transformFunction: null }, formDisabled: { classPropertyName: "formDisabled", publicName: "formDisabled", isSignal: true, isRequired: false, transformFunction: null }, statusConf: { classPropertyName: "statusConf", publicName: "statusConf", isSignal: true, isRequired: false, transformFunction: null }, formDetail: { classPropertyName: "formDetail", publicName: "formDetail", isSignal: true, isRequired: false, transformFunction: null }, saveFunc: { classPropertyName: "saveFunc", publicName: "saveFunc", isSignal: true, isRequired: false, transformFunction: null }, authLevel: { classPropertyName: "authLevel", publicName: "authLevel", isSignal: true, isRequired: false, transformFunction: null } }, providers: [], viewQueries: [{ propertyName: "cForm", first: true, predicate: ["cForm"], descendants: true }, { propertyName: "customGrid", predicate: ["customGrid"], descendants: true }, { propertyName: "tabForm", predicate: ["tabForm"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"md:overflow-hidden\">\r\n\t<div class=\"flex md:flex-wrap lg:flex-nowrap items-center md:justify-between py-1 px-1 border-b-[1px] border-[#dbdbdb] bg-white\">\r\n\t\t<div class=\"md:basis-1/3 order-1\">\r\n\t\t\t<app-crumb-action\r\n\t\t\t\t[addVisible]=\"addVisible()\"\r\n\t\t\t\t[newUrl]=\"newUrl\"\r\n\t\t\t\t[isShowCog]=\"true\"\r\n\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t[authLevel]=\"authLevel()\"\r\n\t\t\t\t[actionList]=\"actionList()\"\r\n\t\t\t\t[data]=\"getPrm.data ?? {}\"\r\n\t\t\t\t(actionEvent)=\"authClick($event)\"\r\n\t\t\t\t(saveEvent)=\"submitForm()\">\r\n\t\t\t</app-crumb-action>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"basis-1/5 lg:basis-2/3 order-2 lg:order-2 md:order-last md:basis-full md:mt-[6px]\">\r\n\t\t\t<href-btn-list\r\n\t\t\t\t[hrefs]=\"hrefBtnList()\"\r\n\t\t\t\t(hrefClick)=\"goRun($event)\"></href-btn-list>\r\n\t\t\t<!-- @if (id) {\r\n\t\t\t\t@for (btn of hrefBtnList(); track btn) {\r\n\t\t\t\t\t<p-button\r\n\t\t\t\t\t\t[variant]=\"btn?.variant\"\r\n\t\t\t\t\t\t[severity]=\"btn?.severity\"\r\n\t\t\t\t\t\tclass=\"mr-[6px]\"\r\n\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t[icon]=\"btn?.icon\"\r\n\t\t\t\t\t\tlabel=\"{{ btn.i18nKey ? i18n.fanyi(btn.i18nKey) : btn.label }}\"\r\n\t\t\t\t\t\t(click)=\"goRun(btn)\">\r\n\t\t\t\t\t</p-button>\r\n\t\t\t\t}\r\n\t\t\t} -->\r\n\t\t</div>\r\n\t\t<div class=\"basis-1/3 order-3\"></div>\r\n\t</div>\r\n\t<div class=\"flex\">\r\n\t\t<div class=\"px-2 flex flex-wrap items-center basis-full\" [class]=\"modelLog() ? 'md:basis-2/3':''\">\r\n\t\t\t<div class=\"hidden md:basis-1/3 py-1 basis-full md:flex items-center gap-2 flex-row order-1\">\r\n\t\t\t\t@for (action of actionList(); let i = $index; track action) {\r\n\t\t\t\t\t<p-button\r\n\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t[icon]=\"getPrm.data?.icon\"\r\n\t\t\t\t\t\t[label]=\"action.i18nKey ? (action.i18nKey | translate) : action.label\"\r\n\t\t\t\t\t\t[disabled]=\"action.btnDisabled ? action.btnDisabled(getPrm.data) : false\"\r\n\t\t\t\t\t\t[styleClass]=\"\r\n\t\t\t\t\t\t\t(action.auth || 0) > (authLevel() || 0) || !!action.btnHidden?.(getPrm.data) ? 'form-action hidden' : 'form-action block'\r\n\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t(onClick)=\"action.onClick != '' && action.onClick?.(getPrm.data)\">\r\n\t\t\t\t\t</p-button>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t\t<div class=\"md:basis-2/3 basis-full flex md:flex-row-reverse flex-row md:order-2 order-first w-full\">\r\n\t\t\t\t<custom-steps\r\n\t\t\t\t\t#customSteps\r\n\t\t\t\t\tclass=\"w-full\"\r\n\t\t\t\t\t[steps]=\"statusSteps()\"\r\n\t\t\t\t\t[current]=\"getPrm.data && getPrm.data[statusKey()] !== undefined ? getPrm.data[statusKey()] : 0\"\r\n\t\t\t\t\t[authLevel]=\"authLevel()\"\r\n\t\t\t\t\t(change)=\"statusChange($event, customSteps)\">\r\n\t\t\t\t</custom-steps>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"main flex flex-wrap md:overflow-y-hidden\">\r\n\t\t<div class=\"basis-full h-full overflow-y-auto\" [class]=\"modelLog() ? 'md:basis-2/3':''\">\r\n\t\t\t<div class=\"bg-white mx-2 form-panel\">\r\n\t\t\t\t<div class=\"p-2 flex-1\">\r\n\t\t\t\t\t<form [formGroup]=\"form().form!\">\r\n\t\t\t\t\t\t<custom-form\r\n\t\t\t\t\t\t\t#cForm\r\n\t\t\t\t\t\t\t[options]=\"formOptions\"\r\n\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\r\n\t\t\t\t\t\t\t[model]=\"getPrm.data ?? {}\"></custom-form>\r\n\t\t\t\t\t</form>\r\n\t\t\t\t</div>\r\n\t\t\t\t@if (gridList() && gridList().length >0) {\r\n\t\t\t\t\t<div class=\"relative mb-2\">\r\n\t\t\t\t\t\t<p-tabs [(value)]=\"indexValue\">\r\n\t\t\t\t\t\t\t<p-tablist>\r\n\t\t\t\t\t\t\t\t@for (fchild of gridList(); let i = $index; track fchild) {\r\n\t\t\t\t\t\t\t\t\t<p-tab [value]=\"i\" (click)=\"tabClick()\">\r\n\t\t\t\t\t\t\t\t\t\t{{ fchild.i18nKey ? i18n.fanyi(fchild.i18nKey) : fchild.title }}\r\n\t\t\t\t\t\t\t\t\t</p-tab>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</p-tablist>\r\n\t\t\t\t\t\t</p-tabs>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t\t@for (grid of gridList(); let i = $index; track grid) {\r\n\t\t\t\t\t@if(grid.type == 'grid'){\r\n\t\t\t\t\t\t<custom-grid\r\n\t\t\t\t\t\t\t#customGrid\r\n\t\t\t\t\t\t\t[hidden]=\"indexValue != i\"\r\n\t\t\t\t\t\t\t[rowData]=\"getPrm.data?.[grid.subDataKey!] || []\"\r\n\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\r\n\t\t\t\t\t\t\t(deleteEmit)=\"delRows($event)\"\r\n\t\t\t\t\t\t\t[addType]=\"grid.subTableSource\"\r\n\t\t\t\t\t\t\t(addEmit)=\"dataSourceShow()\"\r\n\t\t\t\t\t\t\t[gridOptions]=\"grid.gridOptions\"\r\n\t\t\t\t\t\t\t[authLevel]=\"authLevel()\"\r\n\t\t\t\t\t\t\t[showDelete]=\"grid.showDelete\"\r\n\t\t\t\t\t\t\t[selectData]=\"grid.selectData\">\r\n\t\t\t\t\t\t</custom-grid>\r\n\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t<!-- @if(indexValue == i){\r\n\t\t\t\t\t\t\t<form [formGroup]=\"grid.form!\">\r\n\t\t\t\t\t\t\t\t<custom-form\r\n\t\t\t\t\t\t\t\t[options]=\"grid\"\r\n\t\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t</custom-form>\r\n\t\t\t\t\t\t\t</form>\r\n\t\t\t\t\t\t} -->\r\n\t\t\t\t\t\t<custom-form\r\n\t\t\t\t\t\t\t#tabForm\r\n\t\t\t\t\t\t\t[hidden]=\"indexValue != i\"\r\n\t\t\t\t\t\t\t[options]=\"grid\"\r\n\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\r\n\t\t\t\t\t\t\t[model]=\"subFormModel[grid.subDataKey!] || {}\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t</custom-form>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t@if(modelLog()){\r\n\t\t\t<div class=\"md:basis-1/3 basis-full h-full overflow-y-auto\">\r\n\t\t\t\t<custom-log [logs]=\"getPrm.data?.log ?? []\"></custom-log>\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n</div>\r\n<row-selector\r\n\t[(visible)]=\"visible\"\r\n\t[searchPrm]=\"dialogSearchPrm\"\r\n\t[gridOptions]=\"selectOptions\"\r\n\t(onOk)=\"onOk($event)\">\r\n</row-selector>\r\n", styles: ["@charset \"UTF-8\";.main{height:calc(100vh - 128px)}:host ::ng-deep .main .ag-root-wrapper{border-left:none!important;border-right:none!important;border-bottom:none!important}:host ::ng-deep .form-action{background:#e7e9ed!important;color:var(--ag-text-color)!important;border-color:#e7e9ed!important}:host ::ng-deep .form-action:not(:disabled):hover{background-color:#d8dadd!important;border-color:#d8dadd}.form-panel{border:solid 1px #dbdbdb}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormComponent, selector: "custom-form", inputs: ["options", "model", "upsert"] }, { kind: "component", type: LogComponent, selector: "custom-log", inputs: ["logs", "id"] }, { kind: "component", type: CrumbActionComponent, selector: "app-crumb-action", inputs: ["isShowCog", "addVisible", "newUrl", "onExport", "outlined", "isList", "authLevel", "actionList", "data", "menus"], outputs: ["saveEvent", "cancelEvent", "actionEvent"] }, { kind: "component", type: StepsComponent, selector: "custom-steps", inputs: ["needSelfAdjusting", "steps", "current", "authLevel"], outputs: ["change"] }, { kind: "component", type: GridComponent, selector: "custom-grid", inputs: ["gridOptions", "upsert", "rowData", "searchPrm", "addType", "selectData", "showAct", "actPos", "authLevel", "showDelete"], outputs: ["deleteEmit", "addEmit"] }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: i3.Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: i3.TabList, selector: "p-tablist" }, { kind: "component", type: i3.Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: RowSelectorComponent, selector: "row-selector", inputs: ["title", "gridOptions", "searchPrm", "visible"], outputs: ["onOk", "visibleChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: HrefBtnListComponent, selector: "href-btn-list", inputs: ["hrefs"], outputs: ["hrefClick"] }] }); }
|
|
299
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PageFormComponent, isStandalone: true, selector: "app-page-form", inputs: { addVisible: { classPropertyName: "addVisible", publicName: "addVisible", isSignal: true, isRequired: false, transformFunction: null }, gridList: { classPropertyName: "gridList", publicName: "gridList", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: true, transformFunction: null }, getPrmInput: { classPropertyName: "getPrmInput", publicName: "getPrmInput", isSignal: true, isRequired: true, transformFunction: null }, statusSteps: { classPropertyName: "statusSteps", publicName: "statusSteps", isSignal: true, isRequired: false, transformFunction: null }, statusKey: { classPropertyName: "statusKey", publicName: "statusKey", isSignal: true, isRequired: false, transformFunction: null }, hrefBtnList: { classPropertyName: "hrefBtnList", publicName: "hrefBtnList", isSignal: true, isRequired: false, transformFunction: null }, setTitle: { classPropertyName: "setTitle", publicName: "setTitle", isSignal: true, isRequired: false, transformFunction: null }, actionList: { classPropertyName: "actionList", publicName: "actionList", isSignal: true, isRequired: false, transformFunction: null }, modelLog: { classPropertyName: "modelLog", publicName: "modelLog", isSignal: true, isRequired: false, transformFunction: null }, formDisabled: { classPropertyName: "formDisabled", publicName: "formDisabled", isSignal: true, isRequired: false, transformFunction: null }, statusConf: { classPropertyName: "statusConf", publicName: "statusConf", isSignal: true, isRequired: false, transformFunction: null }, formDetail: { classPropertyName: "formDetail", publicName: "formDetail", isSignal: true, isRequired: false, transformFunction: null }, saveFunc: { classPropertyName: "saveFunc", publicName: "saveFunc", isSignal: true, isRequired: false, transformFunction: null }, authLevel: { classPropertyName: "authLevel", publicName: "authLevel", isSignal: true, isRequired: false, transformFunction: null } }, providers: [], viewQueries: [{ propertyName: "cForm", first: true, predicate: ["cForm"], descendants: true }, { propertyName: "customGrid", predicate: ["customGrid"], descendants: true }, { propertyName: "tabForm", predicate: ["tabForm"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"md:overflow-hidden\">\r\n\t<div class=\"flex md:flex-wrap lg:flex-nowrap items-center md:justify-between py-1 px-1 border-b-[1px] border-[#dbdbdb] bg-white\">\r\n\t\t<div class=\"md:basis-1/3 order-1\">\r\n\t\t\t<app-crumb-action\r\n\t\t\t\t[addVisible]=\"addVisible()\"\r\n\t\t\t\t[newUrl]=\"newUrl\"\r\n\t\t\t\t[isShowCog]=\"true\"\r\n\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t[authLevel]=\"authLevel()\"\r\n\t\t\t\t[actionList]=\"actionList()\"\r\n\t\t\t\t[data]=\"getPrm.data ?? {}\"\r\n\t\t\t\t(actionEvent)=\"authClick($event)\"\r\n\t\t\t\t(saveEvent)=\"submitForm()\">\r\n\t\t\t</app-crumb-action>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"basis-1/5 lg:basis-2/3 order-2 lg:order-2 md:order-last md:basis-full md:mt-[6px]\">\r\n\t\t\t<href-btn-list\r\n\t\t\t\t[hrefs]=\"hrefBtnList()\"\r\n\t\t\t\t(hrefClick)=\"goRun($event)\"></href-btn-list>\r\n\t\t\t<!-- @if (id) {\r\n\t\t\t\t@for (btn of hrefBtnList(); track btn) {\r\n\t\t\t\t\t<p-button\r\n\t\t\t\t\t\t[variant]=\"btn?.variant\"\r\n\t\t\t\t\t\t[severity]=\"btn?.severity\"\r\n\t\t\t\t\t\tclass=\"mr-[6px]\"\r\n\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t[icon]=\"btn?.icon\"\r\n\t\t\t\t\t\tlabel=\"{{ btn.i18nKey ? i18n.fanyi(btn.i18nKey) : btn.label }}\"\r\n\t\t\t\t\t\t(click)=\"goRun(btn)\">\r\n\t\t\t\t\t</p-button>\r\n\t\t\t\t}\r\n\t\t\t} -->\r\n\t\t</div>\r\n\t\t<div class=\"basis-1/3 order-3\"></div>\r\n\t</div>\r\n\t<div class=\"flex\">\r\n\t\t<div class=\"px-2 flex flex-wrap items-center flex-1\">\r\n\t\t\t<div class=\"hidden md:basis-1/3 py-1 basis-full md:flex items-center gap-2 flex-row order-1\">\r\n\t\t\t\t@for (action of actionList(); let i = $index; track action) {\r\n\t\t\t\t\t<p-button\r\n\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t[icon]=\"getPrm.data?.icon\"\r\n\t\t\t\t\t\t[label]=\"action.i18nKey ? (action.i18nKey | translate) : action.label\"\r\n\t\t\t\t\t\t[disabled]=\"action.btnDisabled ? action.btnDisabled(getPrm.data) : false\"\r\n\t\t\t\t\t\t[styleClass]=\"\r\n\t\t\t\t\t\t\t(action.auth || 0) > (authLevel() || 0) || !!action.btnHidden?.(getPrm.data) ? 'form-action hidden' : 'form-action block'\r\n\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t(onClick)=\"action.onClick != '' && action.onClick?.(getPrm.data)\">\r\n\t\t\t\t\t</p-button>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t\t<div class=\"md:basis-2/3 basis-full flex md:flex-row-reverse flex-row md:order-2 order-first w-full\">\r\n\t\t\t\t<custom-steps\r\n\t\t\t\t\t#customSteps\r\n\t\t\t\t\tclass=\"w-full\"\r\n\t\t\t\t\t[steps]=\"statusSteps()\"\r\n\t\t\t\t\t[modelLog]=\"modelLog()\"\r\n\t\t\t\t\t[current]=\"getPrm.data && getPrm.data[statusKey()] !== undefined ? getPrm.data[statusKey()] : 0\"\r\n\t\t\t\t\t[authLevel]=\"authLevel()\"\r\n\t\t\t\t\t(change)=\"statusChange($event, customSteps)\">\r\n\t\t\t\t</custom-steps>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t@if (modelLog()) {\r\n\t\t\t<div class=\"md:w-[400px]\"></div>\r\n\t\t}\r\n\t</div>\r\n\t<div class=\"main flex flex-wrap md:overflow-y-hidden\">\r\n\t\t<div class=\"w-full md:flex-1 md:h-full overflow-y-auto\">\r\n\t\t\t<div class=\"bg-white mx-2 form-panel\">\r\n\t\t\t\t<div class=\"p-2 flex-1\">\r\n\t\t\t\t\t<form [formGroup]=\"form().form!\">\r\n\t\t\t\t\t\t<custom-form\r\n\t\t\t\t\t\t\t#cForm\r\n\t\t\t\t\t\t\t[options]=\"formOptions\"\r\n\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\r\n\t\t\t\t\t\t\t[model]=\"getPrm.data ?? {}\"></custom-form>\r\n\t\t\t\t\t</form>\r\n\t\t\t\t</div>\r\n\t\t\t\t@if (gridList() && gridList().length > 0) {\r\n\t\t\t\t\t<div class=\"relative mb-2\">\r\n\t\t\t\t\t\t<p-tabs [(value)]=\"indexValue\">\r\n\t\t\t\t\t\t\t<p-tablist>\r\n\t\t\t\t\t\t\t\t@for (fchild of gridList(); let i = $index; track fchild) {\r\n\t\t\t\t\t\t\t\t\t<p-tab\r\n\t\t\t\t\t\t\t\t\t\t[value]=\"i\"\r\n\t\t\t\t\t\t\t\t\t\t(click)=\"tabClick()\">\r\n\t\t\t\t\t\t\t\t\t\t{{ fchild.i18nKey ? i18n.fanyi(fchild.i18nKey) : fchild.title }}\r\n\t\t\t\t\t\t\t\t\t</p-tab>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</p-tablist>\r\n\t\t\t\t\t\t</p-tabs>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t\t@for (grid of gridList(); let i = $index; track grid) {\r\n\t\t\t\t\t@if (grid.type == 'grid') {\r\n\t\t\t\t\t\t<custom-grid\r\n\t\t\t\t\t\t\t#customGrid\r\n\t\t\t\t\t\t\t[hidden]=\"indexValue != i\"\r\n\t\t\t\t\t\t\t[rowData]=\"getPrm.data?.[grid.subDataKey!] || []\"\r\n\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\r\n\t\t\t\t\t\t\t(deleteEmit)=\"delRows($event)\"\r\n\t\t\t\t\t\t\t[addType]=\"grid.subTableSource\"\r\n\t\t\t\t\t\t\t(addEmit)=\"dataSourceShow()\"\r\n\t\t\t\t\t\t\t[gridOptions]=\"grid.gridOptions\"\r\n\t\t\t\t\t\t\t[authLevel]=\"authLevel()\"\r\n\t\t\t\t\t\t\t[showDelete]=\"grid.showDelete\"\r\n\t\t\t\t\t\t\t[selectData]=\"grid.selectData\">\r\n\t\t\t\t\t\t</custom-grid>\r\n\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t<!-- @if(indexValue == i){\r\n\t\t\t\t\t\t\t<form [formGroup]=\"grid.form!\">\r\n\t\t\t\t\t\t\t\t<custom-form\r\n\t\t\t\t\t\t\t\t[options]=\"grid\"\r\n\t\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t</custom-form>\r\n\t\t\t\t\t\t\t</form>\r\n\t\t\t\t\t\t} -->\r\n\t\t\t\t\t\t<custom-form\r\n\t\t\t\t\t\t\t#tabForm\r\n\t\t\t\t\t\t\t[hidden]=\"indexValue != i\"\r\n\t\t\t\t\t\t\t[options]=\"grid\"\r\n\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\r\n\t\t\t\t\t\t\t[model]=\"subFormModel[grid.subDataKey!] || {}\">\r\n\t\t\t\t\t\t</custom-form>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t@if (modelLog()) {\r\n\t\t\t<div class=\"w-full md:w-[400px] md:h-full overflow-y-auto\">\r\n\t\t\t\t<custom-log [logs]=\"getPrm.data?.log ?? []\"></custom-log>\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n</div>\r\n<row-selector\r\n\t[(visible)]=\"visible\"\r\n\t[searchPrm]=\"dialogSearchPrm\"\r\n\t[gridOptions]=\"selectOptions\"\r\n\t(onOk)=\"onOk($event)\">\r\n</row-selector>\r\n", styles: ["@charset \"UTF-8\";.main{height:calc(100vh - 128px)}:host ::ng-deep .main .ag-root-wrapper{border-left:none!important;border-right:none!important;border-bottom:none!important}:host ::ng-deep .form-action{background:#e7e9ed!important;color:var(--ag-text-color)!important;border-color:#e7e9ed!important}:host ::ng-deep .form-action:not(:disabled):hover{background-color:#d8dadd!important;border-color:#d8dadd}.form-panel{border:solid 1px #dbdbdb}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormComponent, selector: "custom-form", inputs: ["options", "model", "upsert"] }, { kind: "component", type: LogComponent, selector: "custom-log", inputs: ["logs", "id"] }, { kind: "component", type: CrumbActionComponent, selector: "app-crumb-action", inputs: ["isShowCog", "addVisible", "newUrl", "onExport", "outlined", "isList", "authLevel", "actionList", "data", "menus"], outputs: ["saveEvent", "cancelEvent", "actionEvent"] }, { kind: "component", type: StepsComponent, selector: "custom-steps", inputs: ["modelLog", "needSelfAdjusting", "steps", "current", "authLevel"], outputs: ["change"] }, { kind: "component", type: GridComponent, selector: "custom-grid", inputs: ["gridOptions", "upsert", "rowData", "searchPrm", "addType", "selectData", "showAct", "actPos", "authLevel", "showDelete"], outputs: ["deleteEmit", "addEmit"] }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: i3.Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: i3.TabList, selector: "p-tablist" }, { kind: "component", type: i3.Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: RowSelectorComponent, selector: "row-selector", inputs: ["title", "gridOptions", "searchPrm", "visible"], outputs: ["onOk", "visibleChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: HrefBtnListComponent, selector: "href-btn-list", inputs: ["hrefs"], outputs: ["hrefClick"] }] }); }
|
|
300
300
|
}
|
|
301
301
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageFormComponent, decorators: [{
|
|
302
302
|
type: Component,
|
|
@@ -312,7 +312,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
312
312
|
RowSelectorComponent,
|
|
313
313
|
TranslatePipe,
|
|
314
314
|
HrefBtnListComponent,
|
|
315
|
-
], providers: [], template: "<div class=\"md:overflow-hidden\">\r\n\t<div class=\"flex md:flex-wrap lg:flex-nowrap items-center md:justify-between py-1 px-1 border-b-[1px] border-[#dbdbdb] bg-white\">\r\n\t\t<div class=\"md:basis-1/3 order-1\">\r\n\t\t\t<app-crumb-action\r\n\t\t\t\t[addVisible]=\"addVisible()\"\r\n\t\t\t\t[newUrl]=\"newUrl\"\r\n\t\t\t\t[isShowCog]=\"true\"\r\n\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t[authLevel]=\"authLevel()\"\r\n\t\t\t\t[actionList]=\"actionList()\"\r\n\t\t\t\t[data]=\"getPrm.data ?? {}\"\r\n\t\t\t\t(actionEvent)=\"authClick($event)\"\r\n\t\t\t\t(saveEvent)=\"submitForm()\">\r\n\t\t\t</app-crumb-action>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"basis-1/5 lg:basis-2/3 order-2 lg:order-2 md:order-last md:basis-full md:mt-[6px]\">\r\n\t\t\t<href-btn-list\r\n\t\t\t\t[hrefs]=\"hrefBtnList()\"\r\n\t\t\t\t(hrefClick)=\"goRun($event)\"></href-btn-list>\r\n\t\t\t<!-- @if (id) {\r\n\t\t\t\t@for (btn of hrefBtnList(); track btn) {\r\n\t\t\t\t\t<p-button\r\n\t\t\t\t\t\t[variant]=\"btn?.variant\"\r\n\t\t\t\t\t\t[severity]=\"btn?.severity\"\r\n\t\t\t\t\t\tclass=\"mr-[6px]\"\r\n\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t[icon]=\"btn?.icon\"\r\n\t\t\t\t\t\tlabel=\"{{ btn.i18nKey ? i18n.fanyi(btn.i18nKey) : btn.label }}\"\r\n\t\t\t\t\t\t(click)=\"goRun(btn)\">\r\n\t\t\t\t\t</p-button>\r\n\t\t\t\t}\r\n\t\t\t} -->\r\n\t\t</div>\r\n\t\t<div class=\"basis-1/3 order-3\"></div>\r\n\t</div>\r\n\t<div class=\"flex\">\r\n\t\t<div class=\"px-2 flex flex-wrap items-center
|
|
315
|
+
], providers: [], template: "<div class=\"md:overflow-hidden\">\r\n\t<div class=\"flex md:flex-wrap lg:flex-nowrap items-center md:justify-between py-1 px-1 border-b-[1px] border-[#dbdbdb] bg-white\">\r\n\t\t<div class=\"md:basis-1/3 order-1\">\r\n\t\t\t<app-crumb-action\r\n\t\t\t\t[addVisible]=\"addVisible()\"\r\n\t\t\t\t[newUrl]=\"newUrl\"\r\n\t\t\t\t[isShowCog]=\"true\"\r\n\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t[authLevel]=\"authLevel()\"\r\n\t\t\t\t[actionList]=\"actionList()\"\r\n\t\t\t\t[data]=\"getPrm.data ?? {}\"\r\n\t\t\t\t(actionEvent)=\"authClick($event)\"\r\n\t\t\t\t(saveEvent)=\"submitForm()\">\r\n\t\t\t</app-crumb-action>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"basis-1/5 lg:basis-2/3 order-2 lg:order-2 md:order-last md:basis-full md:mt-[6px]\">\r\n\t\t\t<href-btn-list\r\n\t\t\t\t[hrefs]=\"hrefBtnList()\"\r\n\t\t\t\t(hrefClick)=\"goRun($event)\"></href-btn-list>\r\n\t\t\t<!-- @if (id) {\r\n\t\t\t\t@for (btn of hrefBtnList(); track btn) {\r\n\t\t\t\t\t<p-button\r\n\t\t\t\t\t\t[variant]=\"btn?.variant\"\r\n\t\t\t\t\t\t[severity]=\"btn?.severity\"\r\n\t\t\t\t\t\tclass=\"mr-[6px]\"\r\n\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t[icon]=\"btn?.icon\"\r\n\t\t\t\t\t\tlabel=\"{{ btn.i18nKey ? i18n.fanyi(btn.i18nKey) : btn.label }}\"\r\n\t\t\t\t\t\t(click)=\"goRun(btn)\">\r\n\t\t\t\t\t</p-button>\r\n\t\t\t\t}\r\n\t\t\t} -->\r\n\t\t</div>\r\n\t\t<div class=\"basis-1/3 order-3\"></div>\r\n\t</div>\r\n\t<div class=\"flex\">\r\n\t\t<div class=\"px-2 flex flex-wrap items-center flex-1\">\r\n\t\t\t<div class=\"hidden md:basis-1/3 py-1 basis-full md:flex items-center gap-2 flex-row order-1\">\r\n\t\t\t\t@for (action of actionList(); let i = $index; track action) {\r\n\t\t\t\t\t<p-button\r\n\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t[icon]=\"getPrm.data?.icon\"\r\n\t\t\t\t\t\t[label]=\"action.i18nKey ? (action.i18nKey | translate) : action.label\"\r\n\t\t\t\t\t\t[disabled]=\"action.btnDisabled ? action.btnDisabled(getPrm.data) : false\"\r\n\t\t\t\t\t\t[styleClass]=\"\r\n\t\t\t\t\t\t\t(action.auth || 0) > (authLevel() || 0) || !!action.btnHidden?.(getPrm.data) ? 'form-action hidden' : 'form-action block'\r\n\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t(onClick)=\"action.onClick != '' && action.onClick?.(getPrm.data)\">\r\n\t\t\t\t\t</p-button>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t\t<div class=\"md:basis-2/3 basis-full flex md:flex-row-reverse flex-row md:order-2 order-first w-full\">\r\n\t\t\t\t<custom-steps\r\n\t\t\t\t\t#customSteps\r\n\t\t\t\t\tclass=\"w-full\"\r\n\t\t\t\t\t[steps]=\"statusSteps()\"\r\n\t\t\t\t\t[modelLog]=\"modelLog()\"\r\n\t\t\t\t\t[current]=\"getPrm.data && getPrm.data[statusKey()] !== undefined ? getPrm.data[statusKey()] : 0\"\r\n\t\t\t\t\t[authLevel]=\"authLevel()\"\r\n\t\t\t\t\t(change)=\"statusChange($event, customSteps)\">\r\n\t\t\t\t</custom-steps>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t@if (modelLog()) {\r\n\t\t\t<div class=\"md:w-[400px]\"></div>\r\n\t\t}\r\n\t</div>\r\n\t<div class=\"main flex flex-wrap md:overflow-y-hidden\">\r\n\t\t<div class=\"w-full md:flex-1 md:h-full overflow-y-auto\">\r\n\t\t\t<div class=\"bg-white mx-2 form-panel\">\r\n\t\t\t\t<div class=\"p-2 flex-1\">\r\n\t\t\t\t\t<form [formGroup]=\"form().form!\">\r\n\t\t\t\t\t\t<custom-form\r\n\t\t\t\t\t\t\t#cForm\r\n\t\t\t\t\t\t\t[options]=\"formOptions\"\r\n\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\r\n\t\t\t\t\t\t\t[model]=\"getPrm.data ?? {}\"></custom-form>\r\n\t\t\t\t\t</form>\r\n\t\t\t\t</div>\r\n\t\t\t\t@if (gridList() && gridList().length > 0) {\r\n\t\t\t\t\t<div class=\"relative mb-2\">\r\n\t\t\t\t\t\t<p-tabs [(value)]=\"indexValue\">\r\n\t\t\t\t\t\t\t<p-tablist>\r\n\t\t\t\t\t\t\t\t@for (fchild of gridList(); let i = $index; track fchild) {\r\n\t\t\t\t\t\t\t\t\t<p-tab\r\n\t\t\t\t\t\t\t\t\t\t[value]=\"i\"\r\n\t\t\t\t\t\t\t\t\t\t(click)=\"tabClick()\">\r\n\t\t\t\t\t\t\t\t\t\t{{ fchild.i18nKey ? i18n.fanyi(fchild.i18nKey) : fchild.title }}\r\n\t\t\t\t\t\t\t\t\t</p-tab>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</p-tablist>\r\n\t\t\t\t\t\t</p-tabs>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t\t@for (grid of gridList(); let i = $index; track grid) {\r\n\t\t\t\t\t@if (grid.type == 'grid') {\r\n\t\t\t\t\t\t<custom-grid\r\n\t\t\t\t\t\t\t#customGrid\r\n\t\t\t\t\t\t\t[hidden]=\"indexValue != i\"\r\n\t\t\t\t\t\t\t[rowData]=\"getPrm.data?.[grid.subDataKey!] || []\"\r\n\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\r\n\t\t\t\t\t\t\t(deleteEmit)=\"delRows($event)\"\r\n\t\t\t\t\t\t\t[addType]=\"grid.subTableSource\"\r\n\t\t\t\t\t\t\t(addEmit)=\"dataSourceShow()\"\r\n\t\t\t\t\t\t\t[gridOptions]=\"grid.gridOptions\"\r\n\t\t\t\t\t\t\t[authLevel]=\"authLevel()\"\r\n\t\t\t\t\t\t\t[showDelete]=\"grid.showDelete\"\r\n\t\t\t\t\t\t\t[selectData]=\"grid.selectData\">\r\n\t\t\t\t\t\t</custom-grid>\r\n\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t<!-- @if(indexValue == i){\r\n\t\t\t\t\t\t\t<form [formGroup]=\"grid.form!\">\r\n\t\t\t\t\t\t\t\t<custom-form\r\n\t\t\t\t\t\t\t\t[options]=\"grid\"\r\n\t\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t</custom-form>\r\n\t\t\t\t\t\t\t</form>\r\n\t\t\t\t\t\t} -->\r\n\t\t\t\t\t\t<custom-form\r\n\t\t\t\t\t\t\t#tabForm\r\n\t\t\t\t\t\t\t[hidden]=\"indexValue != i\"\r\n\t\t\t\t\t\t\t[options]=\"grid\"\r\n\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\r\n\t\t\t\t\t\t\t[model]=\"subFormModel[grid.subDataKey!] || {}\">\r\n\t\t\t\t\t\t</custom-form>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t@if (modelLog()) {\r\n\t\t\t<div class=\"w-full md:w-[400px] md:h-full overflow-y-auto\">\r\n\t\t\t\t<custom-log [logs]=\"getPrm.data?.log ?? []\"></custom-log>\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n</div>\r\n<row-selector\r\n\t[(visible)]=\"visible\"\r\n\t[searchPrm]=\"dialogSearchPrm\"\r\n\t[gridOptions]=\"selectOptions\"\r\n\t(onOk)=\"onOk($event)\">\r\n</row-selector>\r\n", styles: ["@charset \"UTF-8\";.main{height:calc(100vh - 128px)}:host ::ng-deep .main .ag-root-wrapper{border-left:none!important;border-right:none!important;border-bottom:none!important}:host ::ng-deep .form-action{background:#e7e9ed!important;color:var(--ag-text-color)!important;border-color:#e7e9ed!important}:host ::ng-deep .form-action:not(:disabled):hover{background-color:#d8dadd!important;border-color:#d8dadd}.form-panel{border:solid 1px #dbdbdb}\n"] }]
|
|
316
316
|
}], ctorParameters: () => [], propDecorators: { cForm: [{
|
|
317
317
|
type: ViewChild,
|
|
318
318
|
args: ['cForm']
|
|
@@ -323,4 +323,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
323
323
|
type: ViewChildren,
|
|
324
324
|
args: ['tabForm']
|
|
325
325
|
}] } });
|
|
326
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvcGFnZS1mb3JtL3BhZ2UtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3BhZ2UtZm9ybS9wYWdlLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQTJCLFlBQVksRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0SSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFlLE1BQU0sNkJBQTZCLENBQUM7QUFDekUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsY0FBYyxFQUFRLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBZSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLFdBQVcsRUFBTyxNQUFNLG9CQUFvQixDQUFDO0FBR3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFF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QUNaLG1CQUFtQixxYkFDbkIsYUFBYSxnR0FDYixZQUFZLCtFQUNaLG9CQUFvQixnUEFDcEIsY0FBYyw4SUFDZCxhQUFhLCtOQUNiLFVBQVUsNFhBQ1Ysb0JBQW9CLGtKQUNwQixhQUFhLGtEQUNiLG9CQUFvQjs7NEZBTVQsaUJBQWlCO2tCQXBCN0IsU0FBUzsrQkFDQyxlQUFlLGNBQ2IsSUFBSSxXQUNQO3dCQUNSLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsVUFBVTt3QkFDVixvQkFBb0I7d0JBQ3BCLGFBQWE7d0JBQ2Isb0JBQW9CO3FCQUNwQixhQUdVLEVBQUU7d0RBR08sS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUNVLFVBQVU7c0JBQXJDLFlBQVk7dUJBQUMsWUFBWTtnQkFDRCxPQUFPO3NCQUEvQixZQUFZO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVc2VySGlzdG9yeVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL3VzZXJIaXN0b3J5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgT25Jbml0LCBWaWV3Q2hpbGQsIGlucHV0LCBlZmZlY3QsIGNvbXB1dGVkLCBJbnB1dCwgc2lnbmFsLCBWaWV3Q2hpbGRyZW4sIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGb3JtQ29tcG9uZW50LCBGb3JtT3B0aW9ucyB9IGZyb20gJy4uL2Zvcm0vZm9ybS9mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJvd1NlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vcm93LXNlbGVjdG9yL3Jvdy1zZWxlY3Rvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMb2dDb21wb25lbnQgfSBmcm9tICcuLi9sb2cvbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuaW1wb3J0IHsgQ3J1bWJBY3Rpb25Db21wb25lbnQgfSBmcm9tICcuLi9jcnVtYi1hY3Rpb24vY3J1bWItYWN0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFN0ZXBzQ29tcG9uZW50LCBTdGVwIH0gZnJvbSAnLi4vc3RlcHMvc3RlcHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgR3JpZENvbXBvbmVudCwgR3JpZE9wdGlvbnMgfSBmcm9tICcuLi9ncmlkL2dyaWQvZ3JpZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJzTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWJzJztcclxuaW1wb3J0IHsgQW1Db21wb25lbnQsIEdldCB9IGZyb20gJy4uL2FtL2FtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNlYXJjaCB9IGZyb20gJy4uL2FtL2FtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEhyZWZCdG5MaXN0LCBHcmlkTGlzdCB9IGZyb20gJy4vcGFnZS1mb3JtLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2kxOG4uc2VydmljZSc7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25CdG4gfSBmcm9tICcuL3BhZ2UtZm9ybS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBmb3JtVHlwZVRvUHJvcHMgfSBmcm9tICcuL3BhZ2UtZm9ybS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBIcmVmQnRuTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2hyZWYtYnRuLWxpc3QvaHJlZi1idG4tbGlzdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9hY3Rpb24uc2VydmljZSc7XHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXBwLXBhZ2UtZm9ybScsXHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRpbXBvcnRzOiBbXHJcblx0XHRCdXR0b25Nb2R1bGUsXHJcblx0XHRSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG5cdFx0Rm9ybUNvbXBvbmVudCxcclxuXHRcdExvZ0NvbXBvbmVudCxcclxuXHRcdENydW1iQWN0aW9uQ29tcG9uZW50LFxyXG5cdFx0U3RlcHNDb21wb25lbnQsXHJcblx0XHRHcmlkQ29tcG9uZW50LFxyXG5cdFx0VGFic01vZHVsZSxcclxuXHRcdFJvd1NlbGVjdG9yQ29tcG9uZW50LFxyXG5cdFx0VHJhbnNsYXRlUGlwZSxcclxuXHRcdEhyZWZCdG5MaXN0Q29tcG9uZW50LFxyXG5cdF0sXHJcblx0dGVtcGxhdGVVcmw6ICcuL3BhZ2UtZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmw6ICcuL3BhZ2UtZm9ybS5jb21wb25lbnQuc2NzcycsXHJcblx0cHJvdmlkZXJzOiBbXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBhZ2VGb3JtQ29tcG9uZW50IGV4dGVuZHMgQW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cdEBWaWV3Q2hpbGQoJ2NGb3JtJykgY0Zvcm0hOiBGb3JtQ29tcG9uZW50O1xyXG5cdEBWaWV3Q2hpbGRyZW4oJ2N1c3RvbUdyaWQnKSBjdXN0b21HcmlkITogUXVlcnlMaXN0PEdyaWRDb21wb25lbnQ+O1xyXG5cdEBWaWV3Q2hpbGRyZW4oJ3RhYkZvcm0nKSB0YWJGb3JtITogUXVlcnlMaXN0PEZvcm1Db21wb25lbnQ+O1xyXG5cdGFkZFZpc2libGUgPSBpbnB1dDxib29sZWFuPigpO1xyXG5cdGdyaWRMaXN0ID0gaW5wdXQ8YW55W10+KFtdKTtcclxuXHRmb3JtID0gaW5wdXQucmVxdWlyZWQ8Rm9ybU9wdGlvbnM+KHt9KTtcclxuXHRnZXRQcm1JbnB1dCA9IGlucHV0LnJlcXVpcmVkPEdldD4oe30pO1xyXG5cdHN0YXR1c1N0ZXBzID0gaW5wdXQ8U3RlcFtdPihbXSk7XHJcblx0c3RhdHVzS2V5ID0gaW5wdXQoJ3N0YXR1cycpO1xyXG5cdGhyZWZCdG5MaXN0ID0gaW5wdXQ8SHJlZkJ0bkxpc3RbXT4oW10pO1xyXG5cdHNldFRpdGxlID0gaW5wdXQ8c3RyaW5nPigpO1xyXG5cdGFjdGlvbkxpc3QgPSBpbnB1dDxQZXJtaXNzaW9uQnRuW10+KFtdKTtcclxuXHRtb2RlbExvZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRmb3JtRGlzYWJsZWQgPSBpbnB1dDxGdW5jdGlvbj4oKTtcclxuXHRzdGF0dXNDb25mID0gaW5wdXQ8YW55PigpXHJcblx0Zm9ybURldGFpbCA9IGlucHV0PGFueT4oKVxyXG5cdHNhdmVGdW5jID0gaW5wdXQ8YW55PigpXHJcblxyXG5cdHVzZXJIaXN0b3J5U2VydmljZSA9IGluamVjdChVc2VySGlzdG9yeVNlcnZpY2UpO1xyXG5cdGluZGV4VmFsdWUgPSAwO1xyXG5cdHZpc2libGUgPSBmYWxzZTtcclxuXHRkaWFsb2dTZWFyY2hQcm0hOiBTZWFyY2g7XHJcblx0c2VsZWN0T3B0aW9ucyE6IEdyaWRPcHRpb25zO1xyXG5cdHNlbGVjdERhdGE6IGFueVtdID0gW107XHJcblx0cGFnZVVybCA9ICcnO1xyXG5cdG5ld1VybCA9ICcnO1xyXG5cdGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xyXG5cdGF1dGhMZXZlbCA9IGlucHV0PG51bWJlcj4oLTEpO1xyXG5cdGhyZWZzOiBhbnlbXSA9IFtdO1xyXG5cdGFjdGlvbiA9IGluamVjdChBY3Rpb25TZXJ2aWNlKTtcclxuXHRzdWJGb3JtTW9kZWw6YW55ID0ge30gXHJcblx0Y29uc3RydWN0b3IoKSB7XHJcblx0XHRzdXBlcigpO1xyXG5cdFx0dGhpcy5pZCA9IE51bWJlcih0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnaWQnKSk7XHJcblx0XHR0aGlzLnBhZ2VVcmwgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnVybFxyXG5cdFx0XHQubWFwKChzZWdtZW50KSA9PiBzZWdtZW50LnBhdGgpXHJcblx0XHRcdC5qb2luKCcvJylcclxuXHRcdFx0LnJlcGxhY2UoLyhbXlxcL10qKSQvLCAnJyk7XHJcblx0XHR0aGlzLm5ld1VybCA9IGAke3RoaXMucGFnZVVybH1uZXdgO1xyXG5cdFx0ZWZmZWN0KFxyXG5cdFx0XHQoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5tb2RlbE5hbWUgPSB0aGlzLmdldFBybUlucHV0KCkubW9kZWxOYW1lITtcclxuXHRcdFx0XHR0aGlzLmdldFBybSA9IHsgLi4udGhpcy5nZXRQcm1JbnB1dCgpIH07XHJcblx0XHRcdFx0dGhpcy5pZCAmJiAodGhpcy5nZXRQcm0uaWQgPSB0aGlzLmlkKTtcclxuXHRcdFx0XHRpZih0aGlzLmlkKXtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHR5cGVvZiB0aGlzLmZvcm1EZXRhaWwoKSwnZm9ybS0tLS0nKVxyXG5cdFx0XHRcdFx0dHlwZW9mIHRoaXMuZm9ybURldGFpbCgpID09ICdmdW5jdGlvbicgPyB0aGlzLmZvcm1EZXRhaWwoKSh0aGlzLmlkKSA6IHRoaXMuZ2V0RGV0YWlsKCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXHJcblx0XHQpO1xyXG5cclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdHRoaXMuZm9ybU9wdGlvbnMgPSB7IC4uLnRoaXMuZm9ybSgpIH07XHJcblx0XHR9KTtcclxuXHRcdGVmZmVjdChcclxuXHRcdFx0KCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuaXNMb2cgPSB0aGlzLm1vZGVsTG9nKCk7XHJcblx0XHRcdH0sXHJcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcclxuXHRcdCk7XHJcblx0XHRlZmZlY3QoXHJcblx0XHRcdCgpID0+IHtcclxuXHRcdFx0XHRpZiAodGhpcy5zdGF0dXNTdGVwcygpLmxlbmd0aCA+IDAgJiYgIXRoaXMuaWQpIHtcclxuXHRcdFx0XHRcdHRoaXMudXBzZXJ0UHJtLmFkZERhdGEhW3RoaXMuc3RhdHVzS2V5KCldID0gdGhpcy5zdGF0dXNTdGVwcygpWzBdWyd2YWx1ZSddO1xyXG5cdFx0XHRcdFx0dGhpcy5nZXRQcm0uZGF0YSA9IE9iamVjdC5hc3NpZ24odGhpcy5nZXRQcm0uZGF0YSB8fCB7fSwge1xyXG5cdFx0XHRcdFx0XHRbdGhpcy5zdGF0dXNLZXkoKV06IHRoaXMuc3RhdHVzU3RlcHMoKVswXVsndmFsdWUnXSxcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxyXG5cdFx0KTtcclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdGlmKHRoaXMuYXV0aExldmVsKCkgPCAzKXtcclxuXHRcdFx0XHR0aGlzLnNldERpc2FibGVkKClcclxuXHRcdFx0fVxyXG5cdFx0fSx7YWxsb3dTaWduYWxXcml0ZXM6dHJ1ZX0pXHJcblx0fVxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy51cENiID0gdGhpcy51cENiLmJpbmQodGhpcyk7XHJcblx0fVxyXG5cclxuXHRzdWJtaXRGb3JtKCk6IGFueSB7XHJcblx0XHQvLyB0aGlzLnRhYkZvcm0udmFsaWRhdGUoKVxyXG5cdFx0bGV0IHN1YkZvcm0gPSB0cnVlXHJcblx0XHRpZih0aGlzLnRhYkZvcm0ubGVuZ3RoID4gMCl7XHJcblx0XHRcdHRoaXMudGFiRm9ybS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG5cdFx0XHRcdGlmKCFpdGVtLnZhbGlkYXRlKCkpe1xyXG5cdFx0XHRcdFx0c3ViRm9ybSA9IGZhbHNlXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KVxyXG5cdFx0fVxyXG5cdFx0aWYgKHRoaXMuY0Zvcm0udmFsaWRhdGUoKSAmJiBzdWJGb3JtKSB7XHJcblx0XHRcdGxldCBjYjogYW55ID0gdGhpcy5pZCA9PT0gMCA/IG51bGwgOiB0aGlzLnVwQ2I7XHJcblx0XHRcdHR5cGVvZiB0aGlzLnNhdmVGdW5jKCkgPT0gJ2Z1bmN0aW9uJyA/IHRoaXMuc2F2ZUZ1bmMoKSh0aGlzLnVwc2VydFBybSx0aGlzLmlkLGNiKSA6IHRoaXMudXBzZXJ0KG51bGwsIGNiKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGRlbFJvd3MoZTogYW55KSB7XHJcblx0XHRjb25zdCBncmlkVGFiID0gdGhpcy5ncmlkTGlzdCgpW3RoaXMuaW5kZXhWYWx1ZV07XHJcblx0XHRjb25zdCBkZWxldGVGdW5jID0gZ3JpZFRhYi5kZWxldGVGdW5jO1xyXG5cdFx0Y29uc3Qgc3ViVGFibGUgPSBncmlkVGFiLmdyaWRPcHRpb25zLm1vZGVsTmFtZTtcclxuXHJcblx0XHRsZXQgcHJtID0ge1xyXG5cdFx0XHRtb2RlbE5hbWU6IHN1YlRhYmxlLFxyXG5cdFx0XHRpZHM6IGUsXHJcblx0XHR9O1xyXG5cdFx0aWYgKCFkZWxldGVGdW5jKSB7XHJcblx0XHRcdHRoaXMud2ViX3JlbW92ZShwcm0pLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5nZXQoKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRkZWxldGVGdW5jKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuXHRcdFx0XHR0aGlzLmdldCgpO1xyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9XHJcblx0dXBDYihyZXM/OiBhbnkpIHtcclxuXHRcdGlmIChyZXMuaWQgPT0gMCkge1xyXG5cdFx0XHR0aGlzLmdldERldGFpbCgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdFx0bGV0IGVkaXRVcmwgPSBgJHt0aGlzLnBhZ2VVcmx9JHtyZXMuaWR9YDtcclxuXHRcdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbZWRpdFVybF0pO1xyXG5cdFx0XHR9LCAxNTAwKTtcclxuXHRcdH1cclxuXHRcdHRoaXMuYWN0aW9uLnNhdmVTaWduYWwuc2V0KGZhbHNlKTtcclxuXHRcdHRoaXMuY0Zvcm0uZmluYWxpemUoKTtcclxuXHR9XHJcblx0Ly8gVE9ETyDmmK/lkKbpnIDopoHmlbDmja7ovazmjaLlm57osIPlh73mlbBcclxuXHRvbk9rKGU6IGFueSkge1xyXG5cdFx0Y29uc3QgZ3JpZCA9IHRoaXMuZ3JpZExpc3QoKVt0aGlzLmluZGV4VmFsdWVdO1xyXG5cdFx0dGhpcy5ncmlkTGlzdCgpW3RoaXMuaW5kZXhWYWx1ZV0uc2VsZWN0RGF0YSA9IFtdO1xyXG5cdFx0aWYgKGUubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRsZXQgdW5pcXVlS2V5cyA9IFtdO1xyXG5cdFx0XHRpZiAoZ3JpZC51bmlxdWVGaWVsZCkge1xyXG5cdFx0XHRcdGNvbnN0IHJvd0RhdGEgPSB0aGlzLmN1c3RvbUdyaWQuZ2V0KHRoaXMuaW5kZXhWYWx1ZSkhXHJcblx0XHRcdFx0XHQuZ2V0R3JpZCgpXHJcblx0XHRcdFx0XHQuYXBpLmdldFJlbmRlcmVkTm9kZXMoKVxyXG5cdFx0XHRcdFx0Lm1hcCgobm9kZSkgPT4gbm9kZS5kYXRhKTtcclxuXHRcdFx0XHR1bmlxdWVLZXlzID0gcm93RGF0YS5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbVtncmlkLnVuaXF1ZUZpZWxkIV0pO1xyXG5cdFx0XHR9XHJcblx0XHRcdGUuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcblx0XHRcdFx0bGV0IG9iaiA9IGdyaWQuc2VsZWN0RGF0YUNiID8gZ3JpZC5zZWxlY3REYXRhQ2IoaXRlbSkgOiB7IC4uLml0ZW0gfTtcclxuXHRcdFx0XHRpZiAoZ3JpZC51bmlxdWVGaWVsZCAmJiB1bmlxdWVLZXlzLmluY2x1ZGVzKG9ialtncmlkLnVuaXF1ZUZpZWxkIV0gfHwgJycpKSB7XHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGdyaWQuc2VsZWN0RGF0YSEucHVzaChvYmopO1xyXG5cdFx0XHR9KTtcclxuXHRcdFx0dGhpcy5hY3Rpb24uc2F2ZVNpZ25hbC5zZXQodHJ1ZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cdGdldERldGFpbCgpIHtcclxuXHRcdHRoaXMud2ViX2dldCh0aGlzLmdldFBybSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuXHRcdFx0dGhpcy5kZXRhaWxDYihyZXMpXHJcblx0XHR9KTtcclxuXHR9XHJcblx0Ly8g6I635Y+W6K+m5oOF5Zue6LCDXHJcblx0ZGV0YWlsQ2IocmVzOmFueSl7XHJcblx0XHR0aGlzLnVwZGF0ZVRpdGxlKHJlcyk7XHJcblx0XHRpZih0eXBlb2YgdGhpcy5mb3JtRGlzYWJsZWQoKSA9PSAnZnVuY3Rpb24nKXtcclxuXHRcdFx0dGhpcy5mb3JtRGlzRnVuYygpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHRoaXMuaHJlZkJ0bkxpc3QoKS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdHRoaXMuc2V0SHJlZlZhbHVlKCk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmdyaWRMaXN0KCkuZm9yRWFjaCh2ID0+IHtcclxuXHRcdFx0aWYodi50eXBlID09ICdmb3JtJyl7XHJcblx0XHRcdFx0dGhpcy5zdWJGb3JtTW9kZWxbdi5zdWJEYXRhS2V5XSA9IHJlc1t2LnN1YkRhdGFLZXldWzBdXHJcblx0XHRcdH1cclxuXHRcdH0pXHJcblx0fVxyXG5cdHNldEhyZWZWYWx1ZSgpIHtcclxuXHRcdHRoaXMuaHJlZkJ0bkxpc3QoKS5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG5cdFx0XHRpZiAoaXRlbS5oYXNPd25Qcm9wZXJ0eSgnc2VhcmNoQ291bnQnKSAmJiB0eXBlb2YgaXRlbS5zZWFyY2hDb3VudCA9PSAnb2JqZWN0Jykge1xyXG5cdFx0XHRcdGl0ZW0uc2VhcmNoQ291bnQuY29sdW1uRmlsdGVycy5mb3JFYWNoKCh2OiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdGlmICh0eXBlb2Ygdi5maXRlciA9PT0gJ2Z1bmN0aW9uJykge1xyXG5cdFx0XHRcdFx0XHR2LmZpdGVyID0gdi5maXRlcih0aGlzLmdldFBybS5kYXRhKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR0aGlzLndlYl9zZWFyY2hDb3VudChpdGVtLnNlYXJjaENvdW50KS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0aXRlbS52YWx1ZSA9IHJlcy50b3RhbE51bSB8fCAwO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblx0dXBkYXRlVGl0bGUocmVzOiBhbnkpIHtcclxuXHRcdGxldCBtYWluRmllbGQgPSB0aGlzLmZvcm0oKS5tYWluRmllbGQ7XHJcblx0XHRsZXQgdGl0bGUgPSByZXNbbWFpbkZpZWxkIV07XHJcblx0XHR0aGlzLnVzZXJIaXN0b3J5U2VydmljZS5zZXRMYXN0VGl0bGUodGl0bGUpO1xyXG5cdH1cclxuXHRkYXRhU291cmNlU2hvdygpIHtcclxuXHRcdHRoaXMuZGlhbG9nU2VhcmNoUHJtID0geyAuLi50aGlzLmdyaWRMaXN0KClbdGhpcy5pbmRleFZhbHVlXVsnc2VhcmNoUHJtJ10hIH07XHJcblx0XHR0aGlzLnNlbGVjdE9wdGlvbnMgPSB0aGlzLmdyaWRMaXN0KClbdGhpcy5pbmRleFZhbHVlXVsnc2VsZWN0T3B0aW9ucyddITtcclxuXHRcdGNvbnNvbGUubG9nKCdzZWxldGMtLS0tLScsIHRoaXMuc2VsZWN0T3B0aW9ucyk7XHJcblx0XHR0aGlzLmRpYWxvZ1NlYXJjaFBybS5tb2RlbE5hbWUgPSB0aGlzLnNlbGVjdE9wdGlvbnMubW9kZWxOYW1lO1xyXG5cdFx0dGhpcy52aXNpYmxlID0gdHJ1ZTtcclxuXHR9XHJcblxyXG5cdGdvUnVuKGRhdGE6IGFueSkge1xyXG5cdFx0aWYgKHR5cGVvZiBkYXRhLnVybCA9PT0gJ2Z1bmN0aW9uJykge1xyXG5cdFx0XHRsZXQgdXJsID0gZGF0YS51cmwodGhpcy5nZXRQcm0uZGF0YSk7XHJcblx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmxdKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICd3YXJuJywgc3VtbWFyeTogJ1dhcm4nLCBkZXRhaWw6ICfor7fphY3nva7ot7Povazpk77mjqUnIH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0YXV0aENsaWNrKGJ0bjogYW55KSB7XHJcblx0XHRpZiAoYnRuLmhhc093blByb3BlcnR5KCdvbkNsaWNrJykpIHtcclxuXHRcdFx0YnRuLm9uQ2xpY2sodGhpcy5nZXRQcm0uZGF0YSk7XHJcblx0XHR9XHJcblx0fVxyXG5cdHN0YXR1c0NoYW5nZSh2YWx1ZTogYW55LCBjdXN0b21TdGVwczogU3RlcHNDb21wb25lbnQpIHtcclxuXHRcdGlmICh0aGlzLmF1dGhMZXZlbCgpIDwgNCB8fCAhdGhpcy5zdGF0dXNDb25mKCkuaXNDbGljaykgcmV0dXJuO1xyXG5cdFx0aWYgKHRoaXMuaWQpIHtcclxuXHRcdFx0bGV0IHBhcmFtOiBhbnkgPSB7XHJcblx0XHRcdFx0bW9kZWxOYW1lOiB0aGlzLm1vZGVsTmFtZSxcclxuXHRcdFx0XHRkYXRhOiB7IGlkOiB0aGlzLmlkLCBbdGhpcy5zdGF0dXNLZXkoKV06IHZhbHVlIH0sXHJcblx0XHRcdH07XHJcblx0XHRcdGlmICh0aGlzLmlzTG9nKSB7XHJcblx0XHRcdFx0cGFyYW0ubG9nTW9kZWwgPSBgJHt0aGlzLm1vZGVsTmFtZX1Mb2dgO1xyXG5cdFx0XHRcdHBhcmFtLmxvZyA9IHtcclxuXHRcdFx0XHRcdHBpZDogdGhpcy5pZCxcclxuXHRcdFx0XHRcdGNvbnRlbnQ6IGBb54q25oCBXSAke3RoaXMuZ2V0UHJtLmRhdGEhW3RoaXMuc3RhdHVzS2V5KCldfSAtPiAke3ZhbHVlfWAsXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLndlYl93cml0ZShwYXJhbSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuXHRcdFx0XHR0aGlzLmdldERldGFpbCgpO1xyXG5cdFx0XHR9KTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuZ2V0UHJtLmRhdGEgPSBPYmplY3QuYXNzaWduKHRoaXMuZ2V0UHJtLmRhdGEgfHwge30sIHtcclxuXHRcdFx0XHRbdGhpcy5zdGF0dXNLZXkoKV06IHZhbHVlLFxyXG5cdFx0XHR9KTtcclxuXHRcdFx0dGhpcy51cHNlcnRQcm0uYWRkRGF0YSFbdGhpcy5zdGF0dXNLZXkoKV0gPSB2YWx1ZTtcclxuXHRcdFx0dGhpcy5jRm9ybS50cmlnZ2VyTW9kZWxFZmZlY3QoeyBbdGhpcy5zdGF0dXNLZXkoKV06IHZhbHVlIH0pO1xyXG5cdFx0XHQvLyBjdXN0b21TdGVwcy5yZWZyZXNoU3RlcHMoKVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Zm9ybURpc0Z1bmMoKSB7XHJcblx0XHR0aGlzLmZvcm1PcHRpb25zLmZpZWxkcz8uZm9yRWFjaCgodikgPT4ge1xyXG5cdFx0XHR2Lmdyb3VwPy5mb3JFYWNoKChnOiBhbnkpID0+IHtcclxuXHRcdFx0XHRsZXQgZmllbGREaXNhYmxlZCA9IGdbZm9ybVR5cGVUb1Byb3BzW2cudHlwZV1dLmRpc2FibGVkIHx8IGZhbHNlO1xyXG5cdFx0XHRcdGlmICh0aGlzLmZvcm1EaXNhYmxlZCgpISh0aGlzLmdldFBybS5kYXRhKSkge1xyXG5cdFx0XHRcdFx0dGhpcy5jRm9ybS5nZXRGaWVsZChnLmtleSk/LmZpZWxkQ29udHJvbCEuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdCFmaWVsZERpc2FibGVkICYmIHRoaXMuY0Zvcm0uZ2V0RmllbGQoZy5rZXkpPy5maWVsZENvbnRyb2whLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdFx0dGhpcy5ncmlkTGlzdCgpLmZvckVhY2goKHYsaW5kZXg6YW55KSA9PiB7XHJcblx0XHRcdGlmKHYudHlwZSA9PSAnZ3JpZCcpe1xyXG5cdFx0XHRcdHYuZ3JpZE9wdGlvbnMuY29sdW1uRGVmcy5mb3JFYWNoKChpdGVtOmFueSkgPT4ge1xyXG5cdFx0XHRcdFx0aWYodGhpcy5mb3JtRGlzYWJsZWQoKSEodGhpcy5nZXRQcm0uZGF0YSkgJiYgaXRlbS5oYXNPd25Qcm9wZXJ0eSgnZWRpdGFibGUnKSl7XHJcblx0XHRcdFx0XHRcdGl0ZW0uZWRpdGFibGUgPSBmYWxzZVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdFx0dGhpcy5jdXN0b21HcmlkLmdldChpbmRleCkhLmdldEdyaWQoKS5hcGkuc2V0R3JpZE9wdGlvbihcclxuXHRcdFx0XHRcdCdjb2x1bW5EZWZzJywgXHJcblx0XHRcdFx0XHR2LmdyaWRPcHRpb25zLmNvbHVtbkRlZnNcclxuXHRcdFx0XHQpXHJcblx0XHRcdH0gZWxzZSBpZih2LnR5cGUgPT0gJ2Zvcm0nKXtcclxuXHRcdFx0XHR2LmZpZWxkcz8uZm9yRWFjaCgoaXRlbTphbnksKSA9PiB7XHJcblx0XHRcdFx0XHRpdGVtLmdyb3VwPy5mb3JFYWNoKChnOiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdFx0bGV0IGZpZWxkRGlzYWJsZWQgPSBnW2Zvcm1UeXBlVG9Qcm9wc1tnLnR5cGVdXS5kaXNhYmxlZCB8fCBmYWxzZTtcclxuXHRcdFx0XHRcdFx0aWYgKHRoaXMuZm9ybURpc2FibGVkKCkhKHRoaXMuZ2V0UHJtLmRhdGEpKSB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy50YWJGb3JtLmdldChpbmRleCkhLmdldEZpZWxkKGcua2V5KT8uZmllbGRDb250cm9sIS5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHQhZmllbGREaXNhYmxlZCAmJiB0aGlzLmNGb3JtLmdldEZpZWxkKGcua2V5KT8uZmllbGRDb250cm9sIS5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSlcclxuXHR9XHJcblx0c2V0RGlzYWJsZWQoKXtcclxuXHRcdHRoaXMuZ3JpZExpc3QoKS5mb3JFYWNoKCh2LGluZGV4OmFueSkgPT4ge1xyXG5cdFx0XHRpZih2LnR5cGUgPT0gJ2Zvcm0nKXtcclxuXHRcdFx0XHR2LmZpZWxkcz8uZm9yRWFjaCgoaXRlbTphbnksKSA9PiB7XHJcblx0XHRcdFx0XHRpdGVtLmdyb3VwPy5mb3JFYWNoKChnOiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdFx0dGhpcy50YWJGb3JtLmdldChpbmRleCkhLmdldEZpZWxkKGcua2V5KT8uZmllbGRDb250cm9sIS5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KVxyXG5cdH1cclxuXHR0YWJDbGljaygpe1xyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdHRoaXMudGFiRm9ybS5nZXQodGhpcy5pbmRleFZhbHVlKSAmJiB0aGlzLnRhYkZvcm0uZ2V0KHRoaXMuaW5kZXhWYWx1ZSkhLnJlQ2FsY0xhYmVsU2l6ZSgpXHJcblx0XHR9LDApXHJcblx0fVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtZDpvdmVyZmxvdy1oaWRkZW5cIj5cclxuXHQ8ZGl2IGNsYXNzPVwiZmxleCBtZDpmbGV4LXdyYXAgbGc6ZmxleC1ub3dyYXAgaXRlbXMtY2VudGVyIG1kOmp1c3RpZnktYmV0d2VlbiBweS0xIHB4LTEgYm9yZGVyLWItWzFweF0gYm9yZGVyLVsjZGJkYmRiXSBiZy13aGl0ZVwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cIm1kOmJhc2lzLTEvMyBvcmRlci0xXCI+XHJcblx0XHRcdDxhcHAtY3J1bWItYWN0aW9uXHJcblx0XHRcdFx0W2FkZFZpc2libGVdPVwiYWRkVmlzaWJsZSgpXCJcclxuXHRcdFx0XHRbbmV3VXJsXT1cIm5ld1VybFwiXHJcblx0XHRcdFx0W2lzU2hvd0NvZ109XCJ0cnVlXCJcclxuXHRcdFx0XHRbb3V0bGluZWRdPVwidHJ1ZVwiXHJcblx0XHRcdFx0W2F1dGhMZXZlbF09XCJhdXRoTGV2ZWwoKVwiXHJcblx0XHRcdFx0W2FjdGlvbkxpc3RdPVwiYWN0aW9uTGlzdCgpXCJcclxuXHRcdFx0XHRbZGF0YV09XCJnZXRQcm0uZGF0YSA/PyB7fVwiXHJcblx0XHRcdFx0KGFjdGlvbkV2ZW50KT1cImF1dGhDbGljaygkZXZlbnQpXCJcclxuXHRcdFx0XHQoc2F2ZUV2ZW50KT1cInN1Ym1pdEZvcm0oKVwiPlxyXG5cdFx0XHQ8L2FwcC1jcnVtYi1hY3Rpb24+XHJcblx0XHQ8L2Rpdj5cclxuXHJcblx0XHQ8ZGl2IGNsYXNzPVwiYmFzaXMtMS81IGxnOmJhc2lzLTIvMyBvcmRlci0yIGxnOm9yZGVyLTIgbWQ6b3JkZXItbGFzdCBtZDpiYXNpcy1mdWxsIG1kOm10LVs2cHhdXCI+XHJcblx0XHRcdDxocmVmLWJ0bi1saXN0XHJcblx0XHRcdFx0W2hyZWZzXT1cImhyZWZCdG5MaXN0KClcIlxyXG5cdFx0XHRcdChocmVmQ2xpY2spPVwiZ29SdW4oJGV2ZW50KVwiPjwvaHJlZi1idG4tbGlzdD5cclxuXHRcdFx0PCEtLSBAaWYgKGlkKSB7XHJcblx0XHRcdFx0QGZvciAoYnRuIG9mIGhyZWZCdG5MaXN0KCk7IHRyYWNrIGJ0bikge1xyXG5cdFx0XHRcdFx0PHAtYnV0dG9uXHJcblx0XHRcdFx0XHRcdFt2YXJpYW50XT1cImJ0bj8udmFyaWFudFwiXHJcblx0XHRcdFx0XHRcdFtzZXZlcml0eV09XCJidG4/LnNldmVyaXR5XCJcclxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJtci1bNnB4XVwiXHJcblx0XHRcdFx0XHRcdHNpemU9XCJzbWFsbFwiXHJcblx0XHRcdFx0XHRcdFtpY29uXT1cImJ0bj8uaWNvblwiXHJcblx0XHRcdFx0XHRcdGxhYmVsPVwie3sgYnRuLmkxOG5LZXkgPyBpMThuLmZhbnlpKGJ0bi5pMThuS2V5KSA6IGJ0bi5sYWJlbCB9fVwiXHJcblx0XHRcdFx0XHRcdChjbGljayk9XCJnb1J1bihidG4pXCI+XHJcblx0XHRcdFx0XHQ8L3AtYnV0dG9uPlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSAtLT5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PGRpdiBjbGFzcz1cImJhc2lzLTEvMyBvcmRlci0zXCI+PC9kaXY+XHJcblx0PC9kaXY+XHJcblx0PGRpdiBjbGFzcz1cImZsZXhcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJweC0yIGZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBiYXNpcy1mdWxsXCIgW2NsYXNzXT1cIm1vZGVsTG9nKCkgPyAnbWQ6YmFzaXMtMi8zJzonJ1wiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiaGlkZGVuIG1kOmJhc2lzLTEvMyBweS0xIGJhc2lzLWZ1bGwgbWQ6ZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgZmxleC1yb3cgb3JkZXItMVwiPlxyXG5cdFx0XHRcdEBmb3IgKGFjdGlvbiBvZiBhY3Rpb25MaXN0KCk7IGxldCBpID0gJGluZGV4OyB0cmFjayBhY3Rpb24pIHtcclxuXHRcdFx0XHRcdDxwLWJ1dHRvblxyXG5cdFx0XHRcdFx0XHRzaXplPVwic21hbGxcIlxyXG5cdFx0XHRcdFx0XHRbaWNvbl09XCJnZXRQcm0uZGF0YT8uaWNvblwiXHJcblx0XHRcdFx0XHRcdFtsYWJlbF09XCJhY3Rpb24uaTE4bktleSA/IChhY3Rpb24uaTE4bktleSB8IHRyYW5zbGF0ZSkgOiBhY3Rpb24ubGFiZWxcIlxyXG5cdFx0XHRcdFx0XHRbZGlzYWJsZWRdPVwiYWN0aW9uLmJ0bkRpc2FibGVkID8gYWN0aW9uLmJ0bkRpc2FibGVkKGdldFBybS5kYXRhKSA6IGZhbHNlXCJcclxuXHRcdFx0XHRcdFx0W3N0eWxlQ2xhc3NdPVwiXHJcblx0XHRcdFx0XHRcdFx0KGFjdGlvbi5hdXRoIHx8IDApID4gKGF1dGhMZXZlbCgpIHx8IDApIHx8ICEhYWN0aW9uLmJ0bkhpZGRlbj8uKGdldFBybS5kYXRhKSA/ICdmb3JtLWFjdGlvbiBoaWRkZW4nIDogJ2Zvcm0tYWN0aW9uIGJsb2NrJ1xyXG5cdFx0XHRcdFx0XHRcIlxyXG5cdFx0XHRcdFx0XHQob25DbGljayk9XCJhY3Rpb24ub25DbGljayAhPSAnJyAmJiBhY3Rpb24ub25DbGljaz8uKGdldFBybS5kYXRhKVwiPlxyXG5cdFx0XHRcdFx0PC9wLWJ1dHRvbj5cclxuXHRcdFx0XHR9XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwibWQ6YmFzaXMtMi8zIGJhc2lzLWZ1bGwgZmxleCBtZDpmbGV4LXJvdy1yZXZlcnNlIGZsZXgtcm93IG1kOm9yZGVyLTIgb3JkZXItZmlyc3Qgdy1mdWxsXCI+XHJcblx0XHRcdFx0PGN1c3RvbS1zdGVwc1xyXG5cdFx0XHRcdFx0I2N1c3RvbVN0ZXBzXHJcblx0XHRcdFx0XHRjbGFzcz1cInctZnVsbFwiXHJcblx0XHRcdFx0XHRbc3RlcHNdPVwic3RhdHVzU3RlcHMoKVwiXHJcblx0XHRcdFx0XHRbY3VycmVudF09XCJnZXRQcm0uZGF0YSAmJiBnZXRQcm0uZGF0YVtzdGF0dXNLZXkoKV0gIT09IHVuZGVmaW5lZCA/IGdldFBybS5kYXRhW3N0YXR1c0tleSgpXSA6IDBcIlxyXG5cdFx0XHRcdFx0W2F1dGhMZXZlbF09XCJhdXRoTGV2ZWwoKVwiXHJcblx0XHRcdFx0XHQoY2hhbmdlKT1cInN0YXR1c0NoYW5nZSgkZXZlbnQsIGN1c3RvbVN0ZXBzKVwiPlxyXG5cdFx0XHRcdDwvY3VzdG9tLXN0ZXBzPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG5cdDxkaXYgY2xhc3M9XCJtYWluIGZsZXggZmxleC13cmFwIG1kOm92ZXJmbG93LXktaGlkZGVuXCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiYmFzaXMtZnVsbCBoLWZ1bGwgb3ZlcmZsb3cteS1hdXRvXCIgW2NsYXNzXT1cIm1vZGVsTG9nKCkgPyAnbWQ6YmFzaXMtMi8zJzonJ1wiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiYmctd2hpdGUgbXgtMiBmb3JtLXBhbmVsXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cInAtMiBmbGV4LTFcIj5cclxuXHRcdFx0XHRcdDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybSgpLmZvcm0hXCI+XHJcblx0XHRcdFx0XHRcdDxjdXN0b20tZm9ybVxyXG5cdFx0XHRcdFx0XHRcdCNjRm9ybVxyXG5cdFx0XHRcdFx0XHRcdFtvcHRpb25zXT1cImZvcm1PcHRpb25zXCJcclxuXHRcdFx0XHRcdFx0XHRbdXBzZXJ0XT1cInVwc2VydFBybVwiXHJcblx0XHRcdFx0XHRcdFx0W21vZGVsXT1cImdldFBybS5kYXRhID8/IHt9XCI+PC9jdXN0b20tZm9ybT5cclxuXHRcdFx0XHRcdDwvZm9ybT5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRAaWYgKGdyaWRMaXN0KCkgJiYgZ3JpZExpc3QoKS5sZW5ndGggPjApIHtcclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBtYi0yXCI+XHJcblx0XHRcdFx0XHRcdDxwLXRhYnMgWyh2YWx1ZSldPVwiaW5kZXhWYWx1ZVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxwLXRhYmxpc3Q+XHJcblx0XHRcdFx0XHRcdFx0XHRAZm9yIChmY2hpbGQgb2YgZ3JpZExpc3QoKTsgbGV0IGkgPSAkaW5kZXg7IHRyYWNrIGZjaGlsZCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8cC10YWIgW3ZhbHVlXT1cImlcIiAoY2xpY2spPVwidGFiQ2xpY2soKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHt7IGZjaGlsZC5pMThuS2V5ID8gaTE4bi5mYW55aShmY2hpbGQuaTE4bktleSkgOiBmY2hpbGQudGl0bGUgfX1cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9wLXRhYj5cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHQ8L3AtdGFibGlzdD5cclxuXHRcdFx0XHRcdFx0PC9wLXRhYnM+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0QGZvciAoZ3JpZCBvZiBncmlkTGlzdCgpOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgZ3JpZCkge1xyXG5cdFx0XHRcdFx0QGlmKGdyaWQudHlwZSA9PSAnZ3JpZCcpe1xyXG5cdFx0XHRcdFx0XHQ8Y3VzdG9tLWdyaWRcclxuXHRcdFx0XHRcdFx0XHQjY3VzdG9tR3JpZFxyXG5cdFx0XHRcdFx0XHRcdFtoaWRkZW5dPVwiaW5kZXhWYWx1ZSAhPSBpXCJcclxuXHRcdFx0XHRcdFx0XHRbcm93RGF0YV09XCJnZXRQcm0uZGF0YT8uW2dyaWQuc3ViRGF0YUtleSFdIHx8IFtdXCJcclxuXHRcdFx0XHRcdFx0XHRbdXBzZXJ0XT1cInVwc2VydFBybVwiXHJcblx0XHRcdFx0XHRcdFx0KGRlbGV0ZUVtaXQpPVwiZGVsUm93cygkZXZlbnQpXCJcclxuXHRcdFx0XHRcdFx0XHRbYWRkVHlwZV09XCJncmlkLnN1YlRhYmxlU291cmNlXCJcclxuXHRcdFx0XHRcdFx0XHQoYWRkRW1pdCk9XCJkYXRhU291cmNlU2hvdygpXCJcclxuXHRcdFx0XHRcdFx0XHRbZ3JpZE9wdGlvbnNdPVwiZ3JpZC5ncmlkT3B0aW9uc1wiXHJcblx0XHRcdFx0XHRcdFx0W2F1dGhMZXZlbF09XCJhdXRoTGV2ZWwoKVwiXHJcblx0XHRcdFx0XHRcdFx0W3Nob3dEZWxldGVdPVwiZ3JpZC5zaG93RGVsZXRlXCJcclxuXHRcdFx0XHRcdFx0XHRbc2VsZWN0RGF0YV09XCJncmlkLnNlbGVjdERhdGFcIj5cclxuXHRcdFx0XHRcdFx0PC9jdXN0b20tZ3JpZD5cclxuXHRcdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0XHQ8IS0tIEBpZihpbmRleFZhbHVlID09IGkpe1xyXG5cdFx0XHRcdFx0XHRcdDxmb3JtIFtmb3JtR3JvdXBdPVwiZ3JpZC5mb3JtIVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGN1c3RvbS1mb3JtXHJcblx0XHRcdFx0XHRcdFx0XHRbb3B0aW9uc109XCJncmlkXCJcclxuXHRcdFx0XHRcdFx0XHRcdFt1cHNlcnRdPVwidXBzZXJ0UHJtXCJcclxuXHRcdFx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHQ8L2N1c3RvbS1mb3JtPlxyXG5cdFx0XHRcdFx0XHRcdDwvZm9ybT5cclxuXHRcdFx0XHRcdFx0fSAtLT5cclxuXHRcdFx0XHRcdFx0PGN1c3RvbS1mb3JtXHJcblx0XHRcdFx0XHRcdFx0I3RhYkZvcm1cclxuXHRcdFx0XHRcdFx0XHRbaGlkZGVuXT1cImluZGV4VmFsdWUgIT0gaVwiXHJcblx0XHRcdFx0XHRcdFx0W29wdGlvbnNdPVwiZ3JpZFwiXHJcblx0XHRcdFx0XHRcdFx0W3Vwc2VydF09XCJ1cHNlcnRQcm1cIlxyXG5cdFx0XHRcdFx0XHRcdFttb2RlbF09XCJzdWJGb3JtTW9kZWxbZ3JpZC5zdWJEYXRhS2V5IV0gfHwge31cIlxyXG5cdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdDwvY3VzdG9tLWZvcm0+XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdFx0QGlmKG1vZGVsTG9nKCkpe1xyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwibWQ6YmFzaXMtMS8zIGJhc2lzLWZ1bGwgaC1mdWxsIG92ZXJmbG93LXktYXV0b1wiPlxyXG5cdFx0XHRcdDxjdXN0b20tbG9nIFtsb2dzXT1cImdldFBybS5kYXRhPy5sb2cgPz8gW11cIj48L2N1c3RvbS1sb2c+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0fVxyXG5cdDwvZGl2PlxyXG48L2Rpdj5cclxuPHJvdy1zZWxlY3RvclxyXG5cdFsodmlzaWJsZSldPVwidmlzaWJsZVwiXHJcblx0W3NlYXJjaFBybV09XCJkaWFsb2dTZWFyY2hQcm1cIlxyXG5cdFtncmlkT3B0aW9uc109XCJzZWxlY3RPcHRpb25zXCJcclxuXHQob25Payk9XCJvbk9rKCRldmVudClcIj5cclxuPC9yb3ctc2VsZWN0b3I+XHJcbiJdfQ==
|
|
326
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvcGFnZS1mb3JtL3BhZ2UtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3BhZ2UtZm9ybS9wYWdlLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQTJCLFlBQVksRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0SSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFlLE1BQU0sNkJBQTZCLENBQUM7QUFDekUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsY0FBYyxFQUFRLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBZSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLFdBQVcsRUFBTyxNQUFNLG9CQUFvQixDQUFDO0FBR3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFF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QUNaLG1CQUFtQixxYkFDbkIsYUFBYSxnR0FDYixZQUFZLCtFQUNaLG9CQUFvQixnUEFDcEIsY0FBYywwSkFDZCxhQUFhLCtOQUNiLFVBQVUsNFhBQ1Ysb0JBQW9CLGtKQUNwQixhQUFhLGtEQUNiLG9CQUFvQjs7NEZBTVQsaUJBQWlCO2tCQXBCN0IsU0FBUzsrQkFDQyxlQUFlLGNBQ2IsSUFBSSxXQUNQO3dCQUNSLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsVUFBVTt3QkFDVixvQkFBb0I7d0JBQ3BCLGFBQWE7d0JBQ2Isb0JBQW9CO3FCQUNwQixhQUdVLEVBQUU7d0RBR08sS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUNVLFVBQVU7c0JBQXJDLFlBQVk7dUJBQUMsWUFBWTtnQkFDRCxPQUFPO3NCQUEvQixZQUFZO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVc2VySGlzdG9yeVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL3VzZXJIaXN0b3J5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgT25Jbml0LCBWaWV3Q2hpbGQsIGlucHV0LCBlZmZlY3QsIGNvbXB1dGVkLCBJbnB1dCwgc2lnbmFsLCBWaWV3Q2hpbGRyZW4sIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGb3JtQ29tcG9uZW50LCBGb3JtT3B0aW9ucyB9IGZyb20gJy4uL2Zvcm0vZm9ybS9mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJvd1NlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vcm93LXNlbGVjdG9yL3Jvdy1zZWxlY3Rvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMb2dDb21wb25lbnQgfSBmcm9tICcuLi9sb2cvbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuaW1wb3J0IHsgQ3J1bWJBY3Rpb25Db21wb25lbnQgfSBmcm9tICcuLi9jcnVtYi1hY3Rpb24vY3J1bWItYWN0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFN0ZXBzQ29tcG9uZW50LCBTdGVwIH0gZnJvbSAnLi4vc3RlcHMvc3RlcHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgR3JpZENvbXBvbmVudCwgR3JpZE9wdGlvbnMgfSBmcm9tICcuLi9ncmlkL2dyaWQvZ3JpZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJzTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWJzJztcclxuaW1wb3J0IHsgQW1Db21wb25lbnQsIEdldCB9IGZyb20gJy4uL2FtL2FtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNlYXJjaCB9IGZyb20gJy4uL2FtL2FtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEhyZWZCdG5MaXN0LCBHcmlkTGlzdCB9IGZyb20gJy4vcGFnZS1mb3JtLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2kxOG4uc2VydmljZSc7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25CdG4gfSBmcm9tICcuL3BhZ2UtZm9ybS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBmb3JtVHlwZVRvUHJvcHMgfSBmcm9tICcuL3BhZ2UtZm9ybS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBIcmVmQnRuTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2hyZWYtYnRuLWxpc3QvaHJlZi1idG4tbGlzdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9hY3Rpb24uc2VydmljZSc7XHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXBwLXBhZ2UtZm9ybScsXHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRpbXBvcnRzOiBbXHJcblx0XHRCdXR0b25Nb2R1bGUsXHJcblx0XHRSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG5cdFx0Rm9ybUNvbXBvbmVudCxcclxuXHRcdExvZ0NvbXBvbmVudCxcclxuXHRcdENydW1iQWN0aW9uQ29tcG9uZW50LFxyXG5cdFx0U3RlcHNDb21wb25lbnQsXHJcblx0XHRHcmlkQ29tcG9uZW50LFxyXG5cdFx0VGFic01vZHVsZSxcclxuXHRcdFJvd1NlbGVjdG9yQ29tcG9uZW50LFxyXG5cdFx0VHJhbnNsYXRlUGlwZSxcclxuXHRcdEhyZWZCdG5MaXN0Q29tcG9uZW50LFxyXG5cdF0sXHJcblx0dGVtcGxhdGVVcmw6ICcuL3BhZ2UtZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmw6ICcuL3BhZ2UtZm9ybS5jb21wb25lbnQuc2NzcycsXHJcblx0cHJvdmlkZXJzOiBbXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBhZ2VGb3JtQ29tcG9uZW50IGV4dGVuZHMgQW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cdEBWaWV3Q2hpbGQoJ2NGb3JtJykgY0Zvcm0hOiBGb3JtQ29tcG9uZW50O1xyXG5cdEBWaWV3Q2hpbGRyZW4oJ2N1c3RvbUdyaWQnKSBjdXN0b21HcmlkITogUXVlcnlMaXN0PEdyaWRDb21wb25lbnQ+O1xyXG5cdEBWaWV3Q2hpbGRyZW4oJ3RhYkZvcm0nKSB0YWJGb3JtITogUXVlcnlMaXN0PEZvcm1Db21wb25lbnQ+O1xyXG5cdGFkZFZpc2libGUgPSBpbnB1dDxib29sZWFuPigpO1xyXG5cdGdyaWRMaXN0ID0gaW5wdXQ8YW55W10+KFtdKTtcclxuXHRmb3JtID0gaW5wdXQucmVxdWlyZWQ8Rm9ybU9wdGlvbnM+KHt9KTtcclxuXHRnZXRQcm1JbnB1dCA9IGlucHV0LnJlcXVpcmVkPEdldD4oe30pO1xyXG5cdHN0YXR1c1N0ZXBzID0gaW5wdXQ8U3RlcFtdPihbXSk7XHJcblx0c3RhdHVzS2V5ID0gaW5wdXQoJ3N0YXR1cycpO1xyXG5cdGhyZWZCdG5MaXN0ID0gaW5wdXQ8SHJlZkJ0bkxpc3RbXT4oW10pO1xyXG5cdHNldFRpdGxlID0gaW5wdXQ8c3RyaW5nPigpO1xyXG5cdGFjdGlvbkxpc3QgPSBpbnB1dDxQZXJtaXNzaW9uQnRuW10+KFtdKTtcclxuXHRtb2RlbExvZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRmb3JtRGlzYWJsZWQgPSBpbnB1dDxGdW5jdGlvbj4oKTtcclxuXHRzdGF0dXNDb25mID0gaW5wdXQ8YW55PigpXHJcblx0Zm9ybURldGFpbCA9IGlucHV0PGFueT4oKVxyXG5cdHNhdmVGdW5jID0gaW5wdXQ8YW55PigpXHJcblxyXG5cdHVzZXJIaXN0b3J5U2VydmljZSA9IGluamVjdChVc2VySGlzdG9yeVNlcnZpY2UpO1xyXG5cdGluZGV4VmFsdWUgPSAwO1xyXG5cdHZpc2libGUgPSBmYWxzZTtcclxuXHRkaWFsb2dTZWFyY2hQcm0hOiBTZWFyY2g7XHJcblx0c2VsZWN0T3B0aW9ucyE6IEdyaWRPcHRpb25zO1xyXG5cdHNlbGVjdERhdGE6IGFueVtdID0gW107XHJcblx0cGFnZVVybCA9ICcnO1xyXG5cdG5ld1VybCA9ICcnO1xyXG5cdGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xyXG5cdGF1dGhMZXZlbCA9IGlucHV0PG51bWJlcj4oLTEpO1xyXG5cdGhyZWZzOiBhbnlbXSA9IFtdO1xyXG5cdGFjdGlvbiA9IGluamVjdChBY3Rpb25TZXJ2aWNlKTtcclxuXHRzdWJGb3JtTW9kZWw6YW55ID0ge30gXHJcblx0Y29uc3RydWN0b3IoKSB7XHJcblx0XHRzdXBlcigpO1xyXG5cdFx0dGhpcy5pZCA9IE51bWJlcih0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnaWQnKSk7XHJcblx0XHR0aGlzLnBhZ2VVcmwgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnVybFxyXG5cdFx0XHQubWFwKChzZWdtZW50KSA9PiBzZWdtZW50LnBhdGgpXHJcblx0XHRcdC5qb2luKCcvJylcclxuXHRcdFx0LnJlcGxhY2UoLyhbXlxcL10qKSQvLCAnJyk7XHJcblx0XHR0aGlzLm5ld1VybCA9IGAke3RoaXMucGFnZVVybH1uZXdgO1xyXG5cdFx0ZWZmZWN0KFxyXG5cdFx0XHQoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5tb2RlbE5hbWUgPSB0aGlzLmdldFBybUlucHV0KCkubW9kZWxOYW1lITtcclxuXHRcdFx0XHR0aGlzLmdldFBybSA9IHsgLi4udGhpcy5nZXRQcm1JbnB1dCgpIH07XHJcblx0XHRcdFx0dGhpcy5pZCAmJiAodGhpcy5nZXRQcm0uaWQgPSB0aGlzLmlkKTtcclxuXHRcdFx0XHRpZih0aGlzLmlkKXtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHR5cGVvZiB0aGlzLmZvcm1EZXRhaWwoKSwnZm9ybS0tLS0nKVxyXG5cdFx0XHRcdFx0dHlwZW9mIHRoaXMuZm9ybURldGFpbCgpID09ICdmdW5jdGlvbicgPyB0aGlzLmZvcm1EZXRhaWwoKSh0aGlzLmlkKSA6IHRoaXMuZ2V0RGV0YWlsKCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXHJcblx0XHQpO1xyXG5cclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdHRoaXMuZm9ybU9wdGlvbnMgPSB7IC4uLnRoaXMuZm9ybSgpIH07XHJcblx0XHR9KTtcclxuXHRcdGVmZmVjdChcclxuXHRcdFx0KCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuaXNMb2cgPSB0aGlzLm1vZGVsTG9nKCk7XHJcblx0XHRcdH0sXHJcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcclxuXHRcdCk7XHJcblx0XHRlZmZlY3QoXHJcblx0XHRcdCgpID0+IHtcclxuXHRcdFx0XHRpZiAodGhpcy5zdGF0dXNTdGVwcygpLmxlbmd0aCA+IDAgJiYgIXRoaXMuaWQpIHtcclxuXHRcdFx0XHRcdHRoaXMudXBzZXJ0UHJtLmFkZERhdGEhW3RoaXMuc3RhdHVzS2V5KCldID0gdGhpcy5zdGF0dXNTdGVwcygpWzBdWyd2YWx1ZSddO1xyXG5cdFx0XHRcdFx0dGhpcy5nZXRQcm0uZGF0YSA9IE9iamVjdC5hc3NpZ24odGhpcy5nZXRQcm0uZGF0YSB8fCB7fSwge1xyXG5cdFx0XHRcdFx0XHRbdGhpcy5zdGF0dXNLZXkoKV06IHRoaXMuc3RhdHVzU3RlcHMoKVswXVsndmFsdWUnXSxcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxyXG5cdFx0KTtcclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdGlmKHRoaXMuYXV0aExldmVsKCkgPCAzKXtcclxuXHRcdFx0XHR0aGlzLnNldERpc2FibGVkKClcclxuXHRcdFx0fVxyXG5cdFx0fSx7YWxsb3dTaWduYWxXcml0ZXM6dHJ1ZX0pXHJcblx0fVxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy51cENiID0gdGhpcy51cENiLmJpbmQodGhpcyk7XHJcblx0fVxyXG5cclxuXHRzdWJtaXRGb3JtKCk6IGFueSB7XHJcblx0XHQvLyB0aGlzLnRhYkZvcm0udmFsaWRhdGUoKVxyXG5cdFx0bGV0IHN1YkZvcm0gPSB0cnVlXHJcblx0XHRpZih0aGlzLnRhYkZvcm0ubGVuZ3RoID4gMCl7XHJcblx0XHRcdHRoaXMudGFiRm9ybS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG5cdFx0XHRcdGlmKCFpdGVtLnZhbGlkYXRlKCkpe1xyXG5cdFx0XHRcdFx0c3ViRm9ybSA9IGZhbHNlXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KVxyXG5cdFx0fVxyXG5cdFx0aWYgKHRoaXMuY0Zvcm0udmFsaWRhdGUoKSAmJiBzdWJGb3JtKSB7XHJcblx0XHRcdGxldCBjYjogYW55ID0gdGhpcy5pZCA9PT0gMCA/IG51bGwgOiB0aGlzLnVwQ2I7XHJcblx0XHRcdHR5cGVvZiB0aGlzLnNhdmVGdW5jKCkgPT0gJ2Z1bmN0aW9uJyA/IHRoaXMuc2F2ZUZ1bmMoKSh0aGlzLnVwc2VydFBybSx0aGlzLmlkLGNiKSA6IHRoaXMudXBzZXJ0KG51bGwsIGNiKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGRlbFJvd3MoZTogYW55KSB7XHJcblx0XHRjb25zdCBncmlkVGFiID0gdGhpcy5ncmlkTGlzdCgpW3RoaXMuaW5kZXhWYWx1ZV07XHJcblx0XHRjb25zdCBkZWxldGVGdW5jID0gZ3JpZFRhYi5kZWxldGVGdW5jO1xyXG5cdFx0Y29uc3Qgc3ViVGFibGUgPSBncmlkVGFiLmdyaWRPcHRpb25zLm1vZGVsTmFtZTtcclxuXHJcblx0XHRsZXQgcHJtID0ge1xyXG5cdFx0XHRtb2RlbE5hbWU6IHN1YlRhYmxlLFxyXG5cdFx0XHRpZHM6IGUsXHJcblx0XHR9O1xyXG5cdFx0aWYgKCFkZWxldGVGdW5jKSB7XHJcblx0XHRcdHRoaXMud2ViX3JlbW92ZShwcm0pLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5nZXQoKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRkZWxldGVGdW5jKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuXHRcdFx0XHR0aGlzLmdldCgpO1xyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9XHJcblx0dXBDYihyZXM/OiBhbnkpIHtcclxuXHRcdGlmIChyZXMuaWQgPT0gMCkge1xyXG5cdFx0XHR0aGlzLmdldERldGFpbCgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdFx0bGV0IGVkaXRVcmwgPSBgJHt0aGlzLnBhZ2VVcmx9JHtyZXMuaWR9YDtcclxuXHRcdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbZWRpdFVybF0pO1xyXG5cdFx0XHR9LCAxNTAwKTtcclxuXHRcdH1cclxuXHRcdHRoaXMuYWN0aW9uLnNhdmVTaWduYWwuc2V0KGZhbHNlKTtcclxuXHRcdHRoaXMuY0Zvcm0uZmluYWxpemUoKTtcclxuXHR9XHJcblx0Ly8gVE9ETyDmmK/lkKbpnIDopoHmlbDmja7ovazmjaLlm57osIPlh73mlbBcclxuXHRvbk9rKGU6IGFueSkge1xyXG5cdFx0Y29uc3QgZ3JpZCA9IHRoaXMuZ3JpZExpc3QoKVt0aGlzLmluZGV4VmFsdWVdO1xyXG5cdFx0dGhpcy5ncmlkTGlzdCgpW3RoaXMuaW5kZXhWYWx1ZV0uc2VsZWN0RGF0YSA9IFtdO1xyXG5cdFx0aWYgKGUubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRsZXQgdW5pcXVlS2V5cyA9IFtdO1xyXG5cdFx0XHRpZiAoZ3JpZC51bmlxdWVGaWVsZCkge1xyXG5cdFx0XHRcdGNvbnN0IHJvd0RhdGEgPSB0aGlzLmN1c3RvbUdyaWQuZ2V0KHRoaXMuaW5kZXhWYWx1ZSkhXHJcblx0XHRcdFx0XHQuZ2V0R3JpZCgpXHJcblx0XHRcdFx0XHQuYXBpLmdldFJlbmRlcmVkTm9kZXMoKVxyXG5cdFx0XHRcdFx0Lm1hcCgobm9kZSkgPT4gbm9kZS5kYXRhKTtcclxuXHRcdFx0XHR1bmlxdWVLZXlzID0gcm93RGF0YS5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbVtncmlkLnVuaXF1ZUZpZWxkIV0pO1xyXG5cdFx0XHR9XHJcblx0XHRcdGUuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcblx0XHRcdFx0bGV0IG9iaiA9IGdyaWQuc2VsZWN0RGF0YUNiID8gZ3JpZC5zZWxlY3REYXRhQ2IoaXRlbSkgOiB7IC4uLml0ZW0gfTtcclxuXHRcdFx0XHRpZiAoZ3JpZC51bmlxdWVGaWVsZCAmJiB1bmlxdWVLZXlzLmluY2x1ZGVzKG9ialtncmlkLnVuaXF1ZUZpZWxkIV0gfHwgJycpKSB7XHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGdyaWQuc2VsZWN0RGF0YSEucHVzaChvYmopO1xyXG5cdFx0XHR9KTtcclxuXHRcdFx0dGhpcy5hY3Rpb24uc2F2ZVNpZ25hbC5zZXQodHJ1ZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cdGdldERldGFpbCgpIHtcclxuXHRcdHRoaXMud2ViX2dldCh0aGlzLmdldFBybSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuXHRcdFx0dGhpcy5kZXRhaWxDYihyZXMpXHJcblx0XHR9KTtcclxuXHR9XHJcblx0Ly8g6I635Y+W6K+m5oOF5Zue6LCDXHJcblx0ZGV0YWlsQ2IocmVzOmFueSl7XHJcblx0XHR0aGlzLnVwZGF0ZVRpdGxlKHJlcyk7XHJcblx0XHRpZih0eXBlb2YgdGhpcy5mb3JtRGlzYWJsZWQoKSA9PSAnZnVuY3Rpb24nKXtcclxuXHRcdFx0dGhpcy5mb3JtRGlzRnVuYygpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHRoaXMuaHJlZkJ0bkxpc3QoKS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdHRoaXMuc2V0SHJlZlZhbHVlKCk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmdyaWRMaXN0KCkuZm9yRWFjaCh2ID0+IHtcclxuXHRcdFx0aWYodi50eXBlID09ICdmb3JtJyl7XHJcblx0XHRcdFx0dGhpcy5zdWJGb3JtTW9kZWxbdi5zdWJEYXRhS2V5XSA9IHJlc1t2LnN1YkRhdGFLZXldWzBdXHJcblx0XHRcdH1cclxuXHRcdH0pXHJcblx0fVxyXG5cdHNldEhyZWZWYWx1ZSgpIHtcclxuXHRcdHRoaXMuaHJlZkJ0bkxpc3QoKS5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG5cdFx0XHRpZiAoaXRlbS5oYXNPd25Qcm9wZXJ0eSgnc2VhcmNoQ291bnQnKSAmJiB0eXBlb2YgaXRlbS5zZWFyY2hDb3VudCA9PSAnb2JqZWN0Jykge1xyXG5cdFx0XHRcdGl0ZW0uc2VhcmNoQ291bnQuY29sdW1uRmlsdGVycy5mb3JFYWNoKCh2OiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdGlmICh0eXBlb2Ygdi5maXRlciA9PT0gJ2Z1bmN0aW9uJykge1xyXG5cdFx0XHRcdFx0XHR2LmZpdGVyID0gdi5maXRlcih0aGlzLmdldFBybS5kYXRhKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR0aGlzLndlYl9zZWFyY2hDb3VudChpdGVtLnNlYXJjaENvdW50KS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0aXRlbS52YWx1ZSA9IHJlcy50b3RhbE51bSB8fCAwO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblx0dXBkYXRlVGl0bGUocmVzOiBhbnkpIHtcclxuXHRcdGxldCBtYWluRmllbGQgPSB0aGlzLmZvcm0oKS5tYWluRmllbGQ7XHJcblx0XHRsZXQgdGl0bGUgPSByZXNbbWFpbkZpZWxkIV07XHJcblx0XHR0aGlzLnVzZXJIaXN0b3J5U2VydmljZS5zZXRMYXN0VGl0bGUodGl0bGUpO1xyXG5cdH1cclxuXHRkYXRhU291cmNlU2hvdygpIHtcclxuXHRcdHRoaXMuZGlhbG9nU2VhcmNoUHJtID0geyAuLi50aGlzLmdyaWRMaXN0KClbdGhpcy5pbmRleFZhbHVlXVsnc2VhcmNoUHJtJ10hIH07XHJcblx0XHR0aGlzLnNlbGVjdE9wdGlvbnMgPSB0aGlzLmdyaWRMaXN0KClbdGhpcy5pbmRleFZhbHVlXVsnc2VsZWN0T3B0aW9ucyddITtcclxuXHRcdGNvbnNvbGUubG9nKCdzZWxldGMtLS0tLScsIHRoaXMuc2VsZWN0T3B0aW9ucyk7XHJcblx0XHR0aGlzLmRpYWxvZ1NlYXJjaFBybS5tb2RlbE5hbWUgPSB0aGlzLnNlbGVjdE9wdGlvbnMubW9kZWxOYW1lO1xyXG5cdFx0dGhpcy52aXNpYmxlID0gdHJ1ZTtcclxuXHR9XHJcblxyXG5cdGdvUnVuKGRhdGE6IGFueSkge1xyXG5cdFx0aWYgKHR5cGVvZiBkYXRhLnVybCA9PT0gJ2Z1bmN0aW9uJykge1xyXG5cdFx0XHRsZXQgdXJsID0gZGF0YS51cmwodGhpcy5nZXRQcm0uZGF0YSk7XHJcblx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmxdKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICd3YXJuJywgc3VtbWFyeTogJ1dhcm4nLCBkZXRhaWw6ICfor7fphY3nva7ot7Povazpk77mjqUnIH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0YXV0aENsaWNrKGJ0bjogYW55KSB7XHJcblx0XHRpZiAoYnRuLmhhc093blByb3BlcnR5KCdvbkNsaWNrJykpIHtcclxuXHRcdFx0YnRuLm9uQ2xpY2sodGhpcy5nZXRQcm0uZGF0YSk7XHJcblx0XHR9XHJcblx0fVxyXG5cdHN0YXR1c0NoYW5nZSh2YWx1ZTogYW55LCBjdXN0b21TdGVwczogU3RlcHNDb21wb25lbnQpIHtcclxuXHRcdGlmICh0aGlzLmF1dGhMZXZlbCgpIDwgNCB8fCAhdGhpcy5zdGF0dXNDb25mKCkuaXNDbGljaykgcmV0dXJuO1xyXG5cdFx0aWYgKHRoaXMuaWQpIHtcclxuXHRcdFx0bGV0IHBhcmFtOiBhbnkgPSB7XHJcblx0XHRcdFx0bW9kZWxOYW1lOiB0aGlzLm1vZGVsTmFtZSxcclxuXHRcdFx0XHRkYXRhOiB7IGlkOiB0aGlzLmlkLCBbdGhpcy5zdGF0dXNLZXkoKV06IHZhbHVlIH0sXHJcblx0XHRcdH07XHJcblx0XHRcdGlmICh0aGlzLmlzTG9nKSB7XHJcblx0XHRcdFx0cGFyYW0ubG9nTW9kZWwgPSBgJHt0aGlzLm1vZGVsTmFtZX1Mb2dgO1xyXG5cdFx0XHRcdHBhcmFtLmxvZyA9IHtcclxuXHRcdFx0XHRcdHBpZDogdGhpcy5pZCxcclxuXHRcdFx0XHRcdGNvbnRlbnQ6IGBb54q25oCBXSAke3RoaXMuZ2V0UHJtLmRhdGEhW3RoaXMuc3RhdHVzS2V5KCldfSAtPiAke3ZhbHVlfWAsXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLndlYl93cml0ZShwYXJhbSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuXHRcdFx0XHR0aGlzLmdldERldGFpbCgpO1xyXG5cdFx0XHR9KTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuZ2V0UHJtLmRhdGEgPSBPYmplY3QuYXNzaWduKHRoaXMuZ2V0UHJtLmRhdGEgfHwge30sIHtcclxuXHRcdFx0XHRbdGhpcy5zdGF0dXNLZXkoKV06IHZhbHVlLFxyXG5cdFx0XHR9KTtcclxuXHRcdFx0dGhpcy51cHNlcnRQcm0uYWRkRGF0YSFbdGhpcy5zdGF0dXNLZXkoKV0gPSB2YWx1ZTtcclxuXHRcdFx0dGhpcy5jRm9ybS50cmlnZ2VyTW9kZWxFZmZlY3QoeyBbdGhpcy5zdGF0dXNLZXkoKV06IHZhbHVlIH0pO1xyXG5cdFx0XHQvLyBjdXN0b21TdGVwcy5yZWZyZXNoU3RlcHMoKVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Zm9ybURpc0Z1bmMoKSB7XHJcblx0XHR0aGlzLmZvcm1PcHRpb25zLmZpZWxkcz8uZm9yRWFjaCgodikgPT4ge1xyXG5cdFx0XHR2Lmdyb3VwPy5mb3JFYWNoKChnOiBhbnkpID0+IHtcclxuXHRcdFx0XHRsZXQgZmllbGREaXNhYmxlZCA9IGdbZm9ybVR5cGVUb1Byb3BzW2cudHlwZV1dLmRpc2FibGVkIHx8IGZhbHNlO1xyXG5cdFx0XHRcdGlmICh0aGlzLmZvcm1EaXNhYmxlZCgpISh0aGlzLmdldFBybS5kYXRhKSkge1xyXG5cdFx0XHRcdFx0dGhpcy5jRm9ybS5nZXRGaWVsZChnLmtleSk/LmZpZWxkQ29udHJvbCEuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdCFmaWVsZERpc2FibGVkICYmIHRoaXMuY0Zvcm0uZ2V0RmllbGQoZy5rZXkpPy5maWVsZENvbnRyb2whLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdFx0dGhpcy5ncmlkTGlzdCgpLmZvckVhY2goKHYsaW5kZXg6YW55KSA9PiB7XHJcblx0XHRcdGlmKHYudHlwZSA9PSAnZ3JpZCcpe1xyXG5cdFx0XHRcdHYuZ3JpZE9wdGlvbnMuY29sdW1uRGVmcy5mb3JFYWNoKChpdGVtOmFueSkgPT4ge1xyXG5cdFx0XHRcdFx0aWYodGhpcy5mb3JtRGlzYWJsZWQoKSEodGhpcy5nZXRQcm0uZGF0YSkgJiYgaXRlbS5oYXNPd25Qcm9wZXJ0eSgnZWRpdGFibGUnKSl7XHJcblx0XHRcdFx0XHRcdGl0ZW0uZWRpdGFibGUgPSBmYWxzZVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdFx0dGhpcy5jdXN0b21HcmlkLmdldChpbmRleCkhLmdldEdyaWQoKS5hcGkuc2V0R3JpZE9wdGlvbihcclxuXHRcdFx0XHRcdCdjb2x1bW5EZWZzJywgXHJcblx0XHRcdFx0XHR2LmdyaWRPcHRpb25zLmNvbHVtbkRlZnNcclxuXHRcdFx0XHQpXHJcblx0XHRcdH0gZWxzZSBpZih2LnR5cGUgPT0gJ2Zvcm0nKXtcclxuXHRcdFx0XHR2LmZpZWxkcz8uZm9yRWFjaCgoaXRlbTphbnksKSA9PiB7XHJcblx0XHRcdFx0XHRpdGVtLmdyb3VwPy5mb3JFYWNoKChnOiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdFx0bGV0IGZpZWxkRGlzYWJsZWQgPSBnW2Zvcm1UeXBlVG9Qcm9wc1tnLnR5cGVdXS5kaXNhYmxlZCB8fCBmYWxzZTtcclxuXHRcdFx0XHRcdFx0aWYgKHRoaXMuZm9ybURpc2FibGVkKCkhKHRoaXMuZ2V0UHJtLmRhdGEpKSB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy50YWJGb3JtLmdldChpbmRleCkhLmdldEZpZWxkKGcua2V5KT8uZmllbGRDb250cm9sIS5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHQhZmllbGREaXNhYmxlZCAmJiB0aGlzLmNGb3JtLmdldEZpZWxkKGcua2V5KT8uZmllbGRDb250cm9sIS5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSlcclxuXHR9XHJcblx0c2V0RGlzYWJsZWQoKXtcclxuXHRcdHRoaXMuZ3JpZExpc3QoKS5mb3JFYWNoKCh2LGluZGV4OmFueSkgPT4ge1xyXG5cdFx0XHRpZih2LnR5cGUgPT0gJ2Zvcm0nKXtcclxuXHRcdFx0XHR2LmZpZWxkcz8uZm9yRWFjaCgoaXRlbTphbnksKSA9PiB7XHJcblx0XHRcdFx0XHRpdGVtLmdyb3VwPy5mb3JFYWNoKChnOiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdFx0dGhpcy50YWJGb3JtLmdldChpbmRleCkhLmdldEZpZWxkKGcua2V5KT8uZmllbGRDb250cm9sIS5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KVxyXG5cdH1cclxuXHR0YWJDbGljaygpe1xyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdHRoaXMudGFiRm9ybS5nZXQodGhpcy5pbmRleFZhbHVlKSAmJiB0aGlzLnRhYkZvcm0uZ2V0KHRoaXMuaW5kZXhWYWx1ZSkhLnJlQ2FsY0xhYmVsU2l6ZSgpXHJcblx0XHR9LDApXHJcblx0fVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtZDpvdmVyZmxvdy1oaWRkZW5cIj5cclxuXHQ8ZGl2IGNsYXNzPVwiZmxleCBtZDpmbGV4LXdyYXAgbGc6ZmxleC1ub3dyYXAgaXRlbXMtY2VudGVyIG1kOmp1c3RpZnktYmV0d2VlbiBweS0xIHB4LTEgYm9yZGVyLWItWzFweF0gYm9yZGVyLVsjZGJkYmRiXSBiZy13aGl0ZVwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cIm1kOmJhc2lzLTEvMyBvcmRlci0xXCI+XHJcblx0XHRcdDxhcHAtY3J1bWItYWN0aW9uXHJcblx0XHRcdFx0W2FkZFZpc2libGVdPVwiYWRkVmlzaWJsZSgpXCJcclxuXHRcdFx0XHRbbmV3VXJsXT1cIm5ld1VybFwiXHJcblx0XHRcdFx0W2lzU2hvd0NvZ109XCJ0cnVlXCJcclxuXHRcdFx0XHRbb3V0bGluZWRdPVwidHJ1ZVwiXHJcblx0XHRcdFx0W2F1dGhMZXZlbF09XCJhdXRoTGV2ZWwoKVwiXHJcblx0XHRcdFx0W2FjdGlvbkxpc3RdPVwiYWN0aW9uTGlzdCgpXCJcclxuXHRcdFx0XHRbZGF0YV09XCJnZXRQcm0uZGF0YSA/PyB7fVwiXHJcblx0XHRcdFx0KGFjdGlvbkV2ZW50KT1cImF1dGhDbGljaygkZXZlbnQpXCJcclxuXHRcdFx0XHQoc2F2ZUV2ZW50KT1cInN1Ym1pdEZvcm0oKVwiPlxyXG5cdFx0XHQ8L2FwcC1jcnVtYi1hY3Rpb24+XHJcblx0XHQ8L2Rpdj5cclxuXHJcblx0XHQ8ZGl2IGNsYXNzPVwiYmFzaXMtMS81IGxnOmJhc2lzLTIvMyBvcmRlci0yIGxnOm9yZGVyLTIgbWQ6b3JkZXItbGFzdCBtZDpiYXNpcy1mdWxsIG1kOm10LVs2cHhdXCI+XHJcblx0XHRcdDxocmVmLWJ0bi1saXN0XHJcblx0XHRcdFx0W2hyZWZzXT1cImhyZWZCdG5MaXN0KClcIlxyXG5cdFx0XHRcdChocmVmQ2xpY2spPVwiZ29SdW4oJGV2ZW50KVwiPjwvaHJlZi1idG4tbGlzdD5cclxuXHRcdFx0PCEtLSBAaWYgKGlkKSB7XHJcblx0XHRcdFx0QGZvciAoYnRuIG9mIGhyZWZCdG5MaXN0KCk7IHRyYWNrIGJ0bikge1xyXG5cdFx0XHRcdFx0PHAtYnV0dG9uXHJcblx0XHRcdFx0XHRcdFt2YXJpYW50XT1cImJ0bj8udmFyaWFudFwiXHJcblx0XHRcdFx0XHRcdFtzZXZlcml0eV09XCJidG4/LnNldmVyaXR5XCJcclxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJtci1bNnB4XVwiXHJcblx0XHRcdFx0XHRcdHNpemU9XCJzbWFsbFwiXHJcblx0XHRcdFx0XHRcdFtpY29uXT1cImJ0bj8uaWNvblwiXHJcblx0XHRcdFx0XHRcdGxhYmVsPVwie3sgYnRuLmkxOG5LZXkgPyBpMThuLmZhbnlpKGJ0bi5pMThuS2V5KSA6IGJ0bi5sYWJlbCB9fVwiXHJcblx0XHRcdFx0XHRcdChjbGljayk9XCJnb1J1bihidG4pXCI+XHJcblx0XHRcdFx0XHQ8L3AtYnV0dG9uPlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSAtLT5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PGRpdiBjbGFzcz1cImJhc2lzLTEvMyBvcmRlci0zXCI+PC9kaXY+XHJcblx0PC9kaXY+XHJcblx0PGRpdiBjbGFzcz1cImZsZXhcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJweC0yIGZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBmbGV4LTFcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImhpZGRlbiBtZDpiYXNpcy0xLzMgcHktMSBiYXNpcy1mdWxsIG1kOmZsZXggaXRlbXMtY2VudGVyIGdhcC0yIGZsZXgtcm93IG9yZGVyLTFcIj5cclxuXHRcdFx0XHRAZm9yIChhY3Rpb24gb2YgYWN0aW9uTGlzdCgpOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgYWN0aW9uKSB7XHJcblx0XHRcdFx0XHQ8cC1idXR0b25cclxuXHRcdFx0XHRcdFx0c2l6ZT1cInNtYWxsXCJcclxuXHRcdFx0XHRcdFx0W2ljb25dPVwiZ2V0UHJtLmRhdGE/Lmljb25cIlxyXG5cdFx0XHRcdFx0XHRbbGFiZWxdPVwiYWN0aW9uLmkxOG5LZXkgPyAoYWN0aW9uLmkxOG5LZXkgfCB0cmFuc2xhdGUpIDogYWN0aW9uLmxhYmVsXCJcclxuXHRcdFx0XHRcdFx0W2Rpc2FibGVkXT1cImFjdGlvbi5idG5EaXNhYmxlZCA/IGFjdGlvbi5idG5EaXNhYmxlZChnZXRQcm0uZGF0YSkgOiBmYWxzZVwiXHJcblx0XHRcdFx0XHRcdFtzdHlsZUNsYXNzXT1cIlxyXG5cdFx0XHRcdFx0XHRcdChhY3Rpb24uYXV0aCB8fCAwKSA+IChhdXRoTGV2ZWwoKSB8fCAwKSB8fCAhIWFjdGlvbi5idG5IaWRkZW4/LihnZXRQcm0uZGF0YSkgPyAnZm9ybS1hY3Rpb24gaGlkZGVuJyA6ICdmb3JtLWFjdGlvbiBibG9jaydcclxuXHRcdFx0XHRcdFx0XCJcclxuXHRcdFx0XHRcdFx0KG9uQ2xpY2spPVwiYWN0aW9uLm9uQ2xpY2sgIT0gJycgJiYgYWN0aW9uLm9uQ2xpY2s/LihnZXRQcm0uZGF0YSlcIj5cclxuXHRcdFx0XHRcdDwvcC1idXR0b24+XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cIm1kOmJhc2lzLTIvMyBiYXNpcy1mdWxsIGZsZXggbWQ6ZmxleC1yb3ctcmV2ZXJzZSBmbGV4LXJvdyBtZDpvcmRlci0yIG9yZGVyLWZpcnN0IHctZnVsbFwiPlxyXG5cdFx0XHRcdDxjdXN0b20tc3RlcHNcclxuXHRcdFx0XHRcdCNjdXN0b21TdGVwc1xyXG5cdFx0XHRcdFx0Y2xhc3M9XCJ3LWZ1bGxcIlxyXG5cdFx0XHRcdFx0W3N0ZXBzXT1cInN0YXR1c1N0ZXBzKClcIlxyXG5cdFx0XHRcdFx0W21vZGVsTG9nXT1cIm1vZGVsTG9nKClcIlxyXG5cdFx0XHRcdFx0W2N1cnJlbnRdPVwiZ2V0UHJtLmRhdGEgJiYgZ2V0UHJtLmRhdGFbc3RhdHVzS2V5KCldICE9PSB1bmRlZmluZWQgPyBnZXRQcm0uZGF0YVtzdGF0dXNLZXkoKV0gOiAwXCJcclxuXHRcdFx0XHRcdFthdXRoTGV2ZWxdPVwiYXV0aExldmVsKClcIlxyXG5cdFx0XHRcdFx0KGNoYW5nZSk9XCJzdGF0dXNDaGFuZ2UoJGV2ZW50LCBjdXN0b21TdGVwcylcIj5cclxuXHRcdFx0XHQ8L2N1c3RvbS1zdGVwcz5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHRcdEBpZiAobW9kZWxMb2coKSkge1xyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwibWQ6dy1bNDAwcHhdXCI+PC9kaXY+XHJcblx0XHR9XHJcblx0PC9kaXY+XHJcblx0PGRpdiBjbGFzcz1cIm1haW4gZmxleCBmbGV4LXdyYXAgbWQ6b3ZlcmZsb3cteS1oaWRkZW5cIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJ3LWZ1bGwgbWQ6ZmxleC0xIG1kOmgtZnVsbCBvdmVyZmxvdy15LWF1dG9cIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImJnLXdoaXRlIG14LTIgZm9ybS1wYW5lbFwiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJwLTIgZmxleC0xXCI+XHJcblx0XHRcdFx0XHQ8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm0oKS5mb3JtIVwiPlxyXG5cdFx0XHRcdFx0XHQ8Y3VzdG9tLWZvcm1cclxuXHRcdFx0XHRcdFx0XHQjY0Zvcm1cclxuXHRcdFx0XHRcdFx0XHRbb3B0aW9uc109XCJmb3JtT3B0aW9uc1wiXHJcblx0XHRcdFx0XHRcdFx0W3Vwc2VydF09XCJ1cHNlcnRQcm1cIlxyXG5cdFx0XHRcdFx0XHRcdFttb2RlbF09XCJnZXRQcm0uZGF0YSA/PyB7fVwiPjwvY3VzdG9tLWZvcm0+XHJcblx0XHRcdFx0XHQ8L2Zvcm0+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0QGlmIChncmlkTGlzdCgpICYmIGdyaWRMaXN0KCkubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cInJlbGF0aXZlIG1iLTJcIj5cclxuXHRcdFx0XHRcdFx0PHAtdGFicyBbKHZhbHVlKV09XCJpbmRleFZhbHVlXCI+XHJcblx0XHRcdFx0XHRcdFx0PHAtdGFibGlzdD5cclxuXHRcdFx0XHRcdFx0XHRcdEBmb3IgKGZjaGlsZCBvZiBncmlkTGlzdCgpOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgZmNoaWxkKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxwLXRhYlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFt2YWx1ZV09XCJpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2spPVwidGFiQ2xpY2soKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHt7IGZjaGlsZC5pMThuS2V5ID8gaTE4bi5mYW55aShmY2hpbGQuaTE4bktleSkgOiBmY2hpbGQudGl0bGUgfX1cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9wLXRhYj5cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHQ8L3AtdGFibGlzdD5cclxuXHRcdFx0XHRcdFx0PC9wLXRhYnM+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0QGZvciAoZ3JpZCBvZiBncmlkTGlzdCgpOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgZ3JpZCkge1xyXG5cdFx0XHRcdFx0QGlmIChncmlkLnR5cGUgPT0gJ2dyaWQnKSB7XHJcblx0XHRcdFx0XHRcdDxjdXN0b20tZ3JpZFxyXG5cdFx0XHRcdFx0XHRcdCNjdXN0b21HcmlkXHJcblx0XHRcdFx0XHRcdFx0W2hpZGRlbl09XCJpbmRleFZhbHVlICE9IGlcIlxyXG5cdFx0XHRcdFx0XHRcdFtyb3dEYXRhXT1cImdldFBybS5kYXRhPy5bZ3JpZC5zdWJEYXRhS2V5IV0gfHwgW11cIlxyXG5cdFx0XHRcdFx0XHRcdFt1cHNlcnRdPVwidXBzZXJ0UHJtXCJcclxuXHRcdFx0XHRcdFx0XHQoZGVsZXRlRW1pdCk9XCJkZWxSb3dzKCRldmVudClcIlxyXG5cdFx0XHRcdFx0XHRcdFthZGRUeXBlXT1cImdyaWQuc3ViVGFibGVTb3VyY2VcIlxyXG5cdFx0XHRcdFx0XHRcdChhZGRFbWl0KT1cImRhdGFTb3VyY2VTaG93KClcIlxyXG5cdFx0XHRcdFx0XHRcdFtncmlkT3B0aW9uc109XCJncmlkLmdyaWRPcHRpb25zXCJcclxuXHRcdFx0XHRcdFx0XHRbYXV0aExldmVsXT1cImF1dGhMZXZlbCgpXCJcclxuXHRcdFx0XHRcdFx0XHRbc2hvd0RlbGV0ZV09XCJncmlkLnNob3dEZWxldGVcIlxyXG5cdFx0XHRcdFx0XHRcdFtzZWxlY3REYXRhXT1cImdyaWQuc2VsZWN0RGF0YVwiPlxyXG5cdFx0XHRcdFx0XHQ8L2N1c3RvbS1ncmlkPlxyXG5cdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdDwhLS0gQGlmKGluZGV4VmFsdWUgPT0gaSl7XHJcblx0XHRcdFx0XHRcdFx0PGZvcm0gW2Zvcm1Hcm91cF09XCJncmlkLmZvcm0hXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8Y3VzdG9tLWZvcm1cclxuXHRcdFx0XHRcdFx0XHRcdFtvcHRpb25zXT1cImdyaWRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0W3Vwc2VydF09XCJ1cHNlcnRQcm1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdDwvY3VzdG9tLWZvcm0+XHJcblx0XHRcdFx0XHRcdFx0PC9mb3JtPlxyXG5cdFx0XHRcdFx0XHR9IC0tPlxyXG5cdFx0XHRcdFx0XHQ8Y3VzdG9tLWZvcm1cclxuXHRcdFx0XHRcdFx0XHQjdGFiRm9ybVxyXG5cdFx0XHRcdFx0XHRcdFtoaWRkZW5dPVwiaW5kZXhWYWx1ZSAhPSBpXCJcclxuXHRcdFx0XHRcdFx0XHRbb3B0aW9uc109XCJncmlkXCJcclxuXHRcdFx0XHRcdFx0XHRbdXBzZXJ0XT1cInVwc2VydFBybVwiXHJcblx0XHRcdFx0XHRcdFx0W21vZGVsXT1cInN1YkZvcm1Nb2RlbFtncmlkLnN1YkRhdGFLZXkhXSB8fCB7fVwiPlxyXG5cdFx0XHRcdFx0XHQ8L2N1c3RvbS1mb3JtPlxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHRcdEBpZiAobW9kZWxMb2coKSkge1xyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwidy1mdWxsIG1kOnctWzQwMHB4XSBtZDpoLWZ1bGwgb3ZlcmZsb3cteS1hdXRvXCI+XHJcblx0XHRcdFx0PGN1c3RvbS1sb2cgW2xvZ3NdPVwiZ2V0UHJtLmRhdGE/LmxvZyA/PyBbXVwiPjwvY3VzdG9tLWxvZz5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHR9XHJcblx0PC9kaXY+XHJcbjwvZGl2PlxyXG48cm93LXNlbGVjdG9yXHJcblx0Wyh2aXNpYmxlKV09XCJ2aXNpYmxlXCJcclxuXHRbc2VhcmNoUHJtXT1cImRpYWxvZ1NlYXJjaFBybVwiXHJcblx0W2dyaWRPcHRpb25zXT1cInNlbGVjdE9wdGlvbnNcIlxyXG5cdChvbk9rKT1cIm9uT2soJGV2ZW50KVwiPlxyXG48L3Jvdy1zZWxlY3Rvcj5cclxuIl19
|