@c8y/ngx-components 1018.0.43 → 1018.0.45
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/esm2020/sub-assets/add-group/add-group.component.mjs +12 -6
- package/esm2020/sub-assets/sub-assets.component.mjs +10 -6
- package/fesm2015/c8y-ngx-components-sub-assets.mjs +59 -49
- package/fesm2015/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-sub-assets.mjs +59 -49
- package/fesm2020/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/package.json +1 -1
- package/sub-assets/add-group/add-group.component.d.ts +3 -2
- package/sub-assets/sub-assets.component.d.ts +3 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild } from '@angular/core';
|
|
2
2
|
import { FormBuilder, Validators } from '@angular/forms';
|
|
3
|
-
import { AlertService, C8yStepper, GainsightService, gettext } from '@c8y/ngx-components';
|
|
3
|
+
import { AlertService, C8yStepper, GainsightService, Permissions, gettext } from '@c8y/ngx-components';
|
|
4
4
|
import { PRODUCT_EXPERIENCE } from '../shared/sub-assets.model';
|
|
5
5
|
import { SubAssetsService } from '../sub-assets.service';
|
|
6
6
|
import { AddGroupService } from './add-group.service';
|
|
@@ -13,12 +13,13 @@ import * as i5 from "@angular/common";
|
|
|
13
13
|
import * as i6 from "@angular/cdk/stepper";
|
|
14
14
|
import * as i7 from "@c8y/ngx-components/device-grid";
|
|
15
15
|
export class AddGroupComponent {
|
|
16
|
-
constructor(fb, addGroupService, alert, subAssetsService, gainsightService) {
|
|
16
|
+
constructor(fb, addGroupService, alert, subAssetsService, gainsightService, permissionsService) {
|
|
17
17
|
this.fb = fb;
|
|
18
18
|
this.addGroupService = addGroupService;
|
|
19
19
|
this.alert = alert;
|
|
20
20
|
this.subAssetsService = subAssetsService;
|
|
21
21
|
this.gainsightService = gainsightService;
|
|
22
|
+
this.permissionsService = permissionsService;
|
|
22
23
|
this.refresh = new EventEmitter();
|
|
23
24
|
this.onDeviceQueryStringChange = new EventEmitter();
|
|
24
25
|
this.onCancel = new EventEmitter();
|
|
@@ -52,7 +53,12 @@ export class AddGroupComponent {
|
|
|
52
53
|
description: ['']
|
|
53
54
|
});
|
|
54
55
|
this.subscription = this.onCancel.subscribe(() => this.resetStepper());
|
|
55
|
-
this.canCreateGroup =
|
|
56
|
+
this.canCreateGroup =
|
|
57
|
+
this.subAssetsService.canCreateGroup() ||
|
|
58
|
+
(await this.permissionsService.canEdit([], { id: this.currentGroupId }, {
|
|
59
|
+
skipOwnerCheck: true,
|
|
60
|
+
skipRolesCheck: true
|
|
61
|
+
}));
|
|
56
62
|
this.canAssignDevice = await this.subAssetsService.canAssignDevice({
|
|
57
63
|
id: this.currentGroupId
|
|
58
64
|
});
|
|
@@ -105,12 +111,12 @@ export class AddGroupComponent {
|
|
|
105
111
|
}
|
|
106
112
|
}
|
|
107
113
|
}
|
|
108
|
-
AddGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AddGroupComponent, deps: [{ token: i1.FormBuilder }, { token: i2.AddGroupService }, { token: i3.AlertService }, { token: i4.SubAssetsService }, { token: i3.GainsightService }], target: i0.ɵɵFactoryTarget.Component });
|
|
114
|
+
AddGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AddGroupComponent, deps: [{ token: i1.FormBuilder }, { token: i2.AddGroupService }, { token: i3.AlertService }, { token: i4.SubAssetsService }, { token: i3.GainsightService }, { token: i3.Permissions }], target: i0.ɵɵFactoryTarget.Component });
|
|
109
115
|
AddGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AddGroupComponent, selector: "c8y-add-group", inputs: { currentGroupId: "currentGroupId", refresh: "refresh" }, outputs: { onDeviceQueryStringChange: "onDeviceQueryStringChange", onCancel: "onCancel" }, host: { listeners: { "document:keydown.enter": "onEnterKeyDown($event)", "document:keydown.escape": "onEscapeKeyDown($event)" } }, viewQueries: [{ propertyName: "stepper", first: true, predicate: C8yStepper, descendants: true }, { propertyName: "nameInputRef", first: true, predicate: ["nameRef"], descendants: true }], ngImport: i0, template: "<div class=\"d-contents\" *ngIf=\"!currentGroupId; else stepper\">\n <ng-container [ngTemplateOutlet]=\"stepper\"></ng-container>\n</div>\n\n<ng-template #stepper>\n <c8y-stepper\n class=\"d-col flex-nowrap no-align-items fit-h c8y-stepper--no-btns\"\n [disableDefaultIcons]=\"{ edit: true, done: false }\"\n [customClasses]=\"['col-md-6', 'col-md-offset-3', 'm-t-24', 'm-b-40', 'p-0', 'flex-no-shrink']\"\n linear\n c8yProductExperience\n inherit\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{ component: PRODUCT_EXPERIENCE.ADD_GROUP.COMPONENTS.ADD_GROUP }\"\n >\n <cdk-step [stepControl]=\"formGroupStepOne\" [label]=\"'New group' | translate\">\n <div class=\"p-16 p-t-0 flex-no-shrink separator-bottom col-xs-12\">\n <div class=\"row\">\n <div class=\"col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\">\n <div class=\"h4 text-center text-medium\">\n {{ 'New group' | translate }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-xs-12 flex-grow no-gutter\">\n <div class=\"card-inner-scroll fit-h\">\n <div class=\"card-block p-b-0\">\n <div class=\"row\">\n <div class=\"col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\">\n <c8y-form-group [novalidation]=\"true\">\n <div [formGroup]=\"formGroupStepOne\">\n <c8y-form-group>\n <label translate>Name</label>\n <input\n class=\"form-control\"\n type=\"text\"\n formControlName=\"name\"\n placeholder=\"{{ 'e.g. First floor' | translate }} \"\n maxlength=\"254\"\n #nameRef\n required\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Description</label>\n <input\n class=\"form-control\"\n type=\"text\"\n formControlName=\"description\"\n placeholder=\"{{ 'e.g. first floor devices' | translate }}\"\n />\n </c8y-form-group>\n </div>\n </c8y-form-group>\n <c8y-form-group>\n <div [formGroup]=\"formGroupStepOne\"></div>\n </c8y-form-group>\n <div class=\"alert alert-info max-width-100\" translate *ngIf=\"!canAssignDevice\">\n You don't have permission to assign devices.\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <c8y-stepper-buttons\n class=\"d-block card-footer p-24 separator\"\n (onCancel)=\"onCancel.emit()\"\n (onCustom)=\"createGroup()\"\n [disabled]=\"!canCreateGroup\"\n [labels]=\"\n canAssignDevice\n ? { next: btnLabels.next, cancel: btnLabels.cancel }\n : { custom: btnLabels.create, cancel: btnLabels.cancel }\n \"\n [showButtons]=\"\n canAssignDevice ? { next: true, cancel: true } : { custom: true, cancel: true }\n \"\n ></c8y-stepper-buttons>\n </cdk-step>\n <cdk-step [label]=\"'Assign devices' | translate\">\n <div class=\"p-16 p-t-0 flex-no-shrink separator-bottom col-xs-12\">\n <div class=\"row\">\n <div class=\"col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\">\n <div class=\"h4 text-center text-medium\">\n {{ 'Assign devices' | translate }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-xs-12 no-gutter flex-grow\">\n <c8y-device-grid\n [title]=\"'Select target devices' | translate\"\n [actionControls]=\"[]\"\n [infiniteScroll]=\"'auto'\"\n [selectable]=\"true\"\n [pagination]=\"pagination\"\n (itemsSelect)=\"onSelected($event)\"\n [refresh]=\"refresh\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{ component: PRODUCT_EXPERIENCE.ADD_GROUP.COMPONENTS.ADD_GROUP }\"\n ></c8y-device-grid>\n </div>\n <c8y-stepper-buttons\n class=\"d-block card-footer p-24 separator\"\n (onCancel)=\"onCancel.emit()\"\n (onCustom)=\"createGroup()\"\n [labels]=\"{ custom: btnLabels.create }\"\n [disabled]=\"!canAssignDevice\"\n [pending]=\"pendingStatus\"\n ></c8y-stepper-buttons>\n </cdk-step>\n </c8y-stepper>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { 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: "component", type: i3.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i3.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "component", type: i3.C8yStepper, selector: "c8y-stepper", inputs: ["disableDefaultIcons", "disableProgressButtons", "customClasses", "hideStepProgress", "useStepLabelsAsTitlesOnly"], outputs: ["onStepChange"] }, { kind: "component", type: i6.CdkStep, selector: "cdk-step", inputs: ["stepControl", "label", "errorMessage", "aria-label", "aria-labelledby", "state", "editable", "optional", "completed", "hasError"], outputs: ["interacted"], exportAs: ["cdkStep"] }, { kind: "component", type: i3.C8yStepperButtons, selector: "c8y-stepper-buttons", inputs: ["labels", "pending", "disabled", "showButtons"], outputs: ["onCancel", "onNext", "onBack", "onCustom"] }, { kind: "directive", type: i3.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i7.DeviceGridComponent, selector: "c8y-device-grid", inputs: ["dataCallback", "refresh", "title", "loadMoreItemsLabel", "loadingItemsLabel", "legacyConfigKey", "legacyFilterKey", "columns", "pagination", "infiniteScroll", "actionControls", "selectable", "baseQuery", "bulkActionControls", "headerActionControls", "childDeviceGrid", "parentDeviceId", "withChildren", "showSearch"], outputs: ["onColumnsChange", "onFilterChange", "onDeviceQueryStringChange", "itemsSelect"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }] });
|
|
110
116
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AddGroupComponent, decorators: [{
|
|
111
117
|
type: Component,
|
|
112
118
|
args: [{ selector: 'c8y-add-group', template: "<div class=\"d-contents\" *ngIf=\"!currentGroupId; else stepper\">\n <ng-container [ngTemplateOutlet]=\"stepper\"></ng-container>\n</div>\n\n<ng-template #stepper>\n <c8y-stepper\n class=\"d-col flex-nowrap no-align-items fit-h c8y-stepper--no-btns\"\n [disableDefaultIcons]=\"{ edit: true, done: false }\"\n [customClasses]=\"['col-md-6', 'col-md-offset-3', 'm-t-24', 'm-b-40', 'p-0', 'flex-no-shrink']\"\n linear\n c8yProductExperience\n inherit\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{ component: PRODUCT_EXPERIENCE.ADD_GROUP.COMPONENTS.ADD_GROUP }\"\n >\n <cdk-step [stepControl]=\"formGroupStepOne\" [label]=\"'New group' | translate\">\n <div class=\"p-16 p-t-0 flex-no-shrink separator-bottom col-xs-12\">\n <div class=\"row\">\n <div class=\"col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\">\n <div class=\"h4 text-center text-medium\">\n {{ 'New group' | translate }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-xs-12 flex-grow no-gutter\">\n <div class=\"card-inner-scroll fit-h\">\n <div class=\"card-block p-b-0\">\n <div class=\"row\">\n <div class=\"col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\">\n <c8y-form-group [novalidation]=\"true\">\n <div [formGroup]=\"formGroupStepOne\">\n <c8y-form-group>\n <label translate>Name</label>\n <input\n class=\"form-control\"\n type=\"text\"\n formControlName=\"name\"\n placeholder=\"{{ 'e.g. First floor' | translate }} \"\n maxlength=\"254\"\n #nameRef\n required\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Description</label>\n <input\n class=\"form-control\"\n type=\"text\"\n formControlName=\"description\"\n placeholder=\"{{ 'e.g. first floor devices' | translate }}\"\n />\n </c8y-form-group>\n </div>\n </c8y-form-group>\n <c8y-form-group>\n <div [formGroup]=\"formGroupStepOne\"></div>\n </c8y-form-group>\n <div class=\"alert alert-info max-width-100\" translate *ngIf=\"!canAssignDevice\">\n You don't have permission to assign devices.\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <c8y-stepper-buttons\n class=\"d-block card-footer p-24 separator\"\n (onCancel)=\"onCancel.emit()\"\n (onCustom)=\"createGroup()\"\n [disabled]=\"!canCreateGroup\"\n [labels]=\"\n canAssignDevice\n ? { next: btnLabels.next, cancel: btnLabels.cancel }\n : { custom: btnLabels.create, cancel: btnLabels.cancel }\n \"\n [showButtons]=\"\n canAssignDevice ? { next: true, cancel: true } : { custom: true, cancel: true }\n \"\n ></c8y-stepper-buttons>\n </cdk-step>\n <cdk-step [label]=\"'Assign devices' | translate\">\n <div class=\"p-16 p-t-0 flex-no-shrink separator-bottom col-xs-12\">\n <div class=\"row\">\n <div class=\"col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\">\n <div class=\"h4 text-center text-medium\">\n {{ 'Assign devices' | translate }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-xs-12 no-gutter flex-grow\">\n <c8y-device-grid\n [title]=\"'Select target devices' | translate\"\n [actionControls]=\"[]\"\n [infiniteScroll]=\"'auto'\"\n [selectable]=\"true\"\n [pagination]=\"pagination\"\n (itemsSelect)=\"onSelected($event)\"\n [refresh]=\"refresh\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{ component: PRODUCT_EXPERIENCE.ADD_GROUP.COMPONENTS.ADD_GROUP }\"\n ></c8y-device-grid>\n </div>\n <c8y-stepper-buttons\n class=\"d-block card-footer p-24 separator\"\n (onCancel)=\"onCancel.emit()\"\n (onCustom)=\"createGroup()\"\n [labels]=\"{ custom: btnLabels.create }\"\n [disabled]=\"!canAssignDevice\"\n [pending]=\"pendingStatus\"\n ></c8y-stepper-buttons>\n </cdk-step>\n </c8y-stepper>\n</ng-template>\n" }]
|
|
113
|
-
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.AddGroupService }, { type: i3.AlertService }, { type: i4.SubAssetsService }, { type: i3.GainsightService }]; }, propDecorators: { currentGroupId: [{
|
|
119
|
+
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.AddGroupService }, { type: i3.AlertService }, { type: i4.SubAssetsService }, { type: i3.GainsightService }, { type: i3.Permissions }]; }, propDecorators: { currentGroupId: [{
|
|
114
120
|
type: Input
|
|
115
121
|
}], refresh: [{
|
|
116
122
|
type: Input
|
|
@@ -131,4 +137,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
131
137
|
type: HostListener,
|
|
132
138
|
args: ['document:keydown.escape', ['$event']]
|
|
133
139
|
}] } });
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3N1Yi1hc3NldHMvYWRkLWdyb3VwL2FkZC1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zdWItYXNzZXRzL2FkZC1ncm91cC9hZGQtZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFDTCxZQUFZLEVBQ1osVUFBVSxFQUNWLGdCQUFnQixFQUVoQixPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7OztBQU10RCxNQUFNLE9BQU8saUJBQWlCO0lBNEI1QixZQUNVLEVBQWUsRUFDZixlQUFnQyxFQUNoQyxLQUFtQixFQUNuQixnQkFBa0MsRUFDbEMsZ0JBQWtDO1FBSmxDLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUEvQm5DLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2pDLDhCQUF5QixHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzdFLGFB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QkFBdEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0kseUJBQXlCO3NCQUFsQyxNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBRVAsT0FBTztzQkFETixTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBR3hDLFlBQVk7c0JBRFgsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQTZCYSxjQUFjO3NCQUFqRSxZQUFZO3VCQUFDLHdCQUF3QixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVNHLGVBQWU7c0JBQW5FLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBbGVydFNlcnZpY2UsXG4gIEM4eVN0ZXBwZXIsXG4gIEdhaW5zaWdodFNlcnZpY2UsXG4gIFBhZ2luYXRpb24sXG4gIGdldHRleHRcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBST0RVQ1RfRVhQRVJJRU5DRSB9IGZyb20gJy4uL3NoYXJlZC9zdWItYXNzZXRzLm1vZGVsJztcbmltcG9ydCB7IFN1YkFzc2V0c1NlcnZpY2UgfSBmcm9tICcuLi9zdWItYXNzZXRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWRkR3JvdXBTZXJ2aWNlIH0gZnJvbSAnLi9hZGQtZ3JvdXAuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1hZGQtZ3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWRkLWdyb3VwLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBBZGRHcm91cENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGN1cnJlbnRHcm91cElkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9uRGV2aWNlUXVlcnlTdHJpbmdDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBvbkNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAVmlld0NoaWxkKEM4eVN0ZXBwZXIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBzdGVwcGVyOiBDOHlTdGVwcGVyO1xuICBAVmlld0NoaWxkKCduYW1lUmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIG5hbWVJbnB1dFJlZjogRWxlbWVudFJlZjtcbiAgZGV2aWNlUXVlcnlTdHJpbmdPdXRwdXQ6IHN0cmluZztcbiAgZm9ybUdyb3VwU3RlcE9uZTogRm9ybUdyb3VwO1xuICBwZW5kaW5nU3RhdHVzID0gZmFsc2U7XG4gIHBhZ2luYXRpb246IFBhZ2luYXRpb24gPSB7IHBhZ2VTaXplOiAyMCwgY3VycmVudFBhZ2U6IDEgfTtcbiAgc2VsZWN0ZWQ6IHN0cmluZ1tdID0gW107XG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBjYW5DcmVhdGVHcm91cCA9IGZhbHNlO1xuICBjYW5Bc3NpZ25EZXZpY2UgPSBmYWxzZTtcbiAgUFJPRFVDVF9FWFBFUklFTkNFID0gUFJPRFVDVF9FWFBFUklFTkNFO1xuXG4gIHJlYWRvbmx5IElURU1TX1NFTEVDVF9MSU1JVDogbnVtYmVyID0gMTU7XG4gIHJlYWRvbmx5IGJ0bkxhYmVscyA9IHtcbiAgICBuZXh0OiBnZXR0ZXh0KCdOZXh0JyksXG4gICAgY2FuY2VsOiBnZXR0ZXh0KCdDYW5jZWwnKSxcbiAgICBjcmVhdGU6IGdldHRleHQoJ0NyZWF0ZScpXG4gIH07XG5cbiAgcHJpdmF0ZSBuYW1lSW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBhZGRHcm91cFNlcnZpY2U6IEFkZEdyb3VwU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0OiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdWJBc3NldHNTZXJ2aWNlOiBTdWJBc3NldHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ2FpbnNpZ2h0U2VydmljZTogR2FpbnNpZ2h0U2VydmljZVxuICApIHt9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lbnRlcicsIFsnJGV2ZW50J10pIG9uRW50ZXJLZXlEb3duKF9ldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIC8vIE9yZGVyIG1hdHRlcnMhIE5lZWRzIHRvIGJlIHBsYWNlZCBiZWZvcmUgdGhpcy5zdGVwcGVyLm5leHRcbiAgICBpZiAoKHRoaXMuaXNHcm91cERldGFpbHNTdGVwKCkgJiYgIXRoaXMuY2FuQXNzaWduRGV2aWNlKSB8fCB0aGlzLmlzQXNzaWduRGV2aWNlU3RlcCgpKSB7XG4gICAgICB0aGlzLmNyZWF0ZUdyb3VwKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RlcHBlci5uZXh0KCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScsIFsnJGV2ZW50J10pIG9uRXNjYXBlS2V5RG93bihfZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICB0aGlzLm9uQ2FuY2VsLmVtaXQoKTtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZm9ybUdyb3VwU3RlcE9uZSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgbmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIGRlc2NyaXB0aW9uOiBbJyddXG4gICAgfSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLm9uQ2FuY2VsLnN1YnNjcmliZSgoKSA9PiB0aGlzLnJlc2V0U3RlcHBlcigpKTtcbiAgICB0aGlzLmNhbkNyZWF0ZUdyb3VwID0gdGhpcy5zdWJBc3NldHNTZXJ2aWNlLmNhbkNyZWF0ZUdyb3VwKCk7XG4gICAgdGhpcy5jYW5Bc3NpZ25EZXZpY2UgPSBhd2FpdCB0aGlzLnN1YkFzc2V0c1NlcnZpY2UuY2FuQXNzaWduRGV2aWNlKHtcbiAgICAgIGlkOiB0aGlzLmN1cnJlbnRHcm91cElkXG4gICAgfSBhcyBJTWFuYWdlZE9iamVjdCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5uYW1lSW5wdXQgPSB0aGlzLm5hbWVJbnB1dFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgdGhpcy5zZXRGb2N1c09uTmFtZUlucHV0KCk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVHcm91cCgpIHtcbiAgICBpZiAodGhpcy5jYW5DcmVhdGVHcm91cCA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnBlbmRpbmdTdGF0dXMgPSB0cnVlO1xuICAgIGF3YWl0IHRoaXMuYWRkR3JvdXBTZXJ2aWNlLmNyZWF0ZUdyb3VwQW5kQXNzaWduRGV2aWNlcyhcbiAgICAgIHRoaXMuZm9ybUdyb3VwU3RlcE9uZS52YWx1ZSxcbiAgICAgIHRoaXMuY3VycmVudEdyb3VwSWQsXG4gICAgICB0aGlzLnNlbGVjdGVkXG4gICAgKTtcblxuICAgIHRoaXMucGVuZGluZ1N0YXR1cyA9IGZhbHNlO1xuICAgIHRoaXMucmVzZXRTdGVwcGVyKCk7XG4gICAgY29uc3QgYWxlcnRNc2cgPSBnZXR0ZXh0KCdHcm91cCBjcmVhdGVkLicpO1xuICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoUFJPRFVDVF9FWFBFUklFTkNFLkVWRU5ULCB7XG4gICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BRERfR1JPVVAuQ09NUE9ORU5UUy5BRERfR1JPVVAsXG4gICAgICB1cmw6IHdpbmRvdy5sb2NhdGlvbi5ocmVmLFxuICAgICAgcmVzdWx0OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQUREX0dST1VQLlJFU1VMVFMuQUREX1NVQ0NFU1NcbiAgICB9KTtcbiAgICB0aGlzLmFsZXJ0LnN1Y2Nlc3MoYWxlcnRNc2cpO1xuICAgIHRoaXMucmVmcmVzaC5lbWl0KCk7XG4gICAgdGhpcy5vbkNhbmNlbC5lbWl0KCk7XG4gIH1cblxuICBvblNlbGVjdGVkKHNlbGVjdGVkRGV2aWNlc0lEczogc3RyaW5nW10pIHtcbiAgICB0aGlzLnNlbGVjdGVkID0gc2VsZWN0ZWREZXZpY2VzSURzO1xuICB9XG5cbiAgcmVzZXRTdGVwcGVyKCkge1xuICAgIHRoaXMuc3RlcHBlci5yZXNldCgpO1xuICAgIHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4ID0gMTtcbiAgICB0aGlzLnNlbGVjdGVkID0gW107XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc0dyb3VwRGV0YWlsc1N0ZXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4ID09PSAwO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0Fzc2lnbkRldmljZVN0ZXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4ID09PSAxO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRGb2N1c09uTmFtZUlucHV0KCkge1xuICAgIGlmICh0aGlzLm5hbWVJbnB1dCkge1xuICAgICAgdGhpcy5uYW1lSW5wdXQuZm9jdXMoKTtcbiAgICAgIHRoaXMubmFtZUlucHV0LnNlbGVjdCgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImQtY29udGVudHNcIiAqbmdJZj1cIiFjdXJyZW50R3JvdXBJZDsgZWxzZSBzdGVwcGVyXCI+XG4gIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcHBlclwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjc3RlcHBlcj5cbiAgPGM4eS1zdGVwcGVyXG4gICAgY2xhc3M9XCJkLWNvbCBmbGV4LW5vd3JhcCBuby1hbGlnbi1pdGVtcyBmaXQtaCBjOHktc3RlcHBlci0tbm8tYnRuc1wiXG4gICAgW2Rpc2FibGVEZWZhdWx0SWNvbnNdPVwieyBlZGl0OiB0cnVlLCBkb25lOiBmYWxzZSB9XCJcbiAgICBbY3VzdG9tQ2xhc3Nlc109XCJbJ2NvbC1tZC02JywgJ2NvbC1tZC1vZmZzZXQtMycsICdtLXQtMjQnLCAnbS1iLTQwJywgJ3AtMCcsICdmbGV4LW5vLXNocmluayddXCJcbiAgICBsaW5lYXJcbiAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgIGluaGVyaXRcbiAgICBbYWN0aW9uTmFtZV09XCJQUk9EVUNUX0VYUEVSSUVOQ0UuRVZFTlRcIlxuICAgIFthY3Rpb25EYXRhXT1cInsgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQUREX0dST1VQLkNPTVBPTkVOVFMuQUREX0dST1VQIH1cIlxuICA+XG4gICAgPGNkay1zdGVwIFtzdGVwQ29udHJvbF09XCJmb3JtR3JvdXBTdGVwT25lXCIgW2xhYmVsXT1cIidOZXcgZ3JvdXAnIHwgdHJhbnNsYXRlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicC0xNiBwLXQtMCBmbGV4LW5vLXNocmluayBzZXBhcmF0b3ItYm90dG9tIGNvbC14cy0xMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNvbC1tZC1vZmZzZXQtMyBjb2wtbGctNCBjb2wtbGctb2Zmc2V0LTRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoNCB0ZXh0LWNlbnRlciB0ZXh0LW1lZGl1bVwiPlxuICAgICAgICAgICAgICB7eyAnTmV3IGdyb3VwJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGZsZXgtZ3JvdyBuby1ndXR0ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaW5uZXItc2Nyb2xsIGZpdC1oXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgcC1iLTBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNvbC1tZC1vZmZzZXQtMyBjb2wtbGctNCBjb2wtbGctb2Zmc2V0LTRcIj5cbiAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXAgW25vdmFsaWRhdGlvbl09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwU3RlcE9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5OYW1lPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLiBGaXJzdCBmbG9vcicgfCB0cmFuc2xhdGUgfX0gXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjI1NFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAjbmFtZVJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuXG4gICAgICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgdHJhbnNsYXRlPkRlc2NyaXB0aW9uPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4gZmlyc3QgZmxvb3IgZGV2aWNlcycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBTdGVwT25lXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtaW5mbyBtYXgtd2lkdGgtMTAwXCIgdHJhbnNsYXRlICpuZ0lmPVwiIWNhbkFzc2lnbkRldmljZVwiPlxuICAgICAgICAgICAgICAgICAgWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBhc3NpZ24gZGV2aWNlcy5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGM4eS1zdGVwcGVyLWJ1dHRvbnNcbiAgICAgICAgY2xhc3M9XCJkLWJsb2NrIGNhcmQtZm9vdGVyIHAtMjQgc2VwYXJhdG9yXCJcbiAgICAgICAgKG9uQ2FuY2VsKT1cIm9uQ2FuY2VsLmVtaXQoKVwiXG4gICAgICAgIChvbkN1c3RvbSk9XCJjcmVhdGVHcm91cCgpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5DcmVhdGVHcm91cFwiXG4gICAgICAgIFtsYWJlbHNdPVwiXG4gICAgICAgICAgY2FuQXNzaWduRGV2aWNlXG4gICAgICAgICAgICA/IHsgbmV4dDogYnRuTGFiZWxzLm5leHQsIGNhbmNlbDogYnRuTGFiZWxzLmNhbmNlbCB9XG4gICAgICAgICAgICA6IHsgY3VzdG9tOiBidG5MYWJlbHMuY3JlYXRlLCBjYW5jZWw6IGJ0bkxhYmVscy5jYW5jZWwgfVxuICAgICAgICBcIlxuICAgICAgICBbc2hvd0J1dHRvbnNdPVwiXG4gICAgICAgICAgY2FuQXNzaWduRGV2aWNlID8geyBuZXh0OiB0cnVlLCBjYW5jZWw6IHRydWUgfSA6IHsgY3VzdG9tOiB0cnVlLCBjYW5jZWw6IHRydWUgfVxuICAgICAgICBcIlxuICAgICAgPjwvYzh5LXN0ZXBwZXItYnV0dG9ucz5cbiAgICA8L2Nkay1zdGVwPlxuICAgIDxjZGstc3RlcCBbbGFiZWxdPVwiJ0Fzc2lnbiBkZXZpY2VzJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInAtMTYgcC10LTAgZmxleC1uby1zaHJpbmsgc2VwYXJhdG9yLWJvdHRvbSBjb2wteHMtMTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBjb2wtbWQtb2Zmc2V0LTMgY29sLWxnLTQgY29sLWxnLW9mZnNldC00XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaDQgdGV4dC1jZW50ZXIgdGV4dC1tZWRpdW1cIj5cbiAgICAgICAgICAgICAge3sgJ0Fzc2lnbiBkZXZpY2VzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIG5vLWd1dHRlciBmbGV4LWdyb3dcIj5cbiAgICAgICAgPGM4eS1kZXZpY2UtZ3JpZFxuICAgICAgICAgIFt0aXRsZV09XCInU2VsZWN0IHRhcmdldCBkZXZpY2VzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW2FjdGlvbkNvbnRyb2xzXT1cIltdXCJcbiAgICAgICAgICBbaW5maW5pdGVTY3JvbGxdPVwiJ2F1dG8nXCJcbiAgICAgICAgICBbc2VsZWN0YWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICBbcGFnaW5hdGlvbl09XCJwYWdpbmF0aW9uXCJcbiAgICAgICAgICAoaXRlbXNTZWxlY3QpPVwib25TZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICBbcmVmcmVzaF09XCJyZWZyZXNoXCJcbiAgICAgICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgICAgIFthY3Rpb25OYW1lXT1cIlBST0RVQ1RfRVhQRVJJRU5DRS5FVkVOVFwiXG4gICAgICAgICAgW2FjdGlvbkRhdGFdPVwieyBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BRERfR1JPVVAuQ09NUE9ORU5UUy5BRERfR1JPVVAgfVwiXG4gICAgICAgID48L2M4eS1kZXZpY2UtZ3JpZD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGM4eS1zdGVwcGVyLWJ1dHRvbnNcbiAgICAgICAgY2xhc3M9XCJkLWJsb2NrIGNhcmQtZm9vdGVyIHAtMjQgc2VwYXJhdG9yXCJcbiAgICAgICAgKG9uQ2FuY2VsKT1cIm9uQ2FuY2VsLmVtaXQoKVwiXG4gICAgICAgIChvbkN1c3RvbSk9XCJjcmVhdGVHcm91cCgpXCJcbiAgICAgICAgW2xhYmVsc109XCJ7IGN1c3RvbTogYnRuTGFiZWxzLmNyZWF0ZSB9XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5Bc3NpZ25EZXZpY2VcIlxuICAgICAgICBbcGVuZGluZ109XCJwZW5kaW5nU3RhdHVzXCJcbiAgICAgID48L2M4eS1zdGVwcGVyLWJ1dHRvbnM+XG4gICAgPC9jZGstc3RlcD5cbiAgPC9jOHktc3RlcHBlcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3N1Yi1hc3NldHMvYWRkLWdyb3VwL2FkZC1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zdWItYXNzZXRzL2FkZC1ncm91cC9hZGQtZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFDTCxZQUFZLEVBQ1osVUFBVSxFQUNWLGdCQUFnQixFQUVoQixXQUFXLEVBQ1gsT0FBTyxFQUNSLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7QUFNdEQsTUFBTSxPQUFPLGlCQUFpQjtJQTRCNUIsWUFDVSxFQUFlLEVBQ2YsZUFBZ0MsRUFDaEMsS0FBbUIsRUFDbkIsZ0JBQWtDLEVBQ2xDLGdCQUFrQyxFQUNsQyxrQkFBK0I7UUFML0IsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQWE7UUFoQ2hDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFB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U0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7OzhHQWxJVSxpQkFBaUI7a0dBQWpCLGlCQUFpQiw4WEFLakIsVUFBVSwwSUNqQ3ZCLDRxSkFzSEE7MkZEMUZhLGlCQUFpQjtrQkFKN0IsU0FBUzsrQkFDRSxlQUFlO21QQUloQixjQUFjO3NCQUF0QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSx5QkFBeUI7c0JBQWxDLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFFUCxPQUFPO3NCQUROLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFHeEMsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBOEJhLGNBQWM7c0JBQWpFLFlBQVk7dUJBQUMsd0JBQXdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBU0csZUFBZTtzQkFBbkUsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFsZXJ0U2VydmljZSxcbiAgQzh5U3RlcHBlcixcbiAgR2FpbnNpZ2h0U2VydmljZSxcbiAgUGFnaW5hdGlvbixcbiAgUGVybWlzc2lvbnMsXG4gIGdldHRleHRcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBST0RVQ1RfRVhQRVJJRU5DRSB9IGZyb20gJy4uL3NoYXJlZC9zdWItYXNzZXRzLm1vZGVsJztcbmltcG9ydCB7IFN1YkFzc2V0c1NlcnZpY2UgfSBmcm9tICcuLi9zdWItYXNzZXRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWRkR3JvdXBTZXJ2aWNlIH0gZnJvbSAnLi9hZGQtZ3JvdXAuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1hZGQtZ3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWRkLWdyb3VwLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBBZGRHcm91cENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGN1cnJlbnRHcm91cElkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9uRGV2aWNlUXVlcnlTdHJpbmdDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBvbkNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAVmlld0NoaWxkKEM4eVN0ZXBwZXIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBzdGVwcGVyOiBDOHlTdGVwcGVyO1xuICBAVmlld0NoaWxkKCduYW1lUmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIG5hbWVJbnB1dFJlZjogRWxlbWVudFJlZjtcbiAgZGV2aWNlUXVlcnlTdHJpbmdPdXRwdXQ6IHN0cmluZztcbiAgZm9ybUdyb3VwU3RlcE9uZTogRm9ybUdyb3VwO1xuICBwZW5kaW5nU3RhdHVzID0gZmFsc2U7XG4gIHBhZ2luYXRpb246IFBhZ2luYXRpb24gPSB7IHBhZ2VTaXplOiAyMCwgY3VycmVudFBhZ2U6IDEgfTtcbiAgc2VsZWN0ZWQ6IHN0cmluZ1tdID0gW107XG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBjYW5DcmVhdGVHcm91cCA9IGZhbHNlO1xuICBjYW5Bc3NpZ25EZXZpY2UgPSBmYWxzZTtcbiAgUFJPRFVDVF9FWFBFUklFTkNFID0gUFJPRFVDVF9FWFBFUklFTkNFO1xuXG4gIHJlYWRvbmx5IElURU1TX1NFTEVDVF9MSU1JVDogbnVtYmVyID0gMTU7XG4gIHJlYWRvbmx5IGJ0bkxhYmVscyA9IHtcbiAgICBuZXh0OiBnZXR0ZXh0KCdOZXh0JyksXG4gICAgY2FuY2VsOiBnZXR0ZXh0KCdDYW5jZWwnKSxcbiAgICBjcmVhdGU6IGdldHRleHQoJ0NyZWF0ZScpXG4gIH07XG5cbiAgcHJpdmF0ZSBuYW1lSW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBhZGRHcm91cFNlcnZpY2U6IEFkZEdyb3VwU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0OiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdWJBc3NldHNTZXJ2aWNlOiBTdWJBc3NldHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ2FpbnNpZ2h0U2VydmljZTogR2FpbnNpZ2h0U2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1pc3Npb25zU2VydmljZTogUGVybWlzc2lvbnNcbiAgKSB7fVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZW50ZXInLCBbJyRldmVudCddKSBvbkVudGVyS2V5RG93bihfZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAvLyBPcmRlciBtYXR0ZXJzISBOZWVkcyB0byBiZSBwbGFjZWQgYmVmb3JlIHRoaXMuc3RlcHBlci5uZXh0XG4gICAgaWYgKCh0aGlzLmlzR3JvdXBEZXRhaWxzU3RlcCgpICYmICF0aGlzLmNhbkFzc2lnbkRldmljZSkgfHwgdGhpcy5pc0Fzc2lnbkRldmljZVN0ZXAoKSkge1xuICAgICAgdGhpcy5jcmVhdGVHcm91cCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnN0ZXBwZXIubmV4dCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKSBvbkVzY2FwZUtleURvd24oX2V2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgdGhpcy5vbkNhbmNlbC5lbWl0KCk7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvcm1Hcm91cFN0ZXBPbmUgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIG5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBkZXNjcmlwdGlvbjogWycnXVxuICAgIH0pO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5vbkNhbmNlbC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZXNldFN0ZXBwZXIoKSk7XG4gICAgdGhpcy5jYW5DcmVhdGVHcm91cCA9XG4gICAgICB0aGlzLnN1YkFzc2V0c1NlcnZpY2UuY2FuQ3JlYXRlR3JvdXAoKSB8fFxuICAgICAgKGF3YWl0IHRoaXMucGVybWlzc2lvbnNTZXJ2aWNlLmNhbkVkaXQoXG4gICAgICAgIFtdLFxuICAgICAgICB7IGlkOiB0aGlzLmN1cnJlbnRHcm91cElkIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBza2lwT3duZXJDaGVjazogdHJ1ZSxcbiAgICAgICAgICBza2lwUm9sZXNDaGVjazogdHJ1ZVxuICAgICAgICB9XG4gICAgICApKTtcbiAgICB0aGlzLmNhbkFzc2lnbkRldmljZSA9IGF3YWl0IHRoaXMuc3ViQXNzZXRzU2VydmljZS5jYW5Bc3NpZ25EZXZpY2Uoe1xuICAgICAgaWQ6IHRoaXMuY3VycmVudEdyb3VwSWRcbiAgICB9IGFzIElNYW5hZ2VkT2JqZWN0KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLm5hbWVJbnB1dCA9IHRoaXMubmFtZUlucHV0UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICB0aGlzLnNldEZvY3VzT25OYW1lSW5wdXQoKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUdyb3VwKCkge1xuICAgIGlmICh0aGlzLmNhbkNyZWF0ZUdyb3VwID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucGVuZGluZ1N0YXR1cyA9IHRydWU7XG4gICAgYXdhaXQgdGhpcy5hZGRHcm91cFNlcnZpY2UuY3JlYXRlR3JvdXBBbmRBc3NpZ25EZXZpY2VzKFxuICAgICAgdGhpcy5mb3JtR3JvdXBTdGVwT25lLnZhbHVlLFxuICAgICAgdGhpcy5jdXJyZW50R3JvdXBJZCxcbiAgICAgIHRoaXMuc2VsZWN0ZWRcbiAgICApO1xuXG4gICAgdGhpcy5wZW5kaW5nU3RhdHVzID0gZmFsc2U7XG4gICAgdGhpcy5yZXNldFN0ZXBwZXIoKTtcbiAgICBjb25zdCBhbGVydE1zZyA9IGdldHRleHQoJ0dyb3VwIGNyZWF0ZWQuJyk7XG4gICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuRVZFTlQsIHtcbiAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkFERF9HUk9VUC5DT01QT05FTlRTLkFERF9HUk9VUCxcbiAgICAgIHVybDogd2luZG93LmxvY2F0aW9uLmhyZWYsXG4gICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BRERfR1JPVVAuUkVTVUxUUy5BRERfU1VDQ0VTU1xuICAgIH0pO1xuICAgIHRoaXMuYWxlcnQuc3VjY2VzcyhhbGVydE1zZyk7XG4gICAgdGhpcy5yZWZyZXNoLmVtaXQoKTtcbiAgICB0aGlzLm9uQ2FuY2VsLmVtaXQoKTtcbiAgfVxuXG4gIG9uU2VsZWN0ZWQoc2VsZWN0ZWREZXZpY2VzSURzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZERldmljZXNJRHM7XG4gIH1cblxuICByZXNldFN0ZXBwZXIoKSB7XG4gICAgdGhpcy5zdGVwcGVyLnJlc2V0KCk7XG4gICAgdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXggPSAxO1xuICAgIHRoaXMuc2VsZWN0ZWQgPSBbXTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzR3JvdXBEZXRhaWxzU3RlcCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXggPT09IDA7XG4gIH1cblxuICBwcml2YXRlIGlzQXNzaWduRGV2aWNlU3RlcCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXggPT09IDE7XG4gIH1cblxuICBwcml2YXRlIHNldEZvY3VzT25OYW1lSW5wdXQoKSB7XG4gICAgaWYgKHRoaXMubmFtZUlucHV0KSB7XG4gICAgICB0aGlzLm5hbWVJbnB1dC5mb2N1cygpO1xuICAgICAgdGhpcy5uYW1lSW5wdXQuc2VsZWN0KCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZC1jb250ZW50c1wiICpuZ0lmPVwiIWN1cnJlbnRHcm91cElkOyBlbHNlIHN0ZXBwZXJcIj5cbiAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwcGVyXCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNzdGVwcGVyPlxuICA8Yzh5LXN0ZXBwZXJcbiAgICBjbGFzcz1cImQtY29sIGZsZXgtbm93cmFwIG5vLWFsaWduLWl0ZW1zIGZpdC1oIGM4eS1zdGVwcGVyLS1uby1idG5zXCJcbiAgICBbZGlzYWJsZURlZmF1bHRJY29uc109XCJ7IGVkaXQ6IHRydWUsIGRvbmU6IGZhbHNlIH1cIlxuICAgIFtjdXN0b21DbGFzc2VzXT1cIlsnY29sLW1kLTYnLCAnY29sLW1kLW9mZnNldC0zJywgJ20tdC0yNCcsICdtLWItNDAnLCAncC0wJywgJ2ZsZXgtbm8tc2hyaW5rJ11cIlxuICAgIGxpbmVhclxuICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgaW5oZXJpdFxuICAgIFthY3Rpb25OYW1lXT1cIlBST0RVQ1RfRVhQRVJJRU5DRS5FVkVOVFwiXG4gICAgW2FjdGlvbkRhdGFdPVwieyBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BRERfR1JPVVAuQ09NUE9ORU5UUy5BRERfR1JPVVAgfVwiXG4gID5cbiAgICA8Y2RrLXN0ZXAgW3N0ZXBDb250cm9sXT1cImZvcm1Hcm91cFN0ZXBPbmVcIiBbbGFiZWxdPVwiJ05ldyBncm91cCcgfCB0cmFuc2xhdGVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLTE2IHAtdC0wIGZsZXgtbm8tc2hyaW5rIHNlcGFyYXRvci1ib3R0b20gY29sLXhzLTEyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLW1kLW9mZnNldC0zIGNvbC1sZy00IGNvbC1sZy1vZmZzZXQtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImg0IHRleHQtY2VudGVyIHRleHQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgIHt7ICdOZXcgZ3JvdXAnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgZmxleC1ncm93IG5vLWd1dHRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1pbm5lci1zY3JvbGwgZml0LWhcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBwLWItMFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLW1kLW9mZnNldC0zIGNvbC1sZy00IGNvbC1sZy1vZmZzZXQtNFwiPlxuICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cCBbbm92YWxpZGF0aW9uXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBTdGVwT25lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgdHJhbnNsYXRlPk5hbWU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuIEZpcnN0IGZsb29yJyB8IHRyYW5zbGF0ZSB9fSBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMjU0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICNuYW1lUmVmXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG5cbiAgICAgICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+RGVzY3JpcHRpb248L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLiBmaXJzdCBmbG9vciBkZXZpY2VzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFN0ZXBPbmVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1pbmZvIG1heC13aWR0aC0xMDBcIiB0cmFuc2xhdGUgKm5nSWY9XCIhY2FuQXNzaWduRGV2aWNlXCI+XG4gICAgICAgICAgICAgICAgICBZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFzc2lnbiBkZXZpY2VzLlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8Yzh5LXN0ZXBwZXItYnV0dG9uc1xuICAgICAgICBjbGFzcz1cImQtYmxvY2sgY2FyZC1mb290ZXIgcC0yNCBzZXBhcmF0b3JcIlxuICAgICAgICAob25DYW5jZWwpPVwib25DYW5jZWwuZW1pdCgpXCJcbiAgICAgICAgKG9uQ3VzdG9tKT1cImNyZWF0ZUdyb3VwKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkNyZWF0ZUdyb3VwXCJcbiAgICAgICAgW2xhYmVsc109XCJcbiAgICAgICAgICBjYW5Bc3NpZ25EZXZpY2VcbiAgICAgICAgICAgID8geyBuZXh0OiBidG5MYWJlbHMubmV4dCwgY2FuY2VsOiBidG5MYWJlbHMuY2FuY2VsIH1cbiAgICAgICAgICAgIDogeyBjdXN0b206IGJ0bkxhYmVscy5jcmVhdGUsIGNhbmNlbDogYnRuTGFiZWxzLmNhbmNlbCB9XG4gICAgICAgIFwiXG4gICAgICAgIFtzaG93QnV0dG9uc109XCJcbiAgICAgICAgICBjYW5Bc3NpZ25EZXZpY2UgPyB7IG5leHQ6IHRydWUsIGNhbmNlbDogdHJ1ZSB9IDogeyBjdXN0b206IHRydWUsIGNhbmNlbDogdHJ1ZSB9XG4gICAgICAgIFwiXG4gICAgICA+PC9jOHktc3RlcHBlci1idXR0b25zPlxuICAgIDwvY2RrLXN0ZXA+XG4gICAgPGNkay1zdGVwIFtsYWJlbF09XCInQXNzaWduIGRldmljZXMnIHwgdHJhbnNsYXRlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicC0xNiBwLXQtMCBmbGV4LW5vLXNocmluayBzZXBhcmF0b3ItYm90dG9tIGNvbC14cy0xMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNvbC1tZC1vZmZzZXQtMyBjb2wtbGctNCBjb2wtbGctb2Zmc2V0LTRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoNCB0ZXh0LWNlbnRlciB0ZXh0LW1lZGl1bVwiPlxuICAgICAgICAgICAgICB7eyAnQXNzaWduIGRldmljZXMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgbm8tZ3V0dGVyIGZsZXgtZ3Jvd1wiPlxuICAgICAgICA8Yzh5LWRldmljZS1ncmlkXG4gICAgICAgICAgW3RpdGxlXT1cIidTZWxlY3QgdGFyZ2V0IGRldmljZXMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbYWN0aW9uQ29udHJvbHNdPVwiW11cIlxuICAgICAgICAgIFtpbmZpbml0ZVNjcm9sbF09XCInYXV0bydcIlxuICAgICAgICAgIFtzZWxlY3RhYmxlXT1cInRydWVcIlxuICAgICAgICAgIFtwYWdpbmF0aW9uXT1cInBhZ2luYXRpb25cIlxuICAgICAgICAgIChpdGVtc1NlbGVjdCk9XCJvblNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgIFtyZWZyZXNoXT1cInJlZnJlc2hcIlxuICAgICAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICAgICAgW2FjdGlvbk5hbWVdPVwiUFJPRFVDVF9FWFBFUklFTkNFLkVWRU5UXCJcbiAgICAgICAgICBbYWN0aW9uRGF0YV09XCJ7IGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkFERF9HUk9VUC5DT01QT05FTlRTLkFERF9HUk9VUCB9XCJcbiAgICAgICAgPjwvYzh5LWRldmljZS1ncmlkPlxuICAgICAgPC9kaXY+XG4gICAgICA8Yzh5LXN0ZXBwZXItYnV0dG9uc1xuICAgICAgICBjbGFzcz1cImQtYmxvY2sgY2FyZC1mb290ZXIgcC0yNCBzZXBhcmF0b3JcIlxuICAgICAgICAob25DYW5jZWwpPVwib25DYW5jZWwuZW1pdCgpXCJcbiAgICAgICAgKG9uQ3VzdG9tKT1cImNyZWF0ZUdyb3VwKClcIlxuICAgICAgICBbbGFiZWxzXT1cInsgY3VzdG9tOiBidG5MYWJlbHMuY3JlYXRlIH1cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkFzc2lnbkRldmljZVwiXG4gICAgICAgIFtwZW5kaW5nXT1cInBlbmRpbmdTdGF0dXNcIlxuICAgICAgPjwvYzh5LXN0ZXBwZXItYnV0dG9ucz5cbiAgICA8L2Nkay1zdGVwPlxuICA8L2M4eS1zdGVwcGVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Component, EventEmitter, Inject } from '@angular/core';
|
|
2
2
|
import { ActivatedRoute } from '@angular/router';
|
|
3
|
-
import { ContextRouteService } from '@c8y/ngx-components';
|
|
3
|
+
import { ContextRouteService, Permissions } from '@c8y/ngx-components';
|
|
4
4
|
import { SUB_ASSETS_CONFIG } from './sub-assets.model';
|
|
5
5
|
import { SubAssetsService } from './sub-assets.service';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
@@ -15,10 +15,11 @@ import * as i8 from "./assign-devices/assign-devices.component";
|
|
|
15
15
|
import * as i9 from "./assign-devices/assign-child-devices.component";
|
|
16
16
|
import * as i10 from "./asset-properties.component";
|
|
17
17
|
export class SubAssetsComponent {
|
|
18
|
-
constructor(route, subAssetsService, contextRouteService, moduleConfig) {
|
|
18
|
+
constructor(route, subAssetsService, contextRouteService, permissionsService, moduleConfig) {
|
|
19
19
|
this.route = route;
|
|
20
20
|
this.subAssetsService = subAssetsService;
|
|
21
21
|
this.contextRouteService = contextRouteService;
|
|
22
|
+
this.permissionsService = permissionsService;
|
|
22
23
|
this.moduleConfig = moduleConfig;
|
|
23
24
|
this.toggle = false;
|
|
24
25
|
this.showAddGroup = false;
|
|
@@ -46,7 +47,10 @@ export class SubAssetsComponent {
|
|
|
46
47
|
this.group = { ...contextData };
|
|
47
48
|
this.title = this.group.name;
|
|
48
49
|
this.currentGroupId = this.group.id;
|
|
49
|
-
this.shouldDisableAddGroup = !this.
|
|
50
|
+
this.shouldDisableAddGroup = !(await this.permissionsService.canEdit([], this.group, {
|
|
51
|
+
skipOwnerCheck: true,
|
|
52
|
+
skipRolesCheck: true
|
|
53
|
+
}));
|
|
50
54
|
this.shouldDisableAssignDevices = !(await this.subAssetsService.canAssignDevice(this.group));
|
|
51
55
|
this.customProperties = await this.subAssetsService.getCustomProperties(this.group);
|
|
52
56
|
this.shouldShowAssetsProperties =
|
|
@@ -68,13 +72,13 @@ export class SubAssetsComponent {
|
|
|
68
72
|
}
|
|
69
73
|
}
|
|
70
74
|
}
|
|
71
|
-
SubAssetsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SubAssetsComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.SubAssetsService }, { token: i3.ContextRouteService }, { token: SUB_ASSETS_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
|
|
75
|
+
SubAssetsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SubAssetsComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.SubAssetsService }, { token: i3.ContextRouteService }, { token: i3.Permissions }, { token: SUB_ASSETS_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
|
|
72
76
|
SubAssetsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SubAssetsComponent, selector: "c8y-sub-assets", ngImport: i0, template: "<c8y-title>\n {{ title }}\n</c8y-title>\n\n<c8y-action-bar-item [placement]=\"'right'\" *ngIf=\"!isSmartGroup() && moduleConfig.showAddGroupBtn\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add group' | translate }}\"\n (click)=\"showAddGroup = !showAddGroup\"\n [disabled]=\"shouldDisableAddGroup\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n <span translate>Add group</span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"!isSmartGroup() && moduleConfig.showAssignDeviceBtn\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Assign devices' | translate }}\"\n (click)=\"showAssignDevices = !showAssignDevices\"\n [disabled]=\"shouldDisableAssignDevices\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n <span translate>Assign devices</span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/users-guide/cockpit/#managing-assets\"></c8y-help>\n\n<div\n class=\"card content-fullpage\"\n [ngClass]=\"{\n 'card--grid grid__col--8-4--md grid__row--fit-auto': shouldShowAssetsProperties,\n 'd-flex d-col': !shouldShowAssetsProperties\n }\"\n>\n <c8y-group-info\n *ngIf=\"moduleConfig.showDetails\"\n [group]=\"group\"\n (groupChange)=\"groupChange($event)\"\n class=\"grid__col--fullspan\"\n ></c8y-group-info>\n <c8y-sub-assets-grid\n [refresh]=\"refresh\"\n [parent-group]=\"group\"\n [filterable]=\"filterable\"\n [displayOptions]=\"displayOptions\"\n [columnsConfigKey]=\"'sub-assets-grid'\"\n [baseQuery]=\"moduleConfig.baseQuery\"\n class=\"d-contents\"\n ></c8y-sub-assets-grid>\n <div class=\"inner-scroll bg-level-1\" *ngIf=\"shouldShowAssetsProperties\">\n <c8y-asset-properties\n [properties]=\"customProperties\"\n [asset]=\"group\"\n (assetChange)=\"groupChange($event)\"\n class=\"d-contents\"\n ></c8y-asset-properties>\n </div>\n</div>\n\n<div [ngClass]=\"{ drawerOpen: showAddGroup }\">\n <div class=\"bottom-drawer\">\n <c8y-add-group\n [currentGroupId]=\"currentGroupId\"\n [refresh]=\"refresh\"\n (onCancel)=\"showAddGroup = false\"\n *ngIf=\"showAddGroup\"\n ></c8y-add-group>\n </div>\n</div>\n\n<div [ngClass]=\"{ drawerOpen: showAssignDevices }\">\n <div class=\"bottom-drawer\">\n <div class=\"d-flex d-col no-align-items fit-h\">\n <c8y-assign-devices\n class=\"d-contents\"\n (onCancel)=\"showAssignDevices = false\"\n [refresh]=\"refresh\"\n [currentGroupId]=\"currentGroupId\"\n (onShowChildDevices)=\"showAssignChildDevices = $event\"\n (selectedDevice)=\"showChildrenForDevice = $event\"\n *ngIf=\"showAssignDevices\"\n ></c8y-assign-devices>\n </div>\n </div>\n</div>\n\n<div [ngClass]=\"{ drawerOpen: showAssignChildDevices }\">\n <div class=\"bottom-drawer m-t-40\">\n <div class=\"d-flex d-col no-align-items fit-h\">\n <c8y-assign-child-devices\n *ngIf=\"showAssignChildDevices\"\n class=\"d-contents\"\n (onCancel)=\"showAssignChildDevices = false\"\n [refresh]=\"refresh\"\n [currentGroupId]=\"currentGroupId\"\n [parentDevice]=\"showChildrenForDevice\"\n ></c8y-assign-child-devices>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i3.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.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: "component", type: i3.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i3.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "component", type: i5.AddGroupComponent, selector: "c8y-add-group", inputs: ["currentGroupId", "refresh"], outputs: ["onDeviceQueryStringChange", "onCancel"] }, { kind: "component", type: i6.SubAssetsGridComponent, selector: "c8y-sub-assets-grid", inputs: ["parent-group", "refresh", "title", "emptyStateText", "loadingItemsLabel", "columnsConfigKey", "columns", "pagination", "actionControls", "selectable", "baseQuery", "bulkActionControls", "filterable", "sortable", "displayOptions"], outputs: ["onColumnsChange", "itemsSelect"] }, { kind: "component", type: i7.GroupInfoComponent, selector: "c8y-group-info", inputs: ["group"], outputs: ["groupChange"] }, { kind: "component", type: i8.AssignDevicesComponent, selector: "c8y-assign-devices", inputs: ["currentGroupId", "refresh"], outputs: ["onCancel", "onShowChildDevices", "selectedDevice"] }, { kind: "component", type: i9.AssignChildDevicesComponent, selector: "c8y-assign-child-devices", inputs: ["currentGroupId", "parentDevice", "refresh"], outputs: ["onCancel"] }, { kind: "component", type: i10.AssetPropertiesComponent, selector: "c8y-asset-properties", inputs: ["asset", "properties"], outputs: ["assetChange"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }] });
|
|
73
77
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SubAssetsComponent, decorators: [{
|
|
74
78
|
type: Component,
|
|
75
79
|
args: [{ selector: 'c8y-sub-assets', template: "<c8y-title>\n {{ title }}\n</c8y-title>\n\n<c8y-action-bar-item [placement]=\"'right'\" *ngIf=\"!isSmartGroup() && moduleConfig.showAddGroupBtn\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add group' | translate }}\"\n (click)=\"showAddGroup = !showAddGroup\"\n [disabled]=\"shouldDisableAddGroup\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n <span translate>Add group</span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"!isSmartGroup() && moduleConfig.showAssignDeviceBtn\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Assign devices' | translate }}\"\n (click)=\"showAssignDevices = !showAssignDevices\"\n [disabled]=\"shouldDisableAssignDevices\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n <span translate>Assign devices</span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/users-guide/cockpit/#managing-assets\"></c8y-help>\n\n<div\n class=\"card content-fullpage\"\n [ngClass]=\"{\n 'card--grid grid__col--8-4--md grid__row--fit-auto': shouldShowAssetsProperties,\n 'd-flex d-col': !shouldShowAssetsProperties\n }\"\n>\n <c8y-group-info\n *ngIf=\"moduleConfig.showDetails\"\n [group]=\"group\"\n (groupChange)=\"groupChange($event)\"\n class=\"grid__col--fullspan\"\n ></c8y-group-info>\n <c8y-sub-assets-grid\n [refresh]=\"refresh\"\n [parent-group]=\"group\"\n [filterable]=\"filterable\"\n [displayOptions]=\"displayOptions\"\n [columnsConfigKey]=\"'sub-assets-grid'\"\n [baseQuery]=\"moduleConfig.baseQuery\"\n class=\"d-contents\"\n ></c8y-sub-assets-grid>\n <div class=\"inner-scroll bg-level-1\" *ngIf=\"shouldShowAssetsProperties\">\n <c8y-asset-properties\n [properties]=\"customProperties\"\n [asset]=\"group\"\n (assetChange)=\"groupChange($event)\"\n class=\"d-contents\"\n ></c8y-asset-properties>\n </div>\n</div>\n\n<div [ngClass]=\"{ drawerOpen: showAddGroup }\">\n <div class=\"bottom-drawer\">\n <c8y-add-group\n [currentGroupId]=\"currentGroupId\"\n [refresh]=\"refresh\"\n (onCancel)=\"showAddGroup = false\"\n *ngIf=\"showAddGroup\"\n ></c8y-add-group>\n </div>\n</div>\n\n<div [ngClass]=\"{ drawerOpen: showAssignDevices }\">\n <div class=\"bottom-drawer\">\n <div class=\"d-flex d-col no-align-items fit-h\">\n <c8y-assign-devices\n class=\"d-contents\"\n (onCancel)=\"showAssignDevices = false\"\n [refresh]=\"refresh\"\n [currentGroupId]=\"currentGroupId\"\n (onShowChildDevices)=\"showAssignChildDevices = $event\"\n (selectedDevice)=\"showChildrenForDevice = $event\"\n *ngIf=\"showAssignDevices\"\n ></c8y-assign-devices>\n </div>\n </div>\n</div>\n\n<div [ngClass]=\"{ drawerOpen: showAssignChildDevices }\">\n <div class=\"bottom-drawer m-t-40\">\n <div class=\"d-flex d-col no-align-items fit-h\">\n <c8y-assign-child-devices\n *ngIf=\"showAssignChildDevices\"\n class=\"d-contents\"\n (onCancel)=\"showAssignChildDevices = false\"\n [refresh]=\"refresh\"\n [currentGroupId]=\"currentGroupId\"\n [parentDevice]=\"showChildrenForDevice\"\n ></c8y-assign-child-devices>\n </div>\n </div>\n</div>\n" }]
|
|
76
|
-
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.SubAssetsService }, { type: i3.ContextRouteService }, { type: undefined, decorators: [{
|
|
80
|
+
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.SubAssetsService }, { type: i3.ContextRouteService }, { type: i3.Permissions }, { type: undefined, decorators: [{
|
|
77
81
|
type: Inject,
|
|
78
82
|
args: [SUB_ASSETS_CONFIG]
|
|
79
83
|
}] }]; } });
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViLWFzc2V0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zdWItYXNzZXRzL3N1Yi1hc3NldHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3ViLWFzc2V0cy9zdWItYXNzZXRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFBRSxtQkFBbUIsRUFBa0IsTUFBTSxxQkFBcUIsQ0FBQztBQUUxRSxPQUFPLEVBQUUsaUJBQWlCLEVBQW1CLE1BQU0sb0JBQW9CLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7OztBQU14RCxNQUFNLE9BQU8sa0JBQWtCO0lBb0I3QixZQUNVLEtBQXFCLEVBQ3JCLGdCQUFrQyxFQUNsQyxtQkFBd0MsRUFDZCxZQUE2QjtRQUh2RCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDZCxpQkFBWSxHQUFaLFlBQVksQ0FBaUI7UUFuQmpFLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFFMUIsMkJBQXNCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLFlBQU8sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNoRCxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUM5QiwrQkFBMEIsR0FBRyxLQUFLLENBQUM7UUFDbkMsK0JBQTBCLEdBQUcsS0FBSyxDQUFDO1FBRW5DLHFCQUFnQixHQUFxQixFQUFFLENBQUM7UUFVdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFO1lBQ2xFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLENBQUMsY0FBYyxHQUFHO1lBQ3BCLE9BQU8sRUFBRSxJQUFJO1lBQ2IsUUFBUSxFQUFFLEtBQUs7WUFDZixVQUFVLEVBQUUsSUFBSTtZQUNoQixNQUFNLEVBQUUsSUFBSTtTQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckUsSUFBSSxDQUFDLDBCQUEwQixHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDN0YsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRixJQUFJLENBQUMsMEJBQTBCO1lBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBcUI7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUM1QjtJQUNILENBQUM7OytHQW5FVSxrQkFBa0IsbUhBd0JuQixpQkFBaUI7bUdBeEJoQixrQkFBa0Isc0RDWi9CLDJ1R0EwR0E7MkZEOUZhLGtCQUFrQjtrQkFKOUIsU0FBUzsrQkFDRSxnQkFBZ0I7OzBCQTJCdkIsTUFBTTsyQkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBDb250ZXh0Um91dGVTZXJ2aWNlLCBEaXNwbGF5T3B0aW9ucyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTVUJfQVNTRVRTX0NPTkZJRywgU3ViQXNzZXRzQ29uZmlnIH0gZnJvbSAnLi9zdWItYXNzZXRzLm1vZGVsJztcbmltcG9ydCB7IFN1YkFzc2V0c1NlcnZpY2UgfSBmcm9tICcuL3N1Yi1hc3NldHMuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1zdWItYXNzZXRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N1Yi1hc3NldHMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFN1YkFzc2V0c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgZ3JvdXA6IElNYW5hZ2VkT2JqZWN0O1xuICBjdXJyZW50R3JvdXBJZDogc3RyaW5nO1xuICBzaG93Q2hpbGRyZW5Gb3JEZXZpY2U6IElNYW5hZ2VkT2JqZWN0O1xuICB0aXRsZTogc3RyaW5nO1xuICB0b2dnbGUgPSBmYWxzZTtcbiAgc2hvd0FkZEdyb3VwID0gZmFsc2U7XG4gIHNob3dBc3NpZ25EZXZpY2VzID0gZmFsc2U7XG4gIHJlcXVlc3RJblByb2dyZXNzOiBib29sZWFuO1xuICBzaG93QXNzaWduQ2hpbGREZXZpY2VzID0gZmFsc2U7XG4gIHJlZnJlc2g6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBmaWx0ZXJhYmxlID0gdHJ1ZTtcbiAgc2hvdWxkRGlzYWJsZUFkZEdyb3VwID0gZmFsc2U7XG4gIHNob3VsZERpc2FibGVBc3NpZ25EZXZpY2VzID0gZmFsc2U7XG4gIHNob3VsZFNob3dBc3NldHNQcm9wZXJ0aWVzID0gZmFsc2U7XG4gIGRpc3BsYXlPcHRpb25zOiBEaXNwbGF5T3B0aW9ucztcbiAgY3VzdG9tUHJvcGVydGllczogSU1hbmFnZWRPYmplY3RbXSA9IFtdO1xuXG4gIHByaXZhdGUgZGF0YVN1YjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgc3ViQXNzZXRzU2VydmljZTogU3ViQXNzZXRzU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRleHRSb3V0ZVNlcnZpY2U6IENvbnRleHRSb3V0ZVNlcnZpY2UsXG4gICAgQEluamVjdChTVUJfQVNTRVRTX0NPTkZJRykgcHVibGljIG1vZHVsZUNvbmZpZzogU3ViQXNzZXRzQ29uZmlnXG4gICkge1xuICAgIHRoaXMuZGF0YVN1YiA9IHRoaXMucm91dGUucGFyZW50LmRhdGEuc3Vic2NyaWJlKCh7IGNvbnRleHREYXRhIH0pID0+IHtcbiAgICAgIHRoaXMuaW5pdChjb250ZXh0RGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmRpc3BsYXlPcHRpb25zID0ge1xuICAgICAgc3RyaXBlZDogdHJ1ZSxcbiAgICAgIGJvcmRlcmVkOiBmYWxzZSxcbiAgICAgIGdyaWRIZWFkZXI6IHRydWUsXG4gICAgICBmaWx0ZXI6IHRydWVcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgaW5pdChjb250ZXh0RGF0YSkge1xuICAgIHRoaXMuZ3JvdXAgPSB7IC4uLmNvbnRleHREYXRhIH07XG4gICAgdGhpcy50aXRsZSA9IHRoaXMuZ3JvdXAubmFtZTtcbiAgICB0aGlzLmN1cnJlbnRHcm91cElkID0gdGhpcy5ncm91cC5pZDtcbiAgICB0aGlzLnNob3VsZERpc2FibGVBZGRHcm91cCA9ICF0aGlzLnN1YkFzc2V0c1NlcnZpY2UuY2FuQ3JlYXRlR3JvdXAoKTtcbiAgICB0aGlzLnNob3VsZERpc2FibGVBc3NpZ25EZXZpY2VzID0gIShhd2FpdCB0aGlzLnN1YkFzc2V0c1NlcnZpY2UuY2FuQXNzaWduRGV2aWNlKHRoaXMuZ3JvdXApKTtcbiAgICB0aGlzLmN1c3RvbVByb3BlcnRpZXMgPSBhd2FpdCB0aGlzLnN1YkFzc2V0c1NlcnZpY2UuZ2V0Q3VzdG9tUHJvcGVydGllcyh0aGlzLmdyb3VwKTtcbiAgICB0aGlzLnNob3VsZFNob3dBc3NldHNQcm9wZXJ0aWVzID1cbiAgICAgIHRoaXMubW9kdWxlQ29uZmlnLnNob3dQcm9wZXJ0aWVzICYmIHRoaXMuY3VzdG9tUHJvcGVydGllcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ3JvdXBDaGFuZ2UoZ3JvdXA6IElNYW5hZ2VkT2JqZWN0KTogdm9pZCB7XG4gICAgdGhpcy5ncm91cCA9IGdyb3VwO1xuICAgIHRoaXMudGl0bGUgPSBncm91cC5uYW1lO1xuICAgIHRoaXMuY29udGV4dFJvdXRlU2VydmljZS5zZXRDb250ZXh0KHRoaXMucm91dGUsIGdyb3VwKTtcbiAgICB0aGlzLmNvbnRleHRSb3V0ZVNlcnZpY2UucmVmcmVzaENvbnRleHQoKTtcbiAgICB0aGlzLnJlZnJlc2guZW1pdCgpO1xuICB9XG5cbiAgaXNTbWFydEdyb3VwKCkge1xuICAgIHJldHVybiB0aGlzLnN1YkFzc2V0c1NlcnZpY2UuaXNTbWFydEdyb3VwKHRoaXMuZ3JvdXApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGF0YVN1Yikge1xuICAgICAgdGhpcy5kYXRhU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG59XG4iLCI8Yzh5LXRpdGxlPlxuICB7eyB0aXRsZSB9fVxuPC9jOHktdGl0bGU+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiICpuZ0lmPVwiIWlzU21hcnRHcm91cCgpICYmIG1vZHVsZUNvbmZpZy5zaG93QWRkR3JvdXBCdG5cIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICB0aXRsZT1cInt7ICdBZGQgZ3JvdXAnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAoY2xpY2spPVwic2hvd0FkZEdyb3VwID0gIXNob3dBZGRHcm91cFwiXG4gICAgW2Rpc2FibGVkXT1cInNob3VsZERpc2FibGVBZGRHcm91cFwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwicGx1cy1jaXJjbGVcIiBjbGFzcz1cIm0tci00XCI+PC9pPlxuICAgIDxzcGFuIHRyYW5zbGF0ZT5BZGQgZ3JvdXA8L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbVxuICBbcGxhY2VtZW50XT1cIidyaWdodCdcIlxuICAqbmdJZj1cIiFpc1NtYXJ0R3JvdXAoKSAmJiBtb2R1bGVDb25maWcuc2hvd0Fzc2lnbkRldmljZUJ0blwiXG4+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgdGl0bGU9XCJ7eyAnQXNzaWduIGRldmljZXMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAoY2xpY2spPVwic2hvd0Fzc2lnbkRldmljZXMgPSAhc2hvd0Fzc2lnbkRldmljZXNcIlxuICAgIFtkaXNhYmxlZF09XCJzaG91bGREaXNhYmxlQXNzaWduRGV2aWNlc1wiXG4gID5cbiAgICA8aSBjOHlJY29uPVwicGx1cy1jaXJjbGVcIiBjbGFzcz1cIm0tci00XCI+PC9pPlxuICAgIDxzcGFuIHRyYW5zbGF0ZT5Bc3NpZ24gZGV2aWNlczwvc3Bhbj5cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktaGVscCBzcmM9XCIvdXNlcnMtZ3VpZGUvY29ja3BpdC8jbWFuYWdpbmctYXNzZXRzXCI+PC9jOHktaGVscD5cblxuPGRpdlxuICBjbGFzcz1cImNhcmQgY29udGVudC1mdWxscGFnZVwiXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAnY2FyZC0tZ3JpZCBncmlkX19jb2wtLTgtNC0tbWQgZ3JpZF9fcm93LS1maXQtYXV0byc6IHNob3VsZFNob3dBc3NldHNQcm9wZXJ0aWVzLFxuICAgICdkLWZsZXggZC1jb2wnOiAhc2hvdWxkU2hvd0Fzc2V0c1Byb3BlcnRpZXNcbiAgfVwiXG4+XG4gIDxjOHktZ3JvdXAtaW5mb1xuICAgICpuZ0lmPVwibW9kdWxlQ29uZmlnLnNob3dEZXRhaWxzXCJcbiAgICBbZ3JvdXBdPVwiZ3JvdXBcIlxuICAgIChncm91cENoYW5nZSk9XCJncm91cENoYW5nZSgkZXZlbnQpXCJcbiAgICBjbGFzcz1cImdyaWRfX2NvbC0tZnVsbHNwYW5cIlxuICA+PC9jOHktZ3JvdXAtaW5mbz5cbiAgPGM4eS1zdWItYXNzZXRzLWdyaWRcbiAgICBbcmVmcmVzaF09XCJyZWZyZXNoXCJcbiAgICBbcGFyZW50LWdyb3VwXT1cImdyb3VwXCJcbiAgICBbZmlsdGVyYWJsZV09XCJmaWx0ZXJhYmxlXCJcbiAgICBbZGlzcGxheU9wdGlvbnNdPVwiZGlzcGxheU9wdGlvbnNcIlxuICAgIFtjb2x1bW5zQ29uZmlnS2V5XT1cIidzdWItYXNzZXRzLWdyaWQnXCJcbiAgICBbYmFzZVF1ZXJ5XT1cIm1vZHVsZUNvbmZpZy5iYXNlUXVlcnlcIlxuICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gID48L2M4eS1zdWItYXNzZXRzLWdyaWQ+XG4gIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGwgYmctbGV2ZWwtMVwiICpuZ0lmPVwic2hvdWxkU2hvd0Fzc2V0c1Byb3BlcnRpZXNcIj5cbiAgICA8Yzh5LWFzc2V0LXByb3BlcnRpZXNcbiAgICAgIFtwcm9wZXJ0aWVzXT1cImN1c3RvbVByb3BlcnRpZXNcIlxuICAgICAgW2Fzc2V0XT1cImdyb3VwXCJcbiAgICAgIChhc3NldENoYW5nZSk9XCJncm91cENoYW5nZSgkZXZlbnQpXCJcbiAgICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgPjwvYzh5LWFzc2V0LXByb3BlcnRpZXM+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgW25nQ2xhc3NdPVwieyBkcmF3ZXJPcGVuOiBzaG93QWRkR3JvdXAgfVwiPlxuICA8ZGl2IGNsYXNzPVwiYm90dG9tLWRyYXdlclwiPlxuICAgIDxjOHktYWRkLWdyb3VwXG4gICAgICBbY3VycmVudEdyb3VwSWRdPVwiY3VycmVudEdyb3VwSWRcIlxuICAgICAgW3JlZnJlc2hdPVwicmVmcmVzaFwiXG4gICAgICAob25DYW5jZWwpPVwic2hvd0FkZEdyb3VwID0gZmFsc2VcIlxuICAgICAgKm5nSWY9XCJzaG93QWRkR3JvdXBcIlxuICAgID48L2M4eS1hZGQtZ3JvdXA+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgW25nQ2xhc3NdPVwieyBkcmF3ZXJPcGVuOiBzaG93QXNzaWduRGV2aWNlcyB9XCI+XG4gIDxkaXYgY2xhc3M9XCJib3R0b20tZHJhd2VyXCI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBkLWNvbCBuby1hbGlnbi1pdGVtcyBmaXQtaFwiPlxuICAgICAgPGM4eS1hc3NpZ24tZGV2aWNlc1xuICAgICAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgICAgICAob25DYW5jZWwpPVwic2hvd0Fzc2lnbkRldmljZXMgPSBmYWxzZVwiXG4gICAgICAgIFtyZWZyZXNoXT1cInJlZnJlc2hcIlxuICAgICAgICBbY3VycmVudEdyb3VwSWRdPVwiY3VycmVudEdyb3VwSWRcIlxuICAgICAgICAob25TaG93Q2hpbGREZXZpY2VzKT1cInNob3dBc3NpZ25DaGlsZERldmljZXMgPSAkZXZlbnRcIlxuICAgICAgICAoc2VsZWN0ZWREZXZpY2UpPVwic2hvd0NoaWxkcmVuRm9yRGV2aWNlID0gJGV2ZW50XCJcbiAgICAgICAgKm5nSWY9XCJzaG93QXNzaWduRGV2aWNlc1wiXG4gICAgICA+PC9jOHktYXNzaWduLWRldmljZXM+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgW25nQ2xhc3NdPVwieyBkcmF3ZXJPcGVuOiBzaG93QXNzaWduQ2hpbGREZXZpY2VzIH1cIj5cbiAgPGRpdiBjbGFzcz1cImJvdHRvbS1kcmF3ZXIgbS10LTQwXCI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBkLWNvbCBuby1hbGlnbi1pdGVtcyBmaXQtaFwiPlxuICAgICAgPGM4eS1hc3NpZ24tY2hpbGQtZGV2aWNlc1xuICAgICAgICAqbmdJZj1cInNob3dBc3NpZ25DaGlsZERldmljZXNcIlxuICAgICAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgICAgICAob25DYW5jZWwpPVwic2hvd0Fzc2lnbkNoaWxkRGV2aWNlcyA9IGZhbHNlXCJcbiAgICAgICAgW3JlZnJlc2hdPVwicmVmcmVzaFwiXG4gICAgICAgIFtjdXJyZW50R3JvdXBJZF09XCJjdXJyZW50R3JvdXBJZFwiXG4gICAgICAgIFtwYXJlbnREZXZpY2VdPVwic2hvd0NoaWxkcmVuRm9yRGV2aWNlXCJcbiAgICAgID48L2M4eS1hc3NpZ24tY2hpbGQtZGV2aWNlcz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViLWFzc2V0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zdWItYXNzZXRzL3N1Yi1hc3NldHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3ViLWFzc2V0cy9zdWItYXNzZXRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFBRSxtQkFBbUIsRUFBa0IsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkYsT0FBTyxFQUFFLGlCQUFpQixFQUFtQixNQUFNLG9CQUFvQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7QUFNeEQsTUFBTSxPQUFPLGtCQUFrQjtJQW9CN0IsWUFDVSxLQUFxQixFQUNyQixnQkFBa0MsRUFDbEMsbUJBQXdDLEVBQ3hDLGtCQUErQixFQUNMLFlBQTZCO1FBSnZELFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQWE7UUFDTCxpQkFBWSxHQUFaLFlBQVksQ0FBaUI7UUFwQmpFLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFFMUIsMkJBQXNCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLFlBQU8sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNoRCxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUM5QiwrQkFBMEIsR0FBRyxLQUFLLENBQUM7UUFDbkMsK0JBQTBCLEdBQUcsS0FBSyxDQUFDO1FBRW5DLHFCQUFnQixHQUFxQixFQUFFLENBQUM7UUFXdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFO1lBQ2xFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLENBQUMsY0FBYyxHQUFHO1lBQ3BCLE9BQU8sRUFBRSxJQUFJO1lBQ2IsUUFBUSxFQUFFLEtBQUs7WUFDZixVQUFVLEVBQUUsSUFBSTtZQUNoQixNQUFNLEVBQUUsSUFBSTtTQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNuRixjQUFjLEVBQUUsSUFBSTtZQUNwQixjQUFjLEVBQUUsSUFBSTtTQUNyQixDQUFDLENBQUMsQ0FBQztRQUNKLElBQUksQ0FBQywwQkFBMEIsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzdGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLDBCQUEwQjtZQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXFCO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDNUI7SUFDSCxDQUFDOzsrR0F2RVUsa0JBQWtCLDhJQXlCbkIsaUJBQWlCO21HQXpCaEIsa0JBQWtCLHNEQ1ovQiwydUdBMEdBOzJGRDlGYSxrQkFBa0I7a0JBSjlCLFNBQVM7K0JBQ0UsZ0JBQWdCOzswQkE0QnZCLE1BQU07MkJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQ29udGV4dFJvdXRlU2VydmljZSwgRGlzcGxheU9wdGlvbnMsIFBlcm1pc3Npb25zIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNVQl9BU1NFVFNfQ09ORklHLCBTdWJBc3NldHNDb25maWcgfSBmcm9tICcuL3N1Yi1hc3NldHMubW9kZWwnO1xuaW1wb3J0IHsgU3ViQXNzZXRzU2VydmljZSB9IGZyb20gJy4vc3ViLWFzc2V0cy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXN1Yi1hc3NldHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3ViLWFzc2V0cy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU3ViQXNzZXRzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBncm91cDogSU1hbmFnZWRPYmplY3Q7XG4gIGN1cnJlbnRHcm91cElkOiBzdHJpbmc7XG4gIHNob3dDaGlsZHJlbkZvckRldmljZTogSU1hbmFnZWRPYmplY3Q7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHRvZ2dsZSA9IGZhbHNlO1xuICBzaG93QWRkR3JvdXAgPSBmYWxzZTtcbiAgc2hvd0Fzc2lnbkRldmljZXMgPSBmYWxzZTtcbiAgcmVxdWVzdEluUHJvZ3Jlc3M6IGJvb2xlYW47XG4gIHNob3dBc3NpZ25DaGlsZERldmljZXMgPSBmYWxzZTtcbiAgcmVmcmVzaDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIGZpbHRlcmFibGUgPSB0cnVlO1xuICBzaG91bGREaXNhYmxlQWRkR3JvdXAgPSBmYWxzZTtcbiAgc2hvdWxkRGlzYWJsZUFzc2lnbkRldmljZXMgPSBmYWxzZTtcbiAgc2hvdWxkU2hvd0Fzc2V0c1Byb3BlcnRpZXMgPSBmYWxzZTtcbiAgZGlzcGxheU9wdGlvbnM6IERpc3BsYXlPcHRpb25zO1xuICBjdXN0b21Qcm9wZXJ0aWVzOiBJTWFuYWdlZE9iamVjdFtdID0gW107XG5cbiAgcHJpdmF0ZSBkYXRhU3ViOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBzdWJBc3NldHNTZXJ2aWNlOiBTdWJBc3NldHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFJvdXRlU2VydmljZTogQ29udGV4dFJvdXRlU2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1pc3Npb25zU2VydmljZTogUGVybWlzc2lvbnMsXG4gICAgQEluamVjdChTVUJfQVNTRVRTX0NPTkZJRykgcHVibGljIG1vZHVsZUNvbmZpZzogU3ViQXNzZXRzQ29uZmlnXG4gICkge1xuICAgIHRoaXMuZGF0YVN1YiA9IHRoaXMucm91dGUucGFyZW50LmRhdGEuc3Vic2NyaWJlKCh7IGNvbnRleHREYXRhIH0pID0+IHtcbiAgICAgIHRoaXMuaW5pdChjb250ZXh0RGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmRpc3BsYXlPcHRpb25zID0ge1xuICAgICAgc3RyaXBlZDogdHJ1ZSxcbiAgICAgIGJvcmRlcmVkOiBmYWxzZSxcbiAgICAgIGdyaWRIZWFkZXI6IHRydWUsXG4gICAgICBmaWx0ZXI6IHRydWVcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgaW5pdChjb250ZXh0RGF0YSkge1xuICAgIHRoaXMuZ3JvdXAgPSB7IC4uLmNvbnRleHREYXRhIH07XG4gICAgdGhpcy50aXRsZSA9IHRoaXMuZ3JvdXAubmFtZTtcbiAgICB0aGlzLmN1cnJlbnRHcm91cElkID0gdGhpcy5ncm91cC5pZDtcbiAgICB0aGlzLnNob3VsZERpc2FibGVBZGRHcm91cCA9ICEoYXdhaXQgdGhpcy5wZXJtaXNzaW9uc1NlcnZpY2UuY2FuRWRpdChbXSwgdGhpcy5ncm91cCwge1xuICAgICAgc2tpcE93bmVyQ2hlY2s6IHRydWUsXG4gICAgICBza2lwUm9sZXNDaGVjazogdHJ1ZVxuICAgIH0pKTtcbiAgICB0aGlzLnNob3VsZERpc2FibGVBc3NpZ25EZXZpY2VzID0gIShhd2FpdCB0aGlzLnN1YkFzc2V0c1NlcnZpY2UuY2FuQXNzaWduRGV2aWNlKHRoaXMuZ3JvdXApKTtcbiAgICB0aGlzLmN1c3RvbVByb3BlcnRpZXMgPSBhd2FpdCB0aGlzLnN1YkFzc2V0c1NlcnZpY2UuZ2V0Q3VzdG9tUHJvcGVydGllcyh0aGlzLmdyb3VwKTtcbiAgICB0aGlzLnNob3VsZFNob3dBc3NldHNQcm9wZXJ0aWVzID1cbiAgICAgIHRoaXMubW9kdWxlQ29uZmlnLnNob3dQcm9wZXJ0aWVzICYmIHRoaXMuY3VzdG9tUHJvcGVydGllcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ3JvdXBDaGFuZ2UoZ3JvdXA6IElNYW5hZ2VkT2JqZWN0KTogdm9pZCB7XG4gICAgdGhpcy5ncm91cCA9IGdyb3VwO1xuICAgIHRoaXMudGl0bGUgPSBncm91cC5uYW1lO1xuICAgIHRoaXMuY29udGV4dFJvdXRlU2VydmljZS5zZXRDb250ZXh0KHRoaXMucm91dGUsIGdyb3VwKTtcbiAgICB0aGlzLmNvbnRleHRSb3V0ZVNlcnZpY2UucmVmcmVzaENvbnRleHQoKTtcbiAgICB0aGlzLnJlZnJlc2guZW1pdCgpO1xuICB9XG5cbiAgaXNTbWFydEdyb3VwKCkge1xuICAgIHJldHVybiB0aGlzLnN1YkFzc2V0c1NlcnZpY2UuaXNTbWFydEdyb3VwKHRoaXMuZ3JvdXApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGF0YVN1Yikge1xuICAgICAgdGhpcy5kYXRhU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG59XG4iLCI8Yzh5LXRpdGxlPlxuICB7eyB0aXRsZSB9fVxuPC9jOHktdGl0bGU+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiICpuZ0lmPVwiIWlzU21hcnRHcm91cCgpICYmIG1vZHVsZUNvbmZpZy5zaG93QWRkR3JvdXBCdG5cIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICB0aXRsZT1cInt7ICdBZGQgZ3JvdXAnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAoY2xpY2spPVwic2hvd0FkZEdyb3VwID0gIXNob3dBZGRHcm91cFwiXG4gICAgW2Rpc2FibGVkXT1cInNob3VsZERpc2FibGVBZGRHcm91cFwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwicGx1cy1jaXJjbGVcIiBjbGFzcz1cIm0tci00XCI+PC9pPlxuICAgIDxzcGFuIHRyYW5zbGF0ZT5BZGQgZ3JvdXA8L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbVxuICBbcGxhY2VtZW50XT1cIidyaWdodCdcIlxuICAqbmdJZj1cIiFpc1NtYXJ0R3JvdXAoKSAmJiBtb2R1bGVDb25maWcuc2hvd0Fzc2lnbkRldmljZUJ0blwiXG4+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgdGl0bGU9XCJ7eyAnQXNzaWduIGRldmljZXMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAoY2xpY2spPVwic2hvd0Fzc2lnbkRldmljZXMgPSAhc2hvd0Fzc2lnbkRldmljZXNcIlxuICAgIFtkaXNhYmxlZF09XCJzaG91bGREaXNhYmxlQXNzaWduRGV2aWNlc1wiXG4gID5cbiAgICA8aSBjOHlJY29uPVwicGx1cy1jaXJjbGVcIiBjbGFzcz1cIm0tci00XCI+PC9pPlxuICAgIDxzcGFuIHRyYW5zbGF0ZT5Bc3NpZ24gZGV2aWNlczwvc3Bhbj5cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktaGVscCBzcmM9XCIvdXNlcnMtZ3VpZGUvY29ja3BpdC8jbWFuYWdpbmctYXNzZXRzXCI+PC9jOHktaGVscD5cblxuPGRpdlxuICBjbGFzcz1cImNhcmQgY29udGVudC1mdWxscGFnZVwiXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAnY2FyZC0tZ3JpZCBncmlkX19jb2wtLTgtNC0tbWQgZ3JpZF9fcm93LS1maXQtYXV0byc6IHNob3VsZFNob3dBc3NldHNQcm9wZXJ0aWVzLFxuICAgICdkLWZsZXggZC1jb2wnOiAhc2hvdWxkU2hvd0Fzc2V0c1Byb3BlcnRpZXNcbiAgfVwiXG4+XG4gIDxjOHktZ3JvdXAtaW5mb1xuICAgICpuZ0lmPVwibW9kdWxlQ29uZmlnLnNob3dEZXRhaWxzXCJcbiAgICBbZ3JvdXBdPVwiZ3JvdXBcIlxuICAgIChncm91cENoYW5nZSk9XCJncm91cENoYW5nZSgkZXZlbnQpXCJcbiAgICBjbGFzcz1cImdyaWRfX2NvbC0tZnVsbHNwYW5cIlxuICA+PC9jOHktZ3JvdXAtaW5mbz5cbiAgPGM4eS1zdWItYXNzZXRzLWdyaWRcbiAgICBbcmVmcmVzaF09XCJyZWZyZXNoXCJcbiAgICBbcGFyZW50LWdyb3VwXT1cImdyb3VwXCJcbiAgICBbZmlsdGVyYWJsZV09XCJmaWx0ZXJhYmxlXCJcbiAgICBbZGlzcGxheU9wdGlvbnNdPVwiZGlzcGxheU9wdGlvbnNcIlxuICAgIFtjb2x1bW5zQ29uZmlnS2V5XT1cIidzdWItYXNzZXRzLWdyaWQnXCJcbiAgICBbYmFzZVF1ZXJ5XT1cIm1vZHVsZUNvbmZpZy5iYXNlUXVlcnlcIlxuICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gID48L2M4eS1zdWItYXNzZXRzLWdyaWQ+XG4gIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGwgYmctbGV2ZWwtMVwiICpuZ0lmPVwic2hvdWxkU2hvd0Fzc2V0c1Byb3BlcnRpZXNcIj5cbiAgICA8Yzh5LWFzc2V0LXByb3BlcnRpZXNcbiAgICAgIFtwcm9wZXJ0aWVzXT1cImN1c3RvbVByb3BlcnRpZXNcIlxuICAgICAgW2Fzc2V0XT1cImdyb3VwXCJcbiAgICAgIChhc3NldENoYW5nZSk9XCJncm91cENoYW5nZSgkZXZlbnQpXCJcbiAgICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgPjwvYzh5LWFzc2V0LXByb3BlcnRpZXM+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgW25nQ2xhc3NdPVwieyBkcmF3ZXJPcGVuOiBzaG93QWRkR3JvdXAgfVwiPlxuICA8ZGl2IGNsYXNzPVwiYm90dG9tLWRyYXdlclwiPlxuICAgIDxjOHktYWRkLWdyb3VwXG4gICAgICBbY3VycmVudEdyb3VwSWRdPVwiY3VycmVudEdyb3VwSWRcIlxuICAgICAgW3JlZnJlc2hdPVwicmVmcmVzaFwiXG4gICAgICAob25DYW5jZWwpPVwic2hvd0FkZEdyb3VwID0gZmFsc2VcIlxuICAgICAgKm5nSWY9XCJzaG93QWRkR3JvdXBcIlxuICAgID48L2M4eS1hZGQtZ3JvdXA+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgW25nQ2xhc3NdPVwieyBkcmF3ZXJPcGVuOiBzaG93QXNzaWduRGV2aWNlcyB9XCI+XG4gIDxkaXYgY2xhc3M9XCJib3R0b20tZHJhd2VyXCI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBkLWNvbCBuby1hbGlnbi1pdGVtcyBmaXQtaFwiPlxuICAgICAgPGM4eS1hc3NpZ24tZGV2aWNlc1xuICAgICAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgICAgICAob25DYW5jZWwpPVwic2hvd0Fzc2lnbkRldmljZXMgPSBmYWxzZVwiXG4gICAgICAgIFtyZWZyZXNoXT1cInJlZnJlc2hcIlxuICAgICAgICBbY3VycmVudEdyb3VwSWRdPVwiY3VycmVudEdyb3VwSWRcIlxuICAgICAgICAob25TaG93Q2hpbGREZXZpY2VzKT1cInNob3dBc3NpZ25DaGlsZERldmljZXMgPSAkZXZlbnRcIlxuICAgICAgICAoc2VsZWN0ZWREZXZpY2UpPVwic2hvd0NoaWxkcmVuRm9yRGV2aWNlID0gJGV2ZW50XCJcbiAgICAgICAgKm5nSWY9XCJzaG93QXNzaWduRGV2aWNlc1wiXG4gICAgICA+PC9jOHktYXNzaWduLWRldmljZXM+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgW25nQ2xhc3NdPVwieyBkcmF3ZXJPcGVuOiBzaG93QXNzaWduQ2hpbGREZXZpY2VzIH1cIj5cbiAgPGRpdiBjbGFzcz1cImJvdHRvbS1kcmF3ZXIgbS10LTQwXCI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBkLWNvbCBuby1hbGlnbi1pdGVtcyBmaXQtaFwiPlxuICAgICAgPGM4eS1hc3NpZ24tY2hpbGQtZGV2aWNlc1xuICAgICAgICAqbmdJZj1cInNob3dBc3NpZ25DaGlsZERldmljZXNcIlxuICAgICAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgICAgICAob25DYW5jZWwpPVwic2hvd0Fzc2lnbkNoaWxkRGV2aWNlcyA9IGZhbHNlXCJcbiAgICAgICAgW3JlZnJlc2hdPVwicmVmcmVzaFwiXG4gICAgICAgIFtjdXJyZW50R3JvdXBJZF09XCJjdXJyZW50R3JvdXBJZFwiXG4gICAgICAgIFtwYXJlbnREZXZpY2VdPVwic2hvd0NoaWxkcmVuRm9yRGV2aWNlXCJcbiAgICAgID48L2M4eS1hc3NpZ24tY2hpbGQtZGV2aWNlcz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|