ecabs-components 1.1.62 → 1.1.63

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 (52) hide show
  1. package/README.md +3 -1
  2. package/esm2022/lib/base/consts/error-messages.consts.mjs +1 -1
  3. package/esm2022/lib/base/models/element.models.mjs +1 -1
  4. package/esm2022/lib/base/models/select.models.mjs +1 -1
  5. package/esm2022/lib/base/pipes/truncate.pipe.mjs +1 -1
  6. package/esm2022/lib/ecabs-button-toggle/ecabs-button-toggle.component.mjs +4 -4
  7. package/esm2022/lib/ecabs-buttons-v2/ecabs-buttons-v2.component.mjs +2 -2
  8. package/esm2022/lib/ecabs-checkbox-toggle/ecabs-checkbox-toggle.component.mjs +2 -2
  9. package/esm2022/lib/ecabs-checkbox-v2/ecabs-checkbox-v2.component.mjs +2 -2
  10. package/esm2022/lib/ecabs-checkbox-v2/ecabs-checkbox-v2.module.mjs +18 -4
  11. package/esm2022/lib/ecabs-chip-autocomplete/ecabs-chip-autocomplete.component.mjs +4 -6
  12. package/esm2022/lib/ecabs-chip-group/ecabs-chip-group.component.mjs +3 -3
  13. package/esm2022/lib/ecabs-date-range-picker/ecabs-date-range-picker.component.mjs +2 -2
  14. package/esm2022/lib/ecabs-date-range-picker-v2/ecabs-date-range-picker-v2.component.mjs +7 -7
  15. package/esm2022/lib/ecabs-date-range-picker-v2/ecabs-date-range-picker-v2.module.mjs +7 -3
  16. package/esm2022/lib/ecabs-dialog-message/ecabs-dialog-message.component.mjs +2 -2
  17. package/esm2022/lib/ecabs-increment/ecabs-increment.component.mjs +2 -2
  18. package/esm2022/lib/ecabs-input-range/ecabs-input-range.component.mjs +1 -1
  19. package/esm2022/lib/ecabs-input-range/ecabs-input-range.module.mjs +2 -2
  20. package/esm2022/lib/ecabs-language-selector/ecabs-language-selector.component.mjs +2 -2
  21. package/esm2022/lib/ecabs-multiple-dates-picker/ecabs-multiple-dates-picker.component.mjs +2 -2
  22. package/esm2022/lib/ecabs-note/ecabs-note.component.mjs +2 -2
  23. package/esm2022/lib/ecabs-picker-header/ecabs-picker-header.component.mjs +2 -2
  24. package/esm2022/lib/ecabs-place-autocomplete/ecabs-place-autocomplete.component.mjs +2 -2
  25. package/esm2022/lib/ecabs-place-autocomplete-v2/ecabs-place-autocomplete-v2.component.mjs +2 -2
  26. package/esm2022/lib/ecabs-segment/ecabs-segment.component.mjs +26 -0
  27. package/esm2022/lib/ecabs-select-v2/ecabs-select-v2.component.mjs +76 -79
  28. package/esm2022/lib/ecabs-table/ecabs-table-filter-wrapper/ecabs-table-filter-wrapper.component.mjs +2 -2
  29. package/esm2022/lib/ecabs-time-range-input-v2/ecabs-time-range-input-v2.component.mjs +4 -2
  30. package/esm2022/lib/ecabs-validation/ecabs-validation.component.mjs +2 -2
  31. package/esm2022/public-api.mjs +2 -1
  32. package/fesm2022/ecabs-components.mjs +161 -124
  33. package/fesm2022/ecabs-components.mjs.map +1 -1
  34. package/lib/base/models/element.models.d.ts +0 -5
  35. package/lib/base/models/select.models.d.ts +1 -0
  36. package/lib/ecabs-segment/ecabs-segment.component.d.ts +8 -0
  37. package/lib/ecabs-select-v2/ecabs-select-v2.component.d.ts +24 -25
  38. package/package.json +4 -4
  39. package/public-api.d.ts +1 -0
  40. package/src/assets/styles/material/overrides/_card.scss +14 -2
  41. package/src/assets/styles/material/overrides/_chip.scss +10 -1
  42. package/src/assets/styles/material/overrides/_divider.scss +4 -2
  43. package/src/assets/styles/material/overrides/_paginator.scss +1 -1
  44. package/src/assets/styles/material/overrides/_toggle.scss +7 -1
  45. package/src/assets/styles/scss/modules/_card.scss +32 -9
  46. package/src/assets/styles/scss/modules/_divider.scss +2 -1
  47. package/src/assets/styles/scss/modules/_form.scss +1 -1
  48. package/src/assets/styles/scss/modules/_legend.scss +2 -2
  49. package/src/assets/styles/scss/modules/_timepicker.scss +1 -1
  50. package/src/assets/styles/scss/utilities/_colors.scss +1 -0
  51. package/src/assets/styles/scss/utilities/_fonts.scss +2 -1
  52. package/src/assets/styles/scss/utilities/_variables.scss +6 -1
@@ -1,50 +1,48 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR, NgControl, } from '@angular/forms';
1
+ import { Component, EventEmitter, Input, Optional, Output, Self, ViewChild, } from '@angular/core';
3
2
  import { NgSelectComponent } from '@ng-select/ng-select';
4
3
  import { filter } from 'rxjs';
5
4
  import EcabsElementBaseComponent from '../base/element-base';
6
5
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
7
6
  import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/common";
9
- import * as i2 from "../base/element-wrapper/element-wrapper.component";
10
- import * as i3 from "@angular/forms";
7
+ import * as i1 from "@angular/forms";
8
+ import * as i2 from "@angular/common";
9
+ import * as i3 from "../base/element-wrapper/element-wrapper.component";
11
10
  import * as i4 from "@ng-select/ng-select";
12
11
  import * as i5 from "../ecabs-loading/spinner/spinner.component";
13
12
  import * as i6 from "../ecabs-checkbox-toggle/ecabs-checkbox-toggle.component";
14
13
  export class EcabsSelectV2Component extends EcabsElementBaseComponent {
15
- injector;
14
+ ngControl;
16
15
  destroyRef;
17
16
  ngSelect;
18
17
  appearance = 'outline';
19
- appendTo = '';
18
+ appendTo = 'body';
20
19
  items = [];
21
20
  bindLabel = 'label';
22
21
  bindValue = 'value';
23
22
  editableSearchTerm = false;
24
- searchable;
23
+ searchable = false;
25
24
  clearable = true;
26
25
  multiple = false;
27
- notFoundText;
28
- hideSelected;
26
+ notFoundText = 'No data found';
27
+ hideSelected = false;
29
28
  clearOnBackspace = false;
30
- clearSearchOnAdd;
29
+ clearSearchOnAdd = false;
31
30
  trackByFn;
32
- minLength;
33
- searchPlaceholder;
31
+ minLength = 0;
32
+ searchPlaceholder = '';
34
33
  typeahead;
35
34
  closeOnSelect = true;
36
- clearAllText;
37
- selectAllLabel;
35
+ clearAllText = 'Clear all';
36
+ selectAllLabel = 'All';
38
37
  otherLabel = 'Other';
39
38
  othersLabel = 'Others';
40
39
  selectionChange = new EventEmitter();
41
- touched = false;
42
40
  val;
43
- isOpen;
41
+ isOpen = false;
44
42
  groupByKey = 'selectAllIdentifier';
45
43
  selectedMulti = [];
46
- itemsList;
47
- isTypeAhead;
44
+ itemsList = [];
45
+ isTypeAhead = false;
48
46
  get value() {
49
47
  return this.val;
50
48
  }
@@ -52,32 +50,31 @@ export class EcabsSelectV2Component extends EcabsElementBaseComponent {
52
50
  if (val !== undefined && this.val !== val) {
53
51
  this.val = val;
54
52
  this.onChange(val);
55
- this.onTouch(val);
53
+ this.onTouched();
56
54
  }
57
55
  }
58
- constructor(injector, destroyRef) {
56
+ constructor(ngControl, destroyRef) {
59
57
  super();
60
- this.injector = injector;
58
+ this.ngControl = ngControl;
61
59
  this.destroyRef = destroyRef;
60
+ if (this.ngControl) {
61
+ this.ngControl.valueAccessor = this;
62
+ }
62
63
  }
63
64
  ngOnInit() {
64
65
  this.initTrackBy();
65
66
  this.placeholder = this.placeholder || this.label;
66
- this.notFoundText = 'No data found';
67
- this.selectAllLabel = 'All';
68
67
  this.showLocalLoading = false; // hide default loading icon in ElementWrapper
69
- this.clearAllText = 'Clear all';
70
- }
71
- ngAfterViewInit() {
72
- const ngControl = this.injector.get(NgControl, null);
73
- if (ngControl) {
74
- this.control = ngControl.control;
75
- this.control.statusChanges
68
+ if (this.ngControl) {
69
+ this.control = this.ngControl.control;
70
+ this.control?.statusChanges
76
71
  .pipe(takeUntilDestroyed(this.destroyRef))
77
72
  .subscribe(() => {
78
73
  this.updateDisabledState();
79
74
  });
80
75
  }
76
+ }
77
+ ngAfterViewInit() {
81
78
  this.updateDisabledState();
82
79
  this.typeahead
83
80
  ?.pipe(takeUntilDestroyed(this.destroyRef), filter((term) => !!term))
@@ -88,8 +85,12 @@ export class EcabsSelectV2Component extends EcabsElementBaseComponent {
88
85
  ngOnChanges(changes) {
89
86
  const { items, multiple } = changes ?? {};
90
87
  if (items?.currentValue) {
91
- this.itemsList = this.items;
92
- this.selectAllFn(this.itemsList);
88
+ const selectedValues = this.val != null
89
+ ? Array.isArray(this.val)
90
+ ? this.val
91
+ : [this.val]
92
+ : [];
93
+ this.itemsList = this.refreshMultipleItems([...this.items], selectedValues);
93
94
  }
94
95
  if (multiple?.currentValue) {
95
96
  this.closeOnSelect = this.closeOnSelect || false;
@@ -97,80 +98,76 @@ export class EcabsSelectV2Component extends EcabsElementBaseComponent {
97
98
  }
98
99
  }
99
100
  writeValue(value) {
100
- this.value = value;
101
+ this.val = value;
101
102
  }
102
- registerOnChange(onChange) {
103
- this.onChange = onChange;
103
+ registerOnChange(fn) {
104
+ this.onChange = fn;
104
105
  }
105
- registerOnTouched(onTouched) {
106
- this.onTouch = onTouched;
107
- }
108
- markAsTouched() {
109
- if (!this.touched) {
110
- this.onTouch();
111
- this.touched = true;
112
- }
106
+ registerOnTouched(fn) {
107
+ this.onTouched = fn;
113
108
  }
114
109
  onChange = () => { };
115
- onTouch = () => { };
110
+ onTouched = () => { };
116
111
  onBlur() {
117
- this.onTouch(this.value);
112
+ this.onTouched();
118
113
  if (this.isTypeAhead &&
119
114
  !this.ngSelect.isOpen &&
120
115
  this.selectedMulti.length) {
121
- this.itemsList = this.selectedMulti;
116
+ this.itemsList = this.selectAllFn([...this.selectedMulti]);
122
117
  }
123
118
  }
124
119
  selectAllFn(items) {
125
120
  if (!!items?.length && this.multiple && !this.typeahead) {
126
- const allSelect = (elements) => {
127
- elements.forEach((element) => {
128
- element[this.groupByKey] = '';
129
- });
130
- };
131
- allSelect(items);
121
+ return items.map((item) => ({
122
+ ...item,
123
+ [this.groupByKey]: '',
124
+ }));
125
+ }
126
+ return items;
127
+ }
128
+ refreshMultipleItems(items, selectedValues) {
129
+ if (this.multiple && selectedValues?.length) {
130
+ const valuesToCheck = new Set(selectedValues);
131
+ const selected = items.filter(({ value }) => valuesToCheck.has(value));
132
+ const unselected = items.filter(({ value }) => !valuesToCheck.has(value));
133
+ this.selectedMulti = selected;
134
+ return this.selectAllFn([...selected, ...unselected]);
132
135
  }
136
+ this.selectedMulti = [];
137
+ return this.selectAllFn(items);
133
138
  }
134
139
  changed($event) {
140
+ const selected = Array.isArray($event) ? $event : [$event];
135
141
  if (this.multiple) {
136
- if (!$event?.length) {
137
- this.itemsList = this.items;
138
- }
139
- this.selectedMulti = $event;
140
- const valuesToCheck = new Set($event.map(({ value }) => value));
141
- const filteredList = this.items?.filter(({ value: item }) => !valuesToCheck.has(item)) || [];
142
- this.itemsList = [...this.selectedMulti, ...filteredList];
143
- if ($event?.length === this.itemsList?.length) {
142
+ const selectedValues = selected.map(({ value }) => value);
143
+ this.itemsList = this.refreshMultipleItems([...this.items], selectedValues);
144
+ if (selected.length === this.items.length) {
144
145
  this.ngSelect.close();
145
146
  }
146
147
  this.ngSelect.focus();
148
+ this.selectionChange.emit(this.selectedMulti);
149
+ return;
150
+ }
151
+ if (selected[0]) {
152
+ this.selectionChange.emit(selected[0]);
147
153
  }
148
- this.selectionChange.emit($event);
149
154
  }
150
155
  initTrackBy() {
151
156
  this.trackByFn = (item) => {
152
157
  return item?.value;
153
158
  };
154
159
  }
155
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsSelectV2Component, deps: [{ token: i0.Injector }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
156
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsSelectV2Component, selector: "ecabs-select-v2", inputs: { appearance: "appearance", appendTo: "appendTo", items: "items", bindLabel: "bindLabel", bindValue: "bindValue", editableSearchTerm: "editableSearchTerm", searchable: "searchable", clearable: "clearable", multiple: "multiple", notFoundText: "notFoundText", hideSelected: "hideSelected", clearOnBackspace: "clearOnBackspace", clearSearchOnAdd: "clearSearchOnAdd", trackByFn: "trackByFn", minLength: "minLength", searchPlaceholder: "searchPlaceholder", typeahead: "typeahead", closeOnSelect: "closeOnSelect", clearAllText: "clearAllText", selectAllLabel: "selectAllLabel", otherLabel: "otherLabel", othersLabel: "othersLabel" }, outputs: { selectionChange: "selectionChange" }, providers: [
157
- {
158
- provide: NG_VALUE_ACCESSOR,
159
- multi: true,
160
- useExisting: EcabsSelectV2Component,
161
- },
162
- ], viewQueries: [{ propertyName: "ngSelect", first: true, predicate: NgSelectComponent, descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ecabs-element-wrapper [data]=\"getData()\">\r\n <ng-select class=\"form-field__select\"\r\n [appearance]=\"appearance\"\r\n [appendTo]=\"appendTo\"\r\n [labelForId]=\"name\"\r\n [bindLabel]=\"bindLabel || null\"\r\n [bindValue]=\"bindValue || null\"\r\n [searchable]=\"searchable\"\r\n [clearable]=\"clearable\"\r\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\r\n [groupBy]=\"groupByKey\"\r\n [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\"\r\n [items]=\"itemsList\"\r\n [multiple]=\"multiple\"\r\n [(ngModel)]=\"value\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onBlur()\"\r\n [hideSelected]=\"hideSelected\"\r\n [trackByFn]=\"trackByFn\"\r\n [minTermLength]=\"minLength\"\r\n [typeToSearchText]=\"searchPlaceholder\"\r\n [typeahead]=\"typeahead\"\r\n [loading]=\"loading\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [clearOnBackspace]=\"clearOnBackspace\"\r\n [editableSearchTerm]=\"editableSearchTerm\"\r\n (open)=\"this.isOpen = true\"\r\n (close)=\"this.isOpen = false\"\r\n (change)=\"changed($event)\"\r\n [notFoundText]=\"notFoundText\"\r\n [clearAllText]=\"clearAllText\"\r\n [readonly]=\"this.disabled\">\r\n\r\n <ng-container *ngIf=\"!typeahead\">\r\n <ng-option *ngFor=\"let item of itemsList\" [value]=\"item?.value\">\r\n {{ item?.label }}\r\n </ng-option>\r\n </ng-container>\r\n\r\n <ng-template ng-loadingspinner-tmp>\r\n <ecabs-loading-spinner size=\"tiny\"></ecabs-loading-spinner>\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"!!bindValue && !!bindLabel\">\r\n <ng-template ng-multi-label-tmp let-items=\"items\">\r\n <!--#Custom display of first selected item and (+1 more) pattern -->\r\n <ng-container *ngIf=\"!isOpen\">\r\n <div *ngFor=\"let item of items | slice:0:1\">\r\n {{ item?.['label'] }} <span *ngIf=\"items.length > 1\">\r\n (+{{ items.length - 1 }}\r\n {{ (items?.length === 2 ? otherLabel : othersLabel) }})\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiple\">\r\n <!--#Add selectAll and individual checkboxes for multiple-enabled list -->\r\n <ng-template ng-optgroup-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"selectAllLabel\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n\r\n <ng-template ng-option-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"item$?.['label']\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n </ng-container>\r\n </ng-select>\r\n</ecabs-element-wrapper>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.EcabsElementWrapperComponent, selector: "ecabs-element-wrapper", inputs: ["data", "showCloseIcon", "focusedFlag", "showPassword", "control"], outputs: ["showHidePassword", "clear", "increase", "decrease"] }, { 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.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i4.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }, { kind: "directive", type: i4.NgOptgroupTemplateDirective, selector: "[ng-optgroup-tmp]" }, { kind: "directive", type: i4.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i4.NgMultiLabelTemplateDirective, selector: "[ng-multi-label-tmp]" }, { kind: "directive", type: i4.NgLoadingSpinnerTemplateDirective, selector: "[ng-loadingspinner-tmp]" }, { kind: "component", type: i5.EcabsSpinnerComponent, selector: "ecabs-loading-spinner", inputs: ["size"] }, { kind: "component", type: i6.EcabsCheckboxToggleComponent, selector: "ecabs-checkbox", inputs: ["type", "text", "label", "labelPosition", "indeterminate", "checked"], outputs: ["click", "changed"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }] });
160
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsSelectV2Component, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
161
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsSelectV2Component, selector: "ecabs-select-v2", inputs: { appearance: "appearance", appendTo: "appendTo", items: "items", bindLabel: "bindLabel", bindValue: "bindValue", editableSearchTerm: "editableSearchTerm", searchable: "searchable", clearable: "clearable", multiple: "multiple", notFoundText: "notFoundText", hideSelected: "hideSelected", clearOnBackspace: "clearOnBackspace", clearSearchOnAdd: "clearSearchOnAdd", trackByFn: "trackByFn", minLength: "minLength", searchPlaceholder: "searchPlaceholder", typeahead: "typeahead", closeOnSelect: "closeOnSelect", clearAllText: "clearAllText", selectAllLabel: "selectAllLabel", otherLabel: "otherLabel", othersLabel: "othersLabel" }, outputs: { selectionChange: "selectionChange" }, viewQueries: [{ propertyName: "ngSelect", first: true, predicate: NgSelectComponent, descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ecabs-element-wrapper [data]=\"getData()\">\r\n <ng-select class=\"form-field__select\"\r\n [appearance]=\"appearance\"\r\n [appendTo]=\"appendTo\"\r\n [labelForId]=\"name\"\r\n [bindLabel]=\"bindLabel || null\"\r\n [bindValue]=\"bindValue || null\"\r\n [searchable]=\"searchable\"\r\n [clearable]=\"clearable\"\r\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\r\n [groupBy]=\"groupByKey\"\r\n [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\"\r\n [items]=\"itemsList\"\r\n [multiple]=\"multiple\"\r\n [(ngModel)]=\"value\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onBlur()\"\r\n [hideSelected]=\"hideSelected\"\r\n [trackByFn]=\"trackByFn\"\r\n [minTermLength]=\"minLength\"\r\n [typeToSearchText]=\"searchPlaceholder\"\r\n [typeahead]=\"typeahead\"\r\n [loading]=\"loading\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [clearOnBackspace]=\"clearOnBackspace\"\r\n [editableSearchTerm]=\"editableSearchTerm\"\r\n (open)=\"this.isOpen = true\"\r\n (close)=\"this.isOpen = false\"\r\n (change)=\"changed($event)\"\r\n [notFoundText]=\"notFoundText\"\r\n [clearAllText]=\"clearAllText\"\r\n [readonly]=\"this.disabled\">\r\n\r\n <ng-container *ngIf=\"!typeahead\">\r\n <ng-option *ngFor=\"let item of itemsList\" [value]=\"item?.value\">\r\n {{ item?.label }}\r\n </ng-option>\r\n </ng-container>\r\n\r\n <ng-template ng-loadingspinner-tmp>\r\n <ecabs-loading-spinner size=\"tiny\"></ecabs-loading-spinner>\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"!!bindValue && !!bindLabel\">\r\n <ng-template ng-multi-label-tmp let-items=\"items\">\r\n <!--#Custom display of first selected item and (+1 more) pattern -->\r\n <ng-container *ngIf=\"!isOpen\">\r\n <div *ngFor=\"let item of items | slice:0:1\">\r\n {{ item?.['label'] }} <span *ngIf=\"items.length > 1\">\r\n (+{{ items.length - 1 }}\r\n {{ (items?.length === 2 ? otherLabel : othersLabel) }})\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiple\">\r\n <!--#Add selectAll and individual checkboxes for multiple-enabled list -->\r\n <ng-template ng-optgroup-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"selectAllLabel\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n\r\n <ng-template ng-option-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"item$?.['label']\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n </ng-container>\r\n </ng-select>\r\n</ecabs-element-wrapper>\r\n", styles: [""], 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: "component", type: i3.EcabsElementWrapperComponent, selector: "ecabs-element-wrapper", inputs: ["data", "showCloseIcon", "focusedFlag", "showPassword", "control"], outputs: ["showHidePassword", "clear", "increase", "decrease"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i4.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }, { kind: "directive", type: i4.NgOptgroupTemplateDirective, selector: "[ng-optgroup-tmp]" }, { kind: "directive", type: i4.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i4.NgMultiLabelTemplateDirective, selector: "[ng-multi-label-tmp]" }, { kind: "directive", type: i4.NgLoadingSpinnerTemplateDirective, selector: "[ng-loadingspinner-tmp]" }, { kind: "component", type: i5.EcabsSpinnerComponent, selector: "ecabs-loading-spinner", inputs: ["size"] }, { kind: "component", type: i6.EcabsCheckboxToggleComponent, selector: "ecabs-checkbox", inputs: ["type", "text", "label", "labelPosition", "indeterminate", "checked"], outputs: ["click", "changed"] }, { kind: "pipe", type: i2.SlicePipe, name: "slice" }] });
163
162
  }
164
163
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsSelectV2Component, decorators: [{
165
164
  type: Component,
166
- args: [{ selector: 'ecabs-select-v2', providers: [
167
- {
168
- provide: NG_VALUE_ACCESSOR,
169
- multi: true,
170
- useExisting: EcabsSelectV2Component,
171
- },
172
- ], template: "<ecabs-element-wrapper [data]=\"getData()\">\r\n <ng-select class=\"form-field__select\"\r\n [appearance]=\"appearance\"\r\n [appendTo]=\"appendTo\"\r\n [labelForId]=\"name\"\r\n [bindLabel]=\"bindLabel || null\"\r\n [bindValue]=\"bindValue || null\"\r\n [searchable]=\"searchable\"\r\n [clearable]=\"clearable\"\r\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\r\n [groupBy]=\"groupByKey\"\r\n [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\"\r\n [items]=\"itemsList\"\r\n [multiple]=\"multiple\"\r\n [(ngModel)]=\"value\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onBlur()\"\r\n [hideSelected]=\"hideSelected\"\r\n [trackByFn]=\"trackByFn\"\r\n [minTermLength]=\"minLength\"\r\n [typeToSearchText]=\"searchPlaceholder\"\r\n [typeahead]=\"typeahead\"\r\n [loading]=\"loading\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [clearOnBackspace]=\"clearOnBackspace\"\r\n [editableSearchTerm]=\"editableSearchTerm\"\r\n (open)=\"this.isOpen = true\"\r\n (close)=\"this.isOpen = false\"\r\n (change)=\"changed($event)\"\r\n [notFoundText]=\"notFoundText\"\r\n [clearAllText]=\"clearAllText\"\r\n [readonly]=\"this.disabled\">\r\n\r\n <ng-container *ngIf=\"!typeahead\">\r\n <ng-option *ngFor=\"let item of itemsList\" [value]=\"item?.value\">\r\n {{ item?.label }}\r\n </ng-option>\r\n </ng-container>\r\n\r\n <ng-template ng-loadingspinner-tmp>\r\n <ecabs-loading-spinner size=\"tiny\"></ecabs-loading-spinner>\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"!!bindValue && !!bindLabel\">\r\n <ng-template ng-multi-label-tmp let-items=\"items\">\r\n <!--#Custom display of first selected item and (+1 more) pattern -->\r\n <ng-container *ngIf=\"!isOpen\">\r\n <div *ngFor=\"let item of items | slice:0:1\">\r\n {{ item?.['label'] }} <span *ngIf=\"items.length > 1\">\r\n (+{{ items.length - 1 }}\r\n {{ (items?.length === 2 ? otherLabel : othersLabel) }})\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiple\">\r\n <!--#Add selectAll and individual checkboxes for multiple-enabled list -->\r\n <ng-template ng-optgroup-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"selectAllLabel\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n\r\n <ng-template ng-option-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"item$?.['label']\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n </ng-container>\r\n </ng-select>\r\n</ecabs-element-wrapper>\r\n" }]
173
- }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.DestroyRef }]; }, propDecorators: { ngSelect: [{
165
+ args: [{ selector: 'ecabs-select-v2', template: "<ecabs-element-wrapper [data]=\"getData()\">\r\n <ng-select class=\"form-field__select\"\r\n [appearance]=\"appearance\"\r\n [appendTo]=\"appendTo\"\r\n [labelForId]=\"name\"\r\n [bindLabel]=\"bindLabel || null\"\r\n [bindValue]=\"bindValue || null\"\r\n [searchable]=\"searchable\"\r\n [clearable]=\"clearable\"\r\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\r\n [groupBy]=\"groupByKey\"\r\n [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\"\r\n [items]=\"itemsList\"\r\n [multiple]=\"multiple\"\r\n [(ngModel)]=\"value\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onBlur()\"\r\n [hideSelected]=\"hideSelected\"\r\n [trackByFn]=\"trackByFn\"\r\n [minTermLength]=\"minLength\"\r\n [typeToSearchText]=\"searchPlaceholder\"\r\n [typeahead]=\"typeahead\"\r\n [loading]=\"loading\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [clearOnBackspace]=\"clearOnBackspace\"\r\n [editableSearchTerm]=\"editableSearchTerm\"\r\n (open)=\"this.isOpen = true\"\r\n (close)=\"this.isOpen = false\"\r\n (change)=\"changed($event)\"\r\n [notFoundText]=\"notFoundText\"\r\n [clearAllText]=\"clearAllText\"\r\n [readonly]=\"this.disabled\">\r\n\r\n <ng-container *ngIf=\"!typeahead\">\r\n <ng-option *ngFor=\"let item of itemsList\" [value]=\"item?.value\">\r\n {{ item?.label }}\r\n </ng-option>\r\n </ng-container>\r\n\r\n <ng-template ng-loadingspinner-tmp>\r\n <ecabs-loading-spinner size=\"tiny\"></ecabs-loading-spinner>\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"!!bindValue && !!bindLabel\">\r\n <ng-template ng-multi-label-tmp let-items=\"items\">\r\n <!--#Custom display of first selected item and (+1 more) pattern -->\r\n <ng-container *ngIf=\"!isOpen\">\r\n <div *ngFor=\"let item of items | slice:0:1\">\r\n {{ item?.['label'] }} <span *ngIf=\"items.length > 1\">\r\n (+{{ items.length - 1 }}\r\n {{ (items?.length === 2 ? otherLabel : othersLabel) }})\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiple\">\r\n <!--#Add selectAll and individual checkboxes for multiple-enabled list -->\r\n <ng-template ng-optgroup-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"selectAllLabel\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n\r\n <ng-template ng-option-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"item$?.['label']\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n </ng-container>\r\n </ng-select>\r\n</ecabs-element-wrapper>\r\n" }]
166
+ }], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
167
+ type: Optional
168
+ }, {
169
+ type: Self
170
+ }] }, { type: i0.DestroyRef }]; }, propDecorators: { ngSelect: [{
174
171
  type: ViewChild,
175
172
  args: [NgSelectComponent, { static: true }]
176
173
  }], appearance: [{
@@ -220,4 +217,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
220
217
  }], selectionChange: [{
221
218
  type: Output
222
219
  }] } });
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtc2VsZWN0LXYyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1zZWxlY3QtdjIvZWNhYnMtc2VsZWN0LXYyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1zZWxlY3QtdjIvZWNhYnMtc2VsZWN0LXYyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUVaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxHQUVWLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFekQsT0FBTyxFQUFFLE1BQU0sRUFBVyxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLHlCQUF5QixNQUFNLHNCQUFzQixDQUFDO0FBRTdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7OztBQWNoRSxNQUFNLE9BQU8sc0JBQ1gsU0FBUSx5QkFBeUI7SUFnR2Q7SUFDQTtJQTdGbkIsUUFBUSxDQUFvQjtJQUc1QixVQUFVLEdBQTRCLFNBQVMsQ0FBQztJQUdoRCxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBR2QsS0FBSyxHQUFrQixFQUFFLENBQUM7SUFHMUIsU0FBUyxHQUFHLE9BQU8sQ0FBQztJQUdwQixTQUFTLEdBQUcsT0FBTyxDQUFDO0lBR3BCLGtCQUFrQixHQUFHLEtBQUssQ0FBQztJQUczQixVQUFVLENBQVU7SUFHcEIsU0FBUyxHQUFHLElBQUksQ0FBQztJQUdqQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBR2pC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SztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixjQUFjO3NCQURiLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJRyxlQUFlO3NCQUR2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBEZXN0cm95UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbmplY3RvcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcclxuICBOR19WQUxVRV9BQ0NFU1NPUixcclxuICBOZ0NvbnRyb2wsXHJcbiAgVW50eXBlZEZvcm1Db250cm9sLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmdTZWxlY3RDb21wb25lbnQgfSBmcm9tICdAbmctc2VsZWN0L25nLXNlbGVjdCc7XHJcblxyXG5pbXBvcnQgeyBmaWx0ZXIsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IEVjYWJzRWxlbWVudEJhc2VDb21wb25lbnQgZnJvbSAnLi4vYmFzZS9lbGVtZW50LWJhc2UnO1xyXG5pbXBvcnQgeyBTZWxlY3RWYWx1ZSB9IGZyb20gJy4uL2Jhc2UvbW9kZWxzL2VsZW1lbnQubW9kZWxzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlY2Ficy1zZWxlY3QtdjInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lY2Ficy1zZWxlY3QtdjIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2VjYWJzLXNlbGVjdC12Mi5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBFY2Fic1NlbGVjdFYyQ29tcG9uZW50LFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRWNhYnNTZWxlY3RWMkNvbXBvbmVudFxyXG4gIGV4dGVuZHMgRWNhYnNFbGVtZW50QmFzZUNvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uQ2hhbmdlcywgT25Jbml0XHJcbntcclxuICBAVmlld0NoaWxkKE5nU2VsZWN0Q29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIG5nU2VsZWN0OiBOZ1NlbGVjdENvbXBvbmVudDtcclxuXHJcbiAgQElucHV0KClcclxuICBhcHBlYXJhbmNlOiAndW5kZXJsaW5lJyB8ICdvdXRsaW5lJyA9ICdvdXRsaW5lJztcclxuXHJcbiAgQElucHV0KClcclxuICBhcHBlbmRUbyA9ICcnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGl0ZW1zOiBTZWxlY3RWYWx1ZVtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYmluZExhYmVsID0gJ2xhYmVsJztcclxuXHJcbiAgQElucHV0KClcclxuICBiaW5kVmFsdWUgPSAndmFsdWUnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGVkaXRhYmxlU2VhcmNoVGVybSA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNlYXJjaGFibGU6IGJvb2xlYW47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgY2xlYXJhYmxlID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBtdWx0aXBsZSA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG5vdEZvdW5kVGV4dDogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGhpZGVTZWxlY3RlZDogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KClcclxuICBjbGVhck9uQmFja3NwYWNlID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgY2xlYXJTZWFyY2hPbkFkZDogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KClcclxuICB0cmFja0J5Rm46IGFueTtcclxuXHJcbiAgQElucHV0KClcclxuICBtaW5MZW5ndGg6IG51bWJlcjtcclxuXHJcbiAgQElucHV0KClcclxuICBzZWFyY2hQbGFjZWhvbGRlcjogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHR5cGVhaGVhZDogU3ViamVjdDxzdHJpbmc+O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNsb3NlT25TZWxlY3QgPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNsZWFyQWxsVGV4dDogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNlbGVjdEFsbExhYmVsOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgb3RoZXJMYWJlbCA9ICdPdGhlcic7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgb3RoZXJzTGFiZWwgPSAnT3RoZXJzJztcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIHRvdWNoZWQgPSBmYWxzZTtcclxuICB2YWw6IHN0cmluZyB8IG51bWJlcjtcclxuICBpc09wZW46IGJvb2xlYW47XHJcbiAgZ3JvdXBCeUtleSA9ICdzZWxlY3RBbGxJZGVudGlmaWVyJztcclxuICBzZWxlY3RlZE11bHRpID0gW107XHJcbiAgaXRlbXNMaXN0OiBTZWxlY3RWYWx1ZVtdO1xyXG4gIGlzVHlwZUFoZWFkOiBib29sZWFuO1xyXG5cclxuICBnZXQgdmFsdWUoKTogc3RyaW5nIHwgbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnZhbDtcclxuICB9XHJcblxyXG4gIHNldCB2YWx1ZSh2YWwpIHtcclxuICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnZhbCAhPT0gdmFsKSB7XHJcbiAgICAgIHRoaXMudmFsID0gdmFsO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKHZhbCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaCh2YWwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZjogRGVzdHJveVJlZixcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdFRyYWNrQnkoKTtcclxuXHJcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5wbGFjZWhvbGRlciB8fCB0aGlzLmxhYmVsO1xyXG4gICAgdGhpcy5ub3RGb3VuZFRleHQgPSAnTm8gZGF0YSBmb3VuZCc7XHJcbiAgICB0aGlzLnNlbGVjdEFsbExhYmVsID0gJ0FsbCc7XHJcbiAgICB0aGlzLnNob3dMb2NhbExvYWRpbmcgPSBmYWxzZTsgLy8gaGlkZSBkZWZhdWx0IGxvYWRpbmcgaWNvbiBpbiBFbGVtZW50V3JhcHBlclxyXG4gICAgdGhpcy5jbGVhckFsbFRleHQgPSAnQ2xlYXIgYWxsJztcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5nQ29udHJvbDogTmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoTmdDb250cm9sLCBudWxsKTtcclxuXHJcbiAgICBpZiAobmdDb250cm9sKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbCA9IG5nQ29udHJvbC5jb250cm9sIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcclxuXHJcbiAgICAgIHRoaXMuY29udHJvbC5zdGF0dXNDaGFuZ2VzXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZURpc2FibGVkU3RhdGUoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnVwZGF0ZURpc2FibGVkU3RhdGUoKTtcclxuXHJcbiAgICB0aGlzLnR5cGVhaGVhZFxyXG4gICAgICA/LnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksXHJcbiAgICAgICAgZmlsdGVyKCh0ZXJtKSA9PiAhIXRlcm0pLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHZhbCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNUeXBlQWhlYWQgPSAhIXZhbDtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGl0ZW1zLCBtdWx0aXBsZSB9ID0gY2hhbmdlcyA/PyB7fTtcclxuXHJcbiAgICBpZiAoaXRlbXM/LmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICB0aGlzLml0ZW1zTGlzdCA9IHRoaXMuaXRlbXM7XHJcbiAgICAgIHRoaXMuc2VsZWN0QWxsRm4odGhpcy5pdGVtc0xpc3QpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChtdWx0aXBsZT8uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuY2xvc2VPblNlbGVjdCA9IHRoaXMuY2xvc2VPblNlbGVjdCB8fCBmYWxzZTtcclxuICAgICAgdGhpcy5jbGVhclNlYXJjaE9uQWRkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gb25DaGFuZ2U7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoID0gb25Ub3VjaGVkO1xyXG4gIH1cclxuXHJcbiAgbWFya0FzVG91Y2hlZCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy50b3VjaGVkKSB7XHJcbiAgICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gICAgICB0aGlzLnRvdWNoZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xyXG5cclxuICBvblRvdWNoOiBhbnkgPSAoKSA9PiB7fTtcclxuXHJcbiAgb25CbHVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoKHRoaXMudmFsdWUpO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5pc1R5cGVBaGVhZCAmJlxyXG4gICAgICAhdGhpcy5uZ1NlbGVjdC5pc09wZW4gJiZcclxuICAgICAgdGhpcy5zZWxlY3RlZE11bHRpLmxlbmd0aFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaXRlbXNMaXN0ID0gdGhpcy5zZWxlY3RlZE11bHRpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0QWxsRm4oaXRlbXM6IFNlbGVjdFZhbHVlW10pOiB2b2lkIHtcclxuICAgIGlmICghIWl0ZW1zPy5sZW5ndGggJiYgdGhpcy5tdWx0aXBsZSAmJiAhdGhpcy50eXBlYWhlYWQpIHtcclxuICAgICAgY29uc3QgYWxsU2VsZWN0ID0gKGVsZW1lbnRzOiBTZWxlY3RWYWx1ZVtdKTogdm9pZCA9PiB7XHJcbiAgICAgICAgZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudDogU2VsZWN0VmFsdWUpID0+IHtcclxuICAgICAgICAgIGVsZW1lbnRbdGhpcy5ncm91cEJ5S2V5XSA9ICcnO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9O1xyXG5cclxuICAgICAgYWxsU2VsZWN0KGl0ZW1zKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZWQoJGV2ZW50OiBTZWxlY3RWYWx1ZVtdKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICBpZiAoISRldmVudD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5pdGVtc0xpc3QgPSB0aGlzLml0ZW1zO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkTXVsdGkgPSAkZXZlbnQ7XHJcbiAgICAgIGNvbnN0IHZhbHVlc1RvQ2hlY2sgPSBuZXcgU2V0KCRldmVudC5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpKTtcclxuICAgICAgY29uc3QgZmlsdGVyZWRMaXN0ID1cclxuICAgICAgICB0aGlzLml0ZW1zPy5maWx0ZXIoKHsgdmFsdWU6IGl0ZW0gfSkgPT4gIXZhbHVlc1RvQ2hlY2suaGFzKGl0ZW0pKSB8fCBbXTtcclxuICAgICAgdGhpcy5pdGVtc0xpc3QgPSBbLi4udGhpcy5zZWxlY3RlZE11bHRpLCAuLi5maWx0ZXJlZExpc3RdO1xyXG5cclxuICAgICAgaWYgKCRldmVudD8ubGVuZ3RoID09PSB0aGlzLml0ZW1zTGlzdD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5uZ1NlbGVjdC5jbG9zZSgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm5nU2VsZWN0LmZvY3VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGluaXRUcmFja0J5KCkge1xyXG4gICAgdGhpcy50cmFja0J5Rm4gPSAoaXRlbTogU2VsZWN0VmFsdWUpID0+IHtcclxuICAgICAgcmV0dXJuIGl0ZW0/LnZhbHVlO1xyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIiwiPGVjYWJzLWVsZW1lbnQtd3JhcHBlciBbZGF0YV09XCJnZXREYXRhKClcIj5cclxuICA8bmctc2VsZWN0IGNsYXNzPVwiZm9ybS1maWVsZF9fc2VsZWN0XCJcclxuICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxyXG4gICAgICAgICAgICAgW2FwcGVuZFRvXT1cImFwcGVuZFRvXCJcclxuICAgICAgICAgICAgIFtsYWJlbEZvcklkXT1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgW2JpbmRMYWJlbF09XCJiaW5kTGFiZWwgfHwgbnVsbFwiXHJcbiAgICAgICAgICAgICBbYmluZFZhbHVlXT1cImJpbmRWYWx1ZSB8fCBudWxsXCJcclxuICAgICAgICAgICAgIFtzZWFyY2hhYmxlXT1cInNlYXJjaGFibGVcIlxyXG4gICAgICAgICAgICAgW2NsZWFyYWJsZV09XCJjbGVhcmFibGVcIlxyXG4gICAgICAgICAgICAgW2NsZWFyU2VhcmNoT25BZGRdPVwiY2xlYXJTZWFyY2hPbkFkZFwiXHJcbiAgICAgICAgICAgICBbZ3JvdXBCeV09XCJncm91cEJ5S2V5XCJcclxuICAgICAgICAgICAgIFtzZWxlY3RhYmxlR3JvdXBdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICBbc2VsZWN0YWJsZUdyb3VwQXNNb2RlbF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICBbaXRlbXNdPVwiaXRlbXNMaXN0XCJcclxuICAgICAgICAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXHJcbiAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcclxuICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXHJcbiAgICAgICAgICAgICBbaGlkZVNlbGVjdGVkXT1cImhpZGVTZWxlY3RlZFwiXHJcbiAgICAgICAgICAgICBbdHJhY2tCeUZuXT1cInRyYWNrQnlGblwiXHJcbiAgICAgICAgICAgICBbbWluVGVybUxlbmd0aF09XCJtaW5MZW5ndGhcIlxyXG4gICAgICAgICAgICAgW3R5cGVUb1NlYXJjaFRleHRdPVwic2VhcmNoUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgW3R5cGVhaGVhZF09XCJ0eXBlYWhlYWRcIlxyXG4gICAgICAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXHJcbiAgICAgICAgICAgICBbY2xvc2VPblNlbGVjdF09XCJjbG9zZU9uU2VsZWN0XCJcclxuICAgICAgICAgICAgIFtjbGVhck9uQmFja3NwYWNlXT1cImNsZWFyT25CYWNrc3BhY2VcIlxyXG4gICAgICAgICAgICAgW2VkaXRhYmxlU2VhcmNoVGVybV09XCJlZGl0YWJsZVNlYXJjaFRlcm1cIlxyXG4gICAgICAgICAgICAgKG9wZW4pPVwidGhpcy5pc09wZW4gPSB0cnVlXCJcclxuICAgICAgICAgICAgIChjbG9zZSk9XCJ0aGlzLmlzT3BlbiA9IGZhbHNlXCJcclxuICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgIFtub3RGb3VuZFRleHRdPVwibm90Rm91bmRUZXh0XCJcclxuICAgICAgICAgICAgIFtjbGVhckFsbFRleHRdPVwiY2xlYXJBbGxUZXh0XCJcclxuICAgICAgICAgICAgIFtyZWFkb25seV09XCJ0aGlzLmRpc2FibGVkXCI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0eXBlYWhlYWRcIj5cclxuICAgICAgPG5nLW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc0xpc3RcIiBbdmFsdWVdPVwiaXRlbT8udmFsdWVcIj5cclxuICAgICAgICB7eyBpdGVtPy5sYWJlbCB9fVxyXG4gICAgICA8L25nLW9wdGlvbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBuZy1sb2FkaW5nc3Bpbm5lci10bXA+XHJcbiAgICAgIDxlY2Ficy1sb2FkaW5nLXNwaW5uZXIgc2l6ZT1cInRpbnlcIj48L2VjYWJzLWxvYWRpbmctc3Bpbm5lcj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEhYmluZFZhbHVlICYmICEhYmluZExhYmVsXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBuZy1tdWx0aS1sYWJlbC10bXAgbGV0LWl0ZW1zPVwiaXRlbXNcIj5cclxuICAgICAgICA8IS0tI0N1c3RvbSBkaXNwbGF5IG9mIGZpcnN0IHNlbGVjdGVkIGl0ZW0gYW5kICgrMSBtb3JlKSBwYXR0ZXJuIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNPcGVuXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zIHwgc2xpY2U6MDoxXCI+XHJcbiAgICAgICAgICAgIHt7IGl0ZW0/LlsnbGFiZWwnXSB9fSA8c3BhbiAqbmdJZj1cIml0ZW1zLmxlbmd0aCA+IDFcIj5cclxuICAgICAgICAgICAgKCt7eyBpdGVtcy5sZW5ndGggLSAxIH19XHJcbiAgICAgICAgICAgIHt7IChpdGVtcz8ubGVuZ3RoID09PSAyID8gb3RoZXJMYWJlbCA6IG90aGVyc0xhYmVsKSB9fSlcclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibXVsdGlwbGVcIj5cclxuICAgICAgPCEtLSNBZGQgc2VsZWN0QWxsIGFuZCBpbmRpdmlkdWFsIGNoZWNrYm94ZXMgZm9yIG11bHRpcGxlLWVuYWJsZWQgbGlzdCAtLT5cclxuICAgICAgPG5nLXRlbXBsYXRlIG5nLW9wdGdyb3VwLXRtcCBsZXQtaXRlbSQ9XCJpdGVtJFwiIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgICAgICAgPGVjYWJzLWNoZWNrYm94IFtuZ01vZGVsXT1cIml0ZW0kLnNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJzZWxlY3RBbGxMYWJlbFwiPlxyXG4gICAgICAgIDwvZWNhYnMtY2hlY2tib3g+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICA8bmctdGVtcGxhdGUgbmctb3B0aW9uLXRtcCBsZXQtaXRlbSQ9XCJpdGVtJFwiIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgICAgICAgPGVjYWJzLWNoZWNrYm94IFtuZ01vZGVsXT1cIml0ZW0kLnNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJpdGVtJD8uWydsYWJlbCddXCI+XHJcbiAgICAgICAgPC9lY2Ficy1jaGVja2JveD5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctc2VsZWN0PlxyXG48L2VjYWJzLWVsZW1lbnQtd3JhcHBlcj5cclxuIl19
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtc2VsZWN0LXYyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1zZWxlY3QtdjIvZWNhYnMtc2VsZWN0LXYyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1zZWxlY3QtdjIvZWNhYnMtc2VsZWN0LXYyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFFSixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFNdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFekQsT0FBTyxFQUFFLE1BQU0sRUFBVyxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLHlCQUF5QixNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7OztBQVFoRSxNQUFNLE9BQU8sc0JBQ1gsU0FBUSx5QkFBeUI7SUFpR0s7SUFDbkI7SUE5Rm5CLFFBQVEsQ0FBcUI7SUFHN0IsVUFBVSxHQUE0QixTQUFTLENBQUM7SUFHaEQsUUFBUSxHQUFHLE1BQU0sQ0FBQztJQUdsQixLQUFLLEdBQXNCLEVBQUUsQ0FBQztJQUc5QixTQUFTLEdBQUcsT0FBTyxDQUFDO0lBR3BCLFNBQVMsR0FBRyxPQUFPLENBQUM7SUFHcEIsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0lBRzNCLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFHbkIsU0FBUyxHQUFHLElBQUksQ0FBQztJQUdqQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBR2pCLFlBQVksR0FBRyxlQUFlLENBQUM7SUFH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QVM7K0JBQ0UsaUJBQWlCOzswQkFzR3hCLFFBQVE7OzBCQUFJLElBQUk7cUVBN0ZuQixRQUFRO3NCQURQLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUk5QyxVQUFVO3NCQURULEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLEtBQUs7c0JBREosS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4saUJBQWlCO3NCQURoQixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlHLGVBQWU7c0JBRHZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIERlc3Ryb3lSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgT3V0cHV0LFxyXG4gIFNlbGYsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXHJcbiAgTmdDb250cm9sLFxyXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5nU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnQG5nLXNlbGVjdC9uZy1zZWxlY3QnO1xyXG5cclxuaW1wb3J0IHsgZmlsdGVyLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCBFY2Fic0VsZW1lbnRCYXNlQ29tcG9uZW50IGZyb20gJy4uL2Jhc2UvZWxlbWVudC1iYXNlJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5pbXBvcnQgeyBTZWxlY3RPcHRpb24gfSBmcm9tICcuLi9iYXNlL21vZGVscy9zZWxlY3QubW9kZWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZWNhYnMtc2VsZWN0LXYyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZWNhYnMtc2VsZWN0LXYyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9lY2Ficy1zZWxlY3QtdjIuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEVjYWJzU2VsZWN0VjJDb21wb25lbnQ8VCA9IHVua25vd24+XHJcbiAgZXh0ZW5kcyBFY2Fic0VsZW1lbnRCYXNlQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25DaGFuZ2VzLCBPbkluaXRcclxue1xyXG4gIEBWaWV3Q2hpbGQoTmdTZWxlY3RDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgbmdTZWxlY3QhOiBOZ1NlbGVjdENvbXBvbmVudDtcclxuXHJcbiAgQElucHV0KClcclxuICBhcHBlYXJhbmNlOiAndW5kZXJsaW5lJyB8ICdvdXRsaW5lJyA9ICdvdXRsaW5lJztcclxuXHJcbiAgQElucHV0KClcclxuICBhcHBlbmRUbyA9ICdib2R5JztcclxuXHJcbiAgQElucHV0KClcclxuICBpdGVtczogU2VsZWN0T3B0aW9uPFQ+W10gPSBbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBiaW5kTGFiZWwgPSAnbGFiZWwnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGJpbmRWYWx1ZSA9ICd2YWx1ZSc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZWRpdGFibGVTZWFyY2hUZXJtID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2VhcmNoYWJsZSA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNsZWFyYWJsZSA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbXVsdGlwbGUgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBub3RGb3VuZFRleHQgPSAnTm8gZGF0YSBmb3VuZCc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaGlkZVNlbGVjdGVkID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgY2xlYXJPbkJhY2tzcGFjZSA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNsZWFyU2VhcmNoT25BZGQgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICB0cmFja0J5Rm46ICgoaXRlbTogU2VsZWN0T3B0aW9uPFQ+KSA9PiBUIHwgdW5kZWZpbmVkKSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgQElucHV0KClcclxuICBtaW5MZW5ndGggPSAwO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNlYXJjaFBsYWNlaG9sZGVyID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdHlwZWFoZWFkOiBTdWJqZWN0PHN0cmluZz47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgY2xvc2VPblNlbGVjdCA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgY2xlYXJBbGxUZXh0ID0gJ0NsZWFyIGFsbCc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2VsZWN0QWxsTGFiZWwgPSAnQWxsJztcclxuXHJcbiAgQElucHV0KClcclxuICBvdGhlckxhYmVsID0gJ090aGVyJztcclxuXHJcbiAgQElucHV0KClcclxuICBvdGhlcnNMYWJlbCA9ICdPdGhlcnMnO1xyXG5cclxuICBAT3V0cHV0KClcclxuICByZWFkb25seSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFxyXG4gICAgU2VsZWN0T3B0aW9uPFQ+IHwgU2VsZWN0T3B0aW9uPFQ+W11cclxuICA+KCk7XHJcblxyXG4gIHZhbDogVDtcclxuICBpc09wZW4gPSBmYWxzZTtcclxuICBncm91cEJ5S2V5ID0gJ3NlbGVjdEFsbElkZW50aWZpZXInO1xyXG4gIHNlbGVjdGVkTXVsdGk6IFNlbGVjdE9wdGlvbjxUPltdID0gW107XHJcbiAgaXRlbXNMaXN0OiBTZWxlY3RPcHRpb248VD5bXSA9IFtdO1xyXG4gIGlzVHlwZUFoZWFkID0gZmFsc2U7XHJcblxyXG4gIGdldCB2YWx1ZSgpOiBUIHtcclxuICAgIHJldHVybiB0aGlzLnZhbDtcclxuICB9XHJcblxyXG4gIHNldCB2YWx1ZSh2YWw6IFQpIHtcclxuICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnZhbCAhPT0gdmFsKSB7XHJcbiAgICAgIHRoaXMudmFsID0gdmFsO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKHZhbCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIHJlYWRvbmx5IG5nQ29udHJvbDogTmdDb250cm9sLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmOiBEZXN0cm95UmVmLFxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcclxuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdFRyYWNrQnkoKTtcclxuXHJcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5wbGFjZWhvbGRlciB8fCB0aGlzLmxhYmVsO1xyXG4gICAgdGhpcy5zaG93TG9jYWxMb2FkaW5nID0gZmFsc2U7IC8vIGhpZGUgZGVmYXVsdCBsb2FkaW5nIGljb24gaW4gRWxlbWVudFdyYXBwZXJcclxuXHJcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcclxuICAgICAgdGhpcy5jb250cm9sID0gdGhpcy5uZ0NvbnRyb2wuY29udHJvbCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgICAgIHRoaXMuY29udHJvbD8uc3RhdHVzQ2hhbmdlc1xyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVEaXNhYmxlZFN0YXRlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnVwZGF0ZURpc2FibGVkU3RhdGUoKTtcclxuXHJcbiAgICB0aGlzLnR5cGVhaGVhZFxyXG4gICAgICA/LnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksXHJcbiAgICAgICAgZmlsdGVyKCh0ZXJtKSA9PiAhIXRlcm0pLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHZhbCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNUeXBlQWhlYWQgPSAhIXZhbDtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGl0ZW1zLCBtdWx0aXBsZSB9ID0gY2hhbmdlcyA/PyB7fTtcclxuXHJcbiAgICBpZiAoaXRlbXM/LmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZFZhbHVlcyA9XHJcbiAgICAgICAgdGhpcy52YWwgIT0gbnVsbFxyXG4gICAgICAgICAgPyBBcnJheS5pc0FycmF5KHRoaXMudmFsKVxyXG4gICAgICAgICAgICA/IHRoaXMudmFsXHJcbiAgICAgICAgICAgIDogW3RoaXMudmFsXVxyXG4gICAgICAgICAgOiBbXTtcclxuICAgICAgdGhpcy5pdGVtc0xpc3QgPSB0aGlzLnJlZnJlc2hNdWx0aXBsZUl0ZW1zKFxyXG4gICAgICAgIFsuLi50aGlzLml0ZW1zXSxcclxuICAgICAgICBzZWxlY3RlZFZhbHVlcyBhcyBUW10sXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG11bHRpcGxlPy5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy5jbG9zZU9uU2VsZWN0ID0gdGhpcy5jbG9zZU9uU2VsZWN0IHx8IGZhbHNlO1xyXG4gICAgICB0aGlzLmNsZWFyU2VhcmNoT25BZGQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogVCk6IHZvaWQge1xyXG4gICAgdGhpcy52YWwgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogVCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlOiAodmFsdWU6IFQpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuXHJcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuXHJcbiAgb25CbHVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQoKTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuaXNUeXBlQWhlYWQgJiZcclxuICAgICAgIXRoaXMubmdTZWxlY3QuaXNPcGVuICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRNdWx0aS5sZW5ndGhcclxuICAgICkge1xyXG4gICAgICB0aGlzLml0ZW1zTGlzdCA9IHRoaXMuc2VsZWN0QWxsRm4oWy4uLnRoaXMuc2VsZWN0ZWRNdWx0aV0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0QWxsRm4oaXRlbXM6IFNlbGVjdE9wdGlvbjxUPltdKTogU2VsZWN0T3B0aW9uPFQ+W10ge1xyXG4gICAgaWYgKCEhaXRlbXM/Lmxlbmd0aCAmJiB0aGlzLm11bHRpcGxlICYmICF0aGlzLnR5cGVhaGVhZCkge1xyXG4gICAgICByZXR1cm4gaXRlbXMubWFwKChpdGVtKSA9PiAoe1xyXG4gICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgW3RoaXMuZ3JvdXBCeUtleV06ICcnLFxyXG4gICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGl0ZW1zO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWZyZXNoTXVsdGlwbGVJdGVtcyhcclxuICAgIGl0ZW1zOiBTZWxlY3RPcHRpb248VD5bXSxcclxuICAgIHNlbGVjdGVkVmFsdWVzOiBUW10sXHJcbiAgKTogU2VsZWN0T3B0aW9uPFQ+W10ge1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgc2VsZWN0ZWRWYWx1ZXM/Lmxlbmd0aCkge1xyXG4gICAgICBjb25zdCB2YWx1ZXNUb0NoZWNrID0gbmV3IFNldChzZWxlY3RlZFZhbHVlcyk7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkID0gaXRlbXMuZmlsdGVyKCh7IHZhbHVlIH0pID0+IHZhbHVlc1RvQ2hlY2suaGFzKHZhbHVlKSk7XHJcbiAgICAgIGNvbnN0IHVuc2VsZWN0ZWQgPSBpdGVtcy5maWx0ZXIoKHsgdmFsdWUgfSkgPT4gIXZhbHVlc1RvQ2hlY2suaGFzKHZhbHVlKSk7XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkTXVsdGkgPSBzZWxlY3RlZDtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdEFsbEZuKFsuLi5zZWxlY3RlZCwgLi4udW5zZWxlY3RlZF0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRNdWx0aSA9IFtdO1xyXG5cclxuICAgIHJldHVybiB0aGlzLnNlbGVjdEFsbEZuKGl0ZW1zKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZWQoJGV2ZW50OiBTZWxlY3RPcHRpb248VD4gfCBTZWxlY3RPcHRpb248VD5bXSk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWQgPSBBcnJheS5pc0FycmF5KCRldmVudCkgPyAkZXZlbnQgOiBbJGV2ZW50XTtcclxuXHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZFZhbHVlcyA9IHNlbGVjdGVkLm1hcCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSk7XHJcbiAgICAgIHRoaXMuaXRlbXNMaXN0ID0gdGhpcy5yZWZyZXNoTXVsdGlwbGVJdGVtcyhcclxuICAgICAgICBbLi4udGhpcy5pdGVtc10sXHJcbiAgICAgICAgc2VsZWN0ZWRWYWx1ZXMsXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAoc2VsZWN0ZWQubGVuZ3RoID09PSB0aGlzLml0ZW1zLmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMubmdTZWxlY3QuY2xvc2UoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5uZ1NlbGVjdC5mb2N1cygpO1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRNdWx0aSk7XHJcblxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNlbGVjdGVkWzBdKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoc2VsZWN0ZWRbMF0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGluaXRUcmFja0J5KCkge1xyXG4gICAgdGhpcy50cmFja0J5Rm4gPSAoaXRlbTogU2VsZWN0T3B0aW9uPFQ+KSA9PiB7XHJcbiAgICAgIHJldHVybiBpdGVtPy52YWx1ZTtcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiIsIjxlY2Ficy1lbGVtZW50LXdyYXBwZXIgW2RhdGFdPVwiZ2V0RGF0YSgpXCI+XHJcbiAgPG5nLXNlbGVjdCBjbGFzcz1cImZvcm0tZmllbGRfX3NlbGVjdFwiXHJcbiAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcclxuICAgICAgICAgICAgIFthcHBlbmRUb109XCJhcHBlbmRUb1wiXHJcbiAgICAgICAgICAgICBbbGFiZWxGb3JJZF09XCJuYW1lXCJcclxuICAgICAgICAgICAgIFtiaW5kTGFiZWxdPVwiYmluZExhYmVsIHx8IG51bGxcIlxyXG4gICAgICAgICAgICAgW2JpbmRWYWx1ZV09XCJiaW5kVmFsdWUgfHwgbnVsbFwiXHJcbiAgICAgICAgICAgICBbc2VhcmNoYWJsZV09XCJzZWFyY2hhYmxlXCJcclxuICAgICAgICAgICAgIFtjbGVhcmFibGVdPVwiY2xlYXJhYmxlXCJcclxuICAgICAgICAgICAgIFtjbGVhclNlYXJjaE9uQWRkXT1cImNsZWFyU2VhcmNoT25BZGRcIlxyXG4gICAgICAgICAgICAgW2dyb3VwQnldPVwiZ3JvdXBCeUtleVwiXHJcbiAgICAgICAgICAgICBbc2VsZWN0YWJsZUdyb3VwXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgW3NlbGVjdGFibGVHcm91cEFzTW9kZWxdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgW2l0ZW1zXT1cIml0ZW1zTGlzdFwiXHJcbiAgICAgICAgICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxyXG4gICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxyXG4gICAgICAgICAgICAgW2hpZGVTZWxlY3RlZF09XCJoaWRlU2VsZWN0ZWRcIlxyXG4gICAgICAgICAgICAgW3RyYWNrQnlGbl09XCJ0cmFja0J5Rm5cIlxyXG4gICAgICAgICAgICAgW21pblRlcm1MZW5ndGhdPVwibWluTGVuZ3RoXCJcclxuICAgICAgICAgICAgIFt0eXBlVG9TZWFyY2hUZXh0XT1cInNlYXJjaFBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgIFt0eXBlYWhlYWRdPVwidHlwZWFoZWFkXCJcclxuICAgICAgICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gICAgICAgICAgICAgW2Nsb3NlT25TZWxlY3RdPVwiY2xvc2VPblNlbGVjdFwiXHJcbiAgICAgICAgICAgICBbY2xlYXJPbkJhY2tzcGFjZV09XCJjbGVhck9uQmFja3NwYWNlXCJcclxuICAgICAgICAgICAgIFtlZGl0YWJsZVNlYXJjaFRlcm1dPVwiZWRpdGFibGVTZWFyY2hUZXJtXCJcclxuICAgICAgICAgICAgIChvcGVuKT1cInRoaXMuaXNPcGVuID0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAoY2xvc2UpPVwidGhpcy5pc09wZW4gPSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAoY2hhbmdlKT1cImNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICBbbm90Rm91bmRUZXh0XT1cIm5vdEZvdW5kVGV4dFwiXHJcbiAgICAgICAgICAgICBbY2xlYXJBbGxUZXh0XT1cImNsZWFyQWxsVGV4dFwiXHJcbiAgICAgICAgICAgICBbcmVhZG9ubHldPVwidGhpcy5kaXNhYmxlZFwiPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdHlwZWFoZWFkXCI+XHJcbiAgICAgIDxuZy1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNMaXN0XCIgW3ZhbHVlXT1cIml0ZW0/LnZhbHVlXCI+XHJcbiAgICAgICAge3sgaXRlbT8ubGFiZWwgfX1cclxuICAgICAgPC9uZy1vcHRpb24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgbmctbG9hZGluZ3NwaW5uZXItdG1wPlxyXG4gICAgICA8ZWNhYnMtbG9hZGluZy1zcGlubmVyIHNpemU9XCJ0aW55XCI+PC9lY2Ficy1sb2FkaW5nLXNwaW5uZXI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhIWJpbmRWYWx1ZSAmJiAhIWJpbmRMYWJlbFwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgbmctbXVsdGktbGFiZWwtdG1wIGxldC1pdGVtcz1cIml0ZW1zXCI+XHJcbiAgICAgICAgPCEtLSNDdXN0b20gZGlzcGxheSBvZiBmaXJzdCBzZWxlY3RlZCBpdGVtIGFuZCAoKzEgbW9yZSkgcGF0dGVybiAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzT3BlblwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtcyB8IHNsaWNlOjA6MVwiPlxyXG4gICAgICAgICAgICB7eyBpdGVtPy5bJ2xhYmVsJ10gfX0gPHNwYW4gKm5nSWY9XCJpdGVtcy5sZW5ndGggPiAxXCI+XHJcbiAgICAgICAgICAgICgre3sgaXRlbXMubGVuZ3RoIC0gMSB9fVxyXG4gICAgICAgICAgICB7eyAoaXRlbXM/Lmxlbmd0aCA9PT0gMiA/IG90aGVyTGFiZWwgOiBvdGhlcnNMYWJlbCkgfX0pXHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm11bHRpcGxlXCI+XHJcbiAgICAgIDwhLS0jQWRkIHNlbGVjdEFsbCBhbmQgaW5kaXZpZHVhbCBjaGVja2JveGVzIGZvciBtdWx0aXBsZS1lbmFibGVkIGxpc3QgLS0+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBuZy1vcHRncm91cC10bXAgbGV0LWl0ZW0kPVwiaXRlbSRcIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxyXG4gICAgICAgIDxlY2Ficy1jaGVja2JveCBbbmdNb2RlbF09XCJpdGVtJC5zZWxlY3RlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwic2VsZWN0QWxsTGFiZWxcIj5cclxuICAgICAgICA8L2VjYWJzLWNoZWNrYm94PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgPG5nLXRlbXBsYXRlIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW0kPVwiaXRlbSRcIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxyXG4gICAgICAgIDxlY2Ficy1jaGVja2JveCBbbmdNb2RlbF09XCJpdGVtJC5zZWxlY3RlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwiaXRlbSQ/LlsnbGFiZWwnXVwiPlxyXG4gICAgICAgIDwvZWNhYnMtY2hlY2tib3g+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLXNlbGVjdD5cclxuPC9lY2Ficy1lbGVtZW50LXdyYXBwZXI+XHJcbiJdfQ==
@@ -6,11 +6,11 @@ export class EcabsTableFilterWrapperComponent {
6
6
  title;
7
7
  actions;
8
8
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsTableFilterWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsTableFilterWrapperComponent, selector: "ecabs-table-filter-wrapper", inputs: { title: "title", actions: "actions" }, ngImport: i0, template: "<ecabs-expansion-panel [title]=\"title\" class=\"block mb-5\" [expanded]=\"true\">\r\n <ng-content></ng-content>\r\n\r\n <div *ngIf=\"actions\" class=\"flex justify-end\">\r\n <ng-container *ngTemplateOutlet=\"actions\"></ng-container>\r\n </div>\r\n</ecabs-expansion-panel>\r\n", styles: [":root{--color-black: #020618;--color-white: #ffffff;--color-white-opacity-05: rgba(0, 0, 0, .05);--color-gray-50: #F8FAFC;--color-gray-100: #F1F5F9;--color-gray-200: #E2E8F0;--color-gray-300: #CAD5E2;--color-gray-400: #90A1B9;--color-gray-500: #62748E;--color-gray-600: #45556C;--color-gray-700: #314158;--color-gray-800: #1D293D;--color-gray-900: #0F172B;--color-gray-950: #020618;--color-brand-dark: #193273;--color-brand-dark-rgb: 25, 50, 115;--color-brand-light: #325FDA;--color-brand-light2: #e7efff;--color-brand-light-rgb: 50, 95, 218;--color-brand-300: #e7efff;--color-brand-300-rgb: 231, 239, 255;--color-error: #df3838;--color-error-opacity: #fbe4e4;--color-error-rgb: 223, 56, 56;--color-notification: #f4d04f;--color-notification-rgb: 244, 208, 79;--color-warn: #f2994a;--color-warn-rgb: 242, 153, 74;--color-info: #325fda;--color-info-rgb: 50, 95, 218;--color-warning: #f2994a;--color-warning-opacity: #fdf0e4;--color-success: #075145;--color-success--opacity: #affebf;--color-success-rgb: 7, 81, 69;--color-allocation-started: #E8F8E5;--color-allocation-scheduled: #FDF0E4;--color-allocation-ended: #FBE4E4;--color-allocation-sick: #E7EFFF;--color-allocation-no-show: #EAE5FF;--color-allocation-unavailable: #F2F2F2;--cropper-outline-color: rgba(0, 0, 0, .5);--mat-option-label-text-color: var(--color-gray-900);--mat-option-focus-state-layer-color: var(--color-gray-100);--mat-option-hover-state-layer-color: var(--color-gray-50);--mat-option-label-text-size: 14px}.mat-expansion-panel-header-title{font-size:22px}:host::ng-deep .btn__group{justify-content:flex-end}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.EcabsExpansionPanelComponent, selector: "ecabs-expansion-panel", inputs: ["title", "description", "actionTitle", "index", "expanded", "disabled", "errorMessage", "showErrorMessage", "closePanel", "showIcon", "iconName", "showCheckbox", "showStatus", "status", "hideToggle"], outputs: ["checked", "opened"] }] });
9
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsTableFilterWrapperComponent, selector: "ecabs-table-filter-wrapper", inputs: { title: "title", actions: "actions" }, ngImport: i0, template: "<ecabs-expansion-panel [title]=\"title\" class=\"block mb-5\" [expanded]=\"true\">\r\n <ng-content></ng-content>\r\n\r\n <div *ngIf=\"actions\" class=\"flex justify-end\">\r\n <ng-container *ngTemplateOutlet=\"actions\"></ng-container>\r\n </div>\r\n</ecabs-expansion-panel>\r\n", styles: [":root{--mat-standard-button-toggle-shape: calc-rem(8px) ;--color-black: #020618;--color-white: #ffffff;--color-white-opacity-05: rgba(0, 0, 0, .05);--color-gray-50: #F8FAFC;--color-gray-100: #F1F5F9;--color-gray-200: #E2E8F0;--color-gray-300: #CAD5E2;--color-gray-400: #90A1B9;--color-gray-500: #62748E;--color-gray-600: #45556C;--color-gray-700: #314158;--color-gray-800: #1D293D;--color-gray-900: #0F172B;--color-gray-950: #020618;--color-brand-dark: #193273;--color-brand-dark-rgb: 25, 50, 115;--color-brand-light: #325FDA;--color-brand-light2: #e7efff;--color-brand-light-rgb: 50, 95, 218;--color-brand-300: #e7efff;--color-brand-300-rgb: 231, 239, 255;--color-error: #df3838;--color-error-opacity: #fbe4e4;--color-error-rgb: 223, 56, 56;--color-notification: #f4d04f;--color-notification-rgb: 244, 208, 79;--color-warn: #f2994a;--color-warn-rgb: 242, 153, 74;--color-info: #325fda;--color-info-rgb: 50, 95, 218;--color-warning: #f2994a;--color-warning-opacity: #fdf0e4;--color-success: #075145;--color-success--opacity: #affebf;--color-success-rgb: 7, 81, 69;--color-allocation-started: #E8F8E5;--color-allocation-scheduled: #FDF0E4;--color-allocation-ended: #FBE4E4;--color-allocation-sick: #E7EFFF;--color-allocation-no-show: #EAE5FF;--color-allocation-unavailable: #F2F2F2;--cropper-outline-color: rgba(0, 0, 0, .5);--mat-option-label-text-color: var(--color-gray-900);--mat-option-focus-state-layer-color: var(--color-gray-100);--mat-option-hover-state-layer-color: var(--color-gray-50);--mat-divider-color: var(--color-gray-100);--mat-option-label-text-size: 13px}.mat-expansion-panel-header-title{font-size:22px}:host::ng-deep .btn__group{justify-content:flex-end}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.EcabsExpansionPanelComponent, selector: "ecabs-expansion-panel", inputs: ["title", "description", "actionTitle", "index", "expanded", "disabled", "errorMessage", "showErrorMessage", "closePanel", "showIcon", "iconName", "showCheckbox", "showStatus", "status", "hideToggle"], outputs: ["checked", "opened"] }] });
10
10
  }
11
11
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsTableFilterWrapperComponent, decorators: [{
12
12
  type: Component,
13
- args: [{ selector: 'ecabs-table-filter-wrapper', template: "<ecabs-expansion-panel [title]=\"title\" class=\"block mb-5\" [expanded]=\"true\">\r\n <ng-content></ng-content>\r\n\r\n <div *ngIf=\"actions\" class=\"flex justify-end\">\r\n <ng-container *ngTemplateOutlet=\"actions\"></ng-container>\r\n </div>\r\n</ecabs-expansion-panel>\r\n", styles: [":root{--color-black: #020618;--color-white: #ffffff;--color-white-opacity-05: rgba(0, 0, 0, .05);--color-gray-50: #F8FAFC;--color-gray-100: #F1F5F9;--color-gray-200: #E2E8F0;--color-gray-300: #CAD5E2;--color-gray-400: #90A1B9;--color-gray-500: #62748E;--color-gray-600: #45556C;--color-gray-700: #314158;--color-gray-800: #1D293D;--color-gray-900: #0F172B;--color-gray-950: #020618;--color-brand-dark: #193273;--color-brand-dark-rgb: 25, 50, 115;--color-brand-light: #325FDA;--color-brand-light2: #e7efff;--color-brand-light-rgb: 50, 95, 218;--color-brand-300: #e7efff;--color-brand-300-rgb: 231, 239, 255;--color-error: #df3838;--color-error-opacity: #fbe4e4;--color-error-rgb: 223, 56, 56;--color-notification: #f4d04f;--color-notification-rgb: 244, 208, 79;--color-warn: #f2994a;--color-warn-rgb: 242, 153, 74;--color-info: #325fda;--color-info-rgb: 50, 95, 218;--color-warning: #f2994a;--color-warning-opacity: #fdf0e4;--color-success: #075145;--color-success--opacity: #affebf;--color-success-rgb: 7, 81, 69;--color-allocation-started: #E8F8E5;--color-allocation-scheduled: #FDF0E4;--color-allocation-ended: #FBE4E4;--color-allocation-sick: #E7EFFF;--color-allocation-no-show: #EAE5FF;--color-allocation-unavailable: #F2F2F2;--cropper-outline-color: rgba(0, 0, 0, .5);--mat-option-label-text-color: var(--color-gray-900);--mat-option-focus-state-layer-color: var(--color-gray-100);--mat-option-hover-state-layer-color: var(--color-gray-50);--mat-option-label-text-size: 14px}.mat-expansion-panel-header-title{font-size:22px}:host::ng-deep .btn__group{justify-content:flex-end}\n"] }]
13
+ args: [{ selector: 'ecabs-table-filter-wrapper', template: "<ecabs-expansion-panel [title]=\"title\" class=\"block mb-5\" [expanded]=\"true\">\r\n <ng-content></ng-content>\r\n\r\n <div *ngIf=\"actions\" class=\"flex justify-end\">\r\n <ng-container *ngTemplateOutlet=\"actions\"></ng-container>\r\n </div>\r\n</ecabs-expansion-panel>\r\n", styles: [":root{--mat-standard-button-toggle-shape: calc-rem(8px) ;--color-black: #020618;--color-white: #ffffff;--color-white-opacity-05: rgba(0, 0, 0, .05);--color-gray-50: #F8FAFC;--color-gray-100: #F1F5F9;--color-gray-200: #E2E8F0;--color-gray-300: #CAD5E2;--color-gray-400: #90A1B9;--color-gray-500: #62748E;--color-gray-600: #45556C;--color-gray-700: #314158;--color-gray-800: #1D293D;--color-gray-900: #0F172B;--color-gray-950: #020618;--color-brand-dark: #193273;--color-brand-dark-rgb: 25, 50, 115;--color-brand-light: #325FDA;--color-brand-light2: #e7efff;--color-brand-light-rgb: 50, 95, 218;--color-brand-300: #e7efff;--color-brand-300-rgb: 231, 239, 255;--color-error: #df3838;--color-error-opacity: #fbe4e4;--color-error-rgb: 223, 56, 56;--color-notification: #f4d04f;--color-notification-rgb: 244, 208, 79;--color-warn: #f2994a;--color-warn-rgb: 242, 153, 74;--color-info: #325fda;--color-info-rgb: 50, 95, 218;--color-warning: #f2994a;--color-warning-opacity: #fdf0e4;--color-success: #075145;--color-success--opacity: #affebf;--color-success-rgb: 7, 81, 69;--color-allocation-started: #E8F8E5;--color-allocation-scheduled: #FDF0E4;--color-allocation-ended: #FBE4E4;--color-allocation-sick: #E7EFFF;--color-allocation-no-show: #EAE5FF;--color-allocation-unavailable: #F2F2F2;--cropper-outline-color: rgba(0, 0, 0, .5);--mat-option-label-text-color: var(--color-gray-900);--mat-option-focus-state-layer-color: var(--color-gray-100);--mat-option-hover-state-layer-color: var(--color-gray-50);--mat-divider-color: var(--color-gray-100);--mat-option-label-text-size: 13px}.mat-expansion-panel-header-title{font-size:22px}:host::ng-deep .btn__group{justify-content:flex-end}\n"] }]
14
14
  }], propDecorators: { title: [{
15
15
  type: Input
16
16
  }], actions: [{
@@ -101,7 +101,9 @@ export class EcabsTimeRangeInputV2Component extends EcabsElementBaseComponent {
101
101
  if (control.value) {
102
102
  const { timeFrom, timeTo } = control.value;
103
103
  control.setErrors(null);
104
- if (required && (!timeFrom || timeFrom?.length === 0) && (!timeTo || timeTo?.length === 0)) {
104
+ if (required &&
105
+ (!timeFrom || timeFrom?.length === 0) &&
106
+ (!timeTo || timeTo?.length === 0)) {
105
107
  control.setErrors({ required: true });
106
108
  return;
107
109
  }
@@ -164,4 +166,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
164
166
  }], endTimePlaceholder: [{
165
167
  type: Input
166
168
  }] } });
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtdGltZS1yYW5nZS1pbnB1dC12Mi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lY2Ficy1jb21wb25lbnRzL3NyYy9saWIvZWNhYnMtdGltZS1yYW5nZS1pbnB1dC12Mi9lY2Ficy10aW1lLXJhbmdlLWlucHV0LXYyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy10aW1lLXJhbmdlLWlucHV0LXYyL2VjYWJzLXRpbWUtcmFuZ2UtaW5wdXQtdjIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxVQUFVLEVBRVYsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUVULFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8seUJBQXlCLE1BQU0sc0JBQXNCLENBQUM7QUFJN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFDLE9BQU8sSUFBSSxhQUFhLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7O0FBY2hELE1BQU0sT0FBTyw4QkFDWCxTQUFRLHlCQUF5QjtJQTZGZDtJQUNBO0lBMUZuQixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBR3RCLGFBQWEsR0FBa0IsTUFBTSxDQUFDO0lBR3RDLFFBQVEsQ0FBVTtJQUdsQixHQUFHLENBQVU7SUFHYixHQUFHLENBQVU7SUFHYixZQUFZLEdBQUcsSUFBSSxDQUFDO0lBR3BCLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFHbkIsU0FBUyxHQUFHLElBQUksQ0FBQztJQUdqQixhQUFhLENBQVM7SUFHdEIsV0FBVyxDQUFTO0lBR3BCLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFHdEIsb0JBQW9CLENBQVM7SUFHN0Isa0JBQWtCLENBQVM7SUFFM0IsR0FBRyxDQUdEO0lBRUYsU0FBUyxDQUFTO0lBQ2xCLE9BQU8sQ0FBUztJQUVoQixJQUFJLEtBQUs7UUFJUCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEIsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCwwQkFBMEI7SUFDMUIsSUFBSSxLQUFLLENBQUMsR0FBeUM7UUFDakQsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLEdBQUcsRUFBRTtZQUNwQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztZQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7WUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVELDBCQUEwQjtJQUMxQixJQUFJLFFBQVEsQ0FBQyxHQUFXO1FBQ3RCLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxHQUFHLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7WUFDckIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQztJQUVELDBCQUEwQjtJQUMxQixJQUFJLE1BQU0sQ0FBQyxHQUFXO1FBQ3BCLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxHQUFHLEVBQUU7WUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7WUFDbkIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQztJQUVELFlBQ21CLFFBQWtCLEVBQ2xCLFVBQXNCO1FBRXZDLEtBQUssRUFBRSxDQUFDO1FBSFMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBR3pDLENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxTQUFTLEdBQWMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWhFLElBQUksU0FBUyxFQUFFO1lBQ2IsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBNkIsQ0FBQztZQUN2RCxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVk7aUJBQ3RCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQ3pDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDM0Q7SUFDSCxDQUFDO0lBRUQsUUFBUSxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUN6QixPQUFPLEdBQVEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBRXhCLFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxPQUFPO1FBQ0wsTUFBTSxRQUFRLEdBQUc7WUFDZixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1NBQ3BCLENBQUM7UUFFRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQUU7WUFDeEMsSUFBSSxDQUFDLEtBQUssR0FBRztnQkFDWCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3ZCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTthQUNwQixDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsT0FBMkI7UUFDNUMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFM0QsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ2pCLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUMzQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXhCLElBQUksUUFBUSxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksUUFBUSxFQUFFLE1BQU0sS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLE1BQU0sRUFBRSxNQUFNLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pGLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUUsQ0FBQztnQkFDckMsT0FBTzthQUNUO1lBRUQsSUFBSSxDQUFDLFFBQVEsSUFBSSxNQUFNLEVBQUU7Z0JBQ3ZCLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxxQkFBcUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNuRCxPQUFPO2FBQ1I7WUFFRCxJQUFJLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDdkIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ2pELE9BQU87YUFDUjtZQUVELElBQUksUUFBUSxHQUFHLE1BQU0sRUFBRTtnQkFDckIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLHNCQUFzQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ3BELE9BQU87YUFDUjtTQUNGO0lBQ0gsQ0FBQzt3R0F2S1UsOEJBQThCOzRGQUE5Qiw4QkFBOEIsb2JBUjlCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQztnQkFDN0QsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLGlEQ2hDSCx3dkJBcUJ3Qjs7NEZEYVgsOEJBQThCO2tCQVoxQyxTQUFTOytCQUNFLDJCQUEyQixhQUcxQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwrQkFBK0IsQ0FBQzs0QkFDN0QsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7d0hBT0QsYUFBYTtzQkFEWixLQUFLO2dCQUlOLGFBQWE7c0JBRFosS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sR0FBRztzQkFERixLQUFLO2dCQUlOLEdBQUc7c0JBREYsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBSU4sa0JBQWtCO3NCQURqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBEZXN0cm95UmVmLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXHJcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgTmdDb250cm9sLFxyXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IEVjYWJzRWxlbWVudEJhc2VDb21wb25lbnQgZnJvbSAnLi4vYmFzZS9lbGVtZW50LWJhc2UnO1xyXG5pbXBvcnQge1xyXG4gIExpc3RQbGFjZW1lbnQsXHJcbn0gZnJvbSAnLi4vYmFzZS9tb2RlbHMvdGltZXBpY2tlci5tb2RlbHMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7aXNFcXVhbCBhcyBsb2Rhc2hJc0VxdWFsfSBmcm9tICdsb2Rhc2gnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlY2Ficy10aW1lLXJhbmdlLWlucHV0LXYyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZWNhYnMtdGltZS1yYW5nZS1pbnB1dC12Mi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJ2VjYWJzLXRpbWUtcmFuZ2UtaW5wdXQtdjIuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEVjYWJzVGltZVJhbmdlSW5wdXRWMkNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRWNhYnNUaW1lUmFuZ2VJbnB1dFYyQ29tcG9uZW50XHJcbiAgZXh0ZW5kcyBFY2Fic0VsZW1lbnRCYXNlQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdFxyXG57XHJcbiAgQElucHV0KClcclxuICBzaG93Q2xvc2VJY29uID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbGlzdFBsYWNlbWVudDogTGlzdFBsYWNlbWVudCA9ICdhdXRvJztcclxuXHJcbiAgQElucHV0KClcclxuICBhcHBlbmRUbyE6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBtaW4hOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbWF4ITogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNob3dEYXlTdGFydCA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2hvd0RheUVuZCA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGFkZFNlY29uZCA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZGF5U3RhcnRMYWJlbDogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGRheUVuZExhYmVsOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIFxyXG4gIHNlcGFyYXRvckxhYmVsID0gJ3RvJztcclxuXHJcbiAgQElucHV0KClcclxuICBzdGFydFRpbWVQbGFjZWhvbGRlcjogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKSBcclxuICBlbmRUaW1lUGxhY2Vob2xkZXI6IHN0cmluZztcclxuXHJcbiAgdmFsOiB7XHJcbiAgICB0aW1lRnJvbTogc3RyaW5nO1xyXG4gICAgdGltZVRvOiBzdHJpbmc7XHJcbiAgfTtcclxuXHJcbiAgX3RpbWVGcm9tOiBzdHJpbmc7XHJcbiAgX3RpbWVUbzogc3RyaW5nO1xyXG5cclxuICBnZXQgdmFsdWUoKToge1xyXG4gICAgdGltZUZyb206IHN0cmluZztcclxuICAgIHRpbWVUbzogc3RyaW5nO1xyXG4gIH0ge1xyXG4gICAgcmV0dXJuIHRoaXMudmFsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRpbWVGcm9tKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGltZUZyb207XHJcbiAgfVxyXG5cclxuICBnZXQgdGltZVRvKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGltZVRvO1xyXG4gIH1cclxuXHJcbiAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcclxuICBzZXQgdmFsdWUodmFsOiB7IHRpbWVGcm9tOiBzdHJpbmc7IHRpbWVUbzogc3RyaW5nIH0pIHtcclxuICAgIGlmICh0aGlzLnZhbCAhPT0gdmFsKSB7XHJcbiAgICAgIHRoaXMudmFsID0gdmFsO1xyXG4gICAgICB0aGlzLnRpbWVGcm9tID0gdmFsLnRpbWVGcm9tO1xyXG4gICAgICB0aGlzLnRpbWVUbyA9IHZhbC50aW1lVG87XHJcbiAgICAgIHRoaXMub25DaGFuZ2UodmFsKTtcclxuICAgICAgdGhpcy5vblRvdWNoKHZhbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL2VzbGludC1kaXNhYmxlLW5leHQtbGluZVxyXG4gIHNldCB0aW1lRnJvbSh2YWw6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuX3RpbWVGcm9tICE9PSB2YWwpIHtcclxuICAgICAgdGhpcy5fdGltZUZyb20gPSB2YWw7XHJcbiAgICAgIHRoaXMub25BcHBseSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcclxuICBzZXQgdGltZVRvKHZhbDogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5fdGltZVRvICE9PSB2YWwpIHtcclxuICAgICAgdGhpcy5fdGltZVRvID0gdmFsO1xyXG4gICAgICB0aGlzLm9uQXBwbHkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWYsXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgbmdDb250cm9sOiBOZ0NvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wsIG51bGwpO1xyXG5cclxuICAgIGlmIChuZ0NvbnRyb2wpIHtcclxuICAgICAgdGhpcy5jb250cm9sID0gbmdDb250cm9sLmNvbnRyb2wgYXMgVW50eXBlZEZvcm1Db250cm9sO1xyXG4gICAgICB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnRpbWVSYW5nZVZhbGlkYXRvcih0aGlzLmNvbnRyb2wpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcclxuICBvblRvdWNoOiBhbnkgPSAoKSA9PiB7fTtcclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgb25BcHBseSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5ld1ZhbHVlID0ge1xyXG4gICAgICB0aW1lRnJvbTogdGhpcy50aW1lRnJvbSxcclxuICAgICAgdGltZVRvOiB0aGlzLnRpbWVUbyxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKCFsb2Rhc2hJc0VxdWFsKHRoaXMudmFsdWUsIG5ld1ZhbHVlKSkge1xyXG4gICAgICB0aGlzLnZhbHVlID0ge1xyXG4gICAgICAgIHRpbWVGcm9tOiB0aGlzLnRpbWVGcm9tLFxyXG4gICAgICAgIHRpbWVUbzogdGhpcy50aW1lVG8sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0aW1lUmFuZ2VWYWxpZGF0b3IoY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sKSB7XHJcbiAgICBjb25zdCByZXF1aXJlZCA9IGNvbnRyb2wuaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG5cclxuICAgIGlmIChjb250cm9sLnZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IHsgdGltZUZyb20sIHRpbWVUbyB9ID0gY29udHJvbC52YWx1ZTtcclxuICAgICAgY29udHJvbC5zZXRFcnJvcnMobnVsbCk7XHJcblxyXG4gICAgICBpZiAocmVxdWlyZWQgJiYgKCF0aW1lRnJvbSB8fCB0aW1lRnJvbT8ubGVuZ3RoID09PSAwKSAmJiAoIXRpbWVUbyB8fCB0aW1lVG8/Lmxlbmd0aCA9PT0gMCkpIHtcclxuICAgICAgICAgY29udHJvbC5zZXRFcnJvcnMoe3JlcXVpcmVkOiB0cnVlfSApO1xyXG4gICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghdGltZUZyb20gJiYgdGltZVRvKSB7XHJcbiAgICAgICAgY29udHJvbC5zZXRFcnJvcnMoeyB0aW1lRnJvbVJhbmdlUmVxdWlyZWQ6IHRydWUgfSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGltZUZyb20gJiYgIXRpbWVUbykge1xyXG4gICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKHsgdGltZVRvUmFuZ2VSZXF1aXJlZDogdHJ1ZSB9KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aW1lRnJvbSA+IHRpbWVUbykge1xyXG4gICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKHsgdGltZUZyb21Nb3JlVGhhblRpbWVUbzogdHJ1ZSB9KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGVjYWJzLWVsZW1lbnQtd3JhcHBlciBbZGF0YV09XCJnZXREYXRhKClcIj5cclxuICA8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZF9fcmFuZ2UtLXdyYXBwZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkX19yYW5nZVwiPlxyXG4gICAgICA8ZWNhYnMtdGltZXBpY2tlciBcclxuICAgICAgW2xhYmVsXT1cInN0YXJ0VGltZVBsYWNlaG9sZGVyXCIgXHJcbiAgICAgIFsobmdNb2RlbCldPVwidGltZUZyb21cIiBcclxuICAgICAgW2RheVN0YXJ0TGFiZWxdPVwiZGF5U3RhcnRMYWJlbFwiIFxyXG4gICAgICBbZGF5RW5kTGFiZWxdPVwiZGF5RW5kTGFiZWxcIj5cclxuICAgICAgPC9lY2Ficy10aW1lcGlja2VyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWdyYXktNDAwIHB4LTMgdGV4dC1zbVwiPnt7IHNlcGFyYXRvckxhYmVsIH19PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRfX3JhbmdlXCI+XHJcbiAgICAgIDxlY2Ficy10aW1lcGlja2VyIFxyXG4gICAgICBbbGFiZWxdPVwiZW5kVGltZVBsYWNlaG9sZGVyXCIgXHJcbiAgICAgIFsobmdNb2RlbCldPVwidGltZVRvXCIgXHJcbiAgICAgIFtkYXlTdGFydExhYmVsXT1cImRheVN0YXJ0TGFiZWxcIlxyXG4gICAgICAgW2RheUVuZExhYmVsXT1cImRheUVuZExhYmVsXCI+XHJcbiAgICAgIDwvZWNhYnMtdGltZXBpY2tlcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2VjYWJzLWVsZW1lbnQtd3JhcHBlcj4iXX0=
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtdGltZS1yYW5nZS1pbnB1dC12Mi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lY2Ficy1jb21wb25lbnRzL3NyYy9saWIvZWNhYnMtdGltZS1yYW5nZS1pbnB1dC12Mi9lY2Ficy10aW1lLXJhbmdlLWlucHV0LXYyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy10aW1lLXJhbmdlLWlucHV0LXYyL2VjYWJzLXRpbWUtcmFuZ2UtaW5wdXQtdjIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxVQUFVLEVBRVYsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUVULFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8seUJBQXlCLE1BQU0sc0JBQXNCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sSUFBSSxhQUFhLEVBQUUsTUFBTSxRQUFRLENBQUM7Ozs7O0FBY2xELE1BQU0sT0FBTyw4QkFDWCxTQUFRLHlCQUF5QjtJQTZGZDtJQUNBO0lBMUZuQixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBR3RCLGFBQWEsR0FBa0IsTUFBTSxDQUFDO0lBR3RDLFFBQVEsQ0FBVTtJQUdsQixHQUFHLENBQVU7SUFHYixHQUFHLENBQVU7SUFHYixZQUFZLEdBQUcsSUFBSSxDQUFDO0lBR3BCLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFHbkIsU0FBUyxHQUFHLElBQUksQ0FBQztJQUdqQixhQUFhLENBQVM7SUFHdEIsV0FBVyxDQUFTO0lBR3BCLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFHdEIsb0JBQW9C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OEIsb2JBUjlCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQztnQkFDN0QsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLGlEQzlCSCx3dkJBcUJ3Qjs7NEZEV1gsOEJBQThCO2tCQVoxQyxTQUFTOytCQUNFLDJCQUEyQixhQUcxQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwrQkFBK0IsQ0FBQzs0QkFDN0QsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7d0hBT0QsYUFBYTtzQkFEWixLQUFLO2dCQUlOLGFBQWE7c0JBRFosS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sR0FBRztzQkFERixLQUFLO2dCQUlOLEdBQUc7c0JBREYsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBSU4sa0JBQWtCO3NCQURqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBEZXN0cm95UmVmLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXHJcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgTmdDb250cm9sLFxyXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IEVjYWJzRWxlbWVudEJhc2VDb21wb25lbnQgZnJvbSAnLi4vYmFzZS9lbGVtZW50LWJhc2UnO1xyXG5pbXBvcnQgeyBMaXN0UGxhY2VtZW50IH0gZnJvbSAnLi4vYmFzZS9tb2RlbHMvdGltZXBpY2tlci5tb2RlbHMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IGlzRXF1YWwgYXMgbG9kYXNoSXNFcXVhbCB9IGZyb20gJ2xvZGFzaCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjYWJzLXRpbWUtcmFuZ2UtaW5wdXQtdjInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lY2Ficy10aW1lLXJhbmdlLWlucHV0LXYyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnZWNhYnMtdGltZS1yYW5nZS1pbnB1dC12Mi5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRWNhYnNUaW1lUmFuZ2VJbnB1dFYyQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFY2Fic1RpbWVSYW5nZUlucHV0VjJDb21wb25lbnRcclxuICBleHRlbmRzIEVjYWJzRWxlbWVudEJhc2VDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0XHJcbntcclxuICBASW5wdXQoKVxyXG4gIHNob3dDbG9zZUljb24gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBsaXN0UGxhY2VtZW50OiBMaXN0UGxhY2VtZW50ID0gJ2F1dG8nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGFwcGVuZFRvITogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG1pbiE6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBtYXghOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2hvd0RheVN0YXJ0ID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBzaG93RGF5RW5kID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYWRkU2Vjb25kID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBkYXlTdGFydExhYmVsOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZGF5RW5kTGFiZWw6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBzZXBhcmF0b3JMYWJlbCA9ICd0byc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc3RhcnRUaW1lUGxhY2Vob2xkZXI6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBlbmRUaW1lUGxhY2Vob2xkZXI6IHN0cmluZztcclxuXHJcbiAgdmFsOiB7XHJcbiAgICB0aW1lRnJvbTogc3RyaW5nO1xyXG4gICAgdGltZVRvOiBzdHJpbmc7XHJcbiAgfTtcclxuXHJcbiAgX3RpbWVGcm9tOiBzdHJpbmc7XHJcbiAgX3RpbWVUbzogc3RyaW5nO1xyXG5cclxuICBnZXQgdmFsdWUoKToge1xyXG4gICAgdGltZUZyb206IHN0cmluZztcclxuICAgIHRpbWVUbzogc3RyaW5nO1xyXG4gIH0ge1xyXG4gICAgcmV0dXJuIHRoaXMudmFsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRpbWVGcm9tKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGltZUZyb207XHJcbiAgfVxyXG5cclxuICBnZXQgdGltZVRvKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGltZVRvO1xyXG4gIH1cclxuXHJcbiAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcclxuICBzZXQgdmFsdWUodmFsOiB7IHRpbWVGcm9tOiBzdHJpbmc7IHRpbWVUbzogc3RyaW5nIH0pIHtcclxuICAgIGlmICh0aGlzLnZhbCAhPT0gdmFsKSB7XHJcbiAgICAgIHRoaXMudmFsID0gdmFsO1xyXG4gICAgICB0aGlzLnRpbWVGcm9tID0gdmFsLnRpbWVGcm9tO1xyXG4gICAgICB0aGlzLnRpbWVUbyA9IHZhbC50aW1lVG87XHJcbiAgICAgIHRoaXMub25DaGFuZ2UodmFsKTtcclxuICAgICAgdGhpcy5vblRvdWNoKHZhbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL2VzbGludC1kaXNhYmxlLW5leHQtbGluZVxyXG4gIHNldCB0aW1lRnJvbSh2YWw6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuX3RpbWVGcm9tICE9PSB2YWwpIHtcclxuICAgICAgdGhpcy5fdGltZUZyb20gPSB2YWw7XHJcbiAgICAgIHRoaXMub25BcHBseSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcclxuICBzZXQgdGltZVRvKHZhbDogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5fdGltZVRvICE9PSB2YWwpIHtcclxuICAgICAgdGhpcy5fdGltZVRvID0gdmFsO1xyXG4gICAgICB0aGlzLm9uQXBwbHkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWYsXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgbmdDb250cm9sOiBOZ0NvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wsIG51bGwpO1xyXG5cclxuICAgIGlmIChuZ0NvbnRyb2wpIHtcclxuICAgICAgdGhpcy5jb250cm9sID0gbmdDb250cm9sLmNvbnRyb2wgYXMgVW50eXBlZEZvcm1Db250cm9sO1xyXG4gICAgICB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnRpbWVSYW5nZVZhbGlkYXRvcih0aGlzLmNvbnRyb2wpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcclxuICBvblRvdWNoOiBhbnkgPSAoKSA9PiB7fTtcclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgb25BcHBseSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5ld1ZhbHVlID0ge1xyXG4gICAgICB0aW1lRnJvbTogdGhpcy50aW1lRnJvbSxcclxuICAgICAgdGltZVRvOiB0aGlzLnRpbWVUbyxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKCFsb2Rhc2hJc0VxdWFsKHRoaXMudmFsdWUsIG5ld1ZhbHVlKSkge1xyXG4gICAgICB0aGlzLnZhbHVlID0ge1xyXG4gICAgICAgIHRpbWVGcm9tOiB0aGlzLnRpbWVGcm9tLFxyXG4gICAgICAgIHRpbWVUbzogdGhpcy50aW1lVG8sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0aW1lUmFuZ2VWYWxpZGF0b3IoY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sKSB7XHJcbiAgICBjb25zdCByZXF1aXJlZCA9IGNvbnRyb2wuaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG5cclxuICAgIGlmIChjb250cm9sLnZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IHsgdGltZUZyb20sIHRpbWVUbyB9ID0gY29udHJvbC52YWx1ZTtcclxuICAgICAgY29udHJvbC5zZXRFcnJvcnMobnVsbCk7XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcmVxdWlyZWQgJiZcclxuICAgICAgICAoIXRpbWVGcm9tIHx8IHRpbWVGcm9tPy5sZW5ndGggPT09IDApICYmXHJcbiAgICAgICAgKCF0aW1lVG8gfHwgdGltZVRvPy5sZW5ndGggPT09IDApXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKHsgcmVxdWlyZWQ6IHRydWUgfSk7XHJcblxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF0aW1lRnJvbSAmJiB0aW1lVG8pIHtcclxuICAgICAgICBjb250cm9sLnNldEVycm9ycyh7IHRpbWVGcm9tUmFuZ2VSZXF1aXJlZDogdHJ1ZSB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGltZUZyb20gJiYgIXRpbWVUbykge1xyXG4gICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKHsgdGltZVRvUmFuZ2VSZXF1aXJlZDogdHJ1ZSB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGltZUZyb20gPiB0aW1lVG8pIHtcclxuICAgICAgICBjb250cm9sLnNldEVycm9ycyh7IHRpbWVGcm9tTW9yZVRoYW5UaW1lVG86IHRydWUgfSk7XHJcblxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZWNhYnMtZWxlbWVudC13cmFwcGVyIFtkYXRhXT1cImdldERhdGEoKVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkX19yYW5nZS0td3JhcHBlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRfX3JhbmdlXCI+XHJcbiAgICAgIDxlY2Ficy10aW1lcGlja2VyIFxyXG4gICAgICBbbGFiZWxdPVwic3RhcnRUaW1lUGxhY2Vob2xkZXJcIiBcclxuICAgICAgWyhuZ01vZGVsKV09XCJ0aW1lRnJvbVwiIFxyXG4gICAgICBbZGF5U3RhcnRMYWJlbF09XCJkYXlTdGFydExhYmVsXCIgXHJcbiAgICAgIFtkYXlFbmRMYWJlbF09XCJkYXlFbmRMYWJlbFwiPlxyXG4gICAgICA8L2VjYWJzLXRpbWVwaWNrZXI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8c3BhbiBjbGFzcz1cInRleHQtZ3JheS00MDAgcHgtMyB0ZXh0LXNtXCI+e3sgc2VwYXJhdG9yTGFiZWwgfX08L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZF9fcmFuZ2VcIj5cclxuICAgICAgPGVjYWJzLXRpbWVwaWNrZXIgXHJcbiAgICAgIFtsYWJlbF09XCJlbmRUaW1lUGxhY2Vob2xkZXJcIiBcclxuICAgICAgWyhuZ01vZGVsKV09XCJ0aW1lVG9cIiBcclxuICAgICAgW2RheVN0YXJ0TGFiZWxdPVwiZGF5U3RhcnRMYWJlbFwiXHJcbiAgICAgICBbZGF5RW5kTGFiZWxdPVwiZGF5RW5kTGFiZWxcIj5cclxuICAgICAgPC9lY2Ficy10aW1lcGlja2VyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZWNhYnMtZWxlbWVudC13cmFwcGVyPiJdfQ==
@@ -7,11 +7,11 @@ export class EcabsValidationComponent {
7
7
  form;
8
8
  title;
9
9
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsValidationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsValidationComponent, selector: "ecabs-validation", inputs: { validations: "validations", form: "form", title: "title" }, ngImport: i0, template: "<div class=\"form-validations\">\r\n <div class=\"header font-medium\">{{ title }}</div>\r\n <ecabs-validations-messages\r\n *ngFor=\"let validation of validations\"\r\n [showValidationOnNotTouched]=\"true\"\r\n [element]=\"form.controls[validation.controlName]\"\r\n [updatedErrors]=\"validation.errors\"\r\n ></ecabs-validations-messages>\r\n</div>\r\n", styles: [":host ::ng-deep .form-validations{background-color:var(--color-white);box-shadow:0 0 10px #0000001a;border-radius:.5rem;padding:1.5rem;line-height:1.125rem}:host ::ng-deep .form-validations .form-field__validation__item{font-size:1rem!important;color:var(--color-black)}:host ::ng-deep .form-field--invalid{transform:translateY(.825rem)}:host ::ng-deep .header{color:var(--color-error)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.ValidationComponent, selector: "ecabs-validations-messages", inputs: ["element", "label", "showValidationOnNotTouched", "updatedErrors"] }] });
10
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsValidationComponent, selector: "ecabs-validation", inputs: { validations: "validations", form: "form", title: "title" }, ngImport: i0, template: "<div class=\"form-validations\">\r\n <div class=\"header font-medium\">{{ title }}</div>\r\n <ecabs-validations-messages\r\n *ngFor=\"let validation of validations\"\r\n [showValidationOnNotTouched]=\"true\"\r\n [element]=\"form.controls[validation.controlName]\"\r\n [updatedErrors]=\"validation.errors\"\r\n ></ecabs-validations-messages>\r\n</div>\r\n", styles: [":root{--mat-standard-button-toggle-shape: calc-rem(8px) }:host ::ng-deep .form-validations{background-color:var(--color-white);box-shadow:0 0 10px #0000001a;border-radius:.5rem;padding:1.5rem;line-height:1.125rem}:host ::ng-deep .form-validations .form-field__validation__item{font-size:1rem!important;color:var(--color-black)}:host ::ng-deep .form-field--invalid{transform:translateY(.825rem)}:host ::ng-deep .header{color:var(--color-error)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.ValidationComponent, selector: "ecabs-validations-messages", inputs: ["element", "label", "showValidationOnNotTouched", "updatedErrors"] }] });
11
11
  }
12
12
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsValidationComponent, decorators: [{
13
13
  type: Component,
14
- args: [{ selector: 'ecabs-validation', template: "<div class=\"form-validations\">\r\n <div class=\"header font-medium\">{{ title }}</div>\r\n <ecabs-validations-messages\r\n *ngFor=\"let validation of validations\"\r\n [showValidationOnNotTouched]=\"true\"\r\n [element]=\"form.controls[validation.controlName]\"\r\n [updatedErrors]=\"validation.errors\"\r\n ></ecabs-validations-messages>\r\n</div>\r\n", styles: [":host ::ng-deep .form-validations{background-color:var(--color-white);box-shadow:0 0 10px #0000001a;border-radius:.5rem;padding:1.5rem;line-height:1.125rem}:host ::ng-deep .form-validations .form-field__validation__item{font-size:1rem!important;color:var(--color-black)}:host ::ng-deep .form-field--invalid{transform:translateY(.825rem)}:host ::ng-deep .header{color:var(--color-error)}\n"] }]
14
+ args: [{ selector: 'ecabs-validation', template: "<div class=\"form-validations\">\r\n <div class=\"header font-medium\">{{ title }}</div>\r\n <ecabs-validations-messages\r\n *ngFor=\"let validation of validations\"\r\n [showValidationOnNotTouched]=\"true\"\r\n [element]=\"form.controls[validation.controlName]\"\r\n [updatedErrors]=\"validation.errors\"\r\n ></ecabs-validations-messages>\r\n</div>\r\n", styles: [":root{--mat-standard-button-toggle-shape: calc-rem(8px) }:host ::ng-deep .form-validations{background-color:var(--color-white);box-shadow:0 0 10px #0000001a;border-radius:.5rem;padding:1.5rem;line-height:1.125rem}:host ::ng-deep .form-validations .form-field__validation__item{font-size:1rem!important;color:var(--color-black)}:host ::ng-deep .form-field--invalid{transform:translateY(.825rem)}:host ::ng-deep .header{color:var(--color-error)}\n"] }]
15
15
  }], propDecorators: { validations: [{
16
16
  type: Input
17
17
  }], form: [{