@valtimo/dossier-management 12.6.1 → 12.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/dossier-management-detail/dossier-management-detail.component.mjs +2 -2
- package/esm2022/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.mjs +1 -1
- package/esm2022/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.mjs +1 -1
- package/esm2022/lib/components/dossier-management-widget-configurators/collection/dossier-management-widget-collection.component.mjs +22 -10
- package/esm2022/lib/components/dossier-management-widget-configurators/custom/dossier-management-widget-custom.component.mjs +17 -12
- package/esm2022/lib/components/dossier-management-widget-configurators/fields/column/dossier-management-widget-fields-column.component.mjs +18 -5
- package/esm2022/lib/components/dossier-management-widget-configurators/fields/dossier-management-widget-fields.component.mjs +15 -10
- package/esm2022/lib/components/dossier-management-widget-configurators/formio/dossier-management-widget-formio.component.mjs +14 -9
- package/esm2022/lib/components/dossier-management-widget-configurators/index.mjs +4 -3
- package/esm2022/lib/components/dossier-management-widget-configurators/process-selector/dossier-management-widget-process-selector.component.mjs +100 -0
- package/esm2022/lib/components/dossier-management-widget-configurators/table/dossier-management-widget-table.component.mjs +23 -11
- package/esm2022/lib/components/dossier-management-widget-tab/editor/dossier-management-widgets-editor.component.mjs +12 -1
- package/esm2022/lib/components/dossier-management-widget-wizard/dossier-management-widget-wizard.component.mjs +2 -2
- package/esm2022/lib/services/widget-wizard.service.mjs +5 -2
- package/fesm2022/valtimo-dossier-management.mjs +512 -371
- package/fesm2022/valtimo-dossier-management.mjs.map +1 -1
- package/lib/components/dossier-management-detail/dossier-management-detail.component.d.ts.map +1 -1
- package/lib/components/dossier-management-widget-configurators/collection/dossier-management-widget-collection.component.d.ts +10 -3
- package/lib/components/dossier-management-widget-configurators/collection/dossier-management-widget-collection.component.d.ts.map +1 -1
- package/lib/components/dossier-management-widget-configurators/custom/dossier-management-widget-custom.component.d.ts +8 -5
- package/lib/components/dossier-management-widget-configurators/custom/dossier-management-widget-custom.component.d.ts.map +1 -1
- package/lib/components/dossier-management-widget-configurators/fields/column/dossier-management-widget-fields-column.component.d.ts +6 -2
- package/lib/components/dossier-management-widget-configurators/fields/column/dossier-management-widget-fields-column.component.d.ts.map +1 -1
- package/lib/components/dossier-management-widget-configurators/fields/dossier-management-widget-fields.component.d.ts +6 -2
- package/lib/components/dossier-management-widget-configurators/fields/dossier-management-widget-fields.component.d.ts.map +1 -1
- package/lib/components/dossier-management-widget-configurators/formio/dossier-management-widget-formio.component.d.ts +4 -1
- package/lib/components/dossier-management-widget-configurators/formio/dossier-management-widget-formio.component.d.ts.map +1 -1
- package/lib/components/dossier-management-widget-configurators/index.d.ts +3 -2
- package/lib/components/dossier-management-widget-configurators/index.d.ts.map +1 -1
- package/lib/components/dossier-management-widget-configurators/process-selector/dossier-management-widget-process-selector.component.d.ts +29 -0
- package/lib/components/dossier-management-widget-configurators/process-selector/dossier-management-widget-process-selector.component.d.ts.map +1 -0
- package/lib/components/dossier-management-widget-configurators/table/dossier-management-widget-table.component.d.ts +10 -3
- package/lib/components/dossier-management-widget-configurators/table/dossier-management-widget-table.component.d.ts.map +1 -1
- package/lib/components/dossier-management-widget-tab/editor/dossier-management-widgets-editor.component.d.ts +1 -0
- package/lib/components/dossier-management-widget-tab/editor/dossier-management-widgets-editor.component.d.ts.map +1 -1
- package/lib/services/widget-wizard.service.d.ts +2 -1
- package/lib/services/widget-wizard.service.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -17,25 +17,28 @@ import { CommonModule } from '@angular/common';
|
|
|
17
17
|
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Output, signal, ViewEncapsulation, } from '@angular/core';
|
|
18
18
|
import { ReactiveFormsModule, Validators, } from '@angular/forms';
|
|
19
19
|
import { TranslateModule } from '@ngx-translate/core';
|
|
20
|
-
import { CARBON_THEME, CurrentCarbonTheme, InputLabelModule, } from '@valtimo/components';
|
|
20
|
+
import { CARBON_THEME, CurrentCarbonTheme, InputLabelModule, ValuePathSelectorComponent, ValuePathSelectorPrefix, ValuePathType, } from '@valtimo/components';
|
|
21
21
|
import { CaseWidgetDisplayTypeKey, } from '@valtimo/dossier';
|
|
22
22
|
import { ButtonModule, DropdownModule, IconModule, InputModule, } from 'carbon-components-angular';
|
|
23
|
-
import { debounceTime, map, Subscription } from 'rxjs';
|
|
23
|
+
import { BehaviorSubject, debounceTime, map, Subscription } from 'rxjs';
|
|
24
24
|
import { DossierManagementWidgetFieldsColumnComponent } from '../fields/column/dossier-management-widget-fields-column.component';
|
|
25
|
+
import { DossierManagementWidgetProcessSelectorComponent } from '../process-selector/dossier-management-widget-process-selector.component';
|
|
25
26
|
import * as i0 from "@angular/core";
|
|
26
27
|
import * as i1 from "@valtimo/components";
|
|
27
28
|
import * as i2 from "@angular/forms";
|
|
28
29
|
import * as i3 from "@ngx-translate/core";
|
|
29
30
|
import * as i4 from "../../../services";
|
|
30
|
-
import * as i5 from "@angular/
|
|
31
|
-
import * as i6 from "
|
|
31
|
+
import * as i5 from "@angular/router";
|
|
32
|
+
import * as i6 from "@angular/common";
|
|
33
|
+
import * as i7 from "carbon-components-angular";
|
|
32
34
|
export class DossierManagementWidgetCollectionComponent {
|
|
33
|
-
constructor(cdsThemeService, fb, translateService, widgetWizardService, widgetFieldsService) {
|
|
35
|
+
constructor(cdsThemeService, fb, translateService, widgetWizardService, widgetFieldsService, route) {
|
|
34
36
|
this.cdsThemeService = cdsThemeService;
|
|
35
37
|
this.fb = fb;
|
|
36
38
|
this.translateService = translateService;
|
|
37
39
|
this.widgetWizardService = widgetWizardService;
|
|
38
40
|
this.widgetFieldsService = widgetFieldsService;
|
|
41
|
+
this.route = route;
|
|
39
42
|
this.class = 'valtimo-dossier-management-widget-collection';
|
|
40
43
|
this.changeValidEvent = new EventEmitter();
|
|
41
44
|
this.widgetForm = this.fb.group({
|
|
@@ -53,10 +56,14 @@ export class DossierManagementWidgetCollectionComponent {
|
|
|
53
56
|
}, Validators.required),
|
|
54
57
|
});
|
|
55
58
|
this.theme$ = this.cdsThemeService.currentTheme$.pipe(map((theme) => theme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G90));
|
|
59
|
+
this.ValuePathSelectorPrefix = ValuePathSelectorPrefix;
|
|
60
|
+
this.ValuePathType = ValuePathType;
|
|
56
61
|
this.CaseWidgetDisplayTypeKey = CaseWidgetDisplayTypeKey;
|
|
57
62
|
this.content = this.widgetWizardService
|
|
58
63
|
.widgetContent;
|
|
59
64
|
this.displayTypeItems = this.widgetFieldsService.displayTypeItems;
|
|
65
|
+
this.selectedCollection$ = new BehaviorSubject(null);
|
|
66
|
+
this.documentDefinitionName$ = this.route.paramMap.pipe(map((paramMap) => paramMap.get('name') ?? ''));
|
|
60
67
|
this.WIDTH_ITEMS = [
|
|
61
68
|
{
|
|
62
69
|
content: this.translateService.instant('widgetTabManagement.width.fullWidth'),
|
|
@@ -127,6 +134,9 @@ export class DossierManagementWidgetCollectionComponent {
|
|
|
127
134
|
fields: content?.fields.map((field, index) => index === fieldIndex ? { ...field, width: event.item.id } : field),
|
|
128
135
|
}));
|
|
129
136
|
}
|
|
137
|
+
onCollectionSelected(item) {
|
|
138
|
+
this.selectedCollection$.next(item);
|
|
139
|
+
}
|
|
130
140
|
initForm() {
|
|
131
141
|
if (!this.widgetWizardService.widgetContent())
|
|
132
142
|
return;
|
|
@@ -194,8 +204,8 @@ export class DossierManagementWidgetCollectionComponent {
|
|
|
194
204
|
this.changeValidEvent.emit(this.widgetForm.valid && this.cardForm.valid && this._contentValid());
|
|
195
205
|
}));
|
|
196
206
|
}
|
|
197
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementWidgetCollectionComponent, deps: [{ token: i1.CdsThemeService }, { token: i2.FormBuilder }, { token: i3.TranslateService }, { token: i4.WidgetWizardService }, { token: i4.WidgetFieldsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
198
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DossierManagementWidgetCollectionComponent, isStandalone: true, selector: "ng-component", outputs: { changeValidEvent: "changeValidEvent" }, host: { properties: { "class": "this.class" } }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"{theme: theme$ | async} as obs\">\n <form [formGroup]=\"widgetForm\" class=\"valtimo-dossier-management-widget-collection__form\">\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.widgetTitle' | translate\"\n [tooltip]=\"'widgetTabManagement.content.widgetTitleTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"title\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.collection.defaultPageSize' | translate\"\n [tooltip]=\"'widgetTabManagement.content.collection.defaultPageSizeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"defaultPageSize\"\n cdsText\n [placeholder]=\"\n 'widgetTabManagement.content.collection.defaultPageSizePlaceholder' | translate\n \"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.collection.collection' | translate\"\n [tooltip]=\"'widgetTabManagement.content.collection.collectionTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"collection\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.collection.collectionPlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n </form>\n\n <span class=\"valtimo-dossier-management-widget-collection__subtitle\">\n {{ 'widgetTabManagement.content.collection.cardTitle' | translate }}\n </span>\n\n <form [formGroup]=\"cardForm\" class=\"valtimo-dossier-management-widget-collection__card\">\n <section class=\"valtimo-dossier-management-widget-collection__card-title\">\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.value' | translate\"\n [tooltip]=\"'widgetTabManagement.content.collection.valueTooltip' | translate\"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.valuePlaceholder' | translate\"\n type=\"text\"\n formControlName=\"value\"\n />\n </cds-text-label>\n\n <cds-dropdown\n [attr.data-carbon-theme]=\"obs.theme\"\n [label]=\"'widgetTabManagement.content.fields.type' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.fields.typePlaceholder' | translate\"\n (selected)=\"onTypeSelected(cardForm, $event)\"\n formControlName=\"type\"\n >\n <cds-dropdown-list [items]=\"getDisplayItemsSelected(cardForm)\"></cds-dropdown-list>\n </cds-dropdown>\n </section>\n\n <section class=\"valtimo-dossier-management-widget-collection__card-options\">\n @switch (cardForm.get('type').value.id) {\n @case (CaseWidgetDisplayTypeKey.CURRENCY) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.currencyCode' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.currencyCodeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.currencyCodePlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"currencyCode\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.display' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.displayTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.displayPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"display\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate: {minFractionDigits: 2, maxFractionDigits: 2}\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfoPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.DATE) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.format' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.dateFormatTooltip' | translate\"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.formatPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.DATE_TIME) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.format' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.dateTimeFormatTooltip' | translate\"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.formatPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.ENUM) {\n <div class=\"valtimo-dossier-management-widget-collection__enum\" formArrayName=\"values\">\n @for (rowValue of cardForm.get('values')?.controls; track $index) {\n <form\n [formGroup]=\"rowValue\"\n class=\"valtimo-dossier-management-widget-collection__enum-form\"\n >\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.enumValue' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.enumValueTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n [attr.data-carbon-theme]=\"obs.theme\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.enumValue' | translate\"\n type=\"text\"\n formControlName=\"key\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.enumDisplay' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.enumDisplayTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.enumDisplay' | translate\"\n type=\"text\"\n formControlName=\"value\"\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger--ghost\"\n [disabled]=\"$count === 1\"\n [iconOnly]=\"true\"\n class=\"valtimo-dossier-management-widget-field-column__delete-button enum\"\n (click)=\"onDeleteRowClick(cardForm.get('values'), $index)\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button\n cdsButton=\"primary\"\n size=\"sm\"\n (click)=\"onAddEnumValueClick(cardForm.get('values'))\"\n >\n {{ 'widgetTabManagement.content.fields.addEnum' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n }\n @case (CaseWidgetDisplayTypeKey.NUMBER) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate\n : {\n minFractionDigits: 0,\n maxFractionDigits: 3,\n }\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.PERCENT) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate\n : {\n minFractionDigits: 0,\n maxFractionDigits: 0,\n }\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n }\n </section>\n </form>\n\n <span class=\"valtimo-dossier-management-widget-collection__subtitle\">\n {{ 'widgetTabManagement.content.collection.cardFields' | translate }}\n </span>\n\n <valtimo-dossier-management-widget-fields-column\n [columnData]=\"content()?.fields\"\n [fieldWidthDropdown]=\"fieldWidthDropdown\"\n (columnUpdateEvent)=\"onColumnUpdateEvent($event)\"\n >\n </valtimo-dossier-management-widget-fields-column>\n\n <ng-template #fieldWidthDropdown let-index=\"index\">\n <cds-dropdown\n [label]=\"'widgetTabManagement.content.collection.fieldWidth' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.collection.fieldWidthPlaceholder' | translate\"\n (selected)=\"onWidthSelected($event, index)\"\n >\n <cds-dropdown-list [items]=\"getSelectedWidthItem(index)\"></cds-dropdown-list>\n </cds-dropdown>\n </ng-template>\n</ng-container>\n", styles: [".valtimo-dossier-management-widget-collection{display:flex;flex-direction:column;gap:24px}.valtimo-dossier-management-widget-collection__form{display:flex;gap:16px}.valtimo-dossier-management-widget-collection__subtitle{font-size:16px;font-weight:600;line-height:22px}.valtimo-dossier-management-widget-collection__card{flex-direction:column;display:flex;gap:16px}.valtimo-dossier-management-widget-collection__card-title{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;align-items:flex-end}.valtimo-dossier-management-widget-collection__card-options{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.valtimo-dossier-management-widget-collection__enum{display:flex;flex-direction:column;gap:16px}.valtimo-dossier-management-widget-collection__enum-form{display:grid;grid-template-columns:1fr 1fr auto;align-items:flex-end;gap:16px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: DossierManagementWidgetFieldsColumnComponent, selector: "valtimo-dossier-management-widget-fields-column", inputs: ["columnData", "addTranslateKey", "isFieldWidget", "fieldWidthDropdown"], outputs: ["columnUpdateEvent"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i6.TextInputLabelComponent, selector: "cds-text-label, ibm-text-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textInputTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i6.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i6.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i6.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i6.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: InputLabelModule }, { kind: "component", type: i1.InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "largeMargin", "small", "noMargin", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
207
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementWidgetCollectionComponent, deps: [{ token: i1.CdsThemeService }, { token: i2.FormBuilder }, { token: i3.TranslateService }, { token: i4.WidgetWizardService }, { token: i4.WidgetFieldsService }, { token: i5.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
208
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DossierManagementWidgetCollectionComponent, isStandalone: true, selector: "ng-component", outputs: { changeValidEvent: "changeValidEvent" }, host: { properties: { "class": "this.class" } }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"{theme: theme$ | async} as obs\">\n <form [formGroup]=\"widgetForm\" class=\"valtimo-dossier-management-widget-collection__form\">\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.widgetTitle' | translate\"\n [tooltip]=\"'widgetTabManagement.content.widgetTitleTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"title\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.collection.defaultPageSize' | translate\"\n [tooltip]=\"'widgetTabManagement.content.collection.defaultPageSizeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"defaultPageSize\"\n cdsText\n [placeholder]=\"\n 'widgetTabManagement.content.collection.defaultPageSizePlaceholder' | translate\n \"\n type=\"text\"\n />\n </cds-text-label>\n\n <div class=\"valtimo-dossier-management-widget-collection__path-selector\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.collection.collection' | translate\"\n [tooltip]=\"'widgetTabManagement.content.collection.collectionTooltip' | translate\"\n >\n </v-input-label>\n\n <valtimo-value-path-selector\n formControlName=\"collection\"\n [attr.data-carbon-theme]=\"obs.theme\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [type]=\"ValuePathType.COLLECTION\"\n (collectionSelected)=\"onCollectionSelected($event)\"\n ></valtimo-value-path-selector>\n </div>\n </form>\n\n <valtimo-dossier-management-widget-process-selector\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n ></valtimo-dossier-management-widget-process-selector>\n\n <span class=\"valtimo-dossier-management-widget-collection__subtitle\">\n {{ 'widgetTabManagement.content.collection.cardTitle' | translate }}\n </span>\n\n <form [formGroup]=\"cardForm\" class=\"valtimo-dossier-management-widget-collection__card\">\n <section class=\"valtimo-dossier-management-widget-collection__card-title\">\n <div class=\"valtimo-dossier-management-widget-collection__path-selector\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.value' | translate\"\n [tooltip]=\"'widgetTabManagement.content.collection.valueTooltip' | translate\"\n >\n </v-input-label>\n\n <valtimo-value-path-selector\n formControlName=\"value\"\n [attr.data-carbon-theme]=\"obs.theme\"\n [documentDefinitionName]=\"documentDefinitionName\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [parentItem]=\"selectedCollection$ | async\"\n ></valtimo-value-path-selector>\n </div>\n\n <cds-dropdown\n [attr.data-carbon-theme]=\"obs.theme\"\n [label]=\"'widgetTabManagement.content.fields.type' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.fields.typePlaceholder' | translate\"\n (selected)=\"onTypeSelected(cardForm, $event)\"\n formControlName=\"type\"\n >\n <cds-dropdown-list [items]=\"getDisplayItemsSelected(cardForm)\"></cds-dropdown-list>\n </cds-dropdown>\n </section>\n\n <section class=\"valtimo-dossier-management-widget-collection__card-options\">\n @switch (cardForm.get('type').value.id) {\n @case (CaseWidgetDisplayTypeKey.CURRENCY) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.currencyCode' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.currencyCodeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.currencyCodePlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"currencyCode\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.display' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.displayTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.displayPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"display\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate: {minFractionDigits: 2, maxFractionDigits: 2}\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfoPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.DATE) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.format' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.dateFormatTooltip' | translate\"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.formatPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.DATE_TIME) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.format' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.dateTimeFormatTooltip' | translate\"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.formatPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.ENUM) {\n <div class=\"valtimo-dossier-management-widget-collection__enum\" formArrayName=\"values\">\n @for (rowValue of cardForm.get('values')?.controls; track $index) {\n <form\n [formGroup]=\"rowValue\"\n class=\"valtimo-dossier-management-widget-collection__enum-form\"\n >\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.enumValue' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.enumValueTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n [attr.data-carbon-theme]=\"obs.theme\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.enumValue' | translate\"\n type=\"text\"\n formControlName=\"key\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.enumDisplay' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.enumDisplayTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.enumDisplay' | translate\"\n type=\"text\"\n formControlName=\"value\"\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger--ghost\"\n [disabled]=\"$count === 1\"\n [iconOnly]=\"true\"\n class=\"valtimo-dossier-management-widget-field-column__delete-button enum\"\n (click)=\"onDeleteRowClick(cardForm.get('values'), $index)\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button\n cdsButton=\"primary\"\n size=\"sm\"\n (click)=\"onAddEnumValueClick(cardForm.get('values'))\"\n >\n {{ 'widgetTabManagement.content.fields.addEnum' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n }\n @case (CaseWidgetDisplayTypeKey.NUMBER) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate\n : {\n minFractionDigits: 0,\n maxFractionDigits: 3,\n }\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.PERCENT) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate\n : {\n minFractionDigits: 0,\n maxFractionDigits: 0,\n }\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n }\n </section>\n </form>\n\n <span class=\"valtimo-dossier-management-widget-collection__subtitle\">\n {{ 'widgetTabManagement.content.collection.cardFields' | translate }}\n </span>\n\n <valtimo-dossier-management-widget-fields-column\n [columnData]=\"content()?.fields\"\n [fieldWidthDropdown]=\"fieldWidthDropdown\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n [selectedCollection]=\"selectedCollection$ | async\"\n [showHideWhenEmptyCheckbox]=\"true\"\n (columnUpdateEvent)=\"onColumnUpdateEvent($event)\"\n >\n </valtimo-dossier-management-widget-fields-column>\n\n <ng-template #fieldWidthDropdown let-index=\"index\">\n <cds-dropdown\n [label]=\"'widgetTabManagement.content.collection.fieldWidth' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.collection.fieldWidthPlaceholder' | translate\"\n (selected)=\"onWidthSelected($event, index)\"\n >\n <cds-dropdown-list [items]=\"getSelectedWidthItem(index)\"></cds-dropdown-list>\n </cds-dropdown>\n </ng-template>\n</ng-container>\n", styles: [".valtimo-dossier-management-widget-collection{display:flex;flex-direction:column;gap:24px}.valtimo-dossier-management-widget-collection__form{display:grid;gap:16px;grid-template-columns:repeat(3,1fr);align-items:flex-end}.valtimo-dossier-management-widget-collection__subtitle{font-size:16px;font-weight:600;line-height:22px}.valtimo-dossier-management-widget-collection__path-selector{display:flex;flex-direction:column}.valtimo-dossier-management-widget-collection__card{flex-direction:column;display:flex;gap:16px}.valtimo-dossier-management-widget-collection__card-title{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;align-items:flex-end}.valtimo-dossier-management-widget-collection__card-options{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.valtimo-dossier-management-widget-collection__enum{display:flex;flex-direction:column;gap:16px}.valtimo-dossier-management-widget-collection__enum-form{display:grid;grid-template-columns:1fr 1fr auto;align-items:flex-end;gap:16px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: DossierManagementWidgetFieldsColumnComponent, selector: "valtimo-dossier-management-widget-fields-column", inputs: ["columnData", "addTranslateKey", "isFieldWidget", "documentDefinitionName", "fieldWidthDropdown", "selectedCollection", "showHideWhenEmptyCheckbox"], outputs: ["columnUpdateEvent"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i7.TextInputLabelComponent, selector: "cds-text-label, ibm-text-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textInputTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i7.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i7.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i7.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i7.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i7.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: InputLabelModule }, { kind: "component", type: i1.InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "largeMargin", "small", "noMargin", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "component", type: DossierManagementWidgetProcessSelectorComponent, selector: "valtimo-dossier-management-widget-process-selector", inputs: ["documentDefinitionName"] }, { kind: "component", type: ValuePathSelectorComponent, selector: "valtimo-value-path-selector", inputs: ["name", "appendInline", "margin", "marginLg", "marginXl", "disabled", "documentDefinitionName", "version", "prefixes", "label", "tooltip", "required", "showDocumentDefinitionSelector", "notation", "defaultValue", "type", "parentItem"], outputs: ["valueChangeEvent", "collectionSelected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
199
209
|
}
|
|
200
210
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementWidgetCollectionComponent, decorators: [{
|
|
201
211
|
type: Component,
|
|
@@ -209,11 +219,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
209
219
|
ButtonModule,
|
|
210
220
|
IconModule,
|
|
211
221
|
InputLabelModule,
|
|
212
|
-
], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"{theme: theme$ | async} as obs\">\n <form [formGroup]=\"widgetForm\" class=\"valtimo-dossier-management-widget-collection__form\">\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.widgetTitle' | translate\"\n [tooltip]=\"'widgetTabManagement.content.widgetTitleTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"title\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.collection.defaultPageSize' | translate\"\n [tooltip]=\"'widgetTabManagement.content.collection.defaultPageSizeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"defaultPageSize\"\n cdsText\n [placeholder]=\"\n 'widgetTabManagement.content.collection.defaultPageSizePlaceholder' | translate\n \"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.collection.collection' | translate\"\n [tooltip]=\"'widgetTabManagement.content.collection.collectionTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"collection\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.collection.collectionPlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n </form>\n\n <span class=\"valtimo-dossier-management-widget-collection__subtitle\">\n {{ 'widgetTabManagement.content.collection.cardTitle' | translate }}\n </span>\n\n <form [formGroup]=\"cardForm\" class=\"valtimo-dossier-management-widget-collection__card\">\n <section class=\"valtimo-dossier-management-widget-collection__card-title\">\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.value' | translate\"\n [tooltip]=\"'widgetTabManagement.content.collection.valueTooltip' | translate\"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.valuePlaceholder' | translate\"\n type=\"text\"\n formControlName=\"value\"\n />\n </cds-text-label>\n\n <cds-dropdown\n [attr.data-carbon-theme]=\"obs.theme\"\n [label]=\"'widgetTabManagement.content.fields.type' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.fields.typePlaceholder' | translate\"\n (selected)=\"onTypeSelected(cardForm, $event)\"\n formControlName=\"type\"\n >\n <cds-dropdown-list [items]=\"getDisplayItemsSelected(cardForm)\"></cds-dropdown-list>\n </cds-dropdown>\n </section>\n\n <section class=\"valtimo-dossier-management-widget-collection__card-options\">\n @switch (cardForm.get('type').value.id) {\n @case (CaseWidgetDisplayTypeKey.CURRENCY) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.currencyCode' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.currencyCodeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.currencyCodePlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"currencyCode\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.display' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.displayTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.displayPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"display\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate: {minFractionDigits: 2, maxFractionDigits: 2}\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfoPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.DATE) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.format' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.dateFormatTooltip' | translate\"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.formatPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.DATE_TIME) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.format' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.dateTimeFormatTooltip' | translate\"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.formatPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.ENUM) {\n <div class=\"valtimo-dossier-management-widget-collection__enum\" formArrayName=\"values\">\n @for (rowValue of cardForm.get('values')?.controls; track $index) {\n <form\n [formGroup]=\"rowValue\"\n class=\"valtimo-dossier-management-widget-collection__enum-form\"\n >\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.enumValue' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.enumValueTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n [attr.data-carbon-theme]=\"obs.theme\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.enumValue' | translate\"\n type=\"text\"\n formControlName=\"key\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.enumDisplay' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.enumDisplayTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.enumDisplay' | translate\"\n type=\"text\"\n formControlName=\"value\"\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger--ghost\"\n [disabled]=\"$count === 1\"\n [iconOnly]=\"true\"\n class=\"valtimo-dossier-management-widget-field-column__delete-button enum\"\n (click)=\"onDeleteRowClick(cardForm.get('values'), $index)\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button\n cdsButton=\"primary\"\n size=\"sm\"\n (click)=\"onAddEnumValueClick(cardForm.get('values'))\"\n >\n {{ 'widgetTabManagement.content.fields.addEnum' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n }\n @case (CaseWidgetDisplayTypeKey.NUMBER) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate\n : {\n minFractionDigits: 0,\n maxFractionDigits: 3,\n }\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.PERCENT) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate\n : {\n minFractionDigits: 0,\n maxFractionDigits: 0,\n }\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n }\n </section>\n </form>\n\n <span class=\"valtimo-dossier-management-widget-collection__subtitle\">\n {{ 'widgetTabManagement.content.collection.cardFields' | translate }}\n </span>\n\n <valtimo-dossier-management-widget-fields-column\n [columnData]=\"content()?.fields\"\n [fieldWidthDropdown]=\"fieldWidthDropdown\"\n (columnUpdateEvent)=\"onColumnUpdateEvent($event)\"\n >\n </valtimo-dossier-management-widget-fields-column>\n\n <ng-template #fieldWidthDropdown let-index=\"index\">\n <cds-dropdown\n [label]=\"'widgetTabManagement.content.collection.fieldWidth' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.collection.fieldWidthPlaceholder' | translate\"\n (selected)=\"onWidthSelected($event, index)\"\n >\n <cds-dropdown-list [items]=\"getSelectedWidthItem(index)\"></cds-dropdown-list>\n </cds-dropdown>\n </ng-template>\n</ng-container>\n", styles: [".valtimo-dossier-management-widget-collection{display:flex;flex-direction:column;gap:24px}.valtimo-dossier-management-widget-collection__form{display:flex;gap:16px}.valtimo-dossier-management-widget-collection__subtitle{font-size:16px;font-weight:600;line-height:22px}.valtimo-dossier-management-widget-collection__card{flex-direction:column;display:flex;gap:16px}.valtimo-dossier-management-widget-collection__card-title{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;align-items:flex-end}.valtimo-dossier-management-widget-collection__card-options{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.valtimo-dossier-management-widget-collection__enum{display:flex;flex-direction:column;gap:16px}.valtimo-dossier-management-widget-collection__enum-form{display:grid;grid-template-columns:1fr 1fr auto;align-items:flex-end;gap:16px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
213
|
-
|
|
222
|
+
DossierManagementWidgetProcessSelectorComponent,
|
|
223
|
+
ValuePathSelectorComponent,
|
|
224
|
+
], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"{theme: theme$ | async} as obs\">\n <form [formGroup]=\"widgetForm\" class=\"valtimo-dossier-management-widget-collection__form\">\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.widgetTitle' | translate\"\n [tooltip]=\"'widgetTabManagement.content.widgetTitleTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"title\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.collection.defaultPageSize' | translate\"\n [tooltip]=\"'widgetTabManagement.content.collection.defaultPageSizeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"defaultPageSize\"\n cdsText\n [placeholder]=\"\n 'widgetTabManagement.content.collection.defaultPageSizePlaceholder' | translate\n \"\n type=\"text\"\n />\n </cds-text-label>\n\n <div class=\"valtimo-dossier-management-widget-collection__path-selector\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.collection.collection' | translate\"\n [tooltip]=\"'widgetTabManagement.content.collection.collectionTooltip' | translate\"\n >\n </v-input-label>\n\n <valtimo-value-path-selector\n formControlName=\"collection\"\n [attr.data-carbon-theme]=\"obs.theme\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [type]=\"ValuePathType.COLLECTION\"\n (collectionSelected)=\"onCollectionSelected($event)\"\n ></valtimo-value-path-selector>\n </div>\n </form>\n\n <valtimo-dossier-management-widget-process-selector\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n ></valtimo-dossier-management-widget-process-selector>\n\n <span class=\"valtimo-dossier-management-widget-collection__subtitle\">\n {{ 'widgetTabManagement.content.collection.cardTitle' | translate }}\n </span>\n\n <form [formGroup]=\"cardForm\" class=\"valtimo-dossier-management-widget-collection__card\">\n <section class=\"valtimo-dossier-management-widget-collection__card-title\">\n <div class=\"valtimo-dossier-management-widget-collection__path-selector\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.value' | translate\"\n [tooltip]=\"'widgetTabManagement.content.collection.valueTooltip' | translate\"\n >\n </v-input-label>\n\n <valtimo-value-path-selector\n formControlName=\"value\"\n [attr.data-carbon-theme]=\"obs.theme\"\n [documentDefinitionName]=\"documentDefinitionName\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [parentItem]=\"selectedCollection$ | async\"\n ></valtimo-value-path-selector>\n </div>\n\n <cds-dropdown\n [attr.data-carbon-theme]=\"obs.theme\"\n [label]=\"'widgetTabManagement.content.fields.type' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.fields.typePlaceholder' | translate\"\n (selected)=\"onTypeSelected(cardForm, $event)\"\n formControlName=\"type\"\n >\n <cds-dropdown-list [items]=\"getDisplayItemsSelected(cardForm)\"></cds-dropdown-list>\n </cds-dropdown>\n </section>\n\n <section class=\"valtimo-dossier-management-widget-collection__card-options\">\n @switch (cardForm.get('type').value.id) {\n @case (CaseWidgetDisplayTypeKey.CURRENCY) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.currencyCode' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.currencyCodeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.currencyCodePlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"currencyCode\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.display' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.displayTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.displayPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"display\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate: {minFractionDigits: 2, maxFractionDigits: 2}\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfoPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.DATE) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.format' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.dateFormatTooltip' | translate\"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.formatPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.DATE_TIME) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.format' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.dateTimeFormatTooltip' | translate\"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.formatPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.ENUM) {\n <div class=\"valtimo-dossier-management-widget-collection__enum\" formArrayName=\"values\">\n @for (rowValue of cardForm.get('values')?.controls; track $index) {\n <form\n [formGroup]=\"rowValue\"\n class=\"valtimo-dossier-management-widget-collection__enum-form\"\n >\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.enumValue' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.enumValueTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n [attr.data-carbon-theme]=\"obs.theme\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.enumValue' | translate\"\n type=\"text\"\n formControlName=\"key\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.enumDisplay' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.enumDisplayTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.enumDisplay' | translate\"\n type=\"text\"\n formControlName=\"value\"\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger--ghost\"\n [disabled]=\"$count === 1\"\n [iconOnly]=\"true\"\n class=\"valtimo-dossier-management-widget-field-column__delete-button enum\"\n (click)=\"onDeleteRowClick(cardForm.get('values'), $index)\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button\n cdsButton=\"primary\"\n size=\"sm\"\n (click)=\"onAddEnumValueClick(cardForm.get('values'))\"\n >\n {{ 'widgetTabManagement.content.fields.addEnum' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n }\n @case (CaseWidgetDisplayTypeKey.NUMBER) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate\n : {\n minFractionDigits: 0,\n maxFractionDigits: 3,\n }\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.PERCENT) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate\n : {\n minFractionDigits: 0,\n maxFractionDigits: 0,\n }\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n }\n </section>\n </form>\n\n <span class=\"valtimo-dossier-management-widget-collection__subtitle\">\n {{ 'widgetTabManagement.content.collection.cardFields' | translate }}\n </span>\n\n <valtimo-dossier-management-widget-fields-column\n [columnData]=\"content()?.fields\"\n [fieldWidthDropdown]=\"fieldWidthDropdown\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n [selectedCollection]=\"selectedCollection$ | async\"\n [showHideWhenEmptyCheckbox]=\"true\"\n (columnUpdateEvent)=\"onColumnUpdateEvent($event)\"\n >\n </valtimo-dossier-management-widget-fields-column>\n\n <ng-template #fieldWidthDropdown let-index=\"index\">\n <cds-dropdown\n [label]=\"'widgetTabManagement.content.collection.fieldWidth' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.collection.fieldWidthPlaceholder' | translate\"\n (selected)=\"onWidthSelected($event, index)\"\n >\n <cds-dropdown-list [items]=\"getSelectedWidthItem(index)\"></cds-dropdown-list>\n </cds-dropdown>\n </ng-template>\n</ng-container>\n", styles: [".valtimo-dossier-management-widget-collection{display:flex;flex-direction:column;gap:24px}.valtimo-dossier-management-widget-collection__form{display:grid;gap:16px;grid-template-columns:repeat(3,1fr);align-items:flex-end}.valtimo-dossier-management-widget-collection__subtitle{font-size:16px;font-weight:600;line-height:22px}.valtimo-dossier-management-widget-collection__path-selector{display:flex;flex-direction:column}.valtimo-dossier-management-widget-collection__card{flex-direction:column;display:flex;gap:16px}.valtimo-dossier-management-widget-collection__card-title{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;align-items:flex-end}.valtimo-dossier-management-widget-collection__card-options{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.valtimo-dossier-management-widget-collection__enum{display:flex;flex-direction:column;gap:16px}.valtimo-dossier-management-widget-collection__enum-form{display:grid;grid-template-columns:1fr 1fr auto;align-items:flex-end;gap:16px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
225
|
+
}], ctorParameters: () => [{ type: i1.CdsThemeService }, { type: i2.FormBuilder }, { type: i3.TranslateService }, { type: i4.WidgetWizardService }, { type: i4.WidgetFieldsService }, { type: i5.ActivatedRoute }], propDecorators: { class: [{
|
|
214
226
|
type: HostBinding,
|
|
215
227
|
args: ['class']
|
|
216
228
|
}], changeValidEvent: [{
|
|
217
229
|
type: Output
|
|
218
230
|
}] } });
|
|
219
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbmZpZ3VyYXRvcnMvY29sbGVjdGlvbi9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbGxlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29uZmlndXJhdG9ycy9jb2xsZWN0aW9uL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29sbGVjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUdYLE1BQU0sRUFDTixNQUFNLEVBQ04saUJBQWlCLEdBRWxCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFLTCxtQkFBbUIsRUFDbkIsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLGVBQWUsRUFBbUIsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsWUFBWSxFQUVaLGtCQUFrQixFQUNsQixnQkFBZ0IsR0FDakIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBSUwsd0JBQXdCLEdBTXpCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUNMLFlBQVksRUFD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bkIsV0FBVywyYUFDWCxjQUFjLGdzQkFDZCxZQUFZLGdNQUNaLFVBQVUsNE5BQ1YsZ0JBQWdCOzs0RkFHUCwwQ0FBMEM7a0JBbEJ0RCxTQUFTO3NDQUdTLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksY0FDekIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osZUFBZTt3QkFDZiw0Q0FBNEM7d0JBQzVDLG1CQUFtQjt3QkFDbkIsV0FBVzt3QkFDWCxjQUFjO3dCQUNkLFlBQVk7d0JBQ1osVUFBVTt3QkFDVixnQkFBZ0I7cUJBQ2pCO2lOQUtxQyxLQUFLO3NCQUExQyxXQUFXO3VCQUFDLE9BQU87Z0JBQ00sZ0JBQWdCO3NCQUF6QyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgc2lnbmFsLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgV3JpdGFibGVTaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQXJyYXksXG4gIEZvcm1CdWlsZGVyLFxuICBGb3JtR3JvdXAsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gIENBUkJPTl9USEVNRSxcbiAgQ2RzVGhlbWVTZXJ2aWNlLFxuICBDdXJyZW50Q2FyYm9uVGhlbWUsXG4gIElucHV0TGFiZWxNb2R1bGUsXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQ2FzZVdpZGdldEN1cnJlbmN5RGlzcGxheVR5cGUsXG4gIENhc2VXaWRnZXREYXRlRGlzcGxheVR5cGUsXG4gIENhc2VXaWRnZXREYXRlVGltZURpc3BsYXlUeXBlLFxuICBDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXksXG4gIENhc2VXaWRnZXRFbnVtRGlzcGxheVR5cGUsXG4gIENvbGxlY3Rpb25GaWVsZFdpZHRoLFxuICBGaWVsZHNDYXNlV2lkZ2V0VmFsdWUsXG4gIFdpZGdldENvbGxlY3Rpb25Db250ZW50LFxuICBXaWRnZXRDb250ZW50UHJvcGVydGllcyxcbn0gZnJvbSAnQHZhbHRpbW8vZG9zc2llcic7XG5pbXBvcnQge1xuICBCdXR0b25Nb2R1bGUsXG4gIERyb3Bkb3duTW9kdWxlLFxuICBJY29uTW9kdWxlLFxuICBJbnB1dE1vZHVsZSxcbiAgTGlzdEl0ZW0sXG59IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIG1hcCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtXaWRnZXRDb250ZW50Q29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtXaWRnZXRGaWVsZHNTZXJ2aWNlLCBXaWRnZXRXaXphcmRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge0Rvc3NpZXJNYW5hZ2VtZW50V2lkZ2V0RmllbGRzQ29sdW1uQ29tcG9uZW50fSBmcm9tICcuLi9maWVsZHMvY29sdW1uL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtZmllbGRzLWNvbHVtbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29sbGVjdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbGxlY3Rpb24uY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgRG9zc2llck1hbmFnZW1lbnRXaWRnZXRGaWVsZHNDb2x1bW5Db21wb25lbnQsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBJbnB1dE1vZHVsZSxcbiAgICBEcm9wZG93bk1vZHVsZSxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBJbnB1dExhYmVsTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyTWFuYWdlbWVudFdpZGdldENvbGxlY3Rpb25Db21wb25lbnRcbiAgaW1wbGVtZW50cyBXaWRnZXRDb250ZW50Q29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveVxue1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgcHVibGljIHJlYWRvbmx5IGNsYXNzID0gJ3ZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uJztcbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBjaGFuZ2VWYWxpZEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHB1YmxpYyByZWFkb25seSB3aWRnZXRGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgdGl0bGU6IHRoaXMuZmIuY29udHJvbCh0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0VGl0bGUoKSA/PyAnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgZGVmYXVsdFBhZ2VTaXplOiB0aGlzLmZiLmNvbnRyb2woXG4gICAgICAodGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQoKSBhcyBXaWRnZXRDb2xsZWN0aW9uQ29udGVudCk/LmRlZmF1bHRQYWdlU2l6ZSA/PyA1LFxuICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxuICAgICksXG4gICAgY29sbGVjdGlvbjogdGhpcy5mYi5jb250cm9sKFxuICAgICAgKHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRDb250ZW50KCkgYXMgV2lkZ2V0Q29sbGVjdGlvbkNvbnRlbnQpPy5jb2xsZWN0aW9uID8/ICcnLFxuICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxuICAgICksXG4gIH0pO1xuXG4gIHB1YmxpYyByZWFkb25seSBjYXJkRm9ybSA9IHRoaXMuZmIuZ3JvdXA8YW55Pih7XG4gICAgdmFsdWU6IHRoaXMuZmIuY29udHJvbChcbiAgICAgICh0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0Q29udGVudCgpIGFzIFdpZGdldENvbGxlY3Rpb25Db250ZW50KT8udGl0bGU/LnZhbHVlID8/ICcnLFxuICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxuICAgICksXG4gICAgdHlwZTogdGhpcy5mYi5jb250cm9sPExpc3RJdGVtPihcbiAgICAgIHtcbiAgICAgICAgY29udGVudDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICBgd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmRpc3BsYXlUeXBlLiR7KHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRDb250ZW50KCkgYXMgV2lkZ2V0Q29sbGVjdGlvbkNvbnRlbnQpPy50aXRsZT8uZGlzcGxheVByb3BlcnRpZXM/LnR5cGUgPz8gQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5LlRFWFR9YFxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgaWQ6XG4gICAgICAgICAgKHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRDb250ZW50KCkgYXMgV2lkZ2V0Q29sbGVjdGlvbkNvbnRlbnQpPy50aXRsZVxuICAgICAgICAgICAgPy5kaXNwbGF5UHJvcGVydGllcz8udHlwZSA/PyBDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuVEVYVCxcbiAgICAgICAgc2VsZWN0ZWQ6IHRydWUsXG4gICAgICB9LFxuICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxuICAgICksXG4gIH0pO1xuXG4gIHB1YmxpYyByZWFkb25seSB0aGVtZSQ6IE9ic2VydmFibGU8Q0FSQk9OX1RIRU1FPiA9IHRoaXMuY2RzVGhlbWVTZXJ2aWNlLmN1cnJlbnRUaGVtZSQucGlwZShcbiAgICBtYXAoKHRoZW1lOiBDdXJyZW50Q2FyYm9uVGhlbWUpID0+XG4gICAgICB0aGVtZSA9PT0gQ3VycmVudENhcmJvblRoZW1lLkcxMCA/IENBUkJPTl9USEVNRS5XSElURSA6IENBUkJPTl9USEVNRS5HOTBcbiAgICApXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IENhc2VXaWRnZXREaXNwbGF5VHlwZUtleSA9IENhc2VXaWRnZXREaXNwbGF5VHlwZUtleTtcbiAgcHVibGljIHJlYWRvbmx5IGNvbnRlbnQgPSB0aGlzLndpZGdldFdpemFyZFNlcnZpY2VcbiAgICAud2lkZ2V0Q29udGVudCBhcyBXcml0YWJsZVNpZ25hbDxXaWRnZXRDb2xsZWN0aW9uQ29udGVudD47XG4gIHB1YmxpYyByZWFkb25seSBkaXNwbGF5VHlwZUl0ZW1zOiBMaXN0SXRlbVtdID0gdGhpcy53aWRnZXRGaWVsZHNTZXJ2aWNlLmRpc3BsYXlUeXBlSXRlbXM7XG5cbiAgcHVibGljIFdJRFRIX0lURU1TOiBMaXN0SXRlbVtdID0gW1xuICAgIHtcbiAgICAgIGNvbnRlbnQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCd3aWRnZXRUYWJNYW5hZ2VtZW50LndpZHRoLmZ1bGxXaWR0aCcpLFxuICAgICAgaWQ6ICdmdWxsJyxcbiAgICAgIHNlbGVjdGVkOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgY29udGVudDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3dpZGdldFRhYk1hbmFnZW1lbnQud2lkdGguaGFsZicpLFxuICAgICAgaWQ6ICdoYWxmJyxcbiAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICB9LFxuICBdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbnRlbnRWYWxpZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHNUaGVtZVNlcnZpY2U6IENkc1RoZW1lU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB3aWRnZXRXaXphcmRTZXJ2aWNlOiBXaWRnZXRXaXphcmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgd2lkZ2V0RmllbGRzU2VydmljZTogV2lkZ2V0RmllbGRzU2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3BlbldpZGdldEZvcm1TdWJzY3JpcHRpb24oKTtcbiAgICB0aGlzLm9wZW5DYXJkRm9ybVN1YnNjcmlwdGlvbigpO1xuICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgb25BZGRFbnVtVmFsdWVDbGljayh2YWx1ZXNGb3JtQXJyYXk6IEZvcm1BcnJheSk6IHZvaWQge1xuICAgIHZhbHVlc0Zvcm1BcnJheS5wdXNoKFxuICAgICAgdGhpcy5mYi5ncm91cCh7XG4gICAgICAgIGtleTogdGhpcy5mYi5jb250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgdmFsdWU6IHRoaXMuZmIuY29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGlzcGxheUl0ZW1zU2VsZWN0ZWQoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogTGlzdEl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMud2lkZ2V0RmllbGRzU2VydmljZS5nZXREaXNwbGF5SXRlbXNTZWxlY3RlZChjb250cm9sKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTZWxlY3RlZFdpZHRoSXRlbShmaWVsZEluZGV4OiBudW1iZXIpOiBMaXN0SXRlbVtdIHtcbiAgICBjb25zdCB3aWRnZXRDb250ZW50OiBXaWRnZXRDb2xsZWN0aW9uQ29udGVudCB8IG51bGwgPVxuICAgICAgdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQoKSBhcyBXaWRnZXRDb2xsZWN0aW9uQ29udGVudDtcblxuICAgIHJldHVybiAhd2lkZ2V0Q29udGVudFxuICAgICAgPyB0aGlzLldJRFRIX0lURU1TXG4gICAgICA6IHRoaXMuV0lEVEhfSVRFTVMubWFwKChpdGVtOiBMaXN0SXRlbSkgPT4gKHtcbiAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgIHNlbGVjdGVkOiB3aWRnZXRDb250ZW50LmZpZWxkcz8uW2ZpZWxkSW5kZXhdPy53aWR0aCA9PT0gaXRlbS5pZCxcbiAgICAgICAgfSkpO1xuICB9XG5cbiAgcHVibGljIG9uQ29sdW1uVXBkYXRlRXZlbnQoZXZlbnQ6IHtkYXRhOiBGaWVsZHNDYXNlV2lkZ2V0VmFsdWVbXTsgdmFsaWQ6IGJvb2xlYW59KTogdm9pZCB7XG4gICAgY29uc3Qge2RhdGEsIHZhbGlkfSA9IGV2ZW50O1xuICAgIHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRDb250ZW50LnVwZGF0ZSgoY29udGVudDogV2lkZ2V0Q29udGVudFByb3BlcnRpZXMgfCBudWxsKSA9PiB7XG4gICAgICBjb25zdCBleGlzdGluZ0ZpZWxkcyA9IChjb250ZW50IGFzIFdpZGdldENvbGxlY3Rpb25Db250ZW50KT8uZmllbGRzO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5jb250ZW50LFxuICAgICAgICBmaWVsZHM6IGRhdGEubWFwKChpdGVtLCBpbmRleCkgPT4gKHtcbiAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgIHdpZHRoOiBleGlzdGluZ0ZpZWxkcz8uW2luZGV4XT8ud2lkdGggPz8gJ2Z1bGwnLFxuICAgICAgICB9KSksXG4gICAgICB9IGFzIFdpZGdldENvbGxlY3Rpb25Db250ZW50O1xuICAgIH0pO1xuICAgIHRoaXMuX2NvbnRlbnRWYWxpZC5zZXQodmFsaWQpO1xuICAgIHRoaXMuY2hhbmdlVmFsaWRFdmVudC5lbWl0KHZhbGlkICYmIHRoaXMud2lkZ2V0Rm9ybS52YWxpZCk7XG4gIH1cblxuICBwdWJsaWMgb25EZWxldGVSb3dDbGljayhmb3JtQXJyYXk6IEZvcm1BcnJheSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghZm9ybUFycmF5KSByZXR1cm47XG5cbiAgICBmb3JtQXJyYXkucmVtb3ZlQXQoaW5kZXgpO1xuICB9XG5cbiAgcHVibGljIG9uVHlwZVNlbGVjdGVkKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBldmVudDoge2l0ZW06IExpc3RJdGVtfSk6IHZvaWQge1xuICAgIHRoaXMud2lkZ2V0RmllbGRzU2VydmljZS5vbkRpc3BsYXlUeXBlU2VsZWN0ZWQoWyd2YWx1ZScsICd0eXBlJ10sIGZvcm1Hcm91cCwgZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIG9uV2lkdGhTZWxlY3RlZChldmVudDoge2l0ZW06IExpc3RJdGVtfSwgZmllbGRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQudXBkYXRlKFxuICAgICAgKGNvbnRlbnQ6IFdpZGdldENvbnRlbnRQcm9wZXJ0aWVzIHwgbnVsbCkgPT5cbiAgICAgICAgKHtcbiAgICAgICAgICAuLi5jb250ZW50LFxuICAgICAgICAgIGZpZWxkczogKGNvbnRlbnQgYXMgV2lkZ2V0Q29sbGVjdGlvbkNvbnRlbnQpPy5maWVsZHMubWFwKFxuICAgICAgICAgICAgKGZpZWxkOiBGaWVsZHNDYXNlV2lkZ2V0VmFsdWUgJiB7d2lkdGg6IENvbGxlY3Rpb25GaWVsZFdpZHRofSwgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgICAgICAgICAgaW5kZXggPT09IGZpZWxkSW5kZXggPyB7Li4uZmllbGQsIHdpZHRoOiBldmVudC5pdGVtLmlkfSA6IGZpZWxkXG4gICAgICAgICAgKSxcbiAgICAgICAgfSkgYXMgV2lkZ2V0Q29sbGVjdGlvbkNvbnRlbnRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Rm9ybSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRDb250ZW50KCkpIHJldHVybjtcblxuICAgIGNvbnN0IHRpdGxlID0gKHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRDb250ZW50KCkgYXMgV2lkZ2V0Q29sbGVjdGlvbkNvbnRlbnQpLnRpdGxlO1xuICAgIGlmICghdGl0bGUpIHJldHVybjtcbiAgICB0aGlzLm9uVHlwZVNlbGVjdGVkKHRoaXMuY2FyZEZvcm0sIHtcbiAgICAgIGl0ZW06IHtpZDogdGl0bGUuZGlzcGxheVByb3BlcnRpZXM/LnR5cGUgPz8gJycsIGNvbnRlbnQ6ICcnLCBzZWxlY3RlZDogdHJ1ZX0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmNhcmRGb3JtLnBhdGNoVmFsdWUoXG4gICAgICB7XG4gICAgICAgIC4uLihbXG4gICAgICAgICAgQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5Lk5VTUJFUixcbiAgICAgICAgICBDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuUEVSQ0VOVCxcbiAgICAgICAgICBDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuQ1VSUkVOQ1ksXG4gICAgICAgIF0uaW5jbHVkZXModGl0bGUuZGlzcGxheVByb3BlcnRpZXM/LnR5cGUgYXMgQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5KSAmJiB7XG4gICAgICAgICAgZGlnaXRzSW5mbzogKHRpdGxlLmRpc3BsYXlQcm9wZXJ0aWVzIGFzIENhc2VXaWRnZXRDdXJyZW5jeURpc3BsYXlUeXBlKS5kaWdpdHNJbmZvLFxuICAgICAgICB9KSxcbiAgICAgICAgLi4uKHRpdGxlLmRpc3BsYXlQcm9wZXJ0aWVzPy50eXBlID09PSBDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuQ1VSUkVOQ1kgJiYge1xuICAgICAgICAgIGN1cnJlbmN5Q29kZTogKHRpdGxlLmRpc3BsYXlQcm9wZXJ0aWVzIGFzIENhc2VXaWRnZXRDdXJyZW5jeURpc3BsYXlUeXBlKS5jdXJyZW5jeUNvZGUsXG4gICAgICAgICAgZGlzcGxheTogKHRpdGxlLmRpc3BsYXlQcm9wZXJ0aWVzIGFzIENhc2VXaWRnZXRDdXJyZW5jeURpc3BsYXlUeXBlKS5kaXNwbGF5LFxuICAgICAgICB9KSxcbiAgICAgICAgLi4uKHRpdGxlLmRpc3BsYXlQcm9wZXJ0aWVzPy50eXBlID09PSBDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuREFURSAmJiB7XG4gICAgICAgICAgZm9ybWF0OiAodGl0bGUuZGlzcGxheVByb3BlcnRpZXMgYXMgQ2FzZVdpZGdldERhdGVEaXNwbGF5VHlwZSkuZm9ybWF0LFxuICAgICAgICB9KSxcbiAgICAgICAgLi4uKHRpdGxlLmRpc3BsYXlQcm9wZXJ0aWVzPy50eXBlID09PSBDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuREFURV9USU1FICYmIHtcbiAgICAgICAgICBmb3JtYXQ6ICh0aXRsZS5kaXNwbGF5UHJvcGVydGllcyBhcyBDYXNlV2lkZ2V0RGF0ZVRpbWVEaXNwbGF5VHlwZSkuZm9ybWF0LFxuICAgICAgICB9KSxcbiAgICAgICAgLi4uKHRpdGxlLmRpc3BsYXlQcm9wZXJ0aWVzPy50eXBlID09PSBDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuRU5VTSAmJiB7XG4gICAgICAgICAgdmFsdWVzOiBPYmplY3QuZW50cmllcygodGl0bGUuZGlzcGxheVByb3BlcnRpZXMgYXMgQ2FzZVdpZGdldEVudW1EaXNwbGF5VHlwZSkudmFsdWVzKS5tYXAoXG4gICAgICAgICAgICAoW2tleSwgdmFsdWVdKSA9PiAoe2tleSwgdmFsdWV9KVxuICAgICAgICAgICksXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICAgIHtlbWl0RXZlbnQ6IGZhbHNlfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5XaWRnZXRGb3JtU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy53aWRnZXRGb3JtLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSg1MDApKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICB0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0VGl0bGUuc2V0KHZhbHVlPy50aXRsZSA/PyAnJyk7XG5cbiAgICAgICAgdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQudXBkYXRlKFxuICAgICAgICAgIChjb250ZW50OiBXaWRnZXRDb250ZW50UHJvcGVydGllcyB8IG51bGwpID0+XG4gICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAuLi5jb250ZW50LFxuICAgICAgICAgICAgICBjb2xsZWN0aW9uOiB2YWx1ZT8uY29sbGVjdGlvbiB8fCAnJyxcbiAgICAgICAgICAgICAgZGVmYXVsdFBhZ2VTaXplOiB2YWx1ZT8uZGVmYXVsdFBhZ2VTaXplIHx8IDUsXG4gICAgICAgICAgICB9KSBhcyBXaWRnZXRDb2xsZWN0aW9uQ29udGVudFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlVmFsaWRFdmVudC5lbWl0KFxuICAgICAgICAgIHRoaXMud2lkZ2V0Rm9ybS52YWxpZCAmJiB0aGlzLmNhcmRGb3JtLnZhbGlkICYmIHRoaXMuX2NvbnRlbnRWYWxpZCgpXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5DYXJkRm9ybVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuY2FyZEZvcm0udmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpLnN1YnNjcmliZShmb3JtVmFsdWUgPT4ge1xuICAgICAgICBsZXQge3ZhbHVlLCAuLi5kaXNwbGF5UHJvcGVydGllc30gPSBmb3JtVmFsdWU7XG4gICAgICAgIGRpc3BsYXlQcm9wZXJ0aWVzID0ge1xuICAgICAgICAgIC4uLmRpc3BsYXlQcm9wZXJ0aWVzLFxuICAgICAgICAgIC4uLighIWRpc3BsYXlQcm9wZXJ0aWVzLnR5cGUgJiYge1xuICAgICAgICAgICAgdHlwZTogKGRpc3BsYXlQcm9wZXJ0aWVzLnR5cGUgYXMgTGlzdEl0ZW0pLmlkLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLighIWZvcm1WYWx1ZS52YWx1ZXMgJiYge1xuICAgICAgICAgICAgdmFsdWVzOiAoZm9ybVZhbHVlLnZhbHVlcyBhcyBBcnJheTx7W2tleTogc3RyaW5nXTogc3RyaW5nfT4pPy5yZWR1Y2UoXG4gICAgICAgICAgICAgIChhY2MsIGN1cnIpID0+ICh7Li4uYWNjLCBbY3Vyci5rZXldOiBjdXJyLnZhbHVlfSksXG4gICAgICAgICAgICAgIHt9XG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRDb250ZW50LnVwZGF0ZShcbiAgICAgICAgICAoY29udGVudDogV2lkZ2V0Q29udGVudFByb3BlcnRpZXMgfCBudWxsKSA9PlxuICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgLi4uY29udGVudCxcbiAgICAgICAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAuLi4oZGlzcGxheVByb3BlcnRpZXMudHlwZSAhPT0gQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5LlRFWFQgJiYge1xuICAgICAgICAgICAgICAgICAgZGlzcGxheVByb3BlcnRpZXMsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSBhcyBhbnlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmNoYW5nZVZhbGlkRXZlbnQuZW1pdChcbiAgICAgICAgICB0aGlzLndpZGdldEZvcm0udmFsaWQgJiYgdGhpcy5jYXJkRm9ybS52YWxpZCAmJiB0aGlzLl9jb250ZW50VmFsaWQoKVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ7dGhlbWU6IHRoZW1lJCB8IGFzeW5jfSBhcyBvYnNcIj5cbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJ3aWRnZXRGb3JtXCIgY2xhc3M9XCJ2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29sbGVjdGlvbl9fZm9ybVwiPlxuICAgIDxjZHMtdGV4dC1sYWJlbCBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIj5cbiAgICAgIDx2LWlucHV0LWxhYmVsXG4gICAgICAgIFt0aXRsZV09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LndpZGdldFRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFt0b29sdGlwXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQud2lkZ2V0VGl0bGVUb29sdGlwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICA+XG4gICAgICA8L3YtaW5wdXQtbGFiZWw+XG5cbiAgICAgIDxpbnB1dFxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiXG4gICAgICAgIGNkc1RleHRcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQud2lkZ2V0VGl0bGVQbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAvPlxuICAgIDwvY2RzLXRleHQtbGFiZWw+XG5cbiAgICA8Y2RzLXRleHQtbGFiZWwgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwib2JzLnRoZW1lXCI+XG4gICAgICA8di1pbnB1dC1sYWJlbFxuICAgICAgICBbdGl0bGVdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5jb2xsZWN0aW9uLmRlZmF1bHRQYWdlU2l6ZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbdG9vbHRpcF09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmNvbGxlY3Rpb24uZGVmYXVsdFBhZ2VTaXplVG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxuICAgICAgPlxuICAgICAgPC92LWlucHV0LWxhYmVsPlxuXG4gICAgICA8aW5wdXRcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGVmYXVsdFBhZ2VTaXplXCJcbiAgICAgICAgY2RzVGV4dFxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICAgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5jb2xsZWN0aW9uLmRlZmF1bHRQYWdlU2l6ZVBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVxuICAgICAgICBcIlxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAvPlxuICAgIDwvY2RzLXRleHQtbGFiZWw+XG5cbiAgICA8Y2RzLXRleHQtbGFiZWwgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwib2JzLnRoZW1lXCI+XG4gICAgICA8di1pbnB1dC1sYWJlbFxuICAgICAgICBbdGl0bGVdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5jb2xsZWN0aW9uLmNvbGxlY3Rpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW3Rvb2x0aXBdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5jb2xsZWN0aW9uLmNvbGxlY3Rpb25Ub29sdGlwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICA+XG4gICAgICA8L3YtaW5wdXQtbGFiZWw+XG5cbiAgICAgIDxpbnB1dFxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb2xsZWN0aW9uXCJcbiAgICAgICAgY2RzVGV4dFxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5jb2xsZWN0aW9uLmNvbGxlY3Rpb25QbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAvPlxuICAgIDwvY2RzLXRleHQtbGFiZWw+XG4gIDwvZm9ybT5cblxuICA8c3BhbiBjbGFzcz1cInZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uX19zdWJ0aXRsZVwiPlxuICAgIHt7ICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuY29sbGVjdGlvbi5jYXJkVGl0bGUnIHwgdHJhbnNsYXRlIH19XG4gIDwvc3Bhbj5cblxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImNhcmRGb3JtXCIgY2xhc3M9XCJ2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29sbGVjdGlvbl9fY2FyZFwiPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwidmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbGxlY3Rpb25fX2NhcmQtdGl0bGVcIj5cbiAgICAgIDxjZHMtdGV4dC1sYWJlbD5cbiAgICAgICAgPHYtaW5wdXQtbGFiZWxcbiAgICAgICAgICBbdGl0bGVdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMudmFsdWUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbdG9vbHRpcF09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmNvbGxlY3Rpb24udmFsdWVUb29sdGlwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgID48L3YtaW5wdXQtbGFiZWw+XG5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cIm9icy50aGVtZVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLnZhbHVlUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIlxuICAgICAgICAvPlxuICAgICAgPC9jZHMtdGV4dC1sYWJlbD5cblxuICAgICAgPGNkcy1kcm9wZG93blxuICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIlxuICAgICAgICBbbGFiZWxdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMudHlwZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbZHJvcFVwXT1cImZhbHNlXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLnR5cGVQbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAoc2VsZWN0ZWQpPVwib25UeXBlU2VsZWN0ZWQoY2FyZEZvcm0sICRldmVudClcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0eXBlXCJcbiAgICAgID5cbiAgICAgICAgPGNkcy1kcm9wZG93bi1saXN0IFtpdGVtc109XCJnZXREaXNwbGF5SXRlbXNTZWxlY3RlZChjYXJkRm9ybSlcIj48L2Nkcy1kcm9wZG93bi1saXN0PlxuICAgICAgPC9jZHMtZHJvcGRvd24+XG4gICAgPC9zZWN0aW9uPlxuXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJ2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29sbGVjdGlvbl9fY2FyZC1vcHRpb25zXCI+XG4gICAgICBAc3dpdGNoIChjYXJkRm9ybS5nZXQoJ3R5cGUnKS52YWx1ZS5pZCkge1xuICAgICAgICBAY2FzZSAoQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5LkNVUlJFTkNZKSB7XG4gICAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgICAgPHYtaW5wdXQtbGFiZWxcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmN1cnJlbmN5Q29kZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbdG9vbHRpcF09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5jdXJyZW5jeUNvZGVUb29sdGlwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3YtaW5wdXQtbGFiZWw+XG5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjZHNUZXh0XG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cIm9icy50aGVtZVwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAgICAgICAnd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5jdXJyZW5jeUNvZGVQbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjdXJyZW5jeUNvZGVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Nkcy10ZXh0LWxhYmVsPlxuXG4gICAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgICAgPHYtaW5wdXQtbGFiZWxcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmRpc3BsYXknIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZGlzcGxheVRvb2x0aXAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvdi1pbnB1dC1sYWJlbD5cblxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNkc1RleHRcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwib2JzLnRoZW1lXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmRpc3BsYXlQbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRpc3BsYXlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Nkcy10ZXh0LWxhYmVsPlxuXG4gICAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgICAgPHYtaW5wdXQtbGFiZWxcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmRpZ2l0c0luZm8nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgdG9vbHRpcD1cInt7XG4gICAgICAgICAgICAgICAgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZGlnaXRzSW5mb1Rvb2x0aXAnXG4gICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZToge21pbkZyYWN0aW9uRGlnaXRzOiAyLCBtYXhGcmFjdGlvbkRpZ2l0czogMn1cbiAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC92LWlucHV0LWxhYmVsPlxuXG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZGlnaXRzSW5mb1BsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGlnaXRzSW5mb1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5EQVRFKSB7XG4gICAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgICAgPHYtaW5wdXQtbGFiZWxcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmZvcm1hdCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbdG9vbHRpcF09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5kYXRlRm9ybWF0VG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgPjwvdi1pbnB1dC1sYWJlbD5cblxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNkc1RleHRcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwib2JzLnRoZW1lXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmZvcm1hdFBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZm9ybWF0XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9jZHMtdGV4dC1sYWJlbD5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5LkRBVEVfVElNRSkge1xuICAgICAgICAgIDxjZHMtdGV4dC1sYWJlbD5cbiAgICAgICAgICAgIDx2LWlucHV0LWxhYmVsXG4gICAgICAgICAgICAgIFt0aXRsZV09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5mb3JtYXQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZGF0ZVRpbWVGb3JtYXRUb29sdGlwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICA+PC92LWlucHV0LWxhYmVsPlxuXG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZm9ybWF0UGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJmb3JtYXRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Nkcy10ZXh0LWxhYmVsPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlIChDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuRU5VTSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29sbGVjdGlvbl9fZW51bVwiIGZvcm1BcnJheU5hbWU9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgIEBmb3IgKHJvd1ZhbHVlIG9mIGNhcmRGb3JtLmdldCgndmFsdWVzJyk/LmNvbnRyb2xzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgPGZvcm1cbiAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cInJvd1ZhbHVlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uX19lbnVtLWZvcm1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgPHYtaW5wdXQtbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmVudW1WYWx1ZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcF09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5lbnVtVmFsdWVUb29sdGlwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8L3YtaW5wdXQtbGFiZWw+XG5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIlxuICAgICAgICAgICAgICAgICAgICBjZHNUZXh0XG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmVudW1WYWx1ZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImtleVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG5cbiAgICAgICAgICAgICAgICA8Y2RzLXRleHQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8di1pbnB1dC1sYWJlbFxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZW51bURpc3BsYXknIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZW51bURpc3BsYXlUb29sdGlwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8L3YtaW5wdXQtbGFiZWw+XG5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICBjZHNUZXh0XG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cIm9icy50aGVtZVwiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5lbnVtRGlzcGxheScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9jZHMtdGV4dC1sYWJlbD5cblxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNkc0J1dHRvbj1cImRhbmdlci0tZ2hvc3RcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiRjb3VudCA9PT0gMVwiXG4gICAgICAgICAgICAgICAgICBbaWNvbk9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1maWVsZC1jb2x1bW5fX2RlbGV0ZS1idXR0b24gZW51bVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGVSb3dDbGljayhjYXJkRm9ybS5nZXQoJ3ZhbHVlcycpLCAkaW5kZXgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwidHJhc2gtY2FuXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjZHNCdXR0b249XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWRkRW51bVZhbHVlQ2xpY2soY2FyZEZvcm0uZ2V0KCd2YWx1ZXMnKSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5hZGRFbnVtJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJhZGRcIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlIChDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuTlVNQkVSKSB7XG4gICAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgICAgPHYtaW5wdXQtbGFiZWxcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmRpZ2l0c0luZm8nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgdG9vbHRpcD1cInt7XG4gICAgICAgICAgICAgICAgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZGlnaXRzSW5mb1Rvb2x0aXAnXG4gICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbkZyYWN0aW9uRGlnaXRzOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4RnJhY3Rpb25EaWdpdHM6IDMsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3YtaW5wdXQtbGFiZWw+XG5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjZHNUZXh0XG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cIm9icy50aGVtZVwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5kaWdpdHNJbmZvJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGlnaXRzSW5mb1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5QRVJDRU5UKSB7XG4gICAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgICAgPHYtaW5wdXQtbGFiZWxcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmRpZ2l0c0luZm8nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgdG9vbHRpcD1cInt7XG4gICAgICAgICAgICAgICAgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZGlnaXRzSW5mb1Rvb2x0aXAnXG4gICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbkZyYWN0aW9uRGlnaXRzOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4RnJhY3Rpb25EaWdpdHM6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3YtaW5wdXQtbGFiZWw+XG5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjZHNUZXh0XG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cIm9icy50aGVtZVwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5kaWdpdHNJbmZvJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGlnaXRzSW5mb1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L3NlY3Rpb24+XG4gIDwvZm9ybT5cblxuICA8c3BhbiBjbGFzcz1cInZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uX19zdWJ0aXRsZVwiPlxuICAgIHt7ICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuY29sbGVjdGlvbi5jYXJkRmllbGRzJyB8IHRyYW5zbGF0ZSB9fVxuICA8L3NwYW4+XG5cbiAgPHZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1maWVsZHMtY29sdW1uXG4gICAgW2NvbHVtbkRhdGFdPVwiY29udGVudCgpPy5maWVsZHNcIlxuICAgIFtmaWVsZFdpZHRoRHJvcGRvd25dPVwiZmllbGRXaWR0aERyb3Bkb3duXCJcbiAgICAoY29sdW1uVXBkYXRlRXZlbnQpPVwib25Db2x1bW5VcGRhdGVFdmVudCgkZXZlbnQpXCJcbiAgPlxuICA8L3ZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1maWVsZHMtY29sdW1uPlxuXG4gIDxuZy10ZW1wbGF0ZSAjZmllbGRXaWR0aERyb3Bkb3duIGxldC1pbmRleD1cImluZGV4XCI+XG4gICAgPGNkcy1kcm9wZG93blxuICAgICAgW2xhYmVsXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuY29sbGVjdGlvbi5maWVsZFdpZHRoJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbZHJvcFVwXT1cImZhbHNlXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmNvbGxlY3Rpb24uZmllbGRXaWR0aFBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAoc2VsZWN0ZWQpPVwib25XaWR0aFNlbGVjdGVkKCRldmVudCwgaW5kZXgpXCJcbiAgICA+XG4gICAgICA8Y2RzLWRyb3Bkb3duLWxpc3QgW2l0ZW1zXT1cImdldFNlbGVjdGVkV2lkdGhJdGVtKGluZGV4KVwiPjwvY2RzLWRyb3Bkb3duLWxpc3Q+XG4gICAgPC9jZHMtZHJvcGRvd24+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
231
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbmZpZ3VyYXRvcnMvY29sbGVjdGlvbi9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbGxlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29uZmlndXJhdG9ycy9jb2xsZWN0aW9uL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29sbGVjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUdYLE1BQU0sRUFDTixNQUFNLEVBQ04saUJBQWlCLEdBRWxCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFLTCxtQkFBbUIsRUFDbkIsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFDLGVBQWUsRUFBbUIsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsWUFBWSxFQUVaLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFFaEIsMEJBQTBCLEVBQzFCLHVCQUF1QixFQUN2QixhQUFhLEdBQ2QsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBSUwsd0JBQXdCLEdBTXpCLE1BQU0s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ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgc2lnbmFsLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgV3JpdGFibGVTaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQXJyYXksXG4gIEZvcm1CdWlsZGVyLFxuICBGb3JtR3JvdXAsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFBhcmFtTWFwfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ0FSQk9OX1RIRU1FLFxuICBDZHNUaGVtZVNlcnZpY2UsXG4gIEN1cnJlbnRDYXJib25UaGVtZSxcbiAgSW5wdXRMYWJlbE1vZHVsZSxcbiAgVmFsdWVQYXRoSXRlbSxcbiAgVmFsdWVQYXRoU2VsZWN0b3JDb21wb25lbnQsXG4gIFZhbHVlUGF0aFNlbGVjdG9yUHJlZml4LFxuICBWYWx1ZVBhdGhUeXBlLFxufSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIENhc2VXaWRnZXRDdXJyZW5jeURpc3BsYXlUeXBlLFxuICBDYXNlV2lkZ2V0RGF0ZURpc3BsYXlUeXBlLFxuICBDYXNlV2lkZ2V0RGF0ZVRpbWVEaXNwbGF5VHlwZSxcbiAgQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5LFxuICBDYXNlV2lkZ2V0RW51bURpc3BsYXlUeXBlLFxuICBDb2xsZWN0aW9uRmllbGRXaWR0aCxcbiAgRmllbGRzQ2FzZVdpZGdldFZhbHVlLFxuICBXaWRnZXRDb2xsZWN0aW9uQ29udGVudCxcbiAgV2lkZ2V0Q29udGVudFByb3BlcnRpZXMsXG59IGZyb20gJ0B2YWx0aW1vL2Rvc3NpZXInO1xuaW1wb3J0IHtcbiAgQnV0dG9uTW9kdWxlLFxuICBEcm9wZG93bk1vZHVsZSxcbiAgSWNvbk1vZHVsZSxcbiAgSW5wdXRNb2R1bGUsXG4gIExpc3RJdGVtLFxufSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIG1hcCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7V2lkZ2V0Q29udGVudENvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7V2lkZ2V0RmllbGRzU2VydmljZSwgV2lkZ2V0V2l6YXJkU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtEb3NzaWVyTWFuYWdlbWVudFdpZGdldEZpZWxkc0NvbHVtbkNvbXBvbmVudH0gZnJvbSAnLi4vZmllbGRzL2NvbHVtbi9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWZpZWxkcy1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7RG9zc2llck1hbmFnZW1lbnRXaWRnZXRQcm9jZXNzU2VsZWN0b3JDb21wb25lbnR9IGZyb20gJy4uL3Byb2Nlc3Mtc2VsZWN0b3IvZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1wcm9jZXNzLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29sbGVjdGlvbi5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBEb3NzaWVyTWFuYWdlbWVudFdpZGdldEZpZWxkc0NvbHVtbkNvbXBvbmVudCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIElucHV0TW9kdWxlLFxuICAgIERyb3Bkb3duTW9kdWxlLFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBJY29uTW9kdWxlLFxuICAgIElucHV0TGFiZWxNb2R1bGUsXG4gICAgRG9zc2llck1hbmFnZW1lbnRXaWRnZXRQcm9jZXNzU2VsZWN0b3JDb21wb25lbnQsXG4gICAgVmFsdWVQYXRoU2VsZWN0b3JDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERvc3NpZXJNYW5hZ2VtZW50V2lkZ2V0Q29sbGVjdGlvbkNvbXBvbmVudFxuICBpbXBsZW1lbnRzIFdpZGdldENvbnRlbnRDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBwdWJsaWMgcmVhZG9ubHkgY2xhc3MgPSAndmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbGxlY3Rpb24nO1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGNoYW5nZVZhbGlkRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHdpZGdldEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICB0aXRsZTogdGhpcy5mYi5jb250cm9sKHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRUaXRsZSgpID8/ICcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICBkZWZhdWx0UGFnZVNpemU6IHRoaXMuZmIuY29udHJvbChcbiAgICAgICh0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0Q29udGVudCgpIGFzIFdpZGdldENvbGxlY3Rpb25Db250ZW50KT8uZGVmYXVsdFBhZ2VTaXplID8/IDUsXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgKSxcbiAgICBjb2xsZWN0aW9uOiB0aGlzLmZiLmNvbnRyb2woXG4gICAgICAodGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQoKSBhcyBXaWRnZXRDb2xsZWN0aW9uQ29udGVudCk/LmNvbGxlY3Rpb24gPz8gJycsXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgKSxcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNhcmRGb3JtID0gdGhpcy5mYi5ncm91cDxhbnk+KHtcbiAgICB2YWx1ZTogdGhpcy5mYi5jb250cm9sKFxuICAgICAgKHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRDb250ZW50KCkgYXMgV2lkZ2V0Q29sbGVjdGlvbkNvbnRlbnQpPy50aXRsZT8udmFsdWUgPz8gJycsXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgKSxcbiAgICB0eXBlOiB0aGlzLmZiLmNvbnRyb2w8TGlzdEl0ZW0+KFxuICAgICAge1xuICAgICAgICBjb250ZW50OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgIGB3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZGlzcGxheVR5cGUuJHsodGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQoKSBhcyBXaWRnZXRDb2xsZWN0aW9uQ29udGVudCk/LnRpdGxlPy5kaXNwbGF5UHJvcGVydGllcz8udHlwZSA/PyBDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuVEVYVH1gXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBpZDpcbiAgICAgICAgICAodGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQoKSBhcyBXaWRnZXRDb2xsZWN0aW9uQ29udGVudCk/LnRpdGxlXG4gICAgICAgICAgICA/LmRpc3BsYXlQcm9wZXJ0aWVzPy50eXBlID8/IENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5URVhULFxuICAgICAgICBzZWxlY3RlZDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgKSxcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHRoZW1lJDogT2JzZXJ2YWJsZTxDQVJCT05fVEhFTUU+ID0gdGhpcy5jZHNUaGVtZVNlcnZpY2UuY3VycmVudFRoZW1lJC5waXBlKFxuICAgIG1hcCgodGhlbWU6IEN1cnJlbnRDYXJib25UaGVtZSkgPT5cbiAgICAgIHRoZW1lID09PSBDdXJyZW50Q2FyYm9uVGhlbWUuRzEwID8gQ0FSQk9OX1RIRU1FLldISVRFIDogQ0FSQk9OX1RIRU1FLkc5MFxuICAgIClcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgVmFsdWVQYXRoU2VsZWN0b3JQcmVmaXggPSBWYWx1ZVBhdGhTZWxlY3RvclByZWZpeDtcbiAgcHVibGljIHJlYWRvbmx5IFZhbHVlUGF0aFR5cGUgPSBWYWx1ZVBhdGhUeXBlO1xuICBwdWJsaWMgcmVhZG9ubHkgQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5ID0gQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5O1xuICBwdWJsaWMgcmVhZG9ubHkgY29udGVudCA9IHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZVxuICAgIC53aWRnZXRDb250ZW50IGFzIFdyaXRhYmxlU2lnbmFsPFdpZGdldENvbGxlY3Rpb25Db250ZW50PjtcbiAgcHVibGljIHJlYWRvbmx5IGRpc3BsYXlUeXBlSXRlbXM6IExpc3RJdGVtW10gPSB0aGlzLndpZGdldEZpZWxkc1NlcnZpY2UuZGlzcGxheVR5cGVJdGVtcztcblxuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWRDb2xsZWN0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VmFsdWVQYXRoSXRlbSB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnREZWZpbml0aW9uTmFtZSQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMucm91dGUucGFyYW1NYXAucGlwZShcbiAgICBtYXAoKHBhcmFtTWFwOiBQYXJhbU1hcCkgPT4gcGFyYW1NYXAuZ2V0KCduYW1lJykgPz8gJycpXG4gICk7XG5cbiAgcHVibGljIFdJRFRIX0lURU1TOiBMaXN0SXRlbVtdID0gW1xuICAgIHtcbiAgICAgIGNvbnRlbnQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCd3aWRnZXRUYWJNYW5hZ2VtZW50LndpZHRoLmZ1bGxXaWR0aCcpLFxuICAgICAgaWQ6ICdmdWxsJyxcbiAgICAgIHNlbGVjdGVkOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgY29udGVudDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3dpZGdldFRhYk1hbmFnZW1lbnQud2lkdGguaGFsZicpLFxuICAgICAgaWQ6ICdoYWxmJyxcbiAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICB9LFxuICBdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbnRlbnRWYWxpZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHNUaGVtZVNlcnZpY2U6IENkc1RoZW1lU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB3aWRnZXRXaXphcmRTZXJ2aWNlOiBXaWRnZXRXaXphcmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgd2lkZ2V0RmllbGRzU2VydmljZTogV2lkZ2V0RmllbGRzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3BlbldpZGdldEZvcm1TdWJzY3JpcHRpb24oKTtcbiAgICB0aGlzLm9wZW5DYXJkRm9ybVN1YnNjcmlwdGlvbigpO1xuICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgb25BZGRFbnVtVmFsdWVDbGljayh2YWx1ZXNGb3JtQXJyYXk6IEZvcm1BcnJheSk6IHZvaWQge1xuICAgIHZhbHVlc0Zvcm1BcnJheS5wdXNoKFxuICAgICAgdGhpcy5mYi5ncm91cCh7XG4gICAgICAgIGtleTogdGhpcy5mYi5jb250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgdmFsdWU6IHRoaXMuZmIuY29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGlzcGxheUl0ZW1zU2VsZWN0ZWQoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogTGlzdEl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMud2lkZ2V0RmllbGRzU2VydmljZS5nZXREaXNwbGF5SXRlbXNTZWxlY3RlZChjb250cm9sKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTZWxlY3RlZFdpZHRoSXRlbShmaWVsZEluZGV4OiBudW1iZXIpOiBMaXN0SXRlbVtdIHtcbiAgICBjb25zdCB3aWRnZXRDb250ZW50OiBXaWRnZXRDb2xsZWN0aW9uQ29udGVudCB8IG51bGwgPVxuICAgICAgdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQoKSBhcyBXaWRnZXRDb2xsZWN0aW9uQ29udGVudDtcblxuICAgIHJldHVybiAhd2lkZ2V0Q29udGVudFxuICAgICAgPyB0aGlzLldJRFRIX0lURU1TXG4gICAgICA6IHRoaXMuV0lEVEhfSVRFTVMubWFwKChpdGVtOiBMaXN0SXRlbSkgPT4gKHtcbiAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgIHNlbGVjdGVkOiB3aWRnZXRDb250ZW50LmZpZWxkcz8uW2ZpZWxkSW5kZXhdPy53aWR0aCA9PT0gaXRlbS5pZCxcbiAgICAgICAgfSkpO1xuICB9XG5cbiAgcHVibGljIG9uQ29sdW1uVXBkYXRlRXZlbnQoZXZlbnQ6IHtkYXRhOiBGaWVsZHNDYXNlV2lkZ2V0VmFsdWVbXTsgdmFsaWQ6IGJvb2xlYW59KTogdm9pZCB7XG4gICAgY29uc3Qge2RhdGEsIHZhbGlkfSA9IGV2ZW50O1xuICAgIHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRDb250ZW50LnVwZGF0ZSgoY29udGVudDogV2lkZ2V0Q29udGVudFByb3BlcnRpZXMgfCBudWxsKSA9PiB7XG4gICAgICBjb25zdCBleGlzdGluZ0ZpZWxkcyA9IChjb250ZW50IGFzIFdpZGdldENvbGxlY3Rpb25Db250ZW50KT8uZmllbGRzO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5jb250ZW50LFxuICAgICAgICBmaWVsZHM6IGRhdGEubWFwKChpdGVtLCBpbmRleCkgPT4gKHtcbiAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgIHdpZHRoOiBleGlzdGluZ0ZpZWxkcz8uW2luZGV4XT8ud2lkdGggPz8gJ2Z1bGwnLFxuICAgICAgICB9KSksXG4gICAgICB9IGFzIFdpZGdldENvbGxlY3Rpb25Db250ZW50O1xuICAgIH0pO1xuICAgIHRoaXMuX2NvbnRlbnRWYWxpZC5zZXQodmFsaWQpO1xuICAgIHRoaXMuY2hhbmdlVmFsaWRFdmVudC5lbWl0KHZhbGlkICYmIHRoaXMud2lkZ2V0Rm9ybS52YWxpZCk7XG4gIH1cblxuICBwdWJsaWMgb25EZWxldGVSb3dDbGljayhmb3JtQXJyYXk6IEZvcm1BcnJheSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghZm9ybUFycmF5KSByZXR1cm47XG5cbiAgICBmb3JtQXJyYXkucmVtb3ZlQXQoaW5kZXgpO1xuICB9XG5cbiAgcHVibGljIG9uVHlwZVNlbGVjdGVkKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBldmVudDoge2l0ZW06IExpc3RJdGVtfSk6IHZvaWQge1xuICAgIHRoaXMud2lkZ2V0RmllbGRzU2VydmljZS5vbkRpc3BsYXlUeXBlU2VsZWN0ZWQoWyd2YWx1ZScsICd0eXBlJ10sIGZvcm1Hcm91cCwgZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIG9uV2lkdGhTZWxlY3RlZChldmVudDoge2l0ZW06IExpc3RJdGVtfSwgZmllbGRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQudXBkYXRlKFxuICAgICAgKGNvbnRlbnQ6IFdpZGdldENvbnRlbnRQcm9wZXJ0aWVzIHwgbnVsbCkgPT5cbiAgICAgICAgKHtcbiAgICAgICAgICAuLi5jb250ZW50LFxuICAgICAgICAgIGZpZWxkczogKGNvbnRlbnQgYXMgV2lkZ2V0Q29sbGVjdGlvbkNvbnRlbnQpPy5maWVsZHMubWFwKFxuICAgICAgICAgICAgKGZpZWxkOiBGaWVsZHNDYXNlV2lkZ2V0VmFsdWUgJiB7d2lkdGg6IENvbGxlY3Rpb25GaWVsZFdpZHRofSwgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgICAgICAgICAgaW5kZXggPT09IGZpZWxkSW5kZXggPyB7Li4uZmllbGQsIHdpZHRoOiBldmVudC5pdGVtLmlkfSA6IGZpZWxkXG4gICAgICAgICAgKSxcbiAgICAgICAgfSkgYXMgV2lkZ2V0Q29sbGVjdGlvbkNvbnRlbnRcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG9uQ29sbGVjdGlvblNlbGVjdGVkKGl0ZW06IFZhbHVlUGF0aEl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkQ29sbGVjdGlvbiQubmV4dChpdGVtKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEZvcm0oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0Q29udGVudCgpKSByZXR1cm47XG5cbiAgICBjb25zdCB0aXRsZSA9ICh0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0Q29udGVudCgpIGFzIFdpZGdldENvbGxlY3Rpb25Db250ZW50KS50aXRsZTtcbiAgICBpZiAoIXRpdGxlKSByZXR1cm47XG4gICAgdGhpcy5vblR5cGVTZWxlY3RlZCh0aGlzLmNhcmRGb3JtLCB7XG4gICAgICBpdGVtOiB7aWQ6IHRpdGxlLmRpc3BsYXlQcm9wZXJ0aWVzPy50eXBlID8/ICcnLCBjb250ZW50OiAnJywgc2VsZWN0ZWQ6IHRydWV9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5jYXJkRm9ybS5wYXRjaFZhbHVlKFxuICAgICAge1xuICAgICAgICAuLi4oW1xuICAgICAgICAgIENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5OVU1CRVIsXG4gICAgICAgICAgQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5LlBFUkNFTlQsXG4gICAgICAgICAgQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5LkNVUlJFTkNZLFxuICAgICAgICBdLmluY2x1ZGVzKHRpdGxlLmRpc3BsYXlQcm9wZXJ0aWVzPy50eXBlIGFzIENhc2VXaWRnZXREaXNwbGF5VHlwZUtleSkgJiYge1xuICAgICAgICAgIGRpZ2l0c0luZm86ICh0aXRsZS5kaXNwbGF5UHJvcGVydGllcyBhcyBDYXNlV2lkZ2V0Q3VycmVuY3lEaXNwbGF5VHlwZSkuZGlnaXRzSW5mbyxcbiAgICAgICAgfSksXG4gICAgICAgIC4uLih0aXRsZS5kaXNwbGF5UHJvcGVydGllcz8udHlwZSA9PT0gQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5LkNVUlJFTkNZICYmIHtcbiAgICAgICAgICBjdXJyZW5jeUNvZGU6ICh0aXRsZS5kaXNwbGF5UHJvcGVydGllcyBhcyBDYXNlV2lkZ2V0Q3VycmVuY3lEaXNwbGF5VHlwZSkuY3VycmVuY3lDb2RlLFxuICAgICAgICAgIGRpc3BsYXk6ICh0aXRsZS5kaXNwbGF5UHJvcGVydGllcyBhcyBDYXNlV2lkZ2V0Q3VycmVuY3lEaXNwbGF5VHlwZSkuZGlzcGxheSxcbiAgICAgICAgfSksXG4gICAgICAgIC4uLih0aXRsZS5kaXNwbGF5UHJvcGVydGllcz8udHlwZSA9PT0gQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5LkRBVEUgJiYge1xuICAgICAgICAgIGZvcm1hdDogKHRpdGxlLmRpc3BsYXlQcm9wZXJ0aWVzIGFzIENhc2VXaWRnZXREYXRlRGlzcGxheVR5cGUpLmZvcm1hdCxcbiAgICAgICAgfSksXG4gICAgICAgIC4uLih0aXRsZS5kaXNwbGF5UHJvcGVydGllcz8udHlwZSA9PT0gQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5LkRBVEVfVElNRSAmJiB7XG4gICAgICAgICAgZm9ybWF0OiAodGl0bGUuZGlzcGxheVByb3BlcnRpZXMgYXMgQ2FzZVdpZGdldERhdGVUaW1lRGlzcGxheVR5cGUpLmZvcm1hdCxcbiAgICAgICAgfSksXG4gICAgICAgIC4uLih0aXRsZS5kaXNwbGF5UHJvcGVydGllcz8udHlwZSA9PT0gQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5LkVOVU0gJiYge1xuICAgICAgICAgIHZhbHVlczogT2JqZWN0LmVudHJpZXMoKHRpdGxlLmRpc3BsYXlQcm9wZXJ0aWVzIGFzIENhc2VXaWRnZXRFbnVtRGlzcGxheVR5cGUpLnZhbHVlcykubWFwKFxuICAgICAgICAgICAgKFtrZXksIHZhbHVlXSkgPT4gKHtrZXksIHZhbHVlfSlcbiAgICAgICAgICApLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgICB7ZW1pdEV2ZW50OiBmYWxzZX1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuV2lkZ2V0Rm9ybVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMud2lkZ2V0Rm9ybS52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoNTAwKSkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldFRpdGxlLnNldCh2YWx1ZT8udGl0bGUgPz8gJycpO1xuXG4gICAgICAgIHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRDb250ZW50LnVwZGF0ZShcbiAgICAgICAgICAoY29udGVudDogV2lkZ2V0Q29udGVudFByb3BlcnRpZXMgfCBudWxsKSA9PlxuICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgLi4uY29udGVudCxcbiAgICAgICAgICAgICAgY29sbGVjdGlvbjogdmFsdWU/LmNvbGxlY3Rpb24gfHwgJycsXG4gICAgICAgICAgICAgIGRlZmF1bHRQYWdlU2l6ZTogdmFsdWU/LmRlZmF1bHRQYWdlU2l6ZSB8fCA1LFxuICAgICAgICAgICAgfSkgYXMgV2lkZ2V0Q29sbGVjdGlvbkNvbnRlbnRcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmNoYW5nZVZhbGlkRXZlbnQuZW1pdChcbiAgICAgICAgICB0aGlzLndpZGdldEZvcm0udmFsaWQgJiYgdGhpcy5jYXJkRm9ybS52YWxpZCAmJiB0aGlzLl9jb250ZW50VmFsaWQoKVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuQ2FyZEZvcm1TdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLmNhcmRGb3JtLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSg1MDApKS5zdWJzY3JpYmUoZm9ybVZhbHVlID0+IHtcbiAgICAgICAgbGV0IHt2YWx1ZSwgLi4uZGlzcGxheVByb3BlcnRpZXN9ID0gZm9ybVZhbHVlO1xuICAgICAgICBkaXNwbGF5UHJvcGVydGllcyA9IHtcbiAgICAgICAgICAuLi5kaXNwbGF5UHJvcGVydGllcyxcbiAgICAgICAgICAuLi4oISFkaXNwbGF5UHJvcGVydGllcy50eXBlICYmIHtcbiAgICAgICAgICAgIHR5cGU6IChkaXNwbGF5UHJvcGVydGllcy50eXBlIGFzIExpc3RJdGVtKS5pZCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oISFmb3JtVmFsdWUudmFsdWVzICYmIHtcbiAgICAgICAgICAgIHZhbHVlczogKGZvcm1WYWx1ZS52YWx1ZXMgYXMgQXJyYXk8e1trZXk6IHN0cmluZ106IHN0cmluZ30+KT8ucmVkdWNlKFxuICAgICAgICAgICAgICAoYWNjLCBjdXJyKSA9PiAoey4uLmFjYywgW2N1cnIua2V5XTogY3Vyci52YWx1ZX0pLFxuICAgICAgICAgICAgICB7fVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0Q29udGVudC51cGRhdGUoXG4gICAgICAgICAgKGNvbnRlbnQ6IFdpZGdldENvbnRlbnRQcm9wZXJ0aWVzIHwgbnVsbCkgPT5cbiAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgIC4uLmNvbnRlbnQsXG4gICAgICAgICAgICAgIHRpdGxlOiB7XG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgLi4uKGRpc3BsYXlQcm9wZXJ0aWVzLnR5cGUgIT09IENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5URVhUICYmIHtcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXlQcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSkgYXMgYW55XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VWYWxpZEV2ZW50LmVtaXQoXG4gICAgICAgICAgdGhpcy53aWRnZXRGb3JtLnZhbGlkICYmIHRoaXMuY2FyZEZvcm0udmFsaWQgJiYgdGhpcy5fY29udGVudFZhbGlkKClcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwie3RoZW1lOiB0aGVtZSQgfCBhc3luY30gYXMgb2JzXCI+XG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwid2lkZ2V0Rm9ybVwiIGNsYXNzPVwidmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbGxlY3Rpb25fX2Zvcm1cIj5cbiAgICA8Y2RzLXRleHQtbGFiZWwgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwib2JzLnRoZW1lXCI+XG4gICAgICA8di1pbnB1dC1sYWJlbFxuICAgICAgICBbdGl0bGVdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC53aWRnZXRUaXRsZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbdG9vbHRpcF09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LndpZGdldFRpdGxlVG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxuICAgICAgPlxuICAgICAgPC92LWlucHV0LWxhYmVsPlxuXG4gICAgICA8aW5wdXRcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidGl0bGVcIlxuICAgICAgICBjZHNUZXh0XG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LndpZGdldFRpdGxlUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgLz5cbiAgICA8L2Nkcy10ZXh0LWxhYmVsPlxuXG4gICAgPGNkcy10ZXh0LWxhYmVsIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cIm9icy50aGVtZVwiPlxuICAgICAgPHYtaW5wdXQtbGFiZWxcbiAgICAgICAgW3RpdGxlXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuY29sbGVjdGlvbi5kZWZhdWx0UGFnZVNpemUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW3Rvb2x0aXBdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5jb2xsZWN0aW9uLmRlZmF1bHRQYWdlU2l6ZVRvb2x0aXAnIHwgdHJhbnNsYXRlXCJcbiAgICAgID5cbiAgICAgIDwvdi1pbnB1dC1sYWJlbD5cblxuICAgICAgPGlucHV0XG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlZmF1bHRQYWdlU2l6ZVwiXG4gICAgICAgIGNkc1RleHRcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuY29sbGVjdGlvbi5kZWZhdWx0UGFnZVNpemVQbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcbiAgICAgICAgXCJcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgLz5cbiAgICA8L2Nkcy10ZXh0LWxhYmVsPlxuXG4gICAgPGRpdiBjbGFzcz1cInZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uX19wYXRoLXNlbGVjdG9yXCI+XG4gICAgICA8di1pbnB1dC1sYWJlbFxuICAgICAgICBbdGl0bGVdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5jb2xsZWN0aW9uLmNvbGxlY3Rpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW3Rvb2x0aXBdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5jb2xsZWN0aW9uLmNvbGxlY3Rpb25Ub29sdGlwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICA+XG4gICAgICA8L3YtaW5wdXQtbGFiZWw+XG5cbiAgICAgIDx2YWx0aW1vLXZhbHVlLXBhdGgtc2VsZWN0b3JcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY29sbGVjdGlvblwiXG4gICAgICAgIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cIm9icy50aGVtZVwiXG4gICAgICAgIFtkb2N1bWVudERlZmluaXRpb25OYW1lXT1cImRvY3VtZW50RGVmaW5pdGlvbk5hbWUkIHwgYXN5bmNcIlxuICAgICAgICBbcHJlZml4ZXNdPVwiW1ZhbHVlUGF0aFNlbGVjdG9yUHJlZml4LkRPQywgVmFsdWVQYXRoU2VsZWN0b3JQcmVmaXguQ0FTRV1cIlxuICAgICAgICBbdHlwZV09XCJWYWx1ZVBhdGhUeXBlLkNPTExFQ1RJT05cIlxuICAgICAgICAoY29sbGVjdGlvblNlbGVjdGVkKT1cIm9uQ29sbGVjdGlvblNlbGVjdGVkKCRldmVudClcIlxuICAgICAgPjwvdmFsdGltby12YWx1ZS1wYXRoLXNlbGVjdG9yPlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG5cbiAgPHZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1wcm9jZXNzLXNlbGVjdG9yXG4gICAgW2RvY3VtZW50RGVmaW5pdGlvbk5hbWVdPVwiZG9jdW1lbnREZWZpbml0aW9uTmFtZSQgfCBhc3luY1wiXG4gID48L3ZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1wcm9jZXNzLXNlbGVjdG9yPlxuXG4gIDxzcGFuIGNsYXNzPVwidmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbGxlY3Rpb25fX3N1YnRpdGxlXCI+XG4gICAge3sgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5jb2xsZWN0aW9uLmNhcmRUaXRsZScgfCB0cmFuc2xhdGUgfX1cbiAgPC9zcGFuPlxuXG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiY2FyZEZvcm1cIiBjbGFzcz1cInZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uX19jYXJkXCI+XG4gICAgPHNlY3Rpb24gY2xhc3M9XCJ2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29sbGVjdGlvbl9fY2FyZC10aXRsZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uX19wYXRoLXNlbGVjdG9yXCI+XG4gICAgICAgIDx2LWlucHV0LWxhYmVsXG4gICAgICAgICAgW3RpdGxlXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLnZhbHVlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5jb2xsZWN0aW9uLnZhbHVlVG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICA+XG4gICAgICAgIDwvdi1pbnB1dC1sYWJlbD5cblxuICAgICAgICA8dmFsdGltby12YWx1ZS1wYXRoLXNlbGVjdG9yXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIlxuICAgICAgICAgIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cIm9icy50aGVtZVwiXG4gICAgICAgICAgW2RvY3VtZW50RGVmaW5pdGlvbk5hbWVdPVwiZG9jdW1lbnREZWZpbml0aW9uTmFtZVwiXG4gICAgICAgICAgW3ByZWZpeGVzXT1cIltWYWx1ZVBhdGhTZWxlY3RvclByZWZpeC5ET0MsIFZhbHVlUGF0aFNlbGVjdG9yUHJlZml4LkNBU0VdXCJcbiAgICAgICAgICBbcGFyZW50SXRlbV09XCJzZWxlY3RlZENvbGxlY3Rpb24kIHwgYXN5bmNcIlxuICAgICAgICA+PC92YWx0aW1vLXZhbHVlLXBhdGgtc2VsZWN0b3I+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGNkcy1kcm9wZG93blxuICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIlxuICAgICAgICBbbGFiZWxdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMudHlwZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbZHJvcFVwXT1cImZhbHNlXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLnR5cGVQbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAoc2VsZWN0ZWQpPVwib25UeXBlU2VsZWN0ZWQoY2FyZEZvcm0sICRldmVudClcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0eXBlXCJcbiAgICAgID5cbiAgICAgICAgPGNkcy1kcm9wZG93bi1saXN0IFtpdGVtc109XCJnZXREaXNwbGF5SXRlbXNTZWxlY3RlZChjYXJkRm9ybSlcIj48L2Nkcy1kcm9wZG93bi1saXN0PlxuICAgICAgPC9jZHMtZHJvcGRvd24+XG4gICAgPC9zZWN0aW9uPlxuXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJ2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29sbGVjdGlvbl9fY2FyZC1vcHRpb25zXCI+XG4gICAgICBAc3dpdGNoIChjYXJkRm9ybS5nZXQoJ3R5cGUnKS52YWx1ZS5pZCkge1xuICAgICAgICBAY2FzZSAoQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5LkNVUlJFTkNZKSB7XG4gICAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgICAgPHYtaW5wdXQtbGFiZWxcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmN1cnJlbmN5Q29kZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbdG9vbHRpcF09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5jdXJyZW5jeUNvZGVUb29sdGlwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3YtaW5wdXQtbGFiZWw+XG5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjZHNUZXh0XG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cIm9icy50aGVtZVwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAgICAgICAnd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5jdXJyZW5jeUNvZGVQbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjdXJyZW5jeUNvZGVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Nkcy10ZXh0LWxhYmVsPlxuXG4gICAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgICAgPHYtaW5wdXQtbGFiZWxcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmRpc3BsYXknIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZGlzcGxheVRvb2x0aXAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvdi1pbnB1dC1sYWJlbD5cblxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNkc1RleHRcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwib2JzLnRoZW1lXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmRpc3BsYXlQbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRpc3BsYXlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Nkcy10ZXh0LWxhYmVsPlxuXG4gICAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgICAgPHYtaW5wdXQtbGFiZWxcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmRpZ2l0c0luZm8nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgdG9vbHRpcD1cInt7XG4gICAgICAgICAgICAgICAgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZGlnaXRzSW5mb1Rvb2x0aXAnXG4gICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZToge21pbkZyYWN0aW9uRGlnaXRzOiAyLCBtYXhGcmFjdGlvbkRpZ2l0czogMn1cbiAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC92LWlucHV0LWxhYmVsPlxuXG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZGlnaXRzSW5mb1BsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGlnaXRzSW5mb1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5EQVRFKSB7XG4gICAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgICAgPHYtaW5wdXQtbGFiZWxcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmZvcm1hdCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbdG9vbHRpcF09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5kYXRlRm9ybWF0VG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgPjwvdi1pbnB1dC1sYWJlbD5cblxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNkc1RleHRcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwib2JzLnRoZW1lXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmZvcm1hdFBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZm9ybWF0XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9jZHMtdGV4dC1sYWJlbD5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5LkRBVEVfVElNRSkge1xuICAgICAgICAgIDxjZHMtdGV4dC1sYWJlbD5cbiAgICAgICAgICAgIDx2LWlucHV0LWxhYmVsXG4gICAgICAgICAgICAgIFt0aXRsZV09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5mb3JtYXQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZGF0ZVRpbWVGb3JtYXRUb29sdGlwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICA+PC92LWlucHV0LWxhYmVsPlxuXG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZm9ybWF0UGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJmb3JtYXRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Nkcy10ZXh0LWxhYmVsPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlIChDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuRU5VTSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29sbGVjdGlvbl9fZW51bVwiIGZvcm1BcnJheU5hbWU9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgIEBmb3IgKHJvd1ZhbHVlIG9mIGNhcmRGb3JtLmdldCgndmFsdWVzJyk/LmNvbnRyb2xzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgPGZvcm1cbiAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cInJvd1ZhbHVlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uX19lbnVtLWZvcm1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgPHYtaW5wdXQtbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmVudW1WYWx1ZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcF09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5lbnVtVmFsdWVUb29sdGlwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8L3YtaW5wdXQtbGFiZWw+XG5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIlxuICAgICAgICAgICAgICAgICAgICBjZHNUZXh0XG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmVudW1WYWx1ZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImtleVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG5cbiAgICAgICAgICAgICAgICA8Y2RzLXRleHQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8di1pbnB1dC1sYWJlbFxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZW51bURpc3BsYXknIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZW51bURpc3BsYXlUb29sdGlwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8L3YtaW5wdXQtbGFiZWw+XG5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICBjZHNUZXh0XG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cIm9icy50aGVtZVwiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5lbnVtRGlzcGxheScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9jZHMtdGV4dC1sYWJlbD5cblxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNkc0J1dHRvbj1cImRhbmdlci0tZ2hvc3RcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiRjb3VudCA9PT0gMVwiXG4gICAgICAgICAgICAgICAgICBbaWNvbk9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1maWVsZC1jb2x1bW5fX2RlbGV0ZS1idXR0b24gZW51bVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGVSb3dDbGljayhjYXJkRm9ybS5nZXQoJ3ZhbHVlcycpLCAkaW5kZXgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwidHJhc2gtY2FuXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjZHNCdXR0b249XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWRkRW51bVZhbHVlQ2xpY2soY2FyZEZvcm0uZ2V0KCd2YWx1ZXMnKSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5hZGRFbnVtJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJhZGRcIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlIChDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuTlVNQkVSKSB7XG4gICAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgICAgPHYtaW5wdXQtbGFiZWxcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmRpZ2l0c0luZm8nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgdG9vbHRpcD1cInt7XG4gICAgICAgICAgICAgICAgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZGlnaXRzSW5mb1Rvb2x0aXAnXG4gICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbkZyYWN0aW9uRGlnaXRzOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4RnJhY3Rpb25EaWdpdHM6IDMsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3YtaW5wdXQtbGFiZWw+XG5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjZHNUZXh0XG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cIm9icy50aGVtZVwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5kaWdpdHNJbmZvJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGlnaXRzSW5mb1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5QRVJDRU5UKSB7XG4gICAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgICAgPHYtaW5wdXQtbGFiZWxcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmRpZ2l0c0luZm8nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgdG9vbHRpcD1cInt7XG4gICAgICAgICAgICAgICAgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZGlnaXRzSW5mb1Rvb2x0aXAnXG4gICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbkZyYWN0aW9uRGlnaXRzOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4RnJhY3Rpb25EaWdpdHM6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3YtaW5wdXQtbGFiZWw+XG5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjZHNUZXh0XG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cIm9icy50aGVtZVwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5kaWdpdHNJbmZvJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGlnaXRzSW5mb1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L3NlY3Rpb24+XG4gIDwvZm9ybT5cblxuICA8c3BhbiBjbGFzcz1cInZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uX19zdWJ0aXRsZVwiPlxuICAgIHt7ICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuY29sbGVjdGlvbi5jYXJkRmllbGRzJyB8IHRyYW5zbGF0ZSB9fVxuICA8L3NwYW4+XG5cbiAgPHZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1maWVsZHMtY29sdW1uXG4gICAgW2NvbHVtbkRhdGFdPVwiY29udGVudCgpPy5maWVsZHNcIlxuICAgIFtmaWVsZFdpZHRoRHJvcGRvd25dPVwiZmllbGRXaWR0aERyb3Bkb3duXCJcbiAgICBbZG9jdW1lbnREZWZpbml0aW9uTmFtZV09XCJkb2N1bWVudERlZmluaXRpb25OYW1lJCB8IGFzeW5jXCJcbiAgICBbc2VsZWN0ZWRDb2xsZWN0aW9uXT1cInNlbGVjdGVkQ29sbGVjdGlvbiQgfCBhc3luY1wiXG4gICAgW3Nob3dIaWRlV2hlbkVtcHR5Q2hlY2tib3hdPVwidHJ1ZVwiXG4gICAgKGNvbHVtblVwZGF0ZUV2ZW50KT1cIm9uQ29sdW1uVXBkYXRlRXZlbnQoJGV2ZW50KVwiXG4gID5cbiAgPC92YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtZmllbGRzLWNvbHVtbj5cblxuICA8bmctdGVtcGxhdGUgI2ZpZWxkV2lkdGhEcm9wZG93biBsZXQtaW5kZXg9XCJpbmRleFwiPlxuICAgIDxjZHMtZHJvcGRvd25cbiAgICAgIFtsYWJlbF09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmNvbGxlY3Rpb24uZmllbGRXaWR0aCcgfCB0cmFuc2xhdGVcIlxuICAgICAgW2Ryb3BVcF09XCJmYWxzZVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5jb2xsZWN0aW9uLmZpZWxkV2lkdGhQbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgKHNlbGVjdGVkKT1cIm9uV2lkdGhTZWxlY3RlZCgkZXZlbnQsIGluZGV4KVwiXG4gICAgPlxuICAgICAgPGNkcy1kcm9wZG93bi1saXN0IFtpdGVtc109XCJnZXRTZWxlY3RlZFdpZHRoSXRlbShpbmRleClcIj48L2Nkcy1kcm9wZG93bi1saXN0PlxuICAgIDwvY2RzLWRyb3Bkb3duPlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|