myrta-ui 14.0.0-beta.1 → 14.0.0-beta.2
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/README.md +1 -0
- package/esm2020/lib/components/badges/components/badge/badge.component.mjs +2 -2
- package/esm2020/lib/components/button/button.component.mjs +3 -3
- package/esm2020/lib/components/cdk-tooltip/cdk-tooltip.directive.mjs +1 -1
- package/esm2020/lib/components/chars-left/chars-left.component.mjs +6 -3
- package/esm2020/lib/components/dropdown/dropdown.component.mjs +2 -2
- package/esm2020/lib/components/error-message/error-message.component.mjs +7 -4
- package/esm2020/lib/components/form/checkbox/checkbox.component.mjs +5 -12
- package/esm2020/lib/components/form/checkbox/checkbox.enum.mjs +2 -5
- package/esm2020/lib/components/form/checkbox-group/checkbox-group.component.mjs +10 -4
- package/esm2020/lib/components/form/checkbox-group/components/checkbox-group-header/checkbox-group-header.component.mjs +1 -1
- package/esm2020/lib/components/form/checkbox-group/components/checkbox-group-item/checkbox-group-item.component.mjs +24 -15
- package/esm2020/lib/components/form/document-editor/document-editor.component.mjs +1 -1
- package/esm2020/lib/components/form/editor/config/default-inline-style.mjs +6 -0
- package/esm2020/lib/components/form/editor/editor.component.mjs +45 -13
- package/esm2020/lib/components/form/editor/editor.enum.mjs +2 -0
- package/esm2020/lib/components/form/input-date-time/input-date-time.component.mjs +50 -18
- package/esm2020/lib/components/form/input-date-time/input-date-time.enum.mjs +1 -1
- package/esm2020/lib/components/form/input-datepicker/input-datepicker.component.mjs +13 -8
- package/esm2020/lib/components/form/input-file/input-file.component.mjs +4 -3
- package/esm2020/lib/components/form/input-file-image/components/file-image-edit-modal/file-image-edit-modal.component.mjs +3 -3
- package/esm2020/lib/components/form/input-file-image/input-file-image.component.mjs +23 -12
- package/esm2020/lib/components/form/input-file-image/input-file-image.enum.mjs +3 -3
- package/esm2020/lib/components/form/input-number/input-number.component.mjs +54 -27
- package/esm2020/lib/components/form/input-number/input-number.enum.mjs +1 -1
- package/esm2020/lib/components/form/input-opt/components/input-opt/input-opt.component.mjs +2 -4
- package/esm2020/lib/components/form/input-password/input-password.component.mjs +37 -23
- package/esm2020/lib/components/form/input-password/input-password.enum.mjs +1 -1
- package/esm2020/lib/components/form/input-password/input-password.module.mjs +12 -4
- package/esm2020/lib/components/form/input-phone/input-phone.component.mjs +2 -2
- package/esm2020/lib/components/form/input-search/input-search.component.mjs +44 -36
- package/esm2020/lib/components/form/input-search/input-search.enum.mjs +1 -1
- package/esm2020/lib/components/form/input-search/input-search.module.mjs +7 -4
- package/esm2020/lib/components/form/input-select/input-select.component.mjs +10 -4
- package/esm2020/lib/components/form/input-tel/assets/base64.mjs +4 -0
- package/esm2020/lib/components/form/input-tel/data/all-countries.mjs +1323 -0
- package/esm2020/lib/components/form/input-tel/data/country-iso.enum.mjs +247 -0
- package/esm2020/lib/components/form/input-tel/data/phone-number-format.enum.mjs +6 -0
- package/esm2020/lib/components/form/input-tel/data/search-country-field.enum.mjs +8 -0
- package/esm2020/lib/components/form/input-tel/directives/input-tel.directive.mjs +62 -0
- package/esm2020/lib/components/form/input-tel/enums/input-phone.enum.mjs +7 -0
- package/esm2020/lib/components/form/input-tel/input-tel.component.mjs +389 -0
- package/esm2020/lib/components/form/input-tel/input-tel.module.mjs +47 -0
- package/esm2020/lib/components/form/input-tel/models/country.model.mjs +2 -0
- package/esm2020/lib/components/form/input-text/input-text.component.mjs +35 -29
- package/esm2020/lib/components/form/input-textarea/input-textarea.component.mjs +47 -42
- package/esm2020/lib/components/form/input-timepicker/input-timepicker.component.mjs +3 -3
- package/esm2020/lib/components/form/radio/radio.component.mjs +3 -3
- package/esm2020/lib/components/form/radio-group/components/radio-group-header/radio-group-header.component.mjs +49 -0
- package/esm2020/lib/components/form/radio-group/components/radio-group-item/radio-group-item.component.mjs +69 -0
- package/esm2020/lib/components/form/radio-group/helpers/filter-search-group.mjs +27 -0
- package/esm2020/lib/components/form/radio-group/helpers/get-item-by-id.mjs +11 -0
- package/esm2020/lib/components/form/radio-group/helpers/move-selected-to-first.mjs +27 -0
- package/esm2020/lib/components/form/radio-group/models/radio-group.model.mjs +2 -0
- package/esm2020/lib/components/form/radio-group/radio-group.component.mjs +185 -0
- package/esm2020/lib/components/form/radio-group/radio-group.module.mjs +47 -0
- package/esm2020/lib/components/form/rating/rating.component.mjs +4 -4
- package/esm2020/lib/components/form/switch/switch.component.mjs +2 -2
- package/esm2020/lib/components/gallery/components/gallery-confirm-modal/gallery-confirm-modal.component.mjs +3 -3
- package/esm2020/lib/components/gallery/components/gallery-item/gallery-item.component.mjs +4 -4
- package/esm2020/lib/components/hint-error-message/hint-error-message.component.mjs +6 -6
- package/esm2020/lib/components/label/label.component.mjs +3 -3
- package/esm2020/lib/components/modal/modal.component.mjs +13 -3
- package/esm2020/lib/components/paginator/paginator.component.mjs +16 -6
- package/esm2020/lib/components/paginator/paginator.module.mjs +8 -8
- package/esm2020/lib/components/progress/progress.component.mjs +2 -2
- package/esm2020/lib/components/save-state/components/save-state-editor/save-state-editor.component.mjs +2 -2
- package/esm2020/lib/components/save-state/save-state.component.mjs +3 -3
- package/esm2020/lib/components/save-state/save-state.enum.mjs +1 -1
- package/esm2020/lib/components/table/table.component.mjs +3 -3
- package/esm2020/lib/components/tabs/tabs-group/tabs-group.component.mjs +2 -2
- package/esm2020/lib/components/tooltip/tooltip-trigger/tooltip-trigger.component.mjs +4 -14
- package/esm2020/lib/components/wrappers/content-wrapper/content-wrapper.component.mjs +2 -2
- package/esm2020/lib/enums/typed.input.state.mjs +1 -1
- package/esm2020/lib/services/index.mjs +2 -1
- package/esm2020/lib/services/mrx-autosave/mrx-autosave.service.mjs +1 -1
- package/esm2020/lib/services/mrx-form-validator/constants/invalid-messages.mjs +10 -0
- package/esm2020/lib/services/mrx-form-validator/helpers/get-error-message.helper.mjs +10 -0
- package/esm2020/lib/services/mrx-form-validator/helpers/get-sorting-validations.helper.mjs +28 -0
- package/esm2020/lib/services/mrx-form-validator/models/index.mjs +4 -0
- package/esm2020/lib/services/mrx-form-validator/models/validations-options.model.mjs +2 -0
- package/esm2020/lib/services/mrx-form-validator/models/validations-settings.model.mjs +2 -0
- package/esm2020/lib/services/mrx-form-validator/models/validations-types.model.mjs +22 -0
- package/esm2020/lib/services/mrx-form-validator/mrx-form-validator.mjs +84 -183
- package/esm2020/lib/services/mrx-form-validator/validations/callback.validation.mjs +15 -0
- package/esm2020/lib/services/mrx-form-validator/validations/email.validation.mjs +11 -0
- package/esm2020/lib/services/mrx-form-validator/validations/max-length.validation.mjs +10 -0
- package/esm2020/lib/services/mrx-form-validator/validations/max-value.validation.mjs +10 -0
- package/esm2020/lib/services/mrx-form-validator/validations/min-length.validation.mjs +11 -0
- package/esm2020/lib/services/mrx-form-validator/validations/min-value.validation.mjs +10 -0
- package/esm2020/lib/services/mrx-form-validator/validations/pattern.validation.mjs +11 -0
- package/esm2020/lib/services/mrx-form-validator/validations/required.validation.mjs +22 -0
- package/esm2020/public-api.mjs +7 -1
- package/fesm2015/myrta-ui.mjs +4004 -1339
- package/fesm2015/myrta-ui.mjs.map +1 -1
- package/fesm2020/myrta-ui.mjs +3999 -1341
- package/fesm2020/myrta-ui.mjs.map +1 -1
- package/lib/components/chars-left/chars-left.component.d.ts +1 -0
- package/lib/components/error-message/error-message.component.d.ts +2 -1
- package/lib/components/form/checkbox/checkbox.component.d.ts +2 -4
- package/lib/components/form/checkbox/checkbox.enum.d.ts +0 -4
- package/lib/components/form/checkbox-group/checkbox-group.component.d.ts +3 -1
- package/lib/components/form/checkbox-group/components/checkbox-group-item/checkbox-group-item.component.d.ts +4 -1
- package/lib/components/form/editor/config/default-inline-style.d.ts +11 -0
- package/lib/components/form/editor/editor.component.d.ts +13 -4
- package/lib/components/form/editor/editor.enum.d.ts +5 -0
- package/lib/components/form/input-date-time/input-date-time.component.d.ts +6 -2
- package/lib/components/form/input-date-time/input-date-time.enum.d.ts +1 -1
- package/lib/components/form/input-datepicker/input-datepicker.component.d.ts +2 -1
- package/lib/components/form/input-file-image/components/file-image-edit-modal/file-image-edit-modal.component.d.ts +6 -0
- package/lib/components/form/input-file-image/input-file-image.component.d.ts +4 -2
- package/lib/components/form/input-file-image/input-file-image.enum.d.ts +2 -2
- package/lib/components/form/input-number/input-number.component.d.ts +11 -3
- package/lib/components/form/input-number/input-number.enum.d.ts +2 -2
- package/lib/components/form/input-opt/components/input-opt/input-opt.component.d.ts +2 -2
- package/lib/components/form/input-password/input-password.component.d.ts +14 -9
- package/lib/components/form/input-password/input-password.enum.d.ts +4 -0
- package/lib/components/form/input-password/input-password.module.d.ts +3 -1
- package/lib/components/form/input-search/input-search.component.d.ts +15 -11
- package/lib/components/form/input-search/input-search.enum.d.ts +5 -0
- package/lib/components/form/input-search/input-search.module.d.ts +2 -1
- package/lib/components/form/input-select/input-select.component.d.ts +3 -1
- package/lib/components/form/input-tel/assets/base64.d.ts +3 -0
- package/lib/components/form/input-tel/data/all-countries.d.ts +1 -0
- package/lib/components/form/input-tel/data/country-iso.enum.d.ts +245 -0
- package/lib/components/form/input-tel/data/phone-number-format.enum.d.ts +5 -0
- package/lib/components/form/input-tel/data/search-country-field.enum.d.ts +6 -0
- package/lib/components/form/input-tel/directives/input-tel.directive.d.ts +21 -0
- package/lib/components/form/input-tel/enums/input-phone.enum.d.ts +11 -0
- package/lib/components/form/input-tel/input-tel.component.d.ts +89 -0
- package/lib/components/form/input-tel/input-tel.module.d.ts +14 -0
- package/lib/components/form/input-tel/models/country.model.d.ts +18 -0
- package/lib/components/form/input-text/input-text.component.d.ts +12 -9
- package/lib/components/form/input-textarea/input-textarea.component.d.ts +12 -15
- package/lib/components/form/radio-group/components/radio-group-header/radio-group-header.component.d.ts +20 -0
- package/lib/components/form/radio-group/components/radio-group-item/radio-group-item.component.d.ts +28 -0
- package/lib/components/form/radio-group/helpers/filter-search-group.d.ts +2 -0
- package/lib/components/form/radio-group/helpers/get-item-by-id.d.ts +2 -0
- package/lib/components/form/radio-group/helpers/move-selected-to-first.d.ts +2 -0
- package/lib/components/form/radio-group/models/radio-group.model.d.ts +12 -0
- package/lib/components/form/radio-group/radio-group.component.d.ts +60 -0
- package/lib/components/form/radio-group/radio-group.module.d.ts +16 -0
- package/lib/components/modal/modal.component.d.ts +1 -0
- package/lib/components/paginator/paginator.component.d.ts +3 -1
- package/lib/components/paginator/paginator.module.d.ts +3 -3
- package/lib/components/save-state/save-state.enum.d.ts +1 -1
- package/lib/components/tooltip/tooltip-trigger/tooltip-trigger.component.d.ts +0 -1
- package/lib/services/index.d.ts +1 -0
- package/lib/services/mrx-autosave/mrx-autosave.service.d.ts +1 -1
- package/lib/services/mrx-form-validator/constants/invalid-messages.d.ts +9 -0
- package/lib/services/mrx-form-validator/helpers/get-error-message.helper.d.ts +3 -0
- package/lib/services/mrx-form-validator/helpers/get-sorting-validations.helper.d.ts +2 -0
- package/lib/services/mrx-form-validator/models/index.d.ts +3 -0
- package/lib/services/mrx-form-validator/models/validations-options.model.d.ts +28 -0
- package/lib/services/mrx-form-validator/models/validations-settings.model.d.ts +7 -0
- package/lib/services/mrx-form-validator/models/validations-types.model.d.ts +19 -0
- package/lib/services/mrx-form-validator/mrx-form-validator.d.ts +4 -32
- package/lib/services/mrx-form-validator/validations/callback.validation.d.ts +6 -0
- package/lib/services/mrx-form-validator/validations/email.validation.d.ts +6 -0
- package/lib/services/mrx-form-validator/validations/max-length.validation.d.ts +6 -0
- package/lib/services/mrx-form-validator/validations/max-value.validation.d.ts +6 -0
- package/lib/services/mrx-form-validator/validations/min-length.validation.d.ts +6 -0
- package/lib/services/mrx-form-validator/validations/min-value.validation.d.ts +6 -0
- package/lib/services/mrx-form-validator/validations/pattern.validation.d.ts +6 -0
- package/lib/services/mrx-form-validator/validations/required.validation.d.ts +6 -0
- package/package.json +3 -1
- package/public-api.d.ts +5 -0
|
@@ -2,6 +2,7 @@ import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, Ou
|
|
|
2
2
|
import { NG_VALUE_ACCESSOR, Validators } from '@angular/forms';
|
|
3
3
|
import { InputNumberSizesEnum } from './input-number.enum';
|
|
4
4
|
import { v4 as uuidv4 } from 'uuid';
|
|
5
|
+
import { distinctUntilChanged, pairwise, startWith } from 'rxjs/operators';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
import * as i1 from "@angular/forms";
|
|
7
8
|
import * as i2 from "@angular/common";
|
|
@@ -12,6 +13,7 @@ const noop = () => {
|
|
|
12
13
|
};
|
|
13
14
|
export class InputNumberComponent {
|
|
14
15
|
constructor(fb) {
|
|
16
|
+
this.value = null;
|
|
15
17
|
this.disabled = false;
|
|
16
18
|
this.readonly = false;
|
|
17
19
|
this.decimals = 2;
|
|
@@ -30,10 +32,13 @@ export class InputNumberComponent {
|
|
|
30
32
|
this.allowNegative = false;
|
|
31
33
|
this.size = 'large';
|
|
32
34
|
this.isNullableValue = false;
|
|
35
|
+
this.isAutoCorrectingValue = false;
|
|
33
36
|
// ERROR
|
|
34
37
|
this.invalid = false;
|
|
35
38
|
this.checkInvalid = null;
|
|
39
|
+
this.changed = new EventEmitter();
|
|
36
40
|
this.modelChange = new EventEmitter();
|
|
41
|
+
this.blurred = new EventEmitter();
|
|
37
42
|
this.numberForm = fb.group({
|
|
38
43
|
number: [''],
|
|
39
44
|
});
|
|
@@ -128,40 +133,46 @@ export class InputNumberComponent {
|
|
|
128
133
|
this._delimitersInitialised = true;
|
|
129
134
|
}
|
|
130
135
|
ngOnInit() {
|
|
131
|
-
this.numberForm.valueChanges.subscribe(
|
|
132
|
-
|
|
133
|
-
if (this.numberForm.valid) {
|
|
134
|
-
const num = this.numberForm.value.number;
|
|
135
|
-
let numValue;
|
|
136
|
-
if (num === '') {
|
|
137
|
-
this.propagateChange(null);
|
|
138
|
-
this.modelChange.emit({ value: null, id: this.uuid });
|
|
139
|
-
}
|
|
140
|
-
if (num && typeof (num) === 'string') {
|
|
141
|
-
numValue = parseFloat(num.replace(',', '.').split(this.thousandsSeparator).join(''));
|
|
142
|
-
this.propagateChange(numValue);
|
|
143
|
-
this.modelChange.emit({ value: numValue, id: this.uuid });
|
|
144
|
-
}
|
|
145
|
-
else if (typeof (num) === 'number') {
|
|
146
|
-
numValue = num;
|
|
147
|
-
this.propagateChange(numValue);
|
|
148
|
-
this.modelChange.emit({ value: numValue, id: this.uuid });
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
136
|
+
this.numberForm.valueChanges.pipe(startWith(null), distinctUntilChanged(), pairwise()).subscribe(([oldValue, newValue]) => {
|
|
137
|
+
this._formattingValue(newValue.number);
|
|
152
138
|
});
|
|
153
139
|
this.numberForm.statusChanges.subscribe(val => {
|
|
154
140
|
this.checkIsValid();
|
|
155
141
|
});
|
|
156
142
|
}
|
|
143
|
+
_formattingValue(insideValue) {
|
|
144
|
+
if (this.invokeChanged) {
|
|
145
|
+
if (this.numberForm.valid) {
|
|
146
|
+
if (!insideValue && insideValue !== 0) {
|
|
147
|
+
this.updateValue(null);
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
this.updateValue(insideValue);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
157
155
|
resetToMax(event) {
|
|
158
156
|
event.preventDefault();
|
|
159
157
|
const f = this.getControl('number');
|
|
160
158
|
f.setValue(this._max);
|
|
161
159
|
}
|
|
162
160
|
checkIsValid() {
|
|
163
|
-
|
|
164
|
-
|
|
161
|
+
if (!this.isAutoCorrectingValue) {
|
|
162
|
+
const f = this.getControl('number');
|
|
163
|
+
this._isValid = this.numberForm.disabled || (f && f.valid || (!f.dirty && !f.touched));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
onPhoneInputBlur() {
|
|
167
|
+
if (this.isAutoCorrectingValue) {
|
|
168
|
+
const f = this.getControl('number');
|
|
169
|
+
if (f.value > this._max) {
|
|
170
|
+
f.setValue(this._max);
|
|
171
|
+
}
|
|
172
|
+
if (f.value < this._min) {
|
|
173
|
+
f.setValue(this._min);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
165
176
|
}
|
|
166
177
|
writeValue(value) {
|
|
167
178
|
const f = this.getControl('number');
|
|
@@ -176,17 +187,27 @@ export class InputNumberComponent {
|
|
|
176
187
|
registerOnTouched(fn) {
|
|
177
188
|
this.onTouchedCallback = fn;
|
|
178
189
|
}
|
|
190
|
+
updateValue(insideValue) {
|
|
191
|
+
this.value = insideValue;
|
|
192
|
+
this.changed.emit(insideValue);
|
|
193
|
+
this.modelChange.emit({ value: insideValue, id: this.uuid });
|
|
194
|
+
this.propagateChange(insideValue);
|
|
195
|
+
}
|
|
196
|
+
onBlur(event) {
|
|
197
|
+
this.onPhoneInputBlur();
|
|
198
|
+
this.blurred.emit({ value: this.value, id: this.uuid });
|
|
199
|
+
}
|
|
179
200
|
}
|
|
180
201
|
InputNumberComponent._delimitersInitialised = false;
|
|
181
202
|
InputNumberComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: InputNumberComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
182
|
-
InputNumberComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: InputNumberComponent, selector: "mrx-input-number", inputs: { fields: "fields", placeholder: "placeholder", innerClass: "innerClass", customClasses: "customClasses", required: "required", allowNegative: "allowNegative", size: "size", separator: "separator", decimalSeparator: "decimalSeparator", isNullableValue: "isNullableValue", invalid: "invalid", checkInvalid: "checkInvalid", setNumberType: ["numberType", "setNumberType"], setInvalidMessage: ["invalidMessage", "setInvalidMessage"], setDisabled: ["disabled", "setDisabled"], setReadonly: ["readonly", "setReadonly"], setMin: ["minValue", "setMin"], setMax: ["maxValue", "setMax"] }, outputs: { modelChange: "modelChange" }, providers: [
|
|
203
|
+
InputNumberComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: InputNumberComponent, selector: "mrx-input-number", inputs: { fields: "fields", placeholder: "placeholder", innerClass: "innerClass", customClasses: "customClasses", required: "required", allowNegative: "allowNegative", size: "size", separator: "separator", decimalSeparator: "decimalSeparator", isNullableValue: "isNullableValue", isAutoCorrectingValue: "isAutoCorrectingValue", invalid: "invalid", checkInvalid: "checkInvalid", setNumberType: ["numberType", "setNumberType"], setInvalidMessage: ["invalidMessage", "setInvalidMessage"], setDisabled: ["disabled", "setDisabled"], setReadonly: ["readonly", "setReadonly"], setMin: ["minValue", "setMin"], setMax: ["maxValue", "setMax"] }, outputs: { changed: "changed", modelChange: "modelChange", blurred: "blurred" }, providers: [
|
|
183
204
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputNumberComponent), multi: true },
|
|
184
|
-
], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true }], ngImport: i0, template: "<div\r\n class=\"mrx-input-number\"\r\n [class]=\"getClasses\"\r\n [class.mrx-input-error]=\"!isValid || invalid\"\r\n [class.-disabled]=\"disabled\"\r\n [class.-readonly]=\"readonly\"\r\n>\r\n <div class=\"mrx-input-number__wrapper\">\r\n <form [formGroup]=\"numberForm\">\r\n <div>\r\n <input\r\n #inputElement\r\n autocomplete=\"nope\"\r\n formControlName=\"number\"\r\n type=\"text\"\r\n [thousandSeparator]=\"thousandsSeparator\"\r\n [decimalMarker]=\"decimalMarker\"\r\n [class]=\"innerClass\"\r\n [mask]=\"'separator.' + decimals\"\r\n [allowNegativeNumbers]=\"allowNegative\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n />\r\n </div>\r\n </form>\r\n </div>\r\n\r\n <mrx-error-message *ngIf=\"!isValid && invalidMessageStart\">\r\n {{invalidMessageStart}}\r\n <a href=\"#\" (click)=\"resetToMax($event)\">{{maxMessage}}</a>\r\n {{invalidMessageEnd}}\r\n </mrx-error-message>\r\n\r\n <mrx-save-state [id]=\"uuid\" [fields]=\"fields\"></mrx-save-state>\r\n</div>\r\n", styles: [".mrx-input-number.mrx-input-number{width:100%;position:relative}.mrx-input-number.mrx-input-number .mrx-input-text__wrapper{position:relative}.mrx-input-number.mrx-input-number input{box-sizing:border-box;border:var(--border-width-default) solid var(--neutral-bg-stroke-default);border-radius:var(--border-radius-1);width:100%;outline:none;transition:outline-width .2s,border .2s}.mrx-input-number.mrx-input-number input:focus,.mrx-input-number.mrx-input-number input:active{outline:var(--neutral-bg-island-default) solid var(--border-width-focused)}.mrx-input-number.mrx-input-number input:hover{border:var(--border-width-default) solid var(--neutral-bg-stroke-hover)}.mrx-input-number.mrx-input-number.mrx-input__readonly input[type=tel]:disabled{background-color:inherit}.mrx-input-number.mrx-input-number.mrx-input__readonly input{background-color:inherit}.mrx-input-number.mrx-input-number.mrx-input-number-lg input{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-input-number.mrx-input-number.mrx-input-number-lg:not(.mrx-input-number-with-icon) input{padding:calc(var(--spacing-3) + var(--spacing-
|
|
205
|
+
], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true }], ngImport: i0, template: "<div\r\n class=\"mrx-input-number\"\r\n [class]=\"getClasses\"\r\n [class.mrx-input-error]=\"!isValid || invalid\"\r\n [class.-disabled]=\"disabled\"\r\n [class.-readonly]=\"readonly\"\r\n>\r\n <div class=\"mrx-input-number__wrapper\">\r\n <form [formGroup]=\"numberForm\">\r\n <div>\r\n <input\r\n #inputElement\r\n autocomplete=\"nope\"\r\n formControlName=\"number\"\r\n type=\"text\"\r\n [thousandSeparator]=\"thousandsSeparator\"\r\n [decimalMarker]=\"decimalMarker\"\r\n [class]=\"innerClass\"\r\n [mask]=\"'separator.' + decimals\"\r\n [allowNegativeNumbers]=\"allowNegative\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n (blur)=\"onBlur($event)\"\r\n />\r\n </div>\r\n </form>\r\n </div>\r\n\r\n <mrx-error-message *ngIf=\"!isValid && invalidMessageStart\">\r\n {{invalidMessageStart}}\r\n <a href=\"#\" (click)=\"resetToMax($event)\">{{maxMessage}}</a>\r\n {{invalidMessageEnd}}\r\n </mrx-error-message>\r\n\r\n <mrx-save-state [id]=\"uuid\" [fields]=\"fields\"></mrx-save-state>\r\n</div>\r\n", styles: [".mrx-input-number.mrx-input-number{width:100%;position:relative}.mrx-input-number.mrx-input-number .mrx-input-text__wrapper{position:relative}.mrx-input-number.mrx-input-number input{box-sizing:border-box;border:var(--border-width-default) solid var(--neutral-bg-stroke-default);border-radius:var(--border-radius-1);width:100%;outline:none;transition:outline-width .2s,border .2s}.mrx-input-number.mrx-input-number input:focus,.mrx-input-number.mrx-input-number input:active{outline:var(--neutral-bg-island-default) solid var(--border-width-focused)}.mrx-input-number.mrx-input-number input:hover{border:var(--border-width-default) solid var(--neutral-bg-stroke-hover)}.mrx-input-number.mrx-input-number.mrx-input__readonly input[type=tel]:disabled{background-color:inherit}.mrx-input-number.mrx-input-number.mrx-input__readonly input{background-color:inherit}.mrx-input-number.mrx-input-number.mrx-input-number-lg input{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-input-number.mrx-input-number.mrx-input-number-lg:not(.mrx-input-number-with-icon) input{padding:calc(var(--spacing-3) + var(--spacing-half) - var(--border-width-default)) var(--spacing-4)}.mrx-input-number.mrx-input-number.mrx-input-number-lg.mrx-input-number-with-icon input{padding:calc(var(--spacing-3) + var(--spacing-half) - var(--border-width-default)) var(--spacing-4) calc(var(--spacing-3) + var(--spacing-half) - var(--border-width-default)) calc(var(--spacing-module) * 10)}.mrx-input-number.mrx-input-number.mrx-input-number-md input{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-input-number.mrx-input-number.mrx-input-number-md:not(.mrx-input-number-with-icon) input{padding:calc(var(--spacing-2) + var(--spacing-half) - var(--border-width-default)) var(--spacing-4)}.mrx-input-number.mrx-input-number.mrx-input-number-md.mrx-input-number-with-icon input{padding:calc(var(--spacing-2) + var(--spacing-half) - var(--border-width-default)) var(--spacing-4) calc(var(--spacing-2) + var(--spacing-half) - var(--border-width-default)) calc(var(--spacing-module) * 10)}.mrx-input-number.mrx-input-number.mrx-input-number-sm input{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height)}.mrx-input-number.mrx-input-number.mrx-input-number-sm:not(.mrx-input-number-with-icon) input{padding:calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-4)}.mrx-input-number.mrx-input-number.mrx-input-number-sm.mrx-input-number-with-icon input{padding:calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-4) calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-8)}.mrx-input-number.mrx-input-number.mrx-input-error input{border-color:var(--system-bg-controls-negative-default)}.mrx-input-number.mrx-input-number.mrx-input-checked-error input{border-color:var(--system-bg-controls-negative-default);background-color:var(--system-bg-negative-secondary)}.mrx-input-number.mrx-input-number.mrx-input-checked-success input{background-color:var(--system-bg-positive-secondary);border-color:var(--system-bg-controls-positive-default)}.mrx-input-number.mrx-input-number.-disabled input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-tertiary, #71767E);color:var(--neutral-text-tertiary, #71767E)}.mrx-input-number.mrx-input-number.-readonly input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-primary, #262626);color:var(--neutral-text-primary, #262626)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.SaveStateComponent, selector: "mrx-save-state", inputs: ["type", "fields", "id"] }, { kind: "component", type: i4.ErrorMessageComponent, selector: "mrx-error-message", inputs: ["invalid", "invalidMessage", "customClasses"] }, { kind: "directive", type: i5.NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
185
206
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: InputNumberComponent, decorators: [{
|
|
186
207
|
type: Component,
|
|
187
208
|
args: [{ selector: 'mrx-input-number', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
188
209
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputNumberComponent), multi: true },
|
|
189
|
-
], template: "<div\r\n class=\"mrx-input-number\"\r\n [class]=\"getClasses\"\r\n [class.mrx-input-error]=\"!isValid || invalid\"\r\n [class.-disabled]=\"disabled\"\r\n [class.-readonly]=\"readonly\"\r\n>\r\n <div class=\"mrx-input-number__wrapper\">\r\n <form [formGroup]=\"numberForm\">\r\n <div>\r\n <input\r\n #inputElement\r\n autocomplete=\"nope\"\r\n formControlName=\"number\"\r\n type=\"text\"\r\n [thousandSeparator]=\"thousandsSeparator\"\r\n [decimalMarker]=\"decimalMarker\"\r\n [class]=\"innerClass\"\r\n [mask]=\"'separator.' + decimals\"\r\n [allowNegativeNumbers]=\"allowNegative\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n />\r\n </div>\r\n </form>\r\n </div>\r\n\r\n <mrx-error-message *ngIf=\"!isValid && invalidMessageStart\">\r\n {{invalidMessageStart}}\r\n <a href=\"#\" (click)=\"resetToMax($event)\">{{maxMessage}}</a>\r\n {{invalidMessageEnd}}\r\n </mrx-error-message>\r\n\r\n <mrx-save-state [id]=\"uuid\" [fields]=\"fields\"></mrx-save-state>\r\n</div>\r\n", styles: [".mrx-input-number.mrx-input-number{width:100%;position:relative}.mrx-input-number.mrx-input-number .mrx-input-text__wrapper{position:relative}.mrx-input-number.mrx-input-number input{box-sizing:border-box;border:var(--border-width-default) solid var(--neutral-bg-stroke-default);border-radius:var(--border-radius-1);width:100%;outline:none;transition:outline-width .2s,border .2s}.mrx-input-number.mrx-input-number input:focus,.mrx-input-number.mrx-input-number input:active{outline:var(--neutral-bg-island-default) solid var(--border-width-focused)}.mrx-input-number.mrx-input-number input:hover{border:var(--border-width-default) solid var(--neutral-bg-stroke-hover)}.mrx-input-number.mrx-input-number.mrx-input__readonly input[type=tel]:disabled{background-color:inherit}.mrx-input-number.mrx-input-number.mrx-input__readonly input{background-color:inherit}.mrx-input-number.mrx-input-number.mrx-input-number-lg input{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-input-number.mrx-input-number.mrx-input-number-lg:not(.mrx-input-number-with-icon) input{padding:calc(var(--spacing-3) + var(--spacing-
|
|
210
|
+
], template: "<div\r\n class=\"mrx-input-number\"\r\n [class]=\"getClasses\"\r\n [class.mrx-input-error]=\"!isValid || invalid\"\r\n [class.-disabled]=\"disabled\"\r\n [class.-readonly]=\"readonly\"\r\n>\r\n <div class=\"mrx-input-number__wrapper\">\r\n <form [formGroup]=\"numberForm\">\r\n <div>\r\n <input\r\n #inputElement\r\n autocomplete=\"nope\"\r\n formControlName=\"number\"\r\n type=\"text\"\r\n [thousandSeparator]=\"thousandsSeparator\"\r\n [decimalMarker]=\"decimalMarker\"\r\n [class]=\"innerClass\"\r\n [mask]=\"'separator.' + decimals\"\r\n [allowNegativeNumbers]=\"allowNegative\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n (blur)=\"onBlur($event)\"\r\n />\r\n </div>\r\n </form>\r\n </div>\r\n\r\n <mrx-error-message *ngIf=\"!isValid && invalidMessageStart\">\r\n {{invalidMessageStart}}\r\n <a href=\"#\" (click)=\"resetToMax($event)\">{{maxMessage}}</a>\r\n {{invalidMessageEnd}}\r\n </mrx-error-message>\r\n\r\n <mrx-save-state [id]=\"uuid\" [fields]=\"fields\"></mrx-save-state>\r\n</div>\r\n", styles: [".mrx-input-number.mrx-input-number{width:100%;position:relative}.mrx-input-number.mrx-input-number .mrx-input-text__wrapper{position:relative}.mrx-input-number.mrx-input-number input{box-sizing:border-box;border:var(--border-width-default) solid var(--neutral-bg-stroke-default);border-radius:var(--border-radius-1);width:100%;outline:none;transition:outline-width .2s,border .2s}.mrx-input-number.mrx-input-number input:focus,.mrx-input-number.mrx-input-number input:active{outline:var(--neutral-bg-island-default) solid var(--border-width-focused)}.mrx-input-number.mrx-input-number input:hover{border:var(--border-width-default) solid var(--neutral-bg-stroke-hover)}.mrx-input-number.mrx-input-number.mrx-input__readonly input[type=tel]:disabled{background-color:inherit}.mrx-input-number.mrx-input-number.mrx-input__readonly input{background-color:inherit}.mrx-input-number.mrx-input-number.mrx-input-number-lg input{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-input-number.mrx-input-number.mrx-input-number-lg:not(.mrx-input-number-with-icon) input{padding:calc(var(--spacing-3) + var(--spacing-half) - var(--border-width-default)) var(--spacing-4)}.mrx-input-number.mrx-input-number.mrx-input-number-lg.mrx-input-number-with-icon input{padding:calc(var(--spacing-3) + var(--spacing-half) - var(--border-width-default)) var(--spacing-4) calc(var(--spacing-3) + var(--spacing-half) - var(--border-width-default)) calc(var(--spacing-module) * 10)}.mrx-input-number.mrx-input-number.mrx-input-number-md input{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-input-number.mrx-input-number.mrx-input-number-md:not(.mrx-input-number-with-icon) input{padding:calc(var(--spacing-2) + var(--spacing-half) - var(--border-width-default)) var(--spacing-4)}.mrx-input-number.mrx-input-number.mrx-input-number-md.mrx-input-number-with-icon input{padding:calc(var(--spacing-2) + var(--spacing-half) - var(--border-width-default)) var(--spacing-4) calc(var(--spacing-2) + var(--spacing-half) - var(--border-width-default)) calc(var(--spacing-module) * 10)}.mrx-input-number.mrx-input-number.mrx-input-number-sm input{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height)}.mrx-input-number.mrx-input-number.mrx-input-number-sm:not(.mrx-input-number-with-icon) input{padding:calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-4)}.mrx-input-number.mrx-input-number.mrx-input-number-sm.mrx-input-number-with-icon input{padding:calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-4) calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-8)}.mrx-input-number.mrx-input-number.mrx-input-error input{border-color:var(--system-bg-controls-negative-default)}.mrx-input-number.mrx-input-number.mrx-input-checked-error input{border-color:var(--system-bg-controls-negative-default);background-color:var(--system-bg-negative-secondary)}.mrx-input-number.mrx-input-number.mrx-input-checked-success input{background-color:var(--system-bg-positive-secondary);border-color:var(--system-bg-controls-positive-default)}.mrx-input-number.mrx-input-number.-disabled input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-tertiary, #71767E);color:var(--neutral-text-tertiary, #71767E)}.mrx-input-number.mrx-input-number.-readonly input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-primary, #262626);color:var(--neutral-text-primary, #262626)}\n"] }]
|
|
190
211
|
}], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { fields: [{
|
|
191
212
|
type: Input
|
|
192
213
|
}], placeholder: [{
|
|
@@ -207,6 +228,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
207
228
|
type: Input
|
|
208
229
|
}], isNullableValue: [{
|
|
209
230
|
type: Input
|
|
231
|
+
}], isAutoCorrectingValue: [{
|
|
232
|
+
type: Input
|
|
210
233
|
}], invalid: [{
|
|
211
234
|
type: Input
|
|
212
235
|
}], checkInvalid: [{
|
|
@@ -232,7 +255,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
232
255
|
}], setMax: [{
|
|
233
256
|
type: Input,
|
|
234
257
|
args: ['maxValue']
|
|
258
|
+
}], changed: [{
|
|
259
|
+
type: Output
|
|
235
260
|
}], modelChange: [{
|
|
236
261
|
type: Output
|
|
262
|
+
}], blurred: [{
|
|
263
|
+
type: Output
|
|
237
264
|
}] } });
|
|
238
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LW51bWJlci9pbnB1dC1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtbnVtYmVyL2lucHV0LW51bWJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFLTCxpQkFBaUIsRUFDakIsVUFBVSxFQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLG9CQUFvQixFQUlyQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBR3BDLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRTtBQUNsQixDQUFDLENBQUM7QUFhRixNQUFNLE9BQU8sb0JBQW9CO0lBMkcvQixZQUFZLEVBQWU7UUFyR3BCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUt4QixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBRUwsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsc0JBQWlCLEdBQWUsSUFBSSxDQUFDO1FBQ3JDLG9CQUFlLEdBQXFCLElBQUksQ0FBQztRQUN6QyxTQUFJLEdBQUcsQ0FBQyxZQUFZLENBQUM7UUFDckIsU0FBSSxHQUFHLFlBQVksQ0FBQztRQUNwQixhQUFRLEdBQUcsSUFBSSxDQUFD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QTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXHJcbiAgRm9ybUJ1aWxkZXIsXHJcbiAgRm9ybUNvbnRyb2wsXHJcbiAgRm9ybUdyb3VwLFxyXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIFZhbGlkYXRvcnNcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7XHJcbiAgSW5wdXROdW1iZXJTaXplc0VudW0sXHJcbiAgSW5wdXROdW1iZXJTaXplc1R5cGVzLFxyXG4gIElucHV0TnVtYmVyVHlwZSxcclxuICBJbnB1dE51bWJlclZhbHVlV2l0aElkXHJcbn0gZnJvbSAnLi9pbnB1dC1udW1iZXIuZW51bSc7XHJcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBGaWVsZCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21yeC1hdXRvc2F2ZS9tcngtYXV0b3NhdmUuc2VydmljZSc7XHJcblxyXG5jb25zdCBub29wID0gKCkgPT4ge1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgRGVjaW1hbE1hcmtlclR5cGUgPSAnLicgfCAnLCcgfCBbJy4nLCAnLCddO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtaW5wdXQtbnVtYmVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1udW1iZXIuY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0TnVtYmVyQ29tcG9uZW50KSwgbXVsdGk6IHRydWUgfSxcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dE51bWJlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQge1xyXG5cclxuICBwdWJsaWMgc3RhdGljIGRlY2ltYWxNYXJrZXI/OiBEZWNpbWFsTWFya2VyVHlwZTtcclxuICBwcml2YXRlIHN0YXRpYyBfZGVsaW1pdGVyc0luaXRpYWxpc2VkID0gZmFsc2U7XHJcbiAgcHVibGljIHN0YXRpYyB0aG91c2FuZHNTZXBhcmF0b3I6IHN0cmluZztcclxuXHJcbiAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgcHVibGljIHJlYWRvbmx5ID0gZmFsc2U7XHJcblxyXG4gIG51bWJlckZvcm06IEZvcm1Hcm91cDtcclxuICBpbnZhbGlkTWVzc2FnZVN0YXJ0OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsO1xyXG4gIGludmFsaWRNZXNzYWdlRW5kOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsO1xyXG4gIGRlY2ltYWxzID0gMjtcclxuXHJcbiAgcHJpdmF0ZSBpbnZva2VDaGFuZ2VkID0gdHJ1ZTtcclxuICBwcml2YXRlIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gbm9vcDtcclxuICBwcml2YXRlIHByb3BhZ2F0ZUNoYW5nZTogKF86IGFueSkgPT4gdm9pZCA9IG5vb3A7XHJcbiAgcHJpdmF0ZSBfbWluID0gLTk5OTk5OTk5OS45OTtcclxuICBwcml2YXRlIF9tYXggPSA5OTk5OTk5OTkuOTk7XHJcbiAgcHJpdmF0ZSBfaXNWYWxpZCA9IHRydWU7XHJcblxyXG5cclxuICAvLyBTQVZFIFNUQVRFXHJcbiAgcHVibGljIHV1aWQ6IHN0cmluZyA9IHV1aWR2NCgpO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZHM6IEZpZWxkW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbm5lckNsYXNzID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbUNsYXNzZXMgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgcmVxdWlyZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgYWxsb3dOZWdhdGl2ZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzaXplOiBJbnB1dE51bWJlclNpemVzVHlwZXMgPSAnbGFyZ2UnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXBhcmF0b3I/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGRlY2ltYWxTZXBhcmF0b3I/OiBEZWNpbWFsTWFya2VyVHlwZTtcclxuICBASW5wdXQoKSBwdWJsaWMgaXNOdWxsYWJsZVZhbHVlID0gZmFsc2U7XHJcblxyXG4gIC8vIEVSUk9SXHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgY2hlY2tJbnZhbGlkOiB0cnVlIHwgZmFsc2UgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnaW5wdXRFbGVtZW50JykgaW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjtcclxuXHJcbiAgQElucHV0KCdudW1iZXJUeXBlJylcclxuICBwdWJsaWMgc2V0IHNldE51bWJlclR5cGUodmFsdWU6IElucHV0TnVtYmVyVHlwZSkge1xyXG4gICAgdGhpcy5kZWNpbWFscyA9IHZhbHVlID09PSAnZmxvYXQnID8gMiA6IHZhbHVlID09PSAncGVyY2VudCcgPyAxIDogMDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgnaW52YWxpZE1lc3NhZ2UnKVxyXG4gIHB1YmxpYyBzZXQgc2V0SW52YWxpZE1lc3NhZ2UodmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IHBhcmEgPSB2YWx1ZS5zcGxpdCgnezB9Jyk7XHJcbiAgICAgIHRoaXMuaW52YWxpZE1lc3NhZ2VTdGFydCA9IHBhcmFbMF07XHJcbiAgICAgIHRoaXMuaW52YWxpZE1lc3NhZ2VFbmQgPSBwYXJhWzFdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbnZhbGlkTWVzc2FnZVN0YXJ0ID0gbnVsbDtcclxuICAgICAgdGhpcy5pbnZhbGlkTWVzc2FnZUVuZCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoJ2Rpc2FibGVkJylcclxuICBwdWJsaWMgc2V0IHNldERpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmludm9rZUNoYW5nZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSB2YWx1ZVxyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMubnVtYmVyRm9ybS5kaXNhYmxlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm51bWJlckZvcm0uZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmludm9rZUNoYW5nZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCdyZWFkb25seScpXHJcbiAgcHVibGljIHNldCBzZXRSZWFkb25seSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5pbnZva2VDaGFuZ2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLnJlYWRvbmx5ID0gdmFsdWVcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLm51bWJlckZvcm0uZGlzYWJsZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5udW1iZXJGb3JtLmVuYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbnZva2VDaGFuZ2VkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgnbWluVmFsdWUnKVxyXG4gIHB1YmxpYyBzZXQgc2V0TWluKHZhbDogbnVtYmVyKSB7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMuX21pbiA9IHZhbDtcclxuICAgICAgY29uc3QgYyA9IHRoaXMuZ2V0Q29udHJvbCgnbnVtYmVyJyk7XHJcbiAgICAgIGlmIChjKSB7XHJcbiAgICAgICAgYy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLm1pbih0aGlzLl9taW4pLCBWYWxpZGF0b3JzLm1heCh0aGlzLl9tYXgpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgnbWF4VmFsdWUnKVxyXG4gIHB1YmxpYyBzZXQgc2V0TWF4KHZhbDogbnVtYmVyKSB7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMuX21heCA9IHZhbDtcclxuICAgICAgY29uc3QgYyA9IHRoaXMuZ2V0Q29udHJvbCgnbnVtYmVyJyk7XHJcbiAgICAgIGlmIChjKSB7XHJcbiAgICAgICAgYy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLm1pbih0aGlzLl9taW4pLCBWYWxpZGF0b3JzLm1heCh0aGlzLl9tYXgpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJbnB1dE51bWJlclZhbHVlV2l0aElkPiA9IG5ldyBFdmVudEVtaXR0ZXI8SW5wdXROdW1iZXJWYWx1ZVdpdGhJZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoZmI6IEZvcm1CdWlsZGVyKSB7XHJcbiAgICB0aGlzLm51bWJlckZvcm0gPSBmYi5ncm91cCh7XHJcbiAgICAgIG51bWJlcjogWycnXSxcclxuICAgIH0pO1xyXG5cclxuICAgIElucHV0TnVtYmVyQ29tcG9uZW50LmluaXROdW1iZXJGb3JtYXQoKTtcclxuICB9XHJcblxyXG4gIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7SW5wdXROdW1iZXJTaXplc0VudW1bdGhpcy5zaXplXX0gJHt0aGlzLmN1c3RvbUNsYXNzZXN9YDtcclxuICB9XHJcblxyXG4gIGdldCBkZWNpbWFsTWFya2VyKCk6ICcuJyB8ICcsJyB8IFsnLicsICcsJ10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGVjaW1hbFNlcGFyYXRvciB8fCBJbnB1dE51bWJlckNvbXBvbmVudC5kZWNpbWFsTWFya2VyIHx8ICcsJztcclxuICB9XHJcblxyXG4gIGdldCB0aG91c2FuZHNTZXBhcmF0b3IoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnNlcGFyYXRvciB8fCBJbnB1dE51bWJlckNvbXBvbmVudC50aG91c2FuZHNTZXBhcmF0b3I7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNWYWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1heE1lc3NhZ2UoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGRlYyA9IHRoaXMuZGVjaW1hbE1hcmtlclswXTtcclxuICAgIHJldHVybiB0aGlzLl9tYXgudG9Mb2NhbGVTdHJpbmcoJ2VuJykuc3BsaXQoJywnKS5qb2luKHRoaXMudGhvdXNhbmRzU2VwYXJhdG9yKS5yZXBsYWNlKCcuJywgZGVjKTtcclxuICB9XHJcblxyXG4gIGdldCBpc1ZlcmlmaWVkKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZiA9IHRoaXMuZ2V0Q29udHJvbCgnbnVtYmVyJyk7XHJcbiAgICByZXR1cm4gIXRoaXMucmVxdWlyZWQgfHxcclxuICAgICAgKHRoaXMucmVxdWlyZWQgJiYgZi52YWx1ZSAhPT0gbnVsbCAmJiBmLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5pc1ZhbGlkKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBpbml0TnVtYmVyRm9ybWF0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2RlbGltaXRlcnNJbml0aWFsaXNlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyDRgdC40YHRgtC10LzQvdGL0Lkg0YTQvtGA0LzQsNGCINGH0LjRgdC70LAg0YEg0LTRgNC+0LHQvdC+0Lkg0YfQsNGB0YLRjNGOINC4INCz0YDRg9C/0L/QvtC5INGA0LDQt9GA0LDRj9C00L7QsiAo0YLRi9GB0Y/Rh9C4KVxyXG4gICAgY29uc3QgYyA9IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0VG9QYXJ0cygxMjM0LjUpO1xyXG5cclxuICAgIGNvbnN0IHQgPSBjLmZpbmQoeCA9PiB4LnR5cGUgPT09ICdncm91cCcpPy52YWx1ZTtcclxuXHJcbiAgICAvLyDRgNCw0LfQtNC10LvQuNGC0LXQu9GMINCz0YDRg9C/0L9cclxuICAgIHRoaXMudGhvdXNhbmRzU2VwYXJhdG9yID0gdD8uY2hhckNvZGVBdCgwKSA9PT0gMTYwID8gJyAnIDogdCB8fCAnICc7XHJcblxyXG4gICAgLy8g0YDQsNC30LTQtdC70LjRgtC10LvRjCDQtNGA0L7QsdC90L7QuSDRh9Cw0YHRgtC4XHJcbiAgICB0aGlzLmRlY2ltYWxNYXJrZXIgPSAoYy5maW5kKHggPT4geC50eXBlID09PSAnZGVjaW1hbCcpPy52YWx1ZSBhcyAoJywnIHwgJy4nKSk7XHJcblxyXG4gICAgdGhpcy5fZGVsaW1pdGVyc0luaXRpYWxpc2VkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5udW1iZXJGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHtcclxuICAgICAgaWYgKHRoaXMuaW52b2tlQ2hhbmdlZCkge1xyXG4gICAgICAgIGlmICh0aGlzLm51bWJlckZvcm0udmFsaWQpIHtcclxuICAgICAgICAgIGNvbnN0IG51bSA9IHRoaXMubnVtYmVyRm9ybS52YWx1ZS5udW1iZXI7XHJcbiAgICAgICAgICBsZXQgbnVtVmFsdWU6IG51bWJlcjtcclxuICAgICAgICAgIGlmIChudW0gPT09ICcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoeyB2YWx1ZTogbnVsbCwgaWQ6IHRoaXMudXVpZCB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChudW0gJiYgdHlwZW9mIChudW0pID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICBudW1WYWx1ZSA9IHBhcnNlRmxvYXQobnVtLnJlcGxhY2UoJywnLCAnLicpLnNwbGl0KHRoaXMudGhvdXNhbmRzU2VwYXJhdG9yKS5qb2luKCcnKSk7XHJcbiAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKG51bVZhbHVlKTtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHsgdmFsdWU6IG51bVZhbHVlLCBpZDogdGhpcy51dWlkIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgKG51bSkgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgIG51bVZhbHVlID0gbnVtO1xyXG4gICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShudW1WYWx1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh7IHZhbHVlOiBudW1WYWx1ZSwgaWQ6IHRoaXMudXVpZCB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5udW1iZXJGb3JtLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKHZhbCA9PiB7XHJcbiAgICAgIHRoaXMuY2hlY2tJc1ZhbGlkKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlc2V0VG9NYXgoZXZlbnQ6IGFueSkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICBjb25zdCBmID0gdGhpcy5nZXRDb250cm9sKCdudW1iZXInKTtcclxuICAgIGYuc2V0VmFsdWUodGhpcy5fbWF4KTtcclxuICB9XHJcblxyXG4gIGNoZWNrSXNWYWxpZCgpIHtcclxuICAgIGNvbnN0IGYgPSB0aGlzLmdldENvbnRyb2woJ251bWJlcicpO1xyXG4gICAgdGhpcy5faXNWYWxpZCA9IHRoaXMubnVtYmVyRm9ybS5kaXNhYmxlZCB8fCAoZiAmJiBmLnZhbGlkIHx8ICghZi5kaXJ0eSAmJiAhZi50b3VjaGVkKSk7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGYgPSB0aGlzLmdldENvbnRyb2woJ251bWJlcicpO1xyXG4gICAgZi5zZXRWYWx1ZSh2YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlLCBlbWl0Vmlld1RvTW9kZWxDaGFuZ2U6IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udHJvbChuYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLm51bWJlckZvcm0uZ2V0KG5hbWUpIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgICBjbGFzcz1cIm1yeC1pbnB1dC1udW1iZXJcIlxyXG4gICAgW2NsYXNzXT1cImdldENsYXNzZXNcIlxyXG4gICAgW2NsYXNzLm1yeC1pbnB1dC1lcnJvcl09XCIhaXNWYWxpZCB8fCBpbnZhbGlkXCJcclxuICAgIFtjbGFzcy4tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgW2NsYXNzLi1yZWFkb25seV09XCJyZWFkb25seVwiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LW51bWJlcl9fd3JhcHBlclwiPlxyXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJudW1iZXJGb3JtXCI+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICNpbnB1dEVsZW1lbnRcclxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwibm9wZVwiXHJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgW3Rob3VzYW5kU2VwYXJhdG9yXT1cInRob3VzYW5kc1NlcGFyYXRvclwiXHJcbiAgICAgICAgICAgIFtkZWNpbWFsTWFya2VyXT1cImRlY2ltYWxNYXJrZXJcIlxyXG4gICAgICAgICAgICBbY2xhc3NdPVwiaW5uZXJDbGFzc1wiXHJcbiAgICAgICAgICAgIFttYXNrXT1cIidzZXBhcmF0b3IuJyArIGRlY2ltYWxzXCJcclxuICAgICAgICAgICAgW2FsbG93TmVnYXRpdmVOdW1iZXJzXT1cImFsbG93TmVnYXRpdmVcIlxyXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgPyBwbGFjZWhvbGRlciA6ICcnXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZm9ybT5cclxuICA8L2Rpdj5cclxuXHJcbiAgPG1yeC1lcnJvci1tZXNzYWdlICpuZ0lmPVwiIWlzVmFsaWQgJiYgaW52YWxpZE1lc3NhZ2VTdGFydFwiPlxyXG4gICAge3tpbnZhbGlkTWVzc2FnZVN0YXJ0fX1cclxuICAgIDxhIGhyZWY9XCIjXCIgKGNsaWNrKT1cInJlc2V0VG9NYXgoJGV2ZW50KVwiPnt7bWF4TWVzc2FnZX19PC9hPlxyXG4gICAge3tpbnZhbGlkTWVzc2FnZUVuZH19XHJcbiAgPC9tcngtZXJyb3ItbWVzc2FnZT5cclxuXHJcbiAgPG1yeC1zYXZlLXN0YXRlIFtpZF09XCJ1dWlkXCIgW2ZpZWxkc109XCJmaWVsZHNcIj48L21yeC1zYXZlLXN0YXRlPlxyXG48L2Rpdj5cclxuIl19
|
|
265
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LW51bWJlci9pbnB1dC1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtbnVtYmVyL2lucHV0LW51bWJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFLTCxpQkFBaUIsRUFDakIsVUFBVSxFQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLG9CQUFvQixFQUlyQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFFM0UsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFO0FBQ2xCLENBQUMsQ0FBQztBQWFGLE1BQU0sT0FBTyxvQkFBb0I7SUErRy9CLFlBQVksRUFBZTtRQXpHcEIsVUFBSyxHQUEwQixJQUFJLENBQUM7UUFDcEMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBS3hCLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFFTCxrQkFBYSxHQUFHLElBQUksQ0FBQztRQUNyQixzQkFBaUIsR0FBZSxJQUFJLENBQUM7UUFDckMsb0JBQWUsR0FBcUIs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V0FBVztzQkFBMUIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFDVSxxQkFBcUI7c0JBQXBDLEtBQUs7Z0JBR1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUVxQixZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBR2QsYUFBYTtzQkFEdkIsS0FBSzt1QkFBQyxZQUFZO2dCQU1SLGlCQUFpQjtzQkFEM0IsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBYVosV0FBVztzQkFEckIsS0FBSzt1QkFBQyxVQUFVO2dCQWFOLFdBQVc7c0JBRHJCLEtBQUs7dUJBQUMsVUFBVTtnQkFhTixNQUFNO3NCQURoQixLQUFLO3VCQUFDLFVBQVU7Z0JBWU4sTUFBTTtzQkFEaEIsS0FBSzt1QkFBQyxVQUFVO2dCQVdBLE9BQU87c0JBQXZCLE1BQU07Z0JBQ1UsV0FBVztzQkFBM0IsTUFBTTtnQkFDVSxPQUFPO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gIEZvcm1CdWlsZGVyLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIEZvcm1Hcm91cCxcclxuICBOR19WQUxVRV9BQ0NFU1NPUixcclxuICBWYWxpZGF0b3JzXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1xyXG4gIElucHV0TnVtYmVyU2l6ZXNFbnVtLFxyXG4gIElucHV0TnVtYmVyU2l6ZXNUeXBlcyxcclxuICBJbnB1dE51bWJlclR5cGUsIElucHV0TnVtYmVyVmFsdWVUeXBlcyxcclxuICBJbnB1dE51bWJlclZhbHVlV2l0aElkXHJcbn0gZnJvbSAnLi9pbnB1dC1udW1iZXIuZW51bSc7XHJcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBGaWVsZCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIHBhaXJ3aXNlLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5jb25zdCBub29wID0gKCkgPT4ge1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgRGVjaW1hbE1hcmtlclR5cGUgPSAnLicgfCAnLCcgfCBbJy4nLCAnLCddO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtaW5wdXQtbnVtYmVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1udW1iZXIuY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5wdXROdW1iZXJDb21wb25lbnQpLCBtdWx0aTogdHJ1ZX0sXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXROdW1iZXJDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0IHtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBkZWNpbWFsTWFya2VyPzogRGVjaW1hbE1hcmtlclR5cGU7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2RlbGltaXRlcnNJbml0aWFsaXNlZCA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzdGF0aWMgdGhvdXNhbmRzU2VwYXJhdG9yOiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyB2YWx1ZTogSW5wdXROdW1iZXJWYWx1ZVR5cGVzID0gbnVsbDtcclxuICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBwdWJsaWMgcmVhZG9ubHkgPSBmYWxzZTtcclxuXHJcbiAgbnVtYmVyRm9ybTogRm9ybUdyb3VwO1xyXG4gIGludmFsaWRNZXNzYWdlU3RhcnQ6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw7XHJcbiAgaW52YWxpZE1lc3NhZ2VFbmQ6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw7XHJcbiAgZGVjaW1hbHMgPSAyO1xyXG5cclxuICBwcml2YXRlIGludm9rZUNoYW5nZWQgPSB0cnVlO1xyXG4gIHByaXZhdGUgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xyXG4gIHByaXZhdGUgcHJvcGFnYXRlQ2hhbmdlOiAoXzogYW55KSA9PiB2b2lkID0gbm9vcDtcclxuICBwcml2YXRlIF9taW4gPSAtOTk5OTk5OTk5Ljk5O1xyXG4gIHByaXZhdGUgX21heCA9IDk5OTk5OTk5OS45OTtcclxuICBwcml2YXRlIF9pc1ZhbGlkID0gdHJ1ZTtcclxuXHJcblxyXG4gIC8vIFNBVkUgU1RBVEVcclxuICBwdWJsaWMgdXVpZDogc3RyaW5nID0gdXVpZHY0KCk7XHJcbiAgQElucHV0KCkgcHVibGljIGZpZWxkczogRmllbGRbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGlubmVyQ2xhc3MgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tQ2xhc3NlcyA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyByZXF1aXJlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBhbGxvd05lZ2F0aXZlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHNpemU6IElucHV0TnVtYmVyU2l6ZXNUeXBlcyA9ICdsYXJnZSc7XHJcbiAgQElucHV0KCkgcHVibGljIHNlcGFyYXRvcj86IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgZGVjaW1hbFNlcGFyYXRvcj86IERlY2ltYWxNYXJrZXJUeXBlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpc051bGxhYmxlVmFsdWUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgaXNBdXRvQ29ycmVjdGluZ1ZhbHVlID0gZmFsc2U7XHJcblxyXG4gIC8vIEVSUk9SXHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgY2hlY2tJbnZhbGlkOiB0cnVlIHwgZmFsc2UgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnaW5wdXRFbGVtZW50JykgaW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjtcclxuXHJcbiAgQElucHV0KCdudW1iZXJUeXBlJylcclxuICBwdWJsaWMgc2V0IHNldE51bWJlclR5cGUodmFsdWU6IElucHV0TnVtYmVyVHlwZSkge1xyXG4gICAgdGhpcy5kZWNpbWFscyA9IHZhbHVlID09PSAnZmxvYXQnID8gMiA6IHZhbHVlID09PSAncGVyY2VudCcgPyAxIDogMDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgnaW52YWxpZE1lc3NhZ2UnKVxyXG4gIHB1YmxpYyBzZXQgc2V0SW52YWxpZE1lc3NhZ2UodmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IHBhcmEgPSB2YWx1ZS5zcGxpdCgnezB9Jyk7XHJcbiAgICAgIHRoaXMuaW52YWxpZE1lc3NhZ2VTdGFydCA9IHBhcmFbMF07XHJcbiAgICAgIHRoaXMuaW52YWxpZE1lc3NhZ2VFbmQgPSBwYXJhWzFdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbnZhbGlkTWVzc2FnZVN0YXJ0ID0gbnVsbDtcclxuICAgICAgdGhpcy5pbnZhbGlkTWVzc2FnZUVuZCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoJ2Rpc2FibGVkJylcclxuICBwdWJsaWMgc2V0IHNldERpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmludm9rZUNoYW5nZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSB2YWx1ZTtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLm51bWJlckZvcm0uZGlzYWJsZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5udW1iZXJGb3JtLmVuYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbnZva2VDaGFuZ2VkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgncmVhZG9ubHknKVxyXG4gIHB1YmxpYyBzZXQgc2V0UmVhZG9ubHkodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuaW52b2tlQ2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5yZWFkb25seSA9IHZhbHVlO1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMubnVtYmVyRm9ybS5kaXNhYmxlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm51bWJlckZvcm0uZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmludm9rZUNoYW5nZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCdtaW5WYWx1ZScpXHJcbiAgcHVibGljIHNldCBzZXRNaW4odmFsOiBudW1iZXIpIHtcclxuICAgIGlmICh2YWwpIHtcclxuICAgICAgdGhpcy5fbWluID0gdmFsO1xyXG4gICAgICBjb25zdCBjID0gdGhpcy5nZXRDb250cm9sKCdudW1iZXInKTtcclxuICAgICAgaWYgKGMpIHtcclxuICAgICAgICBjLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMubWluKHRoaXMuX21pbiksIFZhbGlkYXRvcnMubWF4KHRoaXMuX21heCldKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCdtYXhWYWx1ZScpXHJcbiAgcHVibGljIHNldCBzZXRNYXgodmFsOiBudW1iZXIpIHtcclxuICAgIGlmICh2YWwpIHtcclxuICAgICAgdGhpcy5fbWF4ID0gdmFsO1xyXG4gICAgICBjb25zdCBjID0gdGhpcy5nZXRDb250cm9sKCdudW1iZXInKTtcclxuICAgICAgaWYgKGMpIHtcclxuICAgICAgICBjLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMubWluKHRoaXMuX21pbiksIFZhbGlkYXRvcnMubWF4KHRoaXMuX21heCldKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFuZ2VkOiBFdmVudEVtaXR0ZXI8SW5wdXROdW1iZXJWYWx1ZVR5cGVzPiA9IG5ldyBFdmVudEVtaXR0ZXI8SW5wdXROdW1iZXJWYWx1ZVR5cGVzPigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJbnB1dE51bWJlclZhbHVlV2l0aElkPiA9IG5ldyBFdmVudEVtaXR0ZXI8SW5wdXROdW1iZXJWYWx1ZVdpdGhJZD4oKTtcclxuICBAT3V0cHV0KCkgcHVibGljIGJsdXJyZWQ6IEV2ZW50RW1pdHRlcjxJbnB1dE51bWJlclZhbHVlV2l0aElkPiA9IG5ldyBFdmVudEVtaXR0ZXI8SW5wdXROdW1iZXJWYWx1ZVdpdGhJZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoZmI6IEZvcm1CdWlsZGVyKSB7XHJcbiAgICB0aGlzLm51bWJlckZvcm0gPSBmYi5ncm91cCh7XHJcbiAgICAgIG51bWJlcjogWycnXSxcclxuICAgIH0pO1xyXG5cclxuICAgIElucHV0TnVtYmVyQ29tcG9uZW50LmluaXROdW1iZXJGb3JtYXQoKTtcclxuICB9XHJcblxyXG4gIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7SW5wdXROdW1iZXJTaXplc0VudW1bdGhpcy5zaXplXX0gJHt0aGlzLmN1c3RvbUNsYXNzZXN9YDtcclxuICB9XHJcblxyXG4gIGdldCBkZWNpbWFsTWFya2VyKCk6ICcuJyB8ICcsJyB8IFsnLicsICcsJ10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGVjaW1hbFNlcGFyYXRvciB8fCBJbnB1dE51bWJlckNvbXBvbmVudC5kZWNpbWFsTWFya2VyIHx8ICcsJztcclxuICB9XHJcblxyXG4gIGdldCB0aG91c2FuZHNTZXBhcmF0b3IoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnNlcGFyYXRvciB8fCBJbnB1dE51bWJlckNvbXBvbmVudC50aG91c2FuZHNTZXBhcmF0b3I7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNWYWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1heE1lc3NhZ2UoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGRlYyA9IHRoaXMuZGVjaW1hbE1hcmtlclswXTtcclxuICAgIHJldHVybiB0aGlzLl9tYXgudG9Mb2NhbGVTdHJpbmcoJ2VuJykuc3BsaXQoJywnKS5qb2luKHRoaXMudGhvdXNhbmRzU2VwYXJhdG9yKS5yZXBsYWNlKCcuJywgZGVjKTtcclxuICB9XHJcblxyXG4gIGdldCBpc1ZlcmlmaWVkKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZiA9IHRoaXMuZ2V0Q29udHJvbCgnbnVtYmVyJyk7XHJcbiAgICByZXR1cm4gIXRoaXMucmVxdWlyZWQgfHxcclxuICAgICAgKHRoaXMucmVxdWlyZWQgJiYgZi52YWx1ZSAhPT0gbnVsbCAmJiBmLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5pc1ZhbGlkKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBpbml0TnVtYmVyRm9ybWF0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2RlbGltaXRlcnNJbml0aWFsaXNlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyDRgdC40YHRgtC10LzQvdGL0Lkg0YTQvtGA0LzQsNGCINGH0LjRgdC70LAg0YEg0LTRgNC+0LHQvdC+0Lkg0YfQsNGB0YLRjNGOINC4INCz0YDRg9C/0L/QvtC5INGA0LDQt9GA0LDRj9C00L7QsiAo0YLRi9GB0Y/Rh9C4KVxyXG4gICAgY29uc3QgYyA9IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0VG9QYXJ0cygxMjM0LjUpO1xyXG5cclxuICAgIGNvbnN0IHQgPSBjLmZpbmQoeCA9PiB4LnR5cGUgPT09ICdncm91cCcpPy52YWx1ZTtcclxuXHJcbiAgICAvLyDRgNCw0LfQtNC10LvQuNGC0LXQu9GMINCz0YDRg9C/0L9cclxuICAgIHRoaXMudGhvdXNhbmRzU2VwYXJhdG9yID0gdD8uY2hhckNvZGVBdCgwKSA9PT0gMTYwID8gJyAnIDogdCB8fCAnICc7XHJcblxyXG4gICAgLy8g0YDQsNC30LTQtdC70LjRgtC10LvRjCDQtNGA0L7QsdC90L7QuSDRh9Cw0YHRgtC4XHJcbiAgICB0aGlzLmRlY2ltYWxNYXJrZXIgPSAoYy5maW5kKHggPT4geC50eXBlID09PSAnZGVjaW1hbCcpPy52YWx1ZSBhcyAoJywnIHwgJy4nKSk7XHJcblxyXG4gICAgdGhpcy5fZGVsaW1pdGVyc0luaXRpYWxpc2VkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5udW1iZXJGb3JtLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICBzdGFydFdpdGgobnVsbCksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIHBhaXJ3aXNlKClcclxuICAgICkuc3Vic2NyaWJlKChbb2xkVmFsdWUsIG5ld1ZhbHVlXSkgPT4ge1xyXG4gICAgICB0aGlzLl9mb3JtYXR0aW5nVmFsdWUobmV3VmFsdWUubnVtYmVyKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5udW1iZXJGb3JtLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKHZhbCA9PiB7XHJcbiAgICAgIHRoaXMuY2hlY2tJc1ZhbGlkKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2Zvcm1hdHRpbmdWYWx1ZShpbnNpZGVWYWx1ZTogSW5wdXROdW1iZXJWYWx1ZVR5cGVzKSB7XHJcbiAgICBpZiAodGhpcy5pbnZva2VDaGFuZ2VkKSB7XHJcbiAgICAgIGlmICh0aGlzLm51bWJlckZvcm0udmFsaWQpIHtcclxuICAgICAgICBpZiAoIWluc2lkZVZhbHVlICYmIGluc2lkZVZhbHVlICE9PSAwKSB7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKG51bGwpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGluc2lkZVZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0VG9NYXgoZXZlbnQ6IGFueSkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICBjb25zdCBmID0gdGhpcy5nZXRDb250cm9sKCdudW1iZXInKTtcclxuICAgIGYuc2V0VmFsdWUodGhpcy5fbWF4KTtcclxuICB9XHJcblxyXG4gIGNoZWNrSXNWYWxpZCgpIHtcclxuICAgIGlmICghdGhpcy5pc0F1dG9Db3JyZWN0aW5nVmFsdWUpIHtcclxuICAgICAgY29uc3QgZiA9IHRoaXMuZ2V0Q29udHJvbCgnbnVtYmVyJyk7XHJcbiAgICAgIHRoaXMuX2lzVmFsaWQgPSB0aGlzLm51bWJlckZvcm0uZGlzYWJsZWQgfHwgKGYgJiYgZi52YWxpZCB8fCAoIWYuZGlydHkgJiYgIWYudG91Y2hlZCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25QaG9uZUlucHV0Qmx1cigpIHtcclxuICAgIGlmICh0aGlzLmlzQXV0b0NvcnJlY3RpbmdWYWx1ZSkge1xyXG4gICAgICBjb25zdCBmID0gdGhpcy5nZXRDb250cm9sKCdudW1iZXInKTtcclxuXHJcbiAgICAgIGlmIChmLnZhbHVlID4gdGhpcy5fbWF4KSB7XHJcbiAgICAgICAgZi5zZXRWYWx1ZSh0aGlzLl9tYXgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZi52YWx1ZSA8IHRoaXMuX21pbikge1xyXG4gICAgICAgIGYuc2V0VmFsdWUodGhpcy5fbWluKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBmID0gdGhpcy5nZXRDb250cm9sKCdudW1iZXInKTtcclxuICAgIGYuc2V0VmFsdWUodmFsdWUsIHtlbWl0RXZlbnQ6IGZhbHNlLCBlbWl0Vmlld1RvTW9kZWxDaGFuZ2U6IGZhbHNlfSk7XHJcbiAgfVxyXG5cclxuICBnZXRDb250cm9sKG5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMubnVtYmVyRm9ybS5nZXQobmFtZSkgYXMgRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlVmFsdWUoaW5zaWRlVmFsdWU6IElucHV0TnVtYmVyVmFsdWVUeXBlcykge1xyXG4gICAgdGhpcy52YWx1ZSA9IGluc2lkZVZhbHVlO1xyXG4gICAgdGhpcy5jaGFuZ2VkLmVtaXQoaW5zaWRlVmFsdWUpO1xyXG4gICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHt2YWx1ZTogaW5zaWRlVmFsdWUsIGlkOiB0aGlzLnV1aWR9KTtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKGluc2lkZVZhbHVlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkJsdXIoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcclxuICAgIHRoaXMub25QaG9uZUlucHV0Qmx1cigpXHJcbiAgICB0aGlzLmJsdXJyZWQuZW1pdCh7dmFsdWU6IHRoaXMudmFsdWUsIGlkOiB0aGlzLnV1aWR9KVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgICBjbGFzcz1cIm1yeC1pbnB1dC1udW1iZXJcIlxyXG4gICAgW2NsYXNzXT1cImdldENsYXNzZXNcIlxyXG4gICAgW2NsYXNzLm1yeC1pbnB1dC1lcnJvcl09XCIhaXNWYWxpZCB8fCBpbnZhbGlkXCJcclxuICAgIFtjbGFzcy4tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgW2NsYXNzLi1yZWFkb25seV09XCJyZWFkb25seVwiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LW51bWJlcl9fd3JhcHBlclwiPlxyXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJudW1iZXJGb3JtXCI+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICNpbnB1dEVsZW1lbnRcclxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwibm9wZVwiXHJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgW3Rob3VzYW5kU2VwYXJhdG9yXT1cInRob3VzYW5kc1NlcGFyYXRvclwiXHJcbiAgICAgICAgICAgIFtkZWNpbWFsTWFya2VyXT1cImRlY2ltYWxNYXJrZXJcIlxyXG4gICAgICAgICAgICBbY2xhc3NdPVwiaW5uZXJDbGFzc1wiXHJcbiAgICAgICAgICAgIFttYXNrXT1cIidzZXBhcmF0b3IuJyArIGRlY2ltYWxzXCJcclxuICAgICAgICAgICAgW2FsbG93TmVnYXRpdmVOdW1iZXJzXT1cImFsbG93TmVnYXRpdmVcIlxyXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgPyBwbGFjZWhvbGRlciA6ICcnXCJcclxuICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bXJ4LWVycm9yLW1lc3NhZ2UgKm5nSWY9XCIhaXNWYWxpZCAmJiBpbnZhbGlkTWVzc2FnZVN0YXJ0XCI+XHJcbiAgICB7e2ludmFsaWRNZXNzYWdlU3RhcnR9fVxyXG4gICAgPGEgaHJlZj1cIiNcIiAoY2xpY2spPVwicmVzZXRUb01heCgkZXZlbnQpXCI+e3ttYXhNZXNzYWdlfX08L2E+XHJcbiAgICB7e2ludmFsaWRNZXNzYWdlRW5kfX1cclxuICA8L21yeC1lcnJvci1tZXNzYWdlPlxyXG5cclxuICA8bXJ4LXNhdmUtc3RhdGUgW2lkXT1cInV1aWRcIiBbZmllbGRzXT1cImZpZWxkc1wiPjwvbXJ4LXNhdmUtc3RhdGU+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -4,4 +4,4 @@ export var InputNumberSizesEnum;
|
|
|
4
4
|
InputNumberSizesEnum["medium"] = "mrx-input-number-md";
|
|
5
5
|
InputNumberSizesEnum["large"] = "mrx-input-number-lg";
|
|
6
6
|
})(InputNumberSizesEnum || (InputNumberSizesEnum = {}));
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9pbnB1dC1udW1iZXIvaW5wdXQtbnVtYmVyLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFOLElBQVksb0JBSVg7QUFKRCxXQUFZLG9CQUFvQjtJQUM5QixxREFBK0IsQ0FBQTtJQUMvQixzREFBZ0MsQ0FBQTtJQUNoQyxxREFBK0IsQ0FBQTtBQUNqQyxDQUFDLEVBSlcsb0JBQW9CLEtBQXBCLG9CQUFvQixRQUkvQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIElucHV0TnVtYmVyVHlwZSA9ICdpbnQnIHwgJ2Zsb2F0JyB8ICdwZXJjZW50JztcclxuXHJcbmV4cG9ydCBlbnVtIElucHV0TnVtYmVyU2l6ZXNFbnVtIHtcclxuICAnc21hbGwnID0gJ21yeC1pbnB1dC1udW1iZXItc20nLFxyXG4gICdtZWRpdW0nID0gJ21yeC1pbnB1dC1udW1iZXItbWQnLFxyXG4gICdsYXJnZScgPSAnbXJ4LWlucHV0LW51bWJlci1sZycsXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIElucHV0TnVtYmVyU2l6ZXNUeXBlcyA9ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZSc7XHJcblxyXG5leHBvcnQgdHlwZSBJbnB1dE51bWJlclZhbHVlVHlwZXMgPSBudW1iZXIgfCBudWxsO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJbnB1dE51bWJlclZhbHVlV2l0aElkIHtcclxuICB2YWx1ZTogSW5wdXROdW1iZXJWYWx1ZVR5cGVzLFxyXG4gIGlkOiBzdHJpbmdcclxufVxyXG4iXX0=
|
|
@@ -139,7 +139,6 @@ export class InputOptComponent {
|
|
|
139
139
|
}
|
|
140
140
|
}
|
|
141
141
|
handleFocus(index) {
|
|
142
|
-
// @ts-ignore
|
|
143
142
|
this.focusedInputHasValue = !!this.ngxOtpArray.controls[index].value;
|
|
144
143
|
if (this.otpConfig.behavior === NgxOtpBehavior.LEGACY &&
|
|
145
144
|
this.focusedInputHasValue) {
|
|
@@ -168,7 +167,6 @@ export class InputOptComponent {
|
|
|
168
167
|
}
|
|
169
168
|
setUpOtpForm() {
|
|
170
169
|
for (let i = 0; i < this.otpConfig.otpLength; i++) {
|
|
171
|
-
// @ts-ignore
|
|
172
170
|
this.ngxOtpArray.push(new FormControl('', [Validators.required]));
|
|
173
171
|
}
|
|
174
172
|
}
|
|
@@ -323,7 +321,7 @@ InputOptComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
|
|
|
323
321
|
useExisting: forwardRef(() => InputOptComponent),
|
|
324
322
|
multi: true,
|
|
325
323
|
},
|
|
326
|
-
], viewQueries: [{ propertyName: "otpInputElements", predicate: ["otpInputElement"], descendants: true }], ngImport: i0, template: "<form\r\n [ngClass]=\"getContainerClasses\"\r\n class=\"mrx-input-otp-container\"\r\n [class]=\"getClasses\"\r\n>\r\n <div\r\n *ngFor=\"let control of ngxOtpArray.controls; let i = index\"\r\n [ngClass]=\"getInputBoxClasses\"\r\n [class.mrx-input-error]=\"invalid\"\r\n [class]=\"checkValidClasses\"\r\n class=\"mrx-input-otp-box\"\r\n >\r\n <label [attr.aria-label]=\"ariaLabels[i]\">\r\n <input\r\n #otpInputElement\r\n [id]=\"'mrx-input-otp-' + i\"\r\n [formControl]=\"convertToFormControl(control)\"\r\n [mrxOptPattern]=\"otpConfig.pattern\"\r\n [type]=\"getInputType()\"\r\n [ngClass]=\"styles[i]\"\r\n (keyup)=\"handleKeyUp(i, $event.key)\"\r\n (keyup.backspace)=\"handleDelete(i)\"\r\n (keyup.arrowLeft)=\"stepBackward(i)\"\r\n (keyup.arrowRight)=\"stepForward(i)\"\r\n (focus)=\"handleFocus(i)\"\r\n class=\"mrx-input-otp\"\r\n maxlength=\"1\"\r\n autocapitalize=\"off\"\r\n spellcheck=\"false\"\r\n />\r\n </label>\r\n </div>\r\n</form>\r\n\r\n<mrx-error-message\r\n *ngIf=\"invalid && isInvalidMessage\"\r\n customClasses=\"text-left\"\r\n [invalidMessage]=\"invalidMessage\"\r\n></mrx-error-message>\r\n", styles: [".mrx-input-otp{background:var(--brand-bg-tertiary-default, #FFF);color:var(--neutral-text-primary, #262626);text-align:center;outline:0}.mrx-input-otp-container{display:flex}.mrx-input-otp-box label{margin-bottom:0}.mrx-input-otp-disabled{opacity:.3}.mrx-input-otp-container.mrx-input-opt-lg{gap:12px}.mrx-input-otp-container.mrx-input-opt-lg .mrx-input-otp{width:var(--sizing-12);height:var(--sizing-12);border-radius:var(--border-radius-1);border:1px solid var(--neutral-bg-stroke-default, #DAD5CE);font-family:var(--headlines-lvl-3-font-family);font-weight:var(--headlines-lvl-3-font-weight);line-height:var(--headlines-lvl-3-line-height);font-size:var(--headlines-lvl-3-font-size)}.mrx-input-otp-container.mrx-input-opt-md{gap:10px}.mrx-input-otp-container.mrx-input-opt-md .mrx-input-otp{width:var(--sizing-10);height:var(--sizing-10);border-radius:var(--border-radius-1);border:1px solid var(--neutral-bg-stroke-default, #DAD5CE);font-family:var(--headlines-lvl-4-font-family);font-weight:var(--headlines-lvl-4-font-weight);line-height:var(--headlines-lvl-4-line-height);font-size:var(--headlines-lvl-4-font-size)}.mrx-input-otp-container.mrx-input-opt-responsive{flex-wrap:wrap;gap:12px}.mrx-input-otp-container.mrx-input-opt-responsive .mrx-input-otp{width:var(--sizing-12);height:var(--sizing-12);border-radius:var(--border-radius-1);border:1px solid var(--neutral-bg-stroke-default, #DAD5CE);font-family:var(--headlines-lvl-3-font-family);font-weight:var(--headlines-lvl-3-font-weight);line-height:var(--headlines-lvl-3-line-height);font-size:var(--headlines-lvl-3-font-size)}@media (max-width: 576px){.mrx-input-otp-container.mrx-input-opt-responsive{gap:10px}.mrx-input-otp-container.mrx-input-opt-responsive .mrx-input-otp{width:var(--sizing-10);height:var(--sizing-10);font-family:var(--headlines-lvl-4-font-family);font-weight:var(--headlines-lvl-4-font-weight);line-height:var(--headlines-lvl-4-line-height);font-size:var(--headlines-lvl-4-font-size)}}@media (max-width: 370px){.mrx-input-otp-container.mrx-input-opt-responsive{gap:8px}.mrx-input-otp-container.mrx-input-opt-responsive .mrx-input-otp{width:var(--sizing-8);height:var(--sizing-8);font-family:var(--headlines-lvl-5-font-family);font-weight:var(--headlines-lvl-5-font-weight);line-height:var(--headlines-lvl-5-line-height);font-size:var(--headlines-lvl-5-font-size)}}.mrx-input-otp-container .mrx-input-otp-box.mrx-input-error .mrx-input-otp{border-color:var(--system-bg-controls-negative-default)}.mrx-input-otp-container .mrx-input-otp-box.mrx-input-checked-error .mrx-input-otp{border-color:var(--system-bg-controls-negative-default);background-color:var(--system-bg-negative-secondary)}.mrx-input-otp-container .mrx-input-otp-box.mrx-input-checked-success .mrx-input-otp{background-color:var(--system-bg-positive-secondary);border-color:var(--system-bg-controls-positive-default)}\n"], dependencies: [{ kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.ErrorMessageComponent, selector: "mrx-error-message", inputs: ["invalidMessage", "customClasses"] }, { kind: "directive", type: i5.OptPatternDirective, selector: "[mrxOptPattern]", inputs: ["mrxOptPattern"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
324
|
+
], viewQueries: [{ propertyName: "otpInputElements", predicate: ["otpInputElement"], descendants: true }], ngImport: i0, template: "<form\r\n [ngClass]=\"getContainerClasses\"\r\n class=\"mrx-input-otp-container\"\r\n [class]=\"getClasses\"\r\n>\r\n <div\r\n *ngFor=\"let control of ngxOtpArray.controls; let i = index\"\r\n [ngClass]=\"getInputBoxClasses\"\r\n [class.mrx-input-error]=\"invalid\"\r\n [class]=\"checkValidClasses\"\r\n class=\"mrx-input-otp-box\"\r\n >\r\n <label [attr.aria-label]=\"ariaLabels[i]\">\r\n <input\r\n #otpInputElement\r\n [id]=\"'mrx-input-otp-' + i\"\r\n [formControl]=\"convertToFormControl(control)\"\r\n [mrxOptPattern]=\"otpConfig.pattern\"\r\n [type]=\"getInputType()\"\r\n [ngClass]=\"styles[i]\"\r\n (keyup)=\"handleKeyUp(i, $event.key)\"\r\n (keyup.backspace)=\"handleDelete(i)\"\r\n (keyup.arrowLeft)=\"stepBackward(i)\"\r\n (keyup.arrowRight)=\"stepForward(i)\"\r\n (focus)=\"handleFocus(i)\"\r\n class=\"mrx-input-otp\"\r\n maxlength=\"1\"\r\n autocapitalize=\"off\"\r\n spellcheck=\"false\"\r\n />\r\n </label>\r\n </div>\r\n</form>\r\n\r\n<mrx-error-message\r\n *ngIf=\"invalid && isInvalidMessage\"\r\n customClasses=\"text-left\"\r\n [invalidMessage]=\"invalidMessage\"\r\n></mrx-error-message>\r\n", styles: [".mrx-input-otp{background:var(--brand-bg-tertiary-default, #FFF);color:var(--neutral-text-primary, #262626);text-align:center;outline:0}.mrx-input-otp-container{display:flex}.mrx-input-otp-box label{margin-bottom:0}.mrx-input-otp-disabled{opacity:.3}.mrx-input-otp-container.mrx-input-opt-lg{gap:12px}.mrx-input-otp-container.mrx-input-opt-lg .mrx-input-otp{width:var(--sizing-12);height:var(--sizing-12);border-radius:var(--border-radius-1);border:1px solid var(--neutral-bg-stroke-default, #DAD5CE);font-family:var(--headlines-lvl-3-font-family);font-weight:var(--headlines-lvl-3-font-weight);line-height:var(--headlines-lvl-3-line-height);font-size:var(--headlines-lvl-3-font-size)}.mrx-input-otp-container.mrx-input-opt-md{gap:10px}.mrx-input-otp-container.mrx-input-opt-md .mrx-input-otp{width:var(--sizing-10);height:var(--sizing-10);border-radius:var(--border-radius-1);border:1px solid var(--neutral-bg-stroke-default, #DAD5CE);font-family:var(--headlines-lvl-4-font-family);font-weight:var(--headlines-lvl-4-font-weight);line-height:var(--headlines-lvl-4-line-height);font-size:var(--headlines-lvl-4-font-size)}.mrx-input-otp-container.mrx-input-opt-responsive{flex-wrap:wrap;gap:12px}.mrx-input-otp-container.mrx-input-opt-responsive .mrx-input-otp{width:var(--sizing-12);height:var(--sizing-12);border-radius:var(--border-radius-1);border:1px solid var(--neutral-bg-stroke-default, #DAD5CE);font-family:var(--headlines-lvl-3-font-family);font-weight:var(--headlines-lvl-3-font-weight);line-height:var(--headlines-lvl-3-line-height);font-size:var(--headlines-lvl-3-font-size)}@media (max-width: 576px){.mrx-input-otp-container.mrx-input-opt-responsive{gap:10px}.mrx-input-otp-container.mrx-input-opt-responsive .mrx-input-otp{width:var(--sizing-10);height:var(--sizing-10);font-family:var(--headlines-lvl-4-font-family);font-weight:var(--headlines-lvl-4-font-weight);line-height:var(--headlines-lvl-4-line-height);font-size:var(--headlines-lvl-4-font-size)}}@media (max-width: 370px){.mrx-input-otp-container.mrx-input-opt-responsive{gap:8px}.mrx-input-otp-container.mrx-input-opt-responsive .mrx-input-otp{width:var(--sizing-8);height:var(--sizing-8);font-family:var(--headlines-lvl-5-font-family);font-weight:var(--headlines-lvl-5-font-weight);line-height:var(--headlines-lvl-5-line-height);font-size:var(--headlines-lvl-5-font-size)}}.mrx-input-otp-container .mrx-input-otp-box.mrx-input-error .mrx-input-otp{border-color:var(--system-bg-controls-negative-default)}.mrx-input-otp-container .mrx-input-otp-box.mrx-input-checked-error .mrx-input-otp{border-color:var(--system-bg-controls-negative-default);background-color:var(--system-bg-negative-secondary)}.mrx-input-otp-container .mrx-input-otp-box.mrx-input-checked-success .mrx-input-otp{background-color:var(--system-bg-positive-secondary);border-color:var(--system-bg-controls-positive-default)}\n"], dependencies: [{ kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.ErrorMessageComponent, selector: "mrx-error-message", inputs: ["invalid", "invalidMessage", "customClasses"] }, { kind: "directive", type: i5.OptPatternDirective, selector: "[mrxOptPattern]", inputs: ["mrxOptPattern"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
327
325
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: InputOptComponent, decorators: [{
|
|
328
326
|
type: Component,
|
|
329
327
|
args: [{ selector: 'mrx-input-opt', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
@@ -360,4 +358,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
360
358
|
type: HostListener,
|
|
361
359
|
args: ['paste', ['$event']]
|
|
362
360
|
}] } });
|
|
363
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtb3B0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LW9wdC9jb21wb25lbnRzL2lucHV0LW9wdC9pbnB1dC1vcHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtb3B0L2NvbXBvbmVudHMvaW5wdXQtb3B0L2lucHV0LW9wdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBRTdDLE1BQU0sRUFFTixZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixTQUFTLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hHLE9BQU8sRUFBRSxjQUFjLEVBQW1DLE1BQU0sOEJBQThCLENBQUM7QUFHL0YsT0FBTyxFQUFFLGlCQUFpQixFQUFzQixNQUFNLGtCQUFrQixDQUFDOzs7Ozs7O0FBZ0J6RSxNQUFNLE9BQU8saUJBQWlCO0lBOEQ1QixZQUNtQixVQUEyQixFQUMzQixHQUFzQjtRQUR0QixlQUFVLEdBQVYsVUFBVSxDQUFpQjtRQUMzQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQS9EakMsbUJBQWMsR0FBRyxNQUFNLENBQUM7UUFDeEIsdUJBQWtCLEdBQUcseUJBQXlCLENBQUM7UUFHL0MsMEJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBRTlCLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUM3QixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRXZCLGdCQUFXLEdBQUcs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Q0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNyRyxDQUFDOzs4R0FoWVUsaUJBQWlCO2tHQUFqQixpQkFBaUIsNFZBUmpCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7WUFDaEQsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGLGtJQzdCSCw2dUNBdUNBOzJGRFJhLGlCQUFpQjtrQkFiN0IsU0FBUzsrQkFDRSxlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLENBQUM7NEJBQ2hELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO3NJQWtDZSxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBRU8sT0FBTztzQkFBbkIsS0FBSztnQkFLTyxNQUFNO3NCQUFsQixLQUFLO2dCQVVPLE1BQU07c0JBQWxCLEtBQUs7Z0JBSTJCLGdCQUFnQjtzQkFBaEQsWUFBWTt1QkFBQyxpQkFBaUI7Z0JBRXJCLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQTRUNEIsT0FBTztzQkFBekMsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFZpZXdDaGlsZHJlblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOZ3hPdHBCZWhhdmlvciwgTmd4T3RwSW5wdXRDb25maWcsIE5neE90cFN0YXR1cyB9IGZyb20gJy4uLy4uL21vZGVscy9pbnB1dC1vcHQubW9kZWwnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSW5wdXRPcHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW5wdXQtb3B0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJbnB1dE9wdFNpemVzRW51bSwgSW5wdXRPcHRTaXplc1R5cGVzIH0gZnJvbSAnLi9pbnB1dC1vcHQuZW51bSc7XHJcbmltcG9ydCB7IElucHV0VGV4dFZhbHVlVHlwZXMgfSBmcm9tICcuLi8uLi8uLi9pbnB1dC10ZXh0L2lucHV0LXRleHQuZW51bSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21yeC1pbnB1dC1vcHQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1vcHQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LW9wdC5jb21wb25lbnQubGVzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5wdXRPcHRDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0T3B0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgZGVmYXVsdFBhdHRlcm4gPSAvXi4rJC87XHJcbiAgcHJpdmF0ZSBERUZBVUxUX0FSSUFfTEFCRUwgPSAnT25lIHRpbWUgcGFzc3dvcmQgaW5wdXQnO1xyXG4gIHByaXZhdGUgTEFTVF9JTlBVVF9JTkRFWCE6IG51bWJlcjtcclxuICBwcml2YXRlIGlucHV0cyE6IEhUTUxJbnB1dEVsZW1lbnRbXTtcclxuICBwcml2YXRlIGlzTmd4T3RwQXJyYXlEaXNhYmxlZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgbmd4T3RwQXJyYXkkITogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgZm9jdXNlZElucHV0SGFzVmFsdWUgPSBmYWxzZTtcclxuICBwcml2YXRlIGlzSW5pdCA9IGZhbHNlO1xyXG5cclxuICBuZ3hPdHBBcnJheSA9IG5ldyBGb3JtQXJyYXkoW10pO1xyXG4gIGFyaWFMYWJlbHM6IHN0cmluZ1tdID0gW107XHJcbiAgcGF0dGVybiE6IFJlZ0V4cDtcclxuICBzdHlsZXM6IHN0cmluZ1tdW10gPSBbXTtcclxuXHJcbiAgb3RwQ29uZmlnOiBOZ3hPdHBJbnB1dENvbmZpZyA9IHtcclxuICAgIG90cExlbmd0aDogNixcclxuICAgIGF1dG9mb2N1czogdHJ1ZSxcclxuICAgIGF1dG9ibHVyOiB0cnVlLFxyXG4gICAgYmVoYXZpb3I6IE5neE90cEJlaGF2aW9yLkRFRkFVTFQsXHJcbiAgICBwYXR0ZXJuOiB0aGlzLmRlZmF1bHRQYXR0ZXJuLFxyXG4gICAgY2xhc3NMaXN0OiB7XHJcbiAgICAgIGNvbnRhaW5lcjogJycsXHJcbiAgICAgIGlucHV0Qm94OiAnJyxcclxuICAgICAgaW5wdXQ6ICcnLFxyXG4gICAgICBpbnB1dEZpbGxlZDogJycsXHJcbiAgICAgIGlucHV0RGlzYWJsZWQ6ICcnLFxyXG4gICAgICBpbnB1dFN1Y2Nlc3M6ICcnLFxyXG4gICAgICBpbnB1dEVycm9yOiAnJyxcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgc2l6ZTogSW5wdXRPcHRTaXplc1R5cGVzID0gJ2xhcmdlJztcclxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tQ2xhc3NlcyA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWRNZXNzYWdlOiBzdHJpbmcgfCBzdHJpbmdbXSA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjaGVja0ludmFsaWQ6IHRydWUgfCBmYWxzZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKSBzZXQgZGlzYWJsZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmhhbmRsZURpc2FibGUoaXNEaXNhYmxlZCk7XHJcbiAgICB0aGlzLmlzTmd4T3RwQXJyYXlEaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgY29uZmlnKGM6IE5neE90cElucHV0Q29uZmlnKSB7XHJcbiAgICB0aGlzLm90cENvbmZpZyA9IHsuLi50aGlzLm90cENvbmZpZywgLi4uY307XHJcbiAgICBpZiAodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0Py5pbnB1dCkge1xyXG4gICAgICB0aGlzLnNldEluaXRpYWxTdHlsZXMoKTtcclxuICAgIH1cclxuICAgIGlmICghYy5wYXR0ZXJuKSB7XHJcbiAgICAgIHRoaXMub3RwQ29uZmlnLnBhdHRlcm4gPSB0aGlzLmRlZmF1bHRQYXR0ZXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IHN0YXR1cyhzdGF0dXM6IE5neE90cFN0YXR1cykge1xyXG4gICAgdGhpcy5oYW5kbGVTdGF0dXNDaGFuZ2Uoc3RhdHVzKTtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oJ290cElucHV0RWxlbWVudCcpIG90cElucHV0RWxlbWVudHMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XHJcblxyXG4gIEBPdXRwdXQoKSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpO1xyXG4gIEBPdXRwdXQoKSBmaWxsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3RwU2VydmljZTogSW5wdXRPcHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByZWY6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0VXBPdHBGb3JtKCk7XHJcbiAgICB0aGlzLnNldFVwQXJpYUxhYmVscygpO1xyXG4gICAgdGhpcy5MQVNUX0lOUFVUX0lOREVYID0gdGhpcy5vdHBDb25maWcub3RwTGVuZ3RoIC0gMTtcclxuICAgIHRoaXMub3RwRm9ybUNoYW5nZUxpc3RlbmVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldE5hdGl2ZUhUTUxFbGVtZW50cygpO1xyXG4gICAgdGhpcy5zZXRJbml0aWFsRm9jdXMoKTtcclxuICAgIHRoaXMuc2V0TnVtZXJpY0lucHV0SWZQb3NzaWJsZSgpO1xyXG4gICAgdGhpcy5oYW5kbGVEaXNhYmxlKHRoaXMuaXNOZ3hPdHBBcnJheURpc2FibGVkKTtcclxuICAgIHRoaXMuaXNJbml0ID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5uZ3hPdHBBcnJheSQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNJbnZhbGlkTWVzc2FnZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMuaW52YWxpZE1lc3NhZ2UgfHwgISF0aGlzLmludmFsaWRNZXNzYWdlLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2hlY2tWYWxpZENsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrSW52YWxpZCA9PT0gZmFsc2UgP1xyXG4gICAgICAnbXJ4LWlucHV0LWNoZWNrZWQtc3VjY2VzcycgOlxyXG4gICAgICB0aGlzLmNoZWNrSW52YWxpZCA9PT0gdHJ1ZSA/ICdtcngtaW5wdXQtY2hlY2tlZC1lcnJvcicgOiAnJztcclxuICB9XHJcblxyXG4gIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7SW5wdXRPcHRTaXplc0VudW1bdGhpcy5zaXplXX0gJHt0aGlzLmN1c3RvbUNsYXNzZXN9YDtcclxuICB9XHJcblxyXG4gIGdldCBnZXRDb250YWluZXJDbGFzc2VzKCk6IHN0cmluZyB8IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiB0aGlzLm90cENvbmZpZz8uY2xhc3NMaXN0Py5jb250YWluZXIgfHwgJydcclxuICB9XHJcblxyXG4gIGdldCBnZXRJbnB1dEJveENsYXNzZXMoKTogc3RyaW5nIHwgc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIHRoaXMub3RwQ29uZmlnPy5jbGFzc0xpc3Q/LmlucHV0Qm94IHx8ICcnXHJcbiAgfVxyXG5cclxuICBjb252ZXJ0VG9Gb3JtQ29udHJvbChhYnNDdHJsOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsKTogRm9ybUNvbnRyb2wge1xyXG4gICAgcmV0dXJuIGFic0N0cmwgYXMgRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBjbGVhcigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QgJiYgdGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RmlsbGVkKSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlU3R5bGVGcm9tQWxsKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dEZpbGxlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5uZ3hPdHBBcnJheS5yZXNldCgpO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIGlmICh0aGlzLm90cENvbmZpZy5hdXRvZm9jdXMpIHtcclxuICAgICAgdGhpcy5zZXRGb2N1cygwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUtleVVwKGluZGV4OiBudW1iZXIsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIGlmICh0aGlzLm90cENvbmZpZy5wYXR0ZXJuLnRlc3QodmFsdWUpICYmIHZhbHVlICE9PSAnQmFja3NwYWNlJykge1xyXG4gICAgICBpZiAodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0ICYmIHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dEZpbGxlZCkge1xyXG4gICAgICAgIHRoaXMuYWRkU3R5bGUoaW5kZXgsIHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dEZpbGxlZCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLm5neE90cEFycmF5LnZhbGlkKSB7XHJcbiAgICAgICAgdGhpcy5nZXRGb3JtQ29udHJvbEJ5SW5kZXgoaW5kZXgpLnNldFZhbHVlKHZhbHVlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgICAgIHRoaXMuc3RlcEZvcndhcmQoaW5kZXgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYmx1cigpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVEZWxldGUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdCAmJiB0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXRGaWxsZWQpIHtcclxuICAgICAgdGhpcy5yZW1vdmVTdHlsZShpbmRleCwgdGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RmlsbGVkKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgICh0aGlzLm90cENvbmZpZy5iZWhhdmlvciA9PT0gTmd4T3RwQmVoYXZpb3IuTEVHQUNZICYmXHJcbiAgICAgICAgIXRoaXMuZm9jdXNlZElucHV0SGFzVmFsdWUpIHx8XHJcbiAgICAgIHRoaXMub3RwQ29uZmlnLmJlaGF2aW9yICE9PSBOZ3hPdHBCZWhhdmlvci5MRUdBQ1lcclxuICAgICkge1xyXG4gICAgICB0aGlzLnN0ZXBCYWNrd2FyZChpbmRleCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZvY3VzZWRJbnB1dEhhc1ZhbHVlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVGb2N1cyhpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICB0aGlzLmZvY3VzZWRJbnB1dEhhc1ZhbHVlID0gISF0aGlzLm5neE90cEFycmF5LmNvbnRyb2xzW2luZGV4XS52YWx1ZTtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5vdHBDb25maWcuYmVoYXZpb3IgPT09IE5neE90cEJlaGF2aW9yLkxFR0FDWSAmJlxyXG4gICAgICB0aGlzLmZvY3VzZWRJbnB1dEhhc1ZhbHVlXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5pbnB1dHNbaW5kZXhdLnNlbGVjdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RlcEJhY2t3YXJkKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChpbmRleCA+IDApIHtcclxuICAgICAgdGhpcy5zZXRGb2N1cyhpbmRleCAtIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RlcEZvcndhcmQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKGluZGV4IDwgdGhpcy5MQVNUX0lOUFVUX0lOREVYKSB7XHJcbiAgICAgIHRoaXMuc2V0Rm9jdXMoaW5kZXggKyAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb3RwRm9ybUNoYW5nZUxpc3RlbmVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5uZ3hPdHBBcnJheSQgPSB0aGlzLm5neE90cEFycmF5LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlcykgPT4ge1xyXG4gICAgICBpZiAodGhpcy5pc0luaXQpIHtcclxuICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KHZhbHVlcyk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm5neE90cEFycmF5LnZhbGlkKSB7XHJcbiAgICAgICAgICB0aGlzLmZpbGxDaGFuZ2UuZW1pdCh2YWx1ZXMuam9pbignJykpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFVwT3RwRm9ybSgpOiB2b2lkIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vdHBDb25maWcub3RwTGVuZ3RoOyBpKyspIHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICB0aGlzLm5neE90cEFycmF5LnB1c2gobmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VXBBcmlhTGFiZWxzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgbGFiZWxzID0gdGhpcy5vdHBDb25maWcuYXJpYUxhYmVscztcclxuXHJcbiAgICB0aGlzLmFyaWFMYWJlbHMgPSBBcnJheS5pc0FycmF5KGxhYmVscylcclxuICAgICAgPyBsYWJlbHNcclxuICAgICAgOiBuZXcgQXJyYXkodGhpcy5vdHBDb25maWcub3RwTGVuZ3RoKS5maWxsKFxyXG4gICAgICAgIGxhYmVscyB8fCB0aGlzLkRFRkFVTFRfQVJJQV9MQUJFTFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXROYXRpdmVIVE1MRWxlbWVudHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlucHV0cyA9IHRoaXMub3RwSW5wdXRFbGVtZW50cy5tYXAoKGVsZW1lbnQpID0+IGVsZW1lbnQubmF0aXZlRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEluaXRpYWxGb2N1cygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm90cENvbmZpZy5hdXRvZm9jdXMpIHtcclxuICAgICAgdGhpcy5zZXRGb2N1cygwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0SW5pdGlhbFN0eWxlcygpOiB2b2lkIHtcclxuICAgIHRoaXMuc3R5bGVzID0gdGhpcy5vdHBTZXJ2aWNlLmluaXQyREFycmF5KHRoaXMub3RwQ29uZmlnLm90cExlbmd0aCk7XHJcblxyXG4gICAgaWYgKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdCAmJiB0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXQpIHtcclxuICAgICAgdGhpcy5hZGRTdHlsZVRvQWxsKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEZvY3VzKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5wdXRzW2luZGV4XS5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXROdW1lcmljSW5wdXRJZlBvc3NpYmxlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3RwQ29uZmlnLm51bWVyaWNJbnB1dE1vZGUpIHtcclxuICAgICAgdGhpcy5vdHBDb25maWcucGF0dGVybiA9IHRoaXMuZGVmYXVsdFBhdHRlcm47XHJcbiAgICAgIHRoaXMuaW5wdXRzLm1hcCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdpbnB1dG1vZGUnLCAnbnVtZXJpYycpO1xyXG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdwYXR0ZXJuJywgJ1swLTldKicpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYmx1cigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm90cENvbmZpZy5hdXRvYmx1cikge1xyXG4gICAgICB0aGlzLmlucHV0cy5tYXAoKGlucHV0KSA9PiBpbnB1dC5ibHVyKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVQYXN0ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICBpZiAodGhpcy5vdHBDb25maWcucGF0dGVybi50ZXN0KHZhbHVlKSkge1xyXG4gICAgICBsZXQgbGFzdEluZGV4ID0gMDtcclxuICAgICAgdmFsdWVcclxuICAgICAgICAuc3BsaXQoJycpXHJcbiAgICAgICAgLnNsaWNlKDAsIHRoaXMub3RwQ29uZmlnLm90cExlbmd0aClcclxuICAgICAgICAubWFwKChjaGFyYWN0ZXI6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdCAmJiB0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXRGaWxsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRTdHlsZShpbmRleCwgdGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RmlsbGVkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZ2V0Rm9ybUNvbnRyb2xCeUluZGV4KGluZGV4KS5zZXRWYWx1ZShjaGFyYWN0ZXIpO1xyXG4gICAgICAgICAgbGFzdEluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5uZ3hPdHBBcnJheS52YWxpZCkge1xyXG4gICAgICAgIHRoaXMuYmx1cigpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2V0Rm9jdXMobGFzdEluZGV4ICsgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlRGlzYWJsZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAoaXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLm5neE90cEFycmF5LmRpc2FibGUoKTtcclxuICAgICAgaWYgKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdCAmJiB0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXREaXNhYmxlZCkge1xyXG4gICAgICAgIHRoaXMuYWRkU3R5bGVUb0FsbCh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXREaXNhYmxlZCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubmd4T3RwQXJyYXkuZW5hYmxlKCk7XHJcbiAgICAgIGlmICh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QgJiYgdGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RGlzYWJsZWQpIHtcclxuICAgICAgICB0aGlzLnJlbW92ZVN0eWxlRnJvbUFsbCh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXREaXNhYmxlZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlU3RhdHVzQ2hhbmdlKHN0YXR1czogTmd4T3RwU3RhdHVzKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0ICYmICh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXRTdWNjZXNzICYmIHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dEVycm9yKSkge1xyXG4gICAgICB0aGlzLnJlbW92ZVN0eWxlRnJvbUFsbChbXHJcbiAgICAgICAgLi4udGhpcy5vdHBTZXJ2aWNlLnRvQXJyYXkoXHJcbiAgICAgICAgICB0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXRTdWNjZXNzXHJcbiAgICAgICAgKSxcclxuICAgICAgICAuLi50aGlzLm90cFNlcnZpY2UudG9BcnJheSh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXRFcnJvciksXHJcbiAgICAgIF0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdGF0dXMpIHtcclxuICAgICAgaWYgKHN0YXR1cyA9PT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdCAmJiB0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXRTdWNjZXNzKSB7XHJcbiAgICAgICAgICB0aGlzLmFkZFN0eWxlVG9BbGwodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0U3VjY2Vzcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHN0YXR1cyA9PT0gJ2Vycm9yJykge1xyXG4gICAgICAgIGlmICh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QgJiYgdGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RXJyb3IpIHtcclxuICAgICAgICAgIHRoaXMuYWRkU3R5bGVUb0FsbCh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXRFcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZvcm1Db250cm9sQnlJbmRleChpbmRleDogbnVtYmVyKTogRm9ybUNvbnRyb2wge1xyXG4gICAgcmV0dXJuIHRoaXMubmd4T3RwQXJyYXkuY29udHJvbHNbaW5kZXhdIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRTdHlsZShpbmRleDogbnVtYmVyLCBzdHlsZXM6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMub3RwU2VydmljZS5hZGRJdGVtQXRJbmRleChcclxuICAgICAgdGhpcy5zdHlsZXMsXHJcbiAgICAgIGluZGV4LFxyXG4gICAgICB0aGlzLm90cFNlcnZpY2UudG9BcnJheShzdHlsZXMpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRTdHlsZVRvQWxsKHN0eWxlczogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcclxuICAgIHRoaXMuc3R5bGVzID0gdGhpcy5vdHBTZXJ2aWNlLmFkZEl0ZW1Ub0FsbChcclxuICAgICAgdGhpcy5zdHlsZXMsXHJcbiAgICAgIHRoaXMub3RwU2VydmljZS50b0FycmF5KHN0eWxlcylcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZVN0eWxlKGluZGV4OiBudW1iZXIsIHN0eWxlczogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcclxuICAgIHRoaXMuc3R5bGVzID0gdGhpcy5vdHBTZXJ2aWNlLnJlbW92ZUl0ZW1BdEluZGV4KFxyXG4gICAgICB0aGlzLnN0eWxlcyxcclxuICAgICAgaW5kZXgsXHJcbiAgICAgIHRoaXMub3RwU2VydmljZS50b0FycmF5KHN0eWxlcylcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZVN0eWxlRnJvbUFsbChzdHlsZXM6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMub3RwU2VydmljZS5yZW1vdmVJdGVtRnJvbUFsbChcclxuICAgICAgdGhpcy5zdHlsZXMsXHJcbiAgICAgIHRoaXMub3RwU2VydmljZS50b0FycmF5KHN0eWxlcylcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlID0gKHZhbHVlOiBJbnB1dFRleHRWYWx1ZVR5cGVzKSA9PiB7XHJcbiAgfTtcclxuICBwcml2YXRlIG9uVG91Y2hlZCA9ICgpID0+IHtcclxuICB9O1xyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHt9KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHdyaXRlVmFsdWUob3V0c2lkZVZhbHVlOiBJbnB1dFRleHRWYWx1ZVR5cGVzKSB7XHJcbiAgICBpZiAob3V0c2lkZVZhbHVlKSB7XHJcbiAgICAgIGxldCBsYXN0SW5kZXggPSAwO1xyXG4gICAgICBTdHJpbmcob3V0c2lkZVZhbHVlKVxyXG4gICAgICAgIC5zcGxpdCgnJylcclxuICAgICAgICAuc2xpY2UoMCwgdGhpcy5vdHBDb25maWcub3RwTGVuZ3RoKVxyXG4gICAgICAgIC5tYXAoKGNoYXJhY3Rlcjogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0ICYmIHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dEZpbGxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmFkZFN0eWxlKGluZGV4LCB0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXRGaWxsZWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5nZXRGb3JtQ29udHJvbEJ5SW5kZXgoaW5kZXgpLnNldFZhbHVlKGNoYXJhY3Rlciwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgICAgIGxhc3RJbmRleCA9IGluZGV4O1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKHRoaXMubmd4T3RwQXJyYXkudmFsaWQpIHtcclxuICAgICAgICB0aGlzLmJsdXIoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldEZvY3VzKGxhc3RJbmRleCArIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdwYXN0ZScsIFsnJGV2ZW50J10pIG9uUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5oYW5kbGVQYXN0ZShldmVudC5jbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQnKSk7XHJcbiAgfVxyXG5cclxuICBnZXRJbnB1dFR5cGUoKTogJ3RleHQnIHwgJ3Bhc3N3b3JkJyB8ICd0ZWwnIHtcclxuICAgIHJldHVybiB0aGlzLm90cENvbmZpZy5pc1Bhc3N3b3JkSW5wdXQgPyAncGFzc3dvcmQnIDogdGhpcy5vdHBDb25maWcuaXNOdW1iZXJJbnB1dCA/ICd0ZWwnIDogJ3RleHQnO1xyXG4gIH1cclxufVxyXG4iLCI8Zm9ybVxyXG4gIFtuZ0NsYXNzXT1cImdldENvbnRhaW5lckNsYXNzZXNcIlxyXG4gIGNsYXNzPVwibXJ4LWlucHV0LW90cC1jb250YWluZXJcIlxyXG4gIFtjbGFzc109XCJnZXRDbGFzc2VzXCJcclxuPlxyXG4gIDxkaXZcclxuICAgICpuZ0Zvcj1cImxldCBjb250cm9sIG9mIG5neE90cEFycmF5LmNvbnRyb2xzOyBsZXQgaSA9IGluZGV4XCJcclxuICAgIFtuZ0NsYXNzXT1cImdldElucHV0Qm94Q2xhc3Nlc1wiXHJcbiAgICBbY2xhc3MubXJ4LWlucHV0LWVycm9yXT1cImludmFsaWRcIlxyXG4gICAgW2NsYXNzXT1cImNoZWNrVmFsaWRDbGFzc2VzXCJcclxuICAgIGNsYXNzPVwibXJ4LWlucHV0LW90cC1ib3hcIlxyXG4gID5cclxuICAgIDxsYWJlbCBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbHNbaV1cIj5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgI290cElucHV0RWxlbWVudFxyXG4gICAgICAgIFtpZF09XCInbXJ4LWlucHV0LW90cC0nICsgaVwiXHJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnZlcnRUb0Zvcm1Db250cm9sKGNvbnRyb2wpXCJcclxuICAgICAgICBbbXJ4T3B0UGF0dGVybl09XCJvdHBDb25maWcucGF0dGVyblwiXHJcbiAgICAgICAgW3R5cGVdPVwiZ2V0SW5wdXRUeXBlKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInN0eWxlc1tpXVwiXHJcbiAgICAgICAgKGtleXVwKT1cImhhbmRsZUtleVVwKGksICRldmVudC5rZXkpXCJcclxuICAgICAgICAoa2V5dXAuYmFja3NwYWNlKT1cImhhbmRsZURlbGV0ZShpKVwiXHJcbiAgICAgICAgKGtleXVwLmFycm93TGVmdCk9XCJzdGVwQmFja3dhcmQoaSlcIlxyXG4gICAgICAgIChrZXl1cC5hcnJvd1JpZ2h0KT1cInN0ZXBGb3J3YXJkKGkpXCJcclxuICAgICAgICAoZm9jdXMpPVwiaGFuZGxlRm9jdXMoaSlcIlxyXG4gICAgICAgIGNsYXNzPVwibXJ4LWlucHV0LW90cFwiXHJcbiAgICAgICAgbWF4bGVuZ3RoPVwiMVwiXHJcbiAgICAgICAgYXV0b2NhcGl0YWxpemU9XCJvZmZcIlxyXG4gICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiXHJcbiAgICAgIC8+XHJcbiAgICA8L2xhYmVsPlxyXG4gIDwvZGl2PlxyXG48L2Zvcm0+XHJcblxyXG48bXJ4LWVycm9yLW1lc3NhZ2VcclxuICAqbmdJZj1cImludmFsaWQgJiYgaXNJbnZhbGlkTWVzc2FnZVwiXHJcbiAgY3VzdG9tQ2xhc3Nlcz1cInRleHQtbGVmdFwiXHJcbiAgW2ludmFsaWRNZXNzYWdlXT1cImludmFsaWRNZXNzYWdlXCJcclxuPjwvbXJ4LWVycm9yLW1lc3NhZ2U+XHJcbiJdfQ==
|
|
361
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtb3B0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LW9wdC9jb21wb25lbnRzL2lucHV0LW9wdC9pbnB1dC1vcHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtb3B0L2NvbXBvbmVudHMvaW5wdXQtb3B0L2lucHV0LW9wdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBRTdDLE1BQU0sRUFFTixZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixTQUFTLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hHLE9BQU8sRUFBRSxjQUFjLEVBQW1DLE1BQU0sOEJBQThCLENBQUM7QUFHL0YsT0FBTyxFQUFFLGlCQUFpQixFQUFzQixNQUFNLGtCQUFrQixDQUFDOzs7Ozs7O0FBZ0J6RSxNQUFNLE9BQU8saUJBQWlCO0lBOEQ1QixZQUNtQixVQUEyQixFQUMzQixHQUFzQjtRQUR0QixlQUFVLEdBQVYsVUFBVSxDQUFpQjtRQUMzQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQS9EakMsbUJBQWMsR0FBRyxNQUFNLENBQUM7UUFDeEIsdUJBQWtCLEdBQUcseUJBQXlCLENBQUM7UUFHL0MsMEJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBRTlCLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUM3QixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRXZCLGdCQUFXLEdBQVEs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SUFDckcsQ0FBQzs7OEdBL1hVLGlCQUFpQjtrR0FBakIsaUJBQWlCLDRWQVJqQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDO1lBQ2hELEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRixrSUM3QkgsNnVDQXVDQTsyRkRSYSxpQkFBaUI7a0JBYjdCLFNBQVM7K0JBQ0UsZUFBZSxtQkFHUix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGtCQUFrQixDQUFDOzRCQUNoRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtzSUFrQ2UsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsY0FBYztzQkFBN0IsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUVPLE9BQU87c0JBQW5CLEtBQUs7Z0JBS08sTUFBTTtzQkFBbEIsS0FBSztnQkFVTyxNQUFNO3NCQUFsQixLQUFLO2dCQUkyQixnQkFBZ0I7c0JBQWhELFlBQVk7dUJBQUMsaUJBQWlCO2dCQUVyQixNQUFNO3NCQUFmLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkEyVDRCLE9BQU87c0JBQXpDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBWaWV3Q2hpbGRyZW5cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmd4T3RwQmVoYXZpb3IsIE5neE90cElucHV0Q29uZmlnLCBOZ3hPdHBTdGF0dXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW5wdXQtb3B0Lm1vZGVsJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IElucHV0T3B0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2lucHV0LW9wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW5wdXRPcHRTaXplc0VudW0sIElucHV0T3B0U2l6ZXNUeXBlcyB9IGZyb20gJy4vaW5wdXQtb3B0LmVudW0nO1xyXG5pbXBvcnQgeyBJbnB1dFRleHRWYWx1ZVR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vaW5wdXQtdGV4dC9pbnB1dC10ZXh0LmVudW0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtaW5wdXQtb3B0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtb3B0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1vcHQuY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0T3B0Q29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dE9wdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIGRlZmF1bHRQYXR0ZXJuID0gL14uKyQvO1xyXG4gIHByaXZhdGUgREVGQVVMVF9BUklBX0xBQkVMID0gJ09uZSB0aW1lIHBhc3N3b3JkIGlucHV0JztcclxuICBwcml2YXRlIExBU1RfSU5QVVRfSU5ERVghOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBpbnB1dHMhOiBIVE1MSW5wdXRFbGVtZW50W107XHJcbiAgcHJpdmF0ZSBpc05neE90cEFycmF5RGlzYWJsZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIG5neE90cEFycmF5JCE6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIGZvY3VzZWRJbnB1dEhhc1ZhbHVlID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBpc0luaXQgPSBmYWxzZTtcclxuXHJcbiAgbmd4T3RwQXJyYXk6IGFueSA9IG5ldyBGb3JtQXJyYXkoW10pO1xyXG4gIGFyaWFMYWJlbHM6IHN0cmluZ1tdID0gW107XHJcbiAgcGF0dGVybiE6IFJlZ0V4cDtcclxuICBzdHlsZXM6IHN0cmluZ1tdW10gPSBbXTtcclxuXHJcbiAgb3RwQ29uZmlnOiBOZ3hPdHBJbnB1dENvbmZpZyA9IHtcclxuICAgIG90cExlbmd0aDogNixcclxuICAgIGF1dG9mb2N1czogdHJ1ZSxcclxuICAgIGF1dG9ibHVyOiB0cnVlLFxyXG4gICAgYmVoYXZpb3I6IE5neE90cEJlaGF2aW9yLkRFRkFVTFQsXHJcbiAgICBwYXR0ZXJuOiB0aGlzLmRlZmF1bHRQYXR0ZXJuLFxyXG4gICAgY2xhc3NMaXN0OiB7XHJcbiAgICAgIGNvbnRhaW5lcjogJycsXHJcbiAgICAgIGlucHV0Qm94OiAnJyxcclxuICAgICAgaW5wdXQ6ICcnLFxyXG4gICAgICBpbnB1dEZpbGxlZDogJycsXHJcbiAgICAgIGlucHV0RGlzYWJsZWQ6ICcnLFxyXG4gICAgICBpbnB1dFN1Y2Nlc3M6ICcnLFxyXG4gICAgICBpbnB1dEVycm9yOiAnJyxcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgc2l6ZTogSW5wdXRPcHRTaXplc1R5cGVzID0gJ2xhcmdlJztcclxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tQ2xhc3NlcyA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWRNZXNzYWdlOiBzdHJpbmcgfCBzdHJpbmdbXSA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjaGVja0ludmFsaWQ6IHRydWUgfCBmYWxzZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKSBzZXQgZGlzYWJsZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmhhbmRsZURpc2FibGUoaXNEaXNhYmxlZCk7XHJcbiAgICB0aGlzLmlzTmd4T3RwQXJyYXlEaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgY29uZmlnKGM6IE5neE90cElucHV0Q29uZmlnKSB7XHJcbiAgICB0aGlzLm90cENvbmZpZyA9IHsuLi50aGlzLm90cENvbmZpZywgLi4uY307XHJcbiAgICBpZiAodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0Py5pbnB1dCkge1xyXG4gICAgICB0aGlzLnNldEluaXRpYWxTdHlsZXMoKTtcclxuICAgIH1cclxuICAgIGlmICghYy5wYXR0ZXJuKSB7XHJcbiAgICAgIHRoaXMub3RwQ29uZmlnLnBhdHRlcm4gPSB0aGlzLmRlZmF1bHRQYXR0ZXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IHN0YXR1cyhzdGF0dXM6IE5neE90cFN0YXR1cykge1xyXG4gICAgdGhpcy5oYW5kbGVTdGF0dXNDaGFuZ2Uoc3RhdHVzKTtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oJ290cElucHV0RWxlbWVudCcpIG90cElucHV0RWxlbWVudHMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XHJcblxyXG4gIEBPdXRwdXQoKSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpO1xyXG4gIEBPdXRwdXQoKSBmaWxsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3RwU2VydmljZTogSW5wdXRPcHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByZWY6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0VXBPdHBGb3JtKCk7XHJcbiAgICB0aGlzLnNldFVwQXJpYUxhYmVscygpO1xyXG4gICAgdGhpcy5MQVNUX0lOUFVUX0lOREVYID0gdGhpcy5vdHBDb25maWcub3RwTGVuZ3RoIC0gMTtcclxuICAgIHRoaXMub3RwRm9ybUNoYW5nZUxpc3RlbmVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldE5hdGl2ZUhUTUxFbGVtZW50cygpO1xyXG4gICAgdGhpcy5zZXRJbml0aWFsRm9jdXMoKTtcclxuICAgIHRoaXMuc2V0TnVtZXJpY0lucHV0SWZQb3NzaWJsZSgpO1xyXG4gICAgdGhpcy5oYW5kbGVEaXNhYmxlKHRoaXMuaXNOZ3hPdHBBcnJheURpc2FibGVkKTtcclxuICAgIHRoaXMuaXNJbml0ID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5uZ3hPdHBBcnJheSQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNJbnZhbGlkTWVzc2FnZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMuaW52YWxpZE1lc3NhZ2UgfHwgISF0aGlzLmludmFsaWRNZXNzYWdlLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2hlY2tWYWxpZENsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrSW52YWxpZCA9PT0gZmFsc2UgP1xyXG4gICAgICAnbXJ4LWlucHV0LWNoZWNrZWQtc3VjY2VzcycgOlxyXG4gICAgICB0aGlzLmNoZWNrSW52YWxpZCA9PT0gdHJ1ZSA/ICdtcngtaW5wdXQtY2hlY2tlZC1lcnJvcicgOiAnJztcclxuICB9XHJcblxyXG4gIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7SW5wdXRPcHRTaXplc0VudW1bdGhpcy5zaXplXX0gJHt0aGlzLmN1c3RvbUNsYXNzZXN9YDtcclxuICB9XHJcblxyXG4gIGdldCBnZXRDb250YWluZXJDbGFzc2VzKCk6IHN0cmluZyB8IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiB0aGlzLm90cENvbmZpZz8uY2xhc3NMaXN0Py5jb250YWluZXIgfHwgJydcclxuICB9XHJcblxyXG4gIGdldCBnZXRJbnB1dEJveENsYXNzZXMoKTogc3RyaW5nIHwgc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIHRoaXMub3RwQ29uZmlnPy5jbGFzc0xpc3Q/LmlucHV0Qm94IHx8ICcnXHJcbiAgfVxyXG5cclxuICBjb252ZXJ0VG9Gb3JtQ29udHJvbChhYnNDdHJsOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsKTogRm9ybUNvbnRyb2wge1xyXG4gICAgcmV0dXJuIGFic0N0cmwgYXMgRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBjbGVhcigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QgJiYgdGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RmlsbGVkKSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlU3R5bGVGcm9tQWxsKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dEZpbGxlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5uZ3hPdHBBcnJheS5yZXNldCgpO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIGlmICh0aGlzLm90cENvbmZpZy5hdXRvZm9jdXMpIHtcclxuICAgICAgdGhpcy5zZXRGb2N1cygwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUtleVVwKGluZGV4OiBudW1iZXIsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIGlmICh0aGlzLm90cENvbmZpZy5wYXR0ZXJuLnRlc3QodmFsdWUpICYmIHZhbHVlICE9PSAnQmFja3NwYWNlJykge1xyXG4gICAgICBpZiAodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0ICYmIHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dEZpbGxlZCkge1xyXG4gICAgICAgIHRoaXMuYWRkU3R5bGUoaW5kZXgsIHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dEZpbGxlZCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLm5neE90cEFycmF5LnZhbGlkKSB7XHJcbiAgICAgICAgdGhpcy5nZXRGb3JtQ29udHJvbEJ5SW5kZXgoaW5kZXgpLnNldFZhbHVlKHZhbHVlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgICAgIHRoaXMuc3RlcEZvcndhcmQoaW5kZXgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYmx1cigpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVEZWxldGUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdCAmJiB0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXRGaWxsZWQpIHtcclxuICAgICAgdGhpcy5yZW1vdmVTdHlsZShpbmRleCwgdGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RmlsbGVkKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgICh0aGlzLm90cENvbmZpZy5iZWhhdmlvciA9PT0gTmd4T3RwQmVoYXZpb3IuTEVHQUNZICYmXHJcbiAgICAgICAgIXRoaXMuZm9jdXNlZElucHV0SGFzVmFsdWUpIHx8XHJcbiAgICAgIHRoaXMub3RwQ29uZmlnLmJlaGF2aW9yICE9PSBOZ3hPdHBCZWhhdmlvci5MRUdBQ1lcclxuICAgICkge1xyXG4gICAgICB0aGlzLnN0ZXBCYWNrd2FyZChpbmRleCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZvY3VzZWRJbnB1dEhhc1ZhbHVlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVGb2N1cyhpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvY3VzZWRJbnB1dEhhc1ZhbHVlID0gISF0aGlzLm5neE90cEFycmF5LmNvbnRyb2xzW2luZGV4XS52YWx1ZTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMub3RwQ29uZmlnLmJlaGF2aW9yID09PSBOZ3hPdHBCZWhhdmlvci5MRUdBQ1kgJiZcclxuICAgICAgdGhpcy5mb2N1c2VkSW5wdXRIYXNWYWx1ZVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRzW2luZGV4XS5zZWxlY3QoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0ZXBCYWNrd2FyZChpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoaW5kZXggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2V0Rm9jdXMoaW5kZXggLSAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0ZXBGb3J3YXJkKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChpbmRleCA8IHRoaXMuTEFTVF9JTlBVVF9JTkRFWCkge1xyXG4gICAgICB0aGlzLnNldEZvY3VzKGluZGV4ICsgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG90cEZvcm1DaGFuZ2VMaXN0ZW5lcigpOiB2b2lkIHtcclxuICAgIHRoaXMubmd4T3RwQXJyYXkkID0gdGhpcy5uZ3hPdHBBcnJheS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5pc0luaXQpIHtcclxuICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KHZhbHVlcyk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm5neE90cEFycmF5LnZhbGlkKSB7XHJcbiAgICAgICAgICB0aGlzLmZpbGxDaGFuZ2UuZW1pdCh2YWx1ZXMuam9pbignJykpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFVwT3RwRm9ybSgpOiB2b2lkIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vdHBDb25maWcub3RwTGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5uZ3hPdHBBcnJheS5wdXNoKG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFVwQXJpYUxhYmVscygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGxhYmVscyA9IHRoaXMub3RwQ29uZmlnLmFyaWFMYWJlbHM7XHJcblxyXG4gICAgdGhpcy5hcmlhTGFiZWxzID0gQXJyYXkuaXNBcnJheShsYWJlbHMpXHJcbiAgICAgID8gbGFiZWxzXHJcbiAgICAgIDogbmV3IEFycmF5KHRoaXMub3RwQ29uZmlnLm90cExlbmd0aCkuZmlsbChcclxuICAgICAgICBsYWJlbHMgfHwgdGhpcy5ERUZBVUxUX0FSSUFfTEFCRUxcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0TmF0aXZlSFRNTEVsZW1lbnRzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbnB1dHMgPSB0aGlzLm90cElucHV0RWxlbWVudHMubWFwKChlbGVtZW50KSA9PiBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRJbml0aWFsRm9jdXMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vdHBDb25maWcuYXV0b2ZvY3VzKSB7XHJcbiAgICAgIHRoaXMuc2V0Rm9jdXMoMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEluaXRpYWxTdHlsZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMub3RwU2VydmljZS5pbml0MkRBcnJheSh0aGlzLm90cENvbmZpZy5vdHBMZW5ndGgpO1xyXG5cclxuICAgIGlmICh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QgJiYgdGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0KSB7XHJcbiAgICAgIHRoaXMuYWRkU3R5bGVUb0FsbCh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRGb2N1cyhpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmlucHV0c1tpbmRleF0uZm9jdXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0TnVtZXJpY0lucHV0SWZQb3NzaWJsZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm90cENvbmZpZy5udW1lcmljSW5wdXRNb2RlKSB7XHJcbiAgICAgIHRoaXMub3RwQ29uZmlnLnBhdHRlcm4gPSB0aGlzLmRlZmF1bHRQYXR0ZXJuO1xyXG4gICAgICB0aGlzLmlucHV0cy5tYXAoKGVsZW1lbnQpID0+IHtcclxuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnaW5wdXRtb2RlJywgJ251bWVyaWMnKTtcclxuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgncGF0dGVybicsICdbMC05XSonKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJsdXIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vdHBDb25maWcuYXV0b2JsdXIpIHtcclxuICAgICAgdGhpcy5pbnB1dHMubWFwKChpbnB1dCkgPT4gaW5wdXQuYmx1cigpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlUGFzdGUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgaWYgKHRoaXMub3RwQ29uZmlnLnBhdHRlcm4udGVzdCh2YWx1ZSkpIHtcclxuICAgICAgbGV0IGxhc3RJbmRleCA9IDA7XHJcbiAgICAgIHZhbHVlXHJcbiAgICAgICAgLnNwbGl0KCcnKVxyXG4gICAgICAgIC5zbGljZSgwLCB0aGlzLm90cENvbmZpZy5vdHBMZW5ndGgpXHJcbiAgICAgICAgLm1hcCgoY2hhcmFjdGVyOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QgJiYgdGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RmlsbGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkU3R5bGUoaW5kZXgsIHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dEZpbGxlZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmdldEZvcm1Db250cm9sQnlJbmRleChpbmRleCkuc2V0VmFsdWUoY2hhcmFjdGVyKTtcclxuICAgICAgICAgIGxhc3RJbmRleCA9IGluZGV4O1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKHRoaXMubmd4T3RwQXJyYXkudmFsaWQpIHtcclxuICAgICAgICB0aGlzLmJsdXIoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldEZvY3VzKGxhc3RJbmRleCArIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZURpc2FibGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5uZ3hPdHBBcnJheS5kaXNhYmxlKCk7XHJcbiAgICAgIGlmICh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QgJiYgdGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RGlzYWJsZWQpIHtcclxuICAgICAgICB0aGlzLmFkZFN0eWxlVG9BbGwodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RGlzYWJsZWQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm5neE90cEFycmF5LmVuYWJsZSgpO1xyXG4gICAgICBpZiAodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0ICYmIHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dERpc2FibGVkKSB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVTdHlsZUZyb21BbGwodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RGlzYWJsZWQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVN0YXR1c0NoYW5nZShzdGF0dXM6IE5neE90cFN0YXR1cyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdCAmJiAodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0U3VjY2VzcyAmJiB0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXRFcnJvcikpIHtcclxuICAgICAgdGhpcy5yZW1vdmVTdHlsZUZyb21BbGwoW1xyXG4gICAgICAgIC4uLnRoaXMub3RwU2VydmljZS50b0FycmF5KFxyXG4gICAgICAgICAgdGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0U3VjY2Vzc1xyXG4gICAgICAgICksXHJcbiAgICAgICAgLi4udGhpcy5vdHBTZXJ2aWNlLnRvQXJyYXkodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RXJyb3IpLFxyXG4gICAgICBdKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc3RhdHVzKSB7XHJcbiAgICAgIGlmIChzdGF0dXMgPT09ICdzdWNjZXNzJykge1xyXG4gICAgICAgIGlmICh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QgJiYgdGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0U3VjY2Vzcykge1xyXG4gICAgICAgICAgdGhpcy5hZGRTdHlsZVRvQWxsKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dFN1Y2Nlc3MpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPT09ICdlcnJvcicpIHtcclxuICAgICAgICBpZiAodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0ICYmIHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dEVycm9yKSB7XHJcbiAgICAgICAgICB0aGlzLmFkZFN0eWxlVG9BbGwodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGb3JtQ29udHJvbEJ5SW5kZXgoaW5kZXg6IG51bWJlcik6IEZvcm1Db250cm9sIHtcclxuICAgIHJldHVybiB0aGlzLm5neE90cEFycmF5LmNvbnRyb2xzW2luZGV4XSBhcyBGb3JtQ29udHJvbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkU3R5bGUoaW5kZXg6IG51bWJlciwgc3R5bGVzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLm90cFNlcnZpY2UuYWRkSXRlbUF0SW5kZXgoXHJcbiAgICAgIHRoaXMuc3R5bGVzLFxyXG4gICAgICBpbmRleCxcclxuICAgICAgdGhpcy5vdHBTZXJ2aWNlLnRvQXJyYXkoc3R5bGVzKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkU3R5bGVUb0FsbChzdHlsZXM6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMub3RwU2VydmljZS5hZGRJdGVtVG9BbGwoXHJcbiAgICAgIHRoaXMuc3R5bGVzLFxyXG4gICAgICB0aGlzLm90cFNlcnZpY2UudG9BcnJheShzdHlsZXMpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVTdHlsZShpbmRleDogbnVtYmVyLCBzdHlsZXM6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMub3RwU2VydmljZS5yZW1vdmVJdGVtQXRJbmRleChcclxuICAgICAgdGhpcy5zdHlsZXMsXHJcbiAgICAgIGluZGV4LFxyXG4gICAgICB0aGlzLm90cFNlcnZpY2UudG9BcnJheShzdHlsZXMpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVTdHlsZUZyb21BbGwoc3R5bGVzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLm90cFNlcnZpY2UucmVtb3ZlSXRlbUZyb21BbGwoXHJcbiAgICAgIHRoaXMuc3R5bGVzLFxyXG4gICAgICB0aGlzLm90cFNlcnZpY2UudG9BcnJheShzdHlsZXMpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZSA9ICh2YWx1ZTogSW5wdXRUZXh0VmFsdWVUeXBlcykgPT4ge1xyXG4gIH07XHJcbiAgcHJpdmF0ZSBvblRvdWNoZWQgPSAoKSA9PiB7XHJcbiAgfTtcclxuXHJcbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB7fSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB3cml0ZVZhbHVlKG91dHNpZGVWYWx1ZTogSW5wdXRUZXh0VmFsdWVUeXBlcykge1xyXG4gICAgaWYgKG91dHNpZGVWYWx1ZSkge1xyXG4gICAgICBsZXQgbGFzdEluZGV4ID0gMDtcclxuICAgICAgU3RyaW5nKG91dHNpZGVWYWx1ZSlcclxuICAgICAgICAuc3BsaXQoJycpXHJcbiAgICAgICAgLnNsaWNlKDAsIHRoaXMub3RwQ29uZmlnLm90cExlbmd0aClcclxuICAgICAgICAubWFwKChjaGFyYWN0ZXI6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdCAmJiB0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXRGaWxsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRTdHlsZShpbmRleCwgdGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RmlsbGVkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZ2V0Rm9ybUNvbnRyb2xCeUluZGV4KGluZGV4KS5zZXRWYWx1ZShjaGFyYWN0ZXIsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICAgICAgICBsYXN0SW5kZXggPSBpbmRleDtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIGlmICh0aGlzLm5neE90cEFycmF5LnZhbGlkKSB7XHJcbiAgICAgICAgdGhpcy5ibHVyKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXRGb2N1cyhsYXN0SW5kZXggKyAxKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcigncGFzdGUnLCBbJyRldmVudCddKSBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMuaGFuZGxlUGFzdGUoZXZlbnQuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0JykpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW5wdXRUeXBlKCk6ICd0ZXh0JyB8ICdwYXNzd29yZCcgfCAndGVsJyB7XHJcbiAgICByZXR1cm4gdGhpcy5vdHBDb25maWcuaXNQYXNzd29yZElucHV0ID8gJ3Bhc3N3b3JkJyA6IHRoaXMub3RwQ29uZmlnLmlzTnVtYmVySW5wdXQgPyAndGVsJyA6ICd0ZXh0JztcclxuICB9XHJcbn1cclxuIiwiPGZvcm1cclxuICBbbmdDbGFzc109XCJnZXRDb250YWluZXJDbGFzc2VzXCJcclxuICBjbGFzcz1cIm1yeC1pbnB1dC1vdHAtY29udGFpbmVyXCJcclxuICBbY2xhc3NdPVwiZ2V0Q2xhc3Nlc1wiXHJcbj5cclxuICA8ZGl2XHJcbiAgICAqbmdGb3I9XCJsZXQgY29udHJvbCBvZiBuZ3hPdHBBcnJheS5jb250cm9sczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICBbbmdDbGFzc109XCJnZXRJbnB1dEJveENsYXNzZXNcIlxyXG4gICAgW2NsYXNzLm1yeC1pbnB1dC1lcnJvcl09XCJpbnZhbGlkXCJcclxuICAgIFtjbGFzc109XCJjaGVja1ZhbGlkQ2xhc3Nlc1wiXHJcbiAgICBjbGFzcz1cIm1yeC1pbnB1dC1vdHAtYm94XCJcclxuICA+XHJcbiAgICA8bGFiZWwgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxzW2ldXCI+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgICNvdHBJbnB1dEVsZW1lbnRcclxuICAgICAgICBbaWRdPVwiJ21yeC1pbnB1dC1vdHAtJyArIGlcIlxyXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJjb252ZXJ0VG9Gb3JtQ29udHJvbChjb250cm9sKVwiXHJcbiAgICAgICAgW21yeE9wdFBhdHRlcm5dPVwib3RwQ29uZmlnLnBhdHRlcm5cIlxyXG4gICAgICAgIFt0eXBlXT1cImdldElucHV0VHlwZSgpXCJcclxuICAgICAgICBbbmdDbGFzc109XCJzdHlsZXNbaV1cIlxyXG4gICAgICAgIChrZXl1cCk9XCJoYW5kbGVLZXlVcChpLCAkZXZlbnQua2V5KVwiXHJcbiAgICAgICAgKGtleXVwLmJhY2tzcGFjZSk9XCJoYW5kbGVEZWxldGUoaSlcIlxyXG4gICAgICAgIChrZXl1cC5hcnJvd0xlZnQpPVwic3RlcEJhY2t3YXJkKGkpXCJcclxuICAgICAgICAoa2V5dXAuYXJyb3dSaWdodCk9XCJzdGVwRm9yd2FyZChpKVwiXHJcbiAgICAgICAgKGZvY3VzKT1cImhhbmRsZUZvY3VzKGkpXCJcclxuICAgICAgICBjbGFzcz1cIm1yeC1pbnB1dC1vdHBcIlxyXG4gICAgICAgIG1heGxlbmd0aD1cIjFcIlxyXG4gICAgICAgIGF1dG9jYXBpdGFsaXplPVwib2ZmXCJcclxuICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxyXG4gICAgICAvPlxyXG4gICAgPC9sYWJlbD5cclxuICA8L2Rpdj5cclxuPC9mb3JtPlxyXG5cclxuPG1yeC1lcnJvci1tZXNzYWdlXHJcbiAgKm5nSWY9XCJpbnZhbGlkICYmIGlzSW52YWxpZE1lc3NhZ2VcIlxyXG4gIGN1c3RvbUNsYXNzZXM9XCJ0ZXh0LWxlZnRcIlxyXG4gIFtpbnZhbGlkTWVzc2FnZV09XCJpbnZhbGlkTWVzc2FnZVwiXHJcbj48L21yeC1lcnJvci1tZXNzYWdlPlxyXG4iXX0=
|