@esfaenza/forms-and-validations 13.3.11 → 14.2.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.
Files changed (74) hide show
  1. package/esm2020/lib/forms/base-form-control.mjs +44 -21
  2. package/esm2020/lib/forms/form-adaptive/form-adaptive.component.loc.mjs +3 -3
  3. package/esm2020/lib/forms/form-adaptive/form-adaptive.component.mjs +51 -16
  4. package/esm2020/lib/forms/form-autocomplete/form-autocomplete.component.loc.mjs +3 -3
  5. package/esm2020/lib/forms/form-autocomplete/form-autocomplete.component.mjs +31 -17
  6. package/esm2020/lib/forms/form-checkbox/form-checkbox.component.mjs +23 -9
  7. package/esm2020/lib/forms/form-date/form-date.component.mjs +9 -9
  8. package/esm2020/lib/forms/form-datetime/form-datetime.component.mjs +9 -9
  9. package/esm2020/lib/forms/form-empty/form-empty.component.mjs +5 -5
  10. package/esm2020/lib/forms/form-error/form-error.component.mjs +3 -3
  11. package/esm2020/lib/forms/form-file/form-file.component.loc.mjs +3 -3
  12. package/esm2020/lib/forms/form-file/form-file.component.mjs +18 -5
  13. package/esm2020/lib/forms/form-info/form-info.component.mjs +3 -3
  14. package/esm2020/lib/forms/form-input/form-input.component.mjs +8 -8
  15. package/esm2020/lib/forms/form-multiselect/form-multiselect.component.loc.mjs +3 -3
  16. package/esm2020/lib/forms/form-multiselect/form-multiselect.component.mjs +7 -7
  17. package/esm2020/lib/forms/form-select/form-select.component.loc.mjs +3 -3
  18. package/esm2020/lib/forms/form-select/form-select.component.mjs +16 -11
  19. package/esm2020/lib/forms/form-template/form-template.component.mjs +9 -5
  20. package/esm2020/lib/forms/form-textarea/form-textarea.component.mjs +7 -7
  21. package/esm2020/lib/forms/form-time/form-time.component.mjs +5 -5
  22. package/esm2020/lib/forms-and-validations.module.mjs +7 -6
  23. package/esm2020/lib/models/ChangeEvent.mjs +7 -0
  24. package/esm2020/lib/models/FormsAndValidationsModuleConfig.mjs +1 -1
  25. package/esm2020/lib/models/dayjs-adapter/dayjs-date-adapter.mjs +3 -3
  26. package/esm2020/lib/tokens.mjs +3 -1
  27. package/esm2020/lib/validations/base-validation.loc.mjs +3 -3
  28. package/esm2020/lib/validations/base-validation.mjs +12 -4
  29. package/esm2020/lib/validations/customValidators/CustomRequiredDirective.mjs +3 -3
  30. package/esm2020/lib/validations/validation-autocomplete/validation-autocomplete.component.mjs +16 -15
  31. package/esm2020/lib/validations/validation-autocomplete-multi/validation-autocomplete-multi.component.mjs +32 -20
  32. package/esm2020/lib/validations/validation-currency/validation-currency.component.mjs +12 -12
  33. package/esm2020/lib/validations/validation-date/validation-date.component.mjs +14 -13
  34. package/esm2020/lib/validations/validation-datetime/validation-datetime.component.mjs +17 -16
  35. package/esm2020/lib/validations/validation-input/validation-input.component.mjs +21 -13
  36. package/esm2020/lib/validations/validation-select/validation-select.component.mjs +15 -14
  37. package/esm2020/lib/validations/validation-text-area/validation-text-area.component.mjs +10 -10
  38. package/esm2020/public-api.mjs +4 -1
  39. package/fesm2015/esfaenza-forms-and-validations.mjs +379 -236
  40. package/fesm2015/esfaenza-forms-and-validations.mjs.map +1 -1
  41. package/fesm2020/esfaenza-forms-and-validations.mjs +379 -236
  42. package/fesm2020/esfaenza-forms-and-validations.mjs.map +1 -1
  43. package/{esfaenza-forms-and-validations.d.ts → index.d.ts} +0 -0
  44. package/lib/forms/base-form-control.d.ts +24 -10
  45. package/lib/forms/form-adaptive/form-adaptive.component.d.ts +8 -2
  46. package/lib/forms/form-autocomplete/form-autocomplete.component.d.ts +5 -2
  47. package/lib/forms/form-checkbox/form-checkbox.component.d.ts +7 -3
  48. package/lib/forms/form-date/form-date.component.d.ts +3 -2
  49. package/lib/forms/form-datetime/form-datetime.component.d.ts +3 -2
  50. package/lib/forms/form-empty/form-empty.component.d.ts +1 -1
  51. package/lib/forms/form-error/form-error.component.d.ts +1 -1
  52. package/lib/forms/form-file/form-file.component.d.ts +5 -3
  53. package/lib/forms/form-info/form-info.component.d.ts +1 -1
  54. package/lib/forms/form-input/form-input.component.d.ts +1 -1
  55. package/lib/forms/form-multiselect/form-multiselect.component.d.ts +1 -1
  56. package/lib/forms/form-select/form-select.component.d.ts +2 -2
  57. package/lib/forms/form-template/form-template.component.d.ts +3 -1
  58. package/lib/forms/form-textarea/form-textarea.component.d.ts +1 -1
  59. package/lib/forms/form-time/form-time.component.d.ts +1 -1
  60. package/lib/models/ChangeEvent.d.ts +5 -0
  61. package/lib/models/FormsAndValidationsModuleConfig.d.ts +2 -0
  62. package/lib/tokens.d.ts +2 -0
  63. package/lib/validations/base-validation.d.ts +9 -2
  64. package/lib/validations/customValidators/CustomRequiredDirective.d.ts +1 -1
  65. package/lib/validations/validation-autocomplete/validation-autocomplete.component.d.ts +2 -2
  66. package/lib/validations/validation-autocomplete-multi/validation-autocomplete-multi.component.d.ts +5 -3
  67. package/lib/validations/validation-currency/validation-currency.component.d.ts +1 -1
  68. package/lib/validations/validation-date/validation-date.component.d.ts +2 -2
  69. package/lib/validations/validation-datetime/validation-datetime.component.d.ts +2 -2
  70. package/lib/validations/validation-input/validation-input.component.d.ts +7 -2
  71. package/lib/validations/validation-select/validation-select.component.d.ts +4 -4
  72. package/lib/validations/validation-text-area/validation-text-area.component.d.ts +1 -1
  73. package/package.json +3 -3
  74. package/public-api.d.ts +3 -0
@@ -6,15 +6,16 @@ import { LocalizationService } from "@esfaenza/localizations";
6
6
  // Direttive, Componenti, Librerie
7
7
  import { BaseValidation } from "../base-validation";
8
8
  import { BaseValidationLoc } from '../base-validation.loc';
9
+ import { ChangeEvent } from "../../models/ChangeEvent";
9
10
  import * as i0 from "@angular/core";
10
11
  import * as i1 from "@esfaenza/localizations";
11
- import * as i2 from "@angular/material/form-field";
12
- import * as i3 from "@angular/material/autocomplete";
13
- import * as i4 from "@angular/material/core";
14
- import * as i5 from "@angular/common";
15
- import * as i6 from "@angular/material/input";
16
- import * as i7 from "@angular/forms";
17
- import * as i8 from "ngx-bootstrap/tooltip";
12
+ import * as i2 from "@angular/common";
13
+ import * as i3 from "@angular/forms";
14
+ import * as i4 from "@angular/material/form-field";
15
+ import * as i5 from "@angular/material/input";
16
+ import * as i6 from "ngx-bootstrap/tooltip";
17
+ import * as i7 from "@angular/material/autocomplete";
18
+ import * as i8 from "@angular/material/core";
18
19
  /**
19
20
  * Componente di validaizone per gli input di Autocompletamento
20
21
  */
@@ -92,9 +93,9 @@ export class ValidationAutocompleteComponent extends BaseValidation {
92
93
  *
93
94
  * @param {any} toEmit valore da propagare all'esterno
94
95
  */
95
- onModelChange(toEmit) {
96
+ onModelChange(toEmit, internal = false) {
96
97
  this.writeValue(toEmit);
97
- this.inputChange.emit(toEmit);
98
+ this.inputChange.emit(new ChangeEvent(internal, toEmit));
98
99
  this.onTouched();
99
100
  }
100
101
  /** @ignore */
@@ -106,16 +107,16 @@ export class ValidationAutocompleteComponent extends BaseValidation {
106
107
  this.onTouched = fn;
107
108
  }
108
109
  }
109
- ValidationAutocompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ValidationAutocompleteComponent, deps: [{ token: NG_VALIDATORS, optional: true }, { token: NG_ASYNC_VALIDATORS, optional: true }, { token: i0.Injector }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
110
- ValidationAutocompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ValidationAutocompleteComponent, selector: "val-autocomplete", inputs: { FilteredSource: "FilteredSource", value: "value", label: "label" }, outputs: { optionChange: "optionChange" }, providers: [
110
+ ValidationAutocompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ValidationAutocompleteComponent, deps: [{ token: NG_VALIDATORS, optional: true }, { token: NG_ASYNC_VALIDATORS, optional: true }, { token: i0.Injector }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
111
+ ValidationAutocompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ValidationAutocompleteComponent, selector: "val-autocomplete", inputs: { FilteredSource: "FilteredSource", value: "value", label: "label" }, outputs: { optionChange: "optionChange" }, providers: [
111
112
  { provide: LocalizationService, useClass: BaseValidationLoc },
112
113
  {
113
114
  provide: NG_VALUE_ACCESSOR,
114
115
  useExisting: forwardRef(() => ValidationAutocompleteComponent),
115
116
  multi: true
116
117
  }
117
- ], usesInheritance: true, ngImport: i0, template: "<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top mat-height-fixed\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <input matInput\r\n #htmlInput\r\n #baseInput='ngModel'\r\n type=\"text\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n placeholder=\"{{placeholder}}\"\r\n [matAutocomplete]=\"auto\"\r\n name=\"val-input\"\r\n id=\"{{id}}\"\r\n class=\"form-control {{class}}\"\r\n [(ngModel)]=\"value\"\r\n [class.checking-field]=\"!noValidate\"\r\n [tooltip]=\"tolTemplate\"\r\n [disabled]=\"readonly || disabled\"\r\n (ngModelChange)=\"onModelChange($event)\"\r\n (click)=\"onFocus($event)\"\r\n (focus)=\"checkTooltip();\"\r\n (keyup)=\"($event.keyCode == 13 || $event.keyCode == 27) && onFinalize();\"\r\n (blur)=\"closeTooltip(); onFinalize();\"\r\n >\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of FilteredSource\" [value]=\"option.id\">\r\n {{option.description}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div (click)=\"closeTooltip()\">\r\n <span>{{validationFailed}}</span>\r\n </div>\r\n</ng-template>", styles: [".tooltip-inner{background-color:#842a30;color:#fff;font-size:12px;width:max-content}.tooltip{margin:auto auto auto 20%!important}.tooltip-inner{background-color:#842a30!important;color:#fff}.tooltip.top .tooltip-arrow:before,.tooltip.top .tooltip-arrow{border-top-color:#842a30}.close-button{position:absolute;right:0em;top:-.2em;float:right;font-size:16px;font-weight:700;color:inherit;text-shadow:0 1px 0 #fff;opacity:.5}.close-button:hover,.close-button:focus{text-decoration:none;cursor:pointer;opacity:.75}\n"], components: [{ type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatLabel, selector: "mat-label" }, { type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i3.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i8.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
118
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ValidationAutocompleteComponent, decorators: [{
118
+ ], usesInheritance: true, ngImport: i0, template: "<!-- Val-Model: {{value}} -->\r\n<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top mat-height-fixed\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <input matInput\r\n #htmlInput\r\n #baseInput='ngModel'\r\n type=\"text\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n placeholder=\"{{placeholder}}\"\r\n [matAutocomplete]=\"auto\"\r\n name=\"val-input\"\r\n id=\"{{id}}\"\r\n class=\"form-control {{class}}\"\r\n [(ngModel)]=\"value\"\r\n [class.checking-field]=\"!noValidate\"\r\n [tooltip]=\"tolTemplate\"\r\n [disabled]=\"readonly || disabled\"\r\n (ngModelChange)=\"onModelChange($event)\"\r\n (click)=\"onFocus($event)\"\r\n (focus)=\"checkTooltip();\"\r\n (keyup)=\"($event.keyCode == 13 || $event.keyCode == 27) && onFinalize();\"\r\n (blur)=\"closeTooltip(); onFinalize();\">\r\n\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of FilteredSource\" [value]=\"option.id\">\r\n {{option.description}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div (click)=\"closeTooltip()\">\r\n <span>{{validationFailed}}</span>\r\n </div>\r\n</ng-template>", styles: [".tooltip-inner{background-color:#842a30;color:#fff;font-size:12px;width:max-content}.tooltip{margin:auto auto auto 20%!important}.tooltip-inner{background-color:#842a30!important;color:#fff}.tooltip.top .tooltip-arrow:before,.tooltip.top .tooltip-arrow{border-top-color:#842a30}.close-button{position:absolute;right:0;top:-.2em;float:right;font-size:16px;font-weight:700;color:inherit;text-shadow:0 1px 0 #fff;opacity:.5}.close-button:hover,.close-button:focus{text-decoration:none;cursor:pointer;opacity:.75}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i6.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "component", type: i7.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i7.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", exportAs: ["matOption"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ValidationAutocompleteComponent, decorators: [{
119
120
  type: Component,
120
121
  args: [{ selector: "val-autocomplete", changeDetection: ChangeDetectionStrategy.OnPush, providers: [
121
122
  { provide: LocalizationService, useClass: BaseValidationLoc },
@@ -124,7 +125,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
124
125
  useExisting: forwardRef(() => ValidationAutocompleteComponent),
125
126
  multi: true
126
127
  }
127
- ], encapsulation: ViewEncapsulation.None, template: "<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top mat-height-fixed\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <input matInput\r\n #htmlInput\r\n #baseInput='ngModel'\r\n type=\"text\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n placeholder=\"{{placeholder}}\"\r\n [matAutocomplete]=\"auto\"\r\n name=\"val-input\"\r\n id=\"{{id}}\"\r\n class=\"form-control {{class}}\"\r\n [(ngModel)]=\"value\"\r\n [class.checking-field]=\"!noValidate\"\r\n [tooltip]=\"tolTemplate\"\r\n [disabled]=\"readonly || disabled\"\r\n (ngModelChange)=\"onModelChange($event)\"\r\n (click)=\"onFocus($event)\"\r\n (focus)=\"checkTooltip();\"\r\n (keyup)=\"($event.keyCode == 13 || $event.keyCode == 27) && onFinalize();\"\r\n (blur)=\"closeTooltip(); onFinalize();\"\r\n >\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of FilteredSource\" [value]=\"option.id\">\r\n {{option.description}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div (click)=\"closeTooltip()\">\r\n <span>{{validationFailed}}</span>\r\n </div>\r\n</ng-template>", styles: [".tooltip-inner{background-color:#842a30;color:#fff;font-size:12px;width:max-content}.tooltip{margin:auto auto auto 20%!important}.tooltip-inner{background-color:#842a30!important;color:#fff}.tooltip.top .tooltip-arrow:before,.tooltip.top .tooltip-arrow{border-top-color:#842a30}.close-button{position:absolute;right:0em;top:-.2em;float:right;font-size:16px;font-weight:700;color:inherit;text-shadow:0 1px 0 #fff;opacity:.5}.close-button:hover,.close-button:focus{text-decoration:none;cursor:pointer;opacity:.75}\n"] }]
128
+ ], encapsulation: ViewEncapsulation.None, template: "<!-- Val-Model: {{value}} -->\r\n<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top mat-height-fixed\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <input matInput\r\n #htmlInput\r\n #baseInput='ngModel'\r\n type=\"text\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n placeholder=\"{{placeholder}}\"\r\n [matAutocomplete]=\"auto\"\r\n name=\"val-input\"\r\n id=\"{{id}}\"\r\n class=\"form-control {{class}}\"\r\n [(ngModel)]=\"value\"\r\n [class.checking-field]=\"!noValidate\"\r\n [tooltip]=\"tolTemplate\"\r\n [disabled]=\"readonly || disabled\"\r\n (ngModelChange)=\"onModelChange($event)\"\r\n (click)=\"onFocus($event)\"\r\n (focus)=\"checkTooltip();\"\r\n (keyup)=\"($event.keyCode == 13 || $event.keyCode == 27) && onFinalize();\"\r\n (blur)=\"closeTooltip(); onFinalize();\">\r\n\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of FilteredSource\" [value]=\"option.id\">\r\n {{option.description}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div (click)=\"closeTooltip()\">\r\n <span>{{validationFailed}}</span>\r\n </div>\r\n</ng-template>", styles: [".tooltip-inner{background-color:#842a30;color:#fff;font-size:12px;width:max-content}.tooltip{margin:auto auto auto 20%!important}.tooltip-inner{background-color:#842a30!important;color:#fff}.tooltip.top .tooltip-arrow:before,.tooltip.top .tooltip-arrow{border-top-color:#842a30}.close-button{position:absolute;right:0;top:-.2em;float:right;font-size:16px;font-weight:700;color:inherit;text-shadow:0 1px 0 #fff;opacity:.5}.close-button:hover,.close-button:focus{text-decoration:none;cursor:pointer;opacity:.75}\n"] }]
128
129
  }], ctorParameters: function () { return [{ type: Array, decorators: [{
129
130
  type: Optional
130
131
  }, {
@@ -144,4 +145,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
144
145
  }], optionChange: [{
145
146
  type: Output
146
147
  }] } });
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1hdXRvY29tcGxldGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvdmFsaWRhdGlvbnMvdmFsaWRhdGlvbi1hdXRvY29tcGxldGUvdmFsaWRhdGlvbi1hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvdmFsaWRhdGlvbnMvdmFsaWRhdGlvbi1hdXRvY29tcGxldGUvdmFsaWRhdGlvbi1hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBcUMsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hKLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQVksS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkssaUJBQWlCO0FBQ2pCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTlELGtDQUFrQztBQUNsQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7QUFHM0Q7O0dBRUc7QUFnQkgsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLGNBQWM7SUFxQi9ELGNBQWM7SUFDZCxZQUF1RCxXQUF1QixFQUFtRCxnQkFBNEIsRUFBVSxRQUFrQixFQUFZLEVBQXVCO1FBQ3hOLEtBQUssRUFBRSxDQUFDO1FB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QkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGdDQUFnQyxDQUFDOzRCQUM5RCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJOzBEQXlCK0IsS0FBSzswQkFBNUQsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhOzhCQUFzRyxLQUFLOzBCQUF2RSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLG1CQUFtQjtxR0FsQjlHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR1UsS0FBSztzQkFBcEIsS0FBSztnQkFHVSxLQUFLO3NCQUFwQixLQUFLO2dCQUdJLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgTkdfQVNZTkNfVkFMSURBVE9SUywgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIE5nQ29udHJvbCwgUmVxdWlyZWRWYWxpZGF0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBJbmplY3QsIEluamVjdG9yLCBJbnB1dCwgT3B0aW9uYWwsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9sb2NhbGl6YXRpb25zXCI7XHJcblxyXG4vLyBEaXJldHRpdmUsIENvbXBvbmVudGksIExpYnJlcmllXHJcbmltcG9ydCB7IEJhc2VWYWxpZGF0aW9uIH0gZnJvbSBcIi4uL2Jhc2UtdmFsaWRhdGlvblwiO1xyXG5pbXBvcnQgeyBCYXNlVmFsaWRhdGlvbkxvYyB9IGZyb20gJy4uL2Jhc2UtdmFsaWRhdGlvbi5sb2MnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudGUgZGkgdmFsaWRhaXpvbmUgcGVyIGdsaSBpbnB1dCBkaSBBdXRvY29tcGxldGFtZW50b1xyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJ2YWwtYXV0b2NvbXBsZXRlXCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCJ2YWxpZGF0aW9uLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7IHByb3ZpZGU6IExvY2FsaXphdGlvblNlcnZpY2UsIHVzZUNsYXNzOiBCYXNlVmFsaWRhdGlvbkxvYyB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFZhbGlkYXRpb25BdXRvY29tcGxldGVDb21wb25lbnQpLFxyXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgIF0sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuLi92YWxpZGF0aW9uLXN0eWxlLnNjc3NcIl1cclxufSlcclxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25BdXRvY29tcGxldGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlVmFsaWRhdGlvbiBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcblxyXG4gICAgLyoqIFNvcmdlbnRlIGRhIGN1aSBzY2VnbGllcmUgdmFsb3JpIGZpbHRyYXRhIGluIGJhc2UgYSBxdWVsbG8gY2hlIGhhIHNjcml0dG8gbCd1dGVudGUgKi9cclxuICAgIEBJbnB1dCgpIEZpbHRlcmVkU291cmNlOiB7IGlkOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcgfVtdID0gW107XHJcblxyXG4gICAgLyoqIFZhbG9yZSBkZWwgbW9kZWxsbyAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIHZhbHVlOiBhbnk7XHJcblxyXG4gICAgLyoqIENvbnRlbnV0byBkZWxsYSBsYWJlbCBGbG9hdHRhbnRlIE1hdGVyaWFsLVN0eWxlICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgbGFiZWw6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gICAgLyoqIEV2ZW50byBjaGUgaW5kaWNhIGwnb3B6aW9uZSBzZWxlemlvbmF0YSBkYWwgY29tcG9uZW50ZS4gSWwgdmFsb3JlIGZpbmFsZSBkZWxsYSBzZWxlemlvbmUgZG92csOgIGVzc2VyZSBxdWVzdG8gKi9cclxuICAgIEBPdXRwdXQoKSBvcHRpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gICAgLyoqIFN1YnNjcmlwdGlvbiBkZWwgdG9vdGx0aXAgZGEgcmlwdWxpcmUgYWxsYSBkaXN0cnV6aW9uZSBkZWwgY29tcG9uZW50ZSAqL1xyXG4gICAgcHJpdmF0ZSB0b29sdGlwU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgLyoqIENvbnRyb2xsbyBlc3Bvc3RvIG90dGVudXRvIHRyYW1pdGUgaW5qZWN0b3IgKi9cclxuICAgIHByaXZhdGUgcGFyZW50Q29udHJvbDogRm9ybUNvbnRyb2w7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoTkdfVkFMSURBVE9SUykgcHJpdmF0ZSBfdmFsaWRhdG9yczogQXJyYXk8YW55PiwgQE9wdGlvbmFsKCkgQEluamVjdChOR19BU1lOQ19WQUxJREFUT1JTKSBwcml2YXRlIF9hc3luY1ZhbGlkYXRvcnM6IEFycmF5PGFueT4sIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLCBwcm90ZWN0ZWQgbGM6IExvY2FsaXphdGlvblNlcnZpY2UpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLnJlZ2lzdGVyRm9jdXNSZXF1ZXN0KCk7XHJcblxyXG4gICAgICAgIC8vY29udHJvbGxvIHNlIMOoIHNldHRhdG8gdW4gcmVxdWlyZWQgcGVyIGRlY2lkZXJlIGluIG1hbmllcmEgY29uZGl6aW9uYWxlIHNlIHV0aWxpenphcmUgaWwgdmFsaWRhdG9yZSByZXF1aXJlZCBuZWwgY29tcG9uZW50ZSBpbnRlcm5vXHJcbiAgICAgICAgaWYgKHRoaXMuX3ZhbGlkYXRvcnMgJiYgIXRoaXMubm9WYWxpZGF0ZSAmJiB0aGlzLl92YWxpZGF0b3JzLnNvbWUoZWxlbSA9PiBlbGVtIGluc3RhbmNlb2YgUmVxdWlyZWRWYWxpZGF0b3IpKVxyXG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5kZXJlZ2lzdGVyRm9jdXNSZXF1ZXN0KCk7XHJcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcFN1YnNjcmlwdGlvbikgdGhpcy50b29sdGlwU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLnBvc3RCaW5kaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRvZG8gY2hlIHNpIG9jY3VwYSBkaSBjb2xsZWdhcmUgaSB2YWxpZGF0b3JpIGUgbGEgZnVuemlvbmUgZGkgcmVzZXQgZGFsICoqQ29udHJvbFZhbHVlQWNjZXNzb3IqKiByYXBwcmVzZW50YXRvIFxyXG4gICAgICogZGEgcXVlc3RvIGNvbXBvbmVudGUgYWwgKipDb250cm9sVmFsdWVBY2Nlc3NvcioqIHJhcHByZXNlbnRhdG8gZGFsbCdlZmZldHRpdm8gZWxlbWVudG8gZGkgSW5wdXQgcHJlc2VudGUgbGF0byBIVE1MXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcG9zdEJpbmRpbmcoKSB7XHJcbiAgICAgICAgdGhpcy5DaGVja1ZhbGlkaXR5KCk7XHJcbiAgICAgICAgY29uc3QgbmdDb250cm9sOiBOZ0NvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wsIG51bGwpO1xyXG4gICAgICAgIGlmIChuZ0NvbnRyb2wpIHtcclxuICAgICAgICAgICAgdGhpcy5wYXJlbnRDb250cm9sID0gbmdDb250cm9sLmNvbnRyb2wgYXMgRm9ybUNvbnRyb2w7XHJcblxyXG4gICAgICAgICAgICAvL3NlIGxhIHZhcmlhYmlsZSBub3ZhbGlkYXRlIMOoIHRydWUsIGVsaW1pbm8gdHV0dGkgaSB2YWxpZGF0b3JpIGV2ZW50dWFsbWVudGUgaW5zZXJpdGlcclxuICAgICAgICAgICAgaWYgKHRoaXMubm9WYWxpZGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRDb250cm9sLmNsZWFyQXN5bmNWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJhc2VJbnB1dC5jb250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyh0aGlzLl9hc3luY1ZhbGlkYXRvcnMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5iYXNlSW5wdXQuY29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMuX3ZhbGlkYXRvcnMpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvL2ZhY2NpbyBpbiBtb2RvIGNoZSBzZSBjaGlhbW8gaWwgcmVzZXQgZGVsIGNvbnRyb2xsbyAobyBkZWxsYSBmb3JtKSBkYWxsJ2VzdGVybm8gc2kgcmVzZXR0aSBhbmNoZSBpbCBjb250cm9sbG8gbmF0aXZvXHJcbiAgICAgICAgICAgIGNvbnN0IG9yaWdGdW5jID0gdGhpcy5wYXJlbnRDb250cm9sLnJlc2V0O1xyXG4gICAgICAgICAgICB0aGlzLnBhcmVudENvbnRyb2wucmVzZXQgPSAoKSA9PiB7IC8vZmFjY2lvIGluIG1vZG8gY2hlIHNlIGNoaWFtbyBpbCByZXNldCBkZWwgY29udHJvbGxvIChvIGRlbGxhIGZvcm0pIGRhbGwnZXN0ZXJubyBzaSByZXNldHRpIGFuY2hlIGlsIGNvbnRyb2xsbyBuYXRpdm9cclxuICAgICAgICAgICAgICAgIG9yaWdGdW5jLmFwcGx5KHRoaXMucGFyZW50Q29udHJvbCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJhc2VJbnB1dC5jb250cm9sLnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXAuaGlkZSgpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBvblRvdWNoZWQgPSAoKSA9PiB7IH07IC8vcGxhY2Vob2xkZXIgb24gdG91Y2hlZCBmdW5jdGlvblxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB2YXIgdmFsID0gdmFsdWUgJiYgdGhpcy5GaWx0ZXJlZFNvdXJjZSA/IHRoaXMuRmlsdGVyZWRTb3VyY2UuZmluZCh0ID0+IHQuaWQgPT0gdmFsdWUpIDogbnVsbDtcclxuICAgICAgICBpZih2YWwpIHRoaXMub3B0aW9uQ2hhbmdlLmVtaXQodmFsLmlkKTtcclxuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh2YWwgPyB2YWwuaWQgOiB2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbCA/IHZhbC5kZXNjcmlwdGlvbiA6IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTCdlbWl0IGRlbGxhIG1vZGlmaWNhIGFsIHZhbG9yZSB2aWVuZSBnZXN0aXRvIHN1IHVuIGV2ZW50byBjdXN0b20gKCoqaW5wdXRDaGFuZ2UqKikgY29tZSB3b3JrYXJvdW5kIGFsIG1hbGZ1bnppb25hbWVudG8gZGVsbCcqKm5nTW9kZWxDaGFuZ2UqKiBuYXRpdm9cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHthbnl9IHRvRW1pdCB2YWxvcmUgZGEgcHJvcGFnYXJlIGFsbCdlc3Rlcm5vXHJcbiAgICAgKi9cclxuICAgIG9uTW9kZWxDaGFuZ2UodG9FbWl0KSB7XHJcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKHRvRW1pdCk7XHJcbiAgICAgICAgdGhpcy5pbnB1dENoYW5nZS5lbWl0KHRvRW1pdCk7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgICB9XHJcbn0iLCI8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cInt7RmllbGRBcHBlYXJlbmNlfX1cIiBjbGFzcz1cIm1hdC1mdWxsLXdpZHRoIG1hdC1uby1ib3JkZXItdG9wIG1hdC1oZWlnaHQtZml4ZWRcIiBbc3R5bGUud2lkdGgucHhdPVwid2lkdGhQeFwiPlxyXG4gICAgPG1hdC1sYWJlbCAqbmdJZj1cImxhYmVsXCI+e3tsYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICA8aW5wdXQgbWF0SW5wdXRcclxuICAgICAgICAgICAjaHRtbElucHV0XHJcbiAgICAgICAgICAgI2Jhc2VJbnB1dD0nbmdNb2RlbCdcclxuICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgdHJpZ2dlcnM9XCJcIlxyXG4gICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiXHJcbiAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e3BsYWNlaG9sZGVyfX1cIlxyXG4gICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXHJcbiAgICAgICAgICAgbmFtZT1cInZhbC1pbnB1dFwiXHJcbiAgICAgICAgICAgaWQ9XCJ7e2lkfX1cIlxyXG4gICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIHt7Y2xhc3N9fVwiXHJcbiAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgW2NsYXNzLmNoZWNraW5nLWZpZWxkXT1cIiFub1ZhbGlkYXRlXCJcclxuICAgICAgICAgICBbdG9vbHRpcF09XCJ0b2xUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlYWRvbmx5IHx8IGRpc2FibGVkXCJcclxuICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbk1vZGVsQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgIChjbGljayk9XCJvbkZvY3VzKCRldmVudClcIlxyXG4gICAgICAgICAgIChmb2N1cyk9XCJjaGVja1Rvb2x0aXAoKTtcIlxyXG4gICAgICAgICAgIChrZXl1cCk9XCIoJGV2ZW50LmtleUNvZGUgPT0gMTMgfHwgJGV2ZW50LmtleUNvZGUgPT0gMjcpICYmIG9uRmluYWxpemUoKTtcIlxyXG4gICAgICAgICAgIChibHVyKT1cImNsb3NlVG9vbHRpcCgpOyBvbkZpbmFsaXplKCk7XCJcclxuICAgICAgICAgICA+XHJcbiAgICA8bWF0LWF1dG9jb21wbGV0ZSBhdXRvQWN0aXZlRmlyc3RPcHRpb24gI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIj5cclxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIEZpbHRlcmVkU291cmNlXCIgW3ZhbHVlXT1cIm9wdGlvbi5pZFwiPlxyXG4gICAgICAgICAgICB7e29wdGlvbi5kZXNjcmlwdGlvbn19XHJcbiAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG48L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0b2xUZW1wbGF0ZT5cclxuICAgIDxkaXYgKGNsaWNrKT1cImNsb3NlVG9vbHRpcCgpXCI+XHJcbiAgICAgICAgPHNwYW4+e3t2YWxpZGF0aW9uRmFpbGVkfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1hdXRvY29tcGxldGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvdmFsaWRhdGlvbnMvdmFsaWRhdGlvbi1hdXRvY29tcGxldGUvdmFsaWRhdGlvbi1hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvdmFsaWRhdGlvbnMvdmFsaWRhdGlvbi1hdXRvY29tcGxldGUvdmFsaWRhdGlvbi1hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBNEMsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9KLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQVksS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkssaUJBQWlCO0FBQ2pCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTlELGtDQUFrQztBQUNsQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7O0FBRXZEOztHQUVHO0FBZ0JILE1BQU0sT0FBTywrQkFBZ0MsU0FBUSxjQUFjO0lBcUIvRCxjQUFjO0lBQ2QsWUFBdUQsV0FBdUIsRUFBbUQsZ0JBQTRCLEVB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QUFNLGFBQ3BDO3dCQUNQLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRTt3QkFDN0Q7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsZ0NBQWdDLENBQUM7NEJBQzlELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKLGlCQUNjLGlCQUFpQixDQUFDLElBQUk7OzBCQXlCeEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhOzswQkFBb0MsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxtQkFBbUI7cUdBbEI5RyxjQUFjO3NCQUF0QixLQUFLO2dCQUdVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBR1UsS0FBSztzQkFBcEIsS0FBSztnQkFHSSxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVW50eXBlZEZvcm1Db250cm9sLCBOR19BU1lOQ19WQUxJREFUT1JTLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiwgTmdDb250cm9sLCBSZXF1aXJlZFZhbGlkYXRvciB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEluamVjdCwgSW5qZWN0b3IsIElucHV0LCBPcHRpb25hbCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbi8vIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuXHJcbi8vIERpcmV0dGl2ZSwgQ29tcG9uZW50aSwgTGlicmVyaWVcclxuaW1wb3J0IHsgQmFzZVZhbGlkYXRpb24gfSBmcm9tIFwiLi4vYmFzZS12YWxpZGF0aW9uXCI7XHJcbmltcG9ydCB7IEJhc2VWYWxpZGF0aW9uTG9jIH0gZnJvbSAnLi4vYmFzZS12YWxpZGF0aW9uLmxvYyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IENoYW5nZUV2ZW50IH0gZnJvbSBcIi4uLy4uL21vZGVscy9DaGFuZ2VFdmVudFwiO1xyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudGUgZGkgdmFsaWRhaXpvbmUgcGVyIGdsaSBpbnB1dCBkaSBBdXRvY29tcGxldGFtZW50b1xyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJ2YWwtYXV0b2NvbXBsZXRlXCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCJ2YWxpZGF0aW9uLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7IHByb3ZpZGU6IExvY2FsaXphdGlvblNlcnZpY2UsIHVzZUNsYXNzOiBCYXNlVmFsaWRhdGlvbkxvYyB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFZhbGlkYXRpb25BdXRvY29tcGxldGVDb21wb25lbnQpLFxyXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgIF0sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuLi92YWxpZGF0aW9uLXN0eWxlLnNjc3NcIl1cclxufSlcclxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25BdXRvY29tcGxldGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlVmFsaWRhdGlvbiBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcblxyXG4gICAgLyoqIFNvcmdlbnRlIGRhIGN1aSBzY2VnbGllcmUgdmFsb3JpIGZpbHRyYXRhIGluIGJhc2UgYSBxdWVsbG8gY2hlIGhhIHNjcml0dG8gbCd1dGVudGUgKi9cclxuICAgIEBJbnB1dCgpIEZpbHRlcmVkU291cmNlOiB7IGlkOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcgfVtdID0gW107XHJcblxyXG4gICAgLyoqIFZhbG9yZSBkZWwgbW9kZWxsbyAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIHZhbHVlOiBhbnk7XHJcblxyXG4gICAgLyoqIENvbnRlbnV0byBkZWxsYSBsYWJlbCBGbG9hdHRhbnRlIE1hdGVyaWFsLVN0eWxlICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgbGFiZWw6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gICAgLyoqIEV2ZW50byBjaGUgaW5kaWNhIGwnb3B6aW9uZSBzZWxlemlvbmF0YSBkYWwgY29tcG9uZW50ZS4gSWwgdmFsb3JlIGZpbmFsZSBkZWxsYSBzZWxlemlvbmUgZG92csOgIGVzc2VyZSBxdWVzdG8gKi9cclxuICAgIEBPdXRwdXQoKSBvcHRpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gICAgLyoqIFN1YnNjcmlwdGlvbiBkZWwgdG9vdGx0aXAgZGEgcmlwdWxpcmUgYWxsYSBkaXN0cnV6aW9uZSBkZWwgY29tcG9uZW50ZSAqL1xyXG4gICAgcHJpdmF0ZSB0b29sdGlwU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgLyoqIENvbnRyb2xsbyBlc3Bvc3RvIG90dGVudXRvIHRyYW1pdGUgaW5qZWN0b3IgKi9cclxuICAgIHByaXZhdGUgcGFyZW50Q29udHJvbDogVW50eXBlZEZvcm1Db250cm9sO1xyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KE5HX1ZBTElEQVRPUlMpIHByaXZhdGUgX3ZhbGlkYXRvcnM6IEFycmF5PGFueT4sIEBPcHRpb25hbCgpIEBJbmplY3QoTkdfQVNZTkNfVkFMSURBVE9SUykgcHJpdmF0ZSBfYXN5bmNWYWxpZGF0b3JzOiBBcnJheTxhbnk+LCBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvciwgcHJvdGVjdGVkIGxjOiBMb2NhbGl6YXRpb25TZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5yZWdpc3RlckZvY3VzUmVxdWVzdCgpO1xyXG5cclxuICAgICAgICAvL2NvbnRyb2xsbyBzZSDDqCBzZXR0YXRvIHVuIHJlcXVpcmVkIHBlciBkZWNpZGVyZSBpbiBtYW5pZXJhIGNvbmRpemlvbmFsZSBzZSB1dGlsaXp6YXJlIGlsIHZhbGlkYXRvcmUgcmVxdWlyZWQgbmVsIGNvbXBvbmVudGUgaW50ZXJub1xyXG4gICAgICAgIGlmICh0aGlzLl92YWxpZGF0b3JzICYmICF0aGlzLm5vVmFsaWRhdGUgJiYgdGhpcy5fdmFsaWRhdG9ycy5zb21lKGVsZW0gPT4gZWxlbSBpbnN0YW5jZW9mIFJlcXVpcmVkVmFsaWRhdG9yKSlcclxuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuZGVyZWdpc3RlckZvY3VzUmVxdWVzdCgpO1xyXG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBTdWJzY3JpcHRpb24pIHRoaXMudG9vbHRpcFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgdGhpcy5wb3N0QmluZGluZygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0b2RvIGNoZSBzaSBvY2N1cGEgZGkgY29sbGVnYXJlIGkgdmFsaWRhdG9yaSBlIGxhIGZ1bnppb25lIGRpIHJlc2V0IGRhbCAqKkNvbnRyb2xWYWx1ZUFjY2Vzc29yKiogcmFwcHJlc2VudGF0byBcclxuICAgICAqIGRhIHF1ZXN0byBjb21wb25lbnRlIGFsICoqQ29udHJvbFZhbHVlQWNjZXNzb3IqKiByYXBwcmVzZW50YXRvIGRhbGwnZWZmZXR0aXZvIGVsZW1lbnRvIGRpIElucHV0IHByZXNlbnRlIGxhdG8gSFRNTFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHBvc3RCaW5kaW5nKCkge1xyXG4gICAgICAgIHRoaXMuQ2hlY2tWYWxpZGl0eSgpO1xyXG4gICAgICAgIGNvbnN0IG5nQ29udHJvbDogTmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoTmdDb250cm9sLCBudWxsKTtcclxuICAgICAgICBpZiAobmdDb250cm9sKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFyZW50Q29udHJvbCA9IG5nQ29udHJvbC5jb250cm9sIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcclxuXHJcbiAgICAgICAgICAgIC8vc2UgbGEgdmFyaWFiaWxlIG5vdmFsaWRhdGUgw6ggdHJ1ZSwgZWxpbWlubyB0dXR0aSBpIHZhbGlkYXRvcmkgZXZlbnR1YWxtZW50ZSBpbnNlcml0aVxyXG4gICAgICAgICAgICBpZiAodGhpcy5ub1ZhbGlkYXRlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcmVudENvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcmVudENvbnRyb2wuY2xlYXJBc3luY1ZhbGlkYXRvcnMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmFzZUlucHV0LmNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMuX2FzeW5jVmFsaWRhdG9ycyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJhc2VJbnB1dC5jb250cm9sLnNldFZhbGlkYXRvcnModGhpcy5fdmFsaWRhdG9ycyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vZmFjY2lvIGluIG1vZG8gY2hlIHNlIGNoaWFtbyBpbCByZXNldCBkZWwgY29udHJvbGxvIChvIGRlbGxhIGZvcm0pIGRhbGwnZXN0ZXJubyBzaSByZXNldHRpIGFuY2hlIGlsIGNvbnRyb2xsbyBuYXRpdm9cclxuICAgICAgICAgICAgY29uc3Qgb3JpZ0Z1bmMgPSB0aGlzLnBhcmVudENvbnRyb2wucmVzZXQ7XHJcbiAgICAgICAgICAgIHRoaXMucGFyZW50Q29udHJvbC5yZXNldCA9ICgpID0+IHsgLy9mYWNjaW8gaW4gbW9kbyBjaGUgc2UgY2hpYW1vIGlsIHJlc2V0IGRlbCBjb250cm9sbG8gKG8gZGVsbGEgZm9ybSkgZGFsbCdlc3Rlcm5vIHNpIHJlc2V0dGkgYW5jaGUgaWwgY29udHJvbGxvIG5hdGl2b1xyXG4gICAgICAgICAgICAgICAgb3JpZ0Z1bmMuYXBwbHkodGhpcy5wYXJlbnRDb250cm9sKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmFzZUlucHV0LmNvbnRyb2wucmVzZXQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudG9vbHRpcC5oaWRlKCk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIG9uVG91Y2hlZCA9ICgpID0+IHsgfTsgLy9wbGFjZWhvbGRlciBvbiB0b3VjaGVkIGZ1bmN0aW9uXHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHZhciB2YWwgPSB2YWx1ZSAmJiB0aGlzLkZpbHRlcmVkU291cmNlID8gdGhpcy5GaWx0ZXJlZFNvdXJjZS5maW5kKHQgPT4gdC5pZCA9PSB2YWx1ZSkgOiBudWxsO1xyXG4gICAgICAgIGlmKHZhbCkgdGhpcy5vcHRpb25DaGFuZ2UuZW1pdCh2YWwuaWQpO1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHZhbCA/IHZhbC5pZCA6IHZhbHVlKTtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsID8gdmFsLmRlc2NyaXB0aW9uIDogdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMJ2VtaXQgZGVsbGEgbW9kaWZpY2EgYWwgdmFsb3JlIHZpZW5lIGdlc3RpdG8gc3UgdW4gZXZlbnRvIGN1c3RvbSAoKippbnB1dENoYW5nZSoqKSBjb21lIHdvcmthcm91bmQgYWwgbWFsZnVuemlvbmFtZW50byBkZWxsJyoqbmdNb2RlbENoYW5nZSoqIG5hdGl2b1xyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gdG9FbWl0IHZhbG9yZSBkYSBwcm9wYWdhcmUgYWxsJ2VzdGVybm9cclxuICAgICAqL1xyXG4gICAgb25Nb2RlbENoYW5nZSh0b0VtaXQsIGludGVybmFsOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgICAgICB0aGlzLndyaXRlVmFsdWUodG9FbWl0KTtcclxuICAgICAgICB0aGlzLmlucHV0Q2hhbmdlLmVtaXQobmV3IENoYW5nZUV2ZW50KGludGVybmFsLCB0b0VtaXQpKTtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICAgIH1cclxufSIsIjwhLS0gVmFsLU1vZGVsOiB7e3ZhbHVlfX0gLS0+XHJcbjxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwie3tGaWVsZEFwcGVhcmVuY2V9fVwiIGNsYXNzPVwibWF0LWZ1bGwtd2lkdGggbWF0LW5vLWJvcmRlci10b3AgbWF0LWhlaWdodC1maXhlZFwiIFtzdHlsZS53aWR0aC5weF09XCJ3aWR0aFB4XCI+XHJcbiAgICA8bWF0LWxhYmVsICpuZ0lmPVwibGFiZWxcIj57e2xhYmVsfX08L21hdC1sYWJlbD5cclxuICAgIDxpbnB1dCBtYXRJbnB1dFxyXG4gICAgICAgICAgICNodG1sSW5wdXRcclxuICAgICAgICAgICAjYmFzZUlucHV0PSduZ01vZGVsJ1xyXG4gICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICB0cmlnZ2Vycz1cIlwiXHJcbiAgICAgICAgICAgcGxhY2VtZW50PVwidG9wXCJcclxuICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7cGxhY2Vob2xkZXJ9fVwiXHJcbiAgICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcclxuICAgICAgICAgICBuYW1lPVwidmFsLWlucHV0XCJcclxuICAgICAgICAgICBpZD1cInt7aWR9fVwiXHJcbiAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wge3tjbGFzc319XCJcclxuICAgICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcclxuICAgICAgICAgICBbY2xhc3MuY2hlY2tpbmctZmllbGRdPVwiIW5vVmFsaWRhdGVcIlxyXG4gICAgICAgICAgIFt0b29sdGlwXT1cInRvbFRlbXBsYXRlXCJcclxuICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVhZG9ubHkgfHwgZGlzYWJsZWRcIlxyXG4gICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uTW9kZWxDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgKGNsaWNrKT1cIm9uRm9jdXMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgKGZvY3VzKT1cImNoZWNrVG9vbHRpcCgpO1wiXHJcbiAgICAgICAgICAgKGtleXVwKT1cIigkZXZlbnQua2V5Q29kZSA9PSAxMyB8fCAkZXZlbnQua2V5Q29kZSA9PSAyNykgJiYgb25GaW5hbGl6ZSgpO1wiXHJcbiAgICAgICAgICAgKGJsdXIpPVwiY2xvc2VUb29sdGlwKCk7IG9uRmluYWxpemUoKTtcIj5cclxuXHJcbiAgICA8bWF0LWF1dG9jb21wbGV0ZSBhdXRvQWN0aXZlRmlyc3RPcHRpb24gI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIj5cclxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIEZpbHRlcmVkU291cmNlXCIgW3ZhbHVlXT1cIm9wdGlvbi5pZFwiPlxyXG4gICAgICAgICAgICB7e29wdGlvbi5kZXNjcmlwdGlvbn19XHJcbiAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG48L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0b2xUZW1wbGF0ZT5cclxuICAgIDxkaXYgKGNsaWNrKT1cImNsb3NlVG9vbHRpcCgpXCI+XHJcbiAgICAgICAgPHNwYW4+e3t2YWxpZGF0aW9uRmFpbGVkfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
@@ -1,24 +1,25 @@
1
1
  // Angular
2
2
  import { NG_ASYNC_VALIDATORS, NG_VALIDATORS, NG_VALUE_ACCESSOR, NgControl, RequiredValidator } from "@angular/forms";
3
3
  import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Inject, Input, Optional, Output, ViewChild, ViewEncapsulation } from "@angular/core";
4
+ import { MatAutocompleteTrigger } from "@angular/material/autocomplete";
4
5
  // Configurazioni
5
6
  import { LocalizationService } from "@esfaenza/localizations";
6
7
  // Direttive, Componenti, Librerie
7
8
  import { BaseValidation } from "../base-validation";
8
9
  import { BaseValidationLoc } from '../base-validation.loc';
9
- import { MatAutocompleteTrigger } from "@angular/material/autocomplete";
10
+ import { ChangeEvent } from "../../models/ChangeEvent";
10
11
  import * as i0 from "@angular/core";
11
12
  import * as i1 from "@esfaenza/localizations";
12
- import * as i2 from "@angular/material/form-field";
13
- import * as i3 from "@angular/material/chips";
14
- import * as i4 from "@angular/material/icon";
15
- import * as i5 from "@angular/material/autocomplete";
16
- import * as i6 from "@angular/material/core";
17
- import * as i7 from "@angular/material/checkbox";
18
- import * as i8 from "@angular/common";
19
- import * as i9 from "@angular/material/input";
20
- import * as i10 from "@angular/forms";
21
- import * as i11 from "ngx-bootstrap/tooltip";
13
+ import * as i2 from "@angular/common";
14
+ import * as i3 from "@angular/forms";
15
+ import * as i4 from "@angular/material/form-field";
16
+ import * as i5 from "@angular/material/input";
17
+ import * as i6 from "@angular/material/chips";
18
+ import * as i7 from "@angular/material/icon";
19
+ import * as i8 from "@angular/material/checkbox";
20
+ import * as i9 from "ngx-bootstrap/tooltip";
21
+ import * as i10 from "@angular/material/autocomplete";
22
+ import * as i11 from "@angular/material/core";
22
23
  /**
23
24
  * Componente di validaizone per gli input di Autocompletamento
24
25
  */
@@ -37,6 +38,8 @@ export class ValidationAutocompleteMultiComponent extends BaseValidation {
37
38
  this.FilteredSource = [];
38
39
  /** Contenuto della label Floattante Material-Style */
39
40
  this.label = "";
41
+ /** Definisce che ad ogni selezione deve chiudere la tendina */
42
+ this.HideChoicesOnSelection = false;
40
43
  /** Evento che indica l'opzione selezionata dal componente. Il valore finale della selezione dovrà essere questo */
41
44
  this.optionChange = new EventEmitter();
42
45
  /** Elementi selezionati */
@@ -111,10 +114,10 @@ export class ValidationAutocompleteMultiComponent extends BaseValidation {
111
114
  *
112
115
  * @param {any} toEmit valore da propagare all'esterno
113
116
  */
114
- onModelChange(toEmit, finalValue = false) {
117
+ onModelChange(toEmit, finalValue = false, internal = false) {
115
118
  this.writeValue(toEmit, finalValue);
116
119
  if (!finalValue)
117
- this.inputChange.emit(toEmit);
120
+ this.inputChange.emit(new ChangeEvent(internal, toEmit));
118
121
  this.onTouched();
119
122
  }
120
123
  /** @ignore */
@@ -147,22 +150,29 @@ export class ValidationAutocompleteMultiComponent extends BaseValidation {
147
150
  const i = this.selectData.findIndex(value => value.id === data.id);
148
151
  this.selectData.splice(i, 1);
149
152
  }
150
- this.value = null;
151
153
  this.onModelChange(this.selectData.map(t => t.id).join(','), true);
154
+ if (this.HideChoicesOnSelection)
155
+ this.htmlInput.nativeElement.value = "";
156
+ else {
157
+ this.autoTrigger.closePanel();
158
+ requestAnimationFrame(() => {
159
+ this.autoTrigger.openPanel();
160
+ });
161
+ }
152
162
  this.onFinalize();
153
163
  }
154
164
  ;
155
165
  }
156
- ValidationAutocompleteMultiComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ValidationAutocompleteMultiComponent, deps: [{ token: NG_VALIDATORS, optional: true }, { token: NG_ASYNC_VALIDATORS, optional: true }, { token: i0.Injector }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
157
- ValidationAutocompleteMultiComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ValidationAutocompleteMultiComponent, selector: "val-autocomplete-multi", inputs: { ChipThreshold: "ChipThreshold", FilteredSource: "FilteredSource", value: "value", label: "label" }, outputs: { optionChange: "optionChange" }, providers: [
166
+ ValidationAutocompleteMultiComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ValidationAutocompleteMultiComponent, deps: [{ token: NG_VALIDATORS, optional: true }, { token: NG_ASYNC_VALIDATORS, optional: true }, { token: i0.Injector }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
167
+ ValidationAutocompleteMultiComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ValidationAutocompleteMultiComponent, selector: "val-autocomplete-multi", inputs: { ChipThreshold: "ChipThreshold", FilteredSource: "FilteredSource", value: "value", label: "label", HideChoicesOnSelection: "HideChoicesOnSelection" }, outputs: { optionChange: "optionChange" }, providers: [
158
168
  { provide: LocalizationService, useClass: BaseValidationLoc },
159
169
  {
160
170
  provide: NG_VALUE_ACCESSOR,
161
171
  useExisting: forwardRef(() => ValidationAutocompleteMultiComponent),
162
172
  multi: true
163
173
  }
164
- ], viewQueries: [{ propertyName: "autoTrigger", first: true, predicate: MatAutocompleteTrigger, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <mat-chip-list #chipList>\r\n <ng-container *ngIf=\"selectData.length < ChipThreshold\" >\r\n <mat-chip *ngFor=\"let select of selectData\" class=\"cardinal-colors\" (click)=\"!(readonly || disabled) && removeChip(select)\">\r\n {{ select.description }}\r\n <mat-icon class=\"mat-chip-remove\">cancel</mat-icon>\r\n </mat-chip>\r\n </ng-container>\r\n\r\n <mat-chip *ngIf=\"selectData.length >= ChipThreshold\" class=\"cardinal-colors\" (click)=\"!(readonly || disabled) && removeChip(null)\">\r\n {{ selectData.length }} {{ 'Elements selected' | localize: lc }}\r\n <mat-icon class=\"mat-chip-remove\">cancel</mat-icon>\r\n </mat-chip>\r\n \r\n <input matInput\r\n [matChipInputFor]=\"chipList\"\r\n #htmlInput\r\n #baseInput='ngModel'\r\n type=\"text\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n [placeholder]=\"placeholder\"\r\n [matAutocomplete]=\"auto\"\r\n name=\"val-input\"\r\n id=\"{{id}}\"\r\n [(ngModel)]=\"value\"\r\n [tooltip]=\"tolTemplate\"\r\n [disabled]=\"readonly || disabled\"\r\n (ngModelChange)=\"onModelChange($event)\"\r\n (click)=\"onFocus($event)\"\r\n (focus)=\"checkTooltip();\"\r\n (blur)=\"closeTooltip();\">\r\n </mat-chip-list>\r\n\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayFn\">\r\n <mat-option *ngFor=\"let data of FilteredSource\">\r\n <div (click)=\"toggleSelection(data); $event.stopPropagation()\">\r\n <mat-checkbox [checked]=\"data.selected\" (change)=\"toggleSelection(data);\" (click)=\"$event.stopPropagation()\">\r\n {{ data.description }}\r\n </mat-checkbox>\r\n </div>\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div (click)=\"closeTooltip()\">\r\n <span>{{validationFailed}}</span>\r\n </div>\r\n</ng-template>", styles: [".tooltip-inner{background-color:#842a30;color:#fff;font-size:12px;width:max-content}.tooltip{margin:auto auto auto 20%!important}.tooltip-inner{background-color:#842a30!important;color:#fff}.tooltip.top .tooltip-arrow:before,.tooltip.top .tooltip-arrow{border-top-color:#842a30}.close-button{position:absolute;right:0em;top:-.2em;float:right;font-size:16px;font-weight:700;color:inherit;text-shadow:0 1px 0 #fff;opacity:.5}.close-button:hover,.close-button:focus{text-decoration:none;cursor:pointer;opacity:.75}\n"], components: [{ type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3.MatChipList, selector: "mat-chip-list", inputs: ["errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatLabel, selector: "mat-label" }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i3.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i10.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: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i11.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }], pipes: { "localize": i1.LocalizePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
165
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ValidationAutocompleteMultiComponent, decorators: [{
174
+ ], viewQueries: [{ propertyName: "autoTrigger", first: true, predicate: MatAutocompleteTrigger, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <mat-chip-list #chipList>\r\n <ng-container *ngIf=\"selectData.length < ChipThreshold\" >\r\n <mat-chip *ngFor=\"let select of selectData\" class=\"cardinal-colors\" (click)=\"!(readonly || disabled) && removeChip(select)\">\r\n {{ select.description }}\r\n <mat-icon class=\"mat-chip-remove\">cancel</mat-icon>\r\n </mat-chip>\r\n </ng-container>\r\n\r\n <mat-chip *ngIf=\"selectData.length >= ChipThreshold\" class=\"cardinal-colors\" (click)=\"!(readonly || disabled) && removeChip(null)\">\r\n {{ selectData.length }} {{ 'Elements selected' | localize: lc }}\r\n <mat-icon class=\"mat-chip-remove\">cancel</mat-icon>\r\n </mat-chip>\r\n\r\n <input matInput\r\n [matChipInputFor]=\"chipList\"\r\n #htmlInput\r\n #baseInput='ngModel'\r\n type=\"text\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n [placeholder]=\"placeholder\"\r\n [matAutocomplete]=\"auto\"\r\n name=\"val-input\"\r\n id=\"{{id}}\"\r\n [(ngModel)]=\"value\"\r\n [tooltip]=\"tolTemplate\"\r\n [disabled]=\"readonly || disabled\"\r\n (ngModelChange)=\"onModelChange($event)\"\r\n (click)=\"onFocus($event)\"\r\n (focus)=\"checkTooltip();\"\r\n (blur)=\"closeTooltip();\">\r\n </mat-chip-list>\r\n\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayFn\">\r\n <mat-option *ngFor=\"let data of FilteredSource\">\r\n <div (click)=\"toggleSelection(data); !HideChoicesOnSelection && $event.stopPropagation()\">\r\n <mat-checkbox [checked]=\"data.selected\" (change)=\"toggleSelection(data);\" (click)=\"!HideChoicesOnSelection && $event.stopPropagation()\">\r\n {{ data.description }}\r\n </mat-checkbox>\r\n </div>\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div (click)=\"closeTooltip()\">\r\n <span>{{validationFailed}}</span>\r\n </div>\r\n</ng-template>", styles: [".tooltip-inner{background-color:#842a30;color:#fff;font-size:12px;width:max-content}.tooltip{margin:auto auto auto 20%!important}.tooltip-inner{background-color:#842a30!important;color:#fff}.tooltip.top .tooltip-arrow:before,.tooltip.top .tooltip-arrow{border-top-color:#842a30}.close-button{position:absolute;right:0;top:-.2em;float:right;font-size:16px;font-weight:700;color:inherit;text-shadow:0 1px 0 #fff;opacity:.5}.close-button:hover,.close-button:focus{text-decoration:none;cursor:pointer;opacity:.75}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatChipList, selector: "mat-chip-list", inputs: ["errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { kind: "directive", type: i6.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { kind: "directive", type: i6.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i9.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "component", type: i10.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i10.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i11.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "pipe", type: i1.LocalizePipe, name: "localize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
175
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ValidationAutocompleteMultiComponent, decorators: [{
166
176
  type: Component,
167
177
  args: [{ selector: "val-autocomplete-multi", changeDetection: ChangeDetectionStrategy.OnPush, providers: [
168
178
  { provide: LocalizationService, useClass: BaseValidationLoc },
@@ -171,7 +181,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
171
181
  useExisting: forwardRef(() => ValidationAutocompleteMultiComponent),
172
182
  multi: true
173
183
  }
174
- ], encapsulation: ViewEncapsulation.None, template: "<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <mat-chip-list #chipList>\r\n <ng-container *ngIf=\"selectData.length < ChipThreshold\" >\r\n <mat-chip *ngFor=\"let select of selectData\" class=\"cardinal-colors\" (click)=\"!(readonly || disabled) && removeChip(select)\">\r\n {{ select.description }}\r\n <mat-icon class=\"mat-chip-remove\">cancel</mat-icon>\r\n </mat-chip>\r\n </ng-container>\r\n\r\n <mat-chip *ngIf=\"selectData.length >= ChipThreshold\" class=\"cardinal-colors\" (click)=\"!(readonly || disabled) && removeChip(null)\">\r\n {{ selectData.length }} {{ 'Elements selected' | localize: lc }}\r\n <mat-icon class=\"mat-chip-remove\">cancel</mat-icon>\r\n </mat-chip>\r\n \r\n <input matInput\r\n [matChipInputFor]=\"chipList\"\r\n #htmlInput\r\n #baseInput='ngModel'\r\n type=\"text\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n [placeholder]=\"placeholder\"\r\n [matAutocomplete]=\"auto\"\r\n name=\"val-input\"\r\n id=\"{{id}}\"\r\n [(ngModel)]=\"value\"\r\n [tooltip]=\"tolTemplate\"\r\n [disabled]=\"readonly || disabled\"\r\n (ngModelChange)=\"onModelChange($event)\"\r\n (click)=\"onFocus($event)\"\r\n (focus)=\"checkTooltip();\"\r\n (blur)=\"closeTooltip();\">\r\n </mat-chip-list>\r\n\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayFn\">\r\n <mat-option *ngFor=\"let data of FilteredSource\">\r\n <div (click)=\"toggleSelection(data); $event.stopPropagation()\">\r\n <mat-checkbox [checked]=\"data.selected\" (change)=\"toggleSelection(data);\" (click)=\"$event.stopPropagation()\">\r\n {{ data.description }}\r\n </mat-checkbox>\r\n </div>\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div (click)=\"closeTooltip()\">\r\n <span>{{validationFailed}}</span>\r\n </div>\r\n</ng-template>", styles: [".tooltip-inner{background-color:#842a30;color:#fff;font-size:12px;width:max-content}.tooltip{margin:auto auto auto 20%!important}.tooltip-inner{background-color:#842a30!important;color:#fff}.tooltip.top .tooltip-arrow:before,.tooltip.top .tooltip-arrow{border-top-color:#842a30}.close-button{position:absolute;right:0em;top:-.2em;float:right;font-size:16px;font-weight:700;color:inherit;text-shadow:0 1px 0 #fff;opacity:.5}.close-button:hover,.close-button:focus{text-decoration:none;cursor:pointer;opacity:.75}\n"] }]
184
+ ], encapsulation: ViewEncapsulation.None, template: "<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <mat-chip-list #chipList>\r\n <ng-container *ngIf=\"selectData.length < ChipThreshold\" >\r\n <mat-chip *ngFor=\"let select of selectData\" class=\"cardinal-colors\" (click)=\"!(readonly || disabled) && removeChip(select)\">\r\n {{ select.description }}\r\n <mat-icon class=\"mat-chip-remove\">cancel</mat-icon>\r\n </mat-chip>\r\n </ng-container>\r\n\r\n <mat-chip *ngIf=\"selectData.length >= ChipThreshold\" class=\"cardinal-colors\" (click)=\"!(readonly || disabled) && removeChip(null)\">\r\n {{ selectData.length }} {{ 'Elements selected' | localize: lc }}\r\n <mat-icon class=\"mat-chip-remove\">cancel</mat-icon>\r\n </mat-chip>\r\n\r\n <input matInput\r\n [matChipInputFor]=\"chipList\"\r\n #htmlInput\r\n #baseInput='ngModel'\r\n type=\"text\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n [placeholder]=\"placeholder\"\r\n [matAutocomplete]=\"auto\"\r\n name=\"val-input\"\r\n id=\"{{id}}\"\r\n [(ngModel)]=\"value\"\r\n [tooltip]=\"tolTemplate\"\r\n [disabled]=\"readonly || disabled\"\r\n (ngModelChange)=\"onModelChange($event)\"\r\n (click)=\"onFocus($event)\"\r\n (focus)=\"checkTooltip();\"\r\n (blur)=\"closeTooltip();\">\r\n </mat-chip-list>\r\n\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayFn\">\r\n <mat-option *ngFor=\"let data of FilteredSource\">\r\n <div (click)=\"toggleSelection(data); !HideChoicesOnSelection && $event.stopPropagation()\">\r\n <mat-checkbox [checked]=\"data.selected\" (change)=\"toggleSelection(data);\" (click)=\"!HideChoicesOnSelection && $event.stopPropagation()\">\r\n {{ data.description }}\r\n </mat-checkbox>\r\n </div>\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div (click)=\"closeTooltip()\">\r\n <span>{{validationFailed}}</span>\r\n </div>\r\n</ng-template>", styles: [".tooltip-inner{background-color:#842a30;color:#fff;font-size:12px;width:max-content}.tooltip{margin:auto auto auto 20%!important}.tooltip-inner{background-color:#842a30!important;color:#fff}.tooltip.top .tooltip-arrow:before,.tooltip.top .tooltip-arrow{border-top-color:#842a30}.close-button{position:absolute;right:0;top:-.2em;float:right;font-size:16px;font-weight:700;color:inherit;text-shadow:0 1px 0 #fff;opacity:.5}.close-button:hover,.close-button:focus{text-decoration:none;cursor:pointer;opacity:.75}\n"] }]
175
185
  }], ctorParameters: function () { return [{ type: Array, decorators: [{
176
186
  type: Optional
177
187
  }, {
@@ -190,10 +200,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
190
200
  type: Input
191
201
  }], label: [{
192
202
  type: Input
203
+ }], HideChoicesOnSelection: [{
204
+ type: Input
193
205
  }], optionChange: [{
194
206
  type: Output
195
207
  }], autoTrigger: [{
196
208
  type: ViewChild,
197
209
  args: [MatAutocompleteTrigger]
198
210
  }] } });
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1hdXRvY29tcGxldGUtbXVsdGkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvdmFsaWRhdGlvbnMvdmFsaWRhdGlvbi1hdXRvY29tcGxldGUtbXVsdGkvdmFsaWRhdGlvbi1hdXRvY29tcGxldGUtbXVsdGkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvdmFsaWRhdGlvbnMvdmFsaWRhdGlvbi1hdXRvY29tcGxldGUtbXVsdGkvdmFsaWRhdGlvbi1hdXRvY29tcGxldGUtbXVsdGkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBcUMsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hKLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQVksS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQWlCLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyTCxpQkFBaUI7QUFDakIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsa0NBQWtDO0FBQ2xDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUV4RTs7R0FFRztBQWdCSCxNQUFNLE9BQU8sb0NBQXFDLFNBQVEsY0FB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Q2Q7cUJBQ0osaUJBQ2MsaUJBQWlCLENBQUMsSUFBSTswREFtQytCLEtBQUs7MEJBQTVELFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsYUFBYTs4QkFBc0csS0FBSzswQkFBdkUsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxtQkFBbUI7cUdBM0I5RyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR1UsS0FBSztzQkFBcEIsS0FBSztnQkFHVSxLQUFLO3NCQUFwQixLQUFLO2dCQUdJLFlBQVk7c0JBQXJCLE1BQU07Z0JBRzRCLFdBQVc7c0JBQTdDLFNBQVM7dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5HX0FTWU5DX1ZBTElEQVRPUlMsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBOZ0NvbnRyb2wsIFJlcXVpcmVkVmFsaWRhdG9yIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSW5qZWN0LCBJbmplY3RvciwgSW5wdXQsIE9wdGlvbmFsLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLy8gQ29uZmlndXJhemlvbmlcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5cclxuLy8gRGlyZXR0aXZlLCBDb21wb25lbnRpLCBMaWJyZXJpZVxyXG5pbXBvcnQgeyBCYXNlVmFsaWRhdGlvbiB9IGZyb20gXCIuLi9iYXNlLXZhbGlkYXRpb25cIjtcclxuaW1wb3J0IHsgQmFzZVZhbGlkYXRpb25Mb2MgfSBmcm9tICcuLi9iYXNlLXZhbGlkYXRpb24ubG9jJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGVcIjtcclxuXHJcbi8qKlxyXG4gKiBDb21wb25lbnRlIGRpIHZhbGlkYWl6b25lIHBlciBnbGkgaW5wdXQgZGkgQXV0b2NvbXBsZXRhbWVudG9cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwidmFsLWF1dG9jb21wbGV0ZS1tdWx0aVwiLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwidmFsaWRhdGlvbi1hdXRvY29tcGxldGUtbXVsdGkuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgeyBwcm92aWRlOiBMb2NhbGl6YXRpb25TZXJ2aWNlLCB1c2VDbGFzczogQmFzZVZhbGlkYXRpb25Mb2MgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBWYWxpZGF0aW9uQXV0b2NvbXBsZXRlTXVsdGlDb21wb25lbnQpLFxyXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgIF0sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuLi92YWxpZGF0aW9uLXN0eWxlLnNjc3NcIl1cclxufSlcclxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25BdXRvY29tcGxldGVNdWx0aUNvbXBvbmVudCBleHRlbmRzIEJhc2VWYWxpZGF0aW9uIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICAgIHB1YmxpYyBkaXNwbGF5Rm4gPSAoKTogc3RyaW5nID0+ICcnO1xyXG5cclxuICAgIC8qKiBOdW1lcm8gbWFzc2ltbyBkaSBjaGlwIHZpc3VhbGl6emF0ZSAqL1xyXG4gICAgQElucHV0KCkgQ2hpcFRocmVzaG9sZDogbnVtYmVyID0gMTA7XHJcblxyXG4gICAgLyoqIFNvcmdlbnRlIGRhIGN1aSBzY2VnbGllcmUgdmFsb3JpIGZpbHRyYXRhIGluIGJhc2UgYSBxdWVsbG8gY2hlIGhhIHNjcml0dG8gbCd1dGVudGUgKi9cclxuICAgIEBJbnB1dCgpIEZpbHRlcmVkU291cmNlOiB7IGlkOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcgfVtdID0gW107XHJcblxyXG4gICAgLyoqIFZhbG9yZSBkZWwgbW9kZWxsbyAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIHZhbHVlOiBhbnk7XHJcblxyXG4gICAgLyoqIENvbnRlbnV0byBkZWxsYSBsYWJlbCBGbG9hdHRhbnRlIE1hdGVyaWFsLVN0eWxlICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgbGFiZWw6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gICAgLyoqIEV2ZW50byBjaGUgaW5kaWNhIGwnb3B6aW9uZSBzZWxlemlvbmF0YSBkYWwgY29tcG9uZW50ZS4gSWwgdmFsb3JlIGZpbmFsZSBkZWxsYSBzZWxlemlvbmUgZG92csOgIGVzc2VyZSBxdWVzdG8gKi9cclxuICAgIEBPdXRwdXQoKSBvcHRpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gICAgLyoqIFRyaWdnZXIgZGVsbCdhdXRvY29tcGxldGUgcGVyIHRlbmVybG8gYXBlcnRvICovXHJcbiAgICBAVmlld0NoaWxkKE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIpIGF1dG9UcmlnZ2VyOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyO1xyXG4gICAgXHJcbiAgICAvKiogU3Vic2NyaXB0aW9uIGRlbCB0b290bHRpcCBkYSByaXB1bGlyZSBhbGxhIGRpc3RydXppb25lIGRlbCBjb21wb25lbnRlICovXHJcbiAgICBwcml2YXRlIHRvb2x0aXBTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgICAvKiogQ29udHJvbGxvIGVzcG9zdG8gb3R0ZW51dG8gdHJhbWl0ZSBpbmplY3RvciAqL1xyXG4gICAgcHJpdmF0ZSBwYXJlbnRDb250cm9sOiBGb3JtQ29udHJvbDtcclxuXHJcbiAgICAvKiogRWxlbWVudGkgc2VsZXppb25hdGkgKi9cclxuICAgIHB1YmxpYyBzZWxlY3REYXRhOiB7IGlkOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcgfVtdID0gW107XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoTkdfVkFMSURBVE9SUykgcHJpdmF0ZSBfdmFsaWRhdG9yczogQXJyYXk8YW55PiwgQE9wdGlvbmFsKCkgQEluamVjdChOR19BU1lOQ19WQUxJREFUT1JTKSBwcml2YXRlIF9hc3luY1ZhbGlkYXRvcnM6IEFycmF5PGFueT4sIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLCBwdWJsaWMgbGM6IExvY2FsaXphdGlvblNlcnZpY2UpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLnJlZ2lzdGVyRm9jdXNSZXF1ZXN0KCk7XHJcblxyXG4gICAgICAgIC8vY29udHJvbGxvIHNlIMOoIHNldHRhdG8gdW4gcmVxdWlyZWQgcGVyIGRlY2lkZXJlIGluIG1hbmllcmEgY29uZGl6aW9uYWxlIHNlIHV0aWxpenphcmUgaWwgdmFsaWRhdG9yZSByZXF1aXJlZCBuZWwgY29tcG9uZW50ZSBpbnRlcm5vXHJcbiAgICAgICAgaWYgKHRoaXMuX3ZhbGlkYXRvcnMgJiYgIXRoaXMubm9WYWxpZGF0ZSAmJiB0aGlzLl92YWxpZGF0b3JzLnNvbWUoZWxlbSA9PiBlbGVtIGluc3RhbmNlb2YgUmVxdWlyZWRWYWxpZGF0b3IpKVxyXG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5kZXJlZ2lzdGVyRm9jdXNSZXF1ZXN0KCk7XHJcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcFN1YnNjcmlwdGlvbikgdGhpcy50b29sdGlwU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLnBvc3RCaW5kaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEluIGNhc28gYXJyaXZpIHVuYSBudW92YSBzb3JnZW50ZSBkZXZvIHJlaW1wb3N0YXJlIGxvIHN0YXRvIGRpIHNlbGV6aW9uZSBjb24gcXVlbGxvIGF0dHVhbGUgKi9cclxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAgICAgbGV0IG5ld1NvdXJjZSA9IGNoYW5nZXNbXCJGaWx0ZXJlZFNvdXJjZVwiXTtcclxuICAgICAgICBpZiAoIW5ld1NvdXJjZSB8fCBuZXdTb3VyY2UuZmlyc3RDaGFuZ2UpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLkZpbHRlcmVkU291cmNlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtID0gdGhpcy5GaWx0ZXJlZFNvdXJjZVtpXTtcclxuICAgICAgICAgICAgKDxhbnk+aXRlbSkuc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdERhdGEuZmluZCh0ID0+IHQuaWQgPT0gaXRlbS5pZClcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRvZG8gY2hlIHNpIG9jY3VwYSBkaSBjb2xsZWdhcmUgaSB2YWxpZGF0b3JpIGUgbGEgZnVuemlvbmUgZGkgcmVzZXQgZGFsICoqQ29udHJvbFZhbHVlQWNjZXNzb3IqKiByYXBwcmVzZW50YXRvIFxyXG4gICAgICogZGEgcXVlc3RvIGNvbXBvbmVudGUgYWwgKipDb250cm9sVmFsdWVBY2Nlc3NvcioqIHJhcHByZXNlbnRhdG8gZGFsbCdlZmZldHRpdm8gZWxlbWVudG8gZGkgSW5wdXQgcHJlc2VudGUgbGF0byBIVE1MXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcG9zdEJpbmRpbmcoKSB7XHJcbiAgICAgICAgdGhpcy5DaGVja1ZhbGlkaXR5KCk7XHJcbiAgICAgICAgY29uc3QgbmdDb250cm9sOiBOZ0NvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wsIG51bGwpO1xyXG4gICAgICAgIGlmIChuZ0NvbnRyb2wpIHtcclxuICAgICAgICAgICAgdGhpcy5wYXJlbnRDb250cm9sID0gbmdDb250cm9sLmNvbnRyb2wgYXMgRm9ybUNvbnRyb2w7XHJcblxyXG4gICAgICAgICAgICAvL3NlIGxhIHZhcmlhYmlsZSBub3ZhbGlkYXRlIMOoIHRydWUsIGVsaW1pbm8gdHV0dGkgaSB2YWxpZGF0b3JpIGV2ZW50dWFsbWVudGUgaW5zZXJpdGlcclxuICAgICAgICAgICAgaWYgKHRoaXMubm9WYWxpZGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRDb250cm9sLmNsZWFyQXN5bmNWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJhc2VJbnB1dC5jb250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyh0aGlzLl9hc3luY1ZhbGlkYXRvcnMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5iYXNlSW5wdXQuY29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMuX3ZhbGlkYXRvcnMpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvL2ZhY2NpbyBpbiBtb2RvIGNoZSBzZSBjaGlhbW8gaWwgcmVzZXQgZGVsIGNvbnRyb2xsbyAobyBkZWxsYSBmb3JtKSBkYWxsJ2VzdGVybm8gc2kgcmVzZXR0aSBhbmNoZSBpbCBjb250cm9sbG8gbmF0aXZvXHJcbiAgICAgICAgICAgIGNvbnN0IG9yaWdGdW5jID0gdGhpcy5wYXJlbnRDb250cm9sLnJlc2V0O1xyXG4gICAgICAgICAgICB0aGlzLnBhcmVudENvbnRyb2wucmVzZXQgPSAoKSA9PiB7IC8vZmFjY2lvIGluIG1vZG8gY2hlIHNlIGNoaWFtbyBpbCByZXNldCBkZWwgY29udHJvbGxvIChvIGRlbGxhIGZvcm0pIGRhbGwnZXN0ZXJubyBzaSByZXNldHRpIGFuY2hlIGlsIGNvbnRyb2xsbyBuYXRpdm9cclxuICAgICAgICAgICAgICAgIG9yaWdGdW5jLmFwcGx5KHRoaXMucGFyZW50Q29udHJvbCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJhc2VJbnB1dC5jb250cm9sLnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXAuaGlkZSgpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBvblRvdWNoZWQgPSAoKSA9PiB7IH07IC8vcGxhY2Vob2xkZXIgb24gdG91Y2hlZCBmdW5jdGlvblxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnksIGZpbmFsVmFsdWU6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xyXG4gICAgICAgIHZhciB2YWwgPSB2YWx1ZSAmJiB0aGlzLkZpbHRlcmVkU291cmNlID8gdGhpcy5GaWx0ZXJlZFNvdXJjZS5maW5kKHQgPT4gdC5pZCA9PSB2YWx1ZSkgOiBudWxsO1xyXG4gICAgICAgIGlmKGZpbmFsVmFsdWUpIHRoaXMub3B0aW9uQ2hhbmdlLmVtaXQodmFsdWUpO1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHZhbCA/IHZhbC5pZCA6IHZhbHVlKTtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsID8gdmFsLmRlc2NyaXB0aW9uIDogdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMJ2VtaXQgZGVsbGEgbW9kaWZpY2EgYWwgdmFsb3JlIHZpZW5lIGdlc3RpdG8gc3UgdW4gZXZlbnRvIGN1c3RvbSAoKippbnB1dENoYW5nZSoqKSBjb21lIHdvcmthcm91bmQgYWwgbWFsZnVuemlvbmFtZW50byBkZWxsJyoqbmdNb2RlbENoYW5nZSoqIG5hdGl2b1xyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gdG9FbWl0IHZhbG9yZSBkYSBwcm9wYWdhcmUgYWxsJ2VzdGVybm9cclxuICAgICAqL1xyXG4gICAgb25Nb2RlbENoYW5nZSh0b0VtaXQsIGZpbmFsVmFsdWU6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZSh0b0VtaXQsIGZpbmFsVmFsdWUpO1xyXG4gICAgICAgIGlmKCFmaW5hbFZhbHVlKVxyXG4gICAgICAgICAgICB0aGlzLmlucHV0Q2hhbmdlLmVtaXQodG9FbWl0KTtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICAvKiogUmltdW92ZSB1biBlbGVtZW50byBzZWxlemlvbmF0byAqL1xyXG4gICAgcHVibGljIHJlbW92ZUNoaXAoZGF0YTogeyBpZDogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nIH0pOiB2b2lkIHtcclxuICAgICAgICBpZiAoIWRhdGEpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3REYXRhID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuRmlsdGVyZWRTb3VyY2UuZm9yRWFjaChkYXRhID0+ICg8YW55PmRhdGEpLnNlbGVjdGVkID0gZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy5zZWxlY3REYXRhLm1hcCh0ID0+IHQuaWQpLmpvaW4oJywnKSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMub25GaW5hbGl6ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlU2VsZWN0aW9uKGRhdGEpO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKiogU2VsZXppb25hIG8gZGVzZWxlemlvbmEgdW4gb2dnZXR0byAqL1xyXG4gICAgcHVibGljIHRvZ2dsZVNlbGVjdGlvbihkYXRhOiB7IGlkOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcgfSk6IHZvaWQge1xyXG4gICAgICAgICg8YW55PmRhdGEpLnNlbGVjdGVkID0gISg8YW55PmRhdGEpLnNlbGVjdGVkO1xyXG5cclxuICAgICAgICBpZiAoKDxhbnk+ZGF0YSkuc2VsZWN0ZWQgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3REYXRhLnB1c2goZGF0YSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgaSA9IHRoaXMuc2VsZWN0RGF0YS5maW5kSW5kZXgodmFsdWUgPT4gdmFsdWUuaWQgPT09IGRhdGEuaWQpO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdERhdGEuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMuc2VsZWN0RGF0YS5tYXAodCA9PiB0LmlkKS5qb2luKCcsJyksIHRydWUpO1xyXG4gICAgICAgIHRoaXMub25GaW5hbGl6ZSgpO1xyXG4gICAgfTtcclxufSIsIjxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwie3tGaWVsZEFwcGVhcmVuY2V9fVwiIGNsYXNzPVwibWF0LWZ1bGwtd2lkdGggbWF0LW5vLWJvcmRlci10b3BcIiBbc3R5bGUud2lkdGgucHhdPVwid2lkdGhQeFwiPlxyXG4gICAgPG1hdC1sYWJlbCAqbmdJZj1cImxhYmVsXCI+e3tsYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICA8bWF0LWNoaXAtbGlzdCAjY2hpcExpc3Q+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdERhdGEubGVuZ3RoIDwgQ2hpcFRocmVzaG9sZFwiID5cclxuICAgICAgICAgICAgPG1hdC1jaGlwICpuZ0Zvcj1cImxldCBzZWxlY3Qgb2Ygc2VsZWN0RGF0YVwiIGNsYXNzPVwiY2FyZGluYWwtY29sb3JzXCIgKGNsaWNrKT1cIiEocmVhZG9ubHkgfHwgZGlzYWJsZWQpICYmIHJlbW92ZUNoaXAoc2VsZWN0KVwiPlxyXG4gICAgICAgICAgICAgICAge3sgc2VsZWN0LmRlc2NyaXB0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtY2hpcC1yZW1vdmVcIj5jYW5jZWw8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L21hdC1jaGlwPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bWF0LWNoaXAgKm5nSWY9XCJzZWxlY3REYXRhLmxlbmd0aCA+PSBDaGlwVGhyZXNob2xkXCIgY2xhc3M9XCJjYXJkaW5hbC1jb2xvcnNcIiAoY2xpY2spPVwiIShyZWFkb25seSB8fCBkaXNhYmxlZCkgJiYgcmVtb3ZlQ2hpcChudWxsKVwiPlxyXG4gICAgICAgICAgICB7eyBzZWxlY3REYXRhLmxlbmd0aCB9fSB7eyAnRWxlbWVudHMgc2VsZWN0ZWQnIHwgbG9jYWxpemU6IGxjIH19XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC1jaGlwLXJlbW92ZVwiPmNhbmNlbDwvbWF0LWljb24+XHJcbiAgICAgICAgPC9tYXQtY2hpcD5cclxuICAgIFxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dFxyXG4gICAgICAgICAgICBbbWF0Q2hpcElucHV0Rm9yXT1cImNoaXBMaXN0XCJcclxuICAgICAgICAgICAgI2h0bWxJbnB1dFxyXG4gICAgICAgICAgICAjYmFzZUlucHV0PSduZ01vZGVsJ1xyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIHRyaWdnZXJzPVwiXCJcclxuICAgICAgICAgICAgcGxhY2VtZW50PVwidG9wXCJcclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcclxuICAgICAgICAgICAgbmFtZT1cInZhbC1pbnB1dFwiXHJcbiAgICAgICAgICAgIGlkPVwie3tpZH19XCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwXT1cInRvbFRlbXBsYXRlXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlYWRvbmx5IHx8IGRpc2FibGVkXCJcclxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Nb2RlbENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRm9jdXMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChmb2N1cyk9XCJjaGVja1Rvb2x0aXAoKTtcIlxyXG4gICAgICAgICAgICAoYmx1cik9XCJjbG9zZVRvb2x0aXAoKTtcIj5cclxuICAgIDwvbWF0LWNoaXAtbGlzdD5cclxuXHJcbiAgICA8bWF0LWF1dG9jb21wbGV0ZSAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiICBbZGlzcGxheVdpdGhdPVwiZGlzcGxheUZuXCI+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGRhdGEgb2YgRmlsdGVyZWRTb3VyY2VcIj5cclxuICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwidG9nZ2xlU2VsZWN0aW9uKGRhdGEpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggW2NoZWNrZWRdPVwiZGF0YS5zZWxlY3RlZFwiIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0aW9uKGRhdGEpO1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICAgICAgICAgICAgICAgICAge3sgZGF0YS5kZXNjcmlwdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG48L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0b2xUZW1wbGF0ZT5cclxuICAgIDxkaXYgKGNsaWNrKT1cImNsb3NlVG9vbHRpcCgpXCI+XHJcbiAgICAgICAgPHNwYW4+e3t2YWxpZGF0aW9uRmFpbGVkfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1hdXRvY29tcGxldGUtbXVsdGkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvdmFsaWRhdGlvbnMvdmFsaWRhdGlvbi1hdXRvY29tcGxldGUtbXVsdGkvdmFsaWRhdGlvbi1hdXRvY29tcGxldGUtbXVsdGkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvdmFsaWRhdGlvbnMvdmFsaWRhdGlvbi1hdXRvY29tcGxldGUtbXVsdGkvdmFsaWRhdGlvbi1hdXRvY29tcGxldGUtbXVsdGkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBNEMsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9KLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQVksS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQWlCLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyTCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV4RSxpQkFBaUI7QUFDakIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsa0NBQWtDO0FBQ2xDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7Ozs7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QUMsR0FBRyxFQUFFLENBQUMsb0NBQW9DLENBQUM7WUFDbkUsS0FBSyxFQUFFLElBQUk7U0FDZDtLQUNKLHVFQTJCVSxzQkFBc0IsNEZDdkRyQyxzMUVBa0RjOzRGRGxCRCxvQ0FBb0M7a0JBZmhELFNBQVM7K0JBQ0ksd0JBQXdCLG1CQUVqQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNQLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRTt3QkFDN0Q7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUNBQXFDLENBQUM7NEJBQ25FLEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKLGlCQUNjLGlCQUFpQixDQUFDLElBQUk7OzBCQXNDeEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhOzswQkFBb0MsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxtQkFBbUI7cUdBOUI5RyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR1UsS0FBSztzQkFBcEIsS0FBSztnQkFHVSxLQUFLO3NCQUFwQixLQUFLO2dCQUdVLHNCQUFzQjtzQkFBckMsS0FBSztnQkFHSSxZQUFZO3NCQUFyQixNQUFNO2dCQUc0QixXQUFXO3NCQUE3QyxTQUFTO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFVudHlwZWRGb3JtQ29udHJvbCwgTkdfQVNZTkNfVkFMSURBVE9SUywgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIE5nQ29udHJvbCwgUmVxdWlyZWRWYWxpZGF0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBJbmplY3QsIEluamVjdG9yLCBJbnB1dCwgT3B0aW9uYWwsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9sb2NhbGl6YXRpb25zXCI7XHJcblxyXG4vLyBEaXJldHRpdmUsIENvbXBvbmVudGksIExpYnJlcmllXHJcbmltcG9ydCB7IEJhc2VWYWxpZGF0aW9uIH0gZnJvbSBcIi4uL2Jhc2UtdmFsaWRhdGlvblwiO1xyXG5pbXBvcnQgeyBCYXNlVmFsaWRhdGlvbkxvYyB9IGZyb20gJy4uL2Jhc2UtdmFsaWRhdGlvbi5sb2MnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBDaGFuZ2VFdmVudCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvQ2hhbmdlRXZlbnRcIjtcclxuXHJcbi8qKlxyXG4gKiBDb21wb25lbnRlIGRpIHZhbGlkYWl6b25lIHBlciBnbGkgaW5wdXQgZGkgQXV0b2NvbXBsZXRhbWVudG9cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwidmFsLWF1dG9jb21wbGV0ZS1tdWx0aVwiLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwidmFsaWRhdGlvbi1hdXRvY29tcGxldGUtbXVsdGkuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgeyBwcm92aWRlOiBMb2NhbGl6YXRpb25TZXJ2aWNlLCB1c2VDbGFzczogQmFzZVZhbGlkYXRpb25Mb2MgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBWYWxpZGF0aW9uQXV0b2NvbXBsZXRlTXVsdGlDb21wb25lbnQpLFxyXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgIF0sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuLi92YWxpZGF0aW9uLXN0eWxlLnNjc3NcIl1cclxufSlcclxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25BdXRvY29tcGxldGVNdWx0aUNvbXBvbmVudCBleHRlbmRzIEJhc2VWYWxpZGF0aW9uIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICAgIHB1YmxpYyBkaXNwbGF5Rm4gPSAoKTogc3RyaW5nID0+ICcnO1xyXG5cclxuICAgIC8qKiBOdW1lcm8gbWFzc2ltbyBkaSBjaGlwIHZpc3VhbGl6emF0ZSAqL1xyXG4gICAgQElucHV0KCkgQ2hpcFRocmVzaG9sZDogbnVtYmVyID0gMTA7XHJcblxyXG4gICAgLyoqIFNvcmdlbnRlIGRhIGN1aSBzY2VnbGllcmUgdmFsb3JpIGZpbHRyYXRhIGluIGJhc2UgYSBxdWVsbG8gY2hlIGhhIHNjcml0dG8gbCd1dGVudGUgKi9cclxuICAgIEBJbnB1dCgpIEZpbHRlcmVkU291cmNlOiB7IGlkOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcgfVtdID0gW107XHJcblxyXG4gICAgLyoqIFZhbG9yZSBkZWwgbW9kZWxsbyAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIHZhbHVlOiBhbnk7XHJcblxyXG4gICAgLyoqIENvbnRlbnV0byBkZWxsYSBsYWJlbCBGbG9hdHRhbnRlIE1hdGVyaWFsLVN0eWxlICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgbGFiZWw6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gICAgLyoqIERlZmluaXNjZSBjaGUgYWQgb2duaSBzZWxlemlvbmUgZGV2ZSBjaGl1ZGVyZSBsYSB0ZW5kaW5hICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgSGlkZUNob2ljZXNPblNlbGVjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBFdmVudG8gY2hlIGluZGljYSBsJ29wemlvbmUgc2VsZXppb25hdGEgZGFsIGNvbXBvbmVudGUuIElsIHZhbG9yZSBmaW5hbGUgZGVsbGEgc2VsZXppb25lIGRvdnLDoCBlc3NlcmUgcXVlc3RvICovXHJcbiAgICBAT3V0cHV0KCkgb3B0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAgIC8qKiBUcmlnZ2VyIGRlbGwnYXV0b2NvbXBsZXRlIHBlciB0ZW5lcmxvIGFwZXJ0byAqL1xyXG4gICAgQFZpZXdDaGlsZChNYXRBdXRvY29tcGxldGVUcmlnZ2VyKSBhdXRvVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcclxuICAgIFxyXG4gICAgLyoqIFN1YnNjcmlwdGlvbiBkZWwgdG9vdGx0aXAgZGEgcmlwdWxpcmUgYWxsYSBkaXN0cnV6aW9uZSBkZWwgY29tcG9uZW50ZSAqL1xyXG4gICAgcHJpdmF0ZSB0b29sdGlwU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgLyoqIENvbnRyb2xsbyBlc3Bvc3RvIG90dGVudXRvIHRyYW1pdGUgaW5qZWN0b3IgKi9cclxuICAgIHByaXZhdGUgcGFyZW50Q29udHJvbDogVW50eXBlZEZvcm1Db250cm9sO1xyXG5cclxuICAgIC8qKiBFbGVtZW50aSBzZWxlemlvbmF0aSAqL1xyXG4gICAgcHVibGljIHNlbGVjdERhdGE6IHsgaWQ6IHN0cmluZywgZGVzY3JpcHRpb246IHN0cmluZyB9W10gPSBbXTtcclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChOR19WQUxJREFUT1JTKSBwcml2YXRlIF92YWxpZGF0b3JzOiBBcnJheTxhbnk+LCBAT3B0aW9uYWwoKSBASW5qZWN0KE5HX0FTWU5DX1ZBTElEQVRPUlMpIHByaXZhdGUgX2FzeW5jVmFsaWRhdG9yczogQXJyYXk8YW55PiwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsIHB1YmxpYyBsYzogTG9jYWxpemF0aW9uU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMucmVnaXN0ZXJGb2N1c1JlcXVlc3QoKTtcclxuXHJcbiAgICAgICAgLy9jb250cm9sbG8gc2Ugw6ggc2V0dGF0byB1biByZXF1aXJlZCBwZXIgZGVjaWRlcmUgaW4gbWFuaWVyYSBjb25kaXppb25hbGUgc2UgdXRpbGl6emFyZSBpbCB2YWxpZGF0b3JlIHJlcXVpcmVkIG5lbCBjb21wb25lbnRlIGludGVybm9cclxuICAgICAgICBpZiAodGhpcy5fdmFsaWRhdG9ycyAmJiAhdGhpcy5ub1ZhbGlkYXRlICYmIHRoaXMuX3ZhbGlkYXRvcnMuc29tZShlbGVtID0+IGVsZW0gaW5zdGFuY2VvZiBSZXF1aXJlZFZhbGlkYXRvcikpXHJcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLmRlcmVnaXN0ZXJGb2N1c1JlcXVlc3QoKTtcclxuICAgICAgICBpZiAodGhpcy50b29sdGlwU3Vic2NyaXB0aW9uKSB0aGlzLnRvb2x0aXBTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIHRoaXMucG9zdEJpbmRpbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogSW4gY2FzbyBhcnJpdmkgdW5hIG51b3ZhIHNvcmdlbnRlIGRldm8gcmVpbXBvc3RhcmUgbG8gc3RhdG8gZGkgc2VsZXppb25lIGNvbiBxdWVsbG8gYXR0dWFsZSAqL1xyXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICBsZXQgbmV3U291cmNlID0gY2hhbmdlc1tcIkZpbHRlcmVkU291cmNlXCJdO1xyXG4gICAgICAgIGlmICghbmV3U291cmNlIHx8IG5ld1NvdXJjZS5maXJzdENoYW5nZSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuRmlsdGVyZWRTb3VyY2UubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGl0ZW0gPSB0aGlzLkZpbHRlcmVkU291cmNlW2ldO1xyXG4gICAgICAgICAgICAoPGFueT5pdGVtKS5zZWxlY3RlZCA9IHRoaXMuc2VsZWN0RGF0YS5maW5kKHQgPT4gdC5pZCA9PSBpdGVtLmlkKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBjaGUgc2kgb2NjdXBhIGRpIGNvbGxlZ2FyZSBpIHZhbGlkYXRvcmkgZSBsYSBmdW56aW9uZSBkaSByZXNldCBkYWwgKipDb250cm9sVmFsdWVBY2Nlc3NvcioqIHJhcHByZXNlbnRhdG8gXHJcbiAgICAgKiBkYSBxdWVzdG8gY29tcG9uZW50ZSBhbCAqKkNvbnRyb2xWYWx1ZUFjY2Vzc29yKiogcmFwcHJlc2VudGF0byBkYWxsJ2VmZmV0dGl2byBlbGVtZW50byBkaSBJbnB1dCBwcmVzZW50ZSBsYXRvIEhUTUxcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBwb3N0QmluZGluZygpIHtcclxuICAgICAgICB0aGlzLkNoZWNrVmFsaWRpdHkoKTtcclxuICAgICAgICBjb25zdCBuZ0NvbnRyb2w6IE5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCwgbnVsbCk7XHJcbiAgICAgICAgaWYgKG5nQ29udHJvbCkge1xyXG4gICAgICAgICAgICB0aGlzLnBhcmVudENvbnRyb2wgPSBuZ0NvbnRyb2wuY29udHJvbCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcblxyXG4gICAgICAgICAgICAvL3NlIGxhIHZhcmlhYmlsZSBub3ZhbGlkYXRlIMOoIHRydWUsIGVsaW1pbm8gdHV0dGkgaSB2YWxpZGF0b3JpIGV2ZW50dWFsbWVudGUgaW5zZXJpdGlcclxuICAgICAgICAgICAgaWYgKHRoaXMubm9WYWxpZGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRDb250cm9sLmNsZWFyQXN5bmNWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJhc2VJbnB1dC5jb250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyh0aGlzLl9hc3luY1ZhbGlkYXRvcnMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5iYXNlSW5wdXQuY29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMuX3ZhbGlkYXRvcnMpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvL2ZhY2NpbyBpbiBtb2RvIGNoZSBzZSBjaGlhbW8gaWwgcmVzZXQgZGVsIGNvbnRyb2xsbyAobyBkZWxsYSBmb3JtKSBkYWxsJ2VzdGVybm8gc2kgcmVzZXR0aSBhbmNoZSBpbCBjb250cm9sbG8gbmF0aXZvXHJcbiAgICAgICAgICAgIGNvbnN0IG9yaWdGdW5jID0gdGhpcy5wYXJlbnRDb250cm9sLnJlc2V0O1xyXG4gICAgICAgICAgICB0aGlzLnBhcmVudENvbnRyb2wucmVzZXQgPSAoKSA9PiB7IC8vZmFjY2lvIGluIG1vZG8gY2hlIHNlIGNoaWFtbyBpbCByZXNldCBkZWwgY29udHJvbGxvIChvIGRlbGxhIGZvcm0pIGRhbGwnZXN0ZXJubyBzaSByZXNldHRpIGFuY2hlIGlsIGNvbnRyb2xsbyBuYXRpdm9cclxuICAgICAgICAgICAgICAgIG9yaWdGdW5jLmFwcGx5KHRoaXMucGFyZW50Q29udHJvbCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJhc2VJbnB1dC5jb250cm9sLnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXAuaGlkZSgpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBvblRvdWNoZWQgPSAoKSA9PiB7IH07IC8vcGxhY2Vob2xkZXIgb24gdG91Y2hlZCBmdW5jdGlvblxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnksIGZpbmFsVmFsdWU6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xyXG4gICAgICAgIHZhciB2YWwgPSB2YWx1ZSAmJiB0aGlzLkZpbHRlcmVkU291cmNlID8gdGhpcy5GaWx0ZXJlZFNvdXJjZS5maW5kKHQgPT4gdC5pZCA9PSB2YWx1ZSkgOiBudWxsO1xyXG4gICAgICAgIGlmKGZpbmFsVmFsdWUpIHRoaXMub3B0aW9uQ2hhbmdlLmVtaXQodmFsdWUpO1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHZhbCA/IHZhbC5pZCA6IHZhbHVlKTtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsID8gdmFsLmRlc2NyaXB0aW9uIDogdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMJ2VtaXQgZGVsbGEgbW9kaWZpY2EgYWwgdmFsb3JlIHZpZW5lIGdlc3RpdG8gc3UgdW4gZXZlbnRvIGN1c3RvbSAoKippbnB1dENoYW5nZSoqKSBjb21lIHdvcmthcm91bmQgYWwgbWFsZnVuemlvbmFtZW50byBkZWxsJyoqbmdNb2RlbENoYW5nZSoqIG5hdGl2b1xyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gdG9FbWl0IHZhbG9yZSBkYSBwcm9wYWdhcmUgYWxsJ2VzdGVybm9cclxuICAgICAqL1xyXG4gICAgb25Nb2RlbENoYW5nZSh0b0VtaXQsIGZpbmFsVmFsdWU6IGJvb2xlYW4gPSBmYWxzZSwgaW50ZXJuYWw6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZSh0b0VtaXQsIGZpbmFsVmFsdWUpO1xyXG4gICAgICAgIGlmKCFmaW5hbFZhbHVlKVxyXG4gICAgICAgICAgICB0aGlzLmlucHV0Q2hhbmdlLmVtaXQobmV3IENoYW5nZUV2ZW50KGludGVybmFsLCB0b0VtaXQpKTtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICAvKiogUmltdW92ZSB1biBlbGVtZW50byBzZWxlemlvbmF0byAqL1xyXG4gICAgcHVibGljIHJlbW92ZUNoaXAoZGF0YTogeyBpZDogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nIH0pOiB2b2lkIHtcclxuICAgICAgICBpZiAoIWRhdGEpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3REYXRhID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuRmlsdGVyZWRTb3VyY2UuZm9yRWFjaChkYXRhID0+ICg8YW55PmRhdGEpLnNlbGVjdGVkID0gZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy5zZWxlY3REYXRhLm1hcCh0ID0+IHQuaWQpLmpvaW4oJywnKSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMub25GaW5hbGl6ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlU2VsZWN0aW9uKGRhdGEpO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKiogU2VsZXppb25hIG8gZGVzZWxlemlvbmEgdW4gb2dnZXR0byAqL1xyXG4gICAgcHVibGljIHRvZ2dsZVNlbGVjdGlvbihkYXRhOiB7IGlkOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcgfSk6IHZvaWQge1xyXG4gICAgICAgICg8YW55PmRhdGEpLnNlbGVjdGVkID0gISg8YW55PmRhdGEpLnNlbGVjdGVkO1xyXG5cclxuICAgICAgICBpZiAoKDxhbnk+ZGF0YSkuc2VsZWN0ZWQgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3REYXRhLnB1c2goZGF0YSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgaSA9IHRoaXMuc2VsZWN0RGF0YS5maW5kSW5kZXgodmFsdWUgPT4gdmFsdWUuaWQgPT09IGRhdGEuaWQpO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdERhdGEuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy5zZWxlY3REYXRhLm1hcCh0ID0+IHQuaWQpLmpvaW4oJywnKSwgdHJ1ZSk7XHJcbiAgICAgICAgaWYgKHRoaXMuSGlkZUNob2ljZXNPblNlbGVjdGlvbilcclxuICAgICAgICAgICAgdGhpcy5odG1sSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0b1RyaWdnZXIuY2xvc2VQYW5lbCgpO1xyXG4gICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hdXRvVHJpZ2dlci5vcGVuUGFuZWwoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25GaW5hbGl6ZSgpO1xyXG4gICAgfTtcclxufSIsIjxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwie3tGaWVsZEFwcGVhcmVuY2V9fVwiIGNsYXNzPVwibWF0LWZ1bGwtd2lkdGggbWF0LW5vLWJvcmRlci10b3BcIiBbc3R5bGUud2lkdGgucHhdPVwid2lkdGhQeFwiPlxyXG4gICAgPG1hdC1sYWJlbCAqbmdJZj1cImxhYmVsXCI+e3tsYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICA8bWF0LWNoaXAtbGlzdCAjY2hpcExpc3Q+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdERhdGEubGVuZ3RoIDwgQ2hpcFRocmVzaG9sZFwiID5cclxuICAgICAgICAgICAgPG1hdC1jaGlwICpuZ0Zvcj1cImxldCBzZWxlY3Qgb2Ygc2VsZWN0RGF0YVwiIGNsYXNzPVwiY2FyZGluYWwtY29sb3JzXCIgKGNsaWNrKT1cIiEocmVhZG9ubHkgfHwgZGlzYWJsZWQpICYmIHJlbW92ZUNoaXAoc2VsZWN0KVwiPlxyXG4gICAgICAgICAgICAgICAge3sgc2VsZWN0LmRlc2NyaXB0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtY2hpcC1yZW1vdmVcIj5jYW5jZWw8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L21hdC1jaGlwPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bWF0LWNoaXAgKm5nSWY9XCJzZWxlY3REYXRhLmxlbmd0aCA+PSBDaGlwVGhyZXNob2xkXCIgY2xhc3M9XCJjYXJkaW5hbC1jb2xvcnNcIiAoY2xpY2spPVwiIShyZWFkb25seSB8fCBkaXNhYmxlZCkgJiYgcmVtb3ZlQ2hpcChudWxsKVwiPlxyXG4gICAgICAgICAgICB7eyBzZWxlY3REYXRhLmxlbmd0aCB9fSB7eyAnRWxlbWVudHMgc2VsZWN0ZWQnIHwgbG9jYWxpemU6IGxjIH19XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC1jaGlwLXJlbW92ZVwiPmNhbmNlbDwvbWF0LWljb24+XHJcbiAgICAgICAgPC9tYXQtY2hpcD5cclxuXHJcbiAgICAgICAgPGlucHV0IG1hdElucHV0XHJcbiAgICAgICAgICAgIFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcExpc3RcIlxyXG4gICAgICAgICAgICAjaHRtbElucHV0XHJcbiAgICAgICAgICAgICNiYXNlSW5wdXQ9J25nTW9kZWwnXHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgdHJpZ2dlcnM9XCJcIlxyXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJ0b3BcIlxyXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxyXG4gICAgICAgICAgICBuYW1lPVwidmFsLWlucHV0XCJcclxuICAgICAgICAgICAgaWQ9XCJ7e2lkfX1cIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBdPVwidG9sVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVhZG9ubHkgfHwgZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbk1vZGVsQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25Gb2N1cygkZXZlbnQpXCJcclxuICAgICAgICAgICAgKGZvY3VzKT1cImNoZWNrVG9vbHRpcCgpO1wiXHJcbiAgICAgICAgICAgIChibHVyKT1cImNsb3NlVG9vbHRpcCgpO1wiPlxyXG4gICAgPC9tYXQtY2hpcC1saXN0PlxyXG5cclxuICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgIFtkaXNwbGF5V2l0aF09XCJkaXNwbGF5Rm5cIj5cclxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBGaWx0ZXJlZFNvdXJjZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IChjbGljayk9XCJ0b2dnbGVTZWxlY3Rpb24oZGF0YSk7ICFIaWRlQ2hvaWNlc09uU2VsZWN0aW9uICYmICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBbY2hlY2tlZF09XCJkYXRhLnNlbGVjdGVkXCIgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3Rpb24oZGF0YSk7XCIgKGNsaWNrKT1cIiFIaWRlQ2hvaWNlc09uU2VsZWN0aW9uICYmICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBkYXRhLmRlc2NyaXB0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbjwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG48bmctdGVtcGxhdGUgI3RvbFRlbXBsYXRlPlxyXG4gICAgPGRpdiAoY2xpY2spPVwiY2xvc2VUb29sdGlwKClcIj5cclxuICAgICAgICA8c3Bhbj57e3ZhbGlkYXRpb25GYWlsZWR9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
@@ -8,12 +8,12 @@ import { BaseValidationLoc } from '../base-validation.loc';
8
8
  import { ValidationInputComponent } from '../validation-input/validation-input.component';
9
9
  import * as i0 from "@angular/core";
10
10
  import * as i1 from "@esfaenza/localizations";
11
- import * as i2 from "@angular/material/form-field";
12
- import * as i3 from "@angular/common";
13
- import * as i4 from "@angular/material/input";
14
- import * as i5 from "@angular/forms";
15
- import * as i6 from "@esfaenza/ngx-currency-mask";
16
- import * as i7 from "ngx-bootstrap/tooltip";
11
+ import * as i2 from "@angular/common";
12
+ import * as i3 from "@angular/forms";
13
+ import * as i4 from "@angular/material/form-field";
14
+ import * as i5 from "@angular/material/input";
15
+ import * as i6 from "ngx-bootstrap/tooltip";
16
+ import * as i7 from "@esfaenza/ngx-currency-mask";
17
17
  /**
18
18
  * Componente di validaizone per gli input con maschera di inserimento numerica
19
19
  */
@@ -38,16 +38,16 @@ export class ValidationCurrencyComponent extends ValidationInputComponent {
38
38
  this.deregisterFocusRequest();
39
39
  }
40
40
  }
41
- ValidationCurrencyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ValidationCurrencyComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: NG_VALIDATORS, optional: true }, { token: NG_ASYNC_VALIDATORS, optional: true }, { token: i0.Injector }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
42
- ValidationCurrencyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ValidationCurrencyComponent, selector: "val-currency", inputs: { CurrencyOptions: "CurrencyOptions" }, providers: [
41
+ ValidationCurrencyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ValidationCurrencyComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: NG_VALIDATORS, optional: true }, { token: NG_ASYNC_VALIDATORS, optional: true }, { token: i0.Injector }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
42
+ ValidationCurrencyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ValidationCurrencyComponent, selector: "val-currency", inputs: { CurrencyOptions: "CurrencyOptions" }, providers: [
43
43
  { provide: LocalizationService, useClass: BaseValidationLoc },
44
44
  {
45
45
  provide: NG_VALUE_ACCESSOR,
46
46
  useExisting: forwardRef(() => ValidationCurrencyComponent),
47
47
  multi: true
48
48
  }
49
- ], usesInheritance: true, ngImport: i0, template: "<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top mat-height-fixed\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"placeholder\">{{placeholder}}</mat-label>\r\n <input #baseInput='ngModel'\r\n #htmlInput\r\n currencyMask\r\n matInput\r\n [readonly]=\"readonly\"\r\n [options]='CurrencyOptions'\r\n [(ngModel)]=\"value\"\r\n name=\"val-input\"\r\n id=\"{{id}}\"\r\n (click)=\"onFocus($event)\"\r\n (focus)=\"checkTooltip();\"\r\n (keyup)=\"($event.keyCode == 13 || $event.keyCode == 27) && onFinalize();\"\r\n (blur)=\"closeTooltip(); onFinalize();\"\r\n class=\"form-control {{class}}\"\r\n [class.checking-field]=\"!noValidate\"\r\n (ngModelChange)=\"onModelChange($event)\"\r\n type=\"{{type}}\"\r\n [tooltip]=\"tolTemplate\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n autocomplete=\"{{autocomplete}}\" />\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div>\r\n <span class=\"close-button pull-right\" (click)=\"closeTooltip()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </span>\r\n <span>{{validationFailed}}</span>\r\n </div>\r\n</ng-template>", styles: [".tooltip-inner{background-color:#842a30;color:#fff;font-size:12px;width:max-content}.tooltip{margin:auto auto auto 20%!important}.tooltip-inner{background-color:#842a30!important;color:#fff}.tooltip.top .tooltip-arrow:before,.tooltip.top .tooltip-arrow{border-top-color:#842a30}.close-button{position:absolute;right:0em;top:-.2em;float:right;font-size:16px;font-weight:700;color:inherit;text-shadow:0 1px 0 #fff;opacity:.5}.close-button:hover,.close-button:focus{text-decoration:none;cursor:pointer;opacity:.75}\n", "val-currency .mat-form-field-wrapper .form-control.checking-field.ng-touched{padding-right:25px;margin-left:-25px}\n"], components: [{ type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatLabel, selector: "mat-label" }, { type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.CurrencyMaskDirective, selector: "[currencyMask]", inputs: ["max", "min", "options"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i7.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ValidationCurrencyComponent, decorators: [{
49
+ ], usesInheritance: true, ngImport: i0, template: "<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top mat-height-fixed\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"placeholder && FloatingLabel\">{{placeholder}}</mat-label>\r\n <input #baseInput='ngModel'\r\n #htmlInput\r\n currencyMask\r\n matInput\r\n [readonly]=\"readonly\"\r\n [options]='CurrencyOptions'\r\n [(ngModel)]=\"value\"\r\n name=\"val-input\"\r\n id=\"{{id}}\"\r\n [placeholder]=\"FloatingLabel ? undefined : placeholder\"\r\n (click)=\"onFocus($event)\"\r\n (focus)=\"checkTooltip();\"\r\n (keyup)=\"($event.keyCode == 13 || $event.keyCode == 27) && onFinalize();\"\r\n (blur)=\"closeTooltip(); onFinalize();\"\r\n class=\"form-control {{class}}\"\r\n [class.checking-field]=\"!noValidate\"\r\n (ngModelChange)=\"onModelChange($event)\"\r\n type=\"{{type}}\"\r\n [tooltip]=\"tolTemplate\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n autocomplete=\"{{autocomplete}}\" />\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div>\r\n <span class=\"close-button pull-right\" (click)=\"closeTooltip()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </span>\r\n <span>{{validationFailed}}</span>\r\n </div>\r\n</ng-template>", styles: [".tooltip-inner{background-color:#842a30;color:#fff;font-size:12px;width:max-content}.tooltip{margin:auto auto auto 20%!important}.tooltip-inner{background-color:#842a30!important;color:#fff}.tooltip.top .tooltip-arrow:before,.tooltip.top .tooltip-arrow{border-top-color:#842a30}.close-button{position:absolute;right:0;top:-.2em;float:right;font-size:16px;font-weight:700;color:inherit;text-shadow:0 1px 0 #fff;opacity:.5}.close-button:hover,.close-button:focus{text-decoration:none;cursor:pointer;opacity:.75}\n", "val-currency .mat-form-field-wrapper .form-control.checking-field.ng-touched{padding-right:25px;margin-left:-25px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i6.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i7.CurrencyMaskDirective, selector: "[currencyMask]", inputs: ["max", "min", "options"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ValidationCurrencyComponent, decorators: [{
51
51
  type: Component,
52
52
  args: [{ selector: "val-currency", changeDetection: ChangeDetectionStrategy.OnPush, providers: [
53
53
  { provide: LocalizationService, useClass: BaseValidationLoc },
@@ -56,7 +56,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
56
56
  useExisting: forwardRef(() => ValidationCurrencyComponent),
57
57
  multi: true
58
58
  }
59
- ], encapsulation: ViewEncapsulation.None, template: "<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top mat-height-fixed\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"placeholder\">{{placeholder}}</mat-label>\r\n <input #baseInput='ngModel'\r\n #htmlInput\r\n currencyMask\r\n matInput\r\n [readonly]=\"readonly\"\r\n [options]='CurrencyOptions'\r\n [(ngModel)]=\"value\"\r\n name=\"val-input\"\r\n id=\"{{id}}\"\r\n (click)=\"onFocus($event)\"\r\n (focus)=\"checkTooltip();\"\r\n (keyup)=\"($event.keyCode == 13 || $event.keyCode == 27) && onFinalize();\"\r\n (blur)=\"closeTooltip(); onFinalize();\"\r\n class=\"form-control {{class}}\"\r\n [class.checking-field]=\"!noValidate\"\r\n (ngModelChange)=\"onModelChange($event)\"\r\n type=\"{{type}}\"\r\n [tooltip]=\"tolTemplate\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n autocomplete=\"{{autocomplete}}\" />\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div>\r\n <span class=\"close-button pull-right\" (click)=\"closeTooltip()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </span>\r\n <span>{{validationFailed}}</span>\r\n </div>\r\n</ng-template>", styles: [".tooltip-inner{background-color:#842a30;color:#fff;font-size:12px;width:max-content}.tooltip{margin:auto auto auto 20%!important}.tooltip-inner{background-color:#842a30!important;color:#fff}.tooltip.top .tooltip-arrow:before,.tooltip.top .tooltip-arrow{border-top-color:#842a30}.close-button{position:absolute;right:0em;top:-.2em;float:right;font-size:16px;font-weight:700;color:inherit;text-shadow:0 1px 0 #fff;opacity:.5}.close-button:hover,.close-button:focus{text-decoration:none;cursor:pointer;opacity:.75}\n", "val-currency .mat-form-field-wrapper .form-control.checking-field.ng-touched{padding-right:25px;margin-left:-25px}\n"] }]
59
+ ], encapsulation: ViewEncapsulation.None, template: "<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top mat-height-fixed\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"placeholder && FloatingLabel\">{{placeholder}}</mat-label>\r\n <input #baseInput='ngModel'\r\n #htmlInput\r\n currencyMask\r\n matInput\r\n [readonly]=\"readonly\"\r\n [options]='CurrencyOptions'\r\n [(ngModel)]=\"value\"\r\n name=\"val-input\"\r\n id=\"{{id}}\"\r\n [placeholder]=\"FloatingLabel ? undefined : placeholder\"\r\n (click)=\"onFocus($event)\"\r\n (focus)=\"checkTooltip();\"\r\n (keyup)=\"($event.keyCode == 13 || $event.keyCode == 27) && onFinalize();\"\r\n (blur)=\"closeTooltip(); onFinalize();\"\r\n class=\"form-control {{class}}\"\r\n [class.checking-field]=\"!noValidate\"\r\n (ngModelChange)=\"onModelChange($event)\"\r\n type=\"{{type}}\"\r\n [tooltip]=\"tolTemplate\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n autocomplete=\"{{autocomplete}}\" />\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div>\r\n <span class=\"close-button pull-right\" (click)=\"closeTooltip()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </span>\r\n <span>{{validationFailed}}</span>\r\n </div>\r\n</ng-template>", styles: [".tooltip-inner{background-color:#842a30;color:#fff;font-size:12px;width:max-content}.tooltip{margin:auto auto auto 20%!important}.tooltip-inner{background-color:#842a30!important;color:#fff}.tooltip.top .tooltip-arrow:before,.tooltip.top .tooltip-arrow{border-top-color:#842a30}.close-button{position:absolute;right:0;top:-.2em;float:right;font-size:16px;font-weight:700;color:inherit;text-shadow:0 1px 0 #fff;opacity:.5}.close-button:hover,.close-button:focus{text-decoration:none;cursor:pointer;opacity:.75}\n", "val-currency .mat-form-field-wrapper .form-control.checking-field.ng-touched{padding-right:25px;margin-left:-25px}\n"] }]
60
60
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: Array, decorators: [{
61
61
  type: Optional
62
62
  }, {
@@ -70,4 +70,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
70
70
  }] }, { type: i0.Injector }, { type: i1.LocalizationService }]; }, propDecorators: { CurrencyOptions: [{
71
71
  type: Input
72
72
  }] } });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1jdXJyZW5jeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3Jtcy1hbmQtdmFsaWRhdGlvbnMvc3JjL2xpYi92YWxpZGF0aW9ucy92YWxpZGF0aW9uLWN1cnJlbmN5L3ZhbGlkYXRpb24tY3VycmVuY3kuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvdmFsaWRhdGlvbnMvdmFsaWRhdGlvbi1jdXJyZW5jeS92YWxpZGF0aW9uLWN1cnJlbmN5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFZLEtBQUssRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEosT0FBTyxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZGLGlCQUFpQjtBQUNqQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxrQ0FBa0M7QUFDbEMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sZ0RBQWdELENBQUM7Ozs7Ozs7OztBQUV4Rjs7R0FFRztBQWdCSCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsd0JBQXdCO0lBT3JFOztPQUVHO0lBQ0gsWUFBWSxHQUFzQixFQUFxQyxVQUFzQixFQUEyQyxlQUEyQixFQUFFLFFBQWtCLEVBQVksRUFBdUI7UUFDdE4sS0FBSyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUR5SSxPQUFFLEdBQUYsRUFBRSxDQUFxQjtJQUUxTixDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRO1FBQ0osSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNQLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7O3lIQTFCUSwyQkFBMkIsbURBVW9CLGFBQWEsNkJBQThDLG1CQUFtQjs2R0FWN0gsMkJBQTJCLHVGQVh6QjtRQUNQLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRTtRQUM3RDtZQUNJLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztZQUMxRCxLQUFLLEVBQUUsSUFBSTtTQUNkO0tBQ0osaURDekJMLDAyQ0FnQ2M7NEZESEQsMkJBQTJCO2tCQWZ2QyxTQUFTOytCQUNJLGNBQWMsbUJBRVAsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUCxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUU7d0JBQzdEOzRCQUNJLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDRCQUE0QixDQUFDOzRCQUMxRCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJOzBGQWE4QyxLQUFLOzBCQUFuRCxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OEJBQW9GLEtBQUs7MEJBQTlELFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsbUJBQW1CO3FHQUw3SCxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5qZWN0LCBJbmplY3RvciwgSW5wdXQsIE9wdGlvbmFsLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE5HX0FTWU5DX1ZBTElEQVRPUlMsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9sb2NhbGl6YXRpb25zXCI7XHJcblxyXG4vLyBEaXJldHRpdmUsIENvbXBvbmVudGksIExpYnJlcmllXHJcbmltcG9ydCB7QmFzZVZhbGlkYXRpb25Mb2N9IGZyb20gJy4uL2Jhc2UtdmFsaWRhdGlvbi5sb2MnO1xyXG5pbXBvcnQge1ZhbGlkYXRpb25JbnB1dENvbXBvbmVudH0gZnJvbSAnLi4vdmFsaWRhdGlvbi1pbnB1dC92YWxpZGF0aW9uLWlucHV0LmNvbXBvbmVudCc7XHJcblxyXG4vKipcclxuICogQ29tcG9uZW50ZSBkaSB2YWxpZGFpem9uZSBwZXIgZ2xpIGlucHV0IGNvbiBtYXNjaGVyYSBkaSBpbnNlcmltZW50byBudW1lcmljYVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJ2YWwtY3VycmVuY3lcIixcclxuICAgIHRlbXBsYXRlVXJsOiBcInZhbGlkYXRpb24tY3VycmVuY3kuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgeyBwcm92aWRlOiBMb2NhbGl6YXRpb25TZXJ2aWNlLCB1c2VDbGFzczogQmFzZVZhbGlkYXRpb25Mb2MgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBWYWxpZGF0aW9uQ3VycmVuY3lDb21wb25lbnQpLFxyXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgIF0sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuLi92YWxpZGF0aW9uLXN0eWxlLnNjc3NcIiwgXCJ2YWxpZGF0aW9uLWN1cnJlbmN5LmNvbXBvbmVudC5zY3NzXCJdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uQ3VycmVuY3lDb21wb25lbnQgZXh0ZW5kcyBWYWxpZGF0aW9uSW5wdXRDb21wb25lbnQge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogT3B6aW9uaSBkaXJldHRhbWVudGUgYmluZGF0ZSBhbGxhIGRpcmV0dGl2YSAqKmN1cnJlbmN5TWFzayoqXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIEN1cnJlbmN5T3B0aW9uczogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZSBcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgQE9wdGlvbmFsKCkgQEluamVjdChOR19WQUxJREFUT1JTKSB2YWxpZGF0b3JzOiBBcnJheTxhbnk+LCBAT3B0aW9uYWwoKSBASW5qZWN0KE5HX0FTWU5DX1ZBTElEQVRPUlMpIGFzeW5jVmFsaWRhdG9yczogQXJyYXk8YW55PiwgaW5qZWN0b3I6IEluamVjdG9yLCBwcm90ZWN0ZWQgbGM6IExvY2FsaXphdGlvblNlcnZpY2UpIHtcclxuICAgICAgICBzdXBlcihjZHIsIHZhbGlkYXRvcnMsIGFzeW5jVmFsaWRhdG9ycywgaW5qZWN0b3IsIGxjKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5yZWdpc3RlckZvY3VzUmVxdWVzdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRlcmVnaXN0ZXJGb2N1c1JlcXVlc3QoKTtcclxuICAgIH1cclxufSIsIjxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwie3tGaWVsZEFwcGVhcmVuY2V9fVwiIGNsYXNzPVwibWF0LWZ1bGwtd2lkdGggbWF0LW5vLWJvcmRlci10b3AgbWF0LWhlaWdodC1maXhlZFwiIFtzdHlsZS53aWR0aC5weF09XCJ3aWR0aFB4XCI+XHJcbiAgICA8bWF0LWxhYmVsICpuZ0lmPVwicGxhY2Vob2xkZXJcIj57e3BsYWNlaG9sZGVyfX08L21hdC1sYWJlbD5cclxuICAgIDxpbnB1dCAjYmFzZUlucHV0PSduZ01vZGVsJ1xyXG4gICAgICAgICAgICNodG1sSW5wdXRcclxuICAgICAgICAgICBjdXJyZW5jeU1hc2tcclxuICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgICAgW29wdGlvbnNdPSdDdXJyZW5jeU9wdGlvbnMnXHJcbiAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgbmFtZT1cInZhbC1pbnB1dFwiXHJcbiAgICAgICAgICAgaWQ9XCJ7e2lkfX1cIlxyXG4gICAgICAgICAgIChjbGljayk9XCJvbkZvY3VzKCRldmVudClcIlxyXG4gICAgICAgICAgIChmb2N1cyk9XCJjaGVja1Rvb2x0aXAoKTtcIlxyXG4gICAgICAgICAgIChrZXl1cCk9XCIoJGV2ZW50LmtleUNvZGUgPT0gMTMgfHwgJGV2ZW50LmtleUNvZGUgPT0gMjcpICYmIG9uRmluYWxpemUoKTtcIlxyXG4gICAgICAgICAgIChibHVyKT1cImNsb3NlVG9vbHRpcCgpOyBvbkZpbmFsaXplKCk7XCJcclxuICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCB7e2NsYXNzfX1cIlxyXG4gICAgICAgICAgIFtjbGFzcy5jaGVja2luZy1maWVsZF09XCIhbm9WYWxpZGF0ZVwiXHJcbiAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Nb2RlbENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICB0eXBlPVwie3t0eXBlfX1cIlxyXG4gICAgICAgICAgIFt0b29sdGlwXT1cInRvbFRlbXBsYXRlXCJcclxuICAgICAgICAgICB0cmlnZ2Vycz1cIlwiXHJcbiAgICAgICAgICAgcGxhY2VtZW50PVwidG9wXCJcclxuICAgICAgICAgICBhdXRvY29tcGxldGU9XCJ7e2F1dG9jb21wbGV0ZX19XCIgLz5cclxuPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdG9sVGVtcGxhdGU+XHJcbiAgICA8ZGl2PlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY2xvc2UtYnV0dG9uIHB1bGwtcmlnaHRcIiAoY2xpY2spPVwiY2xvc2VUb29sdGlwKClcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIj5cclxuICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4+e3t2YWxpZGF0aW9uRmFpbGVkfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1jdXJyZW5jeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3Jtcy1hbmQtdmFsaWRhdGlvbnMvc3JjL2xpYi92YWxpZGF0aW9ucy92YWxpZGF0aW9uLWN1cnJlbmN5L3ZhbGlkYXRpb24tY3VycmVuY3kuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvdmFsaWRhdGlvbnMvdmFsaWRhdGlvbi1jdXJyZW5jeS92YWxpZGF0aW9uLWN1cnJlbmN5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFZLEtBQUssRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEosT0FBTyxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZGLGlCQUFpQjtBQUNqQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxrQ0FBa0M7QUFDbEMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sZ0RBQWdELENBQUM7Ozs7Ozs7OztBQUV4Rjs7R0FFRztBQWdCSCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsd0JBQXdCO0lBT3JFOztPQUVHO0lBQ0gsWUFBWSxHQUFzQixFQUFxQyxVQUFzQixFQUEyQyxlQUEyQixFQUFFLFFBQWtCLEVBQVksRUFBdUI7UUFDdE4sS0FBSyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUR5SSxPQUFFLEdBQUYsRUFBRSxDQUFxQjtJQUUxTixDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRO1FBQ0osSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNQLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7O3lIQTFCUSwyQkFBMkIsbURBVW9CLGFBQWEsNkJBQThDLG1CQUFtQjs2R0FWN0gsMkJBQTJCLHVGQVh6QjtRQUNQLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRTtRQUM3RDtZQUNJLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztZQUMxRCxLQUFLLEVBQUUsSUFBSTtTQUNkO0tBQ0osaURDekJMLG04Q0FpQ2M7NEZESkQsMkJBQTJCO2tCQWZ2QyxTQUFTOytCQUNJLGNBQWMsbUJBRVAsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUCxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUU7d0JBQzdEOzRCQUNJLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDRCQUE0QixDQUFDOzRCQUMxRCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJOzswQkFhQSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUEyQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLG1CQUFtQjtxR0FMN0gsZUFBZTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIGZvcndhcmRSZWYsIEluamVjdCwgSW5qZWN0b3IsIElucHV0LCBPcHRpb25hbCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBOR19BU1lOQ19WQUxJREFUT1JTLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuLy8gQ29uZmlndXJhemlvbmlcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5cclxuLy8gRGlyZXR0aXZlLCBDb21wb25lbnRpLCBMaWJyZXJpZVxyXG5pbXBvcnQge0Jhc2VWYWxpZGF0aW9uTG9jfSBmcm9tICcuLi9iYXNlLXZhbGlkYXRpb24ubG9jJztcclxuaW1wb3J0IHtWYWxpZGF0aW9uSW5wdXRDb21wb25lbnR9IGZyb20gJy4uL3ZhbGlkYXRpb24taW5wdXQvdmFsaWRhdGlvbi1pbnB1dC5jb21wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudGUgZGkgdmFsaWRhaXpvbmUgcGVyIGdsaSBpbnB1dCBjb24gbWFzY2hlcmEgZGkgaW5zZXJpbWVudG8gbnVtZXJpY2FcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwidmFsLWN1cnJlbmN5XCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCJ2YWxpZGF0aW9uLWN1cnJlbmN5LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogTG9jYWxpemF0aW9uU2VydmljZSwgdXNlQ2xhc3M6IEJhc2VWYWxpZGF0aW9uTG9jIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVmFsaWRhdGlvbkN1cnJlbmN5Q29tcG9uZW50KSxcclxuICAgICAgICAgICAgbXVsdGk6IHRydWVcclxuICAgICAgICB9XHJcbiAgICBdLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIHN0eWxlVXJsczogW1wiLi4vdmFsaWRhdGlvbi1zdHlsZS5zY3NzXCIsIFwidmFsaWRhdGlvbi1jdXJyZW5jeS5jb21wb25lbnQuc2Nzc1wiXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbkN1cnJlbmN5Q29tcG9uZW50IGV4dGVuZHMgVmFsaWRhdGlvbklucHV0Q29tcG9uZW50IHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE9wemlvbmkgZGlyZXR0YW1lbnRlIGJpbmRhdGUgYWxsYSBkaXJldHRpdmEgKipjdXJyZW5jeU1hc2sqKlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBDdXJyZW5jeU9wdGlvbnM6IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmUgXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIEBPcHRpb25hbCgpIEBJbmplY3QoTkdfVkFMSURBVE9SUykgdmFsaWRhdG9yczogQXJyYXk8YW55PiwgQE9wdGlvbmFsKCkgQEluamVjdChOR19BU1lOQ19WQUxJREFUT1JTKSBhc3luY1ZhbGlkYXRvcnM6IEFycmF5PGFueT4sIGluamVjdG9yOiBJbmplY3RvciwgcHJvdGVjdGVkIGxjOiBMb2NhbGl6YXRpb25TZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoY2RyLCB2YWxpZGF0b3JzLCBhc3luY1ZhbGlkYXRvcnMsIGluamVjdG9yLCBsYyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucmVnaXN0ZXJGb2N1c1JlcXVlc3QoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kZXJlZ2lzdGVyRm9jdXNSZXF1ZXN0KCk7XHJcbiAgICB9XHJcbn0iLCI8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cInt7RmllbGRBcHBlYXJlbmNlfX1cIiBjbGFzcz1cIm1hdC1mdWxsLXdpZHRoIG1hdC1uby1ib3JkZXItdG9wIG1hdC1oZWlnaHQtZml4ZWRcIiBbc3R5bGUud2lkdGgucHhdPVwid2lkdGhQeFwiPlxyXG4gICAgPG1hdC1sYWJlbCAqbmdJZj1cInBsYWNlaG9sZGVyICYmIEZsb2F0aW5nTGFiZWxcIj57e3BsYWNlaG9sZGVyfX08L21hdC1sYWJlbD5cclxuICAgIDxpbnB1dCAjYmFzZUlucHV0PSduZ01vZGVsJ1xyXG4gICAgICAgICAgICNodG1sSW5wdXRcclxuICAgICAgICAgICBjdXJyZW5jeU1hc2tcclxuICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgICAgW29wdGlvbnNdPSdDdXJyZW5jeU9wdGlvbnMnXHJcbiAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgbmFtZT1cInZhbC1pbnB1dFwiXHJcbiAgICAgICAgICAgaWQ9XCJ7e2lkfX1cIlxyXG4gICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJGbG9hdGluZ0xhYmVsID8gdW5kZWZpbmVkIDogcGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgIChjbGljayk9XCJvbkZvY3VzKCRldmVudClcIlxyXG4gICAgICAgICAgIChmb2N1cyk9XCJjaGVja1Rvb2x0aXAoKTtcIlxyXG4gICAgICAgICAgIChrZXl1cCk9XCIoJGV2ZW50LmtleUNvZGUgPT0gMTMgfHwgJGV2ZW50LmtleUNvZGUgPT0gMjcpICYmIG9uRmluYWxpemUoKTtcIlxyXG4gICAgICAgICAgIChibHVyKT1cImNsb3NlVG9vbHRpcCgpOyBvbkZpbmFsaXplKCk7XCJcclxuICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCB7e2NsYXNzfX1cIlxyXG4gICAgICAgICAgIFtjbGFzcy5jaGVja2luZy1maWVsZF09XCIhbm9WYWxpZGF0ZVwiXHJcbiAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Nb2RlbENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICB0eXBlPVwie3t0eXBlfX1cIlxyXG4gICAgICAgICAgIFt0b29sdGlwXT1cInRvbFRlbXBsYXRlXCJcclxuICAgICAgICAgICB0cmlnZ2Vycz1cIlwiXHJcbiAgICAgICAgICAgcGxhY2VtZW50PVwidG9wXCJcclxuICAgICAgICAgICBhdXRvY29tcGxldGU9XCJ7e2F1dG9jb21wbGV0ZX19XCIgLz5cclxuPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdG9sVGVtcGxhdGU+XHJcbiAgICA8ZGl2PlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY2xvc2UtYnV0dG9uIHB1bGwtcmlnaHRcIiAoY2xpY2spPVwiY2xvc2VUb29sdGlwKClcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIj5cclxuICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4+e3t2YWxpZGF0aW9uRmFpbGVkfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=