@provoly/dashboard 1.3.9 → 1.3.10
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/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.d.ts +2 -2
- package/admin/i18n/en.translations.d.ts +1 -1
- package/admin/i18n/fr.translations.d.ts +1 -1
- package/components/data-format/data-format.pipe.d.ts +1 -1
- package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +9 -9
- package/esm2022/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.mjs +3 -3
- package/esm2022/admin/i18n/en.translations.mjs +2 -2
- package/esm2022/admin/i18n/fr.translations.mjs +2 -2
- package/esm2022/components/data-format/data-format.pipe.mjs +4 -4
- package/esm2022/components/paginator/paginator.component.mjs +4 -4
- package/esm2022/import/components/list/import-list.component.mjs +13 -5
- package/esm2022/import/style/css.component.mjs +2 -2
- package/esm2022/lib/core/store/field/field.interface.mjs +1 -1
- package/esm2022/lib/core/store/field/field.service.mjs +2 -2
- package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +11 -7
- package/fesm2022/provoly-dashboard-admin.mjs +12 -12
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-data-format.mjs +3 -3
- package/fesm2022/provoly-dashboard-components-data-format.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-paginator.mjs +3 -3
- package/fesm2022/provoly-dashboard-components-paginator.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-import.mjs +14 -6
- package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +10 -6
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +1 -1
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/import/components/list/import-list.component.d.ts +14 -4
- package/import/style/_o-import.scss +6 -0
- package/lib/core/store/field/field.interface.d.ts +1 -1
- package/package.json +37 -37
- package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +1 -1
|
@@ -16,7 +16,7 @@ interface FieldForm {
|
|
|
16
16
|
formatOptions?: FormGroup<FormatOptionsForm>;
|
|
17
17
|
}
|
|
18
18
|
interface FormatOptionsForm {
|
|
19
|
-
|
|
19
|
+
localeFormat?: FormControl<boolean | null>;
|
|
20
20
|
unit?: FormControl<string | null>;
|
|
21
21
|
decimalPrecision?: FormControl<number | null>;
|
|
22
22
|
dateFormat?: FormControl<string | null>;
|
|
@@ -48,7 +48,7 @@ export declare class AdminFieldsFormComponent extends SubscriptionnerDirective i
|
|
|
48
48
|
crs: string | undefined;
|
|
49
49
|
unit: string | undefined;
|
|
50
50
|
decimalPrecision: number | undefined;
|
|
51
|
-
|
|
51
|
+
localeFormat: boolean | undefined;
|
|
52
52
|
format: string | undefined;
|
|
53
53
|
};
|
|
54
54
|
submit(): void;
|
|
@@ -6,7 +6,7 @@ export declare const LOCALE: {
|
|
|
6
6
|
};
|
|
7
7
|
export declare class DataFormatPipe implements PipeTransform {
|
|
8
8
|
constructor();
|
|
9
|
-
transform(value: any, {
|
|
9
|
+
transform(value: any, { localeFormat, unit, decimalPrecision, format }?: Partial<FormatOptions> | undefined): any;
|
|
10
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<DataFormatPipe, never>;
|
|
11
11
|
static ɵpipe: i0.ɵɵPipeDeclaration<DataFormatPipe, "dataFormat", false>;
|
|
12
12
|
}
|
package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs
CHANGED
|
@@ -106,7 +106,7 @@ export class AdminFieldsFormComponent extends SubscriptionnerDirective {
|
|
|
106
106
|
crs: this.crs?.value,
|
|
107
107
|
unit: this.formatOptions?.value.unit ?? undefined,
|
|
108
108
|
decimalPrecision: this.formatOptions?.value.decimalPrecision ?? undefined,
|
|
109
|
-
|
|
109
|
+
localeFormat: this.formatOptions?.value.localeFormat ?? undefined,
|
|
110
110
|
format: this.formatOptions?.value.dateFormat ?? undefined
|
|
111
111
|
};
|
|
112
112
|
}
|
|
@@ -134,19 +134,19 @@ export class AdminFieldsFormComponent extends SubscriptionnerDirective {
|
|
|
134
134
|
switch (type) {
|
|
135
135
|
case FieldType.INTEGER:
|
|
136
136
|
case FieldType.LONG:
|
|
137
|
-
this.formatOptions?.addControl('
|
|
137
|
+
this.formatOptions?.addControl('localeFormat', new FormControl(true));
|
|
138
138
|
this.formatOptions?.setControl('unit', new FormControl(null));
|
|
139
139
|
this.formatOptions?.removeControl('decimalPrecision');
|
|
140
140
|
this.formatOptions?.removeControl('dateFormat');
|
|
141
141
|
break;
|
|
142
142
|
case FieldType.DECIMAL:
|
|
143
|
-
this.formatOptions?.addControl('
|
|
143
|
+
this.formatOptions?.addControl('localeFormat', new FormControl(true));
|
|
144
144
|
this.formatOptions?.setControl('unit', new FormControl(null));
|
|
145
145
|
this.formatOptions?.setControl('decimalPrecision', new FormControl(2));
|
|
146
146
|
this.formatOptions?.removeControl('dateFormat');
|
|
147
147
|
break;
|
|
148
148
|
case FieldType.INSTANT:
|
|
149
|
-
this.formatOptions?.removeControl('
|
|
149
|
+
this.formatOptions?.removeControl('localeFormat');
|
|
150
150
|
this.formatOptions?.removeControl('unit');
|
|
151
151
|
this.formatOptions?.removeControl('decimalPrecision');
|
|
152
152
|
this.formatOptions?.setControl('dateFormat', new FormControl(null));
|
|
@@ -161,13 +161,13 @@ export class AdminFieldsFormComponent extends SubscriptionnerDirective {
|
|
|
161
161
|
case FieldType.INTEGER:
|
|
162
162
|
case FieldType.LONG:
|
|
163
163
|
this.formatOptions?.patchValue({
|
|
164
|
-
|
|
164
|
+
localeFormat: this.currentField?.localeFormat,
|
|
165
165
|
unit: this.currentField?.unit
|
|
166
166
|
});
|
|
167
167
|
break;
|
|
168
168
|
case FieldType.DECIMAL:
|
|
169
169
|
this.formatOptions?.patchValue({
|
|
170
|
-
|
|
170
|
+
localeFormat: this.currentField?.localeFormat,
|
|
171
171
|
unit: this.currentField?.unit,
|
|
172
172
|
decimalPrecision: this.currentField?.decimalPrecision
|
|
173
173
|
});
|
|
@@ -183,12 +183,12 @@ export class AdminFieldsFormComponent extends SubscriptionnerDirective {
|
|
|
183
183
|
return this.currentField ? this.goBackPathEdit : this.goBackPath;
|
|
184
184
|
}
|
|
185
185
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AdminFieldsFormComponent, deps: [{ token: i1.Store }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i3.PryI18nService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
186
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: AdminFieldsFormComponent, selector: "pry-admin-fields-form", inputs: { currentField: "currentField" }, usesInheritance: true, ngImport: i0, template: "<div>\n <form class=\"o-form\" [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <div class=\"m-form-label-field -width-sm\">\n <label id=\"name-label\" for=\"field_name\" class=\"a-label\">\n {{ '@pry.admin.fields.name' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"field_name\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"name\"\n [attr.aria-labelledby]=\"name?.dirty && name?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"name?.dirty && name?.invalid\"\n />\n @if (name?.dirty && name?.invalid) {\n <label id=\"name-error\" for=\"field_name\" class=\"a-label a-label--help -error\">\n @if (name?.hasError('same-name')) {\n <span>{{ '@pry.admin.exists' | i18n }}</span>\n }\n @if (name?.hasError('required')) {\n <span>{{ '@pry.admin.required' | i18n }}</span>\n }\n @if (name?.hasError('minlength')) {\n <span>{{ '@pry.admin.minLength' | i18n: { len: 3 } }}</span>\n }\n @if (name?.hasError('maxlength')) {\n <span>{{ '@pry.admin.maxLength' | i18n: { len: 100 } }}</span>\n }\n @if (name?.hasError('whitespace') && !name?.hasError('minlength')) {\n <span>{{ '@pry.admin.noWhitespace' | i18n }}</span>\n }\n </label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"field_type\">\n {{ '@pry.admin.fields.type' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <div class=\"u-display-flex\">\n <pry-select\n id=\"field_type\"\n class=\"u-flex-grow-1\"\n formControlName=\"type\"\n [items]=\"fieldTypes\"\n [i18nPrefix]=\"FIELD_I18N.label\"\n [isForm]=\"true\"\n ></pry-select>\n <div\n class=\"m-info-icon a-tooltip -tooltip-width-lg u-self-center u-flex-shrink-0\"\n [attr.data-tooltip]=\"FIELD_I18N.information + this.type?.value | i18n\"\n data-tooltip-position=\"right\"\n >\n <span>i</span>\n </div>\n </div>\n </div>\n\n @if (isGeographicType) {\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"crs\">\n {{ '@pry.admin.fields.crs' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <div class=\"u-display-flex\">\n <pry-select\n class=\"-width-sm\"\n formControlName=\"crs\"\n [items]=\"CRS_OPTIONS\"\n bindValue=\"code\"\n bindLabel=\"label\"\n [isForm]=\"true\"\n id=\"crs\"\n ></pry-select>\n </div>\n @if (crs?.dirty && crs?.invalid) {\n <label id=\"crs-error\" for=\"crs\" class=\"a-label a-label--help -error\">\n @if (crs?.hasError('required')) {\n <span>{{ '@pry.admin.required' | i18n }}</span>\n }\n </label>\n }\n </div>\n }\n\n @if (formatOptions) {\n <div formGroupName=\"formatOptions\">\n <h3 class=\"a-h3\">{{ '@pry.admin.fields.formatOptions.title' | i18n }}</h3>\n @if (type?.value === FieldType.INTEGER || type?.value === FieldType.LONG || type?.value === FieldType.DECIMAL) {\n <ng-container *ngTemplateOutlet=\"numberFormatOptions\"></ng-container>\n } @else if (type?.value === FieldType.INSTANT) {\n <ng-container *ngTemplateOutlet=\"dateFormatOptions\"></ng-container>\n }\n\n <ng-template #numberFormatOptions>\n @if (type?.value === FieldType.DECIMAL) {\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"field_format_comma\">{{\n '@pry.admin.fields.formatOptions.decimalPrecision' | i18n\n }}</label>\n <input formControlName=\"decimalPrecision\" id=\"field_format_comma\" type=\"number\" class=\"a-form-field\" />\n </div>\n }\n <div class=\"m-form-label-field -width-sm\">\n <pry-checkbox\n formControlName=\"
|
|
186
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: AdminFieldsFormComponent, selector: "pry-admin-fields-form", inputs: { currentField: "currentField" }, usesInheritance: true, ngImport: i0, template: "<div>\n <form class=\"o-form\" [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <div class=\"m-form-label-field -width-sm\">\n <label id=\"name-label\" for=\"field_name\" class=\"a-label\">\n {{ '@pry.admin.fields.name' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"field_name\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"name\"\n [attr.aria-labelledby]=\"name?.dirty && name?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"name?.dirty && name?.invalid\"\n />\n @if (name?.dirty && name?.invalid) {\n <label id=\"name-error\" for=\"field_name\" class=\"a-label a-label--help -error\">\n @if (name?.hasError('same-name')) {\n <span>{{ '@pry.admin.exists' | i18n }}</span>\n }\n @if (name?.hasError('required')) {\n <span>{{ '@pry.admin.required' | i18n }}</span>\n }\n @if (name?.hasError('minlength')) {\n <span>{{ '@pry.admin.minLength' | i18n: { len: 3 } }}</span>\n }\n @if (name?.hasError('maxlength')) {\n <span>{{ '@pry.admin.maxLength' | i18n: { len: 100 } }}</span>\n }\n @if (name?.hasError('whitespace') && !name?.hasError('minlength')) {\n <span>{{ '@pry.admin.noWhitespace' | i18n }}</span>\n }\n </label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"field_type\">\n {{ '@pry.admin.fields.type' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <div class=\"u-display-flex\">\n <pry-select\n id=\"field_type\"\n class=\"u-flex-grow-1\"\n formControlName=\"type\"\n [items]=\"fieldTypes\"\n [i18nPrefix]=\"FIELD_I18N.label\"\n [isForm]=\"true\"\n ></pry-select>\n <div\n class=\"m-info-icon a-tooltip -tooltip-width-lg u-self-center u-flex-shrink-0\"\n [attr.data-tooltip]=\"FIELD_I18N.information + this.type?.value | i18n\"\n data-tooltip-position=\"right\"\n >\n <span>i</span>\n </div>\n </div>\n </div>\n\n @if (isGeographicType) {\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"crs\">\n {{ '@pry.admin.fields.crs' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <div class=\"u-display-flex\">\n <pry-select\n class=\"-width-sm\"\n formControlName=\"crs\"\n [items]=\"CRS_OPTIONS\"\n bindValue=\"code\"\n bindLabel=\"label\"\n [isForm]=\"true\"\n id=\"crs\"\n ></pry-select>\n </div>\n @if (crs?.dirty && crs?.invalid) {\n <label id=\"crs-error\" for=\"crs\" class=\"a-label a-label--help -error\">\n @if (crs?.hasError('required')) {\n <span>{{ '@pry.admin.required' | i18n }}</span>\n }\n </label>\n }\n </div>\n }\n\n @if (formatOptions) {\n <div formGroupName=\"formatOptions\">\n <h3 class=\"a-h3\">{{ '@pry.admin.fields.formatOptions.title' | i18n }}</h3>\n @if (type?.value === FieldType.INTEGER || type?.value === FieldType.LONG || type?.value === FieldType.DECIMAL) {\n <ng-container *ngTemplateOutlet=\"numberFormatOptions\"></ng-container>\n } @else if (type?.value === FieldType.INSTANT) {\n <ng-container *ngTemplateOutlet=\"dateFormatOptions\"></ng-container>\n }\n\n <ng-template #numberFormatOptions>\n @if (type?.value === FieldType.DECIMAL) {\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"field_format_comma\">{{\n '@pry.admin.fields.formatOptions.decimalPrecision' | i18n\n }}</label>\n <input formControlName=\"decimalPrecision\" id=\"field_format_comma\" type=\"number\" class=\"a-form-field\" />\n </div>\n }\n <div class=\"m-form-label-field -width-sm\">\n <pry-checkbox\n formControlName=\"localeFormat\"\n inputId=\"field_format_locale_number_format\"\n [inhibit]=\"false\"\n >\n {{ '@pry.admin.fields.formatOptions.localeFormat' | i18n }}\n </pry-checkbox>\n </div>\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"field_format_unit\">{{ '@pry.admin.fields.formatOptions.unit' | i18n }}</label>\n <input formControlName=\"unit\" id=\"field_format_unit\" type=\"text\" class=\"a-form-field\" />\n </div>\n </ng-template>\n\n <ng-template #dateFormatOptions>\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"field_format_date\">{{\n '@pry.admin.fields.formatOptions.dateFormat' | i18n\n }}</label>\n <pry-select\n formControlName=\"dateFormat\"\n id=\"field_format_date\"\n [items]=\"dateFormats\"\n [isForm]=\"true\"\n i18nPrefix=\"@pry.admin.fields.formatOptions.dateFormatOptions.\"\n [clearable]=\"true\"\n ></pry-select>\n </div>\n </ng-template>\n </div>\n }\n\n <div class=\"m-btn-group -width-sm\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n class=\"a-btn a-btn--primary\"\n type=\"submit\"\n [innerHTML]=\"(currentField ? '@pry.admin.edit' : '@pry.admin.create') | i18n\"\n ></button>\n </div>\n </form>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: i6.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle", "name", "inputId", "inhibit"] }, { kind: "component", type: i3.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
|
|
187
187
|
}
|
|
188
188
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AdminFieldsFormComponent, decorators: [{
|
|
189
189
|
type: Component,
|
|
190
|
-
args: [{ selector: 'pry-admin-fields-form', template: "<div>\n <form class=\"o-form\" [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <div class=\"m-form-label-field -width-sm\">\n <label id=\"name-label\" for=\"field_name\" class=\"a-label\">\n {{ '@pry.admin.fields.name' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"field_name\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"name\"\n [attr.aria-labelledby]=\"name?.dirty && name?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"name?.dirty && name?.invalid\"\n />\n @if (name?.dirty && name?.invalid) {\n <label id=\"name-error\" for=\"field_name\" class=\"a-label a-label--help -error\">\n @if (name?.hasError('same-name')) {\n <span>{{ '@pry.admin.exists' | i18n }}</span>\n }\n @if (name?.hasError('required')) {\n <span>{{ '@pry.admin.required' | i18n }}</span>\n }\n @if (name?.hasError('minlength')) {\n <span>{{ '@pry.admin.minLength' | i18n: { len: 3 } }}</span>\n }\n @if (name?.hasError('maxlength')) {\n <span>{{ '@pry.admin.maxLength' | i18n: { len: 100 } }}</span>\n }\n @if (name?.hasError('whitespace') && !name?.hasError('minlength')) {\n <span>{{ '@pry.admin.noWhitespace' | i18n }}</span>\n }\n </label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"field_type\">\n {{ '@pry.admin.fields.type' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <div class=\"u-display-flex\">\n <pry-select\n id=\"field_type\"\n class=\"u-flex-grow-1\"\n formControlName=\"type\"\n [items]=\"fieldTypes\"\n [i18nPrefix]=\"FIELD_I18N.label\"\n [isForm]=\"true\"\n ></pry-select>\n <div\n class=\"m-info-icon a-tooltip -tooltip-width-lg u-self-center u-flex-shrink-0\"\n [attr.data-tooltip]=\"FIELD_I18N.information + this.type?.value | i18n\"\n data-tooltip-position=\"right\"\n >\n <span>i</span>\n </div>\n </div>\n </div>\n\n @if (isGeographicType) {\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"crs\">\n {{ '@pry.admin.fields.crs' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <div class=\"u-display-flex\">\n <pry-select\n class=\"-width-sm\"\n formControlName=\"crs\"\n [items]=\"CRS_OPTIONS\"\n bindValue=\"code\"\n bindLabel=\"label\"\n [isForm]=\"true\"\n id=\"crs\"\n ></pry-select>\n </div>\n @if (crs?.dirty && crs?.invalid) {\n <label id=\"crs-error\" for=\"crs\" class=\"a-label a-label--help -error\">\n @if (crs?.hasError('required')) {\n <span>{{ '@pry.admin.required' | i18n }}</span>\n }\n </label>\n }\n </div>\n }\n\n @if (formatOptions) {\n <div formGroupName=\"formatOptions\">\n <h3 class=\"a-h3\">{{ '@pry.admin.fields.formatOptions.title' | i18n }}</h3>\n @if (type?.value === FieldType.INTEGER || type?.value === FieldType.LONG || type?.value === FieldType.DECIMAL) {\n <ng-container *ngTemplateOutlet=\"numberFormatOptions\"></ng-container>\n } @else if (type?.value === FieldType.INSTANT) {\n <ng-container *ngTemplateOutlet=\"dateFormatOptions\"></ng-container>\n }\n\n <ng-template #numberFormatOptions>\n @if (type?.value === FieldType.DECIMAL) {\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"field_format_comma\">{{\n '@pry.admin.fields.formatOptions.decimalPrecision' | i18n\n }}</label>\n <input formControlName=\"decimalPrecision\" id=\"field_format_comma\" type=\"number\" class=\"a-form-field\" />\n </div>\n }\n <div class=\"m-form-label-field -width-sm\">\n <pry-checkbox\n formControlName=\"
|
|
190
|
+
args: [{ selector: 'pry-admin-fields-form', template: "<div>\n <form class=\"o-form\" [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <div class=\"m-form-label-field -width-sm\">\n <label id=\"name-label\" for=\"field_name\" class=\"a-label\">\n {{ '@pry.admin.fields.name' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"field_name\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"name\"\n [attr.aria-labelledby]=\"name?.dirty && name?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"name?.dirty && name?.invalid\"\n />\n @if (name?.dirty && name?.invalid) {\n <label id=\"name-error\" for=\"field_name\" class=\"a-label a-label--help -error\">\n @if (name?.hasError('same-name')) {\n <span>{{ '@pry.admin.exists' | i18n }}</span>\n }\n @if (name?.hasError('required')) {\n <span>{{ '@pry.admin.required' | i18n }}</span>\n }\n @if (name?.hasError('minlength')) {\n <span>{{ '@pry.admin.minLength' | i18n: { len: 3 } }}</span>\n }\n @if (name?.hasError('maxlength')) {\n <span>{{ '@pry.admin.maxLength' | i18n: { len: 100 } }}</span>\n }\n @if (name?.hasError('whitespace') && !name?.hasError('minlength')) {\n <span>{{ '@pry.admin.noWhitespace' | i18n }}</span>\n }\n </label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"field_type\">\n {{ '@pry.admin.fields.type' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <div class=\"u-display-flex\">\n <pry-select\n id=\"field_type\"\n class=\"u-flex-grow-1\"\n formControlName=\"type\"\n [items]=\"fieldTypes\"\n [i18nPrefix]=\"FIELD_I18N.label\"\n [isForm]=\"true\"\n ></pry-select>\n <div\n class=\"m-info-icon a-tooltip -tooltip-width-lg u-self-center u-flex-shrink-0\"\n [attr.data-tooltip]=\"FIELD_I18N.information + this.type?.value | i18n\"\n data-tooltip-position=\"right\"\n >\n <span>i</span>\n </div>\n </div>\n </div>\n\n @if (isGeographicType) {\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"crs\">\n {{ '@pry.admin.fields.crs' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <div class=\"u-display-flex\">\n <pry-select\n class=\"-width-sm\"\n formControlName=\"crs\"\n [items]=\"CRS_OPTIONS\"\n bindValue=\"code\"\n bindLabel=\"label\"\n [isForm]=\"true\"\n id=\"crs\"\n ></pry-select>\n </div>\n @if (crs?.dirty && crs?.invalid) {\n <label id=\"crs-error\" for=\"crs\" class=\"a-label a-label--help -error\">\n @if (crs?.hasError('required')) {\n <span>{{ '@pry.admin.required' | i18n }}</span>\n }\n </label>\n }\n </div>\n }\n\n @if (formatOptions) {\n <div formGroupName=\"formatOptions\">\n <h3 class=\"a-h3\">{{ '@pry.admin.fields.formatOptions.title' | i18n }}</h3>\n @if (type?.value === FieldType.INTEGER || type?.value === FieldType.LONG || type?.value === FieldType.DECIMAL) {\n <ng-container *ngTemplateOutlet=\"numberFormatOptions\"></ng-container>\n } @else if (type?.value === FieldType.INSTANT) {\n <ng-container *ngTemplateOutlet=\"dateFormatOptions\"></ng-container>\n }\n\n <ng-template #numberFormatOptions>\n @if (type?.value === FieldType.DECIMAL) {\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"field_format_comma\">{{\n '@pry.admin.fields.formatOptions.decimalPrecision' | i18n\n }}</label>\n <input formControlName=\"decimalPrecision\" id=\"field_format_comma\" type=\"number\" class=\"a-form-field\" />\n </div>\n }\n <div class=\"m-form-label-field -width-sm\">\n <pry-checkbox\n formControlName=\"localeFormat\"\n inputId=\"field_format_locale_number_format\"\n [inhibit]=\"false\"\n >\n {{ '@pry.admin.fields.formatOptions.localeFormat' | i18n }}\n </pry-checkbox>\n </div>\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"field_format_unit\">{{ '@pry.admin.fields.formatOptions.unit' | i18n }}</label>\n <input formControlName=\"unit\" id=\"field_format_unit\" type=\"text\" class=\"a-form-field\" />\n </div>\n </ng-template>\n\n <ng-template #dateFormatOptions>\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"field_format_date\">{{\n '@pry.admin.fields.formatOptions.dateFormat' | i18n\n }}</label>\n <pry-select\n formControlName=\"dateFormat\"\n id=\"field_format_date\"\n [items]=\"dateFormats\"\n [isForm]=\"true\"\n i18nPrefix=\"@pry.admin.fields.formatOptions.dateFormatOptions.\"\n [clearable]=\"true\"\n ></pry-select>\n </div>\n </ng-template>\n </div>\n }\n\n <div class=\"m-btn-group -width-sm\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n class=\"a-btn a-btn--primary\"\n type=\"submit\"\n [innerHTML]=\"(currentField ? '@pry.admin.edit' : '@pry.admin.create') | i18n\"\n ></button>\n </div>\n </form>\n</div>\n" }]
|
|
191
191
|
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i3.PryI18nService }], propDecorators: { currentField: [{
|
|
192
192
|
type: Input
|
|
193
193
|
}] } });
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tZmllbGRzLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvYWRtaW4vY29tcG9uZW50cy9hZG1pbi1maWVsZHMvYWRtaW4tZmllbGRzLWZvcm0vYWRtaW4tZmllbGRzLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvYWRtaW4vY29tcG9uZW50cy9hZG1pbi1maWVsZHMvYWRtaW4tZmllbGRzLWZvcm0vYWRtaW4tZmllbGRzLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBbUIsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyRixPQUFPLEVBQ0wsVUFBVSxFQUVWLFlBQVksRUFDWixjQUFjLEVBQ2QsU0FBUyxFQUNULG1CQUFtQixFQUVuQix3QkFBd0IsRUFDekIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsRUFBRSxJQUFJLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7OztBQUU5RSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUc7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dUI7eUpBSXhCLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIEZJRUxEX0kxOE4sXG4gIEZpZWxkLFxuICBGaWVsZEFjdGlvbnMsXG4gIEZpZWxkU2VsZWN0b3JzLFxuICBGaWVsZFR5cGUsXG4gIEdlb21ldHJpY0ZpZWxkVHlwZXMsXG4gIFByeUkxOG5TZXJ2aWNlLFxuICBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmVcbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgbm9XaGl0ZXNwYWNlVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9hZG1pbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWRtaW5BY3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvYWRtaW4uYWN0aW9ucyc7XG5pbXBvcnQgeyBGaWVsZHNBY3Rpb25zIH0gZnJvbSAnLi4vc3RvcmUvZmllbGRzLmFjdGlvbnMnO1xuaW1wb3J0IHsgZGF0ZUZvcm1hdE9wdGlvbnMgfSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQvY29tcG9uZW50cy9kYXRhLWZvcm1hdCc7XG5cbmV4cG9ydCBjb25zdCBDUlNfT1BUSU9OUyA9IFtcbiAgeyBsYWJlbDogJ1dHUzg0IChFUFNHOjQzMjYpJywgY29kZTogJ0VQU0c6NDMyNicgfSxcbiAgeyBsYWJlbDogJ0xhbWJlcnQ5MyAoRVBTRzogMjE1NCknLCBjb2RlOiAnRVBTRzoyMTU0JyB9XG5dO1xuXG5pbnRlcmZhY2UgRmllbGRGb3JtIHtcbiAgbmFtZTogRm9ybUNvbnRyb2w8c3RyaW5nPjtcbiAgdHlwZTogRm9ybUNvbnRyb2w8RmllbGRUeXBlPjtcbiAgY3JzPzogRm9ybUNvbnRyb2w8c3RyaW5nIHwgdW5kZWZpbmVkPjtcbiAgZm9ybWF0T3B0aW9ucz86IEZvcm1Hcm91cDxGb3JtYXRPcHRpb25zRm9ybT47XG59XG5cbmludGVyZmFjZSBGb3JtYXRPcHRpb25zRm9ybSB7XG4gIGlzTG9jYWxlRm9ybWF0PzogRm9ybUNvbnRyb2w8Ym9vbGVhbiB8IG51bGw+O1xuICB1bml0PzogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gIGRlY2ltYWxQcmVjaXNpb24/OiBGb3JtQ29udHJvbDxudW1iZXIgfCBudWxsPjtcbiAgZGF0ZUZvcm1hdD86IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktYWRtaW4tZmllbGRzLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vYWRtaW4tZmllbGRzLWZvcm0uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFkbWluRmllbGRzRm9ybUNvbXBvbmVudCBleHRlbmRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgY3VycmVudEZpZWxkPzogRmllbGQ7XG5cbiAgZm9ybTogRm9ybUdyb3VwPEZpZWxkRm9ybT47XG4gIGZpZWxkVHlwZXM6IEZpZWxkVHlwZVtdO1xuICBmaWVsZE5hbWVzJDogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XG4gIG5hbWVBbHJlYWR5RXhpc3RzJD86IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgZGF0ZUZvcm1hdHMgPSBPYmplY3Qua2V5cyhkYXRlRm9ybWF0T3B0aW9ucy52YWx1ZSk7XG5cbiAgZ29CYWNrUGF0aDogc3RyaW5nO1xuICBnb0JhY2tQYXRoRWRpdDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPGFueT4sXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGkxOG46IFByeUkxOG5TZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChGaWVsZEFjdGlvbnMubG9hZCgpKTtcblxuICAgIHRoaXMuZmllbGROYW1lcyQgPSB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KEZpZWxkU2VsZWN0b3JzLmZpZWxkcylcbiAgICAgIC5waXBlKG1hcCgoZmllbGRzKSA9PiBmaWVsZHMubWFwKChmaWVsZCkgPT4gZmllbGQubmFtZS50b0xvd2VyQ2FzZSgpKSkpO1xuXG4gICAgdGhpcy5maWVsZFR5cGVzID0gT2JqZWN0LnZhbHVlcyhGaWVsZFR5cGUpXG4gICAgICAuZmlsdGVyKCh0eXBlKSA9PiB0eXBlICE9PSBGaWVsZFR5cGUuR0VPTUVUUllDT0xMRUNUSU9OKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgW2xhYmVsQSwgbGFiZWxCXSA9IFt0aGlzLmkxOG4uaW5zdGFudChGSUVMRF9JMThOLmxhYmVsICsgYSksIHRoaXMuaTE4bi5pbnN0YW50KEZJRUxEX0kxOE4ubGFiZWwgKyBiKV07XG4gICAgICAgIHJldHVybiBsYWJlbEEubG9jYWxlQ29tcGFyZShsYWJlbEIpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmZvcm0gPSBuZXcgRm9ybUdyb3VwPEZpZWxkRm9ybT4oe1xuICAgICAgbmFtZTogbmV3IEZvcm1Db250cm9sKCcnLCB7XG4gICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgzKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwKSwgbm9XaGl0ZXNwYWNlVmFsaWRhdG9yXSxcbiAgICAgICAgbm9uTnVsbGFibGU6IHRydWVcbiAgICAgIH0pLFxuICAgICAgdHlwZTogbmV3IEZvcm1Db250cm9sKHRoaXMuZmllbGRUeXBlc1swXSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgICAgIGZvcm1hdE9wdGlvbnM6IG5ldyBGb3JtR3JvdXAoe30pXG4gICAgfSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMudHlwZT8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodHlwZSkgPT4gdGhpcy5zZXRGb3JtYXRPcHRpb25Db250cm9scyh0eXBlKSkpO1xuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHsgdHlwZTogdGhpcy5maWVsZFR5cGVzWzBdIH0pO1xuXG4gICAgdGhpcy5uYW1lQWxyZWFkeUV4aXN0cyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLm5hbWUhLnZhbHVlQ2hhbmdlcywgdGhpcy5maWVsZE5hbWVzJF0pLnBpcGUoXG4gICAgICBtYXAoKFt2YWx1ZSwgZmllbGROYW1lc10pID0+IGZpZWxkTmFtZXMuaW5jbHVkZXModmFsdWUudG9Mb3dlckNhc2UoKSkgJiYgdmFsdWUgIT0gdGhpcy5jdXJyZW50RmllbGQ/Lm5hbWUpXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5uYW1lQWxyZWFkeUV4aXN0cyQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICB0aGlzLm5hbWU/LnNldEVycm9ycyh7ICdzYW1lLW5hbWUnOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuZ29CYWNrUGF0aCA9IHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoWycuLiddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSkudG9TdHJpbmcoKTtcbiAgICB0aGlzLmdvQmFja1BhdGhFZGl0ID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbJy4uLy4uJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KS50b1N0cmluZygpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY3VycmVudEZpZWxkKSB7XG4gICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgIG5hbWU6IHRoaXMuY3VycmVudEZpZWxkLm5hbWUsXG4gICAgICAgIHR5cGU6IHRoaXMuY3VycmVudEZpZWxkLnR5cGVcbiAgICAgIH0pO1xuICAgICAgdGhpcy50eXBlIS5kaXNhYmxlKCk7XG4gICAgICBpZiAodGhpcy5pc0dlb2dyYXBoaWNUeXBlKSB7XG4gICAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sPCdjcnMnPihcbiAgICAgICAgICAnY3JzJyxcbiAgICAgICAgICBuZXcgRm9ybUNvbnRyb2wodGhpcy5jdXJyZW50RmllbGQuY3JzLCB7IHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgbm9uTnVsbGFibGU6IHRydWUgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jcnM/LmRpc2FibGUoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0Rm9ybWF0T3B0aW9uVmFsdWVzKCk7XG4gICAgfVxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnR5cGUhLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHR5cGUpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNHZW9ncmFwaGljVHlwZSkge1xuICAgICAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKFxuICAgICAgICAgICAgJ2NycycsXG4gICAgICAgICAgICBuZXcgRm9ybUNvbnRyb2woQ1JTX09QVElPTlNbMF0uY29kZSwgeyB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sIG5vbk51bGxhYmxlOiB0cnVlIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmZvcm0ucmVtb3ZlQ29udHJvbCgnY3JzJyk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldCBuYW1lKCk6IEFic3RyYWN0Q29udHJvbDxzdHJpbmc+IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ25hbWUnKTtcbiAgfVxuXG4gIGdldCB0eXBlKCk6IEFic3RyYWN0Q29udHJvbDxGaWVsZFR5cGU+IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ3R5cGUnKTtcbiAgfVxuXG4gIGdldCBjcnMoKTogQWJzdHJhY3RDb250cm9sPHN0cmluZyB8IHVuZGVmaW5lZD4gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgnY3JzJyk7XG4gIH1cblxuICBnZXQgZm9ybWF0T3B0aW9ucygpOiBGb3JtR3JvdXA8Rm9ybWF0T3B0aW9uc0Zvcm0+IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ2Zvcm1hdE9wdGlvbnMnKSBhcyBGb3JtR3JvdXA8Rm9ybWF0T3B0aW9uc0Zvcm0+O1xuICB9XG5cbiAgZ2V0IGlzR2VvZ3JhcGhpY1R5cGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEdlb21ldHJpY0ZpZWxkVHlwZXMuaW5jbHVkZXModGhpcy50eXBlPy52YWx1ZSBhcyBzdHJpbmcpO1xuICB9XG5cbiAgZ29CYWNrKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQWRtaW5BY3Rpb25zLnJvdXRlVG8oeyBwYXRoOiB0aGlzLmdldFBhdGgoKSwgcGFyYW1zOiB1bmRlZmluZWQgfSkpO1xuICB9XG5cbiAgZ2V0Rm9ybVZhbHVlKCkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUhLnZhbHVlLFxuICAgICAgdHlwZTogdGhpcy50eXBlIS52YWx1ZSxcbiAgICAgIGNyczogdGhpcy5jcnM/LnZhbHVlLFxuICAgICAgdW5pdDogdGhpcy5mb3JtYXRPcHRpb25zPy52YWx1ZS51bml0ID8/IHVuZGVmaW5lZCxcbiAgICAgIGRlY2ltYWxQcmVjaXNpb246IHRoaXMuZm9ybWF0T3B0aW9ucz8udmFsdWUuZGVjaW1hbFByZWNpc2lvbiA/PyB1bmRlZmluZWQsXG4gICAgICBpc0xvY2FsZUZvcm1hdDogdGhpcy5mb3JtYXRPcHRpb25zPy52YWx1ZS5pc0xvY2FsZUZvcm1hdCA/PyB1bmRlZmluZWQsXG4gICAgICBmb3JtYXQ6IHRoaXMuZm9ybWF0T3B0aW9ucz8udmFsdWUuZGF0ZUZvcm1hdCA/PyB1bmRlZmluZWRcbiAgICB9O1xuICB9XG5cbiAgc3VibWl0KCkge1xuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZT8udmFsdWU/LnRyaW0oKVxuICAgIH0pO1xuICAgIGlmICh0aGlzLmZvcm0udmFsaWQpIHtcbiAgICAgIHRoaXMuY3VycmVudEZpZWxkID8gdGhpcy51cGRhdGVGaWVsZCgpIDogdGhpcy5zYXZlRmllbGQoKTtcbiAgICB9XG4gIH1cblxuICBzYXZlRmllbGQoKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIEZpZWxkc0FjdGlvbnMuc2F2ZUZpZWxkKHtcbiAgICAgICAgZmllbGQ6IHsgaWQ6IHV1aWQoKSwgLi4udGhpcy5nZXRGb3JtVmFsdWUoKSB9LFxuICAgICAgICByb3V0ZTogdGhpcy5nZXRQYXRoKClcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHVwZGF0ZUZpZWxkKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBGaWVsZHNBY3Rpb25zLnVwZGF0ZUZpZWxkKHtcbiAgICAgICAgZmllbGQ6IHsgaWQ6IHRoaXMuY3VycmVudEZpZWxkIS5pZCwgLi4udGhpcy5nZXRGb3JtVmFsdWUoKSB9LFxuICAgICAgICByb3V0ZTogdGhpcy5nZXRQYXRoKClcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHNldEZvcm1hdE9wdGlvbkNvbnRyb2xzKHR5cGU6IEZpZWxkVHlwZSB8IG51bGwpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgRmllbGRUeXBlLklOVEVHRVI6XG4gICAgICBjYXNlIEZpZWxkVHlwZS5MT05HOlxuICAgICAgICB0aGlzLmZvcm1hdE9wdGlvbnM/LmFkZENvbnRyb2woJ2lzTG9jYWxlRm9ybWF0JywgbmV3IEZvcm1Db250cm9sKHRydWUpKTtcbiAgICAgICAgdGhpcy5mb3JtYXRPcHRpb25zPy5zZXRDb250cm9sKCd1bml0JywgbmV3IEZvcm1Db250cm9sKG51bGwpKTtcbiAgICAgICAgdGhpcy5mb3JtYXRPcHRpb25zPy5yZW1vdmVDb250cm9sKCdkZWNpbWFsUHJlY2lzaW9uJyk7XG4gICAgICAgIHRoaXMuZm9ybWF0T3B0aW9ucz8ucmVtb3ZlQ29udHJvbCgnZGF0ZUZvcm1hdCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRmllbGRUeXBlLkRFQ0lNQUw6XG4gICAgICAgIHRoaXMuZm9ybWF0T3B0aW9ucz8uYWRkQ29udHJvbCgnaXNMb2NhbGVGb3JtYXQnLCBuZXcgRm9ybUNvbnRyb2wodHJ1ZSkpO1xuICAgICAgICB0aGlzLmZvcm1hdE9wdGlvbnM/LnNldENvbnRyb2woJ3VuaXQnLCBuZXcgRm9ybUNvbnRyb2wobnVsbCkpO1xuICAgICAgICB0aGlzLmZvcm1hdE9wdGlvbnM/LnNldENvbnRyb2woJ2RlY2ltYWxQcmVjaXNpb24nLCBuZXcgRm9ybUNvbnRyb2woMikpO1xuICAgICAgICB0aGlzLmZvcm1hdE9wdGlvbnM/LnJlbW92ZUNvbnRyb2woJ2RhdGVGb3JtYXQnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEZpZWxkVHlwZS5JTlNUQU5UOlxuICAgICAgICB0aGlzLmZvcm1hdE9wdGlvbnM/LnJlbW92ZUNvbnRyb2woJ2lzTG9jYWxlRm9ybWF0Jyk7XG4gICAgICAgIHRoaXMuZm9ybWF0T3B0aW9ucz8ucmVtb3ZlQ29udHJvbCgndW5pdCcpO1xuICAgICAgICB0aGlzLmZvcm1hdE9wdGlvbnM/LnJlbW92ZUNvbnRyb2woJ2RlY2ltYWxQcmVjaXNpb24nKTtcbiAgICAgICAgdGhpcy5mb3JtYXRPcHRpb25zPy5zZXRDb250cm9sKCdkYXRlRm9ybWF0JywgbmV3IEZvcm1Db250cm9sKG51bGwpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmZvcm0ucmVtb3ZlQ29udHJvbCgnZm9ybWF0T3B0aW9ucycpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBzZXRGb3JtYXRPcHRpb25WYWx1ZXMoKSB7XG4gICAgc3dpdGNoICh0aGlzLmN1cnJlbnRGaWVsZD8udHlwZSkge1xuICAgICAgY2FzZSBGaWVsZFR5cGUuSU5URUdFUjpcbiAgICAgIGNhc2UgRmllbGRUeXBlLkxPTkc6XG4gICAgICAgIHRoaXMuZm9ybWF0T3B0aW9ucz8ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgaXNMb2NhbGVGb3JtYXQ6IHRoaXMuY3VycmVudEZpZWxkPy5pc0xvY2FsZUZvcm1hdCxcbiAgICAgICAgICB1bml0OiB0aGlzLmN1cnJlbnRGaWVsZD8udW5pdFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEZpZWxkVHlwZS5ERUNJTUFMOlxuICAgICAgICB0aGlzLmZvcm1hdE9wdGlvbnM/LnBhdGNoVmFsdWUoe1xuICAgICAgICAgIGlzTG9jYWxlRm9ybWF0OiB0aGlzLmN1cnJlbnRGaWVsZD8uaXNMb2NhbGVGb3JtYXQsXG4gICAgICAgICAgdW5pdDogdGhpcy5jdXJyZW50RmllbGQ/LnVuaXQsXG4gICAgICAgICAgZGVjaW1hbFByZWNpc2lvbjogdGhpcy5jdXJyZW50RmllbGQ/LmRlY2ltYWxQcmVjaXNpb25cbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBGaWVsZFR5cGUuSU5TVEFOVDpcbiAgICAgICAgdGhpcy5mb3JtYXRPcHRpb25zPy5wYXRjaFZhbHVlKHsgZGF0ZUZvcm1hdDogdGhpcy5jdXJyZW50RmllbGQ/LmZvcm1hdCB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFBhdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEZpZWxkID8gdGhpcy5nb0JhY2tQYXRoRWRpdCA6IHRoaXMuZ29CYWNrUGF0aDtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBDUlNfT1BUSU9OUyA9IENSU19PUFRJT05TO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgRmllbGRUeXBlID0gRmllbGRUeXBlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgRklFTERfSTE4TiA9IEZJRUxEX0kxOE47XG59XG4iLCI8ZGl2PlxuICA8Zm9ybSBjbGFzcz1cIm8tZm9ybVwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJzdWJtaXQoKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLXNtXCI+XG4gICAgICA8bGFiZWwgaWQ9XCJuYW1lLWxhYmVsXCIgZm9yPVwiZmllbGRfbmFtZVwiIGNsYXNzPVwiYS1sYWJlbFwiPlxuICAgICAgICB7eyAnQHByeS5hZG1pbi5maWVsZHMubmFtZScgfCBpMThuIH19ICpcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPih7eyAnQHByeS5hZG1pbi5yZXF1aXJlZCcgfCBpMThuIH19KTwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgICA8aW5wdXRcbiAgICAgICAgaWQ9XCJmaWVsZF9uYW1lXCJcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwibmFtZT8uZGlydHkgJiYgbmFtZT8uaW52YWxpZCA/ICduYW1lLWxhYmVsIG5hbWUtZXJyb3InIDogJ25hbWUtbGFiZWwnXCJcbiAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cIm5hbWU/LmRpcnR5ICYmIG5hbWU/LmludmFsaWRcIlxuICAgICAgLz5cbiAgICAgIEBpZiAobmFtZT8uZGlydHkgJiYgbmFtZT8uaW52YWxpZCkge1xuICAgICAgICA8bGFiZWwgaWQ9XCJuYW1lLWVycm9yXCIgZm9yPVwiZmllbGRfbmFtZVwiIGNsYXNzPVwiYS1sYWJlbCBhLWxhYmVsLS1oZWxwIC1lcnJvclwiPlxuICAgICAgICAgIEBpZiAobmFtZT8uaGFzRXJyb3IoJ3NhbWUtbmFtZScpKSB7XG4gICAgICAgICAgICA8c3Bhbj57eyAnQHByeS5hZG1pbi5leGlzdHMnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChuYW1lPy5oYXNFcnJvcigncmVxdWlyZWQnKSkge1xuICAgICAgICAgICAgPHNwYW4+e3sgJ0BwcnkuYWRtaW4ucmVxdWlyZWQnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChuYW1lPy5oYXNFcnJvcignbWlubGVuZ3RoJykpIHtcbiAgICAgICAgICAgIDxzcGFuPnt7ICdAcHJ5LmFkbWluLm1pbkxlbmd0aCcgfCBpMThuOiB7IGxlbjogMyB9IH19PC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKG5hbWU/Lmhhc0Vycm9yKCdtYXhsZW5ndGgnKSkge1xuICAgICAgICAgICAgPHNwYW4+e3sgJ0BwcnkuYWRtaW4ubWF4TGVuZ3RoJyB8IGkxOG46IHsgbGVuOiAxMDAgfSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChuYW1lPy5oYXNFcnJvcignd2hpdGVzcGFjZScpICYmICFuYW1lPy5oYXNFcnJvcignbWlubGVuZ3RoJykpIHtcbiAgICAgICAgICAgIDxzcGFuPnt7ICdAcHJ5LmFkbWluLm5vV2hpdGVzcGFjZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIH1cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLXNtXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiZmllbGRfdHlwZVwiPlxuICAgICAgICB7eyAnQHByeS5hZG1pbi5maWVsZHMudHlwZScgfCBpMThuIH19ICpcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPih7eyAnQHByeS5hZG1pbi5yZXF1aXJlZCcgfCBpMThuIH19KTwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgICA8ZGl2IGNsYXNzPVwidS1kaXNwbGF5LWZsZXhcIj5cbiAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICBpZD1cImZpZWxkX3R5cGVcIlxuICAgICAgICAgIGNsYXNzPVwidS1mbGV4LWdyb3ctMVwiXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidHlwZVwiXG4gICAgICAgICAgW2l0ZW1zXT1cImZpZWxkVHlwZXNcIlxuICAgICAgICAgIFtpMThuUHJlZml4XT1cIkZJRUxEX0kxOE4ubGFiZWxcIlxuICAgICAgICAgIFtpc0Zvcm1dPVwidHJ1ZVwiXG4gICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cIm0taW5mby1pY29uIGEtdG9vbHRpcCAtdG9vbHRpcC13aWR0aC1sZyB1LXNlbGYtY2VudGVyIHUtZmxleC1zaHJpbmstMFwiXG4gICAgICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cIkZJRUxEX0kxOE4uaW5mb3JtYXRpb24gKyB0aGlzLnR5cGU/LnZhbHVlIHwgaTE4blwiXG4gICAgICAgICAgZGF0YS10b29sdGlwLXBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4+aTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIEBpZiAoaXNHZW9ncmFwaGljVHlwZSkge1xuICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZCAtd2lkdGgtc21cIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cImNyc1wiPlxuICAgICAgICAgIHt7ICdAcHJ5LmFkbWluLmZpZWxkcy5jcnMnIHwgaTE4biB9fSAqXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPih7eyAnQHByeS5hZG1pbi5yZXF1aXJlZCcgfCBpMThuIH19KTwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInUtZGlzcGxheS1mbGV4XCI+XG4gICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgIGNsYXNzPVwiLXdpZHRoLXNtXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNyc1wiXG4gICAgICAgICAgICBbaXRlbXNdPVwiQ1JTX09QVElPTlNcIlxuICAgICAgICAgICAgYmluZFZhbHVlPVwiY29kZVwiXG4gICAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICBbaXNGb3JtXT1cInRydWVcIlxuICAgICAgICAgICAgaWQ9XCJjcnNcIlxuICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKGNycz8uZGlydHkgJiYgY3JzPy5pbnZhbGlkKSB7XG4gICAgICAgICAgPGxhYmVsIGlkPVwiY3JzLWVycm9yXCIgZm9yPVwiY3JzXCIgY2xhc3M9XCJhLWxhYmVsIGEtbGFiZWwtLWhlbHAgLWVycm9yXCI+XG4gICAgICAgICAgICBAaWYgKGNycz8uaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcbiAgICAgICAgICAgICAgPHNwYW4+e3sgJ0BwcnkuYWRtaW4ucmVxdWlyZWQnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICBAaWYgKGZvcm1hdE9wdGlvbnMpIHtcbiAgICAgIDxkaXYgZm9ybUdyb3VwTmFtZT1cImZvcm1hdE9wdGlvbnNcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwiYS1oM1wiPnt7ICdAcHJ5LmFkbWluLmZpZWxkcy5mb3JtYXRPcHRpb25zLnRpdGxlJyB8IGkxOG4gfX08L2gzPlxuICAgICAgICBAaWYgKHR5cGU/LnZhbHVlID09PSBGaWVsZFR5cGUuSU5URUdFUiB8fCB0eXBlPy52YWx1ZSA9PT0gRmllbGRUeXBlLkxPTkcgfHwgdHlwZT8udmFsdWUgPT09IEZpZWxkVHlwZS5ERUNJTUFMKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm51bWJlckZvcm1hdE9wdGlvbnNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfSBAZWxzZSBpZiAodHlwZT8udmFsdWUgPT09IEZpZWxkVHlwZS5JTlNUQU5UKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRhdGVGb3JtYXRPcHRpb25zXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cblxuICAgICAgICA8bmctdGVtcGxhdGUgI251bWJlckZvcm1hdE9wdGlvbnM+XG4gICAgICAgICAgQGlmICh0eXBlPy52YWx1ZSA9PT0gRmllbGRUeXBlLkRFQ0lNQUwpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLXNtXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJmaWVsZF9mb3JtYXRfY29tbWFcIj57e1xuICAgICAgICAgICAgICAgICdAcHJ5LmFkbWluLmZpZWxkcy5mb3JtYXRPcHRpb25zLmRlY2ltYWxQcmVjaXNpb24nIHwgaTE4blxuICAgICAgICAgICAgICB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkZWNpbWFsUHJlY2lzaW9uXCIgaWQ9XCJmaWVsZF9mb3JtYXRfY29tbWFcIiB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLXNtXCI+XG4gICAgICAgICAgICA8cHJ5LWNoZWNrYm94XG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImlzTG9jYWxlRm9ybWF0XCJcbiAgICAgICAgICAgICAgaW5wdXRJZD1cImZpZWxkX2Zvcm1hdF9sb2NhbGVfbnVtYmVyX2Zvcm1hdFwiXG4gICAgICAgICAgICAgIFtpbmhpYml0XT1cImZhbHNlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ0BwcnkuYWRtaW4uZmllbGRzLmZvcm1hdE9wdGlvbnMuaXNMb2NhbGVGb3JtYXQnIHwgaTE4biB9fVxuICAgICAgICAgICAgPC9wcnktY2hlY2tib3g+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZCAtd2lkdGgtc21cIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJmaWVsZF9mb3JtYXRfdW5pdFwiPnt7ICdAcHJ5LmFkbWluLmZpZWxkcy5mb3JtYXRPcHRpb25zLnVuaXQnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwidW5pdFwiIGlkPVwiZmllbGRfZm9ybWF0X3VuaXRcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2RhdGVGb3JtYXRPcHRpb25zPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLXNtXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiZmllbGRfZm9ybWF0X2RhdGVcIj57e1xuICAgICAgICAgICAgICAnQHByeS5hZG1pbi5maWVsZHMuZm9ybWF0T3B0aW9ucy5kYXRlRm9ybWF0JyB8IGkxOG5cbiAgICAgICAgICAgIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRhdGVGb3JtYXRcIlxuICAgICAgICAgICAgICBpZD1cImZpZWxkX2Zvcm1hdF9kYXRlXCJcbiAgICAgICAgICAgICAgW2l0ZW1zXT1cImRhdGVGb3JtYXRzXCJcbiAgICAgICAgICAgICAgW2lzRm9ybV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgaTE4blByZWZpeD1cIkBwcnkuYWRtaW4uZmllbGRzLmZvcm1hdE9wdGlvbnMuZGF0ZUZvcm1hdE9wdGlvbnMuXCJcbiAgICAgICAgICAgICAgW2NsZWFyYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8ZGl2IGNsYXNzPVwibS1idG4tZ3JvdXAgLXdpZHRoLXNtXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIlxuICAgICAgICAoY2xpY2spPVwiZ29CYWNrKClcIlxuICAgICAgICBbaW5uZXJIVE1MXT1cIidAcHJ5LmFkbWluLmNhbmNlbCcgfCBpMThuXCJcbiAgICAgID48L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiXG4gICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICBbaW5uZXJIVE1MXT1cIihjdXJyZW50RmllbGQgPyAnQHByeS5hZG1pbi5lZGl0JyA6ICdAcHJ5LmFkbWluLmNyZWF0ZScpIHwgaTE4blwiXG4gICAgICA+PC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbjwvZGl2PlxuIl19
|
|
194
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tZmllbGRzLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvYWRtaW4vY29tcG9uZW50cy9hZG1pbi1maWVsZHMvYWRtaW4tZmllbGRzLWZvcm0vYWRtaW4tZmllbGRzLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvYWRtaW4vY29tcG9uZW50cy9hZG1pbi1maWVsZHMvYWRtaW4tZmllbGRzLWZvcm0vYWRtaW4tZmllbGRzLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBbUIsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyRixPQUFPLEVBQ0wsVUFBVSxFQUVWLFlBQVksRUFDWixjQUFjLEVBQ2QsU0FBUyxFQUNULG1CQUFtQixFQUVuQix3QkFBd0IsRUFDekIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsRUFBRSxJQUFJLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7OztBQUU5RSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUc7SUFDekIsRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtJQUNqRCxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO0NBQ3ZELENBQUM7QUFvQkYsTUFBTSxPQUFPLHdCQUF5QixTQUFRLHdCQUF3QjtJQWFwRSxZQUNVLEtBQWlCLEVBQ2pCLE1BQWMsRUFDZCxLQUFxQixFQUNyQixJQUFvQjtRQUU1QixLQUFLLEVBQUUsQ0FBQztRQUxBLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFNBQUksR0FBSixJQUFJLENBQWdCO1FBVDlCLGdCQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQXlNaEMsZ0JBQVcsR0FBRyxXQUFXLENBQUM7UUFDMUIsY0FBUyxHQUFHLFNBQVMsQ0FBQztRQUN0QixlQUFVLEdBQUcsVUFBVSxDQUFDO1FBL0x6QyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUV6QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLO2FBQzFCLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO2FBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFMUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQzthQUN2QyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsa0JBQWtCLENBQUM7YUFDdkQsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2IsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVHLE9BQU8sTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxTQUFTLENBQVk7WUFDbkMsSUFBSSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRTtnQkFDeEIsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUscUJBQXFCLENBQUM7Z0JBQzVHLFdBQVcsRUFBRSxJQUFJO2FBQ2xCLENBQUM7WUFDRixJQUFJLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUNoRSxhQUFhLEVBQUUsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDO1NBQ2pDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVuRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUssQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUN2RixHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FDM0csQ0FBQztRQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUNwQixJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDMUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUNILENBQUM7UUFFRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDM0YsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BHLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7Z0JBQ25CLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUk7Z0JBQzVCLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUk7YUFDN0IsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLElBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNyQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FDbEIsS0FBSyxFQUNMLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUNqRyxDQUFDO2dCQUNGLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDdEIsQ0FBQztZQUNELElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQy9CLENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLElBQUssQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDekMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQ2xCLEtBQUssRUFDTCxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUMvRixDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFpQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQWUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU87WUFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUssQ0FBQyxLQUFLO1lBQ3RCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSyxDQUFDLEtBQUs7WUFDdEIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSztZQUNwQixJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLFNBQVM7WUFDakQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLElBQUksU0FBUztZQUN6RSxZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsWUFBWSxJQUFJLFNBQVM7WUFDakUsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLFVBQVUsSUFBSSxTQUFTO1NBQzFELENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ25CLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7U0FDL0IsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzVELENBQUM7SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUNqQixhQUFhLENBQUMsU0FBUyxDQUFDO1lBQ3RCLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUM3QyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRTtTQUN0QixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQ2pCLGFBQWEsQ0FBQyxXQUFXLENBQUM7WUFDeEIsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFhLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQzVELEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFO1NBQ3RCLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELHVCQUF1QixDQUFDLElBQXNCO1FBQzVDLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDYixLQUFLLFNBQVMsQ0FBQyxPQUFPLENBQUM7WUFDdkIsS0FBSyxTQUFTLENBQUMsSUFBSTtnQkFDakIsSUFBSSxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsY0FBYyxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ3RFLElBQUksQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUM5RCxJQUFJLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDaEQsTUFBTTtZQUNSLEtBQUssU0FBUyxDQUFDLE9BQU87Z0JBQ3BCLElBQUksQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLGNBQWMsRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUN0RSxJQUFJLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkUsSUFBSSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ2hELE1BQU07WUFDUixLQUFLLFNBQVMsQ0FBQyxPQUFPO2dCQUNwQixJQUFJLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLFlBQVksRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNwRSxNQUFNO1lBQ1I7Z0JBQ0UsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ3pDLE1BQU07UUFDVixDQUFDO0lBQ0gsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixRQUFRLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDaEMsS0FBSyxTQUFTLENBQUMsT0FBTyxDQUFDO1lBQ3ZCLEtBQUssU0FBUyxDQUFDLElBQUk7Z0JBQ2pCLElBQUksQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDO29CQUM3QixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxZQUFZO29CQUM3QyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJO2lCQUM5QixDQUFDLENBQUM7Z0JBQ0gsTUFBTTtZQUNSLEtBQUssU0FBUyxDQUFDLE9BQU87Z0JBQ3BCLElBQUksQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDO29CQUM3QixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxZQUFZO29CQUM3QyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJO29CQUM3QixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLGdCQUFnQjtpQkFDdEQsQ0FBQyxDQUFDO2dCQUNILE1BQU07WUFDUixLQUFLLFNBQVMsQ0FBQyxPQUFPO2dCQUNwQixJQUFJLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQzFFLE1BQU07WUFDUjtnQkFDRSxNQUFNO1FBQ1YsQ0FBQztJQUNILENBQUM7SUFFTyxPQUFPO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ25FLENBQUM7OEdBL01VLHdCQUF3QjtrR0FBeEIsd0JBQXdCLDhIQzVDckMsbThMQXlKQTs7MkZEN0dhLHdCQUF3QjtrQkFKcEMsU0FBUzsrQkFDRSx1QkFBdUI7eUpBSXhCLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIEZJRUxEX0kxOE4sXG4gIEZpZWxkLFxuICBGaWVsZEFjdGlvbnMsXG4gIEZpZWxkU2VsZWN0b3JzLFxuICBGaWVsZFR5cGUsXG4gIEdlb21ldHJpY0ZpZWxkVHlwZXMsXG4gIFByeUkxOG5TZXJ2aWNlLFxuICBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmVcbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgbm9XaGl0ZXNwYWNlVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9hZG1pbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWRtaW5BY3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvYWRtaW4uYWN0aW9ucyc7XG5pbXBvcnQgeyBGaWVsZHNBY3Rpb25zIH0gZnJvbSAnLi4vc3RvcmUvZmllbGRzLmFjdGlvbnMnO1xuaW1wb3J0IHsgZGF0ZUZvcm1hdE9wdGlvbnMgfSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQvY29tcG9uZW50cy9kYXRhLWZvcm1hdCc7XG5cbmV4cG9ydCBjb25zdCBDUlNfT1BUSU9OUyA9IFtcbiAgeyBsYWJlbDogJ1dHUzg0IChFUFNHOjQzMjYpJywgY29kZTogJ0VQU0c6NDMyNicgfSxcbiAgeyBsYWJlbDogJ0xhbWJlcnQ5MyAoRVBTRzogMjE1NCknLCBjb2RlOiAnRVBTRzoyMTU0JyB9XG5dO1xuXG5pbnRlcmZhY2UgRmllbGRGb3JtIHtcbiAgbmFtZTogRm9ybUNvbnRyb2w8c3RyaW5nPjtcbiAgdHlwZTogRm9ybUNvbnRyb2w8RmllbGRUeXBlPjtcbiAgY3JzPzogRm9ybUNvbnRyb2w8c3RyaW5nIHwgdW5kZWZpbmVkPjtcbiAgZm9ybWF0T3B0aW9ucz86IEZvcm1Hcm91cDxGb3JtYXRPcHRpb25zRm9ybT47XG59XG5cbmludGVyZmFjZSBGb3JtYXRPcHRpb25zRm9ybSB7XG4gIGxvY2FsZUZvcm1hdD86IEZvcm1Db250cm9sPGJvb2xlYW4gfCBudWxsPjtcbiAgdW5pdD86IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICBkZWNpbWFsUHJlY2lzaW9uPzogRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD47XG4gIGRhdGVGb3JtYXQ/OiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LWFkbWluLWZpZWxkcy1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkbWluLWZpZWxkcy1mb3JtLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBBZG1pbkZpZWxkc0Zvcm1Db21wb25lbnQgZXh0ZW5kcyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGN1cnJlbnRGaWVsZD86IEZpZWxkO1xuXG4gIGZvcm06IEZvcm1Hcm91cDxGaWVsZEZvcm0+O1xuICBmaWVsZFR5cGVzOiBGaWVsZFR5cGVbXTtcbiAgZmllbGROYW1lcyQ6IE9ic2VydmFibGU8c3RyaW5nW10+O1xuICBuYW1lQWxyZWFkeUV4aXN0cyQ/OiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIGRhdGVGb3JtYXRzID0gT2JqZWN0LmtleXMoZGF0ZUZvcm1hdE9wdGlvbnMudmFsdWUpO1xuXG4gIGdvQmFja1BhdGg6IHN0cmluZztcbiAgZ29CYWNrUGF0aEVkaXQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxhbnk+LFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBpMThuOiBQcnlJMThuU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRmllbGRBY3Rpb25zLmxvYWQoKSk7XG5cbiAgICB0aGlzLmZpZWxkTmFtZXMkID0gdGhpcy5zdG9yZVxuICAgICAgLnNlbGVjdChGaWVsZFNlbGVjdG9ycy5maWVsZHMpXG4gICAgICAucGlwZShtYXAoKGZpZWxkcykgPT4gZmllbGRzLm1hcCgoZmllbGQpID0+IGZpZWxkLm5hbWUudG9Mb3dlckNhc2UoKSkpKTtcblxuICAgIHRoaXMuZmllbGRUeXBlcyA9IE9iamVjdC52YWx1ZXMoRmllbGRUeXBlKVxuICAgICAgLmZpbHRlcigodHlwZSkgPT4gdHlwZSAhPT0gRmllbGRUeXBlLkdFT01FVFJZQ09MTEVDVElPTilcbiAgICAgIC5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGNvbnN0IFtsYWJlbEEsIGxhYmVsQl0gPSBbdGhpcy5pMThuLmluc3RhbnQoRklFTERfSTE4Ti5sYWJlbCArIGEpLCB0aGlzLmkxOG4uaW5zdGFudChGSUVMRF9JMThOLmxhYmVsICsgYildO1xuICAgICAgICByZXR1cm4gbGFiZWxBLmxvY2FsZUNvbXBhcmUobGFiZWxCKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5mb3JtID0gbmV3IEZvcm1Hcm91cDxGaWVsZEZvcm0+KHtcbiAgICAgIG5hbWU6IG5ldyBGb3JtQ29udHJvbCgnJywge1xuICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMyksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMCksIG5vV2hpdGVzcGFjZVZhbGlkYXRvcl0sXG4gICAgICAgIG5vbk51bGxhYmxlOiB0cnVlXG4gICAgICB9KSxcbiAgICAgIHR5cGU6IG5ldyBGb3JtQ29udHJvbCh0aGlzLmZpZWxkVHlwZXNbMF0sIHsgbm9uTnVsbGFibGU6IHRydWUgfSksXG4gICAgICBmb3JtYXRPcHRpb25zOiBuZXcgRm9ybUdyb3VwKHt9KVxuICAgIH0pO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLnR5cGU/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHR5cGUpID0+IHRoaXMuc2V0Rm9ybWF0T3B0aW9uQ29udHJvbHModHlwZSkpKTtcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IHR5cGU6IHRoaXMuZmllbGRUeXBlc1swXSB9KTtcblxuICAgIHRoaXMubmFtZUFscmVhZHlFeGlzdHMkID0gY29tYmluZUxhdGVzdChbdGhpcy5uYW1lIS52YWx1ZUNoYW5nZXMsIHRoaXMuZmllbGROYW1lcyRdKS5waXBlKFxuICAgICAgbWFwKChbdmFsdWUsIGZpZWxkTmFtZXNdKSA9PiBmaWVsZE5hbWVzLmluY2x1ZGVzKHZhbHVlLnRvTG93ZXJDYXNlKCkpICYmIHZhbHVlICE9IHRoaXMuY3VycmVudEZpZWxkPy5uYW1lKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMubmFtZUFscmVhZHlFeGlzdHMkLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5uYW1lPy5zZXRFcnJvcnMoeyAnc2FtZS1uYW1lJzogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmdvQmFja1BhdGggPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFsnLi4nXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pLnRvU3RyaW5nKCk7XG4gICAgdGhpcy5nb0JhY2tQYXRoRWRpdCA9IHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoWycuLi8uLiddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmN1cnJlbnRGaWVsZCkge1xuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICBuYW1lOiB0aGlzLmN1cnJlbnRGaWVsZC5uYW1lLFxuICAgICAgICB0eXBlOiB0aGlzLmN1cnJlbnRGaWVsZC50eXBlXG4gICAgICB9KTtcbiAgICAgIHRoaXMudHlwZSEuZGlzYWJsZSgpO1xuICAgICAgaWYgKHRoaXMuaXNHZW9ncmFwaGljVHlwZSkge1xuICAgICAgICB0aGlzLmZvcm0uYWRkQ29udHJvbDwnY3JzJz4oXG4gICAgICAgICAgJ2NycycsXG4gICAgICAgICAgbmV3IEZvcm1Db250cm9sKHRoaXMuY3VycmVudEZpZWxkLmNycywgeyB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sIG5vbk51bGxhYmxlOiB0cnVlIH0pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY3JzPy5kaXNhYmxlKCk7XG4gICAgICB9XG4gICAgICB0aGlzLnNldEZvcm1hdE9wdGlvblZhbHVlcygpO1xuICAgIH1cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy50eXBlIS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh0eXBlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmlzR2VvZ3JhcGhpY1R5cGUpIHtcbiAgICAgICAgICB0aGlzLmZvcm0uYWRkQ29udHJvbChcbiAgICAgICAgICAgICdjcnMnLFxuICAgICAgICAgICAgbmV3IEZvcm1Db250cm9sKENSU19PUFRJT05TWzBdLmNvZGUsIHsgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLCBub25OdWxsYWJsZTogdHJ1ZSB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5mb3JtLnJlbW92ZUNvbnRyb2woJ2NycycpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBnZXQgbmFtZSgpOiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nPiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KCduYW1lJyk7XG4gIH1cblxuICBnZXQgdHlwZSgpOiBBYnN0cmFjdENvbnRyb2w8RmllbGRUeXBlPiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KCd0eXBlJyk7XG4gIH1cblxuICBnZXQgY3JzKCk6IEFic3RyYWN0Q29udHJvbDxzdHJpbmcgfCB1bmRlZmluZWQ+IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ2NycycpO1xuICB9XG5cbiAgZ2V0IGZvcm1hdE9wdGlvbnMoKTogRm9ybUdyb3VwPEZvcm1hdE9wdGlvbnNGb3JtPiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KCdmb3JtYXRPcHRpb25zJykgYXMgRm9ybUdyb3VwPEZvcm1hdE9wdGlvbnNGb3JtPjtcbiAgfVxuXG4gIGdldCBpc0dlb2dyYXBoaWNUeXBlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBHZW9tZXRyaWNGaWVsZFR5cGVzLmluY2x1ZGVzKHRoaXMudHlwZT8udmFsdWUgYXMgc3RyaW5nKTtcbiAgfVxuXG4gIGdvQmFjaygpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEFkbWluQWN0aW9ucy5yb3V0ZVRvKHsgcGF0aDogdGhpcy5nZXRQYXRoKCksIHBhcmFtczogdW5kZWZpbmVkIH0pKTtcbiAgfVxuXG4gIGdldEZvcm1WYWx1ZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogdGhpcy5uYW1lIS52YWx1ZSxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSEudmFsdWUsXG4gICAgICBjcnM6IHRoaXMuY3JzPy52YWx1ZSxcbiAgICAgIHVuaXQ6IHRoaXMuZm9ybWF0T3B0aW9ucz8udmFsdWUudW5pdCA/PyB1bmRlZmluZWQsXG4gICAgICBkZWNpbWFsUHJlY2lzaW9uOiB0aGlzLmZvcm1hdE9wdGlvbnM/LnZhbHVlLmRlY2ltYWxQcmVjaXNpb24gPz8gdW5kZWZpbmVkLFxuICAgICAgbG9jYWxlRm9ybWF0OiB0aGlzLmZvcm1hdE9wdGlvbnM/LnZhbHVlLmxvY2FsZUZvcm1hdCA/PyB1bmRlZmluZWQsXG4gICAgICBmb3JtYXQ6IHRoaXMuZm9ybWF0T3B0aW9ucz8udmFsdWUuZGF0ZUZvcm1hdCA/PyB1bmRlZmluZWRcbiAgICB9O1xuICB9XG5cbiAgc3VibWl0KCkge1xuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZT8udmFsdWU/LnRyaW0oKVxuICAgIH0pO1xuICAgIGlmICh0aGlzLmZvcm0udmFsaWQpIHtcbiAgICAgIHRoaXMuY3VycmVudEZpZWxkID8gdGhpcy51cGRhdGVGaWVsZCgpIDogdGhpcy5zYXZlRmllbGQoKTtcbiAgICB9XG4gIH1cblxuICBzYXZlRmllbGQoKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIEZpZWxkc0FjdGlvbnMuc2F2ZUZpZWxkKHtcbiAgICAgICAgZmllbGQ6IHsgaWQ6IHV1aWQoKSwgLi4udGhpcy5nZXRGb3JtVmFsdWUoKSB9LFxuICAgICAgICByb3V0ZTogdGhpcy5nZXRQYXRoKClcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHVwZGF0ZUZpZWxkKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBGaWVsZHNBY3Rpb25zLnVwZGF0ZUZpZWxkKHtcbiAgICAgICAgZmllbGQ6IHsgaWQ6IHRoaXMuY3VycmVudEZpZWxkIS5pZCwgLi4udGhpcy5nZXRGb3JtVmFsdWUoKSB9LFxuICAgICAgICByb3V0ZTogdGhpcy5nZXRQYXRoKClcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHNldEZvcm1hdE9wdGlvbkNvbnRyb2xzKHR5cGU6IEZpZWxkVHlwZSB8IG51bGwpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgRmllbGRUeXBlLklOVEVHRVI6XG4gICAgICBjYXNlIEZpZWxkVHlwZS5MT05HOlxuICAgICAgICB0aGlzLmZvcm1hdE9wdGlvbnM/LmFkZENvbnRyb2woJ2xvY2FsZUZvcm1hdCcsIG5ldyBGb3JtQ29udHJvbCh0cnVlKSk7XG4gICAgICAgIHRoaXMuZm9ybWF0T3B0aW9ucz8uc2V0Q29udHJvbCgndW5pdCcsIG5ldyBGb3JtQ29udHJvbChudWxsKSk7XG4gICAgICAgIHRoaXMuZm9ybWF0T3B0aW9ucz8ucmVtb3ZlQ29udHJvbCgnZGVjaW1hbFByZWNpc2lvbicpO1xuICAgICAgICB0aGlzLmZvcm1hdE9wdGlvbnM/LnJlbW92ZUNvbnRyb2woJ2RhdGVGb3JtYXQnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEZpZWxkVHlwZS5ERUNJTUFMOlxuICAgICAgICB0aGlzLmZvcm1hdE9wdGlvbnM/LmFkZENvbnRyb2woJ2xvY2FsZUZvcm1hdCcsIG5ldyBGb3JtQ29udHJvbCh0cnVlKSk7XG4gICAgICAgIHRoaXMuZm9ybWF0T3B0aW9ucz8uc2V0Q29udHJvbCgndW5pdCcsIG5ldyBGb3JtQ29udHJvbChudWxsKSk7XG4gICAgICAgIHRoaXMuZm9ybWF0T3B0aW9ucz8uc2V0Q29udHJvbCgnZGVjaW1hbFByZWNpc2lvbicsIG5ldyBGb3JtQ29udHJvbCgyKSk7XG4gICAgICAgIHRoaXMuZm9ybWF0T3B0aW9ucz8ucmVtb3ZlQ29udHJvbCgnZGF0ZUZvcm1hdCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRmllbGRUeXBlLklOU1RBTlQ6XG4gICAgICAgIHRoaXMuZm9ybWF0T3B0aW9ucz8ucmVtb3ZlQ29udHJvbCgnbG9jYWxlRm9ybWF0Jyk7XG4gICAgICAgIHRoaXMuZm9ybWF0T3B0aW9ucz8ucmVtb3ZlQ29udHJvbCgndW5pdCcpO1xuICAgICAgICB0aGlzLmZvcm1hdE9wdGlvbnM/LnJlbW92ZUNvbnRyb2woJ2RlY2ltYWxQcmVjaXNpb24nKTtcbiAgICAgICAgdGhpcy5mb3JtYXRPcHRpb25zPy5zZXRDb250cm9sKCdkYXRlRm9ybWF0JywgbmV3IEZvcm1Db250cm9sKG51bGwpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmZvcm0ucmVtb3ZlQ29udHJvbCgnZm9ybWF0T3B0aW9ucycpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBzZXRGb3JtYXRPcHRpb25WYWx1ZXMoKSB7XG4gICAgc3dpdGNoICh0aGlzLmN1cnJlbnRGaWVsZD8udHlwZSkge1xuICAgICAgY2FzZSBGaWVsZFR5cGUuSU5URUdFUjpcbiAgICAgIGNhc2UgRmllbGRUeXBlLkxPTkc6XG4gICAgICAgIHRoaXMuZm9ybWF0T3B0aW9ucz8ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgbG9jYWxlRm9ybWF0OiB0aGlzLmN1cnJlbnRGaWVsZD8ubG9jYWxlRm9ybWF0LFxuICAgICAgICAgIHVuaXQ6IHRoaXMuY3VycmVudEZpZWxkPy51bml0XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRmllbGRUeXBlLkRFQ0lNQUw6XG4gICAgICAgIHRoaXMuZm9ybWF0T3B0aW9ucz8ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgbG9jYWxlRm9ybWF0OiB0aGlzLmN1cnJlbnRGaWVsZD8ubG9jYWxlRm9ybWF0LFxuICAgICAgICAgIHVuaXQ6IHRoaXMuY3VycmVudEZpZWxkPy51bml0LFxuICAgICAgICAgIGRlY2ltYWxQcmVjaXNpb246IHRoaXMuY3VycmVudEZpZWxkPy5kZWNpbWFsUHJlY2lzaW9uXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRmllbGRUeXBlLklOU1RBTlQ6XG4gICAgICAgIHRoaXMuZm9ybWF0T3B0aW9ucz8ucGF0Y2hWYWx1ZSh7IGRhdGVGb3JtYXQ6IHRoaXMuY3VycmVudEZpZWxkPy5mb3JtYXQgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXRoKCkge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRGaWVsZCA/IHRoaXMuZ29CYWNrUGF0aEVkaXQgOiB0aGlzLmdvQmFja1BhdGg7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgQ1JTX09QVElPTlMgPSBDUlNfT1BUSU9OUztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEZpZWxkVHlwZSA9IEZpZWxkVHlwZTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEZJRUxEX0kxOE4gPSBGSUVMRF9JMThOO1xufVxuIiwiPGRpdj5cbiAgPGZvcm0gY2xhc3M9XCJvLWZvcm1cIiBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwic3VibWl0KClcIj5cbiAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkIC13aWR0aC1zbVwiPlxuICAgICAgPGxhYmVsIGlkPVwibmFtZS1sYWJlbFwiIGZvcj1cImZpZWxkX25hbWVcIiBjbGFzcz1cImEtbGFiZWxcIj5cbiAgICAgICAge3sgJ0BwcnkuYWRtaW4uZmllbGRzLm5hbWUnIHwgaTE4biB9fSAqXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj4oe3sgJ0BwcnkuYWRtaW4ucmVxdWlyZWQnIHwgaTE4biB9fSk8L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgICAgPGlucHV0XG4gICAgICAgIGlkPVwiZmllbGRfbmFtZVwiXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIm5hbWU/LmRpcnR5ICYmIG5hbWU/LmludmFsaWQgPyAnbmFtZS1sYWJlbCBuYW1lLWVycm9yJyA6ICduYW1lLWxhYmVsJ1wiXG4gICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJuYW1lPy5kaXJ0eSAmJiBuYW1lPy5pbnZhbGlkXCJcbiAgICAgIC8+XG4gICAgICBAaWYgKG5hbWU/LmRpcnR5ICYmIG5hbWU/LmludmFsaWQpIHtcbiAgICAgICAgPGxhYmVsIGlkPVwibmFtZS1lcnJvclwiIGZvcj1cImZpZWxkX25hbWVcIiBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIj5cbiAgICAgICAgICBAaWYgKG5hbWU/Lmhhc0Vycm9yKCdzYW1lLW5hbWUnKSkge1xuICAgICAgICAgICAgPHNwYW4+e3sgJ0BwcnkuYWRtaW4uZXhpc3RzJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAobmFtZT8uaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcbiAgICAgICAgICAgIDxzcGFuPnt7ICdAcHJ5LmFkbWluLnJlcXVpcmVkJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAobmFtZT8uaGFzRXJyb3IoJ21pbmxlbmd0aCcpKSB7XG4gICAgICAgICAgICA8c3Bhbj57eyAnQHByeS5hZG1pbi5taW5MZW5ndGgnIHwgaTE4bjogeyBsZW46IDMgfSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChuYW1lPy5oYXNFcnJvcignbWF4bGVuZ3RoJykpIHtcbiAgICAgICAgICAgIDxzcGFuPnt7ICdAcHJ5LmFkbWluLm1heExlbmd0aCcgfCBpMThuOiB7IGxlbjogMTAwIH0gfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAobmFtZT8uaGFzRXJyb3IoJ3doaXRlc3BhY2UnKSAmJiAhbmFtZT8uaGFzRXJyb3IoJ21pbmxlbmd0aCcpKSB7XG4gICAgICAgICAgICA8c3Bhbj57eyAnQHByeS5hZG1pbi5ub1doaXRlc3BhY2UnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkIC13aWR0aC1zbVwiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cImZpZWxkX3R5cGVcIj5cbiAgICAgICAge3sgJ0BwcnkuYWRtaW4uZmllbGRzLnR5cGUnIHwgaTE4biB9fSAqXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj4oe3sgJ0BwcnkuYWRtaW4ucmVxdWlyZWQnIHwgaTE4biB9fSk8L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgICAgPGRpdiBjbGFzcz1cInUtZGlzcGxheS1mbGV4XCI+XG4gICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgaWQ9XCJmaWVsZF90eXBlXCJcbiAgICAgICAgICBjbGFzcz1cInUtZmxleC1ncm93LTFcIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInR5cGVcIlxuICAgICAgICAgIFtpdGVtc109XCJmaWVsZFR5cGVzXCJcbiAgICAgICAgICBbaTE4blByZWZpeF09XCJGSUVMRF9JMThOLmxhYmVsXCJcbiAgICAgICAgICBbaXNGb3JtXT1cInRydWVcIlxuICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJtLWluZm8taWNvbiBhLXRvb2x0aXAgLXRvb2x0aXAtd2lkdGgtbGcgdS1zZWxmLWNlbnRlciB1LWZsZXgtc2hyaW5rLTBcIlxuICAgICAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCJGSUVMRF9JMThOLmluZm9ybWF0aW9uICsgdGhpcy50eXBlPy52YWx1ZSB8IGkxOG5cIlxuICAgICAgICAgIGRhdGEtdG9vbHRpcC1wb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuPmk8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICBAaWYgKGlzR2VvZ3JhcGhpY1R5cGUpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLXNtXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJjcnNcIj5cbiAgICAgICAgICB7eyAnQHByeS5hZG1pbi5maWVsZHMuY3JzJyB8IGkxOG4gfX0gKlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj4oe3sgJ0BwcnkuYWRtaW4ucmVxdWlyZWQnIHwgaTE4biB9fSk8L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1LWRpc3BsYXktZmxleFwiPlxuICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICBjbGFzcz1cIi13aWR0aC1zbVwiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjcnNcIlxuICAgICAgICAgICAgW2l0ZW1zXT1cIkNSU19PUFRJT05TXCJcbiAgICAgICAgICAgIGJpbmRWYWx1ZT1cImNvZGVcIlxuICAgICAgICAgICAgYmluZExhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgW2lzRm9ybV09XCJ0cnVlXCJcbiAgICAgICAgICAgIGlkPVwiY3JzXCJcbiAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmIChjcnM/LmRpcnR5ICYmIGNycz8uaW52YWxpZCkge1xuICAgICAgICAgIDxsYWJlbCBpZD1cImNycy1lcnJvclwiIGZvcj1cImNyc1wiIGNsYXNzPVwiYS1sYWJlbCBhLWxhYmVsLS1oZWxwIC1lcnJvclwiPlxuICAgICAgICAgICAgQGlmIChjcnM/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpKSB7XG4gICAgICAgICAgICAgIDxzcGFuPnt7ICdAcHJ5LmFkbWluLnJlcXVpcmVkJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgQGlmIChmb3JtYXRPcHRpb25zKSB7XG4gICAgICA8ZGl2IGZvcm1Hcm91cE5hbWU9XCJmb3JtYXRPcHRpb25zXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cImEtaDNcIj57eyAnQHByeS5hZG1pbi5maWVsZHMuZm9ybWF0T3B0aW9ucy50aXRsZScgfCBpMThuIH19PC9oMz5cbiAgICAgICAgQGlmICh0eXBlPy52YWx1ZSA9PT0gRmllbGRUeXBlLklOVEVHRVIgfHwgdHlwZT8udmFsdWUgPT09IEZpZWxkVHlwZS5MT05HIHx8IHR5cGU/LnZhbHVlID09PSBGaWVsZFR5cGUuREVDSU1BTCkge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJudW1iZXJGb3JtYXRPcHRpb25zXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH0gQGVsc2UgaWYgKHR5cGU/LnZhbHVlID09PSBGaWVsZFR5cGUuSU5TVEFOVCkge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlRm9ybWF0T3B0aW9uc1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICB9XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNudW1iZXJGb3JtYXRPcHRpb25zPlxuICAgICAgICAgIEBpZiAodHlwZT8udmFsdWUgPT09IEZpZWxkVHlwZS5ERUNJTUFMKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkIC13aWR0aC1zbVwiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiZmllbGRfZm9ybWF0X2NvbW1hXCI+e3tcbiAgICAgICAgICAgICAgICAnQHByeS5hZG1pbi5maWVsZHMuZm9ybWF0T3B0aW9ucy5kZWNpbWFsUHJlY2lzaW9uJyB8IGkxOG5cbiAgICAgICAgICAgICAgfX08L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGVjaW1hbFByZWNpc2lvblwiIGlkPVwiZmllbGRfZm9ybWF0X2NvbW1hXCIgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkIC13aWR0aC1zbVwiPlxuICAgICAgICAgICAgPHByeS1jaGVja2JveFxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsb2NhbGVGb3JtYXRcIlxuICAgICAgICAgICAgICBpbnB1dElkPVwiZmllbGRfZm9ybWF0X2xvY2FsZV9udW1iZXJfZm9ybWF0XCJcbiAgICAgICAgICAgICAgW2luaGliaXRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnQHByeS5hZG1pbi5maWVsZHMuZm9ybWF0T3B0aW9ucy5sb2NhbGVGb3JtYXQnIHwgaTE4biB9fVxuICAgICAgICAgICAgPC9wcnktY2hlY2tib3g+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZCAtd2lkdGgtc21cIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJmaWVsZF9mb3JtYXRfdW5pdFwiPnt7ICdAcHJ5LmFkbWluLmZpZWxkcy5mb3JtYXRPcHRpb25zLnVuaXQnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwidW5pdFwiIGlkPVwiZmllbGRfZm9ybWF0X3VuaXRcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2RhdGVGb3JtYXRPcHRpb25zPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLXNtXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiZmllbGRfZm9ybWF0X2RhdGVcIj57e1xuICAgICAgICAgICAgICAnQHByeS5hZG1pbi5maWVsZHMuZm9ybWF0T3B0aW9ucy5kYXRlRm9ybWF0JyB8IGkxOG5cbiAgICAgICAgICAgIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRhdGVGb3JtYXRcIlxuICAgICAgICAgICAgICBpZD1cImZpZWxkX2Zvcm1hdF9kYXRlXCJcbiAgICAgICAgICAgICAgW2l0ZW1zXT1cImRhdGVGb3JtYXRzXCJcbiAgICAgICAgICAgICAgW2lzRm9ybV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgaTE4blByZWZpeD1cIkBwcnkuYWRtaW4uZmllbGRzLmZvcm1hdE9wdGlvbnMuZGF0ZUZvcm1hdE9wdGlvbnMuXCJcbiAgICAgICAgICAgICAgW2NsZWFyYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8ZGl2IGNsYXNzPVwibS1idG4tZ3JvdXAgLXdpZHRoLXNtXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIlxuICAgICAgICAoY2xpY2spPVwiZ29CYWNrKClcIlxuICAgICAgICBbaW5uZXJIVE1MXT1cIidAcHJ5LmFkbWluLmNhbmNlbCcgfCBpMThuXCJcbiAgICAgID48L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiXG4gICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICBbaW5uZXJIVE1MXT1cIihjdXJyZW50RmllbGQgPyAnQHByeS5hZG1pbi5lZGl0JyA6ICdAcHJ5LmFkbWluLmNyZWF0ZScpIHwgaTE4blwiXG4gICAgICA+PC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbjwvZGl2PlxuIl19
|
package/esm2022/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.mjs
CHANGED
|
@@ -83,10 +83,10 @@ export class AdminFieldsSelectComponent {
|
|
|
83
83
|
this.sub.unsubscribe();
|
|
84
84
|
}
|
|
85
85
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AdminFieldsSelectComponent, deps: [{ token: i1.Store }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
86
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: AdminFieldsSelectComponent, selector: "pry-admin-fields-select", ngImport: i0, template: "<div\n *ngIf=\"currentField$ | async as field\"\n [id]=\"'panel-field-' + field.id\"\n [attr.aria-labelledby]=\"'button-field-' + field.id\"\n class=\"o-panel\"\n>\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n\n <h3 class=\"a-h3\">\n {{ '@pry.admin.fields.info' | i18n }}\n </h3>\n </div>\n\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"fieldDetails\" name=\"details\"></pry-tab>\n <pry-tab [templateRef]=\"fieldAssociations\" name=\"classes.associations\"></pry-tab>\n </pry-tab-group>\n\n <ng-template #fieldDetails>\n <div class=\"u-display-flex -column -gap-20\">\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.name' | i18n }}</h4>\n <span>{{ field.name }}</span>\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.type' | i18n }}</h4>\n <span>{{ FIELD_I18N.label + field.type | i18n }}</span>\n </div>\n @if ([FieldType.INTEGER, FieldType.LONG, FieldType.DECIMAL, FieldType.INSTANT].includes(field.type)) {\n <div>\n <h3 class=\"a-h3 -no-padding\">{{ '@pry.admin.fields.formatOptions.title' | i18n }}</h3>\n <div class=\"u-display-flex -column -gap-20\">\n @switch (field.type) {\n @case (FieldType.INTEGER) {\n <ng-container *ngTemplateOutlet=\"numberFormatOptions\"></ng-container>\n }\n @case (FieldType.LONG) {\n <ng-container *ngTemplateOutlet=\"numberFormatOptions\"></ng-container>\n }\n @case (FieldType.DECIMAL) {\n <ng-container *ngTemplateOutlet=\"numberFormatOptions\"></ng-container>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.formatOptions.decimalPrecision' | i18n }}</h4>\n @if (field.decimalPrecision) {\n <span>{{ field.decimalPrecision }}</span>\n } @else {\n <span class=\"-italic\">{{ '@pry.admin.fields.formatOptions.noDecimalPrecision' | i18n }}</span>\n }\n </div>\n }\n @case (FieldType.INSTANT) {\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.formatOptions.dateFormat' | i18n }}</h4>\n @if (field.format) {\n <span>{{ '@pry.admin.fields.formatOptions.dateFormatOptions' + field.format | i18n }}</span>\n } @else {\n <span class=\"-italic\">{{ '@pry.admin.fields.formatOptions.noDateFormat' | i18n }}</span>\n }\n </div>\n }\n }\n </div>\n </div>\n }\n @if (field.crs) {\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.crs' | i18n }}</h4>\n <span>{{ field.crs }}</span>\n </div>\n }\n </div>\n\n <ng-template #numberFormatOptions>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.formatOptions.unit' | i18n }}</h4>\n @if (field.unit) {\n <span>{{ field.unit }}</span>\n } @else {\n <span class=\"-italic\">{{ '@pry.admin.fields.formatOptions.noUnit' | i18n }}</span>\n }\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.formatOptions.
|
|
86
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: AdminFieldsSelectComponent, selector: "pry-admin-fields-select", ngImport: i0, template: "<div\n *ngIf=\"currentField$ | async as field\"\n [id]=\"'panel-field-' + field.id\"\n [attr.aria-labelledby]=\"'button-field-' + field.id\"\n class=\"o-panel\"\n>\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n\n <h3 class=\"a-h3\">\n {{ '@pry.admin.fields.info' | i18n }}\n </h3>\n </div>\n\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"fieldDetails\" name=\"details\"></pry-tab>\n <pry-tab [templateRef]=\"fieldAssociations\" name=\"classes.associations\"></pry-tab>\n </pry-tab-group>\n\n <ng-template #fieldDetails>\n <div class=\"u-display-flex -column -gap-20\">\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.name' | i18n }}</h4>\n <span>{{ field.name }}</span>\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.type' | i18n }}</h4>\n <span>{{ FIELD_I18N.label + field.type | i18n }}</span>\n </div>\n @if ([FieldType.INTEGER, FieldType.LONG, FieldType.DECIMAL, FieldType.INSTANT].includes(field.type)) {\n <div>\n <h3 class=\"a-h3 -no-padding\">{{ '@pry.admin.fields.formatOptions.title' | i18n }}</h3>\n <div class=\"u-display-flex -column -gap-20\">\n @switch (field.type) {\n @case (FieldType.INTEGER) {\n <ng-container *ngTemplateOutlet=\"numberFormatOptions\"></ng-container>\n }\n @case (FieldType.LONG) {\n <ng-container *ngTemplateOutlet=\"numberFormatOptions\"></ng-container>\n }\n @case (FieldType.DECIMAL) {\n <ng-container *ngTemplateOutlet=\"numberFormatOptions\"></ng-container>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.formatOptions.decimalPrecision' | i18n }}</h4>\n @if (field.decimalPrecision) {\n <span>{{ field.decimalPrecision }}</span>\n } @else {\n <span class=\"-italic\">{{ '@pry.admin.fields.formatOptions.noDecimalPrecision' | i18n }}</span>\n }\n </div>\n }\n @case (FieldType.INSTANT) {\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.formatOptions.dateFormat' | i18n }}</h4>\n @if (field.format) {\n <span>{{ '@pry.admin.fields.formatOptions.dateFormatOptions.' + field.format | i18n }}</span>\n } @else {\n <span class=\"-italic\">{{ '@pry.admin.fields.formatOptions.noDateFormat' | i18n }}</span>\n }\n </div>\n }\n }\n </div>\n </div>\n }\n @if (field.crs) {\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.crs' | i18n }}</h4>\n <span>{{ field.crs }}</span>\n </div>\n }\n </div>\n\n <ng-template #numberFormatOptions>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.formatOptions.unit' | i18n }}</h4>\n @if (field.unit) {\n <span>{{ field.unit }}</span>\n } @else {\n <span class=\"-italic\">{{ '@pry.admin.fields.formatOptions.noUnit' | i18n }}</span>\n }\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.formatOptions.localeFormat' | i18n }}</h4>\n <span>{{ (field.localeFormat ? '@pry.action.yes' : '@pry.action.no') | i18n }}</span>\n </div>\n </ng-template>\n </ng-template>\n\n <ng-template #fieldAssociations>\n <h4 class=\"a-h4\">{{ '@pry.admin.classes.associations' | i18n }}</h4>\n <pry-association [associations]=\"associations$ | async\"></pry-association>\n </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.TabGroupComponent, selector: "pry-tab-group", inputs: ["translationStringBase"], outputs: ["clickedTabIdx"] }, { kind: "component", type: i4.TabComponent, selector: "pry-tab", inputs: ["name", "templateRef", "index"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5.PryAssociationComponent, selector: "pry-association", inputs: ["associations"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
|
|
87
87
|
}
|
|
88
88
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AdminFieldsSelectComponent, decorators: [{
|
|
89
89
|
type: Component,
|
|
90
|
-
args: [{ selector: 'pry-admin-fields-select', template: "<div\n *ngIf=\"currentField$ | async as field\"\n [id]=\"'panel-field-' + field.id\"\n [attr.aria-labelledby]=\"'button-field-' + field.id\"\n class=\"o-panel\"\n>\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n\n <h3 class=\"a-h3\">\n {{ '@pry.admin.fields.info' | i18n }}\n </h3>\n </div>\n\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"fieldDetails\" name=\"details\"></pry-tab>\n <pry-tab [templateRef]=\"fieldAssociations\" name=\"classes.associations\"></pry-tab>\n </pry-tab-group>\n\n <ng-template #fieldDetails>\n <div class=\"u-display-flex -column -gap-20\">\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.name' | i18n }}</h4>\n <span>{{ field.name }}</span>\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.type' | i18n }}</h4>\n <span>{{ FIELD_I18N.label + field.type | i18n }}</span>\n </div>\n @if ([FieldType.INTEGER, FieldType.LONG, FieldType.DECIMAL, FieldType.INSTANT].includes(field.type)) {\n <div>\n <h3 class=\"a-h3 -no-padding\">{{ '@pry.admin.fields.formatOptions.title' | i18n }}</h3>\n <div class=\"u-display-flex -column -gap-20\">\n @switch (field.type) {\n @case (FieldType.INTEGER) {\n <ng-container *ngTemplateOutlet=\"numberFormatOptions\"></ng-container>\n }\n @case (FieldType.LONG) {\n <ng-container *ngTemplateOutlet=\"numberFormatOptions\"></ng-container>\n }\n @case (FieldType.DECIMAL) {\n <ng-container *ngTemplateOutlet=\"numberFormatOptions\"></ng-container>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.formatOptions.decimalPrecision' | i18n }}</h4>\n @if (field.decimalPrecision) {\n <span>{{ field.decimalPrecision }}</span>\n } @else {\n <span class=\"-italic\">{{ '@pry.admin.fields.formatOptions.noDecimalPrecision' | i18n }}</span>\n }\n </div>\n }\n @case (FieldType.INSTANT) {\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.formatOptions.dateFormat' | i18n }}</h4>\n @if (field.format) {\n <span>{{ '@pry.admin.fields.formatOptions.dateFormatOptions' + field.format | i18n }}</span>\n } @else {\n <span class=\"-italic\">{{ '@pry.admin.fields.formatOptions.noDateFormat' | i18n }}</span>\n }\n </div>\n }\n }\n </div>\n </div>\n }\n @if (field.crs) {\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.crs' | i18n }}</h4>\n <span>{{ field.crs }}</span>\n </div>\n }\n </div>\n\n <ng-template #numberFormatOptions>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.formatOptions.unit' | i18n }}</h4>\n @if (field.unit) {\n <span>{{ field.unit }}</span>\n } @else {\n <span class=\"-italic\">{{ '@pry.admin.fields.formatOptions.noUnit' | i18n }}</span>\n }\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.formatOptions.
|
|
90
|
+
args: [{ selector: 'pry-admin-fields-select', template: "<div\n *ngIf=\"currentField$ | async as field\"\n [id]=\"'panel-field-' + field.id\"\n [attr.aria-labelledby]=\"'button-field-' + field.id\"\n class=\"o-panel\"\n>\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n\n <h3 class=\"a-h3\">\n {{ '@pry.admin.fields.info' | i18n }}\n </h3>\n </div>\n\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"fieldDetails\" name=\"details\"></pry-tab>\n <pry-tab [templateRef]=\"fieldAssociations\" name=\"classes.associations\"></pry-tab>\n </pry-tab-group>\n\n <ng-template #fieldDetails>\n <div class=\"u-display-flex -column -gap-20\">\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.name' | i18n }}</h4>\n <span>{{ field.name }}</span>\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.type' | i18n }}</h4>\n <span>{{ FIELD_I18N.label + field.type | i18n }}</span>\n </div>\n @if ([FieldType.INTEGER, FieldType.LONG, FieldType.DECIMAL, FieldType.INSTANT].includes(field.type)) {\n <div>\n <h3 class=\"a-h3 -no-padding\">{{ '@pry.admin.fields.formatOptions.title' | i18n }}</h3>\n <div class=\"u-display-flex -column -gap-20\">\n @switch (field.type) {\n @case (FieldType.INTEGER) {\n <ng-container *ngTemplateOutlet=\"numberFormatOptions\"></ng-container>\n }\n @case (FieldType.LONG) {\n <ng-container *ngTemplateOutlet=\"numberFormatOptions\"></ng-container>\n }\n @case (FieldType.DECIMAL) {\n <ng-container *ngTemplateOutlet=\"numberFormatOptions\"></ng-container>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.formatOptions.decimalPrecision' | i18n }}</h4>\n @if (field.decimalPrecision) {\n <span>{{ field.decimalPrecision }}</span>\n } @else {\n <span class=\"-italic\">{{ '@pry.admin.fields.formatOptions.noDecimalPrecision' | i18n }}</span>\n }\n </div>\n }\n @case (FieldType.INSTANT) {\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.formatOptions.dateFormat' | i18n }}</h4>\n @if (field.format) {\n <span>{{ '@pry.admin.fields.formatOptions.dateFormatOptions.' + field.format | i18n }}</span>\n } @else {\n <span class=\"-italic\">{{ '@pry.admin.fields.formatOptions.noDateFormat' | i18n }}</span>\n }\n </div>\n }\n }\n </div>\n </div>\n }\n @if (field.crs) {\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.crs' | i18n }}</h4>\n <span>{{ field.crs }}</span>\n </div>\n }\n </div>\n\n <ng-template #numberFormatOptions>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.formatOptions.unit' | i18n }}</h4>\n @if (field.unit) {\n <span>{{ field.unit }}</span>\n } @else {\n <span class=\"-italic\">{{ '@pry.admin.fields.formatOptions.noUnit' | i18n }}</span>\n }\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.formatOptions.localeFormat' | i18n }}</h4>\n <span>{{ (field.localeFormat ? '@pry.action.yes' : '@pry.action.no') | i18n }}</span>\n </div>\n </ng-template>\n </ng-template>\n\n <ng-template #fieldAssociations>\n <h4 class=\"a-h4\">{{ '@pry.admin.classes.associations' | i18n }}</h4>\n <pry-association [associations]=\"associations$ | async\"></pry-association>\n </ng-template>\n</div>\n" }]
|
|
91
91
|
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.Router }, { type: i2.ActivatedRoute }] });
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tZmllbGRzLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9hZG1pbi9jb21wb25lbnRzL2FkbWluLWZpZWxkcy9hZG1pbi1maWVsZHMtc2VsZWN0L2FkbWluLWZpZWxkcy1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvYWRtaW4vY29tcG9uZW50cy9hZG1pbi1maWVsZHMvYWRtaW4tZmllbGRzLXNlbGVjdC9hZG1pbi1maWVsZHMtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQWdCLGNBQWMsRUFBRSxVQUFVLEVBQVMsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7OztBQU1oRSxNQUFNLE9BQU8sMEJBQTBCO2FBQzlCLE9BQUUsR0FBRyw0QkFBNEIsQUFBL0IsQ0FBZ0M7SUFNekMsWUFDVSxLQUFpQixFQUNqQixNQUFjLEVBQ2QsS0FBcUI7UUFGckIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixXQUFN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dGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGNvbmNhdExhdGVzdEZyb20gfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgQXNzb2NpYXRpb25zLCBDbGFzc1NlbGVjdG9ycywgRklFTERfSTE4TiwgRmllbGQsIEZpZWxkVHlwZSB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWRtaW5BY3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvYWRtaW4uYWN0aW9ucyc7XG5pbXBvcnQgeyBGaWVsZHNBY3Rpb25zIH0gZnJvbSAnLi4vc3RvcmUvZmllbGRzLmFjdGlvbnMnO1xuaW1wb3J0IHsgRmllbGRzU2VsZWN0b3JzIH0gZnJvbSAnLi4vc3RvcmUvZmllbGRzLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBBZG1pblNlbGVjdG9ycyB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2FkbWluLnNlbGVjdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1hZG1pbi1maWVsZHMtc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkbWluLWZpZWxkcy1zZWxlY3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFkbWluRmllbGRzU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBzdGF0aWMgaWQgPSAnQWRtaW5GaWVsZHNTZWxlY3RDb21wb25lbnQnO1xuICBjdXJyZW50RmllbGQkOiBPYnNlcnZhYmxlPEZpZWxkIHwgdW5kZWZpbmVkPjtcbiAgYXNzb2NpYXRpb25zJDogT2JzZXJ2YWJsZTxBc3NvY2lhdGlvbnMgfCB1bmRlZmluZWQ+O1xuICBzdWIgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIGF0dHJpYnV0ZXMkOiBPYnNlcnZhYmxlPHsgdGVjaG5pY2FsTmFtZTogc3RyaW5nOyBjbGFzc0lkOiBzdHJpbmcgfVtdPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxhbnk+LFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGVcbiAgKSB7XG4gICAgdGhpcy5jdXJyZW50RmllbGQkID0gdGhpcy5zdG9yZS5zZWxlY3QoRmllbGRzU2VsZWN0b3JzLnNlbGVjdGVkRmllbGQpO1xuICAgIHRoaXMuYXNzb2NpYXRpb25zJCA9IHRoaXMuc3RvcmUuc2VsZWN0KEFkbWluU2VsZWN0b3JzLnNlbGVjdGVkQXNzb2NpYXRpb24pO1xuICAgIHRoaXMuYXR0cmlidXRlcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmN1cnJlbnRGaWVsZCQsIHN0b3JlLnNlbGVjdChDbGFzc1NlbGVjdG9ycy5jbGFzc2VzKV0pLnBpcGUoXG4gICAgICBtYXAoKFtmaWVsZCwgY2xhc3Nlc10pID0+IHtcbiAgICAgICAgcmV0dXJuIGNsYXNzZXNcbiAgICAgICAgICAubWFwKChjbGF6eikgPT5cbiAgICAgICAgICAgIGNsYXp6LmF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgLmZpbHRlcigoYXR0cmlidXRlKSA9PiBhdHRyaWJ1dGUuZmllbGQuaWQgPT09IGZpZWxkPy5pZClcbiAgICAgICAgICAgICAgLm1hcCgoYXR0cmlidXRlKSA9PiAoeyB0ZWNobmljYWxOYW1lOiBhdHRyaWJ1dGUudGVjaG5pY2FsTmFtZSwgY2xhc3NJZDogY2xhenouaWQgfSkpXG4gICAgICAgICAgKVxuICAgICAgICAgIC5mbGF0KCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1Yi5hZGQoXG4gICAgICB0aGlzLmN1cnJlbnRGaWVsZCQucGlwZShjb25jYXRMYXRlc3RGcm9tKChmaWVsZCkgPT4gdGhpcy5hdHRyaWJ1dGVzJCkpLnN1YnNjcmliZSgoW2N1ckZpZWxkLCBhdHRyaWJ1dGVzXSkgPT4ge1xuICAgICAgICBjb25zdCBiYWNrID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbJy4nLCAnZmllbGRzJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KS50b1N0cmluZygpO1xuICAgICAgICBsZXQgZWRpdFBhdGggPSB0aGlzLnJvdXRlclxuICAgICAgICAgIC5jcmVhdGVVcmxUcmVlKFsnZmllbGRzJywgJ2VkaXQnLCBjdXJGaWVsZD8uaWRdLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSlcbiAgICAgICAgICAudG9TdHJpbmcoKTtcbiAgICAgICAgaWYgKGN1ckZpZWxkKSB7XG4gICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICAgIEFkbWluQWN0aW9ucy5tYWluQWN0aW9ucyh7XG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBhY3Rpb246IEFkbWluQWN0aW9ucy5yb3V0ZVRvKHsgcGF0aDogZWRpdFBhdGggfSksXG4gICAgICAgICAgICAgICAgICBsYWJlbDogJ2VkaXQnLFxuICAgICAgICAgICAgICAgICAgaWNvbjogJ2VkaXQnLFxuICAgICAgICAgICAgICAgICAgbW9kdWxlQWNjZXNzOiAnYWRtaW4nLFxuICAgICAgICAgICAgICAgICAgcGFnZUFjY2VzczogJ2ZpZWxkcycsXG4gICAgICAgICAgICAgICAgICBhY3Rpb25BY2Nlc3M6ICd3cml0ZSdcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGFjdGlvbjogRmllbGRzQWN0aW9ucy5jb25maXJtRmllbGREZWxldGlvbih7IGlkOiBjdXJGaWVsZC5pZCwgcGF0aDogYmFjayB9KSxcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZGVsZXRlJyxcbiAgICAgICAgICAgICAgICAgIGljb246ICdkZWxldGUnLFxuICAgICAgICAgICAgICAgICAgbW9kdWxlQWNjZXNzOiAnYWRtaW4nLFxuICAgICAgICAgICAgICAgICAgcGFnZUFjY2VzczogJ2NsYXNzZXMnLFxuICAgICAgICAgICAgICAgICAgYWN0aW9uQWNjZXNzOiAnd3JpdGUnLFxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGF0dHJpYnV0ZXMubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBjbG9zZVBhbmVsKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRmllbGRzQWN0aW9ucy51bnNlbGVjdEZpZWxkKCkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQWRtaW5BY3Rpb25zLnRvZ2dsZVBhbmVsKHsgcGFuZWxPcGVuOiBmYWxzZSB9KSk7XG4gICAgbGV0IHBhdGggPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFsnZmllbGRzJywgJ25ldyddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIEFkbWluQWN0aW9ucy5tYWluQWN0aW9ucyh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpb246IEFkbWluQWN0aW9ucy5yb3V0ZVRvKHsgcGF0aDogcGF0aC50b1N0cmluZygpIH0pLFxuICAgICAgICAgICAgbGFiZWw6ICdhZGQnLFxuICAgICAgICAgICAgaWNvbjogJ2FkZF9jb2x1bW4nLFxuICAgICAgICAgICAgbW9kdWxlQWNjZXNzOiAnYWRtaW4nLFxuICAgICAgICAgICAgcGFnZUFjY2VzczogJ2ZpZWxkcycsXG4gICAgICAgICAgICBhY3Rpb25BY2Nlc3M6ICd3cml0ZSdcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3ViLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgRklFTERfSTE4TiA9IEZJRUxEX0kxOE47XG4gIHByb3RlY3RlZCByZWFkb25seSBGaWVsZFR5cGUgPSBGaWVsZFR5cGU7XG59XG4iLCI8ZGl2XG4gICpuZ0lmPVwiY3VycmVudEZpZWxkJCB8IGFzeW5jIGFzIGZpZWxkXCJcbiAgW2lkXT1cIidwYW5lbC1maWVsZC0nICsgZmllbGQuaWRcIlxuICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2J1dHRvbi1maWVsZC0nICsgZmllbGQuaWRcIlxuICBjbGFzcz1cIm8tcGFuZWxcIlxuPlxuICA8ZGl2IGNsYXNzPVwiby1wYW5lbF9faGVhZGVyXCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCIgKGNsaWNrKT1cImNsb3NlUGFuZWwoKVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LmFjdGlvbi5jbG9zZVBhbmVsJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNsb3NlXCI+PC9wcnktaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxoMyBjbGFzcz1cImEtaDNcIj5cbiAgICAgIHt7ICdAcHJ5LmFkbWluLmZpZWxkcy5pbmZvJyB8IGkxOG4gfX1cbiAgICA8L2gzPlxuICA8L2Rpdj5cblxuICA8cHJ5LXRhYi1ncm91cCB0cmFuc2xhdGlvblN0cmluZ0Jhc2U9XCJAcHJ5LmFkbWluLlwiPlxuICAgIDxwcnktdGFiIFt0ZW1wbGF0ZVJlZl09XCJmaWVsZERldGFpbHNcIiBuYW1lPVwiZGV0YWlsc1wiPjwvcHJ5LXRhYj5cbiAgICA8cHJ5LXRhYiBbdGVtcGxhdGVSZWZdPVwiZmllbGRBc3NvY2lhdGlvbnNcIiBuYW1lPVwiY2xhc3Nlcy5hc3NvY2lhdGlvbnNcIj48L3ByeS10YWI+XG4gIDwvcHJ5LXRhYi1ncm91cD5cblxuICA8bmctdGVtcGxhdGUgI2ZpZWxkRGV0YWlscz5cbiAgICA8ZGl2IGNsYXNzPVwidS1kaXNwbGF5LWZsZXggLWNvbHVtbiAtZ2FwLTIwXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8aDQgY2xhc3M9XCJhLWg0XCI+e3sgJ0BwcnkuYWRtaW4uZmllbGRzLm5hbWUnIHwgaTE4biB9fTwvaDQ+XG4gICAgICAgIDxzcGFuPnt7IGZpZWxkLm5hbWUgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxoNCBjbGFzcz1cImEtaDRcIj57eyAnQHByeS5hZG1pbi5maWVsZHMudHlwZScgfCBpMThuIH19PC9oND5cbiAgICAgICAgPHNwYW4+e3sgRklFTERfSTE4Ti5sYWJlbCArIGZpZWxkLnR5cGUgfCBpMThuIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICBAaWYgKFtGaWVsZFR5cGUuSU5URUdFUiwgRmllbGRUeXBlLkxPTkcsIEZpZWxkVHlwZS5ERUNJTUFMLCBGaWVsZFR5cGUuSU5TVEFOVF0uaW5jbHVkZXMoZmllbGQudHlwZSkpIHtcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJhLWgzIC1uby1wYWRkaW5nXCI+e3sgJ0BwcnkuYWRtaW4uZmllbGRzLmZvcm1hdE9wdGlvbnMudGl0bGUnIHwgaTE4biB9fTwvaDM+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInUtZGlzcGxheS1mbGV4IC1jb2x1bW4gLWdhcC0yMFwiPlxuICAgICAgICAgICAgQHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgICAgICAgICAgICBAY2FzZSAoRmllbGRUeXBlLklOVEVHRVIpIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibnVtYmVyRm9ybWF0T3B0aW9uc1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBjYXNlIChGaWVsZFR5cGUuTE9ORykge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJudW1iZXJGb3JtYXRPcHRpb25zXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGNhc2UgKEZpZWxkVHlwZS5ERUNJTUFMKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm51bWJlckZvcm1hdE9wdGlvbnNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiYS1oNFwiPnt7ICdAcHJ5LmFkbWluLmZpZWxkcy5mb3JtYXRPcHRpb25zLmRlY2ltYWxQcmVjaXNpb24nIHwgaTE4biB9fTwvaDQ+XG4gICAgICAgICAgICAgICAgICBAaWYgKGZpZWxkLmRlY2ltYWxQcmVjaXNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZmllbGQuZGVjaW1hbFByZWNpc2lvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIi1pdGFsaWNcIj57eyAnQHByeS5hZG1pbi5maWVsZHMuZm9ybWF0T3B0aW9ucy5ub0RlY2ltYWxQcmVjaXNpb24nIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAY2FzZSAoRmllbGRUeXBlLklOU1RBTlQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiYS1oNFwiPnt7ICdAcHJ5LmFkbWluLmZpZWxkcy5mb3JtYXRPcHRpb25zLmRhdGVGb3JtYXQnIHwgaTE4biB9fTwvaDQ+XG4gICAgICAgICAgICAgICAgICBAaWYgKGZpZWxkLmZvcm1hdCkge1xuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnQHByeS5hZG1pbi5maWVsZHMuZm9ybWF0T3B0aW9ucy5kYXRlRm9ybWF0T3B0aW9ucycgKyBmaWVsZC5mb3JtYXQgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiLWl0YWxpY1wiPnt7ICdAcHJ5LmFkbWluLmZpZWxkcy5mb3JtYXRPcHRpb25zLm5vRGF0ZUZvcm1hdCcgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgQGlmIChmaWVsZC5jcnMpIHtcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8aDQgY2xhc3M9XCJhLWg0XCI+e3sgJ0BwcnkuYWRtaW4uZmllbGRzLmNycycgfCBpMThuIH19PC9oND5cbiAgICAgICAgICA8c3Bhbj57eyBmaWVsZC5jcnMgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgPG5nLXRlbXBsYXRlICNudW1iZXJGb3JtYXRPcHRpb25zPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGg0IGNsYXNzPVwiYS1oNFwiPnt7ICdAcHJ5LmFkbWluLmZpZWxkcy5mb3JtYXRPcHRpb25zLnVuaXQnIHwgaTE4biB9fTwvaDQ+XG4gICAgICAgIEBpZiAoZmllbGQudW5pdCkge1xuICAgICAgICAgIDxzcGFuPnt7IGZpZWxkLnVuaXQgfX08L3NwYW4+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiLWl0YWxpY1wiPnt7ICdAcHJ5LmFkbWluLmZpZWxkcy5mb3JtYXRPcHRpb25zLm5vVW5pdCcgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxoNCBjbGFzcz1cImEtaDRcIj57eyAnQHByeS5hZG1pbi5maWVsZHMuZm9ybWF0T3B0aW9ucy5pc0xvY2FsZUZvcm1hdCcgfCBpMThuIH19PC9oND5cbiAgICAgICAgPHNwYW4+e3sgKGZpZWxkLmlzTG9jYWxlRm9ybWF0ID8gJ0BwcnkuYWN0aW9uLnllcycgOiAnQHByeS5hY3Rpb24ubm8nKSB8IGkxOG4gfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZSAjZmllbGRBc3NvY2lhdGlvbnM+XG4gICAgPGg0IGNsYXNzPVwiYS1oNFwiPnt7ICdAcHJ5LmFkbWluLmNsYXNzZXMuYXNzb2NpYXRpb25zJyB8IGkxOG4gfX08L2g0PlxuICAgIDxwcnktYXNzb2NpYXRpb24gW2Fzc29jaWF0aW9uc109XCJhc3NvY2lhdGlvbnMkIHwgYXN5bmNcIj48L3ByeS1hc3NvY2lhdGlvbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tZmllbGRzLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9hZG1pbi9jb21wb25lbnRzL2FkbWluLWZpZWxkcy9hZG1pbi1maWVsZHMtc2VsZWN0L2FkbWluLWZpZWxkcy1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvYWRtaW4vY29tcG9uZW50cy9hZG1pbi1maWVsZHMvYWRtaW4tZmllbGRzLXNlbGVjdC9hZG1pbi1maWVsZHMtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQWdCLGNBQWMsRUFBRSxVQUFVLEVBQVMsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7OztBQU1oRSxNQUFNLE9BQU8sMEJBQTBCO2FBQzlCLE9BQUUsR0FBRyw0QkFBNEIsQUFBL0IsQ0FBZ0M7SUFNekMsWUFDVSxLQUFpQixFQUNqQixNQUFjLEVBQ2QsS0FBcUI7UUFGckIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixXQUFN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dGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGNvbmNhdExhdGVzdEZyb20gfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgQXNzb2NpYXRpb25zLCBDbGFzc1NlbGVjdG9ycywgRklFTERfSTE4TiwgRmllbGQsIEZpZWxkVHlwZSB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWRtaW5BY3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvYWRtaW4uYWN0aW9ucyc7XG5pbXBvcnQgeyBGaWVsZHNBY3Rpb25zIH0gZnJvbSAnLi4vc3RvcmUvZmllbGRzLmFjdGlvbnMnO1xuaW1wb3J0IHsgRmllbGRzU2VsZWN0b3JzIH0gZnJvbSAnLi4vc3RvcmUvZmllbGRzLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBBZG1pblNlbGVjdG9ycyB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2FkbWluLnNlbGVjdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1hZG1pbi1maWVsZHMtc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkbWluLWZpZWxkcy1zZWxlY3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFkbWluRmllbGRzU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBzdGF0aWMgaWQgPSAnQWRtaW5GaWVsZHNTZWxlY3RDb21wb25lbnQnO1xuICBjdXJyZW50RmllbGQkOiBPYnNlcnZhYmxlPEZpZWxkIHwgdW5kZWZpbmVkPjtcbiAgYXNzb2NpYXRpb25zJDogT2JzZXJ2YWJsZTxBc3NvY2lhdGlvbnMgfCB1bmRlZmluZWQ+O1xuICBzdWIgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIGF0dHJpYnV0ZXMkOiBPYnNlcnZhYmxlPHsgdGVjaG5pY2FsTmFtZTogc3RyaW5nOyBjbGFzc0lkOiBzdHJpbmcgfVtdPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxhbnk+LFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGVcbiAgKSB7XG4gICAgdGhpcy5jdXJyZW50RmllbGQkID0gdGhpcy5zdG9yZS5zZWxlY3QoRmllbGRzU2VsZWN0b3JzLnNlbGVjdGVkRmllbGQpO1xuICAgIHRoaXMuYXNzb2NpYXRpb25zJCA9IHRoaXMuc3RvcmUuc2VsZWN0KEFkbWluU2VsZWN0b3JzLnNlbGVjdGVkQXNzb2NpYXRpb24pO1xuICAgIHRoaXMuYXR0cmlidXRlcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmN1cnJlbnRGaWVsZCQsIHN0b3JlLnNlbGVjdChDbGFzc1NlbGVjdG9ycy5jbGFzc2VzKV0pLnBpcGUoXG4gICAgICBtYXAoKFtmaWVsZCwgY2xhc3Nlc10pID0+IHtcbiAgICAgICAgcmV0dXJuIGNsYXNzZXNcbiAgICAgICAgICAubWFwKChjbGF6eikgPT5cbiAgICAgICAgICAgIGNsYXp6LmF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgLmZpbHRlcigoYXR0cmlidXRlKSA9PiBhdHRyaWJ1dGUuZmllbGQuaWQgPT09IGZpZWxkPy5pZClcbiAgICAgICAgICAgICAgLm1hcCgoYXR0cmlidXRlKSA9PiAoeyB0ZWNobmljYWxOYW1lOiBhdHRyaWJ1dGUudGVjaG5pY2FsTmFtZSwgY2xhc3NJZDogY2xhenouaWQgfSkpXG4gICAgICAgICAgKVxuICAgICAgICAgIC5mbGF0KCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1Yi5hZGQoXG4gICAgICB0aGlzLmN1cnJlbnRGaWVsZCQucGlwZShjb25jYXRMYXRlc3RGcm9tKChmaWVsZCkgPT4gdGhpcy5hdHRyaWJ1dGVzJCkpLnN1YnNjcmliZSgoW2N1ckZpZWxkLCBhdHRyaWJ1dGVzXSkgPT4ge1xuICAgICAgICBjb25zdCBiYWNrID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbJy4nLCAnZmllbGRzJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KS50b1N0cmluZygpO1xuICAgICAgICBsZXQgZWRpdFBhdGggPSB0aGlzLnJvdXRlclxuICAgICAgICAgIC5jcmVhdGVVcmxUcmVlKFsnZmllbGRzJywgJ2VkaXQnLCBjdXJGaWVsZD8uaWRdLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSlcbiAgICAgICAgICAudG9TdHJpbmcoKTtcbiAgICAgICAgaWYgKGN1ckZpZWxkKSB7XG4gICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICAgIEFkbWluQWN0aW9ucy5tYWluQWN0aW9ucyh7XG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBhY3Rpb246IEFkbWluQWN0aW9ucy5yb3V0ZVRvKHsgcGF0aDogZWRpdFBhdGggfSksXG4gICAgICAgICAgICAgICAgICBsYWJlbDogJ2VkaXQnLFxuICAgICAgICAgICAgICAgICAgaWNvbjogJ2VkaXQnLFxuICAgICAgICAgICAgICAgICAgbW9kdWxlQWNjZXNzOiAnYWRtaW4nLFxuICAgICAgICAgICAgICAgICAgcGFnZUFjY2VzczogJ2ZpZWxkcycsXG4gICAgICAgICAgICAgICAgICBhY3Rpb25BY2Nlc3M6ICd3cml0ZSdcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGFjdGlvbjogRmllbGRzQWN0aW9ucy5jb25maXJtRmllbGREZWxldGlvbih7IGlkOiBjdXJGaWVsZC5pZCwgcGF0aDogYmFjayB9KSxcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZGVsZXRlJyxcbiAgICAgICAgICAgICAgICAgIGljb246ICdkZWxldGUnLFxuICAgICAgICAgICAgICAgICAgbW9kdWxlQWNjZXNzOiAnYWRtaW4nLFxuICAgICAgICAgICAgICAgICAgcGFnZUFjY2VzczogJ2NsYXNzZXMnLFxuICAgICAgICAgICAgICAgICAgYWN0aW9uQWNjZXNzOiAnd3JpdGUnLFxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGF0dHJpYnV0ZXMubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBjbG9zZVBhbmVsKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRmllbGRzQWN0aW9ucy51bnNlbGVjdEZpZWxkKCkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQWRtaW5BY3Rpb25zLnRvZ2dsZVBhbmVsKHsgcGFuZWxPcGVuOiBmYWxzZSB9KSk7XG4gICAgbGV0IHBhdGggPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFsnZmllbGRzJywgJ25ldyddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIEFkbWluQWN0aW9ucy5tYWluQWN0aW9ucyh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpb246IEFkbWluQWN0aW9ucy5yb3V0ZVRvKHsgcGF0aDogcGF0aC50b1N0cmluZygpIH0pLFxuICAgICAgICAgICAgbGFiZWw6ICdhZGQnLFxuICAgICAgICAgICAgaWNvbjogJ2FkZF9jb2x1bW4nLFxuICAgICAgICAgICAgbW9kdWxlQWNjZXNzOiAnYWRtaW4nLFxuICAgICAgICAgICAgcGFnZUFjY2VzczogJ2ZpZWxkcycsXG4gICAgICAgICAgICBhY3Rpb25BY2Nlc3M6ICd3cml0ZSdcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3ViLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgRklFTERfSTE4TiA9IEZJRUxEX0kxOE47XG4gIHByb3RlY3RlZCByZWFkb25seSBGaWVsZFR5cGUgPSBGaWVsZFR5cGU7XG59XG4iLCI8ZGl2XG4gICpuZ0lmPVwiY3VycmVudEZpZWxkJCB8IGFzeW5jIGFzIGZpZWxkXCJcbiAgW2lkXT1cIidwYW5lbC1maWVsZC0nICsgZmllbGQuaWRcIlxuICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2J1dHRvbi1maWVsZC0nICsgZmllbGQuaWRcIlxuICBjbGFzcz1cIm8tcGFuZWxcIlxuPlxuICA8ZGl2IGNsYXNzPVwiby1wYW5lbF9faGVhZGVyXCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCIgKGNsaWNrKT1cImNsb3NlUGFuZWwoKVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LmFjdGlvbi5jbG9zZVBhbmVsJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNsb3NlXCI+PC9wcnktaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxoMyBjbGFzcz1cImEtaDNcIj5cbiAgICAgIHt7ICdAcHJ5LmFkbWluLmZpZWxkcy5pbmZvJyB8IGkxOG4gfX1cbiAgICA8L2gzPlxuICA8L2Rpdj5cblxuICA8cHJ5LXRhYi1ncm91cCB0cmFuc2xhdGlvblN0cmluZ0Jhc2U9XCJAcHJ5LmFkbWluLlwiPlxuICAgIDxwcnktdGFiIFt0ZW1wbGF0ZVJlZl09XCJmaWVsZERldGFpbHNcIiBuYW1lPVwiZGV0YWlsc1wiPjwvcHJ5LXRhYj5cbiAgICA8cHJ5LXRhYiBbdGVtcGxhdGVSZWZdPVwiZmllbGRBc3NvY2lhdGlvbnNcIiBuYW1lPVwiY2xhc3Nlcy5hc3NvY2lhdGlvbnNcIj48L3ByeS10YWI+XG4gIDwvcHJ5LXRhYi1ncm91cD5cblxuICA8bmctdGVtcGxhdGUgI2ZpZWxkRGV0YWlscz5cbiAgICA8ZGl2IGNsYXNzPVwidS1kaXNwbGF5LWZsZXggLWNvbHVtbiAtZ2FwLTIwXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8aDQgY2xhc3M9XCJhLWg0XCI+e3sgJ0BwcnkuYWRtaW4uZmllbGRzLm5hbWUnIHwgaTE4biB9fTwvaDQ+XG4gICAgICAgIDxzcGFuPnt7IGZpZWxkLm5hbWUgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxoNCBjbGFzcz1cImEtaDRcIj57eyAnQHByeS5hZG1pbi5maWVsZHMudHlwZScgfCBpMThuIH19PC9oND5cbiAgICAgICAgPHNwYW4+e3sgRklFTERfSTE4Ti5sYWJlbCArIGZpZWxkLnR5cGUgfCBpMThuIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICBAaWYgKFtGaWVsZFR5cGUuSU5URUdFUiwgRmllbGRUeXBlLkxPTkcsIEZpZWxkVHlwZS5ERUNJTUFMLCBGaWVsZFR5cGUuSU5TVEFOVF0uaW5jbHVkZXMoZmllbGQudHlwZSkpIHtcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJhLWgzIC1uby1wYWRkaW5nXCI+e3sgJ0BwcnkuYWRtaW4uZmllbGRzLmZvcm1hdE9wdGlvbnMudGl0bGUnIHwgaTE4biB9fTwvaDM+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInUtZGlzcGxheS1mbGV4IC1jb2x1bW4gLWdhcC0yMFwiPlxuICAgICAgICAgICAgQHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgICAgICAgICAgICBAY2FzZSAoRmllbGRUeXBlLklOVEVHRVIpIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibnVtYmVyRm9ybWF0T3B0aW9uc1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBjYXNlIChGaWVsZFR5cGUuTE9ORykge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJudW1iZXJGb3JtYXRPcHRpb25zXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGNhc2UgKEZpZWxkVHlwZS5ERUNJTUFMKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm51bWJlckZvcm1hdE9wdGlvbnNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiYS1oNFwiPnt7ICdAcHJ5LmFkbWluLmZpZWxkcy5mb3JtYXRPcHRpb25zLmRlY2ltYWxQcmVjaXNpb24nIHwgaTE4biB9fTwvaDQ+XG4gICAgICAgICAgICAgICAgICBAaWYgKGZpZWxkLmRlY2ltYWxQcmVjaXNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZmllbGQuZGVjaW1hbFByZWNpc2lvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIi1pdGFsaWNcIj57eyAnQHByeS5hZG1pbi5maWVsZHMuZm9ybWF0T3B0aW9ucy5ub0RlY2ltYWxQcmVjaXNpb24nIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAY2FzZSAoRmllbGRUeXBlLklOU1RBTlQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiYS1oNFwiPnt7ICdAcHJ5LmFkbWluLmZpZWxkcy5mb3JtYXRPcHRpb25zLmRhdGVGb3JtYXQnIHwgaTE4biB9fTwvaDQ+XG4gICAgICAgICAgICAgICAgICBAaWYgKGZpZWxkLmZvcm1hdCkge1xuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnQHByeS5hZG1pbi5maWVsZHMuZm9ybWF0T3B0aW9ucy5kYXRlRm9ybWF0T3B0aW9ucy4nICsgZmllbGQuZm9ybWF0IHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIi1pdGFsaWNcIj57eyAnQHByeS5hZG1pbi5maWVsZHMuZm9ybWF0T3B0aW9ucy5ub0RhdGVGb3JtYXQnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIEBpZiAoZmllbGQuY3JzKSB7XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGg0IGNsYXNzPVwiYS1oNFwiPnt7ICdAcHJ5LmFkbWluLmZpZWxkcy5jcnMnIHwgaTE4biB9fTwvaDQ+XG4gICAgICAgICAgPHNwYW4+e3sgZmllbGQuY3JzIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjbnVtYmVyRm9ybWF0T3B0aW9ucz5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxoNCBjbGFzcz1cImEtaDRcIj57eyAnQHByeS5hZG1pbi5maWVsZHMuZm9ybWF0T3B0aW9ucy51bml0JyB8IGkxOG4gfX08L2g0PlxuICAgICAgICBAaWYgKGZpZWxkLnVuaXQpIHtcbiAgICAgICAgICA8c3Bhbj57eyBmaWVsZC51bml0IH19PC9zcGFuPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIi1pdGFsaWNcIj57eyAnQHByeS5hZG1pbi5maWVsZHMuZm9ybWF0T3B0aW9ucy5ub1VuaXQnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2PlxuICAgICAgICA8aDQgY2xhc3M9XCJhLWg0XCI+e3sgJ0BwcnkuYWRtaW4uZmllbGRzLmZvcm1hdE9wdGlvbnMubG9jYWxlRm9ybWF0JyB8IGkxOG4gfX08L2g0PlxuICAgICAgICA8c3Bhbj57eyAoZmllbGQubG9jYWxlRm9ybWF0ID8gJ0BwcnkuYWN0aW9uLnllcycgOiAnQHByeS5hY3Rpb24ubm8nKSB8IGkxOG4gfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZSAjZmllbGRBc3NvY2lhdGlvbnM+XG4gICAgPGg0IGNsYXNzPVwiYS1oNFwiPnt7ICdAcHJ5LmFkbWluLmNsYXNzZXMuYXNzb2NpYXRpb25zJyB8IGkxOG4gfX08L2g0PlxuICAgIDxwcnktYXNzb2NpYXRpb24gW2Fzc29jaWF0aW9uc109XCJhc3NvY2lhdGlvbnMkIHwgYXN5bmNcIj48L3ByeS1hc3NvY2lhdGlvbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
|