@c8y/ngx-components 1018.0.272 → 1018.0.273
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/repository/configuration/list/configuration-detail.component.mjs +13 -6
- package/esm2020/repository/configuration/list/configuration-list.component.mjs +5 -6
- package/esm2020/repository/shared/repository.service.mjs +6 -6
- package/fesm2015/c8y-ngx-components-repository-configuration.mjs +13 -6
- package/fesm2015/c8y-ngx-components-repository-configuration.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-repository-shared.mjs +5 -6
- package/fesm2015/c8y-ngx-components-repository-shared.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-repository-configuration.mjs +12 -6
- package/fesm2020/c8y-ngx-components-repository-configuration.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-repository-shared.mjs +5 -5
- package/fesm2020/c8y-ngx-components-repository-shared.mjs.map +1 -1
- package/package.json +1 -1
- package/repository/configuration/list/configuration-detail.component.d.ts +1 -5
- package/repository/configuration/list/configuration-list.component.d.ts +2 -2
|
@@ -38,9 +38,10 @@ export class ConfigurationDetailComponent {
|
|
|
38
38
|
}
|
|
39
39
|
async ngOnInit() {
|
|
40
40
|
this.configs = await this.repositoryService.listRepositoryEntries(RepositoryType.CONFIGURATION);
|
|
41
|
-
if (this.
|
|
41
|
+
if (this.mo) {
|
|
42
42
|
this.uploadChoice = this.binary.file ? 'uploadBinary' : 'uploadUrl';
|
|
43
43
|
this.existingBinary = this.binary.file;
|
|
44
|
+
this.configurationTypeMO = this.mo;
|
|
44
45
|
}
|
|
45
46
|
this.setPipe('');
|
|
46
47
|
this.submitButtonTitle = this.mo.id
|
|
@@ -82,11 +83,17 @@ export class ConfigurationDetailComponent {
|
|
|
82
83
|
async save() {
|
|
83
84
|
try {
|
|
84
85
|
this.saving = true;
|
|
85
|
-
const {
|
|
86
|
+
const { version, description, binary, deviceType } = this;
|
|
86
87
|
if (this.existingBinary === this.binary.file) {
|
|
87
88
|
binary.file = undefined;
|
|
88
89
|
}
|
|
89
|
-
await this.repositoryService.create({
|
|
90
|
+
await this.repositoryService.create({
|
|
91
|
+
version,
|
|
92
|
+
description,
|
|
93
|
+
binary,
|
|
94
|
+
deviceType,
|
|
95
|
+
configurationType: this.configurationTypeMO?.configurationType
|
|
96
|
+
}, RepositoryType.CONFIGURATION, this.mo);
|
|
90
97
|
this.alert.success(this.mo.id ? gettext('Configuration updated.') : gettext('Configuration created.'));
|
|
91
98
|
this.bsModalRef.hide();
|
|
92
99
|
this._save();
|
|
@@ -101,12 +108,12 @@ export class ConfigurationDetailComponent {
|
|
|
101
108
|
}
|
|
102
109
|
}
|
|
103
110
|
ConfigurationDetailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ConfigurationDetailComponent, deps: [{ token: i1.RepositoryService }, { token: i2.BsModalRef }, { token: i3.AlertService }], target: i0.ɵɵFactoryTarget.Component });
|
|
104
|
-
ConfigurationDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ConfigurationDetailComponent, selector: "c8y-configuration-detail", viewQueries: [{ propertyName: "configurationForm", first: true, predicate: ["configurationForm"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"viewport-modal\">\n <div
|
|
111
|
+
ConfigurationDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ConfigurationDetailComponent, selector: "c8y-configuration-detail", viewQueries: [{ propertyName: "configurationForm", first: true, predicate: ["configurationForm"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"viewport-modal\">\n <div\n class=\"modal-header dialog-header\"\n id=\"configurationModalTitle\"\n >\n <i [c8yIcon]=\"'cogs'\"></i>\n <h4\n id=\"modal-title\"\n translate\n *ngIf=\"mo.id\"\n >\n Update configuration\n </h4>\n <h4\n id=\"modal-title\"\n translate\n *ngIf=\"!mo.id\"\n >\n Add configuration\n </h4>\n </div>\n\n <form\n class=\"d-contents\"\n #configurationForm=\"ngForm\"\n (ngSubmit)=\"configurationForm.form.valid && save()\"\n >\n <div\n class=\"modal-inner-scroll\"\n id=\"modal-body\"\n >\n <div\n class=\"modal-body\"\n id=\"configurationModalDescription\"\n >\n <c8y-form-group>\n <label translate>Name</label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} hosts\"\n name=\"version\"\n type=\"text\"\n autocomplete=\"off\"\n required\n maxlength=\"254\"\n [(ngModel)]=\"version\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Device type</label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} c8y_Linux\"\n name=\"deviceType\"\n type=\"text\"\n autocomplete=\"off\"\n maxlength=\"254\"\n [(ngModel)]=\"deviceType\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Description</label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g. Host configuration' | translate }} c8y_Linux\"\n name=\"description\"\n type=\"text\"\n autocomplete=\"off\"\n maxlength=\"254\"\n [(ngModel)]=\"description\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Configuration type</label>\n <c8y-typeahead\n placeholder=\"{{ 'e.g.' | translate }} ssh\"\n name=\"confType\"\n [(ngModel)]=\"configurationTypeMO\"\n maxlength=\"254\"\n (onSearch)=\"setPipe($event)\"\n displayProperty=\"configurationType\"\n >\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n *c8yFor=\"let config of configs; pipe: filterPipe; notFound: notFoundTemplate\"\n (click)=\"configurationTypeMO = config; setPipe('')\"\n [active]=\"configurationTypeMO === config\"\n >\n <c8y-highlight\n [text]=\"config.configurationType || '--'\"\n [pattern]=\"pattern\"\n ></c8y-highlight>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li\n class=\"bg-level-2 p-8\"\n *ngIf=\"pattern.length > 0\"\n >\n <span translate>No match found.</span>\n <button\n class=\"btn btn-primary btn-xs m-l-8\"\n title=\"{{ 'Add new`configuration type`' | translate }}\"\n type=\"button\"\n translate\n >\n Add new`configuration type`\n </button>\n </c8y-li>\n </ng-template>\n </c8y-typeahead>\n </c8y-form-group>\n\n <c8y-form-group>\n <div\n class=\"legend form-block m-t-40\"\n translate\n >\n Configuration file\n </div>\n <c8y-file-picker\n [maxAllowedFiles]=\"1\"\n (onFilesPicked)=\"onFile($event)\"\n [uploadChoice]=\"uploadChoice\"\n [fileUrl]=\"binary.url\"\n [fileBinary]=\"binary.file\"\n [fileUrlPopover]=\"textForConfigurationUrlPopover\"\n ></c8y-file-picker>\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"cancel()\"\n [disabled]=\"saving\"\n >\n <span translate>Cancel</span>\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ submitButtonTitle | translate }}\"\n type=\"submit\"\n [ngClass]=\"{ 'btn-pending': saving }\"\n [disabled]=\"\n !configurationForm.valid ||\n configurationForm.pristine ||\n (!binary?.url && !binary?.file) ||\n saving\n \"\n >\n {{ submitButtonTitle | translate }}\n </button>\n </div>\n </form>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount"] }, { kind: "component", type: i3.HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: i3.TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected"], outputs: ["onSearch", "onIconClick"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { 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.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i3.FilePickerComponent, selector: "c8y-file-picker", inputs: ["maxAllowedFiles", "uploadChoice", "fileUrl", "fileBinary", "config", "fileUrlPopover"], outputs: ["onFilesPicked"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }] });
|
|
105
112
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ConfigurationDetailComponent, decorators: [{
|
|
106
113
|
type: Component,
|
|
107
|
-
args: [{ selector: 'c8y-configuration-detail', template: "<div class=\"viewport-modal\">\n <div
|
|
114
|
+
args: [{ selector: 'c8y-configuration-detail', template: "<div class=\"viewport-modal\">\n <div\n class=\"modal-header dialog-header\"\n id=\"configurationModalTitle\"\n >\n <i [c8yIcon]=\"'cogs'\"></i>\n <h4\n id=\"modal-title\"\n translate\n *ngIf=\"mo.id\"\n >\n Update configuration\n </h4>\n <h4\n id=\"modal-title\"\n translate\n *ngIf=\"!mo.id\"\n >\n Add configuration\n </h4>\n </div>\n\n <form\n class=\"d-contents\"\n #configurationForm=\"ngForm\"\n (ngSubmit)=\"configurationForm.form.valid && save()\"\n >\n <div\n class=\"modal-inner-scroll\"\n id=\"modal-body\"\n >\n <div\n class=\"modal-body\"\n id=\"configurationModalDescription\"\n >\n <c8y-form-group>\n <label translate>Name</label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} hosts\"\n name=\"version\"\n type=\"text\"\n autocomplete=\"off\"\n required\n maxlength=\"254\"\n [(ngModel)]=\"version\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Device type</label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} c8y_Linux\"\n name=\"deviceType\"\n type=\"text\"\n autocomplete=\"off\"\n maxlength=\"254\"\n [(ngModel)]=\"deviceType\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Description</label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g. Host configuration' | translate }} c8y_Linux\"\n name=\"description\"\n type=\"text\"\n autocomplete=\"off\"\n maxlength=\"254\"\n [(ngModel)]=\"description\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Configuration type</label>\n <c8y-typeahead\n placeholder=\"{{ 'e.g.' | translate }} ssh\"\n name=\"confType\"\n [(ngModel)]=\"configurationTypeMO\"\n maxlength=\"254\"\n (onSearch)=\"setPipe($event)\"\n displayProperty=\"configurationType\"\n >\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n *c8yFor=\"let config of configs; pipe: filterPipe; notFound: notFoundTemplate\"\n (click)=\"configurationTypeMO = config; setPipe('')\"\n [active]=\"configurationTypeMO === config\"\n >\n <c8y-highlight\n [text]=\"config.configurationType || '--'\"\n [pattern]=\"pattern\"\n ></c8y-highlight>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li\n class=\"bg-level-2 p-8\"\n *ngIf=\"pattern.length > 0\"\n >\n <span translate>No match found.</span>\n <button\n class=\"btn btn-primary btn-xs m-l-8\"\n title=\"{{ 'Add new`configuration type`' | translate }}\"\n type=\"button\"\n translate\n >\n Add new`configuration type`\n </button>\n </c8y-li>\n </ng-template>\n </c8y-typeahead>\n </c8y-form-group>\n\n <c8y-form-group>\n <div\n class=\"legend form-block m-t-40\"\n translate\n >\n Configuration file\n </div>\n <c8y-file-picker\n [maxAllowedFiles]=\"1\"\n (onFilesPicked)=\"onFile($event)\"\n [uploadChoice]=\"uploadChoice\"\n [fileUrl]=\"binary.url\"\n [fileBinary]=\"binary.file\"\n [fileUrlPopover]=\"textForConfigurationUrlPopover\"\n ></c8y-file-picker>\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"cancel()\"\n [disabled]=\"saving\"\n >\n <span translate>Cancel</span>\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ submitButtonTitle | translate }}\"\n type=\"submit\"\n [ngClass]=\"{ 'btn-pending': saving }\"\n [disabled]=\"\n !configurationForm.valid ||\n configurationForm.pristine ||\n (!binary?.url && !binary?.file) ||\n saving\n \"\n >\n {{ submitButtonTitle | translate }}\n </button>\n </div>\n </form>\n</div>\n" }]
|
|
108
115
|
}], ctorParameters: function () { return [{ type: i1.RepositoryService }, { type: i2.BsModalRef }, { type: i3.AlertService }]; }, propDecorators: { configurationForm: [{
|
|
109
116
|
type: ViewChild,
|
|
110
117
|
args: ['configurationForm', { static: true }]
|
|
111
118
|
}] } });
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1kZXRhaWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcmVwb3NpdG9yeS9jb25maWd1cmF0aW9uL2xpc3QvY29uZmlndXJhdGlvbi1kZXRhaWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcmVwb3NpdG9yeS9jb25maWd1cmF0aW9uL2xpc3QvY29uZmlndXJhdGlvbi1kZXRhaWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxZQUFZLEVBQWUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekUsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixjQUFjLEVBQ2YsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFNckMsTUFBTSxPQUFPLDRCQUE0QjtJQW1DdkMsWUFDVSxpQkFBb0MsRUFDcEMsVUFBc0IsRUFDdEIsS0FBbUI7UUFGbkIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFVBQUssR0FBTCxLQUFLLENBQWM7UUFqQzdCLFdBQU0sR0FBa0M7WUFDdEMsSUFBSSxFQUFFLFNBQVM7WUFDZixHQUFHLEVBQUUsU0FBUztTQUNmLENBQUM7UUFHRixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBR2IsT0FBRSxHQUE0QixFQUFFLENBQUM7UUFDakMsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLGlCQUFZLEdBQWlDLGNBQWMsQ0FBQztRQUc1RCxtQ0FBOEIsR0FDNUIsT0FBTyxDQUFDOzs7OztHQUtULENBQUMsQ0FBQztRQUVILFdBQU0sR0FBa0IsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDdEQsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUM7WUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFTQSxDQUFDO0lBRUosS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoRyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7WUFDcEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztTQUN4QztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNqQyxDQUFDLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDO1lBQ2pDLENBQUMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxPQUFPLENBQUMsU0FBaUI7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQ3BCLEdBQUcsQ0FBQyxDQUFDLElBQVEsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLEVBQ3BELEdBQUcsQ0FBQyxDQUFDLElBQVEsRUFBRSxFQUFFO1lBQ2YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUNoQixDQUFDLEVBQU8sRUFBRSxFQUFFLENBQ1YsRUFBRSxDQUFDLGlCQUFpQjtnQkFDcEIsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDM0UsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQW9CO1FBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRztnQkFDWixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUc7YUFDakIsQ0FBQztZQUNGLE9BQU87U0FDUjthQUFNLElBQUksT0FBTyxDQUFDLFlBQVksRUFBRTtZQUMvQixJQUFJLENBQUMsTUFBTSxHQUFHO2dCQUNaLElBQUksRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7YUFDbkMsQ0FBQztZQUNGLE9BQU87U0FDUjthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sR0FBRztnQkFDWixJQUFJLEVBQUUsU0FBUztnQkFDZixHQUFHLEVBQUUsU0FBUzthQUNmLENBQUM7U0FDSDtJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUk7WUFDRixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQztZQUNwRSxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7Z0JBQzVDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO2FBQ3pCO1lBQ0QsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUNqQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsRUFDdEQsY0FBYyxDQUFDLGFBQWEsRUFDNUIsSUFBSSxDQUFDLEVBQUUsQ0FDUixDQUFDO1lBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ2hCLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBQ25GLENBQUM7WUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNkO1FBQUMsT0FBTyxFQUFFLEVBQUU7WUFDWCxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNoQjtnQkFBUztZQUNSLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQzs7eUhBbkhVLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLHNNQ2xCekMsczZJQXFJQTsyRkRuSGEsNEJBQTRCO2tCQUp4QyxTQUFTOytCQUNFLDBCQUEwQjs0SkFJYyxpQkFBaUI7c0JBQWxFLFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBQaWNrZWRGaWxlcywgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgTW9kYWxNb2RlbCxcbiAgUmVwb3NpdG9yeVNlcnZpY2UsXG4gIFJlcG9zaXRvcnlUeXBlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvcmVwb3NpdG9yeS9zaGFyZWQnO1xuaW1wb3J0IHsgaXNVbmRlZmluZWQsIHVuaXFCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBwaXBlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1jb25maWd1cmF0aW9uLWRldGFpbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb25maWd1cmF0aW9uLWRldGFpbC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdGlvbkRldGFpbENvbXBvbmVudCBpbXBsZW1lbnRzIE1vZGFsTW9kZWwge1xuICBAVmlld0NoaWxkKCdjb25maWd1cmF0aW9uRm9ybScsIHsgc3RhdGljOiB0cnVlIH0pIGNvbmZpZ3VyYXRpb25Gb3JtOiBOZ0Zvcm07XG4gIHNlbGVjdGVkOiB7IGlkPzogc3RyaW5nOyBuYW1lPzogc3RyaW5nOyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBiaW5hcnk6IHsgZmlsZT86IEZpbGU7IHVybD86IHN0cmluZyB9ID0ge1xuICAgIGZpbGU6IHVuZGVmaW5lZCxcbiAgICB1cmw6IHVuZGVmaW5lZFxuICB9O1xuICBkZXZpY2VUeXBlOiBzdHJpbmc7XG5cbiAgcGF0dGVybiA9ICcnO1xuICBmaWx0ZXJQaXBlO1xuICBjb25maWdzO1xuICBtbzogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4gPSB7fTtcbiAgc2F2aW5nID0gZmFsc2U7XG4gIHVwbG9hZENob2ljZTogJ3VwbG9hZEJpbmFyeScgfCAndXBsb2FkVXJsJyA9ICd1cGxvYWRCaW5hcnknO1xuICBleGlzdGluZ0JpbmFyeTogRmlsZTtcbiAgc3VibWl0QnV0dG9uVGl0bGU6IHN0cmluZztcbiAgdGV4dEZvckNvbmZpZ3VyYXRpb25VcmxQb3BvdmVyOiBzdHJpbmcgPVxuICAgIGdldHRleHQoYFBhdGggZm9yIGJpbmFyaWVzIGNhbiB2YXJ5IGRlcGVuZGluZyBvbiBkZXZpY2UgYWdlbnQgaW1wbGVtZW50YXRpb24sIGZvciBleGFtcGxlOlxuICAgIC9jb25maWd1cmF0aW9uL2JpbmFyaWVzL2NvbmZpZ3VyYXRpb24xLmJpblxuICAgIGh0dHBzOi8vY29uZmlndXJhdGlvbi9iaW5hcnkvMTIzXG4gICAgZnRwOi8vY29uZmlndXJhdGlvbi9iaW5hcnkvMTIzLnRhci5nelxuICAgIENvbmZpZ3VyYXRpb25zIHdpdGggZXh0ZXJuYWwgVVJMcyBvbmx5IHdvcmsgd2l0aCB0aGUgY29uZmlndXJhdGlvbiB0eXBlZCBkZXZpY2VzIChmaWxlLWJhc2VkIGNvbmZpZ3VyYXRpb24pLCBub3Qgd2l0aCBkZXZpY2VzIHdpdGggYSBsZWdhY3kgY29uZmlndXJhdGlvbi5cbiAgYCk7XG5cbiAgcmVzdWx0OiBQcm9taXNlPHZvaWQ+ID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRoaXMuX3NhdmUgPSByZXNvbHZlO1xuICAgIHRoaXMuX2NhbmNlbCA9IHJlamVjdDtcbiAgfSk7XG5cbiAgcHJpdmF0ZSBfc2F2ZTtcbiAgcHJpdmF0ZSBfY2FuY2VsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVwb3NpdG9yeVNlcnZpY2U6IFJlcG9zaXRvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgYnNNb2RhbFJlZjogQnNNb2RhbFJlZixcbiAgICBwcml2YXRlIGFsZXJ0OiBBbGVydFNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY29uZmlncyA9IGF3YWl0IHRoaXMucmVwb3NpdG9yeVNlcnZpY2UubGlzdFJlcG9zaXRvcnlFbnRyaWVzKFJlcG9zaXRvcnlUeXBlLkNPTkZJR1VSQVRJT04pO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkKSB7XG4gICAgICB0aGlzLnVwbG9hZENob2ljZSA9IHRoaXMuYmluYXJ5LmZpbGUgPyAndXBsb2FkQmluYXJ5JyA6ICd1cGxvYWRVcmwnO1xuICAgICAgdGhpcy5leGlzdGluZ0JpbmFyeSA9IHRoaXMuYmluYXJ5LmZpbGU7XG4gICAgfVxuICAgIHRoaXMuc2V0UGlwZSgnJyk7XG4gICAgdGhpcy5zdWJtaXRCdXR0b25UaXRsZSA9IHRoaXMubW8uaWRcbiAgICAgID8gZ2V0dGV4dCgnVXBkYXRlIGNvbmZpZ3VyYXRpb24nKVxuICAgICAgOiBnZXR0ZXh0KCdBZGQgY29uZmlndXJhdGlvbicpO1xuICB9XG5cbiAgY2FuY2VsKCkge1xuICAgIHRoaXMuYnNNb2RhbFJlZi5oaWRlKCk7XG4gICAgdGhpcy5fY2FuY2VsKCk7XG4gIH1cblxuICBzZXRQaXBlKGZpbHRlclN0cjogc3RyaW5nKSB7XG4gICAgdGhpcy5wYXR0ZXJuID0gZmlsdGVyU3RyO1xuICAgIHRoaXMuZmlsdGVyUGlwZSA9IHBpcGUoXG4gICAgICBtYXAoKGRhdGE6IFtdKSA9PiB1bmlxQnkoZGF0YSwgJ2NvbmZpZ3VyYXRpb25UeXBlJykpLFxuICAgICAgbWFwKChkYXRhOiBbXSkgPT4ge1xuICAgICAgICByZXR1cm4gZGF0YS5maWx0ZXIoXG4gICAgICAgICAgKG1vOiBhbnkpID0+XG4gICAgICAgICAgICBtby5jb25maWd1cmF0aW9uVHlwZSAmJlxuICAgICAgICAgICAgbW8uY29uZmlndXJhdGlvblR5cGUudG9Mb3dlckNhc2UoKS5pbmRleE9mKGZpbHRlclN0ci50b0xvd2VyQ2FzZSgpKSA+IC0xXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBvbkZpbGUoZHJvcHBlZDogUGlja2VkRmlsZXMpIHtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb25Gb3JtLmZvcm0ubWFya0FzRGlydHkoKTtcbiAgICBpZiAoIWlzVW5kZWZpbmVkKGRyb3BwZWQudXJsKSkge1xuICAgICAgdGhpcy5iaW5hcnkgPSB7XG4gICAgICAgIHVybDogZHJvcHBlZC51cmxcbiAgICAgIH07XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChkcm9wcGVkLmRyb3BwZWRGaWxlcykge1xuICAgICAgdGhpcy5iaW5hcnkgPSB7XG4gICAgICAgIGZpbGU6IGRyb3BwZWQuZHJvcHBlZEZpbGVzWzBdLmZpbGVcbiAgICAgIH07XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYmluYXJ5ID0ge1xuICAgICAgICBmaWxlOiB1bmRlZmluZWQsXG4gICAgICAgIHVybDogdW5kZWZpbmVkXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNhdmUoKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHsgc2VsZWN0ZWQsIHZlcnNpb24sIGRlc2NyaXB0aW9uLCBiaW5hcnksIGRldmljZVR5cGUgfSA9IHRoaXM7XG4gICAgICBpZiAodGhpcy5leGlzdGluZ0JpbmFyeSA9PT0gdGhpcy5iaW5hcnkuZmlsZSkge1xuICAgICAgICBiaW5hcnkuZmlsZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHRoaXMucmVwb3NpdG9yeVNlcnZpY2UuY3JlYXRlKFxuICAgICAgICB7IHNlbGVjdGVkLCB2ZXJzaW9uLCBkZXNjcmlwdGlvbiwgYmluYXJ5LCBkZXZpY2VUeXBlIH0sXG4gICAgICAgIFJlcG9zaXRvcnlUeXBlLkNPTkZJR1VSQVRJT04sXG4gICAgICAgIHRoaXMubW9cbiAgICAgICk7XG4gICAgICB0aGlzLmFsZXJ0LnN1Y2Nlc3MoXG4gICAgICAgIHRoaXMubW8uaWQgPyBnZXR0ZXh0KCdDb25maWd1cmF0aW9uIHVwZGF0ZWQuJykgOiBnZXR0ZXh0KCdDb25maWd1cmF0aW9uIGNyZWF0ZWQuJylcbiAgICAgICk7XG4gICAgICB0aGlzLmJzTW9kYWxSZWYuaGlkZSgpO1xuICAgICAgdGhpcy5fc2F2ZSgpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICB0aGlzLmFsZXJ0LmFkZFNlcnZlckZhaWx1cmUoZXgpO1xuICAgICAgdGhpcy5fY2FuY2VsKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidmlld3BvcnQtbW9kYWxcIj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBkaWFsb2ctaGVhZGVyXCIgaWQ9XCJjb25maWd1cmF0aW9uTW9kYWxUaXRsZVwiPlxuICAgIDxpIFtjOHlJY29uXT1cIidjb2dzJ1wiPjwvaT5cbiAgICA8aDQgaWQ9XCJtb2RhbC10aXRsZVwiIHRyYW5zbGF0ZSAqbmdJZj1cIm1vLmlkXCI+VXBkYXRlIGNvbmZpZ3VyYXRpb248L2g0PlxuICAgIDxoNCBpZD1cIm1vZGFsLXRpdGxlXCIgdHJhbnNsYXRlICpuZ0lmPVwiIW1vLmlkXCI+QWRkIGNvbmZpZ3VyYXRpb248L2g0PlxuICA8L2Rpdj5cblxuICA8Zm9ybVxuICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgI2NvbmZpZ3VyYXRpb25Gb3JtPVwibmdGb3JtXCJcbiAgICAobmdTdWJtaXQpPVwiY29uZmlndXJhdGlvbkZvcm0uZm9ybS52YWxpZCAmJiBzYXZlKClcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWlubmVyLXNjcm9sbFwiIGlkPVwibW9kYWwtYm9keVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIiBpZD1cImNvbmZpZ3VyYXRpb25Nb2RhbERlc2NyaXB0aW9uXCI+XG4gICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICA8bGFiZWwgdHJhbnNsYXRlPk5hbWU8L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLicgfCB0cmFuc2xhdGUgfX0gaG9zdHNcIlxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICBtYXhsZW5ndGg9XCIyNTRcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2ZXJzaW9uXCJcbiAgICAgICAgICAgIG5hbWU9XCJ2ZXJzaW9uXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuXG4gICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICA8bGFiZWwgdHJhbnNsYXRlPkRldmljZSB0eXBlPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4nIHwgdHJhbnNsYXRlIH19IGM4eV9MaW51eFwiXG4gICAgICAgICAgICBtYXhsZW5ndGg9XCIyNTRcIlxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGV2aWNlVHlwZVwiXG4gICAgICAgICAgICBuYW1lPVwiZGV2aWNlVHlwZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cblxuICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5EZXNjcmlwdGlvbjwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuIEhvc3QgY29uZmlndXJhdGlvbicgfCB0cmFuc2xhdGUgfX0gYzh5X0xpbnV4XCJcbiAgICAgICAgICAgIG1heGxlbmd0aD1cIjI1NFwiXG4gICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICBuYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG5cbiAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+Q29uZmlndXJhdGlvbiB0eXBlPC9sYWJlbD5cbiAgICAgICAgICA8Yzh5LXR5cGVhaGVhZFxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFwiXG4gICAgICAgICAgICBuYW1lPVwiY29uZlR5cGVcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLicgfCB0cmFuc2xhdGUgfX0gc3NoXCJcbiAgICAgICAgICAgIG1heGxlbmd0aD1cIjI1NFwiXG4gICAgICAgICAgICAob25TZWFyY2gpPVwic2V0UGlwZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIGRpc3BsYXlQcm9wZXJ0eT1cImNvbmZpZ3VyYXRpb25UeXBlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Yzh5LWxpXG4gICAgICAgICAgICAgICpjOHlGb3I9XCJsZXQgY29uZmlnIG9mIGNvbmZpZ3M7IHBpcGU6IGZpbHRlclBpcGU7IG5vdEZvdW5kOiBub3RGb3VuZFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLWwtOCBwLXItOCBjOHktbGlzdF9faXRlbS0tbGlua1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZCA9IGNvbmZpZzsgc2V0UGlwZSgnJylcIlxuICAgICAgICAgICAgICBbYWN0aXZlXT1cInNlbGVjdGVkID09PSBjb25maWdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8Yzh5LWhpZ2hsaWdodFxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cImNvbmZpZy5jb25maWd1cmF0aW9uVHlwZSB8fCAnLS0nXCJcbiAgICAgICAgICAgICAgICBbcGF0dGVybl09XCJwYXR0ZXJuXCJcbiAgICAgICAgICAgICAgPjwvYzh5LWhpZ2hsaWdodD5cbiAgICAgICAgICAgIDwvYzh5LWxpPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub3RGb3VuZFRlbXBsYXRlPlxuICAgICAgICAgICAgICA8Yzh5LWxpIGNsYXNzPVwiYmctbGV2ZWwtMiBwLThcIiAqbmdJZj1cInBhdHRlcm4ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5ObyBtYXRjaCBmb3VuZC48L3NwYW4+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQWRkIG5ld2Bjb25maWd1cmF0aW9uIHR5cGVgJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi14cyBtLWwtOFwiXG4gICAgICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBBZGQgbmV3YGNvbmZpZ3VyYXRpb24gdHlwZWBcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9jOHktbGk+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvYzh5LXR5cGVhaGVhZD5cbiAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cblxuICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZCBmb3JtLWJsb2NrIG0tdC00MFwiIHRyYW5zbGF0ZT5Db25maWd1cmF0aW9uIGZpbGU8L2Rpdj5cbiAgICAgICAgICA8Yzh5LWZpbGUtcGlja2VyXG4gICAgICAgICAgICBbbWF4QWxsb3dlZEZpbGVzXT1cIjFcIlxuICAgICAgICAgICAgKG9uRmlsZXNQaWNrZWQpPVwib25GaWxlKCRldmVudClcIlxuICAgICAgICAgICAgW3VwbG9hZENob2ljZV09XCJ1cGxvYWRDaG9pY2VcIlxuICAgICAgICAgICAgW2ZpbGVVcmxdPVwiYmluYXJ5LnVybFwiXG4gICAgICAgICAgICBbZmlsZUJpbmFyeV09XCJiaW5hcnkuZmlsZVwiXG4gICAgICAgICAgICBbZmlsZVVybFBvcG92ZXJdPVwidGV4dEZvckNvbmZpZ3VyYXRpb25VcmxQb3BvdmVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9jOHktZmlsZS1waWNrZXI+XG4gICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKGNsaWNrKT1cImNhbmNlbCgpXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnQ2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJzYXZpbmdcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiB0cmFuc2xhdGU+Q2FuY2VsPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgIHRpdGxlPVwie3sgc3VibWl0QnV0dG9uVGl0bGUgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdidG4tcGVuZGluZyc6IHNhdmluZyB9XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICFjb25maWd1cmF0aW9uRm9ybS52YWxpZCB8fFxuICAgICAgICAgIGNvbmZpZ3VyYXRpb25Gb3JtLnByaXN0aW5lIHx8XG4gICAgICAgICAgKCFiaW5hcnk/LnVybCAmJiAhYmluYXJ5Py5maWxlKSB8fFxuICAgICAgICAgIHNhdmluZ1xuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICB7eyBzdWJtaXRCdXR0b25UaXRsZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbjwvZGl2PlxuIl19
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1kZXRhaWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcmVwb3NpdG9yeS9jb25maWd1cmF0aW9uL2xpc3QvY29uZmlndXJhdGlvbi1kZXRhaWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcmVwb3NpdG9yeS9jb25maWd1cmF0aW9uL2xpc3QvY29uZmlndXJhdGlvbi1kZXRhaWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxZQUFZLEVBQWUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekUsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixjQUFjLEVBQ2YsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFNckMsTUFBTSxPQUFPLDRCQUE0QjtJQW1DdkMsWUFDVSxpQkFBb0MsRUFDcEMsVUFBc0IsRUFDdEIsS0FBbUI7UUFGbkIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFVBQUssR0FBTCxLQUFLLENBQWM7UUFsQzdCLFdBQU0sR0FBa0M7WUFDdEMsSUFBSSxFQUFFLFNBQVM7WUFDZixHQUFHLEVBQUUsU0FBUztTQUNmLENBQUM7UUFJRixZQUFPLEdBQUcsRUFBRSxDQUFD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dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBQaWNrZWRGaWxlcywgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgTW9kYWxNb2RlbCxcbiAgUmVwb3NpdG9yeVNlcnZpY2UsXG4gIFJlcG9zaXRvcnlUeXBlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvcmVwb3NpdG9yeS9zaGFyZWQnO1xuaW1wb3J0IHsgaXNVbmRlZmluZWQsIHVuaXFCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBwaXBlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1jb25maWd1cmF0aW9uLWRldGFpbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb25maWd1cmF0aW9uLWRldGFpbC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdGlvbkRldGFpbENvbXBvbmVudCBpbXBsZW1lbnRzIE1vZGFsTW9kZWwge1xuICBAVmlld0NoaWxkKCdjb25maWd1cmF0aW9uRm9ybScsIHsgc3RhdGljOiB0cnVlIH0pIGNvbmZpZ3VyYXRpb25Gb3JtOiBOZ0Zvcm07XG4gIHZlcnNpb246IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgYmluYXJ5OiB7IGZpbGU/OiBGaWxlOyB1cmw/OiBzdHJpbmcgfSA9IHtcbiAgICBmaWxlOiB1bmRlZmluZWQsXG4gICAgdXJsOiB1bmRlZmluZWRcbiAgfTtcbiAgZGV2aWNlVHlwZTogc3RyaW5nO1xuICBjb25maWd1cmF0aW9uVHlwZU1POiBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0PjtcblxuICBwYXR0ZXJuID0gJyc7XG4gIGZpbHRlclBpcGU7XG4gIGNvbmZpZ3M7XG4gIG1vOiBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0PiA9IHt9O1xuICBzYXZpbmcgPSBmYWxzZTtcbiAgdXBsb2FkQ2hvaWNlOiAndXBsb2FkQmluYXJ5JyB8ICd1cGxvYWRVcmwnID0gJ3VwbG9hZEJpbmFyeSc7XG4gIGV4aXN0aW5nQmluYXJ5OiBGaWxlO1xuICBzdWJtaXRCdXR0b25UaXRsZTogc3RyaW5nO1xuICB0ZXh0Rm9yQ29uZmlndXJhdGlvblVybFBvcG92ZXI6IHN0cmluZyA9XG4gICAgZ2V0dGV4dChgUGF0aCBmb3IgYmluYXJpZXMgY2FuIHZhcnkgZGVwZW5kaW5nIG9uIGRldmljZSBhZ2VudCBpbXBsZW1lbnRhdGlvbiwgZm9yIGV4YW1wbGU6XG4gICAgL2NvbmZpZ3VyYXRpb24vYmluYXJpZXMvY29uZmlndXJhdGlvbjEuYmluXG4gICAgaHR0cHM6Ly9jb25maWd1cmF0aW9uL2JpbmFyeS8xMjNcbiAgICBmdHA6Ly9jb25maWd1cmF0aW9uL2JpbmFyeS8xMjMudGFyLmd6XG4gICAgQ29uZmlndXJhdGlvbnMgd2l0aCBleHRlcm5hbCBVUkxzIG9ubHkgd29yayB3aXRoIHRoZSBjb25maWd1cmF0aW9uIHR5cGVkIGRldmljZXMgKGZpbGUtYmFzZWQgY29uZmlndXJhdGlvbiksIG5vdCB3aXRoIGRldmljZXMgd2l0aCBhIGxlZ2FjeSBjb25maWd1cmF0aW9uLlxuICBgKTtcblxuICByZXN1bHQ6IFByb21pc2U8dm9pZD4gPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdGhpcy5fc2F2ZSA9IHJlc29sdmU7XG4gICAgdGhpcy5fY2FuY2VsID0gcmVqZWN0O1xuICB9KTtcblxuICBwcml2YXRlIF9zYXZlO1xuICBwcml2YXRlIF9jYW5jZWw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZXBvc2l0b3J5U2VydmljZTogUmVwb3NpdG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBic01vZGFsUmVmOiBCc01vZGFsUmVmLFxuICAgIHByaXZhdGUgYWxlcnQ6IEFsZXJ0U2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jb25maWdzID0gYXdhaXQgdGhpcy5yZXBvc2l0b3J5U2VydmljZS5saXN0UmVwb3NpdG9yeUVudHJpZXMoUmVwb3NpdG9yeVR5cGUuQ09ORklHVVJBVElPTik7XG4gICAgaWYgKHRoaXMubW8pIHtcbiAgICAgIHRoaXMudXBsb2FkQ2hvaWNlID0gdGhpcy5iaW5hcnkuZmlsZSA/ICd1cGxvYWRCaW5hcnknIDogJ3VwbG9hZFVybCc7XG4gICAgICB0aGlzLmV4aXN0aW5nQmluYXJ5ID0gdGhpcy5iaW5hcnkuZmlsZTtcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvblR5cGVNTyA9IHRoaXMubW87XG4gICAgfVxuICAgIHRoaXMuc2V0UGlwZSgnJyk7XG4gICAgdGhpcy5zdWJtaXRCdXR0b25UaXRsZSA9IHRoaXMubW8uaWRcbiAgICAgID8gZ2V0dGV4dCgnVXBkYXRlIGNvbmZpZ3VyYXRpb24nKVxuICAgICAgOiBnZXR0ZXh0KCdBZGQgY29uZmlndXJhdGlvbicpO1xuICB9XG5cbiAgY2FuY2VsKCkge1xuICAgIHRoaXMuYnNNb2RhbFJlZi5oaWRlKCk7XG4gICAgdGhpcy5fY2FuY2VsKCk7XG4gIH1cblxuICBzZXRQaXBlKGZpbHRlclN0cjogc3RyaW5nKSB7XG4gICAgdGhpcy5wYXR0ZXJuID0gZmlsdGVyU3RyO1xuICAgIHRoaXMuZmlsdGVyUGlwZSA9IHBpcGUoXG4gICAgICBtYXAoKGRhdGE6IFtdKSA9PiB1bmlxQnkoZGF0YSwgJ2NvbmZpZ3VyYXRpb25UeXBlJykpLFxuICAgICAgbWFwKChkYXRhOiBbXSkgPT4ge1xuICAgICAgICByZXR1cm4gZGF0YS5maWx0ZXIoXG4gICAgICAgICAgKG1vOiBhbnkpID0+XG4gICAgICAgICAgICBtby5jb25maWd1cmF0aW9uVHlwZSAmJlxuICAgICAgICAgICAgbW8uY29uZmlndXJhdGlvblR5cGUudG9Mb3dlckNhc2UoKS5pbmRleE9mKGZpbHRlclN0ci50b0xvd2VyQ2FzZSgpKSA+IC0xXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBvbkZpbGUoZHJvcHBlZDogUGlja2VkRmlsZXMpIHtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb25Gb3JtLmZvcm0ubWFya0FzRGlydHkoKTtcbiAgICBpZiAoIWlzVW5kZWZpbmVkKGRyb3BwZWQudXJsKSkge1xuICAgICAgdGhpcy5iaW5hcnkgPSB7XG4gICAgICAgIHVybDogZHJvcHBlZC51cmxcbiAgICAgIH07XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChkcm9wcGVkLmRyb3BwZWRGaWxlcykge1xuICAgICAgdGhpcy5iaW5hcnkgPSB7XG4gICAgICAgIGZpbGU6IGRyb3BwZWQuZHJvcHBlZEZpbGVzWzBdLmZpbGVcbiAgICAgIH07XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYmluYXJ5ID0ge1xuICAgICAgICBmaWxlOiB1bmRlZmluZWQsXG4gICAgICAgIHVybDogdW5kZWZpbmVkXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNhdmUoKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHsgdmVyc2lvbiwgZGVzY3JpcHRpb24sIGJpbmFyeSwgZGV2aWNlVHlwZSB9ID0gdGhpcztcbiAgICAgIGlmICh0aGlzLmV4aXN0aW5nQmluYXJ5ID09PSB0aGlzLmJpbmFyeS5maWxlKSB7XG4gICAgICAgIGJpbmFyeS5maWxlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5yZXBvc2l0b3J5U2VydmljZS5jcmVhdGUoXG4gICAgICAgIHtcbiAgICAgICAgICB2ZXJzaW9uLFxuICAgICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgICAgIGJpbmFyeSxcbiAgICAgICAgICBkZXZpY2VUeXBlLFxuICAgICAgICAgIGNvbmZpZ3VyYXRpb25UeXBlOiB0aGlzLmNvbmZpZ3VyYXRpb25UeXBlTU8/LmNvbmZpZ3VyYXRpb25UeXBlXG4gICAgICAgIH0sXG4gICAgICAgIFJlcG9zaXRvcnlUeXBlLkNPTkZJR1VSQVRJT04sXG4gICAgICAgIHRoaXMubW9cbiAgICAgICk7XG4gICAgICB0aGlzLmFsZXJ0LnN1Y2Nlc3MoXG4gICAgICAgIHRoaXMubW8uaWQgPyBnZXR0ZXh0KCdDb25maWd1cmF0aW9uIHVwZGF0ZWQuJykgOiBnZXR0ZXh0KCdDb25maWd1cmF0aW9uIGNyZWF0ZWQuJylcbiAgICAgICk7XG4gICAgICB0aGlzLmJzTW9kYWxSZWYuaGlkZSgpO1xuICAgICAgdGhpcy5fc2F2ZSgpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICB0aGlzLmFsZXJ0LmFkZFNlcnZlckZhaWx1cmUoZXgpO1xuICAgICAgdGhpcy5fY2FuY2VsKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidmlld3BvcnQtbW9kYWxcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwibW9kYWwtaGVhZGVyIGRpYWxvZy1oZWFkZXJcIlxuICAgIGlkPVwiY29uZmlndXJhdGlvbk1vZGFsVGl0bGVcIlxuICA+XG4gICAgPGkgW2M4eUljb25dPVwiJ2NvZ3MnXCI+PC9pPlxuICAgIDxoNFxuICAgICAgaWQ9XCJtb2RhbC10aXRsZVwiXG4gICAgICB0cmFuc2xhdGVcbiAgICAgICpuZ0lmPVwibW8uaWRcIlxuICAgID5cbiAgICAgIFVwZGF0ZSBjb25maWd1cmF0aW9uXG4gICAgPC9oND5cbiAgICA8aDRcbiAgICAgIGlkPVwibW9kYWwtdGl0bGVcIlxuICAgICAgdHJhbnNsYXRlXG4gICAgICAqbmdJZj1cIiFtby5pZFwiXG4gICAgPlxuICAgICAgQWRkIGNvbmZpZ3VyYXRpb25cbiAgICA8L2g0PlxuICA8L2Rpdj5cblxuICA8Zm9ybVxuICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgI2NvbmZpZ3VyYXRpb25Gb3JtPVwibmdGb3JtXCJcbiAgICAobmdTdWJtaXQpPVwiY29uZmlndXJhdGlvbkZvcm0uZm9ybS52YWxpZCAmJiBzYXZlKClcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJtb2RhbC1pbm5lci1zY3JvbGxcIlxuICAgICAgaWQ9XCJtb2RhbC1ib2R5XCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibW9kYWwtYm9keVwiXG4gICAgICAgIGlkPVwiY29uZmlndXJhdGlvbk1vZGFsRGVzY3JpcHRpb25cIlxuICAgICAgPlxuICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5OYW1lPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4nIHwgdHJhbnNsYXRlIH19IGhvc3RzXCJcbiAgICAgICAgICAgIG5hbWU9XCJ2ZXJzaW9uXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMjU0XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwidmVyc2lvblwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cblxuICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5EZXZpY2UgdHlwZTwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuJyB8IHRyYW5zbGF0ZSB9fSBjOHlfTGludXhcIlxuICAgICAgICAgICAgbmFtZT1cImRldmljZVR5cGVcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIG1heGxlbmd0aD1cIjI1NFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRldmljZVR5cGVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG5cbiAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+RGVzY3JpcHRpb248L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLiBIb3N0IGNvbmZpZ3VyYXRpb24nIHwgdHJhbnNsYXRlIH19IGM4eV9MaW51eFwiXG4gICAgICAgICAgICBuYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIG1heGxlbmd0aD1cIjI1NFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuXG4gICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICA8bGFiZWwgdHJhbnNsYXRlPkNvbmZpZ3VyYXRpb24gdHlwZTwvbGFiZWw+XG4gICAgICAgICAgPGM4eS10eXBlYWhlYWRcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4nIHwgdHJhbnNsYXRlIH19IHNzaFwiXG4gICAgICAgICAgICBuYW1lPVwiY29uZlR5cGVcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25maWd1cmF0aW9uVHlwZU1PXCJcbiAgICAgICAgICAgIG1heGxlbmd0aD1cIjI1NFwiXG4gICAgICAgICAgICAob25TZWFyY2gpPVwic2V0UGlwZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIGRpc3BsYXlQcm9wZXJ0eT1cImNvbmZpZ3VyYXRpb25UeXBlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Yzh5LWxpXG4gICAgICAgICAgICAgIGNsYXNzPVwicC1sLTggcC1yLTggYzh5LWxpc3RfX2l0ZW0tLWxpbmtcIlxuICAgICAgICAgICAgICAqYzh5Rm9yPVwibGV0IGNvbmZpZyBvZiBjb25maWdzOyBwaXBlOiBmaWx0ZXJQaXBlOyBub3RGb3VuZDogbm90Rm91bmRUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjb25maWd1cmF0aW9uVHlwZU1PID0gY29uZmlnOyBzZXRQaXBlKCcnKVwiXG4gICAgICAgICAgICAgIFthY3RpdmVdPVwiY29uZmlndXJhdGlvblR5cGVNTyA9PT0gY29uZmlnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGM4eS1oaWdobGlnaHRcbiAgICAgICAgICAgICAgICBbdGV4dF09XCJjb25maWcuY29uZmlndXJhdGlvblR5cGUgfHwgJy0tJ1wiXG4gICAgICAgICAgICAgICAgW3BhdHRlcm5dPVwicGF0dGVyblwiXG4gICAgICAgICAgICAgID48L2M4eS1oaWdobGlnaHQ+XG4gICAgICAgICAgICA8L2M4eS1saT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90Rm91bmRUZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPGM4eS1saVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmctbGV2ZWwtMiBwLThcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwicGF0dGVybi5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5ObyBtYXRjaCBmb3VuZC48L3NwYW4+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzIG0tbC04XCJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FkZCBuZXdgY29uZmlndXJhdGlvbiB0eXBlYCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBBZGQgbmV3YGNvbmZpZ3VyYXRpb24gdHlwZWBcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9jOHktbGk+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvYzh5LXR5cGVhaGVhZD5cbiAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cblxuICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9jayBtLXQtNDBcIlxuICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBmaWxlXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGM4eS1maWxlLXBpY2tlclxuICAgICAgICAgICAgW21heEFsbG93ZWRGaWxlc109XCIxXCJcbiAgICAgICAgICAgIChvbkZpbGVzUGlja2VkKT1cIm9uRmlsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFt1cGxvYWRDaG9pY2VdPVwidXBsb2FkQ2hvaWNlXCJcbiAgICAgICAgICAgIFtmaWxlVXJsXT1cImJpbmFyeS51cmxcIlxuICAgICAgICAgICAgW2ZpbGVCaW5hcnldPVwiYmluYXJ5LmZpbGVcIlxuICAgICAgICAgICAgW2ZpbGVVcmxQb3BvdmVyXT1cInRleHRGb3JDb25maWd1cmF0aW9uVXJsUG9wb3ZlclwiXG4gICAgICAgICAgPjwvYzh5LWZpbGUtcGlja2VyPlxuICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnQ2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwic2F2aW5nXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gdHJhbnNsYXRlPkNhbmNlbDwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgIHRpdGxlPVwie3sgc3VibWl0QnV0dG9uVGl0bGUgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnYnRuLXBlbmRpbmcnOiBzYXZpbmcgfVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAhY29uZmlndXJhdGlvbkZvcm0udmFsaWQgfHxcbiAgICAgICAgICBjb25maWd1cmF0aW9uRm9ybS5wcmlzdGluZSB8fFxuICAgICAgICAgICghYmluYXJ5Py51cmwgJiYgIWJpbmFyeT8uZmlsZSkgfHxcbiAgICAgICAgICBzYXZpbmdcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAge3sgc3VibWl0QnV0dG9uVGl0bGUgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
2
|
import { Component, ViewChild } from '@angular/core';
|
|
3
3
|
import { InventoryBinaryService, InventoryService } from '@c8y/client';
|
|
4
|
-
import { AlertService, FilterInputComponent,
|
|
4
|
+
import { AlertService, FilterInputComponent, ModalService, Status, gettext, memoize } from '@c8y/ngx-components';
|
|
5
|
+
import { RepositoryService, RepositoryType } from '@c8y/ngx-components/repository/shared';
|
|
5
6
|
import { TranslateService } from '@ngx-translate/core';
|
|
7
|
+
import { saveAs } from 'file-saver';
|
|
8
|
+
import { property } from 'lodash-es';
|
|
6
9
|
import { BsModalService } from 'ngx-bootstrap/modal';
|
|
7
10
|
import { of, pipe } from 'rxjs';
|
|
8
11
|
import { map } from 'rxjs/operators';
|
|
9
|
-
import { RepositoryService, RepositoryType } from '@c8y/ngx-components/repository/shared';
|
|
10
12
|
import { ConfigurationDetailComponent } from './configuration-detail.component';
|
|
11
|
-
import { property } from 'lodash-es';
|
|
12
|
-
import { saveAs } from 'file-saver';
|
|
13
13
|
import * as i0 from "@angular/core";
|
|
14
14
|
import * as i1 from "@c8y/ngx-components";
|
|
15
15
|
import * as i2 from "@c8y/ngx-components/repository/shared";
|
|
@@ -65,7 +65,6 @@ export class ConfigurationListComponent {
|
|
|
65
65
|
ariaLabelledBy: 'configurationModalTitle',
|
|
66
66
|
ignoreBackdropClick: true,
|
|
67
67
|
initialState: {
|
|
68
|
-
selected: configuration,
|
|
69
68
|
version: configuration.name,
|
|
70
69
|
deviceType: configuration.deviceType,
|
|
71
70
|
description: configuration.description,
|
|
@@ -161,4 +160,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
161
160
|
type: ViewChild,
|
|
162
161
|
args: [FilterInputComponent, { static: false }]
|
|
163
162
|
}], getBinaryName: [] } });
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3JlcG9zaXRvcnkvY29uZmlndXJhdGlvbi9saXN0L2NvbmZpZ3VyYXRpb24tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9yZXBvc2l0b3J5L2NvbmZpZ3VyYXRpb24vbGlzdC9jb25maWd1cmF0aW9uLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWdCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQWtCLHNCQUFzQixFQUFFLGdCQUFnQixFQUFlLE1BQU0sYUFBYSxDQUFDO0FBQ3BHLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLE9BQU8sRUFDUCxPQUFPLEVBQ1AsWUFBWSxFQUNaLE1BQU0sRUFDUCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQzs7Ozs7Ozs7O0FBTXBDLE1BQU0sT0FBTywwQkFBMEI7SUFTckMsWUFDVSxLQUFtQixFQUNuQixpQkFBb0MsRUFDcEMs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UUFDbkIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxJQUFZLEVBQUUsVUFBa0I7UUFDMUQsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdDLE9BQU8sSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQzs7dUhBMUpVLDBCQUEwQjsyR0FBMUIsMEJBQTBCLHNHQUMxQixvQkFBb0IsZ0RDeEJqQywrMk9BdU9BO0FEOUhFO0lBREMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzs7OzsrREFHdkI7MkZBcEZVLDBCQUEwQjtrQkFKdEMsU0FBUzsrQkFDRSx3QkFBd0I7OFJBSWtCLE1BQU07c0JBQXpELFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQWlGbEQsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBQaXBlLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0LCBJbnZlbnRvcnlCaW5hcnlTZXJ2aWNlLCBJbnZlbnRvcnlTZXJ2aWNlLCBJUmVzdWx0TGlzdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFsZXJ0U2VydmljZSxcbiAgRmlsdGVySW5wdXRDb21wb25lbnQsXG4gIGdldHRleHQsXG4gIG1lbW9pemUsXG4gIE1vZGFsU2VydmljZSxcbiAgU3RhdHVzXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBwaXBlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSZXBvc2l0b3J5U2VydmljZSwgUmVwb3NpdG9yeVR5cGUgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL3JlcG9zaXRvcnkvc2hhcmVkJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25EZXRhaWxDb21wb25lbnQgfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24tZGV0YWlsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWNvbmZpZ3VyYXRpb24tbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb25maWd1cmF0aW9uLWxpc3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb25MaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQFZpZXdDaGlsZChGaWx0ZXJJbnB1dENvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pIGZpbHRlcjogRmlsdGVySW5wdXRDb21wb25lbnQ7XG4gIGNvbmZpZ3VyYXRpb25zJDogT2JzZXJ2YWJsZTxJUmVzdWx0TGlzdDxJTWFuYWdlZE9iamVjdD4+O1xuICBmaWx0ZXJQaXBlOiBQaXBlO1xuICBmaWx0ZXJUZXJtID0gJyc7XG4gIHJlbG9hZGluZyA9IGZhbHNlO1xuICBkYXRhO1xuICBwcml2YXRlIHJlYWRvbmx5IERFTEVURURfU1VDQ0VTU19NU0cgPSBnZXR0ZXh0KCdDb25maWd1cmF0aW9uIGRlbGV0ZWQuJyk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbGVydDogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVwb3NpdG9yeVNlcnZpY2U6IFJlcG9zaXRvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgYnNNb2RhbFNlcnZpY2U6IEJzTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW52ZW50b3J5QmluYXJ5U2VydmljZTogSW52ZW50b3J5QmluYXJ5U2VydmljZSxcbiAgICBwcml2YXRlIGludmVudG9yeVNlcnZpY2U6IEludmVudG9yeVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubG9hZENvbmZpZ3VyYXRpb25zKCk7XG4gIH1cblxuICBhc3luYyBsb2FkQ29uZmlndXJhdGlvbnMoKSB7XG4gICAgdGhpcy5yZWxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuY29uZmlndXJhdGlvbnMkID0gb2YoXG4gICAgICBhd2FpdCB0aGlzLnJlcG9zaXRvcnlTZXJ2aWNlLmxpc3RSZXBvc2l0b3J5RW50cmllcyhSZXBvc2l0b3J5VHlwZS5DT05GSUdVUkFUSU9OKVxuICAgICk7XG4gICAgdGhpcy5yZWxvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnJlc2V0KCk7XG4gIH1cblxuICBhc3luYyBhZGQoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IChcbiAgICAgICAgdGhpcy5ic01vZGFsU2VydmljZS5zaG93KENvbmZpZ3VyYXRpb25EZXRhaWxDb21wb25lbnQsIHtcbiAgICAgICAgICBjbGFzczogJ21vZGFsLXNtJyxcbiAgICAgICAgICBhcmlhRGVzY3JpYmVkYnk6ICdjb25maWd1cmF0aW9uTW9kYWxEZXNjcmlwdGlvbicsXG4gICAgICAgICAgYXJpYUxhYmVsbGVkQnk6ICdjb25maWd1cmF0aW9uTW9kYWxUaXRsZScsXG4gICAgICAgICAgaWdub3JlQmFja2Ryb3BDbGljazogdHJ1ZVxuICAgICAgICB9KS5jb250ZW50IGFzIENvbmZpZ3VyYXRpb25EZXRhaWxDb21wb25lbnRcbiAgICAgICkucmVzdWx0O1xuICAgICAgYXdhaXQgdGhpcy5sb2FkQ29uZmlndXJhdGlvbnMoKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgLy8gaW50ZW5kZWQgZW1wdHlcbiAgICB9XG4gIH1cblxuICBhc3luYyBlZGl0KGNvbmZpZ3VyYXRpb246IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgY29uc3QgZmlsZUJpbmFyeTogRmlsZSA9IGF3YWl0IHRoaXMucmVwb3NpdG9yeVNlcnZpY2UuZ2V0QmluYXJ5RmlsZShjb25maWd1cmF0aW9uLnVybCwge1xuICAgICAgYWxsb3dFeHRlcm5hbDogZmFsc2VcbiAgICB9KTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbW9kYWwgPSB0aGlzLmJzTW9kYWxTZXJ2aWNlLnNob3coQ29uZmlndXJhdGlvbkRldGFpbENvbXBvbmVudCwge1xuICAgICAgICBjbGFzczogJ21vZGFsLXNtJyxcbiAgICAgICAgYXJpYURlc2NyaWJlZGJ5OiAnY29uZmlndXJhdGlvbk1vZGFsRGVzY3JpcHRpb24nLFxuICAgICAgICBhcmlhTGFiZWxsZWRCeTogJ2NvbmZpZ3VyYXRpb25Nb2RhbFRpdGxlJyxcbiAgICAgICAgaWdub3JlQmFja2Ryb3BDbGljazogdHJ1ZSxcblxuICAgICAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgICAgICBzZWxlY3RlZDogY29uZmlndXJhdGlvbixcbiAgICAgICAgICB2ZXJzaW9uOiBjb25maWd1cmF0aW9uLm5hbWUsXG4gICAgICAgICAgZGV2aWNlVHlwZTogY29uZmlndXJhdGlvbi5kZXZpY2VUeXBlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBjb25maWd1cmF0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgICAgIGJpbmFyeTogeyBmaWxlOiBmaWxlQmluYXJ5LCB1cmw6IGNvbmZpZ3VyYXRpb24udXJsIH1cbiAgICAgICAgfVxuICAgICAgfSkuY29udGVudCBhcyBDb25maWd1cmF0aW9uRGV0YWlsQ29tcG9uZW50O1xuICAgICAgbW9kYWwubW8gPSBjb25maWd1cmF0aW9uO1xuICAgICAgYXdhaXQgbW9kYWwucmVzdWx0O1xuICAgICAgYXdhaXQgdGhpcy5sb2FkQ29uZmlndXJhdGlvbnMoKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgLy8gaW50ZW5kZWQgZW1wdHlcbiAgICB9XG4gIH1cblxuICBpc0JpbmFyeUZpbGUoY29uZmlndXJhdGlvbjogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gY29uZmlndXJhdGlvbi51cmxcbiAgICAgID8gISF0aGlzLmludmVudG9yeUJpbmFyeVNlcnZpY2UuZ2V0SWRGcm9tVXJsKGNvbmZpZ3VyYXRpb24udXJsKVxuICAgICAgOiBmYWxzZTtcbiAgfVxuXG4gIEBtZW1vaXplKHByb3BlcnR5KCdpZCcpKVxuICBnZXRCaW5hcnlOYW1lKGNvbmZpZ3VyYXRpb246IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgcmV0dXJuIHRoaXMucmVwb3NpdG9yeVNlcnZpY2UuZ2V0QmluYXJ5TmFtZSQoY29uZmlndXJhdGlvbi51cmwpO1xuICB9XG5cbiAgYXN5bmMgZG93bmxvYWQoY29uZmlndXJhdGlvbjogSU1hbmFnZWRPYmplY3QpIHtcbiAgICBjb25zdCBmaWxlQmluYXJ5OiBGaWxlID0gYXdhaXQgdGhpcy5yZXBvc2l0b3J5U2VydmljZS5nZXRCaW5hcnlGaWxlKGNvbmZpZ3VyYXRpb24udXJsLCB7XG4gICAgICBhbGxvd0V4dGVybmFsOiBmYWxzZVxuICAgIH0pO1xuICAgIHNhdmVBcyhmaWxlQmluYXJ5KTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZShjb25maWd1cmF0aW9uOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB0aXRsZSA9IGdldHRleHQoJ0RlbGV0ZSBjb25maWd1cmF0aW9uIHNuYXBzaG90Jyk7XG4gICAgICBjb25zdCBjb25maXJtYXRpb25UZXh0ID0gZ2V0dGV4dChcbiAgICAgICAgJ1lvdSBhcmUgYWJvdXQgdG8gZGVsZXRlIHRoZSBjb25maWd1cmF0aW9uIHNuYXBzaG90IHt7IG5hbWUgfX0uJ1xuICAgICAgKTtcbiAgICAgIGNvbnN0IGhpbnQgPSBnZXR0ZXh0KCdUaGlzIG9wZXJhdGlvbiBpcyBpcnJldmVyc2libGUuJyk7XG4gICAgICBjb25zdCBwcm9jZWVkID0gZ2V0dGV4dCgnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nKTtcbiAgICAgIGNvbnN0IGJvZHkgPSBbXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGNvbmZpcm1hdGlvblRleHQsIHtcbiAgICAgICAgICBuYW1lOiBjb25maWd1cmF0aW9uLm5hbWVcbiAgICAgICAgfSksXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGhpbnQpLFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChwcm9jZWVkKVxuICAgICAgXS5qb2luKCcgJyk7XG4gICAgICBjb25zdCBsYWJlbHMgPSB7XG4gICAgICAgIG9rOiBnZXR0ZXh0KCdEZWxldGUnKVxuICAgICAgfTtcbiAgICAgIGF3YWl0IHRoaXMubW9kYWxTZXJ2aWNlLmNvbmZpcm0odGl0bGUsIGJvZHksIFN0YXR1cy5EQU5HRVIsIGxhYmVscyk7XG4gICAgICBhd2FpdCB0aGlzLnJlcG9zaXRvcnlTZXJ2aWNlLmRlbGV0ZShjb25maWd1cmF0aW9uKTtcbiAgICAgIHRoaXMuYWxlcnQuc3VjY2Vzcyh0aGlzLkRFTEVURURfU1VDQ0VTU19NU0cpO1xuICAgICAgYXdhaXQgdGhpcy5sb2FkQ29uZmlndXJhdGlvbnMoKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgaWYgKGV4KSB7XG4gICAgICAgIHRoaXMuYWxlcnQuYWRkU2VydmVyRmFpbHVyZShleCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0UGlwZShmaWx0ZXJUZXJtOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZpbHRlclRlcm0gPSBmaWx0ZXJUZXJtO1xuICAgIHRoaXMuZmlsdGVyUGlwZSA9IHBpcGUoXG4gICAgICBtYXAoKGRhdGE6IFtdKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0YSA9XG4gICAgICAgICAgZmlsdGVyVGVybS50cmltKCkubGVuZ3RoID09PSAwXG4gICAgICAgICAgICA/IGRhdGFcbiAgICAgICAgICAgIDogZGF0YS5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKG1vOiBJTWFuYWdlZE9iamVjdCkgPT5cbiAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyQ29udGFpblN0cmluZyhtby5uYW1lLCBmaWx0ZXJUZXJtKSB8fFxuICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJDb250YWluU3RyaW5nKG1vLmNvbmZpZ3VyYXRpb25UeXBlLCBmaWx0ZXJUZXJtKSB8fFxuICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJDb250YWluU3RyaW5nKG1vLmRldmljZVR5cGUsIGZpbHRlclRlcm0pIHx8XG4gICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckNvbnRhaW5TdHJpbmcobW8uZGVzY3JpcHRpb24sIGZpbHRlclRlcm0pXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHNob3VsZFNob3dFbXB0eVN0YXRlKCkge1xuICAgIHJldHVybiAhKHRoaXMuZGF0YSAmJiB0aGlzLmRhdGEubGVuZ3RoID4gMCk7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLmZpbHRlci5maWx0ZXJUZXJtID0gJyc7XG4gICAgdGhpcy5zZXRQaXBlKCcnKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyQ29udGFpblN0cmluZyhuYW1lOiBzdHJpbmcsIGZpbHRlclRlcm06IHN0cmluZykge1xuICAgIGNvbnN0IHRlcm0gPSBmaWx0ZXJUZXJtLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgIHJldHVybiBuYW1lICYmIG5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHRlcm0pID4gLTE7XG4gIH1cbn1cbiIsIjxjOHktdGl0bGU+XG4gIDxzcGFuIGNsYXNzPVwibS1yLTRcIiB0cmFuc2xhdGU+Q29uZmlndXJhdGlvbiByZXBvc2l0b3J5PC9zcGFuPlxuICA8c21hbGwgKm5nSWY9XCIoY29uZmlndXJhdGlvbnMkIHwgYXN5bmMpPy5wYWdpbmcudG90YWxQYWdlcyA9PT0gMSAmJiAhZmlsdGVyVGVybVwiPlxuICAgIHt7IChjb25maWd1cmF0aW9ucyQgfCBhc3luYykuZGF0YS5sZW5ndGggfX1cbiAgICA8c3BhbiB0cmFuc2xhdGU+c25hcHNob3RzPC9zcGFuPlxuICA8L3NtYWxsPlxuICA8c21hbGxcbiAgICAqbmdJZj1cIihjb25maWd1cmF0aW9ucyQgfCBhc3luYyk/LnBhZ2luZy50b3RhbFBhZ2VzID4gMSAmJiAhZmlsdGVyVGVybVwiXG4gICAgW3Rvb2x0aXBdPVwiJ01vcmUgZGF0YSBhdmFpbGFibGUuIFNjcm9sbCB0byB0aGUgYm90dG9tIG9mIHRoZSBsaXN0IHRvIGxvYWQgaXQuJyB8IHRyYW5zbGF0ZVwiXG4gICAgY29udGFpbmVyPVwiYm9keVwiXG4gID5cbiAgICB7eyAoY29uZmlndXJhdGlvbnMkIHwgYXN5bmMpLnBhZ2luZy5wYWdlU2l6ZSB9fStcbiAgICA8c3BhbiB0cmFuc2xhdGU+c25hcHNob3RzPC9zcGFuPlxuICA8L3NtYWxsPlxuPC9jOHktdGl0bGU+XG5cbjxjOHktYnJlYWRjcnVtYj5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBsYWJlbD1cInt7ICdNYW5hZ2VtZW50JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgaWNvbj1cImM4eS1tYW5hZ2VtZW50XCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBsYWJlbD1cInt7ICdDb25maWd1cmF0aW9uIHJlcG9zaXRvcnknIHwgdHJhbnNsYXRlIH19XCJcbiAgICBpY29uPVwiZ2VhcnNcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuPC9jOHktYnJlYWRjcnVtYj5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW0gaXRlbUNsYXNzPVwibmF2YmFyLWZvcm1cIj5cbiAgPGM4eS1maWx0ZXIgW2ljb25dPVwiJ3NlYXJjaCdcIiAob25TZWFyY2gpPVwic2V0UGlwZSgkZXZlbnQpXCI+PC9jOHktZmlsdGVyPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbSBbcGxhY2VtZW50XT1cIidyaWdodCdcIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICB0aXRsZT1cInt7ICdBZGQgY29uZmlndXJhdGlvbiBzbmFwc2hvdCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIChjbGljayk9XCJhZGQoKVwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwicGx1cy1jaXJjbGVcIj48L2k+XG4gICAge3sgJ0FkZCBjb25maWd1cmF0aW9uIHNuYXBzaG90JyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW0gW3BsYWNlbWVudF09XCIncmlnaHQnXCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgdGl0bGU9XCJ7eyAnUmVsb2FkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgKGNsaWNrKT1cImxvYWRDb25maWd1cmF0aW9ucygpXCJcbiAgPlxuICAgIDxpIFtuZ0NsYXNzXT1cInsgJ2ljb24tc3Bpbic6IHJlbG9hZGluZyB9XCIgYzh5SWNvbj1cInJlZnJlc2hcIj48L2k+XG4gICAge3sgJ1JlbG9hZCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktaGVscCBzcmM9XCIvdXNlcnMtZ3VpZGUvZGV2aWNlLW1hbmFnZW1lbnQvI2NvbmZpZ3VyYXRpb24tcmVwb3NpdG9yeVwiPjwvYzh5LWhlbHA+XG5cbjwhLS0gZW1wdHkgc3RhdGUgLS0+XG48Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICpuZ0lmPVwiIWZpbHRlclRlcm0gJiYgKGNvbmZpZ3VyYXRpb25zJCB8IGFzeW5jKT8uZGF0YS5sZW5ndGggPT09IDBcIlxuICBbaWNvbl09XCInZ2VhcnMnXCJcbiAgW3RpdGxlXT1cIidUaGVyZSBhcmUgbm8gY29uZmlndXJhdGlvbiBzbmFwc2hvdHMgZGVmaW5lZC4nIHwgdHJhbnNsYXRlXCJcbiAgW3N1YnRpdGxlXT1cIidBZGQgYSBjb25maWd1cmF0aW9uIHNuYXBzaG90IGZpcnN0LicgfCB0cmFuc2xhdGVcIlxuPlxuICA8ZGl2PlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgdGl0bGU9XCJ7eyAnQWRkIGNvbmZpZ3VyYXRpb24gc25hcHNob3QnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIChjbGljayk9XCJhZGQoKVwiXG4gICAgPlxuICAgICAge3sgJ0FkZCBjb25maWd1cmF0aW9uIHNuYXBzaG90JyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPHAgYzh5LWd1aWRlLWRvY3M+XG4gICAgPHNtYWxsIHRyYW5zbGF0ZSBuZ05vbkJpbmRhYmxlPlxuICAgICAgRmluZCBvdXQgbW9yZSBpbiB0aGVcbiAgICAgIDxhIGM4eS1ndWlkZS1ocmVmPVwidXNlcnMtZ3VpZGUvZGV2aWNlLW1hbmFnZW1lbnQvI2NvbmZpZ3VyYXRpb24tcmVwb3NpdG9yeVwiPlxuICAgICAgICBVc2VyIGd1aWRlYEtFRVBfT1JJR0lOQUxgXG4gICAgICA8L2E+XG4gICAgICAuXG4gICAgPC9zbWFsbD5cbiAgPC9wPlxuPC9jOHktdWktZW1wdHktc3RhdGU+XG5cbjwhLS0gbm8gcmVzdWx0cyBlbXB0eSBzdGF0ZSAtLT5cbjxjOHktdWktZW1wdHktc3RhdGVcbiAgKm5nSWY9XCJzaG91bGRTaG93RW1wdHlTdGF0ZSgpICYmIChjb25maWd1cmF0aW9ucyQgfCBhc3luYyk/LmRhdGEubGVuZ3RoID4gMFwiXG4gIFtpY29uXT1cIidzZWFyY2gnXCJcbiAgW3RpdGxlXT1cIidObyByZXN1bHRzIHRvIGRpc3BsYXkuJyB8IHRyYW5zbGF0ZVwiXG4gIFtzdWJ0aXRsZV09XCInUmVmaW5lIHlvdXIgc2VhcmNoIHRlcm1zIG9yIGNoZWNrIHlvdXIgc3BlbGxpbmcuJyB8IHRyYW5zbGF0ZVwiXG4+PC9jOHktdWktZW1wdHktc3RhdGU+XG5cbjxjOHktbGlzdC1ncm91cFxuICBjbGFzcz1cIm0tYi0yNFwiXG4gICpuZ0lmPVwiKGNvbmZpZ3VyYXRpb25zJCB8IGFzeW5jKT8uZGF0YS5sZW5ndGggPiAwXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdkZC1sb3cnOiBkYXRhICYmIGRhdGEubGVuZ3RoID8gZGF0YS5sZW5ndGggPCAxMCA6IChjb25maWd1cmF0aW9ucyQgfCBhc3luYyk/LmRhdGEubGVuZ3RoIDwgMTBcbiAgfVwiXG4+XG4gIDxjOHktbGlcbiAgICBbZW1wdHlBY3Rpb25zXT1cInRydWVcIlxuICAgIGNsYXNzPVwicGFnZS1zdGlja3ktaGVhZGVyIGhpZGRlbi14c1wiXG4gICAgKm5nSWY9XCIhc2hvdWxkU2hvd0VtcHR5U3RhdGUoKVwiXG4gID5cbiAgICA8Yzh5LWxpLWljb24+XG4gICAgICA8aSBjbGFzcz1cInAtbC0yNFwiPjwvaT5cbiAgICA8L2M4eS1saS1pY29uPlxuICAgIDxjOHktbGktYm9keSBjbGFzcz1cImNvbnRlbnQtZmxleC02MFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XG4gICAgICAgIHt7ICdDb25maWd1cmF0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5cbiAgICAgICAge3sgJ0Rlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5cbiAgICAgICAge3sgJ0ZpbGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxuICAgICAgICB7eyAnRGV2aWNlIHR5cGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxuICAgICAgICB7eyAnQ29uZmlndXJhdGlvbiB0eXBlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9jOHktbGktYm9keT5cbiAgPC9jOHktbGk+XG5cbiAgPGM4eS1saSAqYzh5Rm9yPVwibGV0IGNvbmZpZ3VyYXRpb24gb2YgY29uZmlndXJhdGlvbnMkOyBwaXBlOiBmaWx0ZXJQaXBlXCI+XG4gICAgPGM4eS1saS1pY29uIGljb249XCJnZWFyc1wiPjwvYzh5LWxpLWljb24+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtZmxleC02MFwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0bi1jbGVhbiBjb2wtMlwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICB0aXRsZT1cInt7IGNvbmZpZ3VyYXRpb24ubmFtZSB8fCAnLScgfX1cIlxuICAgICAgICAoY2xpY2spPVwiZWRpdChjb25maWd1cmF0aW9uKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICAgIDxjOHktaGlnaGxpZ2h0XG4gICAgICAgICAgICBbdGV4dF09XCJjb25maWd1cmF0aW9uLm5hbWUgfHwgJy0nXCJcbiAgICAgICAgICAgIGVsZW1lbnRDbGFzcz1cInRleHQtaW5mb1wiXG4gICAgICAgICAgICBbcGF0dGVybl09XCJmaWx0ZXJUZXJtXCJcbiAgICAgICAgICA+PC9jOHktaGlnaGxpZ2h0PlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbCB2aXNpYmxlLXhzLWlubGluZSBtLXItNFwiPlxuICAgICAgICAgIHt7ICdEZXNjcmlwdGlvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzbWFsbFxuICAgICAgICAgIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiXG4gICAgICAgICAgKm5nSWY9XCJjb25maWd1cmF0aW9uLmRlc2NyaXB0aW9uOyBlbHNlIGVtcHR5RGVzY3JpcHRpb25cIlxuICAgICAgICAgIHRpdGxlPVwiY29uZmlndXJhdGlvbi5kZXNjcmlwdGlvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8Yzh5LWhpZ2hsaWdodFxuICAgICAgICAgICAgW3RleHRdPVwiY29uZmlndXJhdGlvbi5kZXNjcmlwdGlvbiB8fCAnLSdcIlxuICAgICAgICAgICAgZWxlbWVudENsYXNzPVwidGV4dC1pbmZvXCJcbiAgICAgICAgICAgIFtwYXR0ZXJuXT1cImZpbHRlclRlcm1cIlxuICAgICAgICAgID48L2M4eS1oaWdobGlnaHQ+XG4gICAgICAgIDwvc21hbGw+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGFiZWwtc21hbGwgbS1yLTQgdmlzaWJsZS14cy1pbmxpbmVcIiB0cmFuc2xhdGU+RmlsZTwvc3Bhbj5cbiAgICAgICAgICA8c21hbGxcbiAgICAgICAgICAgICpuZ0lmPVwiaXNCaW5hcnlGaWxlKGNvbmZpZ3VyYXRpb24pOyBlbHNlIG5vRmlsZVwiXG4gICAgICAgICAgICB0aXRsZT1cInt7IGdldEJpbmFyeU5hbWUoY29uZmlndXJhdGlvbikgfCBhc3luYyB9fVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgZ2V0QmluYXJ5TmFtZShjb25maWd1cmF0aW9uKSB8IGFzeW5jIH19XG4gICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI25vRmlsZT5cbiAgICAgICAgICAgIDxzbWFsbCB0aXRsZT1cInt7IGNvbmZpZ3VyYXRpb24udXJsIH19XCI+XG4gICAgICAgICAgICAgIHt7IGNvbmZpZ3VyYXRpb24udXJsIH19XG4gICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgIHRpdGxlPVwie3sgJ0RldmljZSB0eXBlJyB8IHRyYW5zbGF0ZSB9fToge3sgY29uZmlndXJhdGlvbi5kZXZpY2VUeXBlIHx8ICctJyB9fVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGFiZWwtc21hbGwgdmlzaWJsZS14cy1pbmxpbmUgbS1yLTRcIiB0cmFuc2xhdGU+RGV2aWNlIHR5cGU8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb25maWd1cmF0aW9uLmRldmljZVR5cGU7IGVsc2UgZW1wdHlUZXh0XCI+XG4gICAgICAgICAgICA8Yzh5LWhpZ2hsaWdodFxuICAgICAgICAgICAgICBbdGV4dF09XCJjb25maWd1cmF0aW9uLmRldmljZVR5cGUgfHwgJy0nXCJcbiAgICAgICAgICAgICAgZWxlbWVudENsYXNzPVwidGV4dC1pbmZvXCJcbiAgICAgICAgICAgICAgW3BhdHRlcm5dPVwiZmlsdGVyVGVybVwiXG4gICAgICAgICAgICA+PC9jOHktaGlnaGxpZ2h0PlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiIHRpdGxlPVwie3sgY29uZmlndXJhdGlvbi5jb25maWd1cmF0aW9uVHlwZSB9fVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwgbGFiZWwtcHJpbWFyeVwiICpuZ0lmPVwiY29uZmlndXJhdGlvbi5jb25maWd1cmF0aW9uVHlwZTsgZWxzZSBlbXB0eVRleHRcIj5cbiAgICAgICAgICAgIDxjOHktaGlnaGxpZ2h0XG4gICAgICAgICAgICAgIFt0ZXh0XT1cImNvbmZpZ3VyYXRpb24uY29uZmlndXJhdGlvblR5cGVcIlxuICAgICAgICAgICAgICBlbGVtZW50Q2xhc3M9XCJ0ZXh0LWluZm9cIlxuICAgICAgICAgICAgICBbcGF0dGVybl09XCJmaWx0ZXJUZXJtXCJcbiAgICAgICAgICAgID48L2M4eS1oaWdobGlnaHQ+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxjOHktbGktYWN0aW9uXG4gICAgICAoY2xpY2spPVwiZWRpdChjb25maWd1cmF0aW9uKVwiXG4gICAgICBpY29uPVwicGVuY2lsXCJcbiAgICAgIGxhYmVsPVwie3sgJ0VkaXQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICA+PC9jOHktbGktYWN0aW9uPlxuICAgIDxjOHktbGktYWN0aW9uXG4gICAgICAoY2xpY2spPVwiZGVsZXRlKGNvbmZpZ3VyYXRpb24pXCJcbiAgICAgIGljb249XCJkZWxldGVcIlxuICAgICAgbGFiZWw9XCJ7eyAnRGVsZXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgPjwvYzh5LWxpLWFjdGlvbj5cbiAgICA8Yzh5LWxpLWFjdGlvblxuICAgICAgKm5nSWY9XCJpc0JpbmFyeUZpbGUoY29uZmlndXJhdGlvbilcIlxuICAgICAgKGNsaWNrKT1cImRvd25sb2FkKGNvbmZpZ3VyYXRpb24pXCJcbiAgICAgIGljb249XCJkb3dubG9hZFwiXG4gICAgICBsYWJlbD1cInt7ICdEb3dubG9hZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgID48L2M4eS1saS1hY3Rpb24+XG4gICAgPG5nLXRlbXBsYXRlICNlbXB0eVRleHQ+XG4gICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+XG4gICAgICAgIDxlbT57eyAnVW5kZWZpbmVkJyB8IHRyYW5zbGF0ZSB9fTwvZW0+XG4gICAgICA8L3NtYWxsPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNlbXB0eURlc2NyaXB0aW9uPlxuICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZFwiPlxuICAgICAgICA8ZW0+e3sgJ05vIGRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB9fTwvZW0+XG4gICAgICA8L3NtYWxsPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvYzh5LWxpPlxuPC9jOHktbGlzdC1ncm91cD5cbiJdfQ==
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3JlcG9zaXRvcnkvY29uZmlndXJhdGlvbi9saXN0L2NvbmZpZ3VyYXRpb24tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9yZXBvc2l0b3J5L2NvbmZpZ3VyYXRpb24vbGlzdC9jb25maWd1cmF0aW9uLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWdCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQStCLHNCQUFzQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BHLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLFlBQVksRUFDWixNQUFNLEVBQ04sT0FBTyxFQUNQLE9BQU8sRUFDUixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7O0FBTWhGLE1BQU0sT0FBTywwQkFBMEI7SUFTckMsWUFDVSxLQUFtQixFQUNuQixpQkFBb0MsRUFDcEMs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QUFDO0lBQ0osQ0FBQztJQUVELG9CQUFvQjtRQUNsQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVPLG1CQUFtQixDQUFDLElBQVksRUFBRSxVQUFrQjtRQUMxRCxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0MsT0FBTyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDOzt1SEF6SlUsMEJBQTBCOzJHQUExQiwwQkFBMEIsc0dBQzFCLG9CQUFvQixnREN4QmpDLCsyT0F1T0E7QUQvSEU7SUFEQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDOzs7OytEQUd2QjsyRkFuRlUsMEJBQTBCO2tCQUp0QyxTQUFTOytCQUNFLHdCQUF3Qjs4UkFJa0IsTUFBTTtzQkFBekQsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBZ0ZsRCxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFBpcGUsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QsIElSZXN1bHRMaXN0LCBJbnZlbnRvcnlCaW5hcnlTZXJ2aWNlLCBJbnZlbnRvcnlTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQWxlcnRTZXJ2aWNlLFxuICBGaWx0ZXJJbnB1dENvbXBvbmVudCxcbiAgTW9kYWxTZXJ2aWNlLFxuICBTdGF0dXMsXG4gIGdldHRleHQsXG4gIG1lbW9pemVcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBSZXBvc2l0b3J5U2VydmljZSwgUmVwb3NpdG9yeVR5cGUgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL3JlcG9zaXRvcnkvc2hhcmVkJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IHNhdmVBcyB9IGZyb20gJ2ZpbGUtc2F2ZXInO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBwaXBlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uRGV0YWlsQ29tcG9uZW50IH0gZnJvbSAnLi9jb25maWd1cmF0aW9uLWRldGFpbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktY29uZmlndXJhdGlvbi1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpZ3VyYXRpb24tbGlzdC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdGlvbkxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAVmlld0NoaWxkKEZpbHRlcklucHV0Q29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSkgZmlsdGVyOiBGaWx0ZXJJbnB1dENvbXBvbmVudDtcbiAgY29uZmlndXJhdGlvbnMkOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj47XG4gIGZpbHRlclBpcGU6IFBpcGU7XG4gIGZpbHRlclRlcm0gPSAnJztcbiAgcmVsb2FkaW5nID0gZmFsc2U7XG4gIGRhdGE7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVMRVRFRF9TVUNDRVNTX01TRyA9IGdldHRleHQoJ0NvbmZpZ3VyYXRpb24gZGVsZXRlZC4nKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFsZXJ0OiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZXBvc2l0b3J5U2VydmljZTogUmVwb3NpdG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBic01vZGFsU2VydmljZTogQnNNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnlCaW5hcnlTZXJ2aWNlOiBJbnZlbnRvcnlCaW5hcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW52ZW50b3J5U2VydmljZTogSW52ZW50b3J5U2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5sb2FkQ29uZmlndXJhdGlvbnMoKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWRDb25maWd1cmF0aW9ucygpIHtcbiAgICB0aGlzLnJlbG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5jb25maWd1cmF0aW9ucyQgPSBvZihcbiAgICAgIGF3YWl0IHRoaXMucmVwb3NpdG9yeVNlcnZpY2UubGlzdFJlcG9zaXRvcnlFbnRyaWVzKFJlcG9zaXRvcnlUeXBlLkNPTkZJR1VSQVRJT04pXG4gICAgKTtcbiAgICB0aGlzLnJlbG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMucmVzZXQoKTtcbiAgfVxuXG4gIGFzeW5jIGFkZCgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgKFxuICAgICAgICB0aGlzLmJzTW9kYWxTZXJ2aWNlLnNob3coQ29uZmlndXJhdGlvbkRldGFpbENvbXBvbmVudCwge1xuICAgICAgICAgIGNsYXNzOiAnbW9kYWwtc20nLFxuICAgICAgICAgIGFyaWFEZXNjcmliZWRieTogJ2NvbmZpZ3VyYXRpb25Nb2RhbERlc2NyaXB0aW9uJyxcbiAgICAgICAgICBhcmlhTGFiZWxsZWRCeTogJ2NvbmZpZ3VyYXRpb25Nb2RhbFRpdGxlJyxcbiAgICAgICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlXG4gICAgICAgIH0pLmNvbnRlbnQgYXMgQ29uZmlndXJhdGlvbkRldGFpbENvbXBvbmVudFxuICAgICAgKS5yZXN1bHQ7XG4gICAgICBhd2FpdCB0aGlzLmxvYWRDb25maWd1cmF0aW9ucygpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAvLyBpbnRlbmRlZCBlbXB0eVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGVkaXQoY29uZmlndXJhdGlvbjogSU1hbmFnZWRPYmplY3QpIHtcbiAgICBjb25zdCBmaWxlQmluYXJ5OiBGaWxlID0gYXdhaXQgdGhpcy5yZXBvc2l0b3J5U2VydmljZS5nZXRCaW5hcnlGaWxlKGNvbmZpZ3VyYXRpb24udXJsLCB7XG4gICAgICBhbGxvd0V4dGVybmFsOiBmYWxzZVxuICAgIH0pO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBtb2RhbCA9IHRoaXMuYnNNb2RhbFNlcnZpY2Uuc2hvdyhDb25maWd1cmF0aW9uRGV0YWlsQ29tcG9uZW50LCB7XG4gICAgICAgIGNsYXNzOiAnbW9kYWwtc20nLFxuICAgICAgICBhcmlhRGVzY3JpYmVkYnk6ICdjb25maWd1cmF0aW9uTW9kYWxEZXNjcmlwdGlvbicsXG4gICAgICAgIGFyaWFMYWJlbGxlZEJ5OiAnY29uZmlndXJhdGlvbk1vZGFsVGl0bGUnLFxuICAgICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlLFxuXG4gICAgICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgICAgIHZlcnNpb246IGNvbmZpZ3VyYXRpb24ubmFtZSxcbiAgICAgICAgICBkZXZpY2VUeXBlOiBjb25maWd1cmF0aW9uLmRldmljZVR5cGUsXG4gICAgICAgICAgZGVzY3JpcHRpb246IGNvbmZpZ3VyYXRpb24uZGVzY3JpcHRpb24sXG4gICAgICAgICAgYmluYXJ5OiB7IGZpbGU6IGZpbGVCaW5hcnksIHVybDogY29uZmlndXJhdGlvbi51cmwgfVxuICAgICAgICB9XG4gICAgICB9KS5jb250ZW50IGFzIENvbmZpZ3VyYXRpb25EZXRhaWxDb21wb25lbnQ7XG4gICAgICBtb2RhbC5tbyA9IGNvbmZpZ3VyYXRpb247XG4gICAgICBhd2FpdCBtb2RhbC5yZXN1bHQ7XG4gICAgICBhd2FpdCB0aGlzLmxvYWRDb25maWd1cmF0aW9ucygpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAvLyBpbnRlbmRlZCBlbXB0eVxuICAgIH1cbiAgfVxuXG4gIGlzQmluYXJ5RmlsZShjb25maWd1cmF0aW9uOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiBjb25maWd1cmF0aW9uLnVybFxuICAgICAgPyAhIXRoaXMuaW52ZW50b3J5QmluYXJ5U2VydmljZS5nZXRJZEZyb21VcmwoY29uZmlndXJhdGlvbi51cmwpXG4gICAgICA6IGZhbHNlO1xuICB9XG5cbiAgQG1lbW9pemUocHJvcGVydHkoJ2lkJykpXG4gIGdldEJpbmFyeU5hbWUoY29uZmlndXJhdGlvbjogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvc2l0b3J5U2VydmljZS5nZXRCaW5hcnlOYW1lJChjb25maWd1cmF0aW9uLnVybCk7XG4gIH1cblxuICBhc3luYyBkb3dubG9hZChjb25maWd1cmF0aW9uOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIGNvbnN0IGZpbGVCaW5hcnk6IEZpbGUgPSBhd2FpdCB0aGlzLnJlcG9zaXRvcnlTZXJ2aWNlLmdldEJpbmFyeUZpbGUoY29uZmlndXJhdGlvbi51cmwsIHtcbiAgICAgIGFsbG93RXh0ZXJuYWw6IGZhbHNlXG4gICAgfSk7XG4gICAgc2F2ZUFzKGZpbGVCaW5hcnkpO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlKGNvbmZpZ3VyYXRpb246IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRpdGxlID0gZ2V0dGV4dCgnRGVsZXRlIGNvbmZpZ3VyYXRpb24gc25hcHNob3QnKTtcbiAgICAgIGNvbnN0IGNvbmZpcm1hdGlvblRleHQgPSBnZXR0ZXh0KFxuICAgICAgICAnWW91IGFyZSBhYm91dCB0byBkZWxldGUgdGhlIGNvbmZpZ3VyYXRpb24gc25hcHNob3Qge3sgbmFtZSB9fS4nXG4gICAgICApO1xuICAgICAgY29uc3QgaGludCA9IGdldHRleHQoJ1RoaXMgb3BlcmF0aW9uIGlzIGlycmV2ZXJzaWJsZS4nKTtcbiAgICAgIGNvbnN0IHByb2NlZWQgPSBnZXR0ZXh0KCdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycpO1xuICAgICAgY29uc3QgYm9keSA9IFtcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoY29uZmlybWF0aW9uVGV4dCwge1xuICAgICAgICAgIG5hbWU6IGNvbmZpZ3VyYXRpb24ubmFtZVxuICAgICAgICB9KSxcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoaGludCksXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHByb2NlZWQpXG4gICAgICBdLmpvaW4oJyAnKTtcbiAgICAgIGNvbnN0IGxhYmVscyA9IHtcbiAgICAgICAgb2s6IGdldHRleHQoJ0RlbGV0ZScpXG4gICAgICB9O1xuICAgICAgYXdhaXQgdGhpcy5tb2RhbFNlcnZpY2UuY29uZmlybSh0aXRsZSwgYm9keSwgU3RhdHVzLkRBTkdFUiwgbGFiZWxzKTtcbiAgICAgIGF3YWl0IHRoaXMucmVwb3NpdG9yeVNlcnZpY2UuZGVsZXRlKGNvbmZpZ3VyYXRpb24pO1xuICAgICAgdGhpcy5hbGVydC5zdWNjZXNzKHRoaXMuREVMRVRFRF9TVUNDRVNTX01TRyk7XG4gICAgICBhd2FpdCB0aGlzLmxvYWRDb25maWd1cmF0aW9ucygpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICBpZiAoZXgpIHtcbiAgICAgICAgdGhpcy5hbGVydC5hZGRTZXJ2ZXJGYWlsdXJlKGV4KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRQaXBlKGZpbHRlclRlcm06IHN0cmluZykge1xuICAgIHRoaXMuZmlsdGVyVGVybSA9IGZpbHRlclRlcm07XG4gICAgdGhpcy5maWx0ZXJQaXBlID0gcGlwZShcbiAgICAgIG1hcCgoZGF0YTogW10pID0+IHtcbiAgICAgICAgdGhpcy5kYXRhID1cbiAgICAgICAgICBmaWx0ZXJUZXJtLnRyaW0oKS5sZW5ndGggPT09IDBcbiAgICAgICAgICAgID8gZGF0YVxuICAgICAgICAgICAgOiBkYXRhLmZpbHRlcihcbiAgICAgICAgICAgICAgICAobW86IElNYW5hZ2VkT2JqZWN0KSA9PlxuICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJDb250YWluU3RyaW5nKG1vLm5hbWUsIGZpbHRlclRlcm0pIHx8XG4gICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckNvbnRhaW5TdHJpbmcobW8uY29uZmlndXJhdGlvblR5cGUsIGZpbHRlclRlcm0pIHx8XG4gICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckNvbnRhaW5TdHJpbmcobW8uZGV2aWNlVHlwZSwgZmlsdGVyVGVybSkgfHxcbiAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyQ29udGFpblN0cmluZyhtby5kZXNjcmlwdGlvbiwgZmlsdGVyVGVybSlcbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5kYXRhO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc2hvdWxkU2hvd0VtcHR5U3RhdGUoKSB7XG4gICAgcmV0dXJuICEodGhpcy5kYXRhICYmIHRoaXMuZGF0YS5sZW5ndGggPiAwKTtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMuZmlsdGVyLmZpbHRlclRlcm0gPSAnJztcbiAgICB0aGlzLnNldFBpcGUoJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJDb250YWluU3RyaW5nKG5hbWU6IHN0cmluZywgZmlsdGVyVGVybTogc3RyaW5nKSB7XG4gICAgY29uc3QgdGVybSA9IGZpbHRlclRlcm0udG9Mb3dlckNhc2UoKS50cmltKCk7XG4gICAgcmV0dXJuIG5hbWUgJiYgbmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YodGVybSkgPiAtMTtcbiAgfVxufVxuIiwiPGM4eS10aXRsZT5cbiAgPHNwYW4gY2xhc3M9XCJtLXItNFwiIHRyYW5zbGF0ZT5Db25maWd1cmF0aW9uIHJlcG9zaXRvcnk8L3NwYW4+XG4gIDxzbWFsbCAqbmdJZj1cIihjb25maWd1cmF0aW9ucyQgfCBhc3luYyk/LnBhZ2luZy50b3RhbFBhZ2VzID09PSAxICYmICFmaWx0ZXJUZXJtXCI+XG4gICAge3sgKGNvbmZpZ3VyYXRpb25zJCB8IGFzeW5jKS5kYXRhLmxlbmd0aCB9fVxuICAgIDxzcGFuIHRyYW5zbGF0ZT5zbmFwc2hvdHM8L3NwYW4+XG4gIDwvc21hbGw+XG4gIDxzbWFsbFxuICAgICpuZ0lmPVwiKGNvbmZpZ3VyYXRpb25zJCB8IGFzeW5jKT8ucGFnaW5nLnRvdGFsUGFnZXMgPiAxICYmICFmaWx0ZXJUZXJtXCJcbiAgICBbdG9vbHRpcF09XCInTW9yZSBkYXRhIGF2YWlsYWJsZS4gU2Nyb2xsIHRvIHRoZSBib3R0b20gb2YgdGhlIGxpc3QgdG8gbG9hZCBpdC4nIHwgdHJhbnNsYXRlXCJcbiAgICBjb250YWluZXI9XCJib2R5XCJcbiAgPlxuICAgIHt7IChjb25maWd1cmF0aW9ucyQgfCBhc3luYykucGFnaW5nLnBhZ2VTaXplIH19K1xuICAgIDxzcGFuIHRyYW5zbGF0ZT5zbmFwc2hvdHM8L3NwYW4+XG4gIDwvc21hbGw+XG48L2M4eS10aXRsZT5cblxuPGM4eS1icmVhZGNydW1iPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIGxhYmVsPVwie3sgJ01hbmFnZW1lbnQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICBpY29uPVwiYzh5LW1hbmFnZW1lbnRcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIGxhYmVsPVwie3sgJ0NvbmZpZ3VyYXRpb24gcmVwb3NpdG9yeScgfCB0cmFuc2xhdGUgfX1cIlxuICAgIGljb249XCJnZWFyc1wiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG48L2M4eS1icmVhZGNydW1iPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbSBpdGVtQ2xhc3M9XCJuYXZiYXItZm9ybVwiPlxuICA8Yzh5LWZpbHRlciBbaWNvbl09XCInc2VhcmNoJ1wiIChvblNlYXJjaCk9XCJzZXRQaXBlKCRldmVudClcIj48L2M4eS1maWx0ZXI+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIHRpdGxlPVwie3sgJ0FkZCBjb25maWd1cmF0aW9uIHNuYXBzaG90JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgKGNsaWNrKT1cImFkZCgpXCJcbiAgPlxuICAgIDxpIGM4eUljb249XCJwbHVzLWNpcmNsZVwiPjwvaT5cbiAgICB7eyAnQWRkIGNvbmZpZ3VyYXRpb24gc25hcHNob3QnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbSBbcGxhY2VtZW50XT1cIidyaWdodCdcIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICB0aXRsZT1cInt7ICdSZWxvYWQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAoY2xpY2spPVwibG9hZENvbmZpZ3VyYXRpb25zKClcIlxuICA+XG4gICAgPGkgW25nQ2xhc3NdPVwieyAnaWNvbi1zcGluJzogcmVsb2FkaW5nIH1cIiBjOHlJY29uPVwicmVmcmVzaFwiPjwvaT5cbiAgICB7eyAnUmVsb2FkJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1oZWxwIHNyYz1cIi91c2Vycy1ndWlkZS9kZXZpY2UtbWFuYWdlbWVudC8jY29uZmlndXJhdGlvbi1yZXBvc2l0b3J5XCI+PC9jOHktaGVscD5cblxuPCEtLSBlbXB0eSBzdGF0ZSAtLT5cbjxjOHktdWktZW1wdHktc3RhdGVcbiAgKm5nSWY9XCIhZmlsdGVyVGVybSAmJiAoY29uZmlndXJhdGlvbnMkIHwgYXN5bmMpPy5kYXRhLmxlbmd0aCA9PT0gMFwiXG4gIFtpY29uXT1cIidnZWFycydcIlxuICBbdGl0bGVdPVwiJ1RoZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIHNuYXBzaG90cyBkZWZpbmVkLicgfCB0cmFuc2xhdGVcIlxuICBbc3VidGl0bGVdPVwiJ0FkZCBhIGNvbmZpZ3VyYXRpb24gc25hcHNob3QgZmlyc3QuJyB8IHRyYW5zbGF0ZVwiXG4+XG4gIDxkaXY+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICB0aXRsZT1cInt7ICdBZGQgY29uZmlndXJhdGlvbiBzbmFwc2hvdCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgKGNsaWNrKT1cImFkZCgpXCJcbiAgICA+XG4gICAgICB7eyAnQWRkIGNvbmZpZ3VyYXRpb24gc25hcHNob3QnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8cCBjOHktZ3VpZGUtZG9jcz5cbiAgICA8c21hbGwgdHJhbnNsYXRlIG5nTm9uQmluZGFibGU+XG4gICAgICBGaW5kIG91dCBtb3JlIGluIHRoZVxuICAgICAgPGEgYzh5LWd1aWRlLWhyZWY9XCJ1c2Vycy1ndWlkZS9kZXZpY2UtbWFuYWdlbWVudC8jY29uZmlndXJhdGlvbi1yZXBvc2l0b3J5XCI+XG4gICAgICAgIFVzZXIgZ3VpZGVgS0VFUF9PUklHSU5BTGBcbiAgICAgIDwvYT5cbiAgICAgIC5cbiAgICA8L3NtYWxsPlxuICA8L3A+XG48L2M4eS11aS1lbXB0eS1zdGF0ZT5cblxuPCEtLSBubyByZXN1bHRzIGVtcHR5IHN0YXRlIC0tPlxuPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAqbmdJZj1cInNob3VsZFNob3dFbXB0eVN0YXRlKCkgJiYgKGNvbmZpZ3VyYXRpb25zJCB8IGFzeW5jKT8uZGF0YS5sZW5ndGggPiAwXCJcbiAgW2ljb25dPVwiJ3NlYXJjaCdcIlxuICBbdGl0bGVdPVwiJ05vIHJlc3VsdHMgdG8gZGlzcGxheS4nIHwgdHJhbnNsYXRlXCJcbiAgW3N1YnRpdGxlXT1cIidSZWZpbmUgeW91ciBzZWFyY2ggdGVybXMgb3IgY2hlY2sgeW91ciBzcGVsbGluZy4nIHwgdHJhbnNsYXRlXCJcbj48L2M4eS11aS1lbXB0eS1zdGF0ZT5cblxuPGM4eS1saXN0LWdyb3VwXG4gIGNsYXNzPVwibS1iLTI0XCJcbiAgKm5nSWY9XCIoY29uZmlndXJhdGlvbnMkIHwgYXN5bmMpPy5kYXRhLmxlbmd0aCA+IDBcIlxuICBbbmdDbGFzc109XCJ7XG4gICAgJ2RkLWxvdyc6IGRhdGEgJiYgZGF0YS5sZW5ndGggPyBkYXRhLmxlbmd0aCA8IDEwIDogKGNvbmZpZ3VyYXRpb25zJCB8IGFzeW5jKT8uZGF0YS5sZW5ndGggPCAxMFxuICB9XCJcbj5cbiAgPGM4eS1saVxuICAgIFtlbXB0eUFjdGlvbnNdPVwidHJ1ZVwiXG4gICAgY2xhc3M9XCJwYWdlLXN0aWNreS1oZWFkZXIgaGlkZGVuLXhzXCJcbiAgICAqbmdJZj1cIiFzaG91bGRTaG93RW1wdHlTdGF0ZSgpXCJcbiAgPlxuICAgIDxjOHktbGktaWNvbj5cbiAgICAgIDxpIGNsYXNzPVwicC1sLTI0XCI+PC9pPlxuICAgIDwvYzh5LWxpLWljb24+XG4gICAgPGM4eS1saS1ib2R5IGNsYXNzPVwiY29udGVudC1mbGV4LTYwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cbiAgICAgICAge3sgJ0NvbmZpZ3VyYXRpb24nIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxuICAgICAgICB7eyAnRGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxuICAgICAgICB7eyAnRmlsZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XG4gICAgICAgIHt7ICdEZXZpY2UgdHlwZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XG4gICAgICAgIHt7ICdDb25maWd1cmF0aW9uIHR5cGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2M4eS1saS1ib2R5PlxuICA8L2M4eS1saT5cblxuICA8Yzh5LWxpICpjOHlGb3I9XCJsZXQgY29uZmlndXJhdGlvbiBvZiBjb25maWd1cmF0aW9ucyQ7IHBpcGU6IGZpbHRlclBpcGVcIj5cbiAgICA8Yzh5LWxpLWljb24gaWNvbj1cImdlYXJzXCI+PC9jOHktbGktaWNvbj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1mbGV4LTYwXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuLWNsZWFuIGNvbC0yXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHRpdGxlPVwie3sgY29uZmlndXJhdGlvbi5uYW1lIHx8ICctJyB9fVwiXG4gICAgICAgIChjbGljayk9XCJlZGl0KGNvbmZpZ3VyYXRpb24pXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+XG4gICAgICAgICAgPGM4eS1oaWdobGlnaHRcbiAgICAgICAgICAgIFt0ZXh0XT1cImNvbmZpZ3VyYXRpb24ubmFtZSB8fCAnLSdcIlxuICAgICAgICAgICAgZWxlbWVudENsYXNzPVwidGV4dC1pbmZvXCJcbiAgICAgICAgICAgIFtwYXR0ZXJuXT1cImZpbHRlclRlcm1cIlxuICAgICAgICAgID48L2M4eS1oaWdobGlnaHQ+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxhYmVsLXNtYWxsIHZpc2libGUteHMtaW5saW5lIG0tci00XCI+XG4gICAgICAgICAge3sgJ0Rlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNtYWxsXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICAqbmdJZj1cImNvbmZpZ3VyYXRpb24uZGVzY3JpcHRpb247IGVsc2UgZW1wdHlEZXNjcmlwdGlvblwiXG4gICAgICAgICAgdGl0bGU9XCJjb25maWd1cmF0aW9uLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjOHktaGlnaGxpZ2h0XG4gICAgICAgICAgICBbdGV4dF09XCJjb25maWd1cmF0aW9uLmRlc2NyaXB0aW9uIHx8ICctJ1wiXG4gICAgICAgICAgICBlbGVtZW50Q2xhc3M9XCJ0ZXh0LWluZm9cIlxuICAgICAgICAgICAgW3BhdHRlcm5dPVwiZmlsdGVyVGVybVwiXG4gICAgICAgICAgPjwvYzh5LWhpZ2hsaWdodD5cbiAgICAgICAgPC9zbWFsbD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbCBtLXItNCB2aXNpYmxlLXhzLWlubGluZVwiIHRyYW5zbGF0ZT5GaWxlPC9zcGFuPlxuICAgICAgICAgIDxzbWFsbFxuICAgICAgICAgICAgKm5nSWY9XCJpc0JpbmFyeUZpbGUoY29uZmlndXJhdGlvbik7IGVsc2Ugbm9GaWxlXCJcbiAgICAgICAgICAgIHRpdGxlPVwie3sgZ2V0QmluYXJ5TmFtZShjb25maWd1cmF0aW9uKSB8IGFzeW5jIH19XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBnZXRCaW5hcnlOYW1lKGNvbmZpZ3VyYXRpb24pIHwgYXN5bmMgfX1cbiAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9GaWxlPlxuICAgICAgICAgICAgPHNtYWxsIHRpdGxlPVwie3sgY29uZmlndXJhdGlvbi51cmwgfX1cIj5cbiAgICAgICAgICAgICAge3sgY29uZmlndXJhdGlvbi51cmwgfX1cbiAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyAnRGV2aWNlIHR5cGUnIHwgdHJhbnNsYXRlIH19OiB7eyBjb25maWd1cmF0aW9uLmRldmljZVR5cGUgfHwgJy0nIH19XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbCB2aXNpYmxlLXhzLWlubGluZSBtLXItNFwiIHRyYW5zbGF0ZT5EZXZpY2UgdHlwZTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbmZpZ3VyYXRpb24uZGV2aWNlVHlwZTsgZWxzZSBlbXB0eVRleHRcIj5cbiAgICAgICAgICAgIDxjOHktaGlnaGxpZ2h0XG4gICAgICAgICAgICAgIFt0ZXh0XT1cImNvbmZpZ3VyYXRpb24uZGV2aWNlVHlwZSB8fCAnLSdcIlxuICAgICAgICAgICAgICBlbGVtZW50Q2xhc3M9XCJ0ZXh0LWluZm9cIlxuICAgICAgICAgICAgICBbcGF0dGVybl09XCJmaWx0ZXJUZXJtXCJcbiAgICAgICAgICAgID48L2M4eS1oaWdobGlnaHQ+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCIgdGl0bGU9XCJ7eyBjb25maWd1cmF0aW9uLmNvbmZpZ3VyYXRpb25UeXBlIH19XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbCBsYWJlbC1wcmltYXJ5XCIgKm5nSWY9XCJjb25maWd1cmF0aW9uLmNvbmZpZ3VyYXRpb25UeXBlOyBlbHNlIGVtcHR5VGV4dFwiPlxuICAgICAgICAgICAgPGM4eS1oaWdobGlnaHRcbiAgICAgICAgICAgICAgW3RleHRdPVwiY29uZmlndXJhdGlvbi5jb25maWd1cmF0aW9uVHlwZVwiXG4gICAgICAgICAgICAgIGVsZW1lbnRDbGFzcz1cInRleHQtaW5mb1wiXG4gICAgICAgICAgICAgIFtwYXR0ZXJuXT1cImZpbHRlclRlcm1cIlxuICAgICAgICAgICAgPjwvYzh5LWhpZ2hsaWdodD5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGM4eS1saS1hY3Rpb25cbiAgICAgIChjbGljayk9XCJlZGl0KGNvbmZpZ3VyYXRpb24pXCJcbiAgICAgIGljb249XCJwZW5jaWxcIlxuICAgICAgbGFiZWw9XCJ7eyAnRWRpdCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgID48L2M4eS1saS1hY3Rpb24+XG4gICAgPGM4eS1saS1hY3Rpb25cbiAgICAgIChjbGljayk9XCJkZWxldGUoY29uZmlndXJhdGlvbilcIlxuICAgICAgaWNvbj1cImRlbGV0ZVwiXG4gICAgICBsYWJlbD1cInt7ICdEZWxldGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICA+PC9jOHktbGktYWN0aW9uPlxuICAgIDxjOHktbGktYWN0aW9uXG4gICAgICAqbmdJZj1cImlzQmluYXJ5RmlsZShjb25maWd1cmF0aW9uKVwiXG4gICAgICAoY2xpY2spPVwiZG93bmxvYWQoY29uZmlndXJhdGlvbilcIlxuICAgICAgaWNvbj1cImRvd25sb2FkXCJcbiAgICAgIGxhYmVsPVwie3sgJ0Rvd25sb2FkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgPjwvYzh5LWxpLWFjdGlvbj5cbiAgICA8bmctdGVtcGxhdGUgI2VtcHR5VGV4dD5cbiAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtbXV0ZWRcIj5cbiAgICAgICAgPGVtPnt7ICdVbmRlZmluZWQnIHwgdHJhbnNsYXRlIH19PC9lbT5cbiAgICAgIDwvc21hbGw+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2VtcHR5RGVzY3JpcHRpb24+XG4gICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+XG4gICAgICAgIDxlbT57eyAnTm8gZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlIH19PC9lbT5cbiAgICAgIDwvc21hbGw+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9jOHktbGk+XG48L2M4eS1saXN0LWdyb3VwPlxuIl19
|