ngx-vector-components 2.6.0 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.7.0] (04/04/2022)
4
+
5
+ ### Features
6
+
7
+ - Added alphaNumeric option to text-field.
8
+
9
+ ### Bug Fixes
10
+
11
+ - Fix top-bar to hidden notification if is fintech.
12
+ - Fix top-bar changed label for change password.
13
+ - Fix toggle menu when keydown escape.
14
+
3
15
  ## [2.6.0] (30/03/2022)
4
16
 
5
17
  ### Features
@@ -7,6 +19,7 @@
7
19
  - Added directive min and max for percentage-field.
8
20
  - Added notSequentialNumbers validator.
9
21
  - Added firstLetterIsUppercase validator.
22
+
10
23
  ### Bug Fixes
11
24
 
12
25
  - Fix menu service for don't delete father.
@@ -116,7 +116,7 @@ export class FiltersComponent {
116
116
  }
117
117
  }
118
118
  FiltersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: FiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
119
- FiltersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: FiltersComponent, selector: "vector-filters", inputs: { fields: "fields" }, outputs: { onSearch: "onSearch" }, ngImport: i0, template: "<section class=\"grid filter-container\" [hidden]=\"!fields?.length\">\r\n <div *ngFor=\"let field of fields | notHidden\" class=\"field col-12 sm:col-8 {{ getGridClass(field) }}\">\r\n <label>{{ field.label }}</label>\r\n <vector-text-field\r\n *ngIf=\"isTextFieldType(field)\"\r\n [control]=\"formGroup.get(field.name)\"\r\n [mask]=\"field.mask\"\r\n [label]=\"field.placeholder\"\r\n [isRequired]=\"field.required\"\r\n [numeric]=\"field.type === fieldTypes.NUMBER\"\r\n ></vector-text-field>\r\n <vector-dropdown-field\r\n *ngIf=\"field.type === fieldTypes.DROPDOWN\"\r\n [options]=\"field.options || []\"\r\n [service]=\"field.service\"\r\n [isRequired]=\"field.required\"\r\n [control]=\"formGroup.get(field.name)\"\r\n [paged]=\"false\"\r\n [dependencies]=\"getFieldDependencies(field)\"\r\n ></vector-dropdown-field>\r\n <vector-currency-field\r\n *ngIf=\"field.type === fieldTypes.CURRENCY\"\r\n [control]=\"formGroup.get(field.name)\"\r\n [outlined]=\"true\"\r\n ></vector-currency-field>\r\n <vector-calendar-field\r\n *ngIf=\"field.type === fieldTypes.DATE\"\r\n [control]=\"formGroup.get(field.name)\"\r\n [isRequired]=\"field.required\"\r\n [label]=\"field.placeholder || ''\"\r\n ></vector-calendar-field>\r\n </div>\r\n <div class=\"search-button col-12 sm:col-4 md:col-2\">\r\n <vector-button label=\"Pesquisar\" (click)=\"search()\" [disabled]=\"!formGroup.valid\"></vector-button>\r\n </div>\r\n</section>\r\n", styles: [".filter-container{align-items:center}.filter-container .field{display:flex;flex-direction:column}@media (min-width: 768px){.filter-container .search-button{padding-top:36px}}\n"], components: [{ type: i1.TextFieldComponent, selector: "vector-text-field", inputs: ["isRequired", "label", "maxlength", "isPassword", "numeric", "decimal", "onlyText", "mask", "autoClear", "rightIcon", "centered", "enableDocumentTypeChoice", "hiddenErrorMessage", "control"], outputs: ["blurEvent", "enterKeyPress", "focusEvent", "onDocumentTypeChange"] }, { type: i2.DropdownFieldComponent, selector: "vector-dropdown-field", inputs: ["options", "isRequired", "control", "label", "service", "paged", "buttonAction", "dependencies", "hiddenErrorMessage"], outputs: ["onFocus"] }, { type: i3.CurrencyFieldComponent, selector: "vector-currency-field", inputs: ["minValue", "maxValue", "placeholder", "control", "outlined"] }, { type: i4.CalendarComponent, selector: "vector-calendar-field", inputs: ["isRequired", "control", "label", "showCalendarOnFocus", "min", "max", "disabledDates", "disabled", "defaultDate", "hiddenErrorMessage"] }, { type: i5.ButtonComponent, selector: "vector-button", inputs: ["disabled", "label", "type", "leftIcon", "noShadow"], outputs: ["onClick"] }], directives: [{ type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "notHidden": i7.NotHiddenPipe } });
119
+ FiltersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: FiltersComponent, selector: "vector-filters", inputs: { fields: "fields" }, outputs: { onSearch: "onSearch" }, ngImport: i0, template: "<section class=\"grid filter-container\" [hidden]=\"!fields?.length\">\r\n <div *ngFor=\"let field of fields | notHidden\" class=\"field col-12 sm:col-8 {{ getGridClass(field) }}\">\r\n <label>{{ field.label }}</label>\r\n <vector-text-field\r\n *ngIf=\"isTextFieldType(field)\"\r\n [control]=\"formGroup.get(field.name)\"\r\n [mask]=\"field.mask\"\r\n [label]=\"field.placeholder\"\r\n [isRequired]=\"field.required\"\r\n [numeric]=\"field.type === fieldTypes.NUMBER\"\r\n ></vector-text-field>\r\n <vector-dropdown-field\r\n *ngIf=\"field.type === fieldTypes.DROPDOWN\"\r\n [options]=\"field.options || []\"\r\n [service]=\"field.service\"\r\n [isRequired]=\"field.required\"\r\n [control]=\"formGroup.get(field.name)\"\r\n [paged]=\"false\"\r\n [dependencies]=\"getFieldDependencies(field)\"\r\n ></vector-dropdown-field>\r\n <vector-currency-field\r\n *ngIf=\"field.type === fieldTypes.CURRENCY\"\r\n [control]=\"formGroup.get(field.name)\"\r\n [outlined]=\"true\"\r\n ></vector-currency-field>\r\n <vector-calendar-field\r\n *ngIf=\"field.type === fieldTypes.DATE\"\r\n [control]=\"formGroup.get(field.name)\"\r\n [isRequired]=\"field.required\"\r\n [label]=\"field.placeholder || ''\"\r\n ></vector-calendar-field>\r\n </div>\r\n <div class=\"search-button col-12 sm:col-4 md:col-2\">\r\n <vector-button label=\"Pesquisar\" (click)=\"search()\" [disabled]=\"!formGroup.valid\"></vector-button>\r\n </div>\r\n</section>\r\n", styles: [".filter-container{align-items:center}.filter-container .field{display:flex;flex-direction:column}@media (min-width: 768px){.filter-container .search-button{padding-top:36px}}\n"], components: [{ type: i1.TextFieldComponent, selector: "vector-text-field", inputs: ["isRequired", "label", "maxlength", "isPassword", "numeric", "decimal", "onlyText", "alphaNumeric", "mask", "autoClear", "rightIcon", "centered", "enableDocumentTypeChoice", "hiddenErrorMessage", "control"], outputs: ["blurEvent", "enterKeyPress", "focusEvent", "onDocumentTypeChange"] }, { type: i2.DropdownFieldComponent, selector: "vector-dropdown-field", inputs: ["options", "isRequired", "control", "label", "service", "paged", "buttonAction", "dependencies", "hiddenErrorMessage"], outputs: ["onFocus"] }, { type: i3.CurrencyFieldComponent, selector: "vector-currency-field", inputs: ["minValue", "maxValue", "placeholder", "control", "outlined"] }, { type: i4.CalendarComponent, selector: "vector-calendar-field", inputs: ["isRequired", "control", "label", "showCalendarOnFocus", "min", "max", "disabledDates", "disabled", "defaultDate", "hiddenErrorMessage"] }, { type: i5.ButtonComponent, selector: "vector-button", inputs: ["disabled", "label", "type", "leftIcon", "noShadow"], outputs: ["onClick"] }], directives: [{ type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "notHidden": i7.NotHiddenPipe } });
120
120
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: FiltersComponent, decorators: [{
121
121
  type: Component,
122
122
  args: [{ selector: 'vector-filters', template: "<section class=\"grid filter-container\" [hidden]=\"!fields?.length\">\r\n <div *ngFor=\"let field of fields | notHidden\" class=\"field col-12 sm:col-8 {{ getGridClass(field) }}\">\r\n <label>{{ field.label }}</label>\r\n <vector-text-field\r\n *ngIf=\"isTextFieldType(field)\"\r\n [control]=\"formGroup.get(field.name)\"\r\n [mask]=\"field.mask\"\r\n [label]=\"field.placeholder\"\r\n [isRequired]=\"field.required\"\r\n [numeric]=\"field.type === fieldTypes.NUMBER\"\r\n ></vector-text-field>\r\n <vector-dropdown-field\r\n *ngIf=\"field.type === fieldTypes.DROPDOWN\"\r\n [options]=\"field.options || []\"\r\n [service]=\"field.service\"\r\n [isRequired]=\"field.required\"\r\n [control]=\"formGroup.get(field.name)\"\r\n [paged]=\"false\"\r\n [dependencies]=\"getFieldDependencies(field)\"\r\n ></vector-dropdown-field>\r\n <vector-currency-field\r\n *ngIf=\"field.type === fieldTypes.CURRENCY\"\r\n [control]=\"formGroup.get(field.name)\"\r\n [outlined]=\"true\"\r\n ></vector-currency-field>\r\n <vector-calendar-field\r\n *ngIf=\"field.type === fieldTypes.DATE\"\r\n [control]=\"formGroup.get(field.name)\"\r\n [isRequired]=\"field.required\"\r\n [label]=\"field.placeholder || ''\"\r\n ></vector-calendar-field>\r\n </div>\r\n <div class=\"search-button col-12 sm:col-4 md:col-2\">\r\n <vector-button label=\"Pesquisar\" (click)=\"search()\" [disabled]=\"!formGroup.valid\"></vector-button>\r\n </div>\r\n</section>\r\n", styles: [".filter-container{align-items:center}.filter-container .field{display:flex;flex-direction:column}@media (min-width: 768px){.filter-container .search-button{padding-top:36px}}\n"] }]
@@ -21,7 +21,7 @@ export class SearchFieldComponent {
21
21
  }
22
22
  }
23
23
  SearchFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: SearchFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
24
- SearchFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: SearchFieldComponent, selector: "vector-search-field", inputs: { placeholder: "placeholder" }, outputs: { onSearch: "onSearch" }, ngImport: i0, template: "<vector-text-field [control]=\"formControl\" rightIcon=\"fas fa-search\" [label]=\"placeholder\"></vector-text-field>\r\n", styles: [""], components: [{ type: i1.TextFieldComponent, selector: "vector-text-field", inputs: ["isRequired", "label", "maxlength", "isPassword", "numeric", "decimal", "onlyText", "mask", "autoClear", "rightIcon", "centered", "enableDocumentTypeChoice", "hiddenErrorMessage", "control"], outputs: ["blurEvent", "enterKeyPress", "focusEvent", "onDocumentTypeChange"] }] });
24
+ SearchFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: SearchFieldComponent, selector: "vector-search-field", inputs: { placeholder: "placeholder" }, outputs: { onSearch: "onSearch" }, ngImport: i0, template: "<vector-text-field [control]=\"formControl\" rightIcon=\"fas fa-search\" [label]=\"placeholder\"></vector-text-field>\r\n", styles: [""], components: [{ type: i1.TextFieldComponent, selector: "vector-text-field", inputs: ["isRequired", "label", "maxlength", "isPassword", "numeric", "decimal", "onlyText", "alphaNumeric", "mask", "autoClear", "rightIcon", "centered", "enableDocumentTypeChoice", "hiddenErrorMessage", "control"], outputs: ["blurEvent", "enterKeyPress", "focusEvent", "onDocumentTypeChange"] }] });
25
25
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: SearchFieldComponent, decorators: [{
26
26
  type: Component,
27
27
  args: [{ selector: 'vector-search-field', template: "<vector-text-field [control]=\"formControl\" rightIcon=\"fas fa-search\" [label]=\"placeholder\"></vector-text-field>\r\n", styles: [""] }]
@@ -19,6 +19,7 @@ export class TextFieldComponent {
19
19
  this.numeric = false;
20
20
  this.decimal = false;
21
21
  this.onlyText = false;
22
+ this.alphaNumeric = false;
22
23
  this.autoClear = true;
23
24
  this.rightIcon = '';
24
25
  this.centered = false;
@@ -81,6 +82,9 @@ export class TextFieldComponent {
81
82
  this.validateOnly = true;
82
83
  return /^[a-zA-ZÀ-ú\s]*$/gm;
83
84
  }
85
+ if (this.alphaNumeric) {
86
+ return 'alpha';
87
+ }
84
88
  return /[\s\S]*/;
85
89
  }
86
90
  get control() {
@@ -174,7 +178,7 @@ export class TextFieldComponent {
174
178
  }
175
179
  }
176
180
  TextFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: TextFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
177
- TextFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: TextFieldComponent, selector: "vector-text-field", inputs: { isRequired: "isRequired", label: "label", maxlength: "maxlength", isPassword: "isPassword", numeric: "numeric", decimal: "decimal", onlyText: "onlyText", mask: "mask", autoClear: "autoClear", rightIcon: "rightIcon", centered: "centered", enableDocumentTypeChoice: "enableDocumentTypeChoice", hiddenErrorMessage: "hiddenErrorMessage", control: "control" }, outputs: { blurEvent: "blurEvent", enterKeyPress: "enterKeyPress", focusEvent: "focusEvent", onDocumentTypeChange: "onDocumentTypeChange" }, ngImport: i0, template: "<form class=\"input-container p-input-icon-right\">\r\n <i *ngIf=\"rightIcon\" [class]=\"rightIcon\"></i>\r\n <i *ngIf=\"isPassword\" class=\"show-password-icon {{ showPasswordIcon }}\" (click)=\"toggleShowPassword()\"></i>\r\n <div class=\"p-inputgroup\">\r\n <vector-button\r\n *ngIf=\"enableDocumentTypeChoice\"\r\n leftIcon=\"fas fa-exchange-alt\"\r\n type=\"success\"\r\n [label]=\"selectedDocumentType.name\"\r\n [disabled]=\"control.disabled\"\r\n [noShadow]=\"true\"\r\n (onClick)=\"handleDocumentTypeChange()\"\r\n ></vector-button>\r\n\r\n <input\r\n *ngIf=\"!mask\"\r\n pInputText\r\n type=\"text\"\r\n [formControl]=\"control\"\r\n [attr.maxlength]=\"maxlength\"\r\n [placeholder]=\"placeholder\"\r\n [pValidateOnly]=\"validateOnly\"\r\n [pKeyFilter]=\"keyfilter\"\r\n [ngClass]=\"{ 'password-field': isPassword && !isPasswordVisible, 'text-centered': centered }\"\r\n (onBlur)=\"onBlur()\"\r\n (keydown.enter)=\"onEnterPress()\"\r\n (click)=\"onFocus($event)\"\r\n />\r\n <p-inputMask\r\n *ngIf=\"mask\"\r\n type=\"text\"\r\n [formControl]=\"control\"\r\n [mask]=\"mask\"\r\n [placeholder]=\"placeholder\"\r\n (onBlur)=\"onBlur()\"\r\n (keydown.enter)=\"onEnterPress()\"\r\n [autoClear]=\"autoClear\"\r\n [unmask]=\"true\"\r\n [styleClass]=\"centered ? 'text-centered' : ''\"\r\n slotChar=\"_\"\r\n (click)=\"onFocus($event)\"\r\n ></p-inputMask>\r\n </div>\r\n <vector-field-error-message *ngIf=\"!hiddenErrorMessage\" [control]=\"control\"></vector-field-error-message>\r\n <!-- <span class=\"input-error\">{{ fieldErrorLabel() }}</span> -->\r\n</form>\r\n", styles: [":root{--theme-primary: #0046e8;--theme-dark: #3a2b68;--background: #f2f2f7;--font-color: #151515;--disabled-background: #bcbcbc;--placeholder-color: #aaaaaa80;--border-radius: 5px;--theme-primary-transparent: rgba(1, 70, 108, .8);--gray-lighter: #eff0f6;--gray-light: #e5e5ea;--gray-medium: #d9dbe9;--gray-dark: #6e7f88;--gray-darker: #6e7191;--error-color: #fd6a6a;--error-color-dark: #ff4136;--error-color-transparent: #fd6a6a1a;--success-color: #11b797;--success-color-dark: #0e8a71;--theme-light: #0145e8;--warning-color: #e9c429;--cancel-color: #ca024f;--form-labels-color: #4e4b66;--font-color-primary: #3a2b68;--font-color-secondary: rgb(87, 87, 87)}.input-container{width:100%}.input-container .password-field{-webkit-text-security:disc}.input-container .input-error{font-size:.7em;color:var(--error-color);position:absolute;width:max-content}.input-container .show-password-icon{font-size:1.4em;margin-right:5px;cursor:pointer}\n"], components: [{ type: i1.ButtonComponent, selector: "vector-button", inputs: ["disabled", "label", "type", "leftIcon", "noShadow"], outputs: ["onClick"] }, { type: i2.InputMask, selector: "p-inputMask", inputs: ["type", "slotChar", "autoClear", "style", "inputId", "styleClass", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "disabled", "readonly", "unmask", "name", "required", "characterPattern", "autoFocus", "autocomplete", "mask"], outputs: ["onComplete", "onFocus", "onBlur", "onInput", "onKeydown"] }, { type: i3.FieldErrorMessageComponent, selector: "vector-field-error-message", inputs: ["control"] }], directives: [{ type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.InputText, selector: "[pInputText]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i7.KeyFilter, selector: "[pKeyFilter]", inputs: ["pValidateOnly", "pKeyFilter"], outputs: ["ngModelChange"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
181
+ TextFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: TextFieldComponent, selector: "vector-text-field", inputs: { isRequired: "isRequired", label: "label", maxlength: "maxlength", isPassword: "isPassword", numeric: "numeric", decimal: "decimal", onlyText: "onlyText", alphaNumeric: "alphaNumeric", mask: "mask", autoClear: "autoClear", rightIcon: "rightIcon", centered: "centered", enableDocumentTypeChoice: "enableDocumentTypeChoice", hiddenErrorMessage: "hiddenErrorMessage", control: "control" }, outputs: { blurEvent: "blurEvent", enterKeyPress: "enterKeyPress", focusEvent: "focusEvent", onDocumentTypeChange: "onDocumentTypeChange" }, ngImport: i0, template: "<form class=\"input-container p-input-icon-right\">\r\n <i *ngIf=\"rightIcon\" [class]=\"rightIcon\"></i>\r\n <i *ngIf=\"isPassword\" class=\"show-password-icon {{ showPasswordIcon }}\" (click)=\"toggleShowPassword()\"></i>\r\n <div class=\"p-inputgroup\">\r\n <vector-button\r\n *ngIf=\"enableDocumentTypeChoice\"\r\n leftIcon=\"fas fa-exchange-alt\"\r\n type=\"success\"\r\n [label]=\"selectedDocumentType.name\"\r\n [disabled]=\"control.disabled\"\r\n [noShadow]=\"true\"\r\n (onClick)=\"handleDocumentTypeChange()\"\r\n ></vector-button>\r\n\r\n <input\r\n *ngIf=\"!mask\"\r\n pInputText\r\n type=\"text\"\r\n [formControl]=\"control\"\r\n [attr.maxlength]=\"maxlength\"\r\n [placeholder]=\"placeholder\"\r\n [pValidateOnly]=\"validateOnly\"\r\n [pKeyFilter]=\"keyfilter\"\r\n [ngClass]=\"{ 'password-field': isPassword && !isPasswordVisible, 'text-centered': centered }\"\r\n (onBlur)=\"onBlur()\"\r\n (keydown.enter)=\"onEnterPress()\"\r\n (click)=\"onFocus($event)\"\r\n />\r\n <p-inputMask\r\n *ngIf=\"mask\"\r\n type=\"text\"\r\n [formControl]=\"control\"\r\n [mask]=\"mask\"\r\n [placeholder]=\"placeholder\"\r\n (onBlur)=\"onBlur()\"\r\n (keydown.enter)=\"onEnterPress()\"\r\n [autoClear]=\"autoClear\"\r\n [unmask]=\"true\"\r\n [styleClass]=\"centered ? 'text-centered' : ''\"\r\n slotChar=\"_\"\r\n (click)=\"onFocus($event)\"\r\n ></p-inputMask>\r\n </div>\r\n <vector-field-error-message *ngIf=\"!hiddenErrorMessage\" [control]=\"control\"></vector-field-error-message>\r\n <!-- <span class=\"input-error\">{{ fieldErrorLabel() }}</span> -->\r\n</form>\r\n", styles: [":root{--theme-primary: #0046e8;--theme-dark: #3a2b68;--background: #f2f2f7;--font-color: #151515;--disabled-background: #bcbcbc;--placeholder-color: #aaaaaa80;--border-radius: 5px;--theme-primary-transparent: rgba(1, 70, 108, .8);--gray-lighter: #eff0f6;--gray-light: #e5e5ea;--gray-medium: #d9dbe9;--gray-dark: #6e7f88;--gray-darker: #6e7191;--error-color: #fd6a6a;--error-color-dark: #ff4136;--error-color-transparent: #fd6a6a1a;--success-color: #11b797;--success-color-dark: #0e8a71;--theme-light: #0145e8;--warning-color: #e9c429;--cancel-color: #ca024f;--form-labels-color: #4e4b66;--font-color-primary: #3a2b68;--font-color-secondary: rgb(87, 87, 87)}.input-container{width:100%}.input-container .password-field{-webkit-text-security:disc}.input-container .input-error{font-size:.7em;color:var(--error-color);position:absolute;width:max-content}.input-container .show-password-icon{font-size:1.4em;margin-right:5px;cursor:pointer}\n"], components: [{ type: i1.ButtonComponent, selector: "vector-button", inputs: ["disabled", "label", "type", "leftIcon", "noShadow"], outputs: ["onClick"] }, { type: i2.InputMask, selector: "p-inputMask", inputs: ["type", "slotChar", "autoClear", "style", "inputId", "styleClass", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "disabled", "readonly", "unmask", "name", "required", "characterPattern", "autoFocus", "autocomplete", "mask"], outputs: ["onComplete", "onFocus", "onBlur", "onInput", "onKeydown"] }, { type: i3.FieldErrorMessageComponent, selector: "vector-field-error-message", inputs: ["control"] }], directives: [{ type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.InputText, selector: "[pInputText]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i7.KeyFilter, selector: "[pKeyFilter]", inputs: ["pValidateOnly", "pKeyFilter"], outputs: ["ngModelChange"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
178
182
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: TextFieldComponent, decorators: [{
179
183
  type: Component,
180
184
  args: [{ selector: 'vector-text-field', template: "<form class=\"input-container p-input-icon-right\">\r\n <i *ngIf=\"rightIcon\" [class]=\"rightIcon\"></i>\r\n <i *ngIf=\"isPassword\" class=\"show-password-icon {{ showPasswordIcon }}\" (click)=\"toggleShowPassword()\"></i>\r\n <div class=\"p-inputgroup\">\r\n <vector-button\r\n *ngIf=\"enableDocumentTypeChoice\"\r\n leftIcon=\"fas fa-exchange-alt\"\r\n type=\"success\"\r\n [label]=\"selectedDocumentType.name\"\r\n [disabled]=\"control.disabled\"\r\n [noShadow]=\"true\"\r\n (onClick)=\"handleDocumentTypeChange()\"\r\n ></vector-button>\r\n\r\n <input\r\n *ngIf=\"!mask\"\r\n pInputText\r\n type=\"text\"\r\n [formControl]=\"control\"\r\n [attr.maxlength]=\"maxlength\"\r\n [placeholder]=\"placeholder\"\r\n [pValidateOnly]=\"validateOnly\"\r\n [pKeyFilter]=\"keyfilter\"\r\n [ngClass]=\"{ 'password-field': isPassword && !isPasswordVisible, 'text-centered': centered }\"\r\n (onBlur)=\"onBlur()\"\r\n (keydown.enter)=\"onEnterPress()\"\r\n (click)=\"onFocus($event)\"\r\n />\r\n <p-inputMask\r\n *ngIf=\"mask\"\r\n type=\"text\"\r\n [formControl]=\"control\"\r\n [mask]=\"mask\"\r\n [placeholder]=\"placeholder\"\r\n (onBlur)=\"onBlur()\"\r\n (keydown.enter)=\"onEnterPress()\"\r\n [autoClear]=\"autoClear\"\r\n [unmask]=\"true\"\r\n [styleClass]=\"centered ? 'text-centered' : ''\"\r\n slotChar=\"_\"\r\n (click)=\"onFocus($event)\"\r\n ></p-inputMask>\r\n </div>\r\n <vector-field-error-message *ngIf=\"!hiddenErrorMessage\" [control]=\"control\"></vector-field-error-message>\r\n <!-- <span class=\"input-error\">{{ fieldErrorLabel() }}</span> -->\r\n</form>\r\n", styles: [":root{--theme-primary: #0046e8;--theme-dark: #3a2b68;--background: #f2f2f7;--font-color: #151515;--disabled-background: #bcbcbc;--placeholder-color: #aaaaaa80;--border-radius: 5px;--theme-primary-transparent: rgba(1, 70, 108, .8);--gray-lighter: #eff0f6;--gray-light: #e5e5ea;--gray-medium: #d9dbe9;--gray-dark: #6e7f88;--gray-darker: #6e7191;--error-color: #fd6a6a;--error-color-dark: #ff4136;--error-color-transparent: #fd6a6a1a;--success-color: #11b797;--success-color-dark: #0e8a71;--theme-light: #0145e8;--warning-color: #e9c429;--cancel-color: #ca024f;--form-labels-color: #4e4b66;--font-color-primary: #3a2b68;--font-color-secondary: rgb(87, 87, 87)}.input-container{width:100%}.input-container .password-field{-webkit-text-security:disc}.input-container .input-error{font-size:.7em;color:var(--error-color);position:absolute;width:max-content}.input-container .show-password-icon{font-size:1.4em;margin-right:5px;cursor:pointer}\n"] }]
@@ -192,6 +196,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
192
196
  type: Input
193
197
  }], onlyText: [{
194
198
  type: Input
199
+ }], alphaNumeric: [{
200
+ type: Input
195
201
  }], mask: [{
196
202
  type: Input
197
203
  }], autoClear: [{
@@ -215,4 +221,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
215
221
  }], onDocumentTypeChange: [{
216
222
  type: Output
217
223
  }] } });
218
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy90ZXh0LWZpZWxkL3RleHQtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWVsZHMvdGV4dC1maWVsZC90ZXh0LWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBTzFDLE1BQU0sT0FBTyxrQkFBa0I7SUFML0I7UUFPUyxlQUFVLEdBQXdCLEtBQUssQ0FBQztRQUV4QyxVQUFLLEdBQXVCLEVBQUUsQ0FBQztRQUUvQixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBRXZCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVoQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWhCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFJakIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUVqQixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRWYsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQiw2QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFFakMsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBc0JwQyxjQUFTLEdBQUcsSUFB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eyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IERvY3VtZW50VHlwZSwgTGlzdEl0ZW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBNYXNrVXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndmVjdG9yLXRleHQtZmllbGQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWZpZWxkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90ZXh0LWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZXh0RmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaXNSZXF1aXJlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBtYXhsZW5ndGg6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGlzUGFzc3dvcmQgPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBudW1lcmljID0gZmFsc2U7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGVjaW1hbCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG9ubHlUZXh0ID0gZmFsc2U7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbWFzazogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGF1dG9DbGVhciA9IHRydWU7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcmlnaHRJY29uID0gJyc7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY2VudGVyZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBlbmFibGVEb2N1bWVudFR5cGVDaG9pY2UgPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBoaWRkZW5FcnJvck1lc3NhZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHNldCBjb250cm9sKF9jb250cm9sOiBhbnkpIHtcclxuICAgIHRoaXMuX2NvbnRyb2wgPSBfY29udHJvbDtcclxuICAgIGlmICh0aGlzLmVuYWJsZURvY3VtZW50VHlwZUNob2ljZSkge1xyXG4gICAgICB0aGlzLmhhbmRsZUluaXRpYWxEb2N1bWVudFR5cGVTdGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvbnRyb2xTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5jb250cm9sU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIHRoaXMuY29udHJvbFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICAgIH1cclxuICAgIHRoaXMuY29udHJvbFN1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlRG9jdW1lbnRUeXBlQ2hvaWNlICYmICF0aGlzLmxhc3RUeXBlZFZhbHVlICYmIHZhbHVlPy5sZW5ndGggPiAxMSkge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVJbml0aWFsRG9jdW1lbnRUeXBlU3RhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sYXN0VHlwZWRWYWx1ZSA9IHZhbHVlO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGJsdXJFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZW50ZXJLZXlQcmVzcyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZm9jdXNFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgb25Eb2N1bWVudFR5cGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPExpc3RJdGVtPigpO1xyXG5cclxuICBwdWJsaWMgaXNQYXNzd29yZFZpc2libGUgPSBmYWxzZTtcclxuICBwdWJsaWMgdmFsaWRhdGVPbmx5ID0gZmFsc2U7XHJcblxyXG4gIGdldCBwbGFjZWhvbGRlcigpIHtcclxuICAgIGlmICghdGhpcy5sYWJlbCkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYCR7dGhpcy5sYWJlbH0ke3RoaXMuaXNSZXF1aXJlZCA/ICcqJyA6ICcnfWA7XHJcbiAgfVxyXG5cclxuICBnZXQga2V5ZmlsdGVyKCkge1xyXG4gICAgdGhpcy52YWxpZGF0ZU9ubHkgPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLm51bWVyaWMpIHtcclxuICAgICAgcmV0dXJuICdpbnQnO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZGVjaW1hbCkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRlT25seSA9IHRydWU7XHJcbiAgICAgIHJldHVybiAvXihcXGQrKD86W1xcLF1cXGR7Mn0pPykkLztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9ubHlUZXh0KSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGVPbmx5ID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuIC9eW2EtekEtWsOALcO6XFxzXSokL2dtO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIC9bXFxzXFxTXSovO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbnRyb2woKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udHJvbDtcclxuICB9XHJcblxyXG4gIGdldCBzaG93UGFzc3dvcmRJY29uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNQYXNzd29yZFZpc2libGUgPyAnZmFzIGZhLWV5ZScgOiAnZmFzIGZhLWV5ZS1zbGFzaCc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZG9jdW1lbnRUeXBlczogTGlzdEl0ZW1bXSA9IFtcclxuICAgIHtcclxuICAgICAgbmFtZTogJ0NQRicsXHJcbiAgICAgIGNvZGU6IERvY3VtZW50VHlwZS5DUEYsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBuYW1lOiAnQ05QSicsXHJcbiAgICAgIGNvZGU6IERvY3VtZW50VHlwZS5DTlBKLFxyXG4gICAgfSxcclxuICBdO1xyXG5cclxuICBwdWJsaWMgc2VsZWN0ZWREb2N1bWVudFR5cGUgPSB0aGlzLmRvY3VtZW50VHlwZXNbMV07XHJcblxyXG4gIHByaXZhdGUgbGFzdEJsdXJWYWx1ZSA9ICcnO1xyXG4gIHByaXZhdGUgbGFzdFR5cGVkVmFsdWUgPSAnJztcclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICBwcml2YXRlIGNvbnRyb2xTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgcHJpdmF0ZSBfY29udHJvbDogYW55O1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmVuYWJsZURvY3VtZW50VHlwZUNob2ljZSkge1xyXG4gICAgICB0aGlzLnNldERvY3VtZW50VHlwZSh0aGlzLnNlbGVjdGVkRG9jdW1lbnRUeXBlLmNvZGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5jb250cm9sU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAvLyBwdWJsaWMgZmllbGRFcnJvckxhYmVsKCk6IHN0cmluZyB7XHJcbiAgLy8gICBpZiAodGhpcy5jb250cm9sICYmIHRoaXMuY29udHJvbC5pbnZhbGlkICYmIHRoaXMuY29udHJvbC50b3VjaGVkKSB7XHJcbiAgLy8gICAgIGlmICh0aGlzLmNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcclxuICAvLyAgICAgICByZXR1cm4gJ0NhbXBvIG9icmlnYXTDs3Jpbyc7XHJcbiAgLy8gICAgIH1cclxuXHJcbiAgLy8gICAgIGlmICh0aGlzLmNvbnRyb2wuaGFzRXJyb3IoJ21pbmxlbmd0aCcpKSB7XHJcbiAgLy8gICAgICAgcmV0dXJuIGBUYW1hbmhvIG3DrW5pbW86ICR7dGhpcy5jb250cm9sLmVycm9yc1snbWlubGVuZ3RoJ10ucmVxdWlyZWRMZW5ndGh9YDtcclxuICAvLyAgICAgfVxyXG5cclxuICAvLyAgICAgaWYgKHRoaXMuY29udHJvbC5oYXNFcnJvcignbWF4bGVuZ3RoJykpIHtcclxuICAvLyAgICAgICByZXR1cm4gYFRhbWFuaG8gbcOheGltbyBwZXJtaXRpZG86ICR7dGhpcy5jb250cm9sLmVycm9yc1snbWF4bGVuZ3RoJ10ucmVxdWlyZWRMZW5ndGh9YDtcclxuICAvLyAgICAgfVxyXG5cclxuICAvLyAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLmNvbnRyb2wuZXJyb3JzWydpbnZhbGlkJ10gPT09ICdzdHJpbmcnID8gdGhpcy5jb250cm9sLmVycm9yc1snaW52YWxpZCddIDogJ0NhbXBvIGludsOhbGlkbyc7XHJcbiAgLy8gICB9XHJcblxyXG4gIC8vICAgcmV0dXJuICcnO1xyXG4gIC8vIH1cclxuXHJcbiAgcHVibGljIG9uQmx1cigpIHtcclxuICAgIHRoaXMuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICBpZiAodGhpcy5sYXN0Qmx1clZhbHVlICE9PSB0aGlzLmNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgdGhpcy5sYXN0Qmx1clZhbHVlID0gdGhpcy5jb250cm9sLnZhbHVlO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmJsdXJFdmVudC5lbWl0KHRoaXMuY29udHJvbC52YWx1ZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRW50ZXJQcmVzcygpIHtcclxuICAgIHRoaXMub25CbHVyKCk7XHJcbiAgICB0aGlzLmVudGVyS2V5UHJlc3MuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRm9jdXMoJGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gJGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgaWYgKHRoaXMubWFzaykge1xyXG4gICAgICBjb25zdCBmaXJzdFVuZGVyc2NvcmUgPSB0YXJnZXQ/LnZhbHVlLmluZGV4T2YoJ18nKTtcclxuICAgICAgY29uc3Qgc2VsZWN0aW9uSW5kZXggPSAoZmlyc3RVbmRlcnNjb3JlID49IDAgPyBmaXJzdFVuZGVyc2NvcmUgOiB0YXJnZXQ/LnZhbHVlLmxlbmd0aCkgfHwgMDtcclxuICAgICAgdGFyZ2V0Py5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25JbmRleCwgc2VsZWN0aW9uSW5kZXgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mb2N1c0V2ZW50LmVtaXQodGFyZ2V0Py52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9nZ2xlU2hvd1Bhc3N3b3JkKCkge1xyXG4gICAgdGhpcy5pc1Bhc3N3b3JkVmlzaWJsZSA9ICF0aGlzLmlzUGFzc3dvcmRWaXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZURvY3VtZW50VHlwZUNoYW5nZSgpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRG9jdW1lbnRUeXBlLmNvZGUgPT09IERvY3VtZW50VHlwZS5DTlBKKSB7XHJcbiAgICAgIHRoaXMuc2V0RG9jdW1lbnRUeXBlKERvY3VtZW50VHlwZS5DUEYpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXREb2N1bWVudFR5cGUoRG9jdW1lbnRUeXBlLkNOUEopO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVJbml0aWFsRG9jdW1lbnRUeXBlU3RhdGUoKSB7XHJcbiAgICBpZiAodGhpcy5jb250cm9sPy52YWx1ZSkge1xyXG4gICAgICBpZiAodGhpcy5jb250cm9sLnZhbHVlLmxlbmd0aCA9PT0gMTEpIHtcclxuICAgICAgICB0aGlzLnNldERvY3VtZW50VHlwZShEb2N1bWVudFR5cGUuQ1BGKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldERvY3VtZW50VHlwZShEb2N1bWVudFR5cGUuQ05QSik7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0RG9jdW1lbnRUeXBlKERvY3VtZW50VHlwZS5DUEYpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREb2N1bWVudFR5cGUoZG9jdW1lbnRUeXBlOiBEb2N1bWVudFR5cGUpIHtcclxuICAgIHN3aXRjaCAoZG9jdW1lbnRUeXBlKSB7XHJcbiAgICAgIGNhc2UgRG9jdW1lbnRUeXBlLkNOUEo6XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERvY3VtZW50VHlwZSA9IHRoaXMuZG9jdW1lbnRUeXBlc1sxXTtcclxuICAgICAgICB0aGlzLm1hc2sgPSBNYXNrVXRpbC5DTlBKX1RFWFRfRklFTERfUEFUVEVSTjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBEb2N1bWVudFR5cGUuQ1BGOlxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREb2N1bWVudFR5cGUgPSB0aGlzLmRvY3VtZW50VHlwZXNbMF07XHJcbiAgICAgICAgdGhpcy5tYXNrID0gTWFza1V0aWwuQ1BGX1RFWFRfRklFTERfUEFUVEVSTjtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMub25Eb2N1bWVudFR5cGVDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkRG9jdW1lbnRUeXBlKTtcclxuICB9XHJcbn1cclxuIiwiPGZvcm0gY2xhc3M9XCJpbnB1dC1jb250YWluZXIgcC1pbnB1dC1pY29uLXJpZ2h0XCI+XHJcbiAgPGkgKm5nSWY9XCJyaWdodEljb25cIiBbY2xhc3NdPVwicmlnaHRJY29uXCI+PC9pPlxyXG4gIDxpICpuZ0lmPVwiaXNQYXNzd29yZFwiIGNsYXNzPVwic2hvdy1wYXNzd29yZC1pY29uIHt7IHNob3dQYXNzd29yZEljb24gfX1cIiAoY2xpY2spPVwidG9nZ2xlU2hvd1Bhc3N3b3JkKClcIj48L2k+XHJcbiAgPGRpdiBjbGFzcz1cInAtaW5wdXRncm91cFwiPlxyXG4gICAgPHZlY3Rvci1idXR0b25cclxuICAgICAgKm5nSWY9XCJlbmFibGVEb2N1bWVudFR5cGVDaG9pY2VcIlxyXG4gICAgICBsZWZ0SWNvbj1cImZhcyBmYS1leGNoYW5nZS1hbHRcIlxyXG4gICAgICB0eXBlPVwic3VjY2Vzc1wiXHJcbiAgICAgIFtsYWJlbF09XCJzZWxlY3RlZERvY3VtZW50VHlwZS5uYW1lXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImNvbnRyb2wuZGlzYWJsZWRcIlxyXG4gICAgICBbbm9TaGFkb3ddPVwidHJ1ZVwiXHJcbiAgICAgIChvbkNsaWNrKT1cImhhbmRsZURvY3VtZW50VHlwZUNoYW5nZSgpXCJcclxuICAgID48L3ZlY3Rvci1idXR0b24+XHJcblxyXG4gICAgPGlucHV0XHJcbiAgICAgICpuZ0lmPVwiIW1hc2tcIlxyXG4gICAgICBwSW5wdXRUZXh0XHJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICBbYXR0ci5tYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCJcclxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgW3BWYWxpZGF0ZU9ubHldPVwidmFsaWRhdGVPbmx5XCJcclxuICAgICAgW3BLZXlGaWx0ZXJdPVwia2V5ZmlsdGVyXCJcclxuICAgICAgW25nQ2xhc3NdPVwieyAncGFzc3dvcmQtZmllbGQnOiBpc1Bhc3N3b3JkICYmICFpc1Bhc3N3b3JkVmlzaWJsZSwgJ3RleHQtY2VudGVyZWQnOiBjZW50ZXJlZCB9XCJcclxuICAgICAgKG9uQmx1cik9XCJvbkJsdXIoKVwiXHJcbiAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uRW50ZXJQcmVzcygpXCJcclxuICAgICAgKGNsaWNrKT1cIm9uRm9jdXMoJGV2ZW50KVwiXHJcbiAgICAvPlxyXG4gICAgPHAtaW5wdXRNYXNrXHJcbiAgICAgICpuZ0lmPVwibWFza1wiXHJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICBbbWFza109XCJtYXNrXCJcclxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgKG9uQmx1cik9XCJvbkJsdXIoKVwiXHJcbiAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uRW50ZXJQcmVzcygpXCJcclxuICAgICAgW2F1dG9DbGVhcl09XCJhdXRvQ2xlYXJcIlxyXG4gICAgICBbdW5tYXNrXT1cInRydWVcIlxyXG4gICAgICBbc3R5bGVDbGFzc109XCJjZW50ZXJlZCA/ICd0ZXh0LWNlbnRlcmVkJyA6ICcnXCJcclxuICAgICAgc2xvdENoYXI9XCJfXCJcclxuICAgICAgKGNsaWNrKT1cIm9uRm9jdXMoJGV2ZW50KVwiXHJcbiAgICA+PC9wLWlucHV0TWFzaz5cclxuICA8L2Rpdj5cclxuICA8dmVjdG9yLWZpZWxkLWVycm9yLW1lc3NhZ2UgKm5nSWY9XCIhaGlkZGVuRXJyb3JNZXNzYWdlXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiPjwvdmVjdG9yLWZpZWxkLWVycm9yLW1lc3NhZ2U+XHJcbiAgPCEtLSA8c3BhbiBjbGFzcz1cImlucHV0LWVycm9yXCI+e3sgZmllbGRFcnJvckxhYmVsKCkgfX08L3NwYW4+IC0tPlxyXG48L2Zvcm0+XHJcbiJdfQ==
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy90ZXh0LWZpZWxkL3RleHQtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWVsZHMvdGV4dC1maWVsZC90ZXh0LWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBTzFDLE1BQU0sT0FBTyxrQkFBa0I7SUFML0I7UUFPUyxlQUFVLEdBQXdCLEtBQUssQ0FBQztRQUV4QyxVQUFLLEdBQXVCLEVBQUUsQ0FBQztRQUUvQixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBRXZCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVoQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWhCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFJckIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUVqQixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRWYsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQiw2QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFFakMsdUJBQWtCLEdBQVksS0FB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QURmLE1BQU07Z0JBR0EsYUFBYTtzQkFEbkIsTUFBTTtnQkFHQSxVQUFVO3NCQURoQixNQUFNO2dCQUdBLG9CQUFvQjtzQkFEMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRG9jdW1lbnRUeXBlLCBMaXN0SXRlbSB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IE1hc2tVdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd2ZWN0b3ItdGV4dC1maWVsZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtZmllbGQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RleHQtZmllbGQuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRleHRGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpc1JlcXVpcmVkOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG1heGxlbmd0aDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaXNQYXNzd29yZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG51bWVyaWMgPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkZWNpbWFsID0gZmFsc2U7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgb25seVRleHQgPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhbHBoYU51bWVyaWMgPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBtYXNrOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYXV0b0NsZWFyID0gdHJ1ZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByaWdodEljb24gPSAnJztcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjZW50ZXJlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGVuYWJsZURvY3VtZW50VHlwZUNob2ljZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGhpZGRlbkVycm9yTWVzc2FnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGNvbnRyb2woX2NvbnRyb2w6IGFueSkge1xyXG4gICAgdGhpcy5fY29udHJvbCA9IF9jb250cm9sO1xyXG4gICAgaWYgKHRoaXMuZW5hYmxlRG9jdW1lbnRUeXBlQ2hvaWNlKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlSW5pdGlhbERvY3VtZW50VHlwZVN0YXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY29udHJvbFN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLmNvbnRyb2xTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgdGhpcy5jb250cm9sU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb250cm9sU3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5lbmFibGVEb2N1bWVudFR5cGVDaG9pY2UgJiYgIXRoaXMubGFzdFR5cGVkVmFsdWUgJiYgdmFsdWU/Lmxlbmd0aCA+IDExKSB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUluaXRpYWxEb2N1bWVudFR5cGVTdGF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxhc3RUeXBlZFZhbHVlID0gdmFsdWU7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgYmx1ckV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBlbnRlcktleVByZXNzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBmb2N1c0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBvbkRvY3VtZW50VHlwZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TGlzdEl0ZW0+KCk7XHJcblxyXG4gIHB1YmxpYyBpc1Bhc3N3b3JkVmlzaWJsZSA9IGZhbHNlO1xyXG4gIHB1YmxpYyB2YWxpZGF0ZU9ubHkgPSBmYWxzZTtcclxuXHJcbiAgZ2V0IHBsYWNlaG9sZGVyKCkge1xyXG4gICAgaWYgKCF0aGlzLmxhYmVsKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICAgIHJldHVybiBgJHt0aGlzLmxhYmVsfSR7dGhpcy5pc1JlcXVpcmVkID8gJyonIDogJyd9YDtcclxuICB9XHJcblxyXG4gIGdldCBrZXlmaWx0ZXIoKSB7XHJcbiAgICB0aGlzLnZhbGlkYXRlT25seSA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMubnVtZXJpYykge1xyXG4gICAgICByZXR1cm4gJ2ludCc7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5kZWNpbWFsKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGVPbmx5ID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuIC9eKFxcZCsoPzpbXFwsXVxcZHsyfSk/KSQvO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub25seVRleHQpIHtcclxuICAgICAgdGhpcy52YWxpZGF0ZU9ubHkgPSB0cnVlO1xyXG4gICAgICByZXR1cm4gL15bYS16QS1aw4Atw7pcXHNdKiQvZ207XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hbHBoYU51bWVyaWMpIHtcclxuICAgICAgcmV0dXJuICdhbHBoYSc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gL1tcXHNcXFNdKi87XHJcbiAgfVxyXG5cclxuICBnZXQgY29udHJvbCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9jb250cm9sO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNob3dQYXNzd29yZEljb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5pc1Bhc3N3b3JkVmlzaWJsZSA/ICdmYXMgZmEtZXllJyA6ICdmYXMgZmEtZXllLXNsYXNoJztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkb2N1bWVudFR5cGVzOiBMaXN0SXRlbVtdID0gW1xyXG4gICAge1xyXG4gICAgICBuYW1lOiAnQ1BGJyxcclxuICAgICAgY29kZTogRG9jdW1lbnRUeXBlLkNQRixcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6ICdDTlBKJyxcclxuICAgICAgY29kZTogRG9jdW1lbnRUeXBlLkNOUEosXHJcbiAgICB9LFxyXG4gIF07XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RlZERvY3VtZW50VHlwZSA9IHRoaXMuZG9jdW1lbnRUeXBlc1sxXTtcclxuXHJcbiAgcHJpdmF0ZSBsYXN0Qmx1clZhbHVlID0gJyc7XHJcbiAgcHJpdmF0ZSBsYXN0VHlwZWRWYWx1ZSA9ICcnO1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIHByaXZhdGUgY29udHJvbFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICBwcml2YXRlIF9jb250cm9sOiBhbnk7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuZW5hYmxlRG9jdW1lbnRUeXBlQ2hvaWNlKSB7XHJcbiAgICAgIHRoaXMuc2V0RG9jdW1lbnRUeXBlKHRoaXMuc2VsZWN0ZWREb2N1bWVudFR5cGUuY29kZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmNvbnRyb2xTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIC8vIHB1YmxpYyBmaWVsZEVycm9yTGFiZWwoKTogc3RyaW5nIHtcclxuICAvLyAgIGlmICh0aGlzLmNvbnRyb2wgJiYgdGhpcy5jb250cm9sLmludmFsaWQgJiYgdGhpcy5jb250cm9sLnRvdWNoZWQpIHtcclxuICAvLyAgICAgaWYgKHRoaXMuY29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKSkge1xyXG4gIC8vICAgICAgIHJldHVybiAnQ2FtcG8gb2JyaWdhdMOzcmlvJztcclxuICAvLyAgICAgfVxyXG5cclxuICAvLyAgICAgaWYgKHRoaXMuY29udHJvbC5oYXNFcnJvcignbWlubGVuZ3RoJykpIHtcclxuICAvLyAgICAgICByZXR1cm4gYFRhbWFuaG8gbcOtbmltbzogJHt0aGlzLmNvbnRyb2wuZXJyb3JzWydtaW5sZW5ndGgnXS5yZXF1aXJlZExlbmd0aH1gO1xyXG4gIC8vICAgICB9XHJcblxyXG4gIC8vICAgICBpZiAodGhpcy5jb250cm9sLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSkge1xyXG4gIC8vICAgICAgIHJldHVybiBgVGFtYW5obyBtw6F4aW1vIHBlcm1pdGlkbzogJHt0aGlzLmNvbnRyb2wuZXJyb3JzWydtYXhsZW5ndGgnXS5yZXF1aXJlZExlbmd0aH1gO1xyXG4gIC8vICAgICB9XHJcblxyXG4gIC8vICAgICByZXR1cm4gdHlwZW9mIHRoaXMuY29udHJvbC5lcnJvcnNbJ2ludmFsaWQnXSA9PT0gJ3N0cmluZycgPyB0aGlzLmNvbnRyb2wuZXJyb3JzWydpbnZhbGlkJ10gOiAnQ2FtcG8gaW52w6FsaWRvJztcclxuICAvLyAgIH1cclxuXHJcbiAgLy8gICByZXR1cm4gJyc7XHJcbiAgLy8gfVxyXG5cclxuICBwdWJsaWMgb25CbHVyKCkge1xyXG4gICAgdGhpcy5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgIGlmICh0aGlzLmxhc3RCbHVyVmFsdWUgIT09IHRoaXMuY29udHJvbC52YWx1ZSkge1xyXG4gICAgICB0aGlzLmxhc3RCbHVyVmFsdWUgPSB0aGlzLmNvbnRyb2wudmFsdWU7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYmx1ckV2ZW50LmVtaXQodGhpcy5jb250cm9sLnZhbHVlKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25FbnRlclByZXNzKCkge1xyXG4gICAgdGhpcy5vbkJsdXIoKTtcclxuICAgIHRoaXMuZW50ZXJLZXlQcmVzcy5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Gb2N1cygkZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSAkZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBpZiAodGhpcy5tYXNrKSB7XHJcbiAgICAgIGNvbnN0IGZpcnN0VW5kZXJzY29yZSA9IHRhcmdldD8udmFsdWUuaW5kZXhPZignXycpO1xyXG4gICAgICBjb25zdCBzZWxlY3Rpb25JbmRleCA9IChmaXJzdFVuZGVyc2NvcmUgPj0gMCA/IGZpcnN0VW5kZXJzY29yZSA6IHRhcmdldD8udmFsdWUubGVuZ3RoKSB8fCAwO1xyXG4gICAgICB0YXJnZXQ/LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvbkluZGV4LCBzZWxlY3Rpb25JbmRleCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZvY3VzRXZlbnQuZW1pdCh0YXJnZXQ/LnZhbHVlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b2dnbGVTaG93UGFzc3dvcmQoKSB7XHJcbiAgICB0aGlzLmlzUGFzc3dvcmRWaXNpYmxlID0gIXRoaXMuaXNQYXNzd29yZFZpc2libGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRG9jdW1lbnRUeXBlQ2hhbmdlKCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREb2N1bWVudFR5cGUuY29kZSA9PT0gRG9jdW1lbnRUeXBlLkNOUEopIHtcclxuICAgICAgdGhpcy5zZXREb2N1bWVudFR5cGUoRG9jdW1lbnRUeXBlLkNQRik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldERvY3VtZW50VHlwZShEb2N1bWVudFR5cGUuQ05QSik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUluaXRpYWxEb2N1bWVudFR5cGVTdGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLmNvbnRyb2w/LnZhbHVlKSB7XHJcbiAgICAgIGlmICh0aGlzLmNvbnRyb2wudmFsdWUubGVuZ3RoID09PSAxMSkge1xyXG4gICAgICAgIHRoaXMuc2V0RG9jdW1lbnRUeXBlKERvY3VtZW50VHlwZS5DUEYpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2V0RG9jdW1lbnRUeXBlKERvY3VtZW50VHlwZS5DTlBKKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXREb2N1bWVudFR5cGUoRG9jdW1lbnRUeXBlLkNQRik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldERvY3VtZW50VHlwZShkb2N1bWVudFR5cGU6IERvY3VtZW50VHlwZSkge1xyXG4gICAgc3dpdGNoIChkb2N1bWVudFR5cGUpIHtcclxuICAgICAgY2FzZSBEb2N1bWVudFR5cGUuQ05QSjpcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRG9jdW1lbnRUeXBlID0gdGhpcy5kb2N1bWVudFR5cGVzWzFdO1xyXG4gICAgICAgIHRoaXMubWFzayA9IE1hc2tVdGlsLkNOUEpfVEVYVF9GSUVMRF9QQVRURVJOO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIERvY3VtZW50VHlwZS5DUEY6XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERvY3VtZW50VHlwZSA9IHRoaXMuZG9jdW1lbnRUeXBlc1swXTtcclxuICAgICAgICB0aGlzLm1hc2sgPSBNYXNrVXRpbC5DUEZfVEVYVF9GSUVMRF9QQVRURVJOO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vbkRvY3VtZW50VHlwZUNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWREb2N1bWVudFR5cGUpO1xyXG4gIH1cclxufVxyXG4iLCI8Zm9ybSBjbGFzcz1cImlucHV0LWNvbnRhaW5lciBwLWlucHV0LWljb24tcmlnaHRcIj5cclxuICA8aSAqbmdJZj1cInJpZ2h0SWNvblwiIFtjbGFzc109XCJyaWdodEljb25cIj48L2k+XHJcbiAgPGkgKm5nSWY9XCJpc1Bhc3N3b3JkXCIgY2xhc3M9XCJzaG93LXBhc3N3b3JkLWljb24ge3sgc2hvd1Bhc3N3b3JkSWNvbiB9fVwiIChjbGljayk9XCJ0b2dnbGVTaG93UGFzc3dvcmQoKVwiPjwvaT5cclxuICA8ZGl2IGNsYXNzPVwicC1pbnB1dGdyb3VwXCI+XHJcbiAgICA8dmVjdG9yLWJ1dHRvblxyXG4gICAgICAqbmdJZj1cImVuYWJsZURvY3VtZW50VHlwZUNob2ljZVwiXHJcbiAgICAgIGxlZnRJY29uPVwiZmFzIGZhLWV4Y2hhbmdlLWFsdFwiXHJcbiAgICAgIHR5cGU9XCJzdWNjZXNzXCJcclxuICAgICAgW2xhYmVsXT1cInNlbGVjdGVkRG9jdW1lbnRUeXBlLm5hbWVcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiY29udHJvbC5kaXNhYmxlZFwiXHJcbiAgICAgIFtub1NoYWRvd109XCJ0cnVlXCJcclxuICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlRG9jdW1lbnRUeXBlQ2hhbmdlKClcIlxyXG4gICAgPjwvdmVjdG9yLWJ1dHRvbj5cclxuXHJcbiAgICA8aW5wdXRcclxuICAgICAgKm5nSWY9XCIhbWFza1wiXHJcbiAgICAgIHBJbnB1dFRleHRcclxuICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgIFthdHRyLm1heGxlbmd0aF09XCJtYXhsZW5ndGhcIlxyXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICBbcFZhbGlkYXRlT25seV09XCJ2YWxpZGF0ZU9ubHlcIlxyXG4gICAgICBbcEtleUZpbHRlcl09XCJrZXlmaWx0ZXJcIlxyXG4gICAgICBbbmdDbGFzc109XCJ7ICdwYXNzd29yZC1maWVsZCc6IGlzUGFzc3dvcmQgJiYgIWlzUGFzc3dvcmRWaXNpYmxlLCAndGV4dC1jZW50ZXJlZCc6IGNlbnRlcmVkIH1cIlxyXG4gICAgICAob25CbHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgKGtleWRvd24uZW50ZXIpPVwib25FbnRlclByZXNzKClcIlxyXG4gICAgICAoY2xpY2spPVwib25Gb2N1cygkZXZlbnQpXCJcclxuICAgIC8+XHJcbiAgICA8cC1pbnB1dE1hc2tcclxuICAgICAgKm5nSWY9XCJtYXNrXCJcclxuICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgIFttYXNrXT1cIm1hc2tcIlxyXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICAob25CbHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgKGtleWRvd24uZW50ZXIpPVwib25FbnRlclByZXNzKClcIlxyXG4gICAgICBbYXV0b0NsZWFyXT1cImF1dG9DbGVhclwiXHJcbiAgICAgIFt1bm1hc2tdPVwidHJ1ZVwiXHJcbiAgICAgIFtzdHlsZUNsYXNzXT1cImNlbnRlcmVkID8gJ3RleHQtY2VudGVyZWQnIDogJydcIlxyXG4gICAgICBzbG90Q2hhcj1cIl9cIlxyXG4gICAgICAoY2xpY2spPVwib25Gb2N1cygkZXZlbnQpXCJcclxuICAgID48L3AtaW5wdXRNYXNrPlxyXG4gIDwvZGl2PlxyXG4gIDx2ZWN0b3ItZmllbGQtZXJyb3ItbWVzc2FnZSAqbmdJZj1cIiFoaWRkZW5FcnJvck1lc3NhZ2VcIiBbY29udHJvbF09XCJjb250cm9sXCI+PC92ZWN0b3ItZmllbGQtZXJyb3ItbWVzc2FnZT5cclxuICA8IS0tIDxzcGFuIGNsYXNzPVwiaW5wdXQtZXJyb3JcIj57eyBmaWVsZEVycm9yTGFiZWwoKSB9fTwvc3Bhbj4gLS0+XHJcbjwvZm9ybT5cclxuIl19
@@ -108,7 +108,7 @@ export class MenuComponent {
108
108
  this.currentWindowWidth = window.innerWidth;
109
109
  }
110
110
  handleKeyboardEvent() {
111
- this.clearAndCloseMenu();
111
+ this.toggleMenu();
112
112
  }
113
113
  ngOnDestroy() {
114
114
  this.subscription.unsubscribe();
@@ -300,4 +300,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
300
300
  type: HostListener,
301
301
  args: ['document:keydown.escape', ['$event']]
302
302
  }] } });
303
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL21lbnUvbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL21lbnUvbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxPQUFPLEVBQVksSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7O0FBa0V2RCxNQUFNLE9BQU8sYUFBYTtJQXlDeEIsWUFDVSxXQUF3QixFQUN4QixNQUFjLEVBQ2QsY0FBOEIsRUFDOUIsY0FBOEIsRUFDUCxXQUFnQixFQUNwQixVQUFrQjtRQUxyQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUNQLGdCQUFXLEdBQVgsV0FBVyxDQUFLO1FBQ3BCLGVBQVUsR0FBVixVQUFVLENBQVE7UUE5Q3hDLFlBQU8sR0FBZSxFQUFFLENBQUM7UUFHekIsZUFBVSxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2hDLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FB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QUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQzt5QkFDcEQsQ0FBQztxQkFDSDs7MEJBZ0RFLE1BQU07MkJBQUMsYUFBYTs7MEJBQ3BCLE1BQU07MkJBQUMsU0FBUzs0Q0FyQ1QseUJBQXlCO3NCQUFsQyxNQUFNO2dCQThHUCxRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVN6QyxtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBcHBOYW1lLCBNZW51SXRlbSwgUm9sZSB9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IE1lbnVTZXJ2aWNlLCBQcm9maWxlU2VydmljZSwgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3ZlY3Rvci1tZW51JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbWVudS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbWVudS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ3NpZGVJbk91dCcsIFtzdGF0ZSgnaW4nLCBzdHlsZSh7IHdpZHRoOiAnNjBweCcgfSkpLCBzdGF0ZSgnb3V0Jywgc3R5bGUoeyB3aWR0aDogJzI1MHB4JyB9KSldKSxcclxuICAgIHRyaWdnZXIoJ2ZhZGVJbk91dCcsIFtcclxuICAgICAgc3RhdGUoXHJcbiAgICAgICAgJzAnLFxyXG4gICAgICAgIHN0eWxlKHtcclxuICAgICAgICAgIG9wYWNpdHk6IDAsXHJcbiAgICAgICAgICB3aWR0aDogJzAlJyxcclxuICAgICAgICAgICdmb250LXNpemUnOiAnMGVtJyxcclxuICAgICAgICB9KVxyXG4gICAgICApLFxyXG4gICAgICBzdGF0ZShcclxuICAgICAgICAnMScsXHJcbiAgICAgICAgc3R5bGUoe1xyXG4gICAgICAgICAgb3BhY2l0eTogMSxcclxuICAgICAgICAgICdmb250LXNpemUnOiAnMWVtJyxcclxuICAgICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICAgICAgfSlcclxuICAgICAgKSxcclxuICAgICAgdHJhbnNpdGlvbignMCA8PT4gMScsIGFuaW1hdGUoJzM1MG1zIGVhc2UtaW4tb3V0JykpLFxyXG4gICAgXSksXHJcbiAgICB0cmlnZ2VyKCdmYWRlU2VhcmNoSW5PdXQnLCBbXHJcbiAgICAgIHN0YXRlKFxyXG4gICAgICAgICcwJyxcclxuICAgICAgICBzdHlsZSh7XHJcbiAgICAgICAgICBvcGFjaXR5OiAwLFxyXG4gICAgICAgICAgd2lkdGg6ICcwJScsXHJcbiAgICAgICAgICAnZm9udC1zaXplJzogJzBlbScsXHJcbiAgICAgICAgfSlcclxuICAgICAgKSxcclxuICAgICAgc3RhdGUoXHJcbiAgICAgICAgJzEnLFxyXG4gICAgICAgIHN0eWxlKHtcclxuICAgICAgICAgIG9wYWNpdHk6IDEsXHJcbiAgICAgICAgICAnZm9udC1zaXplJzogJzFlbScsXHJcbiAgICAgICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICksXHJcbiAgICAgIHRyYW5zaXRpb24oJzAgPD0+IDEnLCBhbmltYXRlKCczNTBtcyBlYXNlLWluLW91dCcpKSxcclxuICAgIF0pLFxyXG4gICAgdHJpZ2dlcignc3VibWVudUZhZGVJbk91dCcsIFtcclxuICAgICAgc3RhdGUoXHJcbiAgICAgICAgJzAnLFxyXG4gICAgICAgIHN0eWxlKHtcclxuICAgICAgICAgIG9wYWNpdHk6IDAsXHJcbiAgICAgICAgICBoZWlnaHQ6ICcwJScsXHJcbiAgICAgICAgfSlcclxuICAgICAgKSxcclxuICAgICAgc3RhdGUoXHJcbiAgICAgICAgJzEnLFxyXG4gICAgICAgIHN0eWxlKHtcclxuICAgICAgICAgIG9wYWNpdHk6IDEsXHJcbiAgICAgICAgICBoZWlnaHQ6ICdmaXQtY29udGVudCcsXHJcbiAgICAgICAgfSlcclxuICAgICAgKSxcclxuICAgICAgdHJhbnNpdGlvbignMCA8PT4gMScsIGFuaW1hdGUoJzM1MG1zIGVhc2UtaW4tb3V0JykpLFxyXG4gICAgXSksXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHVibGljIG9wdGlvbnM6IE1lbnVJdGVtW10gPSBbXTtcclxuICBwdWJsaWMgYWN0aXZlT3B0aW9uOiBNZW51SXRlbSB8IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgYWN0aXZlU3VibWVudU9wdGlvbjogTWVudUl0ZW0gfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIHdpZHRoU3R5bGUgPSB7IHdpZHRoOiAnMjUwcHgnIH07XHJcbiAgcHVibGljIGxhc3RBbmltYXRpb24gPSAnb3V0JztcclxuICBwdWJsaWMgYXBwTmFtZUxhYmVsID0gdGhpcy5lbnZpcm9ubWVudC5hcHBOYW1lO1xyXG4gIHB1YmxpYyBhZG1pbk9wdGlvbjogTWVudUl0ZW0gfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIGFwcHMgPSBBcHBOYW1lO1xyXG5cclxuICBAT3V0cHV0KCkgb25GaW5pc2hNZW51T3B0aW9uc0NvbmZpZyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBzZXQgb3BlbmVkKG9wZW5lZDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fb3BlbmVkID0gb3BlbmVkO1xyXG4gICAgdGhpcy5tZW51U2VydmljZS5tZW51T3BlbmVkJC5uZXh0KHRoaXMub3BlbmVkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgb3BlbmVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX29wZW5lZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaGFzRmludGVjaEFkbWluUGVybWlzc2lvbigpIHtcclxuICAgIHJldHVybiB0aGlzLnByb2ZpbGVTZXJ2aWNlLmhhc0ZpbnRlY2hBZG1pblBlcm1pc3Npb247XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGhhc01hcmtldHBsYWNlQWRtaW5QZXJtaXNzaW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucHJvZmlsZVNlcnZpY2UuaGFzTWFya2V0cGxhY2VBZG1pblBlcm1pc3Npb247XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGhhc0FueU1hcmtldHBsYWNlUGVybWlzc2lvbigpIHtcclxuICAgIHJldHVybiB0aGlzLnByb2ZpbGVTZXJ2aWNlLmhhc0FueU1hcmtldHBsYWNlUGVybWlzc2lvbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaGFzQW55RmludGVjaFBlcm1pc3Npb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm9maWxlU2VydmljZS5oYXNBbnlGaW50ZWNoUGVybWlzc2lvbjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX29wZW5lZCA9IHRydWU7XHJcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgcHJpdmF0ZSBjdXJyZW50V2luZG93V2lkdGg6IG51bWJlciA9IDA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBtZW51U2VydmljZTogTWVudVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBwcm9maWxlU2VydmljZTogUHJvZmlsZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZSxcclxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJpdmF0ZSBlbnZpcm9ubWVudDogYW55LFxyXG4gICAgQEluamVjdCgnYXBwTmFtZScpIHByaXZhdGUgY3VycmVudEFwcDogc3RyaW5nXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5tZW51U2VydmljZS50b2dnbGVNZW51JC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudG9nZ2xlTWVudSgpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHRoaXMucHJvZmlsZVNlcnZpY2UubW9kdWxlUHJvZmlsZSQuc3Vic2NyaWJlKChwcm9maWxlKSA9PiB7XHJcbiAgICAgICAgaWYgKHByb2ZpbGUpIHtcclxuICAgICAgICAgIGNvbnN0IHJvbGUgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFJvbGUoKTtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucyA9XHJcbiAgICAgICAgICAgIHJvbGUgPT09IFJvbGUuQURNSU5cclxuICAgICAgICAgICAgICA/IHRoaXMubWVudVNlcnZpY2UuZ2V0U2lkZUFkbWluTWVudU9wdGlvbnMoKVxyXG4gICAgICAgICAgICAgIDogdGhpcy5tZW51U2VydmljZS5nZXRTaWRlTWFpbk1lbnVPcHRpb25zKCk7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuaGFzRmludGVjaEFkbWluUGVybWlzc2lvbiB8fCB0aGlzLmhhc01hcmtldHBsYWNlQWRtaW5QZXJtaXNzaW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRtaW5PcHRpb24gPSB7XHJcbiAgICAgICAgICAgICAgaWQ6IGAkezk5OTk5fWAsXHJcbiAgICAgICAgICAgICAgbGFiZWw6ICdBZG1pbicsXHJcbiAgICAgICAgICAgICAgaWNvbkZpbGVOYW1lOiAndmVjdG9yX2FkbWluX2ljb24nLFxyXG4gICAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmhhc0ZpbnRlY2hBZG1pblBlcm1pc3Npb24pIHtcclxuICAgICAgICAgICAgICB0aGlzLmFkbWluT3B0aW9uLmNoaWxkcmVuPy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGlkOiBgJHs5OTk5OTF9YCxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnQWRtaW4gRmludGVjaCcsXHJcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGVUb1BvcnRhbCh7IHBvcnRhbDogJ2ZpbnRlY2gnLCBhZG1pbjogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBoaWRkZW46ICF0aGlzLmhhc0ZpbnRlY2hBZG1pblBlcm1pc3Npb24sXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmhhc01hcmtldHBsYWNlQWRtaW5QZXJtaXNzaW9uKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZG1pbk9wdGlvbi5jaGlsZHJlbj8ucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBpZDogYCR7OTk5OTkyfWAsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0FkbWluIE1hcmtldHBsYWNlJyxcclxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvUG9ydGFsKHsgcG9ydGFsOiAnbWFya2V0cGxhY2UnLCBhZG1pbjogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBoaWRkZW46ICF0aGlzLmhhc01hcmtldHBsYWNlQWRtaW5QZXJtaXNzaW9uLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm9uRmluaXNoTWVudU9wdGlvbnNDb25maWcuZW1pdChudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5tZW51U2VydmljZS5mcmFtZVVybCQuc3Vic2NyaWJlKChmcmFtZVVybCkgPT4ge1xyXG4gICAgICAgIGlmIChmcmFtZVVybCkge1xyXG4gICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRTZXNzaW9uKCdmcmFtZVVybCcsIGZyYW1lVXJsKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVTZXNzaW9uKCdmcmFtZVVybCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgZnJhbWVVcmxGcm9tU3RvcmFnZSA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0U2Vzc2lvbignZnJhbWVVcmwnKTtcclxuICAgIGlmIChmcmFtZVVybEZyb21TdG9yYWdlKSB7XHJcbiAgICAgIHRoaXMubWVudVNlcnZpY2UuZnJhbWVVcmwkLm5leHQoZnJhbWVVcmxGcm9tU3RvcmFnZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jdXJyZW50V2luZG93V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG4gIG9uUmVzaXplKCkge1xyXG4gICAgaWYgKHRoaXMub3BlbmVkICYmIHRoaXMuY3VycmVudFdpbmRvd1dpZHRoICE9PSB3aW5kb3cuaW5uZXJXaWR0aCkge1xyXG4gICAgICB0aGlzLmNsZWFyQW5kQ2xvc2VNZW51KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmN1cnJlbnRXaW5kb3dXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZUtleWJvYXJkRXZlbnQoKSB7XHJcbiAgICB0aGlzLmNsZWFyQW5kQ2xvc2VNZW51KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9nZ2xlTWVudSgpIHtcclxuICAgIHRoaXMub3BlbmVkID0gIXRoaXMub3BlbmVkO1xyXG4gICAgaWYgKCF0aGlzLm9wZW5lZCkge1xyXG4gICAgICB0aGlzLmFjdGl2ZU9wdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy5hY3RpdmVTdWJtZW51T3B0aW9uID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZXNpemVNZW51KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25NZW51Q2xpY2sob3B0aW9uOiBNZW51SXRlbSkge1xyXG4gICAgaWYgKCFvcHRpb24uYWx3YXlzT3Blbikge1xyXG4gICAgICBpZiAodGhpcy5hY3RpdmVPcHRpb24/LmlkID09PSBvcHRpb24uaWQpIHtcclxuICAgICAgICB0aGlzLmFjdGl2ZU9wdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmFjdGl2ZU9wdGlvbiA9IG9wdGlvbi5jaGlsZHJlbj8ubGVuZ3RoID8gb3B0aW9uIDogdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghb3B0aW9uLmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICBpZiAob3B0aW9uLnJvdXRlKSB7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbb3B0aW9uLnJvdXRlXSk7XHJcbiAgICAgICAgICB0aGlzLm1lbnVTZXJ2aWNlLmZyYW1lVXJsJC5uZXh0KHVuZGVmaW5lZCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChvcHRpb24uZnJhbWVVcmwpIHtcclxuICAgICAgICAgIHRoaXMubWVudVNlcnZpY2UuZnJhbWVVcmwkLm5leHQob3B0aW9uLmZyYW1lVXJsKTtcclxuICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbi5leHRlcm5hbFVybCkge1xyXG4gICAgICAgICAgd2luZG93Lm9wZW4ob3B0aW9uLmV4dGVybmFsVXJsLCAnX2JsYW5rJyk7XHJcbiAgICAgICAgICB0aGlzLm1lbnVTZXJ2aWNlLmZyYW1lVXJsJC5uZXh0KHVuZGVmaW5lZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChvcHRpb24uY2hpbGRyZW4/Lmxlbmd0aCAmJiAhdGhpcy5vcGVuZWQpIHtcclxuICAgICAgICB0aGlzLnRvZ2dsZU1lbnUoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFjdGl2ZVN1Ym1lbnVPcHRpb24gPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25TdWJtZW51Q2xpY2soc3VibWVudUl0ZW06IE1lbnVJdGVtKSB7XHJcbiAgICBpZiAoIXN1Ym1lbnVJdGVtLmFsd2F5c09wZW4pIHtcclxuICAgICAgaWYgKHRoaXMuYWN0aXZlU3VibWVudU9wdGlvbj8uaWQgPT09IHN1Ym1lbnVJdGVtPy5pZCkge1xyXG4gICAgICAgIHRoaXMuYWN0aXZlU3VibWVudU9wdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmFjdGl2ZVN1Ym1lbnVPcHRpb24gPSBzdWJtZW51SXRlbS5jaGlsZHJlbj8ubGVuZ3RoID8gc3VibWVudUl0ZW0gOiB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFzdWJtZW51SXRlbS5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgaWYgKHN1Ym1lbnVJdGVtLnJvdXRlKSB7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbc3VibWVudUl0ZW0ucm91dGVdKTtcclxuICAgICAgICAgIHRoaXMubWVudVNlcnZpY2UuZnJhbWVVcmwkLm5leHQodW5kZWZpbmVkKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHN1Ym1lbnVJdGVtLmZyYW1lVXJsKSB7XHJcbiAgICAgICAgICB0aGlzLm1lbnVTZXJ2aWNlLmZyYW1lVXJsJC5uZXh0KHN1Ym1lbnVJdGVtLmZyYW1lVXJsKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHN1Ym1lbnVJdGVtLmV4dGVybmFsVXJsKSB7XHJcbiAgICAgICAgICB3aW5kb3cub3BlbihzdWJtZW51SXRlbS5leHRlcm5hbFVybCwgJ19ibGFuaycpO1xyXG4gICAgICAgICAgdGhpcy5tZW51U2VydmljZS5mcmFtZVVybCQubmV4dCh1bmRlZmluZWQpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc3VibWVudUl0ZW0uY29tbWFuZCkge1xyXG4gICAgICAgICAgc3VibWVudUl0ZW0uY29tbWFuZCgpO1xyXG4gICAgICAgICAgdGhpcy5tZW51U2VydmljZS5mcmFtZVVybCQubmV4dCh1bmRlZmluZWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW5UZXJtc09mVXNlKCkge31cclxuXHJcbiAgcHVibGljIGlzUG9ydGFsU2VsZWN0ZWQocG9ydGFsOiBBcHBOYW1lKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50QXBwID09PSBwb3J0YWw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmF2aWdhdGVUb1BvcnRhbChwYXJhbXM6IHsgcG9ydGFsOiAnZmludGVjaCcgfCAnbG9ndGVjaCcgfCAnbWFya2V0cGxhY2UnOyBhZG1pbjogYm9vbGVhbiB9KSB7XHJcbiAgICB0aGlzLmFjdGl2ZU9wdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuYWN0aXZlU3VibWVudU9wdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMubWVudVNlcnZpY2UubmF2aWdhdGVUb1BvcnRhbChwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldE1lbnVOb3RpZmljYXRpb25zQ291bnQobWVudTogTWVudUl0ZW0pIHtcclxuICAgIHJldHVybiB0aGlzLm1lbnVTZXJ2aWNlLm1lbnVOb3RpZmljYXRpb25zW21lbnUuaWQgfHwgJyddO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhckFuZENsb3NlTWVudSgpOiB2b2lkIHtcclxuICAgIHRoaXMub3BlbmVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmFjdGl2ZU9wdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMucmVzaXplTWVudSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNpemVNZW51KCkge1xyXG4gICAgdGhpcy5sYXN0QW5pbWF0aW9uID0gdGhpcy5vcGVuZWQgPyAnb3V0JyA6ICdpbic7XHJcbiAgICB0aGlzLndpZHRoU3R5bGUgPSB7IHdpZHRoOiB0aGlzLm9wZW5lZCA/ICcyNTBweCcgOiAnNjBweCcgfTtcclxuICAgIHRoaXMuYWN0aXZlU3VibWVudU9wdGlvbiA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZXNldE1lbnVzKGNsZWFyID0gZmFsc2UpIHtcclxuICAgIHRoaXMub3B0aW9ucyA9IGNsZWFyID8gW10gOiB0aGlzLm9wdGlvbnM7XHJcbiAgICB0aGlzLmFkbWluT3B0aW9uID0gdW5kZWZpbmVkO1xyXG4gIH1cclxufVxyXG4iLCI8bmF2IGlkPVwibWVudVwiIFtuZ1N0eWxlXT1cIndpZHRoU3R5bGVcIiBbQHNpZGVJbk91dF09XCJsYXN0QW5pbWF0aW9uXCI+XHJcbiAgPGRpdiBjbGFzcz1cImhlYWRlci1tZW51XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibG9nby1jb250YWluZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImxvZ29cIiBbbmdDbGFzc109XCJ7ICdsb2dvLXNtYWxsJzogIW9wZW5lZCB9XCI+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibWVudS1zZWN0aW9uc1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1lbnUtc2VjdGlvblwiPlxyXG4gICAgICA8c3BhbiBbbmdTdHlsZV09XCJ7IG9wYWNpdHk6IG9wZW5lZCA/IDEgOiAwIH1cIiBjbGFzcz1cIm1lbnUtc2VjdGlvbi10aXRsZVwiPlNFTEXDh8ODTyBERSBQT1JUQUw8L3NwYW4+XHJcbiAgICAgIDx1bCBjbGFzcz1cInNpZGUtbWVudVwiPlxyXG4gICAgICAgIDxsaT5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJzaWRlLW1lbnUtaXRlbVwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkLXBvcnRhbCc6IGlzUG9ydGFsU2VsZWN0ZWQoYXBwcy5MT0dURUNIKSB9XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9Qb3J0YWwoeyBwb3J0YWw6ICdsb2d0ZWNoJywgYWRtaW46IGZhbHNlIH0pXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29udGFpbmVyIHNlbGVjdGVkLXBvcnRhbC1pdGVtIGxvZ3RlY2hcIj48L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWxhYmVsXCI+Q2FyZ2FzPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGkgKm5nSWY9XCJoYXNBbnlGaW50ZWNoUGVybWlzc2lvblwiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInNpZGUtbWVudS1pdGVtXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQtcG9ydGFsJzogaXNQb3J0YWxTZWxlY3RlZChhcHBzLkZJTlRFQ0gpIH1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwibmF2aWdhdGVUb1BvcnRhbCh7IHBvcnRhbDogJ2ZpbnRlY2gnLCBhZG1pbjogZmFsc2UgfSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1jb250YWluZXIgc2VsZWN0ZWQtcG9ydGFsLWl0ZW0gZmludGVjaFwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtbGFiZWxcIj5DYXJ0ZWlyYSBkaWdpdGFsPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwic2lkZS1tZW51LWl0ZW1cIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZC1wb3J0YWwnOiBpc1BvcnRhbFNlbGVjdGVkKGFwcHMuTUFSS0VUUExBQ0UpIH1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwibmF2aWdhdGVUb1BvcnRhbCh7IHBvcnRhbDogJ21hcmtldHBsYWNlJywgYWRtaW46IGZhbHNlIH0pXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29udGFpbmVyIHNlbGVjdGVkLXBvcnRhbC1pdGVtIG1hcmtldHBsYWNlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1sYWJlbFwiPkNvbWJ1c3TDrXZlbDwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpICpuZ0lmPVwiYWRtaW5PcHRpb24gJiYgKGhhc0ZpbnRlY2hBZG1pblBlcm1pc3Npb24gfHwgaGFzTWFya2V0cGxhY2VBZG1pblBlcm1pc3Npb24pXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwic2lkZS1tZW51LWl0ZW1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25NZW51Q2xpY2soYWRtaW5PcHRpb24pXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnYWN0aXZlLW1lbnUnOiBhY3RpdmVPcHRpb24/LmlkID09PSBhZG1pbk9wdGlvbi5pZCB9XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgPGltZyBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvaWNvbnMvdmVjdG9yX2FkbWluX2ljb24uc3ZnXCIgY2xhc3M9XCJtZW51LWljb25cIiAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWxhYmVsXCI+e3sgYWRtaW5PcHRpb24ubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJvcGVuZWQgJiYgYWRtaW5PcHRpb24uY2hpbGRyZW4/Lmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmYXMgYW5nbGUtaWNvblwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgJ2ZhLWFuZ2xlLWRvd24nOiBhY3RpdmVPcHRpb24/LmlkICE9PSBhZG1pbk9wdGlvbi5pZCxcclxuICAgICAgICAgICAgICAgICdmYS1hbmdsZS11cCc6IGFjdGl2ZU9wdGlvbj8uaWQgPT09IGFkbWluT3B0aW9uLmlkXHJcbiAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDx2ZWN0b3Itc3ViLW1lbnVzLWxpc3RcclxuICAgICAgICAgICAgW29wdGlvbnNdPVwiYWRtaW5PcHRpb24uY2hpbGRyZW5cIlxyXG4gICAgICAgICAgICBbc2hvd0xpc3RdPVwiYWN0aXZlT3B0aW9uPy5pZCA9PT0gYWRtaW5PcHRpb24uaWRcIlxyXG4gICAgICAgICAgICBbc3VibWVudVNlbGVjdGVkXT1cImFjdGl2ZVN1Ym1lbnVPcHRpb25cIlxyXG4gICAgICAgICAgICAoc3VibWVudVNlbGVjdGVkQ2hhbmdlKT1cIm9uU3VibWVudUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgPjwvdmVjdG9yLXN1Yi1tZW51cy1saXN0PlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgIDwvdWw+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtZW51LXNlY3Rpb25cIj5cclxuICAgICAgPHNwYW4gW25nU3R5bGVdPVwieyBvcGFjaXR5OiBvcGVuZWQgJiYgb3B0aW9ucz8ubGVuZ3RoID8gMSA6IDAgfVwiIGNsYXNzPVwibWVudS1zZWN0aW9uLXRpdGxlXCI+TUVOVTwvc3Bhbj5cclxuICAgICAgPHVsIGNsYXNzPVwic2lkZS1tZW51XCI+XHJcbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInNpZGUtbWVudS1pdGVtXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnYWN0aXZlLW1lbnUnOiBhY3RpdmVPcHRpb24/LmlkID09PSBvcHRpb24uaWQsICdhbHdheXMtb3Blbic6ICEhb3B0aW9uLmFsd2F5c09wZW4gfVwiXHJcbiAgICAgICAgICAgIFtwVG9vbHRpcF09XCJvcHRpb24ubGFiZWxcIlxyXG4gICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJyaWdodFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbk1lbnVDbGljayhvcHRpb24pXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb24uaWNvbkZpbGVOYW1lXCJcclxuICAgICAgICAgICAgICAgIFtzcmNdPVwiJy4uLy4uLy4uLy4uL2Fzc2V0cy9pY29ucy8nICsgb3B0aW9uLmljb25GaWxlTmFtZSArICcuc3ZnJ1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1lbnUtaWNvblwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8aSAqbmdJZj1cIm9wdGlvbi5pY29uXCIgY2xhc3M9XCJtZW51LWljb24ge3sgb3B0aW9uLmljb24gfX1cIj48L2k+XHJcbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnZXRNZW51Tm90aWZpY2F0aW9uc0NvdW50KG9wdGlvbilcIiBjbGFzcz1cIm1lbnUtbm90aWZpY2F0aW9ucy1jb3VudFwiPnt7XHJcbiAgICAgICAgICAgICAgICBnZXRNZW51Tm90aWZpY2F0aW9uc0NvdW50KG9wdGlvbilcclxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1sYWJlbFwiPnt7IG9wdGlvbi5sYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAqbmdJZj1cIm9wZW5lZCAmJiBvcHRpb24uY2hpbGRyZW4/Lmxlbmd0aCAmJiAhb3B0aW9uLmFsd2F5c09wZW5cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZmFzIGFuZ2xlLWljb25cIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICdmYS1hbmdsZS1kb3duJzogYWN0aXZlT3B0aW9uPy5pZCAhPT0gb3B0aW9uLmlkLFxyXG4gICAgICAgICAgICAgICAgJ2ZhLWFuZ2xlLXVwJzogYWN0aXZlT3B0aW9uPy5pZCA9PT0gb3B0aW9uLmlkXHJcbiAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDx2ZWN0b3Itc3ViLW1lbnVzLWxpc3RcclxuICAgICAgICAgICAgW29wdGlvbnNdPVwib3B0aW9uLmNoaWxkcmVuXCJcclxuICAgICAgICAgICAgW3Nob3dMaXN0XT1cImFjdGl2ZU9wdGlvbj8uaWQgPT09IG9wdGlvbi5pZCB8fCAoISFvcHRpb24uYWx3YXlzT3BlbiAmJiBvcGVuZWQpXCJcclxuICAgICAgICAgICAgW3N1Ym1lbnVTZWxlY3RlZF09XCJhY3RpdmVTdWJtZW51T3B0aW9uXCJcclxuICAgICAgICAgICAgKHN1Ym1lbnVTZWxlY3RlZENoYW5nZSk9XCJvblN1Ym1lbnVDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgID48L3ZlY3Rvci1zdWItbWVudXMtbGlzdD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICA8L3VsPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImZvb3RlciBzaWRlLW1lbnUtaXRlbVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImljb24tY29udGFpbmVyXCI+XHJcbiAgICAgIDxpbWcgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ljb25zL21lbnVfZm9vdGVyX2ljb24uc3ZnXCIgY2xhc3M9XCJtZW51LWljb25cIiAvPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cIm1lbnUtbGFiZWwgZm9vdGVyLWNvbnRlbnRcIj5cclxuICAgICAgPHNwYW4+IFZlamEgbm9zc28gPGEgKGNsaWNrKT1cIm9wZW5UZXJtc09mVXNlKClcIj5UZXJtbyBkZSB1c288L2E+IDwvc3Bhbj5cclxuICAgICAgPHNwYW4+ZSA8YT5Qb2zDrXRpY2EgZGUgcHJpdmFjaWRhZGU8L2E+PC9zcGFuPlxyXG4gICAgPC9zcGFuPlxyXG4gIDwvZGl2PlxyXG48L25hdj5cclxuIl19
303
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL21lbnUvbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL21lbnUvbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxPQUFPLEVBQVksSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7O0FBa0V2RCxNQUFNLE9BQU8sYUFBYTtJQXlDeEIsWUFDVSxXQUF3QixFQUN4QixNQUFjLEVBQ2QsY0FBOEIsRUFDOUIsY0FBOEIsRUFDUCxXQUFnQixFQUNwQixVQUFrQjtRQUxyQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUNQLGdCQUFXLEdBQVgsV0FBVyxDQUFLO1FBQ3BCLGVBQVUsR0FBVixVQUFVLENBQVE7UUE5Q3hDLFlBQU8sR0FBZSxFQUFFLENBQUM7UUFHekIsZUFBVSxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2hDLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FB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QyxTQUFTLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7eUJBQ3BELENBQUM7cUJBQ0g7OzBCQWdERSxNQUFNOzJCQUFDLGFBQWE7OzBCQUNwQixNQUFNOzJCQUFDLFNBQVM7NENBckNULHlCQUF5QjtzQkFBbEMsTUFBTTtnQkE4R1AsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFTekMsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLHlCQUF5QixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXBwTmFtZSwgTWVudUl0ZW0sIFJvbGUgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBNZW51U2VydmljZSwgUHJvZmlsZVNlcnZpY2UsIFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd2ZWN0b3ItbWVudScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21lbnUuY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdzaWRlSW5PdXQnLCBbc3RhdGUoJ2luJywgc3R5bGUoeyB3aWR0aDogJzYwcHgnIH0pKSwgc3RhdGUoJ291dCcsIHN0eWxlKHsgd2lkdGg6ICcyNTBweCcgfSkpXSksXHJcbiAgICB0cmlnZ2VyKCdmYWRlSW5PdXQnLCBbXHJcbiAgICAgIHN0YXRlKFxyXG4gICAgICAgICcwJyxcclxuICAgICAgICBzdHlsZSh7XHJcbiAgICAgICAgICBvcGFjaXR5OiAwLFxyXG4gICAgICAgICAgd2lkdGg6ICcwJScsXHJcbiAgICAgICAgICAnZm9udC1zaXplJzogJzBlbScsXHJcbiAgICAgICAgfSlcclxuICAgICAgKSxcclxuICAgICAgc3RhdGUoXHJcbiAgICAgICAgJzEnLFxyXG4gICAgICAgIHN0eWxlKHtcclxuICAgICAgICAgIG9wYWNpdHk6IDEsXHJcbiAgICAgICAgICAnZm9udC1zaXplJzogJzFlbScsXHJcbiAgICAgICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICksXHJcbiAgICAgIHRyYW5zaXRpb24oJzAgPD0+IDEnLCBhbmltYXRlKCczNTBtcyBlYXNlLWluLW91dCcpKSxcclxuICAgIF0pLFxyXG4gICAgdHJpZ2dlcignZmFkZVNlYXJjaEluT3V0JywgW1xyXG4gICAgICBzdGF0ZShcclxuICAgICAgICAnMCcsXHJcbiAgICAgICAgc3R5bGUoe1xyXG4gICAgICAgICAgb3BhY2l0eTogMCxcclxuICAgICAgICAgIHdpZHRoOiAnMCUnLFxyXG4gICAgICAgICAgJ2ZvbnQtc2l6ZSc6ICcwZW0nLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICksXHJcbiAgICAgIHN0YXRlKFxyXG4gICAgICAgICcxJyxcclxuICAgICAgICBzdHlsZSh7XHJcbiAgICAgICAgICBvcGFjaXR5OiAxLFxyXG4gICAgICAgICAgJ2ZvbnQtc2l6ZSc6ICcxZW0nLFxyXG4gICAgICAgICAgd2lkdGg6ICcxMDAlJyxcclxuICAgICAgICB9KVxyXG4gICAgICApLFxyXG4gICAgICB0cmFuc2l0aW9uKCcwIDw9PiAxJywgYW5pbWF0ZSgnMzUwbXMgZWFzZS1pbi1vdXQnKSksXHJcbiAgICBdKSxcclxuICAgIHRyaWdnZXIoJ3N1Ym1lbnVGYWRlSW5PdXQnLCBbXHJcbiAgICAgIHN0YXRlKFxyXG4gICAgICAgICcwJyxcclxuICAgICAgICBzdHlsZSh7XHJcbiAgICAgICAgICBvcGFjaXR5OiAwLFxyXG4gICAgICAgICAgaGVpZ2h0OiAnMCUnLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICksXHJcbiAgICAgIHN0YXRlKFxyXG4gICAgICAgICcxJyxcclxuICAgICAgICBzdHlsZSh7XHJcbiAgICAgICAgICBvcGFjaXR5OiAxLFxyXG4gICAgICAgICAgaGVpZ2h0OiAnZml0LWNvbnRlbnQnLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICksXHJcbiAgICAgIHRyYW5zaXRpb24oJzAgPD0+IDEnLCBhbmltYXRlKCczNTBtcyBlYXNlLWluLW91dCcpKSxcclxuICAgIF0pLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHB1YmxpYyBvcHRpb25zOiBNZW51SXRlbVtdID0gW107XHJcbiAgcHVibGljIGFjdGl2ZU9wdGlvbjogTWVudUl0ZW0gfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIGFjdGl2ZVN1Ym1lbnVPcHRpb246IE1lbnVJdGVtIHwgdW5kZWZpbmVkO1xyXG4gIHB1YmxpYyB3aWR0aFN0eWxlID0geyB3aWR0aDogJzI1MHB4JyB9O1xyXG4gIHB1YmxpYyBsYXN0QW5pbWF0aW9uID0gJ291dCc7XHJcbiAgcHVibGljIGFwcE5hbWVMYWJlbCA9IHRoaXMuZW52aXJvbm1lbnQuYXBwTmFtZTtcclxuICBwdWJsaWMgYWRtaW5PcHRpb246IE1lbnVJdGVtIHwgdW5kZWZpbmVkO1xyXG4gIHB1YmxpYyBhcHBzID0gQXBwTmFtZTtcclxuXHJcbiAgQE91dHB1dCgpIG9uRmluaXNoTWVudU9wdGlvbnNDb25maWcgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgc2V0IG9wZW5lZChvcGVuZWQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX29wZW5lZCA9IG9wZW5lZDtcclxuICAgIHRoaXMubWVudVNlcnZpY2UubWVudU9wZW5lZCQubmV4dCh0aGlzLm9wZW5lZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG9wZW5lZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9vcGVuZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGhhc0ZpbnRlY2hBZG1pblBlcm1pc3Npb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm9maWxlU2VydmljZS5oYXNGaW50ZWNoQWRtaW5QZXJtaXNzaW9uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBoYXNNYXJrZXRwbGFjZUFkbWluUGVybWlzc2lvbigpIHtcclxuICAgIHJldHVybiB0aGlzLnByb2ZpbGVTZXJ2aWNlLmhhc01hcmtldHBsYWNlQWRtaW5QZXJtaXNzaW9uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBoYXNBbnlNYXJrZXRwbGFjZVBlcm1pc3Npb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm9maWxlU2VydmljZS5oYXNBbnlNYXJrZXRwbGFjZVBlcm1pc3Npb247XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGhhc0FueUZpbnRlY2hQZXJtaXNzaW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucHJvZmlsZVNlcnZpY2UuaGFzQW55RmludGVjaFBlcm1pc3Npb247XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9vcGVuZWQgPSB0cnVlO1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIHByaXZhdGUgY3VycmVudFdpbmRvd1dpZHRoOiBudW1iZXIgPSAwO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbWVudVNlcnZpY2U6IE1lbnVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcHJvZmlsZVNlcnZpY2U6IFByb2ZpbGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UsXHJcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByaXZhdGUgZW52aXJvbm1lbnQ6IGFueSxcclxuICAgIEBJbmplY3QoJ2FwcE5hbWUnKSBwcml2YXRlIGN1cnJlbnRBcHA6IHN0cmluZ1xyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHRoaXMubWVudVNlcnZpY2UudG9nZ2xlTWVudSQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLnRvZ2dsZU1lbnUoKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLnByb2ZpbGVTZXJ2aWNlLm1vZHVsZVByb2ZpbGUkLnN1YnNjcmliZSgocHJvZmlsZSkgPT4ge1xyXG4gICAgICAgIGlmIChwcm9maWxlKSB7XHJcbiAgICAgICAgICBjb25zdCByb2xlID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRSb2xlKCk7XHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMgPVxyXG4gICAgICAgICAgICByb2xlID09PSBSb2xlLkFETUlOXHJcbiAgICAgICAgICAgICAgPyB0aGlzLm1lbnVTZXJ2aWNlLmdldFNpZGVBZG1pbk1lbnVPcHRpb25zKClcclxuICAgICAgICAgICAgICA6IHRoaXMubWVudVNlcnZpY2UuZ2V0U2lkZU1haW5NZW51T3B0aW9ucygpO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmhhc0ZpbnRlY2hBZG1pblBlcm1pc3Npb24gfHwgdGhpcy5oYXNNYXJrZXRwbGFjZUFkbWluUGVybWlzc2lvbikge1xyXG4gICAgICAgICAgICB0aGlzLmFkbWluT3B0aW9uID0ge1xyXG4gICAgICAgICAgICAgIGlkOiBgJHs5OTk5OX1gLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiAnQWRtaW4nLFxyXG4gICAgICAgICAgICAgIGljb25GaWxlTmFtZTogJ3ZlY3Rvcl9hZG1pbl9pY29uJyxcclxuICAgICAgICAgICAgICBjaGlsZHJlbjogW10sXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5oYXNGaW50ZWNoQWRtaW5QZXJtaXNzaW9uKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZG1pbk9wdGlvbi5jaGlsZHJlbj8ucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBpZDogYCR7OTk5OTkxfWAsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0FkbWluIEZpbnRlY2gnLFxyXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRlVG9Qb3J0YWwoeyBwb3J0YWw6ICdmaW50ZWNoJywgYWRtaW46IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgaGlkZGVuOiAhdGhpcy5oYXNGaW50ZWNoQWRtaW5QZXJtaXNzaW9uLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5oYXNNYXJrZXRwbGFjZUFkbWluUGVybWlzc2lvbikge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWRtaW5PcHRpb24uY2hpbGRyZW4/LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgaWQ6IGAkezk5OTk5Mn1gLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdBZG1pbiBNYXJrZXRwbGFjZScsXHJcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGVUb1BvcnRhbCh7IHBvcnRhbDogJ21hcmtldHBsYWNlJywgYWRtaW46IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgaGlkZGVuOiAhdGhpcy5oYXNNYXJrZXRwbGFjZUFkbWluUGVybWlzc2lvbixcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5vbkZpbmlzaE1lbnVPcHRpb25zQ29uZmlnLmVtaXQobnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHRoaXMubWVudVNlcnZpY2UuZnJhbWVVcmwkLnN1YnNjcmliZSgoZnJhbWVVcmwpID0+IHtcclxuICAgICAgICBpZiAoZnJhbWVVcmwpIHtcclxuICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0U2Vzc2lvbignZnJhbWVVcmwnLCBmcmFtZVVybCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UucmVtb3ZlU2Vzc2lvbignZnJhbWVVcmwnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGZyYW1lVXJsRnJvbVN0b3JhZ2UgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFNlc3Npb24oJ2ZyYW1lVXJsJyk7XHJcbiAgICBpZiAoZnJhbWVVcmxGcm9tU3RvcmFnZSkge1xyXG4gICAgICB0aGlzLm1lbnVTZXJ2aWNlLmZyYW1lVXJsJC5uZXh0KGZyYW1lVXJsRnJvbVN0b3JhZ2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY3VycmVudFdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICBvblJlc2l6ZSgpIHtcclxuICAgIGlmICh0aGlzLm9wZW5lZCAmJiB0aGlzLmN1cnJlbnRXaW5kb3dXaWR0aCAhPT0gd2luZG93LmlubmVyV2lkdGgpIHtcclxuICAgICAgdGhpcy5jbGVhckFuZENsb3NlTWVudSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jdXJyZW50V2luZG93V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVLZXlib2FyZEV2ZW50KCkge1xyXG4gICAgdGhpcy50b2dnbGVNZW51KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9nZ2xlTWVudSgpIHtcclxuICAgIHRoaXMub3BlbmVkID0gIXRoaXMub3BlbmVkO1xyXG4gICAgaWYgKCF0aGlzLm9wZW5lZCkge1xyXG4gICAgICB0aGlzLmFjdGl2ZU9wdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy5hY3RpdmVTdWJtZW51T3B0aW9uID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZXNpemVNZW51KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25NZW51Q2xpY2sob3B0aW9uOiBNZW51SXRlbSkge1xyXG4gICAgaWYgKCFvcHRpb24uYWx3YXlzT3Blbikge1xyXG4gICAgICBpZiAodGhpcy5hY3RpdmVPcHRpb24/LmlkID09PSBvcHRpb24uaWQpIHtcclxuICAgICAgICB0aGlzLmFjdGl2ZU9wdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmFjdGl2ZU9wdGlvbiA9IG9wdGlvbi5jaGlsZHJlbj8ubGVuZ3RoID8gb3B0aW9uIDogdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghb3B0aW9uLmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICBpZiAob3B0aW9uLnJvdXRlKSB7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbb3B0aW9uLnJvdXRlXSk7XHJcbiAgICAgICAgICB0aGlzLm1lbnVTZXJ2aWNlLmZyYW1lVXJsJC5uZXh0KHVuZGVmaW5lZCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChvcHRpb24uZnJhbWVVcmwpIHtcclxuICAgICAgICAgIHRoaXMubWVudVNlcnZpY2UuZnJhbWVVcmwkLm5leHQob3B0aW9uLmZyYW1lVXJsKTtcclxuICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbi5leHRlcm5hbFVybCkge1xyXG4gICAgICAgICAgd2luZG93Lm9wZW4ob3B0aW9uLmV4dGVybmFsVXJsLCAnX2JsYW5rJyk7XHJcbiAgICAgICAgICB0aGlzLm1lbnVTZXJ2aWNlLmZyYW1lVXJsJC5uZXh0KHVuZGVmaW5lZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChvcHRpb24uY2hpbGRyZW4/Lmxlbmd0aCAmJiAhdGhpcy5vcGVuZWQpIHtcclxuICAgICAgICB0aGlzLnRvZ2dsZU1lbnUoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFjdGl2ZVN1Ym1lbnVPcHRpb24gPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25TdWJtZW51Q2xpY2soc3VibWVudUl0ZW06IE1lbnVJdGVtKSB7XHJcbiAgICBpZiAoIXN1Ym1lbnVJdGVtLmFsd2F5c09wZW4pIHtcclxuICAgICAgaWYgKHRoaXMuYWN0aXZlU3VibWVudU9wdGlvbj8uaWQgPT09IHN1Ym1lbnVJdGVtPy5pZCkge1xyXG4gICAgICAgIHRoaXMuYWN0aXZlU3VibWVudU9wdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmFjdGl2ZVN1Ym1lbnVPcHRpb24gPSBzdWJtZW51SXRlbS5jaGlsZHJlbj8ubGVuZ3RoID8gc3VibWVudUl0ZW0gOiB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFzdWJtZW51SXRlbS5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgaWYgKHN1Ym1lbnVJdGVtLnJvdXRlKSB7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbc3VibWVudUl0ZW0ucm91dGVdKTtcclxuICAgICAgICAgIHRoaXMubWVudVNlcnZpY2UuZnJhbWVVcmwkLm5leHQodW5kZWZpbmVkKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHN1Ym1lbnVJdGVtLmZyYW1lVXJsKSB7XHJcbiAgICAgICAgICB0aGlzLm1lbnVTZXJ2aWNlLmZyYW1lVXJsJC5uZXh0KHN1Ym1lbnVJdGVtLmZyYW1lVXJsKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHN1Ym1lbnVJdGVtLmV4dGVybmFsVXJsKSB7XHJcbiAgICAgICAgICB3aW5kb3cub3BlbihzdWJtZW51SXRlbS5leHRlcm5hbFVybCwgJ19ibGFuaycpO1xyXG4gICAgICAgICAgdGhpcy5tZW51U2VydmljZS5mcmFtZVVybCQubmV4dCh1bmRlZmluZWQpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc3VibWVudUl0ZW0uY29tbWFuZCkge1xyXG4gICAgICAgICAgc3VibWVudUl0ZW0uY29tbWFuZCgpO1xyXG4gICAgICAgICAgdGhpcy5tZW51U2VydmljZS5mcmFtZVVybCQubmV4dCh1bmRlZmluZWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW5UZXJtc09mVXNlKCkge31cclxuXHJcbiAgcHVibGljIGlzUG9ydGFsU2VsZWN0ZWQocG9ydGFsOiBBcHBOYW1lKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50QXBwID09PSBwb3J0YWw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmF2aWdhdGVUb1BvcnRhbChwYXJhbXM6IHsgcG9ydGFsOiAnZmludGVjaCcgfCAnbG9ndGVjaCcgfCAnbWFya2V0cGxhY2UnOyBhZG1pbjogYm9vbGVhbiB9KSB7XHJcbiAgICB0aGlzLmFjdGl2ZU9wdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuYWN0aXZlU3VibWVudU9wdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMubWVudVNlcnZpY2UubmF2aWdhdGVUb1BvcnRhbChwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldE1lbnVOb3RpZmljYXRpb25zQ291bnQobWVudTogTWVudUl0ZW0pIHtcclxuICAgIHJldHVybiB0aGlzLm1lbnVTZXJ2aWNlLm1lbnVOb3RpZmljYXRpb25zW21lbnUuaWQgfHwgJyddO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhckFuZENsb3NlTWVudSgpOiB2b2lkIHtcclxuICAgIHRoaXMub3BlbmVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmFjdGl2ZU9wdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMucmVzaXplTWVudSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNpemVNZW51KCkge1xyXG4gICAgdGhpcy5sYXN0QW5pbWF0aW9uID0gdGhpcy5vcGVuZWQgPyAnb3V0JyA6ICdpbic7XHJcbiAgICB0aGlzLndpZHRoU3R5bGUgPSB7IHdpZHRoOiB0aGlzLm9wZW5lZCA/ICcyNTBweCcgOiAnNjBweCcgfTtcclxuICAgIHRoaXMuYWN0aXZlU3VibWVudU9wdGlvbiA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZXNldE1lbnVzKGNsZWFyID0gZmFsc2UpIHtcclxuICAgIHRoaXMub3B0aW9ucyA9IGNsZWFyID8gW10gOiB0aGlzLm9wdGlvbnM7XHJcbiAgICB0aGlzLmFkbWluT3B0aW9uID0gdW5kZWZpbmVkO1xyXG4gIH1cclxufVxyXG4iLCI8bmF2IGlkPVwibWVudVwiIFtuZ1N0eWxlXT1cIndpZHRoU3R5bGVcIiBbQHNpZGVJbk91dF09XCJsYXN0QW5pbWF0aW9uXCI+XHJcbiAgPGRpdiBjbGFzcz1cImhlYWRlci1tZW51XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibG9nby1jb250YWluZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImxvZ29cIiBbbmdDbGFzc109XCJ7ICdsb2dvLXNtYWxsJzogIW9wZW5lZCB9XCI+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibWVudS1zZWN0aW9uc1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1lbnUtc2VjdGlvblwiPlxyXG4gICAgICA8c3BhbiBbbmdTdHlsZV09XCJ7IG9wYWNpdHk6IG9wZW5lZCA/IDEgOiAwIH1cIiBjbGFzcz1cIm1lbnUtc2VjdGlvbi10aXRsZVwiPlNFTEXDh8ODTyBERSBQT1JUQUw8L3NwYW4+XHJcbiAgICAgIDx1bCBjbGFzcz1cInNpZGUtbWVudVwiPlxyXG4gICAgICAgIDxsaT5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJzaWRlLW1lbnUtaXRlbVwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkLXBvcnRhbCc6IGlzUG9ydGFsU2VsZWN0ZWQoYXBwcy5MT0dURUNIKSB9XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9Qb3J0YWwoeyBwb3J0YWw6ICdsb2d0ZWNoJywgYWRtaW46IGZhbHNlIH0pXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29udGFpbmVyIHNlbGVjdGVkLXBvcnRhbC1pdGVtIGxvZ3RlY2hcIj48L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWxhYmVsXCI+Q2FyZ2FzPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGkgKm5nSWY9XCJoYXNBbnlGaW50ZWNoUGVybWlzc2lvblwiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInNpZGUtbWVudS1pdGVtXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQtcG9ydGFsJzogaXNQb3J0YWxTZWxlY3RlZChhcHBzLkZJTlRFQ0gpIH1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwibmF2aWdhdGVUb1BvcnRhbCh7IHBvcnRhbDogJ2ZpbnRlY2gnLCBhZG1pbjogZmFsc2UgfSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1jb250YWluZXIgc2VsZWN0ZWQtcG9ydGFsLWl0ZW0gZmludGVjaFwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtbGFiZWxcIj5DYXJ0ZWlyYSBkaWdpdGFsPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwic2lkZS1tZW51LWl0ZW1cIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZC1wb3J0YWwnOiBpc1BvcnRhbFNlbGVjdGVkKGFwcHMuTUFSS0VUUExBQ0UpIH1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwibmF2aWdhdGVUb1BvcnRhbCh7IHBvcnRhbDogJ21hcmtldHBsYWNlJywgYWRtaW46IGZhbHNlIH0pXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29udGFpbmVyIHNlbGVjdGVkLXBvcnRhbC1pdGVtIG1hcmtldHBsYWNlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1sYWJlbFwiPkNvbWJ1c3TDrXZlbDwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpICpuZ0lmPVwiYWRtaW5PcHRpb24gJiYgKGhhc0ZpbnRlY2hBZG1pblBlcm1pc3Npb24gfHwgaGFzTWFya2V0cGxhY2VBZG1pblBlcm1pc3Npb24pXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwic2lkZS1tZW51LWl0ZW1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25NZW51Q2xpY2soYWRtaW5PcHRpb24pXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnYWN0aXZlLW1lbnUnOiBhY3RpdmVPcHRpb24/LmlkID09PSBhZG1pbk9wdGlvbi5pZCB9XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgPGltZyBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvaWNvbnMvdmVjdG9yX2FkbWluX2ljb24uc3ZnXCIgY2xhc3M9XCJtZW51LWljb25cIiAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWxhYmVsXCI+e3sgYWRtaW5PcHRpb24ubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJvcGVuZWQgJiYgYWRtaW5PcHRpb24uY2hpbGRyZW4/Lmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmYXMgYW5nbGUtaWNvblwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgJ2ZhLWFuZ2xlLWRvd24nOiBhY3RpdmVPcHRpb24/LmlkICE9PSBhZG1pbk9wdGlvbi5pZCxcclxuICAgICAgICAgICAgICAgICdmYS1hbmdsZS11cCc6IGFjdGl2ZU9wdGlvbj8uaWQgPT09IGFkbWluT3B0aW9uLmlkXHJcbiAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDx2ZWN0b3Itc3ViLW1lbnVzLWxpc3RcclxuICAgICAgICAgICAgW29wdGlvbnNdPVwiYWRtaW5PcHRpb24uY2hpbGRyZW5cIlxyXG4gICAgICAgICAgICBbc2hvd0xpc3RdPVwiYWN0aXZlT3B0aW9uPy5pZCA9PT0gYWRtaW5PcHRpb24uaWRcIlxyXG4gICAgICAgICAgICBbc3VibWVudVNlbGVjdGVkXT1cImFjdGl2ZVN1Ym1lbnVPcHRpb25cIlxyXG4gICAgICAgICAgICAoc3VibWVudVNlbGVjdGVkQ2hhbmdlKT1cIm9uU3VibWVudUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgPjwvdmVjdG9yLXN1Yi1tZW51cy1saXN0PlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgIDwvdWw+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtZW51LXNlY3Rpb25cIj5cclxuICAgICAgPHNwYW4gW25nU3R5bGVdPVwieyBvcGFjaXR5OiBvcGVuZWQgJiYgb3B0aW9ucz8ubGVuZ3RoID8gMSA6IDAgfVwiIGNsYXNzPVwibWVudS1zZWN0aW9uLXRpdGxlXCI+TUVOVTwvc3Bhbj5cclxuICAgICAgPHVsIGNsYXNzPVwic2lkZS1tZW51XCI+XHJcbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInNpZGUtbWVudS1pdGVtXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnYWN0aXZlLW1lbnUnOiBhY3RpdmVPcHRpb24/LmlkID09PSBvcHRpb24uaWQsICdhbHdheXMtb3Blbic6ICEhb3B0aW9uLmFsd2F5c09wZW4gfVwiXHJcbiAgICAgICAgICAgIFtwVG9vbHRpcF09XCJvcHRpb24ubGFiZWxcIlxyXG4gICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJyaWdodFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbk1lbnVDbGljayhvcHRpb24pXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb24uaWNvbkZpbGVOYW1lXCJcclxuICAgICAgICAgICAgICAgIFtzcmNdPVwiJy4uLy4uLy4uLy4uL2Fzc2V0cy9pY29ucy8nICsgb3B0aW9uLmljb25GaWxlTmFtZSArICcuc3ZnJ1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1lbnUtaWNvblwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8aSAqbmdJZj1cIm9wdGlvbi5pY29uXCIgY2xhc3M9XCJtZW51LWljb24ge3sgb3B0aW9uLmljb24gfX1cIj48L2k+XHJcbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnZXRNZW51Tm90aWZpY2F0aW9uc0NvdW50KG9wdGlvbilcIiBjbGFzcz1cIm1lbnUtbm90aWZpY2F0aW9ucy1jb3VudFwiPnt7XHJcbiAgICAgICAgICAgICAgICBnZXRNZW51Tm90aWZpY2F0aW9uc0NvdW50KG9wdGlvbilcclxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1sYWJlbFwiPnt7IG9wdGlvbi5sYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAqbmdJZj1cIm9wZW5lZCAmJiBvcHRpb24uY2hpbGRyZW4/Lmxlbmd0aCAmJiAhb3B0aW9uLmFsd2F5c09wZW5cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZmFzIGFuZ2xlLWljb25cIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICdmYS1hbmdsZS1kb3duJzogYWN0aXZlT3B0aW9uPy5pZCAhPT0gb3B0aW9uLmlkLFxyXG4gICAgICAgICAgICAgICAgJ2ZhLWFuZ2xlLXVwJzogYWN0aXZlT3B0aW9uPy5pZCA9PT0gb3B0aW9uLmlkXHJcbiAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDx2ZWN0b3Itc3ViLW1lbnVzLWxpc3RcclxuICAgICAgICAgICAgW29wdGlvbnNdPVwib3B0aW9uLmNoaWxkcmVuXCJcclxuICAgICAgICAgICAgW3Nob3dMaXN0XT1cImFjdGl2ZU9wdGlvbj8uaWQgPT09IG9wdGlvbi5pZCB8fCAoISFvcHRpb24uYWx3YXlzT3BlbiAmJiBvcGVuZWQpXCJcclxuICAgICAgICAgICAgW3N1Ym1lbnVTZWxlY3RlZF09XCJhY3RpdmVTdWJtZW51T3B0aW9uXCJcclxuICAgICAgICAgICAgKHN1Ym1lbnVTZWxlY3RlZENoYW5nZSk9XCJvblN1Ym1lbnVDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgID48L3ZlY3Rvci1zdWItbWVudXMtbGlzdD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICA8L3VsPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImZvb3RlciBzaWRlLW1lbnUtaXRlbVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImljb24tY29udGFpbmVyXCI+XHJcbiAgICAgIDxpbWcgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ljb25zL21lbnVfZm9vdGVyX2ljb24uc3ZnXCIgY2xhc3M9XCJtZW51LWljb25cIiAvPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cIm1lbnUtbGFiZWwgZm9vdGVyLWNvbnRlbnRcIj5cclxuICAgICAgPHNwYW4+IFZlamEgbm9zc28gPGEgKGNsaWNrKT1cIm9wZW5UZXJtc09mVXNlKClcIj5UZXJtbyBkZSB1c288L2E+IDwvc3Bhbj5cclxuICAgICAgPHNwYW4+ZSA8YT5Qb2zDrXRpY2EgZGUgcHJpdmFjaWRhZGU8L2E+PC9zcGFuPlxyXG4gICAgPC9zcGFuPlxyXG4gIDwvZGl2PlxyXG48L25hdj5cclxuIl19