@c8y/ngx-components 1021.36.0 → 1021.37.5
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/alarms/alarms-view.service.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.component.d.ts.map +1 -1
- package/core/common/forOf.directive.d.ts.map +1 -1
- package/core/file-picker/file-picker.component.d.ts +4 -2
- package/core/file-picker/file-picker.component.d.ts.map +1 -1
- package/core/forms/validation-pattern.d.ts +8 -0
- package/core/forms/validation-pattern.d.ts.map +1 -1
- package/esm2022/alarms/alarms-view.service.mjs +3 -1
- package/esm2022/alarms/alarms.component.mjs +2 -2
- package/esm2022/assets-navigator/asset-selector/asset-selector.component.mjs +3 -3
- package/esm2022/context-dashboard/context-dashboard.component.mjs +8 -2
- package/esm2022/core/common/forOf.directive.mjs +5 -1
- package/esm2022/core/file-picker/file-picker.component.mjs +7 -5
- package/esm2022/core/forms/validation-pattern.mjs +9 -1
- package/esm2022/core/navigator/navigator-bottom/navigator-bottom.component.mjs +3 -3
- package/esm2022/operations/operations-list/operations-list-item.component.mjs +14 -6
- package/esm2022/operations/operations-list/operations-list.component.mjs +13 -5
- package/esm2022/repository/configuration/list/configuration-detail.component.mjs +5 -4
- package/esm2022/repository/firmware/list/add-firmware-modal.component.mjs +5 -4
- package/esm2022/repository/software/list/add-software-modal.component.mjs +5 -4
- package/fesm2022/c8y-ngx-components-alarms.mjs +3 -1
- package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-assets-navigator.mjs +2 -2
- package/fesm2022/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs +6 -0
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +25 -9
- package/fesm2022/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-configuration.mjs +10 -9
- package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-firmware.mjs +4 -3
- package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-software.mjs +4 -3
- package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +84 -71
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/locales/de.po +10 -4
- package/locales/es.po +10 -4
- package/locales/fr.po +10 -4
- package/locales/ja_JP.po +10 -5
- package/locales/ko.po +10 -5
- package/locales/locales.pot +8 -2
- package/locales/nl.po +10 -4
- package/locales/pl.po +10 -4
- package/locales/pt_BR.po +10 -4
- package/locales/zh_CN.po +10 -5
- package/locales/zh_TW.po +10 -5
- package/operations/operations-list/operations-list-item.component.d.ts +3 -1
- package/operations/operations-list/operations-list-item.component.d.ts.map +1 -1
- package/operations/operations-list/operations-list.component.d.ts +1 -0
- package/operations/operations-list/operations-list.component.d.ts.map +1 -1
- package/package.json +1 -1
- package/repository/configuration/list/configuration-detail.component.d.ts +2 -1
- package/repository/configuration/list/configuration-detail.component.d.ts.map +1 -1
- package/repository/firmware/list/add-firmware-modal.component.d.ts +2 -1
- package/repository/firmware/list/add-firmware-modal.component.d.ts.map +1 -1
- package/repository/software/list/add-software-modal.component.d.ts +2 -1
- package/repository/software/list/add-software-modal.component.d.ts.map +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Component,
|
|
2
|
-
import { DropAreaComponent } from '../drop-area/drop-area.component';
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
3
2
|
import { isEmpty } from 'lodash-es';
|
|
3
|
+
import { DropAreaComponent } from '../drop-area/drop-area.component';
|
|
4
|
+
import { ValidationPattern } from '../forms/validation-pattern';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "@angular/forms";
|
|
6
7
|
import * as i2 from "../forms/form-group.component";
|
|
@@ -28,6 +29,7 @@ export class FilePickerComponent {
|
|
|
28
29
|
this.maxAllowedFiles = Infinity;
|
|
29
30
|
this.uploadChoice = 'uploadBinary';
|
|
30
31
|
this.config = { maxlength: 2048 };
|
|
32
|
+
this.ValidationPattern = ValidationPattern;
|
|
31
33
|
}
|
|
32
34
|
/**
|
|
33
35
|
* @ignore
|
|
@@ -81,11 +83,11 @@ export class FilePickerComponent {
|
|
|
81
83
|
return !isEmpty(this.fileUrlPopover);
|
|
82
84
|
}
|
|
83
85
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: FilePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
84
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: FilePickerComponent, selector: "c8y-file-picker", inputs: { maxAllowedFiles: "maxAllowedFiles", uploadChoice: "uploadChoice", fileUrl: "fileUrl", fileBinary: "fileBinary", config: "config", filePickerIndex: "filePickerIndex", fileUrlPopover: "fileUrlPopover" }, outputs: { onFilesPicked: "onFilesPicked" }, viewQueries: [{ propertyName: "dropArea", first: true, predicate: DropAreaComponent, descendants: true, static: true }], ngImport: i0, template: "<div class=\"form-group\">\n <label title=\"{{ 'Upload a binary' | translate }}\" class=\"c8y-radio radio-inline\">\n <input\n #radio\n type=\"radio\"\n value=\"uploadBinary\"\n name=\"uploadChoice-{{filePickerIndex}}\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearInputFromUrl()\"\n />\n <span></span>\n <span>{{ 'Upload a binary' | translate }}</span>\n </label>\n <label\n title=\"{{ 'Provide a file path' | translate }}\"\n class=\"c8y-radio radio-inline m-l-8\"\n data-cy=\"file-picker--file-path-input\"\n >\n <input\n #radio\n type=\"radio\"\n value=\"uploadUrl\"\n name=\"uploadChoice-{{filePickerIndex}}\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearSelectedFiles()\"\n />\n <span></span>\n <span>\n {{ 'Provide a file path' | translate }}\n </span>\n <button\n class=\"btn-help\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ fileUrlPopover | translate }}\"\n placement=\"top\"\n triggers=\"focus\"\n container=\"body\"\n placement=\"top\"\n *ngIf=\"isPopoverUsed()\"\n ></button>\n </label>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadBinary'\">\n <c8y-form-group class=\"m-0\">\n <c8y-drop-area\n class=\"drop-area-sm\"\n (dropped)=\"onFileDropped($event)\"\n [title]=\"'Drop file or click to browse' | translate\"\n [attr.aria-label]=\"'Drop file or click to browse' | translate\"\n [maxAllowedFiles]=\"maxAllowedFiles\"\n [files]=\"droppedFiles\"\n ></c8y-drop-area>\n </c8y-form-group>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadUrl'\">\n <c8y-form-group class=\"m-0\">\n <div class=\"m-b-4 p-b-8\">\n <div class=\"input-group\">\n <span class=\"input-group-addon\">\n <i c8yIcon=\"globe\"></i>\n </span>\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"fileUrl\"\n data-cy=\"file-picker--fileUrl\"\n [(ngModel)]=\"fileUrl\"\n (ngModelChange)=\"onFileUrlChange($event)\"\n placeholder=\"{{ 'e.g.' | translate }} http://example.com/binary.zip\"\n maxlength=\"{{ config.maxlength }}\"\n required\n />\n </div>\n </div>\n </c8y-form-group>\n</div>\n", dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i3.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.DropAreaComponent, selector: "c8y-drop-area", inputs: ["formControl", "title", "message", "icon", "loadingMessage", "forceHideList", "alwaysShow", "clickToOpen", "loading", "progress", "maxAllowedFiles", "files", "maxFileSizeInMegaBytes", "accept"], outputs: ["dropped"] }, { kind: "directive", type: i6.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i7.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: i8.C8yTranslatePipe, name: "translate" }] }); }
|
|
86
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: FilePickerComponent, selector: "c8y-file-picker", inputs: { maxAllowedFiles: "maxAllowedFiles", uploadChoice: "uploadChoice", fileUrl: "fileUrl", fileBinary: "fileBinary", config: "config", filePickerIndex: "filePickerIndex", fileUrlPopover: "fileUrlPopover" }, outputs: { onFilesPicked: "onFilesPicked" }, viewQueries: [{ propertyName: "dropArea", first: true, predicate: DropAreaComponent, descendants: true, static: true }], ngImport: i0, template: "<div class=\"form-group\">\n <label title=\"{{ 'Upload a binary' | translate }}\" class=\"c8y-radio radio-inline\">\n <input\n #radio\n type=\"radio\"\n value=\"uploadBinary\"\n name=\"uploadChoice-{{filePickerIndex}}\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearInputFromUrl()\"\n />\n <span></span>\n <span>{{ 'Upload a binary' | translate }}</span>\n </label>\n <label\n title=\"{{ 'Provide a file path' | translate }}\"\n class=\"c8y-radio radio-inline m-l-8\"\n data-cy=\"file-picker--file-path-input\"\n >\n <input\n #radio\n type=\"radio\"\n value=\"uploadUrl\"\n name=\"uploadChoice-{{filePickerIndex}}\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearSelectedFiles()\"\n />\n <span></span>\n <span>\n {{ 'Provide a file path' | translate }}\n </span>\n <button\n class=\"btn-help\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ fileUrlPopover | translate }}\"\n placement=\"top\"\n triggers=\"focus\"\n container=\"body\"\n placement=\"top\"\n *ngIf=\"isPopoverUsed()\"\n ></button>\n </label>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadBinary'\">\n <c8y-form-group class=\"m-0\">\n <c8y-drop-area\n class=\"drop-area-sm\"\n (dropped)=\"onFileDropped($event)\"\n [title]=\"'Drop file or click to browse' | translate\"\n [attr.aria-label]=\"'Drop file or click to browse' | translate\"\n [maxAllowedFiles]=\"maxAllowedFiles\"\n [files]=\"droppedFiles\"\n ></c8y-drop-area>\n </c8y-form-group>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadUrl'\">\n <c8y-form-group class=\"m-0\">\n <div class=\"m-b-4 p-b-8\">\n <div class=\"input-group\">\n <span class=\"input-group-addon\">\n <i c8yIcon=\"globe\"></i>\n </span>\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"fileUrl\"\n data-cy=\"file-picker--fileUrl\"\n [(ngModel)]=\"fileUrl\"\n (ngModelChange)=\"onFileUrlChange($event)\"\n placeholder=\"{{ 'e.g.' | translate }} http://example.com/binary.zip\"\n maxlength=\"{{ config.maxlength }}\"\n required\n [pattern]=\"ValidationPattern.rules.noWhiteSpaceOnly.pattern\"\n />\n </div>\n </div>\n </c8y-form-group>\n</div>\n", dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i3.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.DropAreaComponent, selector: "c8y-drop-area", inputs: ["formControl", "title", "message", "icon", "loadingMessage", "forceHideList", "alwaysShow", "clickToOpen", "loading", "progress", "maxAllowedFiles", "files", "maxFileSizeInMegaBytes", "accept"], outputs: ["dropped"] }, { kind: "directive", type: i6.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i7.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: i8.C8yTranslatePipe, name: "translate" }] }); }
|
|
85
87
|
}
|
|
86
88
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: FilePickerComponent, decorators: [{
|
|
87
89
|
type: Component,
|
|
88
|
-
args: [{ selector: 'c8y-file-picker', template: "<div class=\"form-group\">\n <label title=\"{{ 'Upload a binary' | translate }}\" class=\"c8y-radio radio-inline\">\n <input\n #radio\n type=\"radio\"\n value=\"uploadBinary\"\n name=\"uploadChoice-{{filePickerIndex}}\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearInputFromUrl()\"\n />\n <span></span>\n <span>{{ 'Upload a binary' | translate }}</span>\n </label>\n <label\n title=\"{{ 'Provide a file path' | translate }}\"\n class=\"c8y-radio radio-inline m-l-8\"\n data-cy=\"file-picker--file-path-input\"\n >\n <input\n #radio\n type=\"radio\"\n value=\"uploadUrl\"\n name=\"uploadChoice-{{filePickerIndex}}\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearSelectedFiles()\"\n />\n <span></span>\n <span>\n {{ 'Provide a file path' | translate }}\n </span>\n <button\n class=\"btn-help\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ fileUrlPopover | translate }}\"\n placement=\"top\"\n triggers=\"focus\"\n container=\"body\"\n placement=\"top\"\n *ngIf=\"isPopoverUsed()\"\n ></button>\n </label>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadBinary'\">\n <c8y-form-group class=\"m-0\">\n <c8y-drop-area\n class=\"drop-area-sm\"\n (dropped)=\"onFileDropped($event)\"\n [title]=\"'Drop file or click to browse' | translate\"\n [attr.aria-label]=\"'Drop file or click to browse' | translate\"\n [maxAllowedFiles]=\"maxAllowedFiles\"\n [files]=\"droppedFiles\"\n ></c8y-drop-area>\n </c8y-form-group>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadUrl'\">\n <c8y-form-group class=\"m-0\">\n <div class=\"m-b-4 p-b-8\">\n <div class=\"input-group\">\n <span class=\"input-group-addon\">\n <i c8yIcon=\"globe\"></i>\n </span>\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"fileUrl\"\n data-cy=\"file-picker--fileUrl\"\n [(ngModel)]=\"fileUrl\"\n (ngModelChange)=\"onFileUrlChange($event)\"\n placeholder=\"{{ 'e.g.' | translate }} http://example.com/binary.zip\"\n maxlength=\"{{ config.maxlength }}\"\n required\n />\n </div>\n </div>\n </c8y-form-group>\n</div>\n" }]
|
|
90
|
+
args: [{ selector: 'c8y-file-picker', template: "<div class=\"form-group\">\n <label title=\"{{ 'Upload a binary' | translate }}\" class=\"c8y-radio radio-inline\">\n <input\n #radio\n type=\"radio\"\n value=\"uploadBinary\"\n name=\"uploadChoice-{{filePickerIndex}}\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearInputFromUrl()\"\n />\n <span></span>\n <span>{{ 'Upload a binary' | translate }}</span>\n </label>\n <label\n title=\"{{ 'Provide a file path' | translate }}\"\n class=\"c8y-radio radio-inline m-l-8\"\n data-cy=\"file-picker--file-path-input\"\n >\n <input\n #radio\n type=\"radio\"\n value=\"uploadUrl\"\n name=\"uploadChoice-{{filePickerIndex}}\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearSelectedFiles()\"\n />\n <span></span>\n <span>\n {{ 'Provide a file path' | translate }}\n </span>\n <button\n class=\"btn-help\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ fileUrlPopover | translate }}\"\n placement=\"top\"\n triggers=\"focus\"\n container=\"body\"\n placement=\"top\"\n *ngIf=\"isPopoverUsed()\"\n ></button>\n </label>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadBinary'\">\n <c8y-form-group class=\"m-0\">\n <c8y-drop-area\n class=\"drop-area-sm\"\n (dropped)=\"onFileDropped($event)\"\n [title]=\"'Drop file or click to browse' | translate\"\n [attr.aria-label]=\"'Drop file or click to browse' | translate\"\n [maxAllowedFiles]=\"maxAllowedFiles\"\n [files]=\"droppedFiles\"\n ></c8y-drop-area>\n </c8y-form-group>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadUrl'\">\n <c8y-form-group class=\"m-0\">\n <div class=\"m-b-4 p-b-8\">\n <div class=\"input-group\">\n <span class=\"input-group-addon\">\n <i c8yIcon=\"globe\"></i>\n </span>\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"fileUrl\"\n data-cy=\"file-picker--fileUrl\"\n [(ngModel)]=\"fileUrl\"\n (ngModelChange)=\"onFileUrlChange($event)\"\n placeholder=\"{{ 'e.g.' | translate }} http://example.com/binary.zip\"\n maxlength=\"{{ config.maxlength }}\"\n required\n [pattern]=\"ValidationPattern.rules.noWhiteSpaceOnly.pattern\"\n />\n </div>\n </div>\n </c8y-form-group>\n</div>\n" }]
|
|
89
91
|
}], propDecorators: { dropArea: [{
|
|
90
92
|
type: ViewChild,
|
|
91
93
|
args: [DropAreaComponent, { static: true }]
|
|
@@ -106,4 +108,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
106
108
|
}], fileUrlPopover: [{
|
|
107
109
|
type: Input
|
|
108
110
|
}] } });
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9maWxlLXBpY2tlci9maWxlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2ZpbGUtcGlja2VyL2ZpbGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLGlCQUFpQixFQUFlLE1BQU0sa0NBQWtDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7Ozs7QUFJaEU7Ozs7Ozs7Ozs7O0dBV0c7QUFNSCxNQUFNLE9BQU8sbUJBQW1CO0lBSmhDO1FBTVksa0JBQWEsR0FBOEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMvRCxvQkFBZSxHQUFHLFFBQVEsQ0FBQztRQUMzQixpQkFBWSxHQUFpQyxjQUFjLENBQUM7UUFHNUQsV0FBTSxHQUFxQixFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQVV4RCxzQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztLQTREdkM7SUF4REM7O09BRUc7SUFDSCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYSxDQUFDLFlBQTJCO1FBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQ3RCLFlBQVk7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUNoQixHQUFHLEVBQUUsU0FBUztTQUNmLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUNoQixZQUFZLEVBQUUsU0FBUztTQUN4QixDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWUsQ0FBQyxNQUFNO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUc7WUFDaEIsR0FBRyxFQUFFLE1BQU07U0FDWixDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDWCxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN2QyxDQUFDOzhHQTVFVSxtQkFBbUI7a0dBQW5CLG1CQUFtQixrV0FDbkIsaUJBQWlCLDhEQ3pCOUIsODNFQWdGQTs7MkZEeERhLG1CQUFtQjtrQkFKL0IsU0FBUzsrQkFDRSxpQkFBaUI7OEJBSXFCLFFBQVE7c0JBQXZELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNwQyxhQUFhO3NCQUF0QixNQUFNO2dCQUNFLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBSUcsZUFBZTtzQkFBdkIsS0FBSztnQkFJRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IERyb3BBcmVhQ29tcG9uZW50LCBEcm9wcGVkRmlsZSB9IGZyb20gJy4uL2Ryb3AtYXJlYS9kcm9wLWFyZWEuY29tcG9uZW50JztcbmltcG9ydCB7IFZhbGlkYXRpb25QYXR0ZXJuIH0gZnJvbSAnLi4vZm9ybXMvdmFsaWRhdGlvbi1wYXR0ZXJuJztcbmltcG9ydCB7IEZpbGVQaWNrZXJDb25maWcgfSBmcm9tICcuL2ZpbGUtcGlja2VyLWNvbmZpZy5tb2RlbCc7XG5pbXBvcnQgeyBQaWNrZWRGaWxlcyB9IGZyb20gJy4vZmlsZS1waWNrZXIubW9kZWwnO1xuXG4vKipcbiAqIFVzZXIgY2FuIHVwbG9hZCBhIGJpbmFyeSBkaXJlY3RseSBvciB1c2UgYW4gVVJMLlxuICpcbiAqICMjIFVzYWdlXG4gKlxuICogYGBgaHRtbFxuICogPGRpdj5cbiAqIDxjOHktZmlsZS1waWNrZXIgW21heEFsbG93ZWRGaWxlc109XCIxXCIgKG9uRmlsZXNQaWNrZWQpPVwib25GaWxlKCRldmVudClcIj5cbiAqIDwvYzh5LWZpbGUtcGlja2VyPlxuICogPC9kaXY+XG4gKiBgYGBcbiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZmlsZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAVmlld0NoaWxkKERyb3BBcmVhQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBkcm9wQXJlYTogRHJvcEFyZWFDb21wb25lbnQ7XG4gIEBPdXRwdXQoKSBvbkZpbGVzUGlja2VkOiBFdmVudEVtaXR0ZXI8UGlja2VkRmlsZXM+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBtYXhBbGxvd2VkRmlsZXMgPSBJbmZpbml0eTtcbiAgQElucHV0KCkgdXBsb2FkQ2hvaWNlOiAndXBsb2FkQmluYXJ5JyB8ICd1cGxvYWRVcmwnID0gJ3VwbG9hZEJpbmFyeSc7XG4gIEBJbnB1dCgpIGZpbGVVcmw6IHN0cmluZztcbiAgQElucHV0KCkgZmlsZUJpbmFyeTogRHJvcHBlZEZpbGU7XG4gIEBJbnB1dCgpIGNvbmZpZzogRmlsZVBpY2tlckNvbmZpZyA9IHsgbWF4bGVuZ3RoOiAyMDQ4IH07XG4gIC8qKlxuICAgKiBVc2VkIG9ubHkgd2hlbiBkaXNwbGF5aW5nIG11bHRpcGxlIGZpbGUgcGlja2VycyBpbiB0aGUgc2FtZSB2aWV3LlxuICAgKi9cbiAgQElucHV0KCkgZmlsZVBpY2tlckluZGV4OiBudW1iZXI7XG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHN0cmluZyB0byBiZSBkaXNwbGF5ZWQgaW4gYSBwb3BvdmVyLlxuICAgKi9cbiAgQElucHV0KCkgZmlsZVVybFBvcG92ZXI6IHN0cmluZztcblxuICBWYWxpZGF0aW9uUGF0dGVybiA9IFZhbGlkYXRpb25QYXR0ZXJuO1xuICBkcm9wcGVkRmlsZXM6IERyb3BwZWRGaWxlW107XG4gIHByaXZhdGUgZmlsZVRvU2F2ZTogUGlja2VkRmlsZXM7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZpbGVCaW5hcnkpIHtcbiAgICAgIHRoaXMuZHJvcHBlZEZpbGVzID0gW3RoaXMuZmlsZUJpbmFyeV07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJlZCBieSBkcm9wcGVkIGZpbGUgaW4gY29tcG9uZW50IGFuZCBwYXNzIGl0IGludG8gZHJvcC1hcmVhIGNvbXBvbmVudC5cbiAgICovXG4gIG9uRmlsZURyb3BwZWQoZHJvcHBlZEZpbGVzOiBEcm9wcGVkRmlsZVtdKTogdm9pZCB7XG4gICAgdGhpcy5vbkZpbGVzUGlja2VkLmVtaXQoe1xuICAgICAgZHJvcHBlZEZpbGVzXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcmVkIHdoZW4gdXNlciBjaGFuZ2VzIHVwbG9hZCBjaG9pY2UsIGZyb20gdXBsb2FkIHVybCB0byB1cGxvYWQgYmluYXJ5LlxuICAgKi9cbiAgY2xlYXJJbnB1dEZyb21VcmwoKTogdm9pZCB7XG4gICAgZGVsZXRlIHRoaXMuZmlsZVVybDtcbiAgICB0aGlzLmZpbGVUb1NhdmUgPSB7XG4gICAgICB1cmw6IHVuZGVmaW5lZFxuICAgIH07XG4gICAgdGhpcy5vbkZpbGVzUGlja2VkLmVtaXQodGhpcy5maWxlVG9TYXZlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyZWQgd2hlbiB1c2VyIGNoYW5nZXMgdXBsb2FkIGNob2ljZSwgdG8gYXZvaWQgY3VtdWxhdGlvbiBvZiBkcm9wcGVkRmlsZXMuXG4gICAqL1xuICBjbGVhclNlbGVjdGVkRmlsZXMoKTogdm9pZCB7XG4gICAgdGhpcy5kcm9wQXJlYS5vbkRlbGV0ZSgpO1xuICAgIHRoaXMuZmlsZVRvU2F2ZSA9IHtcbiAgICAgIGRyb3BwZWRGaWxlczogdW5kZWZpbmVkXG4gICAgfTtcbiAgICB0aGlzLm9uRmlsZXNQaWNrZWQuZW1pdCh0aGlzLmZpbGVUb1NhdmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJlZCB3aGVuIHVzZXIgcHV0cyBiaW5hcnkncyB1cmwgdG8gdXBsb2FkLlxuICAgKi9cbiAgb25GaWxlVXJsQ2hhbmdlKHVybFN0cik6IHZvaWQge1xuICAgIHRoaXMuZmlsZVRvU2F2ZSA9IHtcbiAgICAgIHVybDogdXJsU3RyXG4gICAgfTtcbiAgICB0aGlzLm9uRmlsZXNQaWNrZWQuZW1pdCh0aGlzLmZpbGVUb1NhdmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGVyZSBpcyBwb3BvdmVyIHRvIGRpc3BsYXkuXG4gICAqL1xuICBpc1BvcG92ZXJVc2VkKCkge1xuICAgIHJldHVybiAhaXNFbXB0eSh0aGlzLmZpbGVVcmxQb3BvdmVyKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgPGxhYmVsIHRpdGxlPVwie3sgJ1VwbG9hZCBhIGJpbmFyeScgfCB0cmFuc2xhdGUgfX1cIiBjbGFzcz1cImM4eS1yYWRpbyByYWRpby1pbmxpbmVcIj5cbiAgICA8aW5wdXRcbiAgICAgICNyYWRpb1xuICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgIHZhbHVlPVwidXBsb2FkQmluYXJ5XCJcbiAgICAgIG5hbWU9XCJ1cGxvYWRDaG9pY2Ute3tmaWxlUGlja2VySW5kZXh9fVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInVwbG9hZENob2ljZVwiXG4gICAgICAoY2xpY2spPVwiY2xlYXJJbnB1dEZyb21VcmwoKVwiXG4gICAgLz5cbiAgICA8c3Bhbj48L3NwYW4+XG4gICAgPHNwYW4+e3sgJ1VwbG9hZCBhIGJpbmFyeScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gIDwvbGFiZWw+XG4gIDxsYWJlbFxuICAgIHRpdGxlPVwie3sgJ1Byb3ZpZGUgYSBmaWxlIHBhdGgnIHwgdHJhbnNsYXRlIH19XCJcbiAgICBjbGFzcz1cImM4eS1yYWRpbyByYWRpby1pbmxpbmUgbS1sLThcIlxuICAgIGRhdGEtY3k9XCJmaWxlLXBpY2tlci0tZmlsZS1wYXRoLWlucHV0XCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgI3JhZGlvXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgdmFsdWU9XCJ1cGxvYWRVcmxcIlxuICAgICAgbmFtZT1cInVwbG9hZENob2ljZS17e2ZpbGVQaWNrZXJJbmRleH19XCJcbiAgICAgIFsobmdNb2RlbCldPVwidXBsb2FkQ2hvaWNlXCJcbiAgICAgIChjbGljayk9XCJjbGVhclNlbGVjdGVkRmlsZXMoKVwiXG4gICAgLz5cbiAgICA8c3Bhbj48L3NwYW4+XG4gICAgPHNwYW4+XG4gICAgICB7eyAnUHJvdmlkZSBhIGZpbGUgcGF0aCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3NwYW4+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4taGVscFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgIHBvcG92ZXI9XCJ7eyBmaWxlVXJsUG9wb3ZlciB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICBwbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgICAqbmdJZj1cImlzUG9wb3ZlclVzZWQoKVwiXG4gICAgPjwvYnV0dG9uPlxuICA8L2xhYmVsPlxuPC9kaXY+XG5cbjxkaXYgW2hpZGRlbl09XCJ1cGxvYWRDaG9pY2UgIT09ICd1cGxvYWRCaW5hcnknXCI+XG4gIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cIm0tMFwiPlxuICAgIDxjOHktZHJvcC1hcmVhXG4gICAgICBjbGFzcz1cImRyb3AtYXJlYS1zbVwiXG4gICAgICAoZHJvcHBlZCk9XCJvbkZpbGVEcm9wcGVkKCRldmVudClcIlxuICAgICAgW3RpdGxlXT1cIidEcm9wIGZpbGUgb3IgY2xpY2sgdG8gYnJvd3NlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidEcm9wIGZpbGUgb3IgY2xpY2sgdG8gYnJvd3NlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbbWF4QWxsb3dlZEZpbGVzXT1cIm1heEFsbG93ZWRGaWxlc1wiXG4gICAgICBbZmlsZXNdPVwiZHJvcHBlZEZpbGVzXCJcbiAgICA+PC9jOHktZHJvcC1hcmVhPlxuICA8L2M4eS1mb3JtLWdyb3VwPlxuPC9kaXY+XG5cbjxkaXYgW2hpZGRlbl09XCJ1cGxvYWRDaG9pY2UgIT09ICd1cGxvYWRVcmwnXCI+XG4gIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cIm0tMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJtLWItNCBwLWItOFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb25cIj5cbiAgICAgICAgICA8aSBjOHlJY29uPVwiZ2xvYmVcIj48L2k+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICBuYW1lPVwiZmlsZVVybFwiXG4gICAgICAgICAgZGF0YS1jeT1cImZpbGUtcGlja2VyLS1maWxlVXJsXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpbGVVcmxcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmlsZVVybENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuJyB8IHRyYW5zbGF0ZSB9fSBodHRwOi8vZXhhbXBsZS5jb20vYmluYXJ5LnppcFwiXG4gICAgICAgICAgbWF4bGVuZ3RoPVwie3sgY29uZmlnLm1heGxlbmd0aCB9fVwiXG4gICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICBbcGF0dGVybl09XCJWYWxpZGF0aW9uUGF0dGVybi5ydWxlcy5ub1doaXRlU3BhY2VPbmx5LnBhdHRlcm5cIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvYzh5LWZvcm0tZ3JvdXA+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -43,6 +43,8 @@ export class ValidationPattern {
|
|
|
43
43
|
user: gettext('Username must not contain spaces nor slashes ("/", "\\") nor ("+"), (":"), ("$") signs.'),
|
|
44
44
|
httpUrl: gettext('Must be a valid HTTP(S) URL.'),
|
|
45
45
|
colonedHexNumber: gettext('Must be a valid hexadecimal number. Must contain only the following characters: 0-9, a-f, A-F, :.'),
|
|
46
|
+
noWhiteSpaceOnly: gettext('This field must not contain only whitespaces'),
|
|
47
|
+
noWhiteSpaceAtBeginning: gettext('Name must not contain white spaces at the beginning or ending.'),
|
|
46
48
|
noDots: gettext('Dots not allowed.'),
|
|
47
49
|
integer: gettext('Invalid type, expected integer.'),
|
|
48
50
|
simpleJsonPath: gettext('Must be a valid JSON path'),
|
|
@@ -87,6 +89,12 @@ export class ValidationPattern {
|
|
|
87
89
|
loginAlias: {
|
|
88
90
|
pattern: /^[^\\/$:+]*$/
|
|
89
91
|
},
|
|
92
|
+
noWhiteSpaceOnly: {
|
|
93
|
+
pattern: /^(?!\s*$).+/
|
|
94
|
+
},
|
|
95
|
+
noWhiteSpaceAtBeginning: {
|
|
96
|
+
pattern: /^[^\s].+[^\s]$/
|
|
97
|
+
},
|
|
90
98
|
noDots: {
|
|
91
99
|
pattern: /^[^.]*$/
|
|
92
100
|
},
|
|
@@ -105,4 +113,4 @@ export class ValidationPattern {
|
|
|
105
113
|
return pattern;
|
|
106
114
|
}
|
|
107
115
|
}
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1wYXR0ZXJuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9mb3Jtcy92YWxpZGF0aW9uLXBhdHRlcm4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0NBQWtDO0FBQ2xDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQVMxQyxNQUFNLENBQU4sSUFBWSxnQ0FXWDtBQVhELFdBQVksZ0NBQWdDO0lBQzFDLDREQUF3QixDQUFBO0lBQ3hCLHVEQUFtQixDQUFBO0lBQ25CLG9FQUFnQyxDQUFBO0lBQ2hDLDJFQUF1QyxDQUFBO0lBQ3ZDLHFGQUFpRCxDQUFBO0lBQ2pELCtFQUEyQyxDQUFBO0lBQzNDLHFGQUFpRCxDQUFBO0lBQ2pELCtFQUEyQyxDQUFBO0lBQzNDLHVFQUFtQyxDQUFBO0lBQ25DLHVFQUFtQyxDQUFBO0FBQ3JDLENBQUMsRUFYVyxnQ0FBZ0MsS0FBaEMsZ0NBQWdDLFFBVzNDO0FBRUQsV0FBVztBQUNYLE1BQU0sT0FBTyxpQkFBaUI7YUFDWixhQUFRLEdBQUc7UUFDekIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxxREFBcUQsQ0FBQztRQUN4RSxNQUFNLEVBQUUsT0FBTyxDQUNiLG1GQUFtRjtZQUNqRixvRkFBb0YsQ0FDdkY7UUFDRCxLQUFLLEVBQUUsT0FBTyxDQUFDLHdCQUF3QixDQUFDO1FBQ3hDLE1BQU0sRUFBRSxPQUFPLENBQUMsMEJBQTBCLENBQUM7UUFDM0Msd0JBQXdCLEVBQUUsT0FBTyxDQUMvQiwwSUFBMEksQ0FDM0k7UUFDRCxVQUFVLEVBQUUsT0FBTyxDQUNqQixpRkFBaUYsQ0FDbEY7UUFDRCxZQUFZLEVBQUUsT0FBTyxDQUFDLHFDQUFxQyxDQUFDO1FBQzVELEdBQUcsRUFBRSxPQUFPLENBQUMsc0JBQXNCLENBQUM7UUFDcEMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQztRQUNwQyxTQUFTLEVBQUUsT0FBTyxDQUFDLGtEQUFr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QUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sT0FBMEIsQ0FBQztJQUNwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGU6IG1heC1saW5lLWxlbmd0aFxuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJy4uL2kxOG4vZ2V0dGV4dCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvblJ1bGVzIHtcbiAgcGF0dGVybj86IFJlZ0V4cDtcbiAgbWVzc2FnZT86IHN0cmluZztcbiAgbWF4TGVuZ3RoPzogbnVtYmVyO1xuICBtaW5MZW5ndGg/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBlbnVtIERhdGFwb2ludExpYnJhcnlWYWxpZGF0aW9uRXJyb3JzIHtcbiAgSVNfUkVRVUlSRUQgPSAncmVxdWlyZWQnLFxuICBQQVRURVJOID0gJ3BhdHRlcm4nLFxuICBTSE9VTERfQ09OVEFJTl9OVU1CRVIgPSAnbnVtYmVyJyxcbiAgU0hPVUxEX0JFX0RFRklORUQgPSAnc2hvdWxkLWJlLWRlZmluZWQnLFxuICBHUkVBVEVSX1RIQU5fU0NBTEVfTUFYID0gJ2dyZWF0ZXItdGhhbi1zY2FsZS1tYXgnLFxuICBMRVNTX1RIQU5fU0NBTEVfTUlOID0gJ2xlc3MtdGhhbi1zY2FsZS1taW4nLFxuICBHUkVBVEVSX1RIQU5fUkFOR0VfTUFYID0gJ2dyZWF0ZXItdGhhbi1yYW5nZS1tYXgnLFxuICBMRVNTX1RIQU5fUkFOR0VfTUlOID0gJ2xlc3MtdGhhbi1yYW5nZS1taW4nLFxuICBNSU5fQUNUSVZFX0NPVU5UID0gJ21pbkFjdGl2ZUNvdW50JyxcbiAgTUFYX0FDVElWRV9DT1VOVCA9ICdtYXhBY3RpdmVDb3VudCdcbn1cblxuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uUGF0dGVybiB7XG4gIHN0YXRpYyByZWFkb25seSBtZXNzYWdlcyA9IHtcbiAgICBkZXZpY2VJZDogZ2V0dGV4dCgnRGV2aWNlIElEIG11c3Qgbm90IGNvbnRhaW4gc3BhY2VzIG9yIHNsYXNoZXMgKFwiL1wiKS4nKSxcbiAgICBkb21haW46IGdldHRleHQoXG4gICAgICAnT25seSBsb3dlcmNhc2UgbGV0dGVycywgZGlnaXRzIGFuZCBoeXBoZW5zIGFsbG93ZWQgaW4gdGhlIGZpcnN0IHBhcnQgb2YgdGhlIFVSSS4gJyArXG4gICAgICAgICdNdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXI7IGh5cGhlbnMgb25seSBhbGxvd2VkIGluIHRoZSBtaWRkbGUuIE11c3QgYmUgYSB2YWxpZCBVUkkuJ1xuICAgICksXG4gICAgZW1haWw6IGdldHRleHQoJ0ludmFsaWQgZW1haWwgYWRkcmVzcy4nKSxcbiAgICBlbWFpbHM6IGdldHRleHQoJ0ludmFsaWQgZW1haWwgYWRkcmVzc2VzLicpLFxuICAgIGludGVybmF0aW9uYWxQaG9uZU51bWJlcjogZ2V0dGV4dChcbiAgICAgICdNdXN0IGJlIGEgdmFsaWQgcGhvbmUgbnVtYmVyIChvbmx5IGRpZ2l0cywgc3BhY2VzLCBzbGFzaGVzIChcIi9cIiksIGRhc2hlcyAoXCItXCIpLCBhbmQgcGx1cyAoXCIrXCIpIGFsbG93ZWQsIGZvciBleGFtcGxlOiArNDkgOSA4NzYgNTQzIDIxMCkuJ1xuICAgICksXG4gICAgbG9naW5BbGlhczogZ2V0dGV4dChcbiAgICAgICdMb2dpbiBhbGlhcyBtdXN0IG5vdCBjb250YWluIHNsYXNoZXMgKFwiL1wiLCBcIlxcXFxcIikgbm9yIChcIitcIiksIChcIjpcIiksIChcIiRcIikgc2lnbnMuJ1xuICAgICksXG4gICAgaW52YWxpZENvbG9yOiBnZXR0ZXh0KCdJbnZhbGlkIGNvbG9yIFwie3sgY3VycmVudFZhbHVlIH19XCIuJyksXG4gICAgbWF4OiBnZXR0ZXh0KCdNYXggdmFsdWU6IHt7IG1heCB9fScpLFxuICAgIG1pbjogZ2V0dGV4dCgnTWluIHZhbHVlOiB7eyBtaW4gfX0nKSxcbiAgICBtaW5MZW5ndGg6IGdldHRleHQoJ1Nob3VsZCBoYXZlIGF0IGxlYXN0IHt7IG1pbkxlbmd0aCB9fSBjaGFyYWN0ZXJzLicpLFxuICAgIG1pbmxlbmd0aDogZ2V0dGV4dCgnU2hvdWxkIGhhdmUgYXQgbGVhc3Qge3sgcmVxdWlyZWRMZW5ndGggfX0gY2hhcmFjdGVycy4nKSxcbiAgICBtYXhMZW5ndGg6IGdldHRleHQoJ1Nob3VsZCBoYXZlIGF0IG1vc3Qge3sgbWF4TGVuZ3RoIH19IGNoYXJhY3RlcnMuJyksXG4gICAgbWF4bGVuZ3RoOiBnZXR0ZXh0KCdTaG91bGQgaGF2ZSBhdCBtb3N0IHt7IHJlcXVpcmVkTGVuZ3RoIH19IGNoYXJhY3RlcnMuJyksXG4gICAgcGF0dGVybjogZ2V0dGV4dCgnRG9lcyBub3QgbWF0Y2ggcGF0dGVybiB7eyByZXF1aXJlZFBhdHRlcm4gfX0uJyksXG4gICAgb3BjdWFCcm93c2VQYXRoOiBnZXR0ZXh0KCdJbnZhbGlkIE9QQyBVQSBVUkkuJyksXG4gICAgcGFzc3dvcmQ6IGdldHRleHQoXG4gICAgICAnUGFzc3dvcmQgbXVzdCBoYXZlIGF0IGxlYXN0IDggY2hhcmFjdGVycyBhbmQgbm8gbW9yZSB0aGFuIDMyIGFuZCBjYW4gb25seSBjb250YWluIGxldHRlcnMsIG51bWJlcnMgYW5kIGZvbGxvd2luZyBzeW1ib2xzOiBgfiFAIyQlXiYqKClffCstPT87OlxcJ1wiLC48Pnt9W11cXFxcLydcbiAgICApLFxuICAgIHBhc3N3b3JkQ29uZmlybTogZ2V0dGV4dCgnUGFzc3dvcmRzIGRvIG5vdCBtYXRjaC4nKSxcbiAgICBwYXNzd29yZFN0cmVuZ3RoOiBnZXR0ZXh0KCdQYXNzd29yZCBpcyBub3Qgc3Ryb25nIGVub3VnaCwgdXNlIGEgc3Ryb25nZXIgcGFzc3dvcmQuJyksXG4gICAgcGFzc3dvcmRTdHJlbmd0aENoZWNrbGlzdDogZ2V0dGV4dChcbiAgICAgICdQYXNzd29yZCBpcyBub3Qgc3Ryb25nIGVub3VnaCwgdXNlIGEgc3Ryb25nZXIgcGFzc3dvcmQuIENoZWNrIHRoZSByZXF1aXJlbWVudHMgbGlzdGVkIG9uIHRoZSByaWdodC4nXG4gICAgKSxcbiAgICByZXF1aXJlZDogZ2V0dGV4dCgnVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4nKSxcbiAgICB0ZW5hbnRJZDogZ2V0dGV4dChcbiAgICAgICdNYXkgY29udGFpbiBsb3dlcmNhc2UgbGV0dGVycywgZGlnaXRzLCBhbmQgaHlwaGVucy4gJyArXG4gICAgICAgICdNdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXI7IGh5cGhlbnMgb25seSBhbGxvd2VkIGluIHRoZSBtaWRkbGU7IG1pbmltdW0gMiBjaGFyYWN0ZXJzLidcbiAgICApLFxuICAgIHVybFNlZ21lbnQ6IGdldHRleHQoJ1NsYXNoLCBzaW5nbGUgb3IgZG91YmxlIGRvdHMgYW5kIHdoaXRlIHNwYWNlIG5vdCBhbGxvd2VkLicpLFxuICAgIHVzZXI6IGdldHRleHQoXG4gICAgICAnVXNlcm5hbWUgbXVzdCBub3QgY29udGFpbiBzcGFjZXMgbm9yIHNsYXNoZXMgKFwiL1wiLCBcIlxcXFxcIikgbm9yIChcIitcIiksIChcIjpcIiksIChcIiRcIikgc2lnbnMuJ1xuICAgICksXG4gICAgaHR0cFVybDogZ2V0dGV4dCgnTXVzdCBiZSBhIHZhbGlkIEhUVFAoUykgVVJMLicpLFxuICAgIGNvbG9uZWRIZXhOdW1iZXI6IGdldHRleHQoXG4gICAgICAnTXVzdCBiZSBhIHZhbGlkIGhleGFkZWNpbWFsIG51bWJlci4gTXVzdCBjb250YWluIG9ubHkgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzOiAwLTksIGEtZiwgQS1GLCA6LidcbiAgICApLFxuICAgIG5vRG90czogZ2V0dGV4dCgnRG90cyBub3QgYWxsb3dlZC4nKSxcbiAgICBpbnRlZ2VyOiBnZXR0ZXh0KCdJbnZhbGlkIHR5cGUsIGV4cGVjdGVkIGludGVnZXIuJyksXG4gICAgc2ltcGxlSnNvblBhdGg6IGdldHRleHQoJ011c3QgYmUgYSB2YWxpZCBKU09OIHBhdGgnKSxcbiAgICBbRGF0YXBvaW50TGlicmFyeVZhbGlkYXRpb25FcnJvcnMuU0hPVUxEX0NPTlRBSU5fTlVNQkVSXTogZ2V0dGV4dChcbiAgICAgICdUaGlzIGZpZWxkIG11c3QgY29udGFpbiBhIG51bWJlci4nXG4gICAgKSxcbiAgICBbRGF0YXBvaW50TGlicmFyeVZhbGlkYXRpb25FcnJvcnMuU0hPVUxEX0JFX0RFRklORURdOiBnZXR0ZXh0KCdWYWx1ZSBtdXN0IGJlIGRlZmluZWQuJyksXG4gICAgW0RhdGFwb2ludExpYnJhcnlWYWxpZGF0aW9uRXJyb3JzLkdSRUFURVJfVEhBTl9TQ0FMRV9NQVhdOiBnZXR0ZXh0KFxuICAgICAgJ1ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIHNjYWxlIG1heGltdW0uJ1xuICAgICksXG4gICAgW0RhdGFwb2ludExpYnJhcnlWYWxpZGF0aW9uRXJyb3JzLkxFU1NfVEhBTl9TQ0FMRV9NSU5dOiBnZXR0ZXh0KFxuICAgICAgJ1ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIHNjYWxlIG1pbmltdW0uJ1xuICAgICksXG4gICAgW0RhdGFwb2ludExpYnJhcnlWYWxpZGF0aW9uRXJyb3JzLkdSRUFURVJfVEhBTl9SQU5HRV9NQVhdOiBnZXR0ZXh0KFxuICAgICAgJ1ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIHJlc3BlY3RpdmUgbWF4aW11bS4nXG4gICAgKSxcbiAgICBbRGF0YXBvaW50TGlicmFyeVZhbGlkYXRpb25FcnJvcnMuTEVTU19USEFOX1JBTkdFX01JTl06IGdldHRleHQoXG4gICAgICAnVmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gcmVzcGVjdGl2ZSBtaW5pbXVtLidcbiAgICApXG4gIH0gYXMgY29uc3Q7XG5cbiAgc3RhdGljIHJlYWRvbmx5IHJ1bGVzID0ge1xuICAgIGRldmljZUlkOiB7XG4gICAgICBwYXR0ZXJuOiAvXlteXFxzL10qJC9cbiAgICB9LFxuICAgIGRvbWFpbjoge1xuICAgICAgcGF0dGVybjogL15bYS16XStbYS16MC05LV0qW2EtejAtOV0rXFwuezF9LiskL1xuICAgIH0sXG4gICAgZ3JvdXBOYW1lOiB7XG4gICAgICBtYXhMZW5ndGg6IDI1NFxuICAgIH0sXG4gICAgaG9zdG5hbWU6IHtcbiAgICAgIHBhdHRlcm46XG4gICAgICAgIC9eKChbYS16QS1aMC05XXxbYS16QS1aMC05XVthLXpBLVowLTktXSpbYS16QS1aMC05XSlcXC4pKihbQS1aYS16MC05XXxbQS1aYS16MC05XVtBLVphLXowLTktXSpbQS1aYS16MC05XSkkL1xuICAgIH0sXG4gICAgaXA6IHtcbiAgICAgIHBhdHRlcm46XG4gICAgICAgIC9eKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/KVxcLil7M30oPzoyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV1bMC05XT8pJC9cbiAgICB9LFxuICAgIG9wY3VhQnJvd3NlUGF0aDoge1xuICAgICAgcGF0dGVybjogL14ob3BjLnRjcHxodHRwfGh0dHBzKTpcXC9cXC9bXiBcIl0rJC9cbiAgICB9LFxuICAgIHBhc3N3b3JkOiB7XG4gICAgICBwYXR0ZXJuOiAvXlthLXpBLVowLTlgfiFAIyQlXiYqKClffCtcXC09Pzs6J1wiLC48Pnt9W1xcXVxcXFwvXXs4LDMyfSQvXG4gICAgfSxcbiAgICB0ZW5hbnRJZDoge1xuICAgICAgcGF0dGVybjogL15bYS16XStbYS16MC05LV0qW2EtejAtOV0rJC9cbiAgICB9LFxuICAgIHVzZXI6IHtcbiAgICAgIHBhdHRlcm46IC9eW15cXFxcL1xccyQ6K10qJC9cbiAgICB9LFxuICAgIHVybFNlZ21lbnQ6IHtcbiAgICAgIHBhdHRlcm46IC9eKChbLl17MSwyfSl8KFsvXSkrfCgoWy9dKikoWy5dezEsMn0pKFsvXSopKXwoKC4qKShbL118WyBdKykoLiopKXwoXFxzKykpJC9cbiAgICB9LFxuICAgIGxvZ2luQWxpYXM6IHtcbiAgICAgIHBhdHRlcm46IC9eW15cXFxcLyQ6K10qJC9cbiAgICB9LFxuICAgIG5vRG90czoge1xuICAgICAgcGF0dGVybjogL15bXi5dKiQvXG4gICAgfSxcbiAgICBodHRwVXJsOiB7XG4gICAgICBwYXR0ZXJuOiAvXihodHRwcz8pOlxcL1xcLy4qJC9cbiAgICB9LFxuICAgIGNvbG9uZWRIZXhOdW1iZXI6IHtcbiAgICAgIHBhdHRlcm46IC9eWzAtOWEtZkEtRjpdKyQvXG4gICAgfSxcbiAgICBpbnRlZ2VyOiB7XG4gICAgICBwYXR0ZXJuOiAvXi0/XFxkKyQvXG4gICAgfVxuICB9O1xuXG4gIHN0YXRpYyBnZXQoa2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBwYXR0ZXJuID0gdGhpcy5ydWxlc1trZXldO1xuICAgIHJldHVybiBwYXR0ZXJuIGFzIFZhbGlkYXRpb25SdWxlcztcbiAgfVxufVxuIl19
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1wYXR0ZXJuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9mb3Jtcy92YWxpZGF0aW9uLXBhdHRlcm4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0NBQWtDO0FBQ2xDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQVMxQyxNQUFNLENBQU4sSUFBWSxnQ0FXWDtBQVhELFdBQVksZ0NBQWdDO0lBQzFDLDREQUF3QixDQUFBO0lBQ3hCLHVEQUFtQixDQUFBO0lBQ25CLG9FQUFnQyxDQUFBO0lBQ2hDLDJFQUF1QyxDQUFBO0lBQ3ZDLHFGQUFpRCxDQUFBO0lBQ2pELCtFQUEyQyxDQUFBO0lBQzNDLHFGQUFpRCxDQUFBO0lBQ2pELCtFQUEyQyxDQUFBO0lBQzNDLHVFQUFtQyxDQUFBO0lBQ25DLHVFQUFtQyxDQUFBO0FBQ3JDLENBQUMsRUFYVyxnQ0FBZ0MsS0FBaEMsZ0NBQWdDLFFBVzNDO0FBRUQsV0FBVztBQUNYLE1BQU0sT0FBTyxpQkFBaUI7YUFDWixhQUFRLEdBQUc7UUFDekIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxxREFBcUQsQ0FBQztRQUN4RSxNQUFNLEVBQUUsT0FBTyxDQUNiLG1GQUFtRjtZQUNqRixvRkFBb0YsQ0FDdkY7UUFDRCxLQUFLLEVBQUUsT0FBTyxDQUFDLHdCQUF3QixDQUFDO1FBQ3hDLE1BQU0sRUFBRSxPQUFPLENBQUMsMEJBQTBCLENBQUM7UUFDM0Msd0JBQXdCLEVBQUUsT0FBTyxDQUMvQiwwSUFBMEksQ0FDM0k7UUFDRCxVQUFVLEVBQUUsT0FBTyxDQUNqQixpRkFBaUYsQ0FDbEY7UUFDRCxZQUFZLEVBQUUsT0FBTyxDQUFDLHFDQUFxQyxDQUFDO1FBQzVELEdBQUcsRUFBRSxPQUFPLENBQUMsc0JBQXNCLENBQUM7UUFDcEMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQztRQUNwQyxTQUFTLEVBQUUsT0FBTyxDQUFDLGtEQUFr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QUFPLEVBQUU7WUFDUCxPQUFPLEVBQUUsbUJBQW1CO1NBQzdCO1FBQ0QsZ0JBQWdCLEVBQUU7WUFDaEIsT0FBTyxFQUFFLGlCQUFpQjtTQUMzQjtRQUNELE9BQU8sRUFBRTtZQUNQLE9BQU8sRUFBRSxTQUFTO1NBQ25CO0tBQ0YsQ0FBQztJQUVGLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBVztRQUNwQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sT0FBMEIsQ0FBQztJQUNwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGU6IG1heC1saW5lLWxlbmd0aFxuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJy4uL2kxOG4vZ2V0dGV4dCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvblJ1bGVzIHtcbiAgcGF0dGVybj86IFJlZ0V4cDtcbiAgbWVzc2FnZT86IHN0cmluZztcbiAgbWF4TGVuZ3RoPzogbnVtYmVyO1xuICBtaW5MZW5ndGg/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBlbnVtIERhdGFwb2ludExpYnJhcnlWYWxpZGF0aW9uRXJyb3JzIHtcbiAgSVNfUkVRVUlSRUQgPSAncmVxdWlyZWQnLFxuICBQQVRURVJOID0gJ3BhdHRlcm4nLFxuICBTSE9VTERfQ09OVEFJTl9OVU1CRVIgPSAnbnVtYmVyJyxcbiAgU0hPVUxEX0JFX0RFRklORUQgPSAnc2hvdWxkLWJlLWRlZmluZWQnLFxuICBHUkVBVEVSX1RIQU5fU0NBTEVfTUFYID0gJ2dyZWF0ZXItdGhhbi1zY2FsZS1tYXgnLFxuICBMRVNTX1RIQU5fU0NBTEVfTUlOID0gJ2xlc3MtdGhhbi1zY2FsZS1taW4nLFxuICBHUkVBVEVSX1RIQU5fUkFOR0VfTUFYID0gJ2dyZWF0ZXItdGhhbi1yYW5nZS1tYXgnLFxuICBMRVNTX1RIQU5fUkFOR0VfTUlOID0gJ2xlc3MtdGhhbi1yYW5nZS1taW4nLFxuICBNSU5fQUNUSVZFX0NPVU5UID0gJ21pbkFjdGl2ZUNvdW50JyxcbiAgTUFYX0FDVElWRV9DT1VOVCA9ICdtYXhBY3RpdmVDb3VudCdcbn1cblxuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uUGF0dGVybiB7XG4gIHN0YXRpYyByZWFkb25seSBtZXNzYWdlcyA9IHtcbiAgICBkZXZpY2VJZDogZ2V0dGV4dCgnRGV2aWNlIElEIG11c3Qgbm90IGNvbnRhaW4gc3BhY2VzIG9yIHNsYXNoZXMgKFwiL1wiKS4nKSxcbiAgICBkb21haW46IGdldHRleHQoXG4gICAgICAnT25seSBsb3dlcmNhc2UgbGV0dGVycywgZGlnaXRzIGFuZCBoeXBoZW5zIGFsbG93ZWQgaW4gdGhlIGZpcnN0IHBhcnQgb2YgdGhlIFVSSS4gJyArXG4gICAgICAgICdNdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXI7IGh5cGhlbnMgb25seSBhbGxvd2VkIGluIHRoZSBtaWRkbGUuIE11c3QgYmUgYSB2YWxpZCBVUkkuJ1xuICAgICksXG4gICAgZW1haWw6IGdldHRleHQoJ0ludmFsaWQgZW1haWwgYWRkcmVzcy4nKSxcbiAgICBlbWFpbHM6IGdldHRleHQoJ0ludmFsaWQgZW1haWwgYWRkcmVzc2VzLicpLFxuICAgIGludGVybmF0aW9uYWxQaG9uZU51bWJlcjogZ2V0dGV4dChcbiAgICAgICdNdXN0IGJlIGEgdmFsaWQgcGhvbmUgbnVtYmVyIChvbmx5IGRpZ2l0cywgc3BhY2VzLCBzbGFzaGVzIChcIi9cIiksIGRhc2hlcyAoXCItXCIpLCBhbmQgcGx1cyAoXCIrXCIpIGFsbG93ZWQsIGZvciBleGFtcGxlOiArNDkgOSA4NzYgNTQzIDIxMCkuJ1xuICAgICksXG4gICAgbG9naW5BbGlhczogZ2V0dGV4dChcbiAgICAgICdMb2dpbiBhbGlhcyBtdXN0IG5vdCBjb250YWluIHNsYXNoZXMgKFwiL1wiLCBcIlxcXFxcIikgbm9yIChcIitcIiksIChcIjpcIiksIChcIiRcIikgc2lnbnMuJ1xuICAgICksXG4gICAgaW52YWxpZENvbG9yOiBnZXR0ZXh0KCdJbnZhbGlkIGNvbG9yIFwie3sgY3VycmVudFZhbHVlIH19XCIuJyksXG4gICAgbWF4OiBnZXR0ZXh0KCdNYXggdmFsdWU6IHt7IG1heCB9fScpLFxuICAgIG1pbjogZ2V0dGV4dCgnTWluIHZhbHVlOiB7eyBtaW4gfX0nKSxcbiAgICBtaW5MZW5ndGg6IGdldHRleHQoJ1Nob3VsZCBoYXZlIGF0IGxlYXN0IHt7IG1pbkxlbmd0aCB9fSBjaGFyYWN0ZXJzLicpLFxuICAgIG1pbmxlbmd0aDogZ2V0dGV4dCgnU2hvdWxkIGhhdmUgYXQgbGVhc3Qge3sgcmVxdWlyZWRMZW5ndGggfX0gY2hhcmFjdGVycy4nKSxcbiAgICBtYXhMZW5ndGg6IGdldHRleHQoJ1Nob3VsZCBoYXZlIGF0IG1vc3Qge3sgbWF4TGVuZ3RoIH19IGNoYXJhY3RlcnMuJyksXG4gICAgbWF4bGVuZ3RoOiBnZXR0ZXh0KCdTaG91bGQgaGF2ZSBhdCBtb3N0IHt7IHJlcXVpcmVkTGVuZ3RoIH19IGNoYXJhY3RlcnMuJyksXG4gICAgcGF0dGVybjogZ2V0dGV4dCgnRG9lcyBub3QgbWF0Y2ggcGF0dGVybiB7eyByZXF1aXJlZFBhdHRlcm4gfX0uJyksXG4gICAgb3BjdWFCcm93c2VQYXRoOiBnZXR0ZXh0KCdJbnZhbGlkIE9QQyBVQSBVUkkuJyksXG4gICAgcGFzc3dvcmQ6IGdldHRleHQoXG4gICAgICAnUGFzc3dvcmQgbXVzdCBoYXZlIGF0IGxlYXN0IDggY2hhcmFjdGVycyBhbmQgbm8gbW9yZSB0aGFuIDMyIGFuZCBjYW4gb25seSBjb250YWluIGxldHRlcnMsIG51bWJlcnMgYW5kIGZvbGxvd2luZyBzeW1ib2xzOiBgfiFAIyQlXiYqKClffCstPT87OlxcJ1wiLC48Pnt9W11cXFxcLydcbiAgICApLFxuICAgIHBhc3N3b3JkQ29uZmlybTogZ2V0dGV4dCgnUGFzc3dvcmRzIGRvIG5vdCBtYXRjaC4nKSxcbiAgICBwYXNzd29yZFN0cmVuZ3RoOiBnZXR0ZXh0KCdQYXNzd29yZCBpcyBub3Qgc3Ryb25nIGVub3VnaCwgdXNlIGEgc3Ryb25nZXIgcGFzc3dvcmQuJyksXG4gICAgcGFzc3dvcmRTdHJlbmd0aENoZWNrbGlzdDogZ2V0dGV4dChcbiAgICAgICdQYXNzd29yZCBpcyBub3Qgc3Ryb25nIGVub3VnaCwgdXNlIGEgc3Ryb25nZXIgcGFzc3dvcmQuIENoZWNrIHRoZSByZXF1aXJlbWVudHMgbGlzdGVkIG9uIHRoZSByaWdodC4nXG4gICAgKSxcbiAgICByZXF1aXJlZDogZ2V0dGV4dCgnVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4nKSxcbiAgICB0ZW5hbnRJZDogZ2V0dGV4dChcbiAgICAgICdNYXkgY29udGFpbiBsb3dlcmNhc2UgbGV0dGVycywgZGlnaXRzLCBhbmQgaHlwaGVucy4gJyArXG4gICAgICAgICdNdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXI7IGh5cGhlbnMgb25seSBhbGxvd2VkIGluIHRoZSBtaWRkbGU7IG1pbmltdW0gMiBjaGFyYWN0ZXJzLidcbiAgICApLFxuICAgIHVybFNlZ21lbnQ6IGdldHRleHQoJ1NsYXNoLCBzaW5nbGUgb3IgZG91YmxlIGRvdHMgYW5kIHdoaXRlIHNwYWNlIG5vdCBhbGxvd2VkLicpLFxuICAgIHVzZXI6IGdldHRleHQoXG4gICAgICAnVXNlcm5hbWUgbXVzdCBub3QgY29udGFpbiBzcGFjZXMgbm9yIHNsYXNoZXMgKFwiL1wiLCBcIlxcXFxcIikgbm9yIChcIitcIiksIChcIjpcIiksIChcIiRcIikgc2lnbnMuJ1xuICAgICksXG4gICAgaHR0cFVybDogZ2V0dGV4dCgnTXVzdCBiZSBhIHZhbGlkIEhUVFAoUykgVVJMLicpLFxuICAgIGNvbG9uZWRIZXhOdW1iZXI6IGdldHRleHQoXG4gICAgICAnTXVzdCBiZSBhIHZhbGlkIGhleGFkZWNpbWFsIG51bWJlci4gTXVzdCBjb250YWluIG9ubHkgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzOiAwLTksIGEtZiwgQS1GLCA6LidcbiAgICApLFxuICAgIG5vV2hpdGVTcGFjZU9ubHk6IGdldHRleHQoJ1RoaXMgZmllbGQgbXVzdCBub3QgY29udGFpbiBvbmx5IHdoaXRlc3BhY2VzJyksXG4gICAgbm9XaGl0ZVNwYWNlQXRCZWdpbm5pbmc6IGdldHRleHQoXG4gICAgICAnTmFtZSBtdXN0IG5vdCBjb250YWluIHdoaXRlIHNwYWNlcyBhdCB0aGUgYmVnaW5uaW5nIG9yIGVuZGluZy4nXG4gICAgKSxcbiAgICBub0RvdHM6IGdldHRleHQoJ0RvdHMgbm90IGFsbG93ZWQuJyksXG4gICAgaW50ZWdlcjogZ2V0dGV4dCgnSW52YWxpZCB0eXBlLCBleHBlY3RlZCBpbnRlZ2VyLicpLFxuICAgIHNpbXBsZUpzb25QYXRoOiBnZXR0ZXh0KCdNdXN0IGJlIGEgdmFsaWQgSlNPTiBwYXRoJyksXG4gICAgW0RhdGFwb2ludExpYnJhcnlWYWxpZGF0aW9uRXJyb3JzLlNIT1VMRF9DT05UQUlOX05VTUJFUl06IGdldHRleHQoXG4gICAgICAnVGhpcyBmaWVsZCBtdXN0IGNvbnRhaW4gYSBudW1iZXIuJ1xuICAgICksXG4gICAgW0RhdGFwb2ludExpYnJhcnlWYWxpZGF0aW9uRXJyb3JzLlNIT1VMRF9CRV9ERUZJTkVEXTogZ2V0dGV4dCgnVmFsdWUgbXVzdCBiZSBkZWZpbmVkLicpLFxuICAgIFtEYXRhcG9pbnRMaWJyYXJ5VmFsaWRhdGlvbkVycm9ycy5HUkVBVEVSX1RIQU5fU0NBTEVfTUFYXTogZ2V0dGV4dChcbiAgICAgICdWYWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBzY2FsZSBtYXhpbXVtLidcbiAgICApLFxuICAgIFtEYXRhcG9pbnRMaWJyYXJ5VmFsaWRhdGlvbkVycm9ycy5MRVNTX1RIQU5fU0NBTEVfTUlOXTogZ2V0dGV4dChcbiAgICAgICdWYWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBzY2FsZSBtaW5pbXVtLidcbiAgICApLFxuICAgIFtEYXRhcG9pbnRMaWJyYXJ5VmFsaWRhdGlvbkVycm9ycy5HUkVBVEVSX1RIQU5fUkFOR0VfTUFYXTogZ2V0dGV4dChcbiAgICAgICdWYWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiByZXNwZWN0aXZlIG1heGltdW0uJ1xuICAgICksXG4gICAgW0RhdGFwb2ludExpYnJhcnlWYWxpZGF0aW9uRXJyb3JzLkxFU1NfVEhBTl9SQU5HRV9NSU5dOiBnZXR0ZXh0KFxuICAgICAgJ1ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIHJlc3BlY3RpdmUgbWluaW11bS4nXG4gICAgKVxuICB9IGFzIGNvbnN0O1xuXG4gIHN0YXRpYyByZWFkb25seSBydWxlcyA9IHtcbiAgICBkZXZpY2VJZDoge1xuICAgICAgcGF0dGVybjogL15bXlxccy9dKiQvXG4gICAgfSxcbiAgICBkb21haW46IHtcbiAgICAgIHBhdHRlcm46IC9eW2Etel0rW2EtejAtOS1dKlthLXowLTldK1xcLnsxfS4rJC9cbiAgICB9LFxuICAgIGdyb3VwTmFtZToge1xuICAgICAgbWF4TGVuZ3RoOiAyNTRcbiAgICB9LFxuICAgIGhvc3RuYW1lOiB7XG4gICAgICBwYXR0ZXJuOlxuICAgICAgICAvXigoW2EtekEtWjAtOV18W2EtekEtWjAtOV1bYS16QS1aMC05LV0qW2EtekEtWjAtOV0pXFwuKSooW0EtWmEtejAtOV18W0EtWmEtejAtOV1bQS1aYS16MC05LV0qW0EtWmEtejAtOV0pJC9cbiAgICB9LFxuICAgIGlwOiB7XG4gICAgICBwYXR0ZXJuOlxuICAgICAgICAvXig/Oig/OjI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPylcXC4pezN9KD86MjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/KSQvXG4gICAgfSxcbiAgICBvcGN1YUJyb3dzZVBhdGg6IHtcbiAgICAgIHBhdHRlcm46IC9eKG9wYy50Y3B8aHR0cHxodHRwcyk6XFwvXFwvW14gXCJdKyQvXG4gICAgfSxcbiAgICBwYXNzd29yZDoge1xuICAgICAgcGF0dGVybjogL15bYS16QS1aMC05YH4hQCMkJV4mKigpX3wrXFwtPT87OidcIiwuPD57fVtcXF1cXFxcL117OCwzMn0kL1xuICAgIH0sXG4gICAgdGVuYW50SWQ6IHtcbiAgICAgIHBhdHRlcm46IC9eW2Etel0rW2EtejAtOS1dKlthLXowLTldKyQvXG4gICAgfSxcbiAgICB1c2VyOiB7XG4gICAgICBwYXR0ZXJuOiAvXlteXFxcXC9cXHMkOitdKiQvXG4gICAgfSxcbiAgICB1cmxTZWdtZW50OiB7XG4gICAgICBwYXR0ZXJuOiAvXigoWy5dezEsMn0pfChbL10pK3woKFsvXSopKFsuXXsxLDJ9KShbL10qKSl8KCguKikoWy9dfFsgXSspKC4qKSl8KFxccyspKSQvXG4gICAgfSxcbiAgICBsb2dpbkFsaWFzOiB7XG4gICAgICBwYXR0ZXJuOiAvXlteXFxcXC8kOitdKiQvXG4gICAgfSxcbiAgICBub1doaXRlU3BhY2VPbmx5OiB7XG4gICAgICBwYXR0ZXJuOiAvXig/IVxccyokKS4rL1xuICAgIH0sXG4gICAgbm9XaGl0ZVNwYWNlQXRCZWdpbm5pbmc6IHtcbiAgICAgIHBhdHRlcm46IC9eW15cXHNdLitbXlxcc10kL1xuICAgIH0sXG4gICAgbm9Eb3RzOiB7XG4gICAgICBwYXR0ZXJuOiAvXlteLl0qJC9cbiAgICB9LFxuICAgIGh0dHBVcmw6IHtcbiAgICAgIHBhdHRlcm46IC9eKGh0dHBzPyk6XFwvXFwvLiokL1xuICAgIH0sXG4gICAgY29sb25lZEhleE51bWJlcjoge1xuICAgICAgcGF0dGVybjogL15bMC05YS1mQS1GOl0rJC9cbiAgICB9LFxuICAgIGludGVnZXI6IHtcbiAgICAgIHBhdHRlcm46IC9eLT9cXGQrJC9cbiAgICB9XG4gIH07XG5cbiAgc3RhdGljIGdldChrZXk6IHN0cmluZykge1xuICAgIGNvbnN0IHBhdHRlcm4gPSB0aGlzLnJ1bGVzW2tleV07XG4gICAgcmV0dXJuIHBhdHRlcm4gYXMgVmFsaWRhdGlvblJ1bGVzO1xuICB9XG59XG4iXX0=
|
|
@@ -11,12 +11,12 @@ export class NavigatorBottomComponent {
|
|
|
11
11
|
this.hasHidePoweredSet$ = this.bottomService.hasHidePoweredSet();
|
|
12
12
|
}
|
|
13
13
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NavigatorBottomComponent, deps: [{ token: i1.NavigatorBottomService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
14
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: NavigatorBottomComponent, isStandalone: true, selector: "c8y-navigator-bottom", host: { classAttribute: "navigator-slot-bottom" }, ngImport: i0, template: "<div\n class=\"d-flex gap-8 {{!(hasCustomNavigatorLogoSet$ | async) ? 'c8y-logo' : ''}}\"\n *ngIf=\"!(hasCustomNavigatorLogoSet$ | async); else branded\"\n>\n <p\n *ngIf=\"!(hasHidePoweredSet$ | async)\"\n class=\"powered-by text-left a-s-end\"\n translate\n >\n powered by
|
|
14
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: NavigatorBottomComponent, isStandalone: true, selector: "c8y-navigator-bottom", host: { classAttribute: "navigator-slot-bottom" }, ngImport: i0, template: "<div\n class=\"d-flex gap-8 {{!(hasCustomNavigatorLogoSet$ | async) ? 'c8y-logo' : ''}}\"\n *ngIf=\"!(hasCustomNavigatorLogoSet$ | async); else branded\"\n>\n <p\n *ngIf=\"!(hasHidePoweredSet$ | async)\"\n class=\"powered-by text-left a-s-end\"\n translate\n >\n powered by`KEEP_ORIGINAL`\n </p>\n <a href=\"https://cumulocity.com\" target=\"_blank\" title=\"Cumulocity\" class=\"tenant-brand\"></a>\n</div>\n<ng-template #branded>\n <div class=\"logo-spacer\"></div>\n <div class=\"tenant-brand\"></div>\n <p\n class=\"powered-by text-center a-s-center\"\n *ngIf=\"!(hasHidePoweredSet$ | async)\"\n translate\n >\n powered by <a href=\"https://cumulocity.com\" target=\"_blank\">Cumulocity</a>`KEEP_ORIGINAL`\n </p>\n <div class=\"logo-spacer\"></div>\n</ng-template>\n", dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }] }); }
|
|
15
15
|
}
|
|
16
16
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NavigatorBottomComponent, decorators: [{
|
|
17
17
|
type: Component,
|
|
18
18
|
args: [{ selector: 'c8y-navigator-bottom', host: {
|
|
19
19
|
class: 'navigator-slot-bottom'
|
|
20
|
-
}, standalone: true, imports: [AsyncPipe, NgIf, C8yTranslateDirective], template: "<div\n class=\"d-flex gap-8 {{!(hasCustomNavigatorLogoSet$ | async) ? 'c8y-logo' : ''}}\"\n *ngIf=\"!(hasCustomNavigatorLogoSet$ | async); else branded\"\n>\n <p\n *ngIf=\"!(hasHidePoweredSet$ | async)\"\n class=\"powered-by text-left a-s-end\"\n translate\n >\n powered by
|
|
20
|
+
}, standalone: true, imports: [AsyncPipe, NgIf, C8yTranslateDirective], template: "<div\n class=\"d-flex gap-8 {{!(hasCustomNavigatorLogoSet$ | async) ? 'c8y-logo' : ''}}\"\n *ngIf=\"!(hasCustomNavigatorLogoSet$ | async); else branded\"\n>\n <p\n *ngIf=\"!(hasHidePoweredSet$ | async)\"\n class=\"powered-by text-left a-s-end\"\n translate\n >\n powered by`KEEP_ORIGINAL`\n </p>\n <a href=\"https://cumulocity.com\" target=\"_blank\" title=\"Cumulocity\" class=\"tenant-brand\"></a>\n</div>\n<ng-template #branded>\n <div class=\"logo-spacer\"></div>\n <div class=\"tenant-brand\"></div>\n <p\n class=\"powered-by text-center a-s-center\"\n *ngIf=\"!(hasHidePoweredSet$ | async)\"\n translate\n >\n powered by <a href=\"https://cumulocity.com\" target=\"_blank\">Cumulocity</a>`KEEP_ORIGINAL`\n </p>\n <div class=\"logo-spacer\"></div>\n</ng-template>\n" }]
|
|
21
21
|
}], ctorParameters: () => [{ type: i1.NavigatorBottomService }] });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLWJvdHRvbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9jb3JlL25hdmlnYXRvci9uYXZpZ2F0b3ItYm90dG9tL25hdmlnYXRvci1ib3R0b20uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vY29yZS9uYXZpZ2F0b3IvbmF2aWdhdG9yLWJvdHRvbS9uYXZpZ2F0b3ItYm90dG9tLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxZQUFZLENBQUM7OztBQVduRCxNQUFNLE9BQU8sd0JBQXdCO0lBSW5DLFlBQW9CLGFBQXFDO1FBQXJDLGtCQUFhLEdBQWIsYUFBYSxDQUF3QjtRQUh6RCwrQkFBMEIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDNUUsdUJBQWtCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBRUEsQ0FBQzs4R0FKbEQsd0JBQXdCO2tHQUF4Qix3QkFBd0IsbUlDZHJDLHd5QkF5QkEsdUNEYlksU0FBUyw4Q0FBRSxJQUFJLDZGQUFFLHFCQUFxQjs7MkZBRXJDLHdCQUF3QjtrQkFUcEMsU0FBUzsrQkFDRSxzQkFBc0IsUUFFMUI7d0JBQ0osS0FBSyxFQUFFLHVCQUF1QjtxQkFDL0IsY0FDVyxJQUFJLFdBQ1AsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0b3JCb3R0b21TZXJ2aWNlIH0gZnJvbSAnLi9uYXZpZ2F0b3ItYm90dG9tLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEM4eVRyYW5zbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2kxOG4nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktbmF2aWdhdG9yLWJvdHRvbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9uYXZpZ2F0b3ItYm90dG9tLmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnbmF2aWdhdG9yLXNsb3QtYm90dG9tJ1xuICB9LFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQXN5bmNQaXBlLCBOZ0lmLCBDOHlUcmFuc2xhdGVEaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIE5hdmlnYXRvckJvdHRvbUNvbXBvbmVudCB7XG4gIGhhc0N1c3RvbU5hdmlnYXRvckxvZ29TZXQkID0gdGhpcy5ib3R0b21TZXJ2aWNlLmhhc0N1c3RvbU5hdmlnYXRvckxvZ29TZXQoKTtcbiAgaGFzSGlkZVBvd2VyZWRTZXQkID0gdGhpcy5ib3R0b21TZXJ2aWNlLmhhc0hpZGVQb3dlcmVkU2V0KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBib3R0b21TZXJ2aWNlOiBOYXZpZ2F0b3JCb3R0b21TZXJ2aWNlKSB7fVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImQtZmxleCBnYXAtOCB7eyEoaGFzQ3VzdG9tTmF2aWdhdG9yTG9nb1NldCQgfCBhc3luYykgPyAnYzh5LWxvZ28nIDogJyd9fVwiXG4gICpuZ0lmPVwiIShoYXNDdXN0b21OYXZpZ2F0b3JMb2dvU2V0JCB8IGFzeW5jKTsgZWxzZSBicmFuZGVkXCJcbj5cbiAgPHBcbiAgICAqbmdJZj1cIiEoaGFzSGlkZVBvd2VyZWRTZXQkIHwgYXN5bmMpXCJcbiAgICBjbGFzcz1cInBvd2VyZWQtYnkgdGV4dC1sZWZ0IGEtcy1lbmRcIlxuICAgIHRyYW5zbGF0ZVxuICA+XG4gICAgcG93ZXJlZCBieWBLRUVQX09SSUdJTkFMYFxuICA8L3A+XG4gIDxhIGhyZWY9XCJodHRwczovL2N1bXVsb2NpdHkuY29tXCIgdGFyZ2V0PVwiX2JsYW5rXCIgdGl0bGU9XCJDdW11bG9jaXR5XCIgY2xhc3M9XCJ0ZW5hbnQtYnJhbmRcIj48L2E+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjYnJhbmRlZD5cbiAgPGRpdiBjbGFzcz1cImxvZ28tc3BhY2VyXCI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ0ZW5hbnQtYnJhbmRcIj48L2Rpdj5cbiAgPHBcbiAgICBjbGFzcz1cInBvd2VyZWQtYnkgdGV4dC1jZW50ZXIgYS1zLWNlbnRlclwiXG4gICAgKm5nSWY9XCIhKGhhc0hpZGVQb3dlcmVkU2V0JCB8IGFzeW5jKVwiXG4gICAgdHJhbnNsYXRlXG4gID5cbiAgICBwb3dlcmVkIGJ5IDxhIGhyZWY9XCJodHRwczovL2N1bXVsb2NpdHkuY29tXCIgdGFyZ2V0PVwiX2JsYW5rXCI+Q3VtdWxvY2l0eTwvYT5gS0VFUF9PUklHSU5BTGBcbiAgPC9wPlxuICA8ZGl2IGNsYXNzPVwibG9nby1zcGFjZXJcIj48L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -31,29 +31,37 @@ export class OperationsListItemComponent {
|
|
|
31
31
|
this.route.snapshot.firstChild?.data.contextData?.id;
|
|
32
32
|
}
|
|
33
33
|
ngOnInit() {
|
|
34
|
-
this.
|
|
35
|
-
this.operation.c8y_Command?.text ||
|
|
36
|
-
this.operation.description ||
|
|
37
|
-
gettext('No command text or description available');
|
|
34
|
+
this.updateOperationTitle();
|
|
38
35
|
const smartRulesCreatePermissions = this.operationsListService.getSmartRulesCreatePermissions();
|
|
39
36
|
if (smartRulesCreatePermissions) {
|
|
40
37
|
this.inventoryPermissions = smartRulesCreatePermissions[0].anyRole;
|
|
41
38
|
this.smartRuleAdminPermissions = smartRulesCreatePermissions[1].anyRole;
|
|
42
39
|
}
|
|
43
40
|
}
|
|
41
|
+
ngOnChanges(changes) {
|
|
42
|
+
if (changes.operation && changes.operation.currentValue) {
|
|
43
|
+
this.updateOperationTitle();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
44
46
|
createCustomizedBulkOperation($event) {
|
|
45
47
|
if ($event) {
|
|
46
48
|
$event.stopPropagation();
|
|
47
49
|
}
|
|
48
50
|
this.router.navigateByUrl(`/devicecontrol/single/create-bulk/${this.operation.id}`);
|
|
49
51
|
}
|
|
52
|
+
updateOperationTitle() {
|
|
53
|
+
this.operationTitle =
|
|
54
|
+
this.operation?.c8y_Command?.text ||
|
|
55
|
+
this.operation?.description ||
|
|
56
|
+
gettext('No command text or description available');
|
|
57
|
+
}
|
|
50
58
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: OperationsListItemComponent, deps: [{ token: i1.BulkOperationListItemService }, { token: i2.OperationsService }, { token: i3.OperationsListService }, { token: i4.ActivatedRoute }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
51
59
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: OperationsListItemComponent, selector: "c8y-operations-list-item", inputs: { operation: "operation", collapsed: "collapsed", readOnly: "readOnly", noExpandToggle: "noExpandToggle", isSmartRulesMicroserviceAvailable: "isSmartRulesMicroserviceAvailable" }, providers: [
|
|
52
60
|
{
|
|
53
61
|
provide: PRODUCT_EXPERIENCE_EVENT_SOURCE,
|
|
54
62
|
useExisting: forwardRef(() => OperationsListItemComponent)
|
|
55
63
|
}
|
|
56
|
-
], viewQueries: [{ propertyName: "listItem", first: true, predicate: ["listItem"], descendants: true, static: true }], ngImport: i0, template: "<c8y-li\n class=\"c8y-list__item--double-actions\"\n [ngClass]=\"{ 'c8y-list__item--no-expand': noExpandToggle }\"\n [collapsed]=\"collapsed\"\n #listItem\n id=\"{{ operation.id }}\"\n>\n <c8y-li-icon>\n <button\n class=\"btn-clean\"\n type=\"button\"\n [attr.aria-label]=\"OPERATION_STATUS_OPTIONS_MAP[operation.status].label | translate\"\n [tooltip]=\"OPERATION_STATUS_OPTIONS_MAP[operation.status].label | translate\"\n placement=\"right\"\n container=\"body\"\n [delay]=\"500\"\n >\n <i\n [c8yIcon]=\"OPERATION_STATUS_OPTIONS_MAP[operation.status].icon\"\n [ngClass]=\"OPERATION_STATUS_OPTIONS_MAP[operation.status].styleClass\"\n ></i>\n </button>\n </c8y-li-icon>\n <div [ngClass]=\"{ 'content-flex-58': !readOnly, 'content-flex-50': readOnly }\">\n <div class=\"col-5\">\n <span title=\"{{ operationTitle | translate }}\" class=\"text-truncate\">\n {{ operationTitle | translate }}\n </span>\n </div>\n <div class=\"col-3\" *ngIf=\"!deviceId\">\n <a\n title=\"{{ operation.deviceName }}\"\n [routerLink]=\"['/device', operation.deviceId, 'device-info']\"\n routerLinkActive=\"active\"\n class=\"text-truncate\"\n >\n {{ operation.deviceName }}\n </a>\n </div>\n <div class=\"col-3\">\n <small class=\"icon-flex text-muted\">\n <i c8yIcon=\"calendar\" class=\"m-r-4\"></i>\n {{ operation.creationTime | c8yDate }}\n </small>\n </div>\n </div>\n <ng-container *ngIf=\"!readOnly\">\n <c8y-li-action\n label=\"{{ 'Schedule as bulk operation' | translate }}\"\n (click)=\"createCustomizedBulkOperation($event)\"\n icon=\"c8y-icon c8y-icon-energy\"\n c8yProductExperience\n inherit\n ></c8y-li-action>\n <ng-container *c8yIfAllowed=\"inventoryPermissions; allowAny: true\">\n <ng-container *c8yIfAllowed=\"smartRuleAdminPermissions; allowAny: true\">\n <c8y-li-action\n *ngIf=\"isSmartRulesMicroserviceAvailable\"\n label=\"{{ 'Create smart rule' | translate }}\"\n (click)=\"operationsListService.createSmartRule(operation)\"\n icon=\"sliders\"\n c8yProductExperience\n inherit\n ></c8y-li-action>\n </ng-container>\n </ng-container>\n <c8y-li-action\n *ngIf=\"operation.status === OPERATION_STATUS.PENDING\"\n label=\"{{ 'Cancel operation' | translate }}\"\n (click)=\"$event.stopPropagation(); sharedService.cancel(operation)\"\n icon=\"times-circle\"\n c8yProductExperience\n inherit\n ></c8y-li-action>\n </ng-container>\n <c8y-li-collapse class=\"m-b-16\">\n <c8y-operation-details-tabs\n *ngIf=\"!listItem.collapsed\"\n [operation]=\"operation\"\n [bulkOperationModalDetailsService]=\"bulkOperationListItemService\"\n ></c8y-operation-details-tabs>\n </c8y-li-collapse>\n</c8y-li>\n", dependencies: [{ kind: "directive", type: i5.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.IfAllowedDirective, selector: "[c8yIfAllowed]", inputs: ["c8yIfAllowed", "c8yIfAllowedAllowAny"] }, { kind: "component", type: i5.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i5.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i5.ListItemActionComponent, selector: "c8y-list-item-action, c8y-li-action", inputs: ["label", "icon", "disabled"], outputs: ["click"] }, { kind: "component", type: i5.ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "directive", type: i5.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "component", type: i7.OperationDetailsTabsComponent, selector: "c8y-operation-details-tabs", inputs: ["operation", "readOnly", "bulkOperationModalDetailsService"], outputs: ["onRetryFailedOperations", "showFailedOperation"] }, { kind: "directive", type: i8.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "pipe", type: i5.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.DatePipe, name: "c8yDate" }] }); }
|
|
64
|
+
], viewQueries: [{ propertyName: "listItem", first: true, predicate: ["listItem"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<c8y-li\n class=\"c8y-list__item--double-actions\"\n [ngClass]=\"{ 'c8y-list__item--no-expand': noExpandToggle }\"\n [collapsed]=\"collapsed\"\n #listItem\n id=\"{{ operation.id }}\"\n>\n <c8y-li-icon>\n <button\n class=\"btn-clean\"\n type=\"button\"\n [attr.aria-label]=\"OPERATION_STATUS_OPTIONS_MAP[operation.status].label | translate\"\n [tooltip]=\"OPERATION_STATUS_OPTIONS_MAP[operation.status].label | translate\"\n placement=\"right\"\n container=\"body\"\n [delay]=\"500\"\n >\n <i\n [c8yIcon]=\"OPERATION_STATUS_OPTIONS_MAP[operation.status].icon\"\n [ngClass]=\"OPERATION_STATUS_OPTIONS_MAP[operation.status].styleClass\"\n ></i>\n </button>\n </c8y-li-icon>\n <div [ngClass]=\"{ 'content-flex-58': !readOnly, 'content-flex-50': readOnly }\">\n <div class=\"col-5\">\n <span title=\"{{ operationTitle | translate }}\" class=\"text-truncate\">\n {{ operationTitle | translate }}\n </span>\n </div>\n <div class=\"col-3\" *ngIf=\"!deviceId\">\n <a\n title=\"{{ operation.deviceName }}\"\n [routerLink]=\"['/device', operation.deviceId, 'device-info']\"\n routerLinkActive=\"active\"\n class=\"text-truncate\"\n >\n {{ operation.deviceName }}\n </a>\n </div>\n <div class=\"col-3\">\n <small class=\"icon-flex text-muted\">\n <i c8yIcon=\"calendar\" class=\"m-r-4\"></i>\n {{ operation.creationTime | c8yDate }}\n </small>\n </div>\n </div>\n <ng-container *ngIf=\"!readOnly\">\n <c8y-li-action\n label=\"{{ 'Schedule as bulk operation' | translate }}\"\n (click)=\"createCustomizedBulkOperation($event)\"\n icon=\"c8y-icon c8y-icon-energy\"\n c8yProductExperience\n inherit\n ></c8y-li-action>\n <ng-container *c8yIfAllowed=\"inventoryPermissions; allowAny: true\">\n <ng-container *c8yIfAllowed=\"smartRuleAdminPermissions; allowAny: true\">\n <c8y-li-action\n *ngIf=\"isSmartRulesMicroserviceAvailable\"\n label=\"{{ 'Create smart rule' | translate }}\"\n (click)=\"operationsListService.createSmartRule(operation)\"\n icon=\"sliders\"\n c8yProductExperience\n inherit\n ></c8y-li-action>\n </ng-container>\n </ng-container>\n <c8y-li-action\n *ngIf=\"operation.status === OPERATION_STATUS.PENDING\"\n label=\"{{ 'Cancel operation' | translate }}\"\n (click)=\"$event.stopPropagation(); sharedService.cancel(operation)\"\n icon=\"times-circle\"\n c8yProductExperience\n inherit\n ></c8y-li-action>\n </ng-container>\n <c8y-li-collapse class=\"m-b-16\">\n <c8y-operation-details-tabs\n *ngIf=\"!listItem.collapsed\"\n [operation]=\"operation\"\n [bulkOperationModalDetailsService]=\"bulkOperationListItemService\"\n ></c8y-operation-details-tabs>\n </c8y-li-collapse>\n</c8y-li>\n", dependencies: [{ kind: "directive", type: i5.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.IfAllowedDirective, selector: "[c8yIfAllowed]", inputs: ["c8yIfAllowed", "c8yIfAllowedAllowAny"] }, { kind: "component", type: i5.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i5.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i5.ListItemActionComponent, selector: "c8y-list-item-action, c8y-li-action", inputs: ["label", "icon", "disabled"], outputs: ["click"] }, { kind: "component", type: i5.ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "directive", type: i5.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "component", type: i7.OperationDetailsTabsComponent, selector: "c8y-operation-details-tabs", inputs: ["operation", "readOnly", "bulkOperationModalDetailsService"], outputs: ["onRetryFailedOperations", "showFailedOperation"] }, { kind: "directive", type: i8.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "pipe", type: i5.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.DatePipe, name: "c8yDate" }] }); }
|
|
57
65
|
}
|
|
58
66
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: OperationsListItemComponent, decorators: [{
|
|
59
67
|
type: Component,
|
|
@@ -77,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
77
85
|
type: ViewChild,
|
|
78
86
|
args: ['listItem', { static: true }]
|
|
79
87
|
}] } });
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9ucy1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vb3BlcmF0aW9ucy9vcGVyYXRpb25zLWxpc3Qvb3BlcmF0aW9ucy1saXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vb3BlcmF0aW9ucy9vcGVyYXRpb25zLWxpc3Qvb3BlcmF0aW9ucy1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBYyxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUQsT0FBTyxFQUNMLE9BQU8sRUFDUCxpQkFBaUIsRUFHakIsK0JBQStCLEVBQ2hDLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDdkcsT0FBTyxFQUNMLGlCQUFpQixFQUVqQiw0QkFBNEIsRUFDN0IsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7OztBQVlsRSxNQUFNLE9BQU8sMkJBQTJCO0lBdUJ0QyxZQUNTLDRCQUEwRCxFQUMxRCxhQUFnQyxFQUNoQyxxQkFBNEMsRUFDM0MsS0FBcUIsRUFDckIsTUFBYztRQUpmLGlDQUE0QixHQUE1Qiw0QkFBNEIsQ0FBOEI7UUFDMUQsa0JBQWEsR0FBYixhQUFhLENBQW1CO1FBQ2hDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDM0MsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXhCeEIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUVqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBSXZCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLHFCQUFnQixHQUFHLGVBQWUsQ0FBQztRQUNuQyxpQ0FBNEIsR0FBb0MsNEJBQTRCLENBQUM7UUFDN0YsYUFBUSxHQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO0lBWXBELENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWM7WUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsSUFBSTtnQkFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXO2dCQUMxQixPQUFPLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUV0RCxNQUFNLDJCQUEyQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1FBQ2hHLElBQUksMkJBQTJCLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ25FLElBQUksQ0FBQyx5QkFBeUIsR0FBRywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDMUUsQ0FBQztJQUNILENBQUM7SUFFRCw2QkFBNkIsQ0FBQyxNQUFjO1FBQzFDLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDM0IsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLHFDQUFxQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEYsQ0FBQzs4R0FsRFUsMkJBQTJCO2tHQUEzQiwyQkFBMkIsK09BUDNCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLCtCQUErQjtnQkFDeEMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQzthQUMzRDtTQUNGLDhJQzFCSCwyNEZBbUZBOzsyRkR2RGEsMkJBQTJCO2tCQVZ2QyxTQUFTOytCQUNFLDBCQUEwQixhQUV6Qjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsK0JBQStCOzRCQUN4QyxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSw0QkFBNEIsQ0FBQzt5QkFDM0Q7cUJBQ0Y7dU5BSUQsU0FBUztzQkFEUixLQUFLO2dCQUdOLFNBQVM7c0JBRFIsS0FBSztnQkFHTixRQUFRO3NCQURQLEtBQUs7Z0JBR04sY0FBYztzQkFEYixLQUFLO2dCQUdOLGlDQUFpQztzQkFEaEMsS0FBSztnQkFFbUMsUUFBUTtzQkFBaEQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSU9wZXJhdGlvbiwgT3BlcmF0aW9uU3RhdHVzIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgZ2V0dGV4dCxcbiAgTGlzdEl0ZW1Db21wb25lbnQsXG4gIFByb2R1Y3RFeHBlcmllbmNlRXZlbnQsXG4gIFByb2R1Y3RFeHBlcmllbmNlRXZlbnRTb3VyY2UsXG4gIFBST0RVQ1RfRVhQRVJJRU5DRV9FVkVOVF9TT1VSQ0Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCdWxrT3BlcmF0aW9uTGlzdEl0ZW1TZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9vcGVyYXRpb25zL2J1bGstb3BlcmF0aW9uLWxpc3QtaXRlbSc7XG5pbXBvcnQge1xuICBPcGVyYXRpb25zU2VydmljZSxcbiAgT3BlcmF0aW9uU3RhdHVzT3B0aW9uc01hcFNoYXJlZCxcbiAgT1BFUkFUSU9OX1NUQVRVU19PUFRJT05TX01BUFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL29wZXJhdGlvbnMvc2hhcmVkJztcbmltcG9ydCB7IE9wZXJhdGlvbnNMaXN0U2VydmljZSB9IGZyb20gJy4vb3BlcmF0aW9ucy1saXN0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktb3BlcmF0aW9ucy1saXN0LWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vb3BlcmF0aW9ucy1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBQUk9EVUNUX0VYUEVSSUVOQ0VfRVZFTlRfU09VUkNFLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gT3BlcmF0aW9uc0xpc3RJdGVtQ29tcG9uZW50KVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBPcGVyYXRpb25zTGlzdEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIFByb2R1Y3RFeHBlcmllbmNlRXZlbnRTb3VyY2Uge1xuICBASW5wdXQoKVxuICBvcGVyYXRpb246IFBhcnRpYWw8SU9wZXJhdGlvbj47XG4gIEBJbnB1dCgpXG4gIGNvbGxhcHNlZCA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIHJlYWRPbmx5ID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIG5vRXhwYW5kVG9nZ2xlID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIGlzU21hcnRSdWxlc01pY3Jvc2VydmljZUF2YWlsYWJsZTogYm9vbGVhbjtcbiAgQFZpZXdDaGlsZCgnbGlzdEl0ZW0nLCB7IHN0YXRpYzogdHJ1ZSB9KSBsaXN0SXRlbTogTGlzdEl0ZW1Db21wb25lbnQ7XG4gIHJlZnJlc2hMb2FkaW5nID0gZmFsc2U7XG4gIE9QRVJBVElPTl9TVEFUVVMgPSBPcGVyYXRpb25TdGF0dXM7XG4gIE9QRVJBVElPTl9TVEFUVVNfT1BUSU9OU19NQVA6IE9wZXJhdGlvblN0YXR1c09wdGlvbnNNYXBTaGFyZWQgPSBPUEVSQVRJT05fU1RBVFVTX09QVElPTlNfTUFQO1xuICBkZXZpY2VJZDogc3RyaW5nIHwgbnVtYmVyID1cbiAgICB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmVudD8uZGF0YS5jb250ZXh0RGF0YT8uaWQgfHxcbiAgICB0aGlzLnJvdXRlLnNuYXBzaG90LmZpcnN0Q2hpbGQ/LmRhdGEuY29udGV4dERhdGE/LmlkO1xuICBpbnZlbnRvcnlQZXJtaXNzaW9uczogc3RyaW5nW107XG4gIHNtYXJ0UnVsZUFkbWluUGVybWlzc2lvbnM6IHN0cmluZ1tdO1xuICBvcGVyYXRpb25UaXRsZTogc3RyaW5nO1xuICBwcm9kdWN0RXhwZXJpZW5jZUV2ZW50OiBQcm9kdWN0RXhwZXJpZW5jZUV2ZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBidWxrT3BlcmF0aW9uTGlzdEl0ZW1TZXJ2aWNlOiBCdWxrT3BlcmF0aW9uTGlzdEl0ZW1TZXJ2aWNlLFxuICAgIHB1YmxpYyBzaGFyZWRTZXJ2aWNlOiBPcGVyYXRpb25zU2VydmljZSxcbiAgICBwdWJsaWMgb3BlcmF0aW9uc0xpc3RTZXJ2aWNlOiBPcGVyYXRpb25zTGlzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5vcGVyYXRpb25UaXRsZSA9XG4gICAgICB0aGlzLm9wZXJhdGlvbi5jOHlfQ29tbWFuZD8udGV4dCB8fFxuICAgICAgdGhpcy5vcGVyYXRpb24uZGVzY3JpcHRpb24gfHxcbiAgICAgIGdldHRleHQoJ05vIGNvbW1hbmQgdGV4dCBvciBkZXNjcmlwdGlvbiBhdmFpbGFibGUnKTtcblxuICAgIGNvbnN0IHNtYXJ0UnVsZXNDcmVhdGVQZXJtaXNzaW9ucyA9IHRoaXMub3BlcmF0aW9uc0xpc3RTZXJ2aWNlLmdldFNtYXJ0UnVsZXNDcmVhdGVQZXJtaXNzaW9ucygpO1xuICAgIGlmIChzbWFydFJ1bGVzQ3JlYXRlUGVybWlzc2lvbnMpIHtcbiAgICAgIHRoaXMuaW52ZW50b3J5UGVybWlzc2lvbnMgPSBzbWFydFJ1bGVzQ3JlYXRlUGVybWlzc2lvbnNbMF0uYW55Um9sZTtcbiAgICAgIHRoaXMuc21hcnRSdWxlQWRtaW5QZXJtaXNzaW9ucyA9IHNtYXJ0UnVsZXNDcmVhdGVQZXJtaXNzaW9uc1sxXS5hbnlSb2xlO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZUN1c3RvbWl6ZWRCdWxrT3BlcmF0aW9uKCRldmVudD86IEV2ZW50KSB7XG4gICAgaWYgKCRldmVudCkge1xuICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoYC9kZXZpY2Vjb250cm9sL3NpbmdsZS9jcmVhdGUtYnVsay8ke3RoaXMub3BlcmF0aW9uLmlkfWApO1xuICB9XG59XG4iLCI8Yzh5LWxpXG4gIGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW0tLWRvdWJsZS1hY3Rpb25zXCJcbiAgW25nQ2xhc3NdPVwieyAnYzh5LWxpc3RfX2l0ZW0tLW5vLWV4cGFuZCc6IG5vRXhwYW5kVG9nZ2xlIH1cIlxuICBbY29sbGFwc2VkXT1cImNvbGxhcHNlZFwiXG4gICNsaXN0SXRlbVxuICBpZD1cInt7IG9wZXJhdGlvbi5pZCB9fVwiXG4+XG4gIDxjOHktbGktaWNvbj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0bi1jbGVhblwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiT1BFUkFUSU9OX1NUQVRVU19PUFRJT05TX01BUFtvcGVyYXRpb24uc3RhdHVzXS5sYWJlbCB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdG9vbHRpcF09XCJPUEVSQVRJT05fU1RBVFVTX09QVElPTlNfTUFQW29wZXJhdGlvbi5zdGF0dXNdLmxhYmVsIHwgdHJhbnNsYXRlXCJcbiAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgPlxuICAgICAgPGlcbiAgICAgICAgW2M4eUljb25dPVwiT1BFUkFUSU9OX1NUQVRVU19PUFRJT05TX01BUFtvcGVyYXRpb24uc3RhdHVzXS5pY29uXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiT1BFUkFUSU9OX1NUQVRVU19PUFRJT05TX01BUFtvcGVyYXRpb24uc3RhdHVzXS5zdHlsZUNsYXNzXCJcbiAgICAgID48L2k+XG4gICAgPC9idXR0b24+XG4gIDwvYzh5LWxpLWljb24+XG4gIDxkaXYgW25nQ2xhc3NdPVwieyAnY29udGVudC1mbGV4LTU4JzogIXJlYWRPbmx5LCAnY29udGVudC1mbGV4LTUwJzogcmVhZE9ubHkgfVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtNVwiPlxuICAgICAgPHNwYW4gdGl0bGU9XCJ7eyBvcGVyYXRpb25UaXRsZSB8IHRyYW5zbGF0ZSB9fVwiIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICB7eyBvcGVyYXRpb25UaXRsZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiICpuZ0lmPVwiIWRldmljZUlkXCI+XG4gICAgICA8YVxuICAgICAgICB0aXRsZT1cInt7IG9wZXJhdGlvbi5kZXZpY2VOYW1lIH19XCJcbiAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvZGV2aWNlJywgb3BlcmF0aW9uLmRldmljZUlkLCAnZGV2aWNlLWluZm8nXVwiXG4gICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIlxuICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgPlxuICAgICAgICB7eyBvcGVyYXRpb24uZGV2aWNlTmFtZSB9fVxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxuICAgICAgPHNtYWxsIGNsYXNzPVwiaWNvbi1mbGV4IHRleHQtbXV0ZWRcIj5cbiAgICAgICAgPGkgYzh5SWNvbj1cImNhbGVuZGFyXCIgY2xhc3M9XCJtLXItNFwiPjwvaT5cbiAgICAgICAge3sgb3BlcmF0aW9uLmNyZWF0aW9uVGltZSB8IGM4eURhdGUgfX1cbiAgICAgIDwvc21hbGw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXJlYWRPbmx5XCI+XG4gICAgPGM4eS1saS1hY3Rpb25cbiAgICAgIGxhYmVsPVwie3sgJ1NjaGVkdWxlIGFzIGJ1bGsgb3BlcmF0aW9uJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAoY2xpY2spPVwiY3JlYXRlQ3VzdG9taXplZEJ1bGtPcGVyYXRpb24oJGV2ZW50KVwiXG4gICAgICBpY29uPVwiYzh5LWljb24gYzh5LWljb24tZW5lcmd5XCJcbiAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICBpbmhlcml0XG4gICAgPjwvYzh5LWxpLWFjdGlvbj5cbiAgICA8bmctY29udGFpbmVyICpjOHlJZkFsbG93ZWQ9XCJpbnZlbnRvcnlQZXJtaXNzaW9uczsgYWxsb3dBbnk6IHRydWVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKmM4eUlmQWxsb3dlZD1cInNtYXJ0UnVsZUFkbWluUGVybWlzc2lvbnM7IGFsbG93QW55OiB0cnVlXCI+XG4gICAgICAgIDxjOHktbGktYWN0aW9uXG4gICAgICAgICAgKm5nSWY9XCJpc1NtYXJ0UnVsZXNNaWNyb3NlcnZpY2VBdmFpbGFibGVcIlxuICAgICAgICAgIGxhYmVsPVwie3sgJ0NyZWF0ZSBzbWFydCBydWxlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZXJhdGlvbnNMaXN0U2VydmljZS5jcmVhdGVTbWFydFJ1bGUob3BlcmF0aW9uKVwiXG4gICAgICAgICAgaWNvbj1cInNsaWRlcnNcIlxuICAgICAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICAgICAgaW5oZXJpdFxuICAgICAgICA+PC9jOHktbGktYWN0aW9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGM4eS1saS1hY3Rpb25cbiAgICAgICpuZ0lmPVwib3BlcmF0aW9uLnN0YXR1cyA9PT0gT1BFUkFUSU9OX1NUQVRVUy5QRU5ESU5HXCJcbiAgICAgIGxhYmVsPVwie3sgJ0NhbmNlbCBvcGVyYXRpb24nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHNoYXJlZFNlcnZpY2UuY2FuY2VsKG9wZXJhdGlvbilcIlxuICAgICAgaWNvbj1cInRpbWVzLWNpcmNsZVwiXG4gICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgaW5oZXJpdFxuICAgID48L2M4eS1saS1hY3Rpb24+XG4gIDwvbmctY29udGFpbmVyPlxuICA8Yzh5LWxpLWNvbGxhcHNlIGNsYXNzPVwibS1iLTE2XCI+XG4gICAgPGM4eS1vcGVyYXRpb24tZGV0YWlscy10YWJzXG4gICAgICAqbmdJZj1cIiFsaXN0SXRlbS5jb2xsYXBzZWRcIlxuICAgICAgW29wZXJhdGlvbl09XCJvcGVyYXRpb25cIlxuICAgICAgW2J1bGtPcGVyYXRpb25Nb2RhbERldGFpbHNTZXJ2aWNlXT1cImJ1bGtPcGVyYXRpb25MaXN0SXRlbVNlcnZpY2VcIlxuICAgID48L2M4eS1vcGVyYXRpb24tZGV0YWlscy10YWJzPlxuICA8L2M4eS1saS1jb2xsYXBzZT5cbjwvYzh5LWxpPlxuIl19
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9ucy1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vb3BlcmF0aW9ucy9vcGVyYXRpb25zLWxpc3Qvb3BlcmF0aW9ucy1saXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vb3BlcmF0aW9ucy9vcGVyYXRpb25zLWxpc3Qvb3BlcmF0aW9ucy1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUF5QixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQWMsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFELE9BQU8sRUFDTCxPQUFPLEVBQ1AsaUJBQWlCLEVBR2pCLCtCQUErQixFQUNoQyxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ3ZHLE9BQU8sRUFDTCxpQkFBaUIsRUFFakIsNEJBQTRCLEVBQzdCLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7QUFZbEUsTUFBTSxPQUFPLDJCQUEyQjtJQXVCdEMsWUFDUyw0QkFBMEQsRUFDMUQsYUFBZ0MsRUFDaEMscUJBQTRDLEVBQzNDLEtBQXFCLEVBQ3JCLE1BQWM7UUFKZixpQ0FBNEIsR0FBNUIsNEJBQTRCLENBQThCO1FBQzFELGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQUNoQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzNDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUF4QnhCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFFakIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUl2QixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixxQkFBZ0IsR0FBRyxlQUFlLENBQUM7UUFDbkMsaUNBQTRCLEdBQW9DLDRCQUE0QixDQUFDO1FBQzdGLGFBQVEsR0FDTixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ2hELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztJQVlwRCxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBRTVCLE1BQU0sMkJBQTJCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLDhCQUE4QixFQUFFLENBQUM7UUFDaEcsSUFBSSwyQkFBMkIsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxvQkFBb0IsR0FBRywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDbkUsSUFBSSxDQUFDLHlCQUF5QixHQUFHLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUMxRSxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4RCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVELDZCQUE2QixDQUFDLE1BQWM7UUFDMUMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMscUNBQXFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxjQUFjO1lBQ2pCLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLElBQUk7Z0JBQ2pDLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVztnQkFDM0IsT0FBTyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7SUFDeEQsQ0FBQzs4R0E1RFUsMkJBQTJCO2tHQUEzQiwyQkFBMkIsK09BUDNCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLCtCQUErQjtnQkFDeEMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQzthQUMzRDtTQUNGLG1LQzFCSCwyNEZBbUZBOzsyRkR2RGEsMkJBQTJCO2tCQVZ2QyxTQUFTOytCQUNFLDBCQUEwQixhQUV6Qjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsK0JBQStCOzRCQUN4QyxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSw0QkFBNEIsQ0FBQzt5QkFDM0Q7cUJBQ0Y7dU5BSUQsU0FBUztzQkFEUixLQUFLO2dCQUdOLFNBQVM7c0JBRFIsS0FBSztnQkFHTixRQUFRO3NCQURQLEtBQUs7Z0JBR04sY0FBYztzQkFEYixLQUFLO2dCQUdOLGlDQUFpQztzQkFEaEMsS0FBSztnQkFFbUMsUUFBUTtzQkFBaEQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgT25Jbml0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSU9wZXJhdGlvbiwgT3BlcmF0aW9uU3RhdHVzIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgZ2V0dGV4dCxcbiAgTGlzdEl0ZW1Db21wb25lbnQsXG4gIFByb2R1Y3RFeHBlcmllbmNlRXZlbnQsXG4gIFByb2R1Y3RFeHBlcmllbmNlRXZlbnRTb3VyY2UsXG4gIFBST0RVQ1RfRVhQRVJJRU5DRV9FVkVOVF9TT1VSQ0Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCdWxrT3BlcmF0aW9uTGlzdEl0ZW1TZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9vcGVyYXRpb25zL2J1bGstb3BlcmF0aW9uLWxpc3QtaXRlbSc7XG5pbXBvcnQge1xuICBPcGVyYXRpb25zU2VydmljZSxcbiAgT3BlcmF0aW9uU3RhdHVzT3B0aW9uc01hcFNoYXJlZCxcbiAgT1BFUkFUSU9OX1NUQVRVU19PUFRJT05TX01BUFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL29wZXJhdGlvbnMvc2hhcmVkJztcbmltcG9ydCB7IE9wZXJhdGlvbnNMaXN0U2VydmljZSB9IGZyb20gJy4vb3BlcmF0aW9ucy1saXN0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktb3BlcmF0aW9ucy1saXN0LWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vb3BlcmF0aW9ucy1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBQUk9EVUNUX0VYUEVSSUVOQ0VfRVZFTlRfU09VUkNFLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gT3BlcmF0aW9uc0xpc3RJdGVtQ29tcG9uZW50KVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBPcGVyYXRpb25zTGlzdEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIFByb2R1Y3RFeHBlcmllbmNlRXZlbnRTb3VyY2Uge1xuICBASW5wdXQoKVxuICBvcGVyYXRpb246IFBhcnRpYWw8SU9wZXJhdGlvbj47XG4gIEBJbnB1dCgpXG4gIGNvbGxhcHNlZCA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIHJlYWRPbmx5ID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIG5vRXhwYW5kVG9nZ2xlID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIGlzU21hcnRSdWxlc01pY3Jvc2VydmljZUF2YWlsYWJsZTogYm9vbGVhbjtcbiAgQFZpZXdDaGlsZCgnbGlzdEl0ZW0nLCB7IHN0YXRpYzogdHJ1ZSB9KSBsaXN0SXRlbTogTGlzdEl0ZW1Db21wb25lbnQ7XG4gIHJlZnJlc2hMb2FkaW5nID0gZmFsc2U7XG4gIE9QRVJBVElPTl9TVEFUVVMgPSBPcGVyYXRpb25TdGF0dXM7XG4gIE9QRVJBVElPTl9TVEFUVVNfT1BUSU9OU19NQVA6IE9wZXJhdGlvblN0YXR1c09wdGlvbnNNYXBTaGFyZWQgPSBPUEVSQVRJT05fU1RBVFVTX09QVElPTlNfTUFQO1xuICBkZXZpY2VJZDogc3RyaW5nIHwgbnVtYmVyID1cbiAgICB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmVudD8uZGF0YS5jb250ZXh0RGF0YT8uaWQgfHxcbiAgICB0aGlzLnJvdXRlLnNuYXBzaG90LmZpcnN0Q2hpbGQ/LmRhdGEuY29udGV4dERhdGE/LmlkO1xuICBpbnZlbnRvcnlQZXJtaXNzaW9uczogc3RyaW5nW107XG4gIHNtYXJ0UnVsZUFkbWluUGVybWlzc2lvbnM6IHN0cmluZ1tdO1xuICBvcGVyYXRpb25UaXRsZTogc3RyaW5nO1xuICBwcm9kdWN0RXhwZXJpZW5jZUV2ZW50OiBQcm9kdWN0RXhwZXJpZW5jZUV2ZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBidWxrT3BlcmF0aW9uTGlzdEl0ZW1TZXJ2aWNlOiBCdWxrT3BlcmF0aW9uTGlzdEl0ZW1TZXJ2aWNlLFxuICAgIHB1YmxpYyBzaGFyZWRTZXJ2aWNlOiBPcGVyYXRpb25zU2VydmljZSxcbiAgICBwdWJsaWMgb3BlcmF0aW9uc0xpc3RTZXJ2aWNlOiBPcGVyYXRpb25zTGlzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy51cGRhdGVPcGVyYXRpb25UaXRsZSgpO1xuXG4gICAgY29uc3Qgc21hcnRSdWxlc0NyZWF0ZVBlcm1pc3Npb25zID0gdGhpcy5vcGVyYXRpb25zTGlzdFNlcnZpY2UuZ2V0U21hcnRSdWxlc0NyZWF0ZVBlcm1pc3Npb25zKCk7XG4gICAgaWYgKHNtYXJ0UnVsZXNDcmVhdGVQZXJtaXNzaW9ucykge1xuICAgICAgdGhpcy5pbnZlbnRvcnlQZXJtaXNzaW9ucyA9IHNtYXJ0UnVsZXNDcmVhdGVQZXJtaXNzaW9uc1swXS5hbnlSb2xlO1xuICAgICAgdGhpcy5zbWFydFJ1bGVBZG1pblBlcm1pc3Npb25zID0gc21hcnRSdWxlc0NyZWF0ZVBlcm1pc3Npb25zWzFdLmFueVJvbGU7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLm9wZXJhdGlvbiAmJiBjaGFuZ2VzLm9wZXJhdGlvbi5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMudXBkYXRlT3BlcmF0aW9uVGl0bGUoKTtcbiAgICB9XG4gIH1cblxuICBjcmVhdGVDdXN0b21pemVkQnVsa09wZXJhdGlvbigkZXZlbnQ/OiBFdmVudCkge1xuICAgIGlmICgkZXZlbnQpIHtcbiAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGAvZGV2aWNlY29udHJvbC9zaW5nbGUvY3JlYXRlLWJ1bGsvJHt0aGlzLm9wZXJhdGlvbi5pZH1gKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlT3BlcmF0aW9uVGl0bGUoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVyYXRpb25UaXRsZSA9XG4gICAgICB0aGlzLm9wZXJhdGlvbj8uYzh5X0NvbW1hbmQ/LnRleHQgfHxcbiAgICAgIHRoaXMub3BlcmF0aW9uPy5kZXNjcmlwdGlvbiB8fFxuICAgICAgZ2V0dGV4dCgnTm8gY29tbWFuZCB0ZXh0IG9yIGRlc2NyaXB0aW9uIGF2YWlsYWJsZScpO1xuICB9XG59XG4iLCI8Yzh5LWxpXG4gIGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW0tLWRvdWJsZS1hY3Rpb25zXCJcbiAgW25nQ2xhc3NdPVwieyAnYzh5LWxpc3RfX2l0ZW0tLW5vLWV4cGFuZCc6IG5vRXhwYW5kVG9nZ2xlIH1cIlxuICBbY29sbGFwc2VkXT1cImNvbGxhcHNlZFwiXG4gICNsaXN0SXRlbVxuICBpZD1cInt7IG9wZXJhdGlvbi5pZCB9fVwiXG4+XG4gIDxjOHktbGktaWNvbj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0bi1jbGVhblwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiT1BFUkFUSU9OX1NUQVRVU19PUFRJT05TX01BUFtvcGVyYXRpb24uc3RhdHVzXS5sYWJlbCB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdG9vbHRpcF09XCJPUEVSQVRJT05fU1RBVFVTX09QVElPTlNfTUFQW29wZXJhdGlvbi5zdGF0dXNdLmxhYmVsIHwgdHJhbnNsYXRlXCJcbiAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgPlxuICAgICAgPGlcbiAgICAgICAgW2M4eUljb25dPVwiT1BFUkFUSU9OX1NUQVRVU19PUFRJT05TX01BUFtvcGVyYXRpb24uc3RhdHVzXS5pY29uXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiT1BFUkFUSU9OX1NUQVRVU19PUFRJT05TX01BUFtvcGVyYXRpb24uc3RhdHVzXS5zdHlsZUNsYXNzXCJcbiAgICAgID48L2k+XG4gICAgPC9idXR0b24+XG4gIDwvYzh5LWxpLWljb24+XG4gIDxkaXYgW25nQ2xhc3NdPVwieyAnY29udGVudC1mbGV4LTU4JzogIXJlYWRPbmx5LCAnY29udGVudC1mbGV4LTUwJzogcmVhZE9ubHkgfVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtNVwiPlxuICAgICAgPHNwYW4gdGl0bGU9XCJ7eyBvcGVyYXRpb25UaXRsZSB8IHRyYW5zbGF0ZSB9fVwiIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICB7eyBvcGVyYXRpb25UaXRsZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiICpuZ0lmPVwiIWRldmljZUlkXCI+XG4gICAgICA8YVxuICAgICAgICB0aXRsZT1cInt7IG9wZXJhdGlvbi5kZXZpY2VOYW1lIH19XCJcbiAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvZGV2aWNlJywgb3BlcmF0aW9uLmRldmljZUlkLCAnZGV2aWNlLWluZm8nXVwiXG4gICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIlxuICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgPlxuICAgICAgICB7eyBvcGVyYXRpb24uZGV2aWNlTmFtZSB9fVxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxuICAgICAgPHNtYWxsIGNsYXNzPVwiaWNvbi1mbGV4IHRleHQtbXV0ZWRcIj5cbiAgICAgICAgPGkgYzh5SWNvbj1cImNhbGVuZGFyXCIgY2xhc3M9XCJtLXItNFwiPjwvaT5cbiAgICAgICAge3sgb3BlcmF0aW9uLmNyZWF0aW9uVGltZSB8IGM4eURhdGUgfX1cbiAgICAgIDwvc21hbGw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXJlYWRPbmx5XCI+XG4gICAgPGM4eS1saS1hY3Rpb25cbiAgICAgIGxhYmVsPVwie3sgJ1NjaGVkdWxlIGFzIGJ1bGsgb3BlcmF0aW9uJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAoY2xpY2spPVwiY3JlYXRlQ3VzdG9taXplZEJ1bGtPcGVyYXRpb24oJGV2ZW50KVwiXG4gICAgICBpY29uPVwiYzh5LWljb24gYzh5LWljb24tZW5lcmd5XCJcbiAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICBpbmhlcml0XG4gICAgPjwvYzh5LWxpLWFjdGlvbj5cbiAgICA8bmctY29udGFpbmVyICpjOHlJZkFsbG93ZWQ9XCJpbnZlbnRvcnlQZXJtaXNzaW9uczsgYWxsb3dBbnk6IHRydWVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKmM4eUlmQWxsb3dlZD1cInNtYXJ0UnVsZUFkbWluUGVybWlzc2lvbnM7IGFsbG93QW55OiB0cnVlXCI+XG4gICAgICAgIDxjOHktbGktYWN0aW9uXG4gICAgICAgICAgKm5nSWY9XCJpc1NtYXJ0UnVsZXNNaWNyb3NlcnZpY2VBdmFpbGFibGVcIlxuICAgICAgICAgIGxhYmVsPVwie3sgJ0NyZWF0ZSBzbWFydCBydWxlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZXJhdGlvbnNMaXN0U2VydmljZS5jcmVhdGVTbWFydFJ1bGUob3BlcmF0aW9uKVwiXG4gICAgICAgICAgaWNvbj1cInNsaWRlcnNcIlxuICAgICAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICAgICAgaW5oZXJpdFxuICAgICAgICA+PC9jOHktbGktYWN0aW9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGM4eS1saS1hY3Rpb25cbiAgICAgICpuZ0lmPVwib3BlcmF0aW9uLnN0YXR1cyA9PT0gT1BFUkFUSU9OX1NUQVRVUy5QRU5ESU5HXCJcbiAgICAgIGxhYmVsPVwie3sgJ0NhbmNlbCBvcGVyYXRpb24nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHNoYXJlZFNlcnZpY2UuY2FuY2VsKG9wZXJhdGlvbilcIlxuICAgICAgaWNvbj1cInRpbWVzLWNpcmNsZVwiXG4gICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgaW5oZXJpdFxuICAgID48L2M4eS1saS1hY3Rpb24+XG4gIDwvbmctY29udGFpbmVyPlxuICA8Yzh5LWxpLWNvbGxhcHNlIGNsYXNzPVwibS1iLTE2XCI+XG4gICAgPGM4eS1vcGVyYXRpb24tZGV0YWlscy10YWJzXG4gICAgICAqbmdJZj1cIiFsaXN0SXRlbS5jb2xsYXBzZWRcIlxuICAgICAgW29wZXJhdGlvbl09XCJvcGVyYXRpb25cIlxuICAgICAgW2J1bGtPcGVyYXRpb25Nb2RhbERldGFpbHNTZXJ2aWNlXT1cImJ1bGtPcGVyYXRpb25MaXN0SXRlbVNlcnZpY2VcIlxuICAgID48L2M4eS1vcGVyYXRpb24tZGV0YWlscy10YWJzPlxuICA8L2M4eS1saS1jb2xsYXBzZT5cbjwvYzh5LWxpPlxuIl19
|
|
@@ -5,8 +5,8 @@ import { SINGLE_OPERATION_EVENT_DEVICE_TAB, SINGLE_OPERATION_EVENT_OVERVIEW } fr
|
|
|
5
5
|
import { OPERATION_STATUS_OPTIONS_MAP } from '@c8y/ngx-components/operations/shared';
|
|
6
6
|
import { StatusFilterComponent } from '@c8y/ngx-components/operations/status-filter';
|
|
7
7
|
import { flatten } from 'lodash-es';
|
|
8
|
-
import { BehaviorSubject, combineLatest } from 'rxjs';
|
|
9
|
-
import { shareReplay, switchMap, tap } from 'rxjs/operators';
|
|
8
|
+
import { BehaviorSubject, combineLatest, pipe } from 'rxjs';
|
|
9
|
+
import { map, shareReplay, switchMap, tap } from 'rxjs/operators';
|
|
10
10
|
import { OperationsListService } from './operations-list.service';
|
|
11
11
|
import * as i0 from "@angular/core";
|
|
12
12
|
import * as i1 from "@c8y/ngx-components";
|
|
@@ -32,6 +32,14 @@ export class OperationsListComponent {
|
|
|
32
32
|
}), switchMap(([statusFilters]) => this.filter(statusFilters)), tap(() => {
|
|
33
33
|
this.refreshLoading = false;
|
|
34
34
|
}), shareReplay(1));
|
|
35
|
+
this.operationsFilterPipe = pipe(map((operations) => {
|
|
36
|
+
const statusFilters = this.statusFilter$.getValue();
|
|
37
|
+
if (!statusFilters || !statusFilters.length) {
|
|
38
|
+
return operations;
|
|
39
|
+
}
|
|
40
|
+
const allowedStatuses = flatten(statusFilters.map(sf => sf.status));
|
|
41
|
+
return operations.filter(op => allowedStatuses.includes(op.status));
|
|
42
|
+
}));
|
|
35
43
|
this.productExperienceEvent = {
|
|
36
44
|
eventName: !!this.deviceId ? SINGLE_OPERATION_EVENT_DEVICE_TAB : SINGLE_OPERATION_EVENT_OVERVIEW
|
|
37
45
|
};
|
|
@@ -66,7 +74,7 @@ export class OperationsListComponent {
|
|
|
66
74
|
provide: PRODUCT_EXPERIENCE_EVENT_SOURCE,
|
|
67
75
|
useExisting: forwardRef(() => OperationsListComponent)
|
|
68
76
|
}
|
|
69
|
-
], viewQueries: [{ propertyName: "statusFilter", first: true, predicate: ["statusFilter"], descendants: true, static: true }], ngImport: i0, template: "<c8y-title>{{ title | translate }}</c8y-title>\n\n<c8y-breadcrumb *ngIf=\"showOverviewBreadcrumbs\">\n <c8y-breadcrumb-item\n [icon]=\"'c8y-overviews'\"\n [label]=\"'Overviews' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-control'\"\n [label]=\"'Device Control' | translate\"\n [path]=\"'devicecontrol/single'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-control'\"\n [label]=\"'Single operations' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"navbar-form\"\n>\n <c8y-status-filter\n #statusFilter\n [options]=\"OPERATION_STATUS_OPTIONS_MAP\"\n (onFilterChanged)=\"statusFilter$.next($event)\"\n c8yProductExperience\n inherit\n ></c8y-status-filter>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <c8y-realtime-btn [service]=\"realtime\"></c8y-realtime-btn>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link d-flex a-i-center\"\n title=\"{{ 'Reload' | translate }}\"\n (click)=\"reload$.next()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': refreshLoading }\"\n ></i>\n <span class=\"text-truncate\">\n {{ 'Reload' | translate }}\n </span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-management-application/monitoring-and-controlling-devices/#to-view-single-operations\"\n></c8y-help>\n\n<!-- Empty state -->\n<c8y-ui-empty-state\n [icon]=\"'c8y-energy'\"\n [title]=\"'No items to display.' | translate\"\n [subtitle]=\"'Operations will be displayed here.' | translate\"\n *ngIf=\"(operations$ | async)?.data.length === 0 && !(statusFilter$ | async)\"\n></c8y-ui-empty-state>\n<!-- No results empty state -->\n<c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No results to display.' | translate\"\n [subtitle]=\"'Adjust or reset the filter.' | translate\"\n *ngIf=\"(operations$ | async)?.data.length === 0 && (statusFilter$ | async)\"\n>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Reset filter' | translate }}\"\n type=\"button\"\n (click)=\"statusFilter.reset()\"\n translate\n >\n Reset filter\n </button>\n</c8y-ui-empty-state>\n\n<!-- Detailed list of operations + load more button -->\n<c8y-list-group class=\"m-b-24\">\n <div\n class=\"page-sticky-header c8y-list__item c8y-list__item--double-actions hidden-xs\"\n *ngIf=\"(operations$ | async)?.data.length\"\n >\n <div class=\"c8y-list__item__block\">\n <div class=\"c8y-list__item__icon\">\n <i class=\"p-l-24\"></i>\n </div>\n <div class=\"c8y-list__item__body text-truncate-wrap\">\n <div class=\"content-flex-57\">\n <div class=\"col-5\">\n {{ 'Operation' | translate }}\n </div>\n <div\n class=\"flex-grow\"\n *ngIf=\"!deviceId\"\n >\n {{ 'Device' | translate }}\n </div>\n <div class=\"col-4\">\n {{ 'Date created' | translate }}\n </div>\n </div>\n </div>\n <div class=\"c8y-list__item__actions\"></div>\n </div>\n </div>\n <div\n class=\"d-contents\"\n *c8yFor=\"\n let op of operations$ | async;\n let i = index;\n realtime: realtime;\n realtimeOptions: { entityOrId: deviceId };\n comparator: compareOperations.bind(this);\n loadMore: 'auto'\n \"\n >\n <c8y-operations-list-item\n class=\"d-contents\"\n [operation]=\"op\"\n [isSmartRulesMicroserviceAvailable]=\"isSmartRulesMicroserviceAvailable\"\n (reload)=\"reload$.next()\"\n c8yProductExperience\n inherit\n ></c8y-operations-list-item>\n </div>\n</c8y-list-group>\n", dependencies: [{ kind: "component", type: i1.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i1.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i1.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i1.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: i1.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i1.ListGroupComponent, selector: "c8y-list-group" }, { kind: "directive", type: i1.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "component", type: i1.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "component", type: i1.RealtimeButtonComponent, selector: "c8y-realtime-btn", inputs: ["service", "label", "title", "disabled"], outputs: ["onToggle"] }, { kind: "component", type: i5.StatusFilterComponent, selector: "c8y-status-filter", inputs: ["options", "multiple", "small"], outputs: ["onFilterChanged"] }, { kind: "component", type: i6.OperationsListItemComponent, selector: "c8y-operations-list-item", inputs: ["operation", "collapsed", "readOnly", "noExpandToggle", "isSmartRulesMicroserviceAvailable"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] }); }
|
|
77
|
+
], viewQueries: [{ propertyName: "statusFilter", first: true, predicate: ["statusFilter"], descendants: true, static: true }], ngImport: i0, template: "<c8y-title>{{ title | translate }}</c8y-title>\n\n<c8y-breadcrumb *ngIf=\"showOverviewBreadcrumbs\">\n <c8y-breadcrumb-item\n [icon]=\"'c8y-overviews'\"\n [label]=\"'Overviews' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-control'\"\n [label]=\"'Device Control' | translate\"\n [path]=\"'devicecontrol/single'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-control'\"\n [label]=\"'Single operations' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"navbar-form\"\n>\n <c8y-status-filter\n #statusFilter\n [options]=\"OPERATION_STATUS_OPTIONS_MAP\"\n (onFilterChanged)=\"statusFilter$.next($event)\"\n c8yProductExperience\n inherit\n ></c8y-status-filter>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <c8y-realtime-btn [service]=\"realtime\"></c8y-realtime-btn>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link d-flex a-i-center\"\n title=\"{{ 'Reload' | translate }}\"\n (click)=\"reload$.next()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': refreshLoading }\"\n ></i>\n <span class=\"text-truncate\">\n {{ 'Reload' | translate }}\n </span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-management-application/monitoring-and-controlling-devices/#to-view-single-operations\"\n></c8y-help>\n\n<!-- Empty state -->\n<c8y-ui-empty-state\n [icon]=\"'c8y-energy'\"\n [title]=\"'No items to display.' | translate\"\n [subtitle]=\"'Operations will be displayed here.' | translate\"\n *ngIf=\"(operations$ | async)?.data.length === 0 && !(statusFilter$ | async)\"\n></c8y-ui-empty-state>\n<!-- No results empty state -->\n<c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No results to display.' | translate\"\n [subtitle]=\"'Adjust or reset the filter.' | translate\"\n *ngIf=\"(operations$ | async)?.data.length === 0 && (statusFilter$ | async)\"\n>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Reset filter' | translate }}\"\n type=\"button\"\n (click)=\"statusFilter.reset()\"\n translate\n >\n Reset filter\n </button>\n</c8y-ui-empty-state>\n\n<!-- Detailed list of operations + load more button -->\n<c8y-list-group class=\"m-b-24\">\n <div\n class=\"page-sticky-header c8y-list__item c8y-list__item--double-actions hidden-xs\"\n *ngIf=\"(operations$ | async)?.data.length\"\n >\n <div class=\"c8y-list__item__block\">\n <div class=\"c8y-list__item__icon\">\n <i class=\"p-l-24\"></i>\n </div>\n <div class=\"c8y-list__item__body text-truncate-wrap\">\n <div class=\"content-flex-57\">\n <div class=\"col-5\">\n {{ 'Operation' | translate }}\n </div>\n <div\n class=\"flex-grow\"\n *ngIf=\"!deviceId\"\n >\n {{ 'Device' | translate }}\n </div>\n <div class=\"col-4\">\n {{ 'Date created' | translate }}\n </div>\n </div>\n </div>\n <div class=\"c8y-list__item__actions\"></div>\n </div>\n </div>\n <div\n class=\"d-contents\"\n *c8yFor=\"\n let op of operations$ | async;\n let i = index;\n realtime: realtime;\n realtimeOptions: { entityOrId: deviceId, removeOnUpdate: true, insertOnUpdate: true };\n comparator: compareOperations.bind(this);\n loadMore: 'auto';\n pipe: operationsFilterPipe\n \"\n >\n <c8y-operations-list-item\n class=\"d-contents\"\n [operation]=\"op\"\n [isSmartRulesMicroserviceAvailable]=\"isSmartRulesMicroserviceAvailable\"\n (reload)=\"reload$.next()\"\n c8yProductExperience\n inherit\n ></c8y-operations-list-item>\n </div>\n</c8y-list-group>\n", dependencies: [{ kind: "component", type: i1.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i1.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i1.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i1.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: i1.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i1.ListGroupComponent, selector: "c8y-list-group" }, { kind: "directive", type: i1.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "component", type: i1.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "component", type: i1.RealtimeButtonComponent, selector: "c8y-realtime-btn", inputs: ["service", "label", "title", "disabled"], outputs: ["onToggle"] }, { kind: "component", type: i5.StatusFilterComponent, selector: "c8y-status-filter", inputs: ["options", "multiple", "small"], outputs: ["onFilterChanged"] }, { kind: "component", type: i6.OperationsListItemComponent, selector: "c8y-operations-list-item", inputs: ["operation", "collapsed", "readOnly", "noExpandToggle", "isSmartRulesMicroserviceAvailable"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] }); }
|
|
70
78
|
}
|
|
71
79
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: OperationsListComponent, decorators: [{
|
|
72
80
|
type: Component,
|
|
@@ -76,9 +84,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
76
84
|
provide: PRODUCT_EXPERIENCE_EVENT_SOURCE,
|
|
77
85
|
useExisting: forwardRef(() => OperationsListComponent)
|
|
78
86
|
}
|
|
79
|
-
], template: "<c8y-title>{{ title | translate }}</c8y-title>\n\n<c8y-breadcrumb *ngIf=\"showOverviewBreadcrumbs\">\n <c8y-breadcrumb-item\n [icon]=\"'c8y-overviews'\"\n [label]=\"'Overviews' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-control'\"\n [label]=\"'Device Control' | translate\"\n [path]=\"'devicecontrol/single'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-control'\"\n [label]=\"'Single operations' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"navbar-form\"\n>\n <c8y-status-filter\n #statusFilter\n [options]=\"OPERATION_STATUS_OPTIONS_MAP\"\n (onFilterChanged)=\"statusFilter$.next($event)\"\n c8yProductExperience\n inherit\n ></c8y-status-filter>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <c8y-realtime-btn [service]=\"realtime\"></c8y-realtime-btn>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link d-flex a-i-center\"\n title=\"{{ 'Reload' | translate }}\"\n (click)=\"reload$.next()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': refreshLoading }\"\n ></i>\n <span class=\"text-truncate\">\n {{ 'Reload' | translate }}\n </span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-management-application/monitoring-and-controlling-devices/#to-view-single-operations\"\n></c8y-help>\n\n<!-- Empty state -->\n<c8y-ui-empty-state\n [icon]=\"'c8y-energy'\"\n [title]=\"'No items to display.' | translate\"\n [subtitle]=\"'Operations will be displayed here.' | translate\"\n *ngIf=\"(operations$ | async)?.data.length === 0 && !(statusFilter$ | async)\"\n></c8y-ui-empty-state>\n<!-- No results empty state -->\n<c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No results to display.' | translate\"\n [subtitle]=\"'Adjust or reset the filter.' | translate\"\n *ngIf=\"(operations$ | async)?.data.length === 0 && (statusFilter$ | async)\"\n>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Reset filter' | translate }}\"\n type=\"button\"\n (click)=\"statusFilter.reset()\"\n translate\n >\n Reset filter\n </button>\n</c8y-ui-empty-state>\n\n<!-- Detailed list of operations + load more button -->\n<c8y-list-group class=\"m-b-24\">\n <div\n class=\"page-sticky-header c8y-list__item c8y-list__item--double-actions hidden-xs\"\n *ngIf=\"(operations$ | async)?.data.length\"\n >\n <div class=\"c8y-list__item__block\">\n <div class=\"c8y-list__item__icon\">\n <i class=\"p-l-24\"></i>\n </div>\n <div class=\"c8y-list__item__body text-truncate-wrap\">\n <div class=\"content-flex-57\">\n <div class=\"col-5\">\n {{ 'Operation' | translate }}\n </div>\n <div\n class=\"flex-grow\"\n *ngIf=\"!deviceId\"\n >\n {{ 'Device' | translate }}\n </div>\n <div class=\"col-4\">\n {{ 'Date created' | translate }}\n </div>\n </div>\n </div>\n <div class=\"c8y-list__item__actions\"></div>\n </div>\n </div>\n <div\n class=\"d-contents\"\n *c8yFor=\"\n let op of operations$ | async;\n let i = index;\n realtime: realtime;\n realtimeOptions: { entityOrId: deviceId };\n comparator: compareOperations.bind(this);\n loadMore: 'auto'\n \"\n >\n <c8y-operations-list-item\n class=\"d-contents\"\n [operation]=\"op\"\n [isSmartRulesMicroserviceAvailable]=\"isSmartRulesMicroserviceAvailable\"\n (reload)=\"reload$.next()\"\n c8yProductExperience\n inherit\n ></c8y-operations-list-item>\n </div>\n</c8y-list-group>\n" }]
|
|
87
|
+
], template: "<c8y-title>{{ title | translate }}</c8y-title>\n\n<c8y-breadcrumb *ngIf=\"showOverviewBreadcrumbs\">\n <c8y-breadcrumb-item\n [icon]=\"'c8y-overviews'\"\n [label]=\"'Overviews' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-control'\"\n [label]=\"'Device Control' | translate\"\n [path]=\"'devicecontrol/single'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-control'\"\n [label]=\"'Single operations' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"navbar-form\"\n>\n <c8y-status-filter\n #statusFilter\n [options]=\"OPERATION_STATUS_OPTIONS_MAP\"\n (onFilterChanged)=\"statusFilter$.next($event)\"\n c8yProductExperience\n inherit\n ></c8y-status-filter>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <c8y-realtime-btn [service]=\"realtime\"></c8y-realtime-btn>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link d-flex a-i-center\"\n title=\"{{ 'Reload' | translate }}\"\n (click)=\"reload$.next()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': refreshLoading }\"\n ></i>\n <span class=\"text-truncate\">\n {{ 'Reload' | translate }}\n </span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-management-application/monitoring-and-controlling-devices/#to-view-single-operations\"\n></c8y-help>\n\n<!-- Empty state -->\n<c8y-ui-empty-state\n [icon]=\"'c8y-energy'\"\n [title]=\"'No items to display.' | translate\"\n [subtitle]=\"'Operations will be displayed here.' | translate\"\n *ngIf=\"(operations$ | async)?.data.length === 0 && !(statusFilter$ | async)\"\n></c8y-ui-empty-state>\n<!-- No results empty state -->\n<c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No results to display.' | translate\"\n [subtitle]=\"'Adjust or reset the filter.' | translate\"\n *ngIf=\"(operations$ | async)?.data.length === 0 && (statusFilter$ | async)\"\n>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Reset filter' | translate }}\"\n type=\"button\"\n (click)=\"statusFilter.reset()\"\n translate\n >\n Reset filter\n </button>\n</c8y-ui-empty-state>\n\n<!-- Detailed list of operations + load more button -->\n<c8y-list-group class=\"m-b-24\">\n <div\n class=\"page-sticky-header c8y-list__item c8y-list__item--double-actions hidden-xs\"\n *ngIf=\"(operations$ | async)?.data.length\"\n >\n <div class=\"c8y-list__item__block\">\n <div class=\"c8y-list__item__icon\">\n <i class=\"p-l-24\"></i>\n </div>\n <div class=\"c8y-list__item__body text-truncate-wrap\">\n <div class=\"content-flex-57\">\n <div class=\"col-5\">\n {{ 'Operation' | translate }}\n </div>\n <div\n class=\"flex-grow\"\n *ngIf=\"!deviceId\"\n >\n {{ 'Device' | translate }}\n </div>\n <div class=\"col-4\">\n {{ 'Date created' | translate }}\n </div>\n </div>\n </div>\n <div class=\"c8y-list__item__actions\"></div>\n </div>\n </div>\n <div\n class=\"d-contents\"\n *c8yFor=\"\n let op of operations$ | async;\n let i = index;\n realtime: realtime;\n realtimeOptions: { entityOrId: deviceId, removeOnUpdate: true, insertOnUpdate: true };\n comparator: compareOperations.bind(this);\n loadMore: 'auto';\n pipe: operationsFilterPipe\n \"\n >\n <c8y-operations-list-item\n class=\"d-contents\"\n [operation]=\"op\"\n [isSmartRulesMicroserviceAvailable]=\"isSmartRulesMicroserviceAvailable\"\n (reload)=\"reload$.next()\"\n c8yProductExperience\n inherit\n ></c8y-operations-list-item>\n </div>\n</c8y-list-group>\n" }]
|
|
80
88
|
}], ctorParameters: () => [{ type: i1.OperationRealtimeService }, { type: i2.OperationsListService }, { type: i3.ActivatedRoute }], propDecorators: { statusFilter: [{
|
|
81
89
|
type: ViewChild,
|
|
82
90
|
args: ['statusFilter', { static: true }]
|
|
83
91
|
}] } });
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9ucy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL29wZXJhdGlvbnMvb3BlcmF0aW9ucy1saXN0L29wZXJhdGlvbnMtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9vcGVyYXRpb25zL29wZXJhdGlvbnMtbGlzdC9vcGVyYXRpb25zLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQ0wsT0FBTyxFQUNQLHdCQUF3QixFQUd4QiwrQkFBK0IsRUFDaEMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQ0wsaUNBQWlDLEVBQ2pDLCtCQUErQixFQUNoQyxNQUFNLG1EQUFtRCxDQUFDO0FBQzNELE9BQU8sRUFHTCw0QkFBNEIsRUFDN0IsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7OztBQWFsRSxNQUFNLE9BQU8sdUJBQXVCO0lBOEJsQyxZQUNTLFFBQWtDLEVBQ2pDLHFCQUE0QyxFQUM1QyxLQUFxQjtRQUZ0QixhQUFRLEdBQVIsUUFBUSxDQUEwQjtRQUNqQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FB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LENBQzFGLENBQUM7SUFDSixDQUFDOzhHQWxFVSx1QkFBdUI7a0dBQXZCLHVCQUF1Qiw4Q0FSdkI7WUFDVCx3QkFBd0I7WUFDeEI7Z0JBQ0UsT0FBTyxFQUFFLCtCQUErQjtnQkFDeEMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzthQUN2RDtTQUNGLHNKQ2xDSCxxeUhBbUlBOzsyRkQvRmEsdUJBQXVCO2tCQVhuQyxTQUFTOytCQUNFLHFCQUFxQixhQUVwQjt3QkFDVCx3QkFBd0I7d0JBQ3hCOzRCQUNFLE9BQU8sRUFBRSwrQkFBK0I7NEJBQ3hDLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHdCQUF3QixDQUFDO3lCQUN2RDtxQkFDRjs4SkFZNEMsWUFBWTtzQkFBeEQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElPcGVyYXRpb24sIElSZXN1bHRMaXN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgZ2V0dGV4dCxcbiAgT3BlcmF0aW9uUmVhbHRpbWVTZXJ2aWNlLFxuICBQcm9kdWN0RXhwZXJpZW5jZUV2ZW50LFxuICBQcm9kdWN0RXhwZXJpZW5jZUV2ZW50U291cmNlLFxuICBQUk9EVUNUX0VYUEVSSUVOQ0VfRVZFTlRfU09VUkNFXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgU0lOR0xFX09QRVJBVElPTl9FVkVOVF9ERVZJQ0VfVEFCLFxuICBTSU5HTEVfT1BFUkFUSU9OX0VWRU5UX09WRVJWSUVXXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvb3BlcmF0aW9ucy9wcm9kdWN0LWV4cGVyaWVuY2UnO1xuaW1wb3J0IHtcbiAgT3BlcmF0aW9uU3RhdHVzT3B0aW9uLFxuICBPcGVyYXRpb25TdGF0dXNPcHRpb25zTWFwU2hhcmVkLFxuICBPUEVSQVRJT05fU1RBVFVTX09QVElPTlNfTUFQXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvb3BlcmF0aW9ucy9zaGFyZWQnO1xuaW1wb3J0IHsgU3RhdHVzRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9vcGVyYXRpb25zL3N0YXR1cy1maWx0ZXInO1xuaW1wb3J0IHsgZmxhdHRlbiB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9wZXJhdGlvbnNMaXN0U2VydmljZSB9IGZyb20gJy4vb3BlcmF0aW9ucy1saXN0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktb3BlcmF0aW9ucy1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICdvcGVyYXRpb25zLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICBPcGVyYXRpb25SZWFsdGltZVNlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogUFJPRFVDVF9FWFBFUklFTkNFX0VWRU5UX1NPVVJDRSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE9wZXJhdGlvbnNMaXN0Q29tcG9uZW50KVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBPcGVyYXRpb25zTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIFByb2R1Y3RFeHBlcmllbmNlRXZlbnRTb3VyY2Uge1xuICBkZXZpY2VJZDogc3RyaW5nIHwgbnVtYmVyID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJlbnQuZGF0YS5jb250ZXh0RGF0YT8uaWQ7XG4gIE9QRVJBVElPTl9TVEFUVVNfT1BUSU9OU19NQVA6IE9wZXJhdGlvblN0YXR1c09wdGlvbnNNYXBTaGFyZWQgPSBPUEVSQVRJT05fU1RBVFVTX09QVElPTlNfTUFQO1xuXG4gIHRpdGxlOiBzdHJpbmc7XG4gIHJlZnJlc2hMb2FkaW5nID0gZmFsc2U7XG4gIGlzU21hcnRSdWxlc01pY3Jvc2VydmljZUF2YWlsYWJsZSA9IGZhbHNlO1xuICBzaG93T3ZlcnZpZXdCcmVhZGNydW1icyA9IGZhbHNlO1xuICBzdGF0dXNGaWx0ZXIkOiBCZWhhdmlvclN1YmplY3Q8T3BlcmF0aW9uU3RhdHVzT3B0aW9uW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgcmVsb2FkJDogQmVoYXZpb3JTdWJqZWN0PHZvaWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgQFZpZXdDaGlsZCgnc3RhdHVzRmlsdGVyJywgeyBzdGF0aWM6IHRydWUgfSkgc3RhdHVzRmlsdGVyOiBTdGF0dXNGaWx0ZXJDb21wb25lbnQ7XG5cbiAgb3BlcmF0aW9ucyQ6IE9ic2VydmFibGU8SVJlc3VsdExpc3Q8SU9wZXJhdGlvbj4+ID0gY29tYmluZUxhdGVzdChcbiAgICB0aGlzLnN0YXR1c0ZpbHRlciQsXG4gICAgdGhpcy5yZWxvYWQkXG4gICkucGlwZShcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5yZWZyZXNoTG9hZGluZyA9IHRydWU7XG4gICAgfSksXG4gICAgc3dpdGNoTWFwKChbc3RhdHVzRmlsdGVyc10pID0+IHRoaXMuZmlsdGVyKHN0YXR1c0ZpbHRlcnMpKSxcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5yZWZyZXNoTG9hZGluZyA9IGZhbHNlO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcHJvZHVjdEV4cGVyaWVuY2VFdmVudDogUHJvZHVjdEV4cGVyaWVuY2VFdmVudCA9IHtcbiAgICBldmVudE5hbWU6ICEhdGhpcy5kZXZpY2VJZCA/IFNJTkdMRV9PUEVSQVRJT05fRVZFTlRfREVWSUNFX1RBQiA6IFNJTkdMRV9PUEVSQVRJT05fRVZFTlRfT1ZFUlZJRVdcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhbHRpbWU6IE9wZXJhdGlvblJlYWx0aW1lU2VydmljZSxcbiAgICBwcml2YXRlIG9wZXJhdGlvbnNMaXN0U2VydmljZTogT3BlcmF0aW9uc0xpc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge1xuICAgIHRoaXMudGl0bGUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmVudC5kYXRhLmNvbnRleHREYXRhXG4gICAgICA/IHRoaXMucm91dGUuc25hcHNob3QucGFyZW50LmRhdGEuY29udGV4dERhdGEubmFtZVxuICAgICAgOiBnZXR0ZXh0KCdTaW5nbGUgb3BlcmF0aW9ucycpO1xuICAgIHRoaXMuc2hvd092ZXJ2aWV3QnJlYWRjcnVtYnMgPSAhdGhpcy5kZXZpY2VJZDtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaXNTbWFydFJ1bGVzTWljcm9zZXJ2aWNlQXZhaWxhYmxlID1cbiAgICAgIGF3YWl0IHRoaXMub3BlcmF0aW9uc0xpc3RTZXJ2aWNlLmlzU21hcnRSdWxlc01pY3Jvc2VydmljZUF2YWlsYWJsZSgpO1xuICB9XG5cbiAgZmlsdGVyKHN0YXR1c0ZpbHRlcnM6IE9wZXJhdGlvblN0YXR1c09wdGlvbltdKSB7XG4gICAgY29uc3Qgc3RhdHVzID1cbiAgICAgIHN0YXR1c0ZpbHRlcnMgJiYgc3RhdHVzRmlsdGVycy5sZW5ndGggPiAwXG4gICAgICAgID8ge1xuICAgICAgICAgICAgc3RhdHVzOiBmbGF0dGVuKHN0YXR1c0ZpbHRlcnMubWFwKHN0YXR1c0ZpbHRlciA9PiBzdGF0dXNGaWx0ZXIuc3RhdHVzKSlcbiAgICAgICAgICB9XG4gICAgICAgIDoge307XG5cbiAgICByZXR1cm4gdGhpcy5nZXRPcGVyYXRpb25zKHN0YXR1cyk7XG4gIH1cblxuICBnZXRPcGVyYXRpb25zKGZpbHRlcj8pIHtcbiAgICBjb25zdCBxdWVyeUZpbHRlciA9IHRoaXMuZGV2aWNlSWQgPyB7IC4uLmZpbHRlciwgZGV2aWNlSWQ6IHRoaXMuZGV2aWNlSWQgfSA6IGZpbHRlcjtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRpb25zTGlzdFNlcnZpY2UuZ2V0T3BlcmF0aW9ucyhxdWVyeUZpbHRlcik7XG4gIH1cblxuICBjb21wYXJlT3BlcmF0aW9ucyhvcGVyYXRpb25BOiBJT3BlcmF0aW9uLCBvcGVyYXRpb25COiBJT3BlcmF0aW9uKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKFxuICAgICAgbmV3IERhdGUob3BlcmF0aW9uQS5jcmVhdGlvblRpbWUpLmdldFRpbWUoKSAtIG5ldyBEYXRlKG9wZXJhdGlvbkIuY3JlYXRpb25UaW1lKS5nZXRUaW1lKClcbiAgICApO1xuICB9XG59XG4iLCI8Yzh5LXRpdGxlPnt7IHRpdGxlIHwgdHJhbnNsYXRlIH19PC9jOHktdGl0bGU+XG5cbjxjOHktYnJlYWRjcnVtYiAqbmdJZj1cInNob3dPdmVydmlld0JyZWFkY3J1bWJzXCI+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgW2ljb25dPVwiJ2M4eS1vdmVydmlld3MnXCJcbiAgICBbbGFiZWxdPVwiJ092ZXJ2aWV3cycgfCB0cmFuc2xhdGVcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIFtpY29uXT1cIidjOHktZGV2aWNlLWNvbnRyb2wnXCJcbiAgICBbbGFiZWxdPVwiJ0RldmljZSBDb250cm9sJyB8IHRyYW5zbGF0ZVwiXG4gICAgW3BhdGhdPVwiJ2RldmljZWNvbnRyb2wvc2luZ2xlJ1wiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgW2ljb25dPVwiJ2M4eS1kZXZpY2UtY29udHJvbCdcIlxuICAgIFtsYWJlbF09XCInU2luZ2xlIG9wZXJhdGlvbnMnIHwgdHJhbnNsYXRlXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbjwvYzh5LWJyZWFkY3J1bWI+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIFtwbGFjZW1lbnRdPVwiJ2xlZnQnXCJcbiAgaXRlbUNsYXNzPVwibmF2YmFyLWZvcm1cIlxuPlxuICA8Yzh5LXN0YXR1cy1maWx0ZXJcbiAgICAjc3RhdHVzRmlsdGVyXG4gICAgW29wdGlvbnNdPVwiT1BFUkFUSU9OX1NUQVRVU19PUFRJT05TX01BUFwiXG4gICAgKG9uRmlsdGVyQ2hhbmdlZCk9XCJzdGF0dXNGaWx0ZXIkLm5leHQoJGV2ZW50KVwiXG4gICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICBpbmhlcml0XG4gID48L2M4eS1zdGF0dXMtZmlsdGVyPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbSBbcGxhY2VtZW50XT1cIidyaWdodCdcIj5cbiAgPGM4eS1yZWFsdGltZS1idG4gW3NlcnZpY2VdPVwicmVhbHRpbWVcIj48L2M4eS1yZWFsdGltZS1idG4+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgZC1mbGV4IGEtaS1jZW50ZXJcIlxuICAgIHRpdGxlPVwie3sgJ1JlbG9hZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIChjbGljayk9XCJyZWxvYWQkLm5leHQoKVwiXG4gID5cbiAgICA8aVxuICAgICAgY2xhc3M9XCJtLXItNFwiXG4gICAgICBjOHlJY29uPVwicmVmcmVzaFwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdpY29uLXNwaW4nOiByZWZyZXNoTG9hZGluZyB9XCJcbiAgICA+PC9pPlxuICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAge3sgJ1JlbG9hZCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWhlbHBcbiAgc3JjPVwiL2RvY3MvZGV2aWNlLW1hbmFnZW1lbnQtYXBwbGljYXRpb24vbW9uaXRvcmluZy1hbmQtY29udHJvbGxpbmctZGV2aWNlcy8jdG8tdmlldy1zaW5nbGUtb3BlcmF0aW9uc1wiXG4+PC9jOHktaGVscD5cblxuPCEtLSBFbXB0eSBzdGF0ZSAgLS0+XG48Yzh5LXVpLWVtcHR5LXN0YXRlXG4gIFtpY29uXT1cIidjOHktZW5lcmd5J1wiXG4gIFt0aXRsZV09XCInTm8gaXRlbXMgdG8gZGlzcGxheS4nIHwgdHJhbnNsYXRlXCJcbiAgW3N1YnRpdGxlXT1cIidPcGVyYXRpb25zIHdpbGwgYmUgZGlzcGxheWVkIGhlcmUuJyB8IHRyYW5zbGF0ZVwiXG4gICpuZ0lmPVwiKG9wZXJhdGlvbnMkIHwgYXN5bmMpPy5kYXRhLmxlbmd0aCA9PT0gMCAmJiAhKHN0YXR1c0ZpbHRlciQgfCBhc3luYylcIlxuPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuPCEtLSBObyByZXN1bHRzIGVtcHR5IHN0YXRlIC0tPlxuPGM4eS11aS1lbXB0eS1zdGF0ZVxuICBbaWNvbl09XCInc2VhcmNoJ1wiXG4gIFt0aXRsZV09XCInTm8gcmVzdWx0cyB0byBkaXNwbGF5LicgfCB0cmFuc2xhdGVcIlxuICBbc3VidGl0bGVdPVwiJ0FkanVzdCBvciByZXNldCB0aGUgZmlsdGVyLicgfCB0cmFuc2xhdGVcIlxuICAqbmdJZj1cIihvcGVyYXRpb25zJCB8IGFzeW5jKT8uZGF0YS5sZW5ndGggPT09IDAgJiYgKHN0YXR1c0ZpbHRlciQgfCBhc3luYylcIlxuPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgIHRpdGxlPVwie3sgJ1Jlc2V0IGZpbHRlcicgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIChjbGljayk9XCJzdGF0dXNGaWx0ZXIucmVzZXQoKVwiXG4gICAgdHJhbnNsYXRlXG4gID5cbiAgICBSZXNldCBmaWx0ZXJcbiAgPC9idXR0b24+XG48L2M4eS11aS1lbXB0eS1zdGF0ZT5cblxuPCEtLSBEZXRhaWxlZCBsaXN0IG9mIG9wZXJhdGlvbnMgKyBsb2FkIG1vcmUgYnV0dG9uIC0tPlxuPGM4eS1saXN0LWdyb3VwIGNsYXNzPVwibS1iLTI0XCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cInBhZ2Utc3RpY2t5LWhlYWRlciBjOHktbGlzdF9faXRlbSBjOHktbGlzdF9faXRlbS0tZG91YmxlLWFjdGlvbnMgaGlkZGVuLXhzXCJcbiAgICAqbmdJZj1cIihvcGVyYXRpb25zJCB8IGFzeW5jKT8uZGF0YS5sZW5ndGhcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImM4eS1saXN0X19pdGVtX19ibG9ja1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImM4eS1saXN0X19pdGVtX19pY29uXCI+XG4gICAgICAgIDxpIGNsYXNzPVwicC1sLTI0XCI+PC9pPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2JvZHkgdGV4dC10cnVuY2F0ZS13cmFwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWZsZXgtNTdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTVcIj5cbiAgICAgICAgICAgIHt7ICdPcGVyYXRpb24nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4LWdyb3dcIlxuICAgICAgICAgICAgKm5nSWY9XCIhZGV2aWNlSWRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdEZXZpY2UnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XG4gICAgICAgICAgICB7eyAnRGF0ZSBjcmVhdGVkJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImM4eS1saXN0X19pdGVtX19hY3Rpb25zXCI+PC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJkLWNvbnRlbnRzXCJcbiAgICAqYzh5Rm9yPVwiXG4gICAgICBsZXQgb3Agb2Ygb3BlcmF0aW9ucyQgfCBhc3luYztcbiAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICByZWFsdGltZTogcmVhbHRpbWU7XG4gICAgICByZWFsdGltZU9wdGlvbnM6IHsgZW50aXR5T3JJZDogZGV2aWNlSWQgfTtcbiAgICAgIGNvbXBhcmF0b3I6IGNvbXBhcmVPcGVyYXRpb25zLmJpbmQodGhpcyk7XG4gICAgICBsb2FkTW9yZTogJ2F1dG8nXG4gICAgXCJcbiAgPlxuICAgIDxjOHktb3BlcmF0aW9ucy1saXN0LWl0ZW1cbiAgICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgICBbb3BlcmF0aW9uXT1cIm9wXCJcbiAgICAgIFtpc1NtYXJ0UnVsZXNNaWNyb3NlcnZpY2VBdmFpbGFibGVdPVwiaXNTbWFydFJ1bGVzTWljcm9zZXJ2aWNlQXZhaWxhYmxlXCJcbiAgICAgIChyZWxvYWQpPVwicmVsb2FkJC5uZXh0KClcIlxuICAgICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICAgIGluaGVyaXRcbiAgICA+PC9jOHktb3BlcmF0aW9ucy1saXN0LWl0ZW0+XG4gIDwvZGl2PlxuPC9jOHktbGlzdC1ncm91cD5cbiJdfQ==
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9ucy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL29wZXJhdGlvbnMvb3BlcmF0aW9ucy1saXN0L29wZXJhdGlvbnMtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9vcGVyYXRpb25zL29wZXJhdGlvbnMtbGlzdC9vcGVyYXRpb25zLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQ0wsT0FBTyxFQUNQLHdCQUF3QixFQUd4QiwrQkFBK0IsRUFDaEMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQ0wsaUNBQWlDLEVBQ2pDLCtCQUErQixFQUNoQyxNQUFNLG1EQUFtRCxDQUFDO0FBQzNELE9BQU8sRUFHTCw0QkFBNEIsRUFDN0IsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RSxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7O0FBYWxFLE1BQU0sT0FBTyx1QkFBdUI7SUF5Q2xDLFlBQ1MsUUFBa0MsRUFDakMscUJBQTRDLEVBQzVDLEtBQXFCO1FBRnRCLGFBQVEsR0FBUixRQUFRLENBQTBCO1FBQ2pDLDBCQUFxQixH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d0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJT3BlcmF0aW9uLCBJUmVzdWx0TGlzdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIGdldHRleHQsXG4gIE9wZXJhdGlvblJlYWx0aW1lU2VydmljZSxcbiAgUHJvZHVjdEV4cGVyaWVuY2VFdmVudCxcbiAgUHJvZHVjdEV4cGVyaWVuY2VFdmVudFNvdXJjZSxcbiAgUFJPRFVDVF9FWFBFUklFTkNFX0VWRU5UX1NPVVJDRVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIFNJTkdMRV9PUEVSQVRJT05fRVZFTlRfREVWSUNFX1RBQixcbiAgU0lOR0xFX09QRVJBVElPTl9FVkVOVF9PVkVSVklFV1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL29wZXJhdGlvbnMvcHJvZHVjdC1leHBlcmllbmNlJztcbmltcG9ydCB7XG4gIE9wZXJhdGlvblN0YXR1c09wdGlvbixcbiAgT3BlcmF0aW9uU3RhdHVzT3B0aW9uc01hcFNoYXJlZCxcbiAgT1BFUkFUSU9OX1NUQVRVU19PUFRJT05TX01BUFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL29wZXJhdGlvbnMvc2hhcmVkJztcbmltcG9ydCB7IFN0YXR1c0ZpbHRlckNvbXBvbmVudCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvb3BlcmF0aW9ucy9zdGF0dXMtZmlsdGVyJztcbmltcG9ydCB7IGZsYXR0ZW4gfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBwaXBlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9wZXJhdGlvbnNMaXN0U2VydmljZSB9IGZyb20gJy4vb3BlcmF0aW9ucy1saXN0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktb3BlcmF0aW9ucy1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICdvcGVyYXRpb25zLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICBPcGVyYXRpb25SZWFsdGltZVNlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogUFJPRFVDVF9FWFBFUklFTkNFX0VWRU5UX1NPVVJDRSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE9wZXJhdGlvbnNMaXN0Q29tcG9uZW50KVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBPcGVyYXRpb25zTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIFByb2R1Y3RFeHBlcmllbmNlRXZlbnRTb3VyY2Uge1xuICBkZXZpY2VJZDogc3RyaW5nIHwgbnVtYmVyID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJlbnQuZGF0YS5jb250ZXh0RGF0YT8uaWQ7XG4gIE9QRVJBVElPTl9TVEFUVVNfT1BUSU9OU19NQVA6IE9wZXJhdGlvblN0YXR1c09wdGlvbnNNYXBTaGFyZWQgPSBPUEVSQVRJT05fU1RBVFVTX09QVElPTlNfTUFQO1xuXG4gIHRpdGxlOiBzdHJpbmc7XG4gIHJlZnJlc2hMb2FkaW5nID0gZmFsc2U7XG4gIGlzU21hcnRSdWxlc01pY3Jvc2VydmljZUF2YWlsYWJsZSA9IGZhbHNlO1xuICBzaG93T3ZlcnZpZXdCcmVhZGNydW1icyA9IGZhbHNlO1xuICBzdGF0dXNGaWx0ZXIkOiBCZWhhdmlvclN1YmplY3Q8T3BlcmF0aW9uU3RhdHVzT3B0aW9uW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgcmVsb2FkJDogQmVoYXZpb3JTdWJqZWN0PHZvaWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgQFZpZXdDaGlsZCgnc3RhdHVzRmlsdGVyJywgeyBzdGF0aWM6IHRydWUgfSkgc3RhdHVzRmlsdGVyOiBTdGF0dXNGaWx0ZXJDb21wb25lbnQ7XG5cbiAgb3BlcmF0aW9ucyQ6IE9ic2VydmFibGU8SVJlc3VsdExpc3Q8SU9wZXJhdGlvbj4+ID0gY29tYmluZUxhdGVzdChcbiAgICB0aGlzLnN0YXR1c0ZpbHRlciQsXG4gICAgdGhpcy5yZWxvYWQkXG4gICkucGlwZShcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5yZWZyZXNoTG9hZGluZyA9IHRydWU7XG4gICAgfSksXG4gICAgc3dpdGNoTWFwKChbc3RhdHVzRmlsdGVyc10pID0+IHRoaXMuZmlsdGVyKHN0YXR1c0ZpbHRlcnMpKSxcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5yZWZyZXNoTG9hZGluZyA9IGZhbHNlO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgb3BlcmF0aW9uc0ZpbHRlclBpcGUgPSBwaXBlKFxuICAgIG1hcCgob3BlcmF0aW9uczogSU9wZXJhdGlvbltdKSA9PiB7XG4gICAgICBjb25zdCBzdGF0dXNGaWx0ZXJzID0gdGhpcy5zdGF0dXNGaWx0ZXIkLmdldFZhbHVlKCk7XG4gICAgICBpZiAoIXN0YXR1c0ZpbHRlcnMgfHwgIXN0YXR1c0ZpbHRlcnMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBvcGVyYXRpb25zO1xuICAgICAgfVxuICAgICAgY29uc3QgYWxsb3dlZFN0YXR1c2VzID0gZmxhdHRlbihzdGF0dXNGaWx0ZXJzLm1hcChzZiA9PiBzZi5zdGF0dXMpKTtcbiAgICAgIHJldHVybiBvcGVyYXRpb25zLmZpbHRlcihvcCA9PiBhbGxvd2VkU3RhdHVzZXMuaW5jbHVkZXMob3Auc3RhdHVzKSk7XG4gICAgfSlcbiAgKTtcblxuICBwcm9kdWN0RXhwZXJpZW5jZUV2ZW50OiBQcm9kdWN0RXhwZXJpZW5jZUV2ZW50ID0ge1xuICAgIGV2ZW50TmFtZTogISF0aGlzLmRldmljZUlkID8gU0lOR0xFX09QRVJBVElPTl9FVkVOVF9ERVZJQ0VfVEFCIDogU0lOR0xFX09QRVJBVElPTl9FVkVOVF9PVkVSVklFV1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFsdGltZTogT3BlcmF0aW9uUmVhbHRpbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3BlcmF0aW9uc0xpc3RTZXJ2aWNlOiBPcGVyYXRpb25zTGlzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGVcbiAgKSB7XG4gICAgdGhpcy50aXRsZSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyZW50LmRhdGEuY29udGV4dERhdGFcbiAgICAgID8gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJlbnQuZGF0YS5jb250ZXh0RGF0YS5uYW1lXG4gICAgICA6IGdldHRleHQoJ1NpbmdsZSBvcGVyYXRpb25zJyk7XG4gICAgdGhpcy5zaG93T3ZlcnZpZXdCcmVhZGNydW1icyA9ICF0aGlzLmRldmljZUlkO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pc1NtYXJ0UnVsZXNNaWNyb3NlcnZpY2VBdmFpbGFibGUgPVxuICAgICAgYXdhaXQgdGhpcy5vcGVyYXRpb25zTGlzdFNlcnZpY2UuaXNTbWFydFJ1bGVzTWljcm9zZXJ2aWNlQXZhaWxhYmxlKCk7XG4gIH1cblxuICBmaWx0ZXIoc3RhdHVzRmlsdGVyczogT3BlcmF0aW9uU3RhdHVzT3B0aW9uW10pIHtcbiAgICBjb25zdCBzdGF0dXMgPVxuICAgICAgc3RhdHVzRmlsdGVycyAmJiBzdGF0dXNGaWx0ZXJzLmxlbmd0aCA+IDBcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBzdGF0dXM6IGZsYXR0ZW4oc3RhdHVzRmlsdGVycy5tYXAoc3RhdHVzRmlsdGVyID0+IHN0YXR1c0ZpbHRlci5zdGF0dXMpKVxuICAgICAgICAgIH1cbiAgICAgICAgOiB7fTtcblxuICAgIHJldHVybiB0aGlzLmdldE9wZXJhdGlvbnMoc3RhdHVzKTtcbiAgfVxuXG4gIGdldE9wZXJhdGlvbnMoZmlsdGVyPykge1xuICAgIGNvbnN0IHF1ZXJ5RmlsdGVyID0gdGhpcy5kZXZpY2VJZCA/IHsgLi4uZmlsdGVyLCBkZXZpY2VJZDogdGhpcy5kZXZpY2VJZCB9IDogZmlsdGVyO1xuICAgIHJldHVybiB0aGlzLm9wZXJhdGlvbnNMaXN0U2VydmljZS5nZXRPcGVyYXRpb25zKHF1ZXJ5RmlsdGVyKTtcbiAgfVxuXG4gIGNvbXBhcmVPcGVyYXRpb25zKG9wZXJhdGlvbkE6IElPcGVyYXRpb24sIG9wZXJhdGlvbkI6IElPcGVyYXRpb24pOiBudW1iZXIge1xuICAgIHJldHVybiAoXG4gICAgICBuZXcgRGF0ZShvcGVyYXRpb25BLmNyZWF0aW9uVGltZSkuZ2V0VGltZSgpIC0gbmV3IERhdGUob3BlcmF0aW9uQi5jcmVhdGlvblRpbWUpLmdldFRpbWUoKVxuICAgICk7XG4gIH1cbn1cbiIsIjxjOHktdGl0bGU+e3sgdGl0bGUgfCB0cmFuc2xhdGUgfX08L2M4eS10aXRsZT5cblxuPGM4eS1icmVhZGNydW1iICpuZ0lmPVwic2hvd092ZXJ2aWV3QnJlYWRjcnVtYnNcIj5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCInYzh5LW92ZXJ2aWV3cydcIlxuICAgIFtsYWJlbF09XCInT3ZlcnZpZXdzJyB8IHRyYW5zbGF0ZVwiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgW2ljb25dPVwiJ2M4eS1kZXZpY2UtY29udHJvbCdcIlxuICAgIFtsYWJlbF09XCInRGV2aWNlIENvbnRyb2wnIHwgdHJhbnNsYXRlXCJcbiAgICBbcGF0aF09XCInZGV2aWNlY29udHJvbC9zaW5nbGUnXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCInYzh5LWRldmljZS1jb250cm9sJ1wiXG4gICAgW2xhYmVsXT1cIidTaW5nbGUgb3BlcmF0aW9ucycgfCB0cmFuc2xhdGVcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuPC9jOHktYnJlYWRjcnVtYj5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgW3BsYWNlbWVudF09XCInbGVmdCdcIlxuICBpdGVtQ2xhc3M9XCJuYXZiYXItZm9ybVwiXG4+XG4gIDxjOHktc3RhdHVzLWZpbHRlclxuICAgICNzdGF0dXNGaWx0ZXJcbiAgICBbb3B0aW9uc109XCJPUEVSQVRJT05fU1RBVFVTX09QVElPTlNfTUFQXCJcbiAgICAob25GaWx0ZXJDaGFuZ2VkKT1cInN0YXR1c0ZpbHRlciQubmV4dCgkZXZlbnQpXCJcbiAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgIGluaGVyaXRcbiAgPjwvYzh5LXN0YXR1cy1maWx0ZXI+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiPlxuICA8Yzh5LXJlYWx0aW1lLWJ0biBbc2VydmljZV09XCJyZWFsdGltZVwiPjwvYzh5LXJlYWx0aW1lLWJ0bj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW0gW3BsYWNlbWVudF09XCIncmlnaHQnXCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGluayBkLWZsZXggYS1pLWNlbnRlclwiXG4gICAgdGl0bGU9XCJ7eyAnUmVsb2FkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgKGNsaWNrKT1cInJlbG9hZCQubmV4dCgpXCJcbiAgPlxuICAgIDxpXG4gICAgICBjbGFzcz1cIm0tci00XCJcbiAgICAgIGM4eUljb249XCJyZWZyZXNoXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2ljb24tc3Bpbic6IHJlZnJlc2hMb2FkaW5nIH1cIlxuICAgID48L2k+XG4gICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+XG4gICAgICB7eyAnUmVsb2FkJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktaGVscFxuICBzcmM9XCIvZG9jcy9kZXZpY2UtbWFuYWdlbWVudC1hcHBsaWNhdGlvbi9tb25pdG9yaW5nLWFuZC1jb250cm9sbGluZy1kZXZpY2VzLyN0by12aWV3LXNpbmdsZS1vcGVyYXRpb25zXCJcbj48L2M4eS1oZWxwPlxuXG48IS0tIEVtcHR5IHN0YXRlICAtLT5cbjxjOHktdWktZW1wdHktc3RhdGVcbiAgW2ljb25dPVwiJ2M4eS1lbmVyZ3knXCJcbiAgW3RpdGxlXT1cIidObyBpdGVtcyB0byBkaXNwbGF5LicgfCB0cmFuc2xhdGVcIlxuICBbc3VidGl0bGVdPVwiJ09wZXJhdGlvbnMgd2lsbCBiZSBkaXNwbGF5ZWQgaGVyZS4nIHwgdHJhbnNsYXRlXCJcbiAgKm5nSWY9XCIob3BlcmF0aW9ucyQgfCBhc3luYyk/LmRhdGEubGVuZ3RoID09PSAwICYmICEoc3RhdHVzRmlsdGVyJCB8IGFzeW5jKVwiXG4+PC9jOHktdWktZW1wdHktc3RhdGU+XG48IS0tIE5vIHJlc3VsdHMgZW1wdHkgc3RhdGUgLS0+XG48Yzh5LXVpLWVtcHR5LXN0YXRlXG4gIFtpY29uXT1cIidzZWFyY2gnXCJcbiAgW3RpdGxlXT1cIidObyByZXN1bHRzIHRvIGRpc3BsYXkuJyB8IHRyYW5zbGF0ZVwiXG4gIFtzdWJ0aXRsZV09XCInQWRqdXN0IG9yIHJlc2V0IHRoZSBmaWx0ZXIuJyB8IHRyYW5zbGF0ZVwiXG4gICpuZ0lmPVwiKG9wZXJhdGlvbnMkIHwgYXN5bmMpPy5kYXRhLmxlbmd0aCA9PT0gMCAmJiAoc3RhdHVzRmlsdGVyJCB8IGFzeW5jKVwiXG4+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgdGl0bGU9XCJ7eyAnUmVzZXQgZmlsdGVyJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgKGNsaWNrKT1cInN0YXR1c0ZpbHRlci5yZXNldCgpXCJcbiAgICB0cmFuc2xhdGVcbiAgPlxuICAgIFJlc2V0IGZpbHRlclxuICA8L2J1dHRvbj5cbjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuXG48IS0tIERldGFpbGVkIGxpc3Qgb2Ygb3BlcmF0aW9ucyArIGxvYWQgbW9yZSBidXR0b24gLS0+XG48Yzh5LWxpc3QtZ3JvdXAgY2xhc3M9XCJtLWItMjRcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwicGFnZS1zdGlja3ktaGVhZGVyIGM4eS1saXN0X19pdGVtIGM4eS1saXN0X19pdGVtLS1kb3VibGUtYWN0aW9ucyBoaWRkZW4teHNcIlxuICAgICpuZ0lmPVwiKG9wZXJhdGlvbnMkIHwgYXN5bmMpPy5kYXRhLmxlbmd0aFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2Jsb2NrXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2ljb25cIj5cbiAgICAgICAgPGkgY2xhc3M9XCJwLWwtMjRcIj48L2k+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjOHktbGlzdF9faXRlbV9fYm9keSB0ZXh0LXRydW5jYXRlLXdyYXBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtZmxleC01N1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNVwiPlxuICAgICAgICAgICAge3sgJ09wZXJhdGlvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImZsZXgtZ3Jvd1wiXG4gICAgICAgICAgICAqbmdJZj1cIiFkZXZpY2VJZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ0RldmljZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cbiAgICAgICAgICAgIHt7ICdEYXRlIGNyZWF0ZWQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2FjdGlvbnNcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgICpjOHlGb3I9XCJcbiAgICAgIGxldCBvcCBvZiBvcGVyYXRpb25zJCB8IGFzeW5jO1xuICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgIHJlYWx0aW1lOiByZWFsdGltZTtcbiAgICAgIHJlYWx0aW1lT3B0aW9uczogeyBlbnRpdHlPcklkOiBkZXZpY2VJZCwgcmVtb3ZlT25VcGRhdGU6IHRydWUsIGluc2VydE9uVXBkYXRlOiB0cnVlIH07XG4gICAgICBjb21wYXJhdG9yOiBjb21wYXJlT3BlcmF0aW9ucy5iaW5kKHRoaXMpO1xuICAgICAgbG9hZE1vcmU6ICdhdXRvJztcbiAgICAgIHBpcGU6IG9wZXJhdGlvbnNGaWx0ZXJQaXBlXG4gICAgXCJcbiAgPlxuICAgIDxjOHktb3BlcmF0aW9ucy1saXN0LWl0ZW1cbiAgICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgICBbb3BlcmF0aW9uXT1cIm9wXCJcbiAgICAgIFtpc1NtYXJ0UnVsZXNNaWNyb3NlcnZpY2VBdmFpbGFibGVdPVwiaXNTbWFydFJ1bGVzTWljcm9zZXJ2aWNlQXZhaWxhYmxlXCJcbiAgICAgIChyZWxvYWQpPVwicmVsb2FkJC5uZXh0KClcIlxuICAgICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICAgIGluaGVyaXRcbiAgICA+PC9jOHktb3BlcmF0aW9ucy1saXN0LWl0ZW0+XG4gIDwvZGl2PlxuPC9jOHktbGlzdC1ncm91cD5cbiJdfQ==
|