@guajiritos/general-autocomplete 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +144 -145
- package/esm2022/guajiritos-general-autocomplete.mjs +0 -0
- package/esm2022/lib/guachos-general-autocomplete.component.mjs +17 -16
- package/esm2022/public-api.mjs +1 -1
- package/esm2022/utils/constants/contacts.mjs +0 -0
- package/esm2022/utils/interfaces/interfaces.mjs +1 -1
- package/esm2022/utils/pipes/duration.pipe.mjs +0 -0
- package/esm2022/utils/pipes/humanize-duration.pipe.mjs +0 -0
- package/esm2022/utils/pipes/i18n-field.pipe.mjs +0 -0
- package/esm2022/utils/pipes/ida-return.pipe.mjs +0 -0
- package/esm2022/utils/pipes/pipes.module.mjs +1 -1
- package/esm2022/utils/pipes/resolve-property-path.pipe.mjs +0 -0
- package/esm2022/utils/pipes/show-roles.pipe.mjs +0 -0
- package/esm2022/utils/pipes/show-segments.pipe.mjs +0 -0
- package/esm2022/utils/pipes/show-transport-types.pipe.mjs +0 -0
- package/esm2022/utils/services/autocomplete.service.mjs +0 -0
- package/esm2022/utils/services/utils.service.mjs +0 -0
- package/fesm2022/guajiritos-general-autocomplete.mjs +16 -15
- package/fesm2022/guajiritos-general-autocomplete.mjs.map +1 -1
- package/index.d.ts +0 -0
- package/lib/guachos-general-autocomplete.component.d.ts +3 -2
- package/package.json +2 -2
- package/public-api.d.ts +0 -0
- package/theme.scss +14 -14
- package/utils/constants/contacts.d.ts +0 -0
- package/utils/interfaces/interfaces.d.ts +0 -0
- package/utils/pipes/duration.pipe.d.ts +0 -0
- package/utils/pipes/humanize-duration.pipe.d.ts +0 -0
- package/utils/pipes/i18n-field.pipe.d.ts +0 -0
- package/utils/pipes/ida-return.pipe.d.ts +0 -0
- package/utils/pipes/pipes.module.d.ts +0 -0
- package/utils/pipes/resolve-property-path.pipe.d.ts +0 -0
- package/utils/pipes/show-roles.pipe.d.ts +0 -0
- package/utils/pipes/show-segments.pipe.d.ts +0 -0
- package/utils/pipes/show-transport-types.pipe.d.ts +0 -0
- package/utils/services/autocomplete.service.d.ts +0 -0
- package/utils/services/utils.service.d.ts +0 -0
package/README.md
CHANGED
@@ -1,145 +1,144 @@
|
|
1
|
-
# Guajiritos General Autocomplete
|
2
|
-
|
3
|
-
`Guajiritos General Autocomplete` es una librería para Angular que proporciona un componente con una funcionalidad de
|
4
|
-
autocompletar elementos con peticiones a un API-REST.
|
5
|
-
|
6
|
-
## Instalación
|
7
|
-
|
8
|
-
Con `npm`
|
9
|
-
|
10
|
-
```sh
|
11
|
-
npm i @guajiritos/general-autocomplete --save
|
12
|
-
```
|
13
|
-
|
14
|
-
Con `yarn`
|
15
|
-
|
16
|
-
```sh
|
17
|
-
yarn add @guajiritos/general-autocomplete
|
18
|
-
```
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
```
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
```
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
* `
|
101
|
-
* `
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
* `
|
111
|
-
* `
|
112
|
-
* `
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
```
|
1
|
+
# Guajiritos General Autocomplete
|
2
|
+
|
3
|
+
`Guajiritos General Autocomplete` es una librería para Angular que proporciona un componente con una funcionalidad de
|
4
|
+
autocompletar elementos con peticiones a un API-REST.
|
5
|
+
|
6
|
+
## Instalación
|
7
|
+
|
8
|
+
Con `npm`
|
9
|
+
|
10
|
+
```sh
|
11
|
+
npm i @guajiritos/general-autocomplete --save
|
12
|
+
```
|
13
|
+
|
14
|
+
Con `yarn`
|
15
|
+
|
16
|
+
```sh
|
17
|
+
yarn add @guajiritos/general-autocomplete
|
18
|
+
```
|
19
|
+
|
20
|
+
Con `pnpm`
|
21
|
+
|
22
|
+
```sh
|
23
|
+
pnpm add @guajiritos/general-autocomplete
|
24
|
+
```
|
25
|
+
|
26
|
+
Importar la dependencia en tu proyecto.
|
27
|
+
|
28
|
+
```ts
|
29
|
+
import {GuajiritosGeneralAutocomplete} from '@guajiritos/general-autocomplete';
|
30
|
+
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
|
31
|
+
|
32
|
+
@NgModule({
|
33
|
+
imports: [
|
34
|
+
GuajiritosGeneralAutocomplete,
|
35
|
+
BrowserAnimationsModule
|
36
|
+
]
|
37
|
+
})
|
38
|
+
```
|
39
|
+
|
40
|
+
Importar la etiqueta en el componente correspondiente.
|
41
|
+
|
42
|
+
```html
|
43
|
+
...
|
44
|
+
<guajiritos-general-autocomplete></guajiritos-general-autocomplete>
|
45
|
+
...
|
46
|
+
```
|
47
|
+
|
48
|
+
## Entrada
|
49
|
+
|
50
|
+
Como elementos opcionales se pueden introducir los siguientes campos:
|
51
|
+
|
52
|
+
* `floatLabel` - Corresponde a un valor `FloatLabelType` de @angular/material. Por defecto toma valor `auto`
|
53
|
+
|
54
|
+
```html
|
55
|
+
...
|
56
|
+
<guajiritos-general-autocomplete [floatLabel]="'always'"></guajiritos-general-autocomplete>
|
57
|
+
...
|
58
|
+
```
|
59
|
+
|
60
|
+
* `bodyRequest` - Corresponde a un valor de la interfaz `ApiFormData`.
|
61
|
+
* `debounceTimeValue` - Valor numérico para el tiempo de espera entre peticiones con la entrada de datos de búsqueda. Por defecto 250 ms.
|
62
|
+
* `detailsTemplate` - Corresponde a un valor `TemplateRef`.
|
63
|
+
* `label` - Corresponde al texto a mostrar en el componente del `input`.
|
64
|
+
* `showLabel` - Muestra u oculta el label.
|
65
|
+
|
66
|
+
```html
|
67
|
+
...
|
68
|
+
<guajiritos-general-autocomplete [label]="Hoteles"></guajiritos-general-autocomplete>
|
69
|
+
...
|
70
|
+
```
|
71
|
+
|
72
|
+
* `placeholder` - Corresponde al texto del placeholder a mostrar en el componente del `input`.
|
73
|
+
|
74
|
+
```html
|
75
|
+
...
|
76
|
+
<guajiritos-general-autocomplete [placeholder]="Seleccione un hotel"></guajiritos-general-autocomplete>
|
77
|
+
...
|
78
|
+
```
|
79
|
+
|
80
|
+
* `field` - Un arreglo de valores correspondiente a la ruta del campo a mostrar en el componente de `autocomplete`.
|
81
|
+
|
82
|
+
```html
|
83
|
+
...
|
84
|
+
<guajiritos-general-autocomplete [field]="['hotel', 'name']"></guajiritos-general-autocomplete>
|
85
|
+
...
|
86
|
+
```
|
87
|
+
|
88
|
+
* `filterString` - Corresponde a los posibles filtros que se pueden enviar en las peticiones.
|
89
|
+
* `displayOptions` - Corresponde a un valor de la interfaz `DisplayOption`.
|
90
|
+
* `withoutPaddingBottom` - Si elimina el relleno del componente.
|
91
|
+
* `valueId` - Si el valor a manejar es el `id` del objeto. Por defector toma valor `false`.
|
92
|
+
|
93
|
+
```html
|
94
|
+
...
|
95
|
+
<guajiritos-general-autocomplete [valueId]="true"></guajiritos-general-autocomplete>
|
96
|
+
...
|
97
|
+
```
|
98
|
+
|
99
|
+
* `order` - Parámetro para ordenar la respuesta de las peticiones.
|
100
|
+
* `removeProperties` - Eliminar propiedades de las peticiones.
|
101
|
+
* `url` - Ruta para las peticiones API.
|
102
|
+
|
103
|
+
```html
|
104
|
+
...
|
105
|
+
<guajiritos-general-autocomplete [url]="https://www.guajiritos.com/"></guajiritos-general-autocomplete>
|
106
|
+
...
|
107
|
+
```
|
108
|
+
|
109
|
+
* `clearData` - Limpia los valores del formulario reactivo.
|
110
|
+
* `initialValue` - Valor inicial del formulario reactivo.
|
111
|
+
* `restrictions` - Restricciones de las peticiones.
|
112
|
+
* `isRequired` - Es requerida la selección de algún valor. Por defecto toma valor `false`.
|
113
|
+
|
114
|
+
```html
|
115
|
+
...
|
116
|
+
<guajiritos-general-autocomplete [isRequired]="true"></guajiritos-general-autocomplete>
|
117
|
+
...
|
118
|
+
```
|
119
|
+
|
120
|
+
* `doFocus` - Activa la propiedad focus del elemento.
|
121
|
+
|
122
|
+
## Salida
|
123
|
+
|
124
|
+
Salida del componente
|
125
|
+
|
126
|
+
* `SelectElement` - Elemento seleccionado
|
127
|
+
|
128
|
+
### Entrada de formulario reactivo
|
129
|
+
|
130
|
+
Este componente permite la entrada de un formulario reactivo para el manejo de los valores.
|
131
|
+
|
132
|
+
```html
|
133
|
+
...
|
134
|
+
<guajiritos-general-autocomplete [formControl]="control"></guajiritos-general-autocomplete>
|
135
|
+
...
|
136
|
+
```
|
137
|
+
|
138
|
+
o
|
139
|
+
|
140
|
+
```html
|
141
|
+
...
|
142
|
+
<guajiritos-general-autocomplete formControlName="controlName"></guajiritos-general-autocomplete>
|
143
|
+
...
|
144
|
+
```
|
File without changes
|
@@ -48,8 +48,9 @@ export class GuajiritosGeneralAutocomplete {
|
|
48
48
|
* Possible values 'never', 'auto' or 'always'
|
49
49
|
*/
|
50
50
|
this.floatLabel = 'auto';
|
51
|
-
this.debounceTimeValue =
|
51
|
+
this.debounceTimeValue = 300;
|
52
52
|
this.label = 'Seleccione';
|
53
|
+
this.showLabel = true;
|
53
54
|
this.appearance = 'outline';
|
54
55
|
this.color = 'accent';
|
55
56
|
this.placeholder = 'Seleccione un elemento';
|
@@ -89,15 +90,6 @@ export class GuajiritosGeneralAutocomplete {
|
|
89
90
|
}
|
90
91
|
};
|
91
92
|
}
|
92
|
-
set disable(flag) {
|
93
|
-
this.disabledButton.set(flag);
|
94
|
-
if (flag) {
|
95
|
-
this.component.disable();
|
96
|
-
}
|
97
|
-
else {
|
98
|
-
this.component.enable();
|
99
|
-
}
|
100
|
-
}
|
101
93
|
set url(data) {
|
102
94
|
if (data) {
|
103
95
|
this._url.set(data);
|
@@ -267,6 +259,15 @@ export class GuajiritosGeneralAutocomplete {
|
|
267
259
|
this.selectedElement.set(null);
|
268
260
|
}
|
269
261
|
}
|
262
|
+
setDisabledState(isDisabled) {
|
263
|
+
this.disabledButton.set(isDisabled);
|
264
|
+
if (isDisabled) {
|
265
|
+
this.component.disable();
|
266
|
+
}
|
267
|
+
else {
|
268
|
+
this.component.enable();
|
269
|
+
}
|
270
|
+
}
|
270
271
|
/**
|
271
272
|
* Acción al limpiar el valor del input
|
272
273
|
*
|
@@ -315,13 +316,13 @@ export class GuajiritosGeneralAutocomplete {
|
|
315
316
|
this.unsubscribeAll$.complete();
|
316
317
|
}
|
317
318
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: GuajiritosGeneralAutocomplete, deps: [{ token: i1.AutocompleteService }, { token: i0.NgZone }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
318
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: GuajiritosGeneralAutocomplete, isStandalone: true, selector: "guajiritos-general-autocomplete", inputs: { floatLabel: "floatLabel", bodyRequest: "bodyRequest", debounceTimeValue: "debounceTimeValue", detailsTemplate: "detailsTemplate", label: "label", appearance: "appearance", color: "color", placeholder: "placeholder", field: "field", filterString: "filterString", displayOptions: "displayOptions", withoutPaddingBottom: "withoutPaddingBottom", valueId: "valueId", order: "order", removeProperties: "removeProperties",
|
319
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: GuajiritosGeneralAutocomplete, isStandalone: true, selector: "guajiritos-general-autocomplete", inputs: { floatLabel: "floatLabel", bodyRequest: "bodyRequest", debounceTimeValue: "debounceTimeValue", detailsTemplate: "detailsTemplate", label: "label", showLabel: "showLabel", appearance: "appearance", color: "color", placeholder: "placeholder", field: "field", filterString: "filterString", displayOptions: "displayOptions", withoutPaddingBottom: "withoutPaddingBottom", valueId: "valueId", order: "order", removeProperties: "removeProperties", url: "url", clearData: "clearData", initialValue: "initialValue", restrictions: "restrictions", isRequired: "isRequired", doFocus: "doFocus" }, outputs: { SelectElement: "SelectElement" }, providers: [
|
319
320
|
{
|
320
321
|
provide: NG_VALUE_ACCESSOR,
|
321
322
|
useExisting: forwardRef(() => GuajiritosGeneralAutocomplete),
|
322
323
|
multi: true
|
323
324
|
}
|
324
|
-
], viewQueries: [{ propertyName: "inputText", first: true, predicate: ["inputText"], descendants: true, static: true }], ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\" [ngClass]=\"{'without-padding-bottom': withoutPaddingBottom}\" class=\"w-100\"\r\n [appearance]=\"appearance\" [color]=\"color\">\r\n\r\n <mat-label>{{label | translate}}</mat-label>\r\n <input #inputText #trigger=\"matAutocompleteTrigger\" (focus)=\"onFocus()\" [formControl]=\"component\"\r\n [matAutocomplete]=\"autocomplete\" [placeholder]=\"placeholder | translate\" aria-label=\"autocomplete\"\r\n autocomplete=\"off\" matInput type=\"text\" [required]=\"required()\">\r\n <button (click)=\"clear(trigger)\" *ngIf=\"!loading() && component?.value\" [disabled]=\"disabledButton()\"\r\n aria-label=\"Clear\" mat-icon-button matSuffix>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <button *ngIf=\"loading()\" aria-label=\"search\" mat-icon-button matSuffix>\r\n <mat-spinner [value]=\"90\" color=\"accent\" diameter=\"25\"></mat-spinner>\r\n </button>\r\n <mat-autocomplete #autocomplete=\"matAutocomplete\" [displayWith]=\"displayFn\">\r\n <mat-option *ngFor=\"let option of filteredOptions()\" [value]=\"option\" (onSelectionChange)=\"onSelectElement(option)\">\r\n\r\n <ng-container *ngIf=\"!displayOptions && !detailsTemplate\">\r\n {{ option?.name | i18nField: translateService.currentLang }}\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!detailsTemplate\">\r\n <div class=\"display-options\">\r\n <span [ngStyle]=\"{'line-height': displayOptions?.secondLabel ? '16px' : ''}\">\r\n {{option | resolvePropertyPath:displayOptions.firthLabel | i18nField: translateService.currentLang}}\r\n </span>\r\n <span *ngIf=\"displayOptions?.secondLabel\" class=\"mat-caption\">\r\n {{option | resolvePropertyPath: displayOptions.secondLabel | i18nField: translateService.currentLang}}\r\n </span>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"detailsTemplate\">\r\n <ng-container *ngTemplateOutlet=\"detailsTemplate;context:{$implicit: option }\"></ng-container>\r\n </ng-container>\r\n </mat-option>\r\n </mat-autocomplete>\r\n\r\n <mat-error *ngIf=\"component.invalid\">\r\n {{'Este campo es requerido.' | translate}}\r\n </mat-error>\r\n</mat-form-field>\r\n", styles: [".w-100{width:100%}.display-options{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i4.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i4.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i10.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: PipesModule }, { kind: "pipe", type: i11.I18nFieldPipe, name: "i18nField" }, { kind: "pipe", type: i12.ResolvePropertyPath, name: "resolvePropertyPath" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
325
|
+
], viewQueries: [{ propertyName: "inputText", first: true, predicate: ["inputText"], descendants: true, static: true }], ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\" [ngClass]=\"{'without-padding-bottom': withoutPaddingBottom}\" class=\"w-100\"\r\n [appearance]=\"appearance\" [color]=\"color\">\r\n\r\n <mat-label *ngIf=\"showLabel\">{{label | translate}}</mat-label>\r\n <input #inputText #trigger=\"matAutocompleteTrigger\" (focus)=\"onFocus()\" [formControl]=\"component\"\r\n [matAutocomplete]=\"autocomplete\" [placeholder]=\"placeholder | translate\" aria-label=\"autocomplete\"\r\n autocomplete=\"off\" matInput type=\"text\" [required]=\"required()\">\r\n <button (click)=\"clear(trigger)\" *ngIf=\"!loading() && component?.value\" [disabled]=\"disabledButton()\"\r\n aria-label=\"Clear\" mat-icon-button matSuffix>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <button *ngIf=\"loading()\" aria-label=\"search\" mat-icon-button matSuffix>\r\n <mat-spinner [value]=\"90\" color=\"accent\" diameter=\"25\"></mat-spinner>\r\n </button>\r\n <mat-autocomplete #autocomplete=\"matAutocomplete\" [displayWith]=\"displayFn\">\r\n <mat-option *ngFor=\"let option of filteredOptions()\" [value]=\"option\" (onSelectionChange)=\"onSelectElement(option)\">\r\n\r\n <ng-container *ngIf=\"!displayOptions && !detailsTemplate\">\r\n {{ option?.name | i18nField: translateService.currentLang }}\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!detailsTemplate\">\r\n <div class=\"display-options\">\r\n <span [ngStyle]=\"{'line-height': displayOptions?.secondLabel ? '16px' : ''}\">\r\n {{option | resolvePropertyPath:displayOptions.firthLabel | i18nField: translateService.currentLang}}\r\n </span>\r\n <span *ngIf=\"displayOptions?.secondLabel\" class=\"mat-caption\">\r\n {{option | resolvePropertyPath: displayOptions.secondLabel | i18nField: translateService.currentLang}}\r\n </span>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"detailsTemplate\">\r\n <ng-container *ngTemplateOutlet=\"detailsTemplate;context:{$implicit: option }\"></ng-container>\r\n </ng-container>\r\n </mat-option>\r\n </mat-autocomplete>\r\n\r\n <mat-error *ngIf=\"component.invalid\">\r\n {{'Este campo es requerido.' | translate}}\r\n </mat-error>\r\n</mat-form-field>\r\n", styles: [".w-100{width:100%}.display-options{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i4.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i4.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i10.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: PipesModule }, { kind: "pipe", type: i11.I18nFieldPipe, name: "i18nField" }, { kind: "pipe", type: i12.ResolvePropertyPath, name: "resolvePropertyPath" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
325
326
|
}
|
326
327
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: GuajiritosGeneralAutocomplete, decorators: [{
|
327
328
|
type: Component,
|
@@ -346,7 +347,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImpor
|
|
346
347
|
useExisting: forwardRef(() => GuajiritosGeneralAutocomplete),
|
347
348
|
multi: true
|
348
349
|
}
|
349
|
-
], template: "<mat-form-field [floatLabel]=\"floatLabel\" [ngClass]=\"{'without-padding-bottom': withoutPaddingBottom}\" class=\"w-100\"\r\n [appearance]=\"appearance\" [color]=\"color\">\r\n\r\n <mat-label>{{label | translate}}</mat-label>\r\n <input #inputText #trigger=\"matAutocompleteTrigger\" (focus)=\"onFocus()\" [formControl]=\"component\"\r\n [matAutocomplete]=\"autocomplete\" [placeholder]=\"placeholder | translate\" aria-label=\"autocomplete\"\r\n autocomplete=\"off\" matInput type=\"text\" [required]=\"required()\">\r\n <button (click)=\"clear(trigger)\" *ngIf=\"!loading() && component?.value\" [disabled]=\"disabledButton()\"\r\n aria-label=\"Clear\" mat-icon-button matSuffix>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <button *ngIf=\"loading()\" aria-label=\"search\" mat-icon-button matSuffix>\r\n <mat-spinner [value]=\"90\" color=\"accent\" diameter=\"25\"></mat-spinner>\r\n </button>\r\n <mat-autocomplete #autocomplete=\"matAutocomplete\" [displayWith]=\"displayFn\">\r\n <mat-option *ngFor=\"let option of filteredOptions()\" [value]=\"option\" (onSelectionChange)=\"onSelectElement(option)\">\r\n\r\n <ng-container *ngIf=\"!displayOptions && !detailsTemplate\">\r\n {{ option?.name | i18nField: translateService.currentLang }}\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!detailsTemplate\">\r\n <div class=\"display-options\">\r\n <span [ngStyle]=\"{'line-height': displayOptions?.secondLabel ? '16px' : ''}\">\r\n {{option | resolvePropertyPath:displayOptions.firthLabel | i18nField: translateService.currentLang}}\r\n </span>\r\n <span *ngIf=\"displayOptions?.secondLabel\" class=\"mat-caption\">\r\n {{option | resolvePropertyPath: displayOptions.secondLabel | i18nField: translateService.currentLang}}\r\n </span>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"detailsTemplate\">\r\n <ng-container *ngTemplateOutlet=\"detailsTemplate;context:{$implicit: option }\"></ng-container>\r\n </ng-container>\r\n </mat-option>\r\n </mat-autocomplete>\r\n\r\n <mat-error *ngIf=\"component.invalid\">\r\n {{'Este campo es requerido.' | translate}}\r\n </mat-error>\r\n</mat-form-field>\r\n", styles: [".w-100{width:100%}.display-options{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}\n"] }]
|
350
|
+
], template: "<mat-form-field [floatLabel]=\"floatLabel\" [ngClass]=\"{'without-padding-bottom': withoutPaddingBottom}\" class=\"w-100\"\r\n [appearance]=\"appearance\" [color]=\"color\">\r\n\r\n <mat-label *ngIf=\"showLabel\">{{label | translate}}</mat-label>\r\n <input #inputText #trigger=\"matAutocompleteTrigger\" (focus)=\"onFocus()\" [formControl]=\"component\"\r\n [matAutocomplete]=\"autocomplete\" [placeholder]=\"placeholder | translate\" aria-label=\"autocomplete\"\r\n autocomplete=\"off\" matInput type=\"text\" [required]=\"required()\">\r\n <button (click)=\"clear(trigger)\" *ngIf=\"!loading() && component?.value\" [disabled]=\"disabledButton()\"\r\n aria-label=\"Clear\" mat-icon-button matSuffix>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <button *ngIf=\"loading()\" aria-label=\"search\" mat-icon-button matSuffix>\r\n <mat-spinner [value]=\"90\" color=\"accent\" diameter=\"25\"></mat-spinner>\r\n </button>\r\n <mat-autocomplete #autocomplete=\"matAutocomplete\" [displayWith]=\"displayFn\">\r\n <mat-option *ngFor=\"let option of filteredOptions()\" [value]=\"option\" (onSelectionChange)=\"onSelectElement(option)\">\r\n\r\n <ng-container *ngIf=\"!displayOptions && !detailsTemplate\">\r\n {{ option?.name | i18nField: translateService.currentLang }}\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!detailsTemplate\">\r\n <div class=\"display-options\">\r\n <span [ngStyle]=\"{'line-height': displayOptions?.secondLabel ? '16px' : ''}\">\r\n {{option | resolvePropertyPath:displayOptions.firthLabel | i18nField: translateService.currentLang}}\r\n </span>\r\n <span *ngIf=\"displayOptions?.secondLabel\" class=\"mat-caption\">\r\n {{option | resolvePropertyPath: displayOptions.secondLabel | i18nField: translateService.currentLang}}\r\n </span>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"detailsTemplate\">\r\n <ng-container *ngTemplateOutlet=\"detailsTemplate;context:{$implicit: option }\"></ng-container>\r\n </ng-container>\r\n </mat-option>\r\n </mat-autocomplete>\r\n\r\n <mat-error *ngIf=\"component.invalid\">\r\n {{'Este campo es requerido.' | translate}}\r\n </mat-error>\r\n</mat-form-field>\r\n", styles: [".w-100{width:100%}.display-options{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}\n"] }]
|
350
351
|
}], ctorParameters: function () { return [{ type: i1.AutocompleteService }, { type: i0.NgZone }, { type: i2.TranslateService }]; }, propDecorators: { inputText: [{
|
351
352
|
type: ViewChild,
|
352
353
|
args: ['inputText', { static: true }]
|
@@ -360,6 +361,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImpor
|
|
360
361
|
type: Input
|
361
362
|
}], label: [{
|
362
363
|
type: Input
|
364
|
+
}], showLabel: [{
|
365
|
+
type: Input
|
363
366
|
}], appearance: [{
|
364
367
|
type: Input
|
365
368
|
}], color: [{
|
@@ -382,8 +385,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImpor
|
|
382
385
|
type: Input
|
383
386
|
}], SelectElement: [{
|
384
387
|
type: Output
|
385
|
-
}], disable: [{
|
386
|
-
type: Input
|
387
388
|
}], url: [{
|
388
389
|
type: Input
|
389
390
|
}], clearData: [{
|
@@ -397,4 +398,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImpor
|
|
397
398
|
}], doFocus: [{
|
398
399
|
type: Input
|
399
400
|
}] } });
|
400
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhY2hvcy1nZW5lcmFsLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWFjaG9zLWdlbmVyYWwtYXV0b2NvbXBsZXRlL3NyYy9saWIvZ3VhY2hvcy1nZW5lcmFsLWF1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWFjaG9zLWdlbmVyYWwtYXV0b2NvbXBsZXRlL3NyYy9saWIvZ3VhY2hvcy1nZW5lcmFsLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUdOLE1BQU0sRUFDTixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixrQkFBa0IsRUFFbEIsVUFBVSxFQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLHFCQUFxQixFQUF5QixNQUFNLGdDQUFnQyxDQUFDO0FBQzdGLE9BQU8sRUFBeUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RyxPQUFPLEVBQUMsZUFBZSxFQUFFLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFDLFlBQVksRUFBYyxPQUFPLEVBQUUsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGVB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QWhELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFJN0IsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNJLGFBQWE7c0JBQXRCLE1BQU07Z0JBRU0sT0FBTztzQkFBbkIsS0FBSztnQkFTTyxHQUFHO3NCQUFmLEtBQUs7Z0JBT08sU0FBUztzQkFBckIsS0FBSztnQkFpQk8sWUFBWTtzQkFBeEIsS0FBSztnQkFTTyxZQUFZO3NCQUF4QixLQUFLO2dCQWFPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBaUJPLE9BQU87c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIHNpZ25hbCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgV3JpdGFibGVTaWduYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVW50eXBlZEZvcm1Db250cm9sLFxuICBWYWxpZGF0b3JGbixcbiAgVmFsaWRhdG9yc1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge01hdEF1dG9jb21wbGV0ZU1vZHVsZSwgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7RmxvYXRMYWJlbFR5cGUsIE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UsIE1hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZVVudGlsfSBmcm9tICdyeGpzJztcbmltcG9ydCB7TmdDbGFzcywgTmdGb3JPZiwgTmdJZiwgTmdTdHlsZSwgTmdUZW1wbGF0ZU91dGxldH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtNYXRJbnB1dE1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XG5pbXBvcnQge01hdEJ1dHRvbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvblwiO1xuaW1wb3J0IHtNYXRJY29uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xuaW1wb3J0IHtNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyXCI7XG5pbXBvcnQge1RoZW1lUGFsZXR0ZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcblxuaW1wb3J0IHtHRU5FUkFMX0RJU1BMQVlfT1BUSU9OU30gZnJvbSAnLi4vdXRpbHMvY29uc3RhbnRzL2NvbnRhY3RzJztcbmltcG9ydCB7QXV0b2NvbXBsZXRlU2VydmljZX0gZnJvbSAnLi4vdXRpbHMvc2VydmljZXMvYXV0b2NvbXBsZXRlLnNlcnZpY2UnO1xuaW1wb3J0IHtVdGlsc1NlcnZpY2V9IGZyb20gJy4uL3V0aWxzL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHtBcGlGb3JtRGF0YSwgRGlzcGxheU9wdGlvbiwgUmVzdHJpY3Rpb25GaWx0ZXJ9IGZyb20gXCIuLi91dGlscy9pbnRlcmZhY2VzL2ludGVyZmFjZXNcIjtcbmltcG9ydCB7UGlwZXNNb2R1bGV9IGZyb20gXCIuLi91dGlscy9waXBlcy9waXBlcy5tb2R1bGVcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ3VhamlyaXRvcy1nZW5lcmFsLWF1dG9jb21wbGV0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9ndWFjaG9zLWdlbmVyYWwtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ3VhY2hvcy1nZW5lcmFsLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBOZ0NsYXNzLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG4gICAgTmdJZixcbiAgICBOZ0Zvck9mLFxuICAgIE5nU3R5bGUsXG4gICAgUGlwZXNNb2R1bGUsXG4gICAgTmdUZW1wbGF0ZU91dGxldFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEd1YWppcml0b3NHZW5lcmFsQXV0b2NvbXBsZXRlKSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEd1YWppcml0b3NHZW5lcmFsQXV0b2NvbXBsZXRlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9hdXRvY29tcGxldGVTZXJ2aWNlOiBBdXRvY29tcGxldGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3pvbmU6IE5nWm9uZSxcbiAgICBwdWJsaWMgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgKSB7XG4gIH1cblxuICBwcml2YXRlIHdhc1NlbGVjdGVkOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgZmlyc3RDYWxsOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHNpZ25hbCh0cnVlKTtcbiAgcHJpdmF0ZSBjbGVhckRhdGEkOiBTdWJqZWN0PHZvaWQ+O1xuICBwcml2YXRlIHVuc3Vic2NyaWJlQWxsJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgZG9Gb2N1c1N1YmplY3QkOiBTdWJqZWN0PHZvaWQ+O1xuICBwcml2YXRlIHNlbGVjdGVkRWxlbWVudDogV3JpdGFibGVTaWduYWw8YW55PiA9IHNpZ25hbChudWxsKTtcbiAgcHJpdmF0ZSBfdXJsOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+ID0gc2lnbmFsKG51bGwpO1xuICBwcml2YXRlIHJlc3RyaWN0aW9uc0ZpbHRlcnM6IFdyaXRhYmxlU2lnbmFsPFJlc3RyaWN0aW9uRmlsdGVyW10+ID0gc2lnbmFsKFtdKTtcblxuICBwdWJsaWMgZGlzYWJsZWRCdXR0b246IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcbiAgcHVibGljIGxvYWRpbmc6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcbiAgcHVibGljIHJlcXVpcmVkOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHNpZ25hbChmYWxzZSk7XG4gIHB1YmxpYyBmaWx0ZXJlZE9wdGlvbnM6IFdyaXRhYmxlU2lnbmFsPGFueVtdPiA9IHNpZ25hbChbXSk7XG4gIHB1YmxpYyBjb21wb25lbnQ6IFVudHlwZWRGb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woe1xuICAgIHZhbHVlOiBudWxsLCBkaXNhYmxlZDogZmFsc2VcbiAgfSk7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXRUZXh0Jywge3N0YXRpYzogdHJ1ZX0pIGlucHV0VGV4dDogRWxlbWVudFJlZjtcbiAgLyoqXG4gICAqIFBvc3NpYmxlIHZhbHVlcyAnbmV2ZXInLCAnYXV0bycgb3IgJ2Fsd2F5cydcbiAgICovXG4gIEBJbnB1dCgpIGZsb2F0TGFiZWw6IEZsb2F0TGFiZWxUeXBlID0gJ2F1dG8nO1xuICBASW5wdXQoKSBib2R5UmVxdWVzdDogQXBpRm9ybURhdGE7XG4gIEBJbnB1dCgpIGRlYm91bmNlVGltZVZhbHVlOiBudW1iZXIgPSAyNTA7XG4gIEBJbnB1dCgpIGRldGFpbHNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9ICdTZWxlY2Npb25lJztcbiAgQElucHV0KCkgYXBwZWFyYW5jZTogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSA9ICdvdXRsaW5lJztcbiAgQElucHV0KCkgY29sb3I6IFRoZW1lUGFsZXR0ZSA9ICdhY2NlbnQnO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ1NlbGVjY2lvbmUgdW4gZWxlbWVudG8nO1xuICBASW5wdXQoKSBmaWVsZDogc3RyaW5nW10gPSBbJ25hbWUnXTtcbiAgQElucHV0KCkgZmlsdGVyU3RyaW5nOiBzdHJpbmcgPSAnZmlsdGVyWyRhbmRdW25hbWVdWyRsaWtlXSc7XG4gIEBJbnB1dCgpIGRpc3BsYXlPcHRpb25zOiBEaXNwbGF5T3B0aW9uID0gR0VORVJBTF9ESVNQTEFZX09QVElPTlM7XG4gIEBJbnB1dCgpIHdpdGhvdXRQYWRkaW5nQm90dG9tOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgdmFsdWVJZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBvcmRlcjogc3RyaW5nID0gbnVsbDtcbiAgQElucHV0KCkgcmVtb3ZlUHJvcGVydGllczogc3RyaW5nW10gPSBbXTtcbiAgQE91dHB1dCgpIFNlbGVjdEVsZW1lbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQElucHV0KCkgc2V0IGRpc2FibGUoZmxhZzogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWRCdXR0b24uc2V0KGZsYWcpO1xuICAgIGlmIChmbGFnKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudC5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29tcG9uZW50LmVuYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIHNldCB1cmwoZGF0YTogc3RyaW5nKSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMuX3VybC5zZXQoZGF0YSk7XG4gICAgICB0aGlzLnN1YnNjcmliZUNvbXBvbmVudENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKSBzZXQgY2xlYXJEYXRhKHZhbHVlOiBTdWJqZWN0PHZvaWQ+KSB7XG4gICAgdGhpcy5jbGVhckRhdGEkID0gdmFsdWU7XG4gICAgaWYgKHRoaXMuY2xlYXJEYXRhJCkge1xuICAgICAgdGhpcy5jbGVhckRhdGEkXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlQWxsJCkpXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50LnNldFZhbHVlKG51bGwsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC5zZXQobnVsbCk7XG4gICAgICAgICAgICB0aGlzLlNlbGVjdEVsZW1lbnQuZW1pdChudWxsKTtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zLnNldChbXSk7XG4gICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBpbml0aWFsVmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMuY29tcG9uZW50LnNldFZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBw7FhZGUgbyBlbGltaW5hIHJlc3RyaWNjaW9uZXMgcGFyYSBsYSBiw7pzcXVlZGFcbiAgICpcbiAgICogQHBhcmFtIHJlc3RyaWN0aW9ucyAtIFJlc3RyaWNjaW9uZXMgcGFyYSBsYSBiw7pzcXVlZGFcbiAgICovXG4gIEBJbnB1dCgpIHNldCByZXN0cmljdGlvbnMocmVzdHJpY3Rpb25zOiBSZXN0cmljdGlvbkZpbHRlcltdKSB7XG4gICAgaWYgKHJlc3RyaWN0aW9ucykge1xuICAgICAgdGhpcy5yZXN0cmljdGlvbnNGaWx0ZXJzLnNldChyZXN0cmljdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc3RyaWN0aW9uc0ZpbHRlcnMuc2V0KFtdKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQcOxYWRlIG8gZWxpbWluYSBsYSB2YWxpZGFjacOzbiBkZSBxdWUgZWwgY2FtcG8gc2VhIHJlcXVlcmlkb1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWlyZWQgLSBEZWZpbmUgc2kgZXMgcmVxdWVyaWRvIG8gbm9cbiAgICovXG4gIEBJbnB1dCgpIHNldCBpc1JlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5yZXF1aXJlZC5zZXQocmVxdWlyZWQpO1xuXG4gICAgaWYgKHJlcXVpcmVkKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBHdWFqaXJpdG9zR2VuZXJhbEF1dG9jb21wbGV0ZS5hdXRvY29tcGxldGVWYWxpZGF0b3JdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb21wb25lbnQuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgfVxuXG4gICAgdGhpcy5jb21wb25lbnQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSBzaSB2YW1vcyBhIHJlYWxpemFyIHVuYSBiw7pzcXVlZGEgYWwgZWxlbWVudG8gZXN0YXIgZW4gZWwgZm9jdXMgZGUgbGEgYXBsaWNhY2nDs25cbiAgICpcbiAgICogQHBhcmFtIGZvY3VzU3ViamVjdCAtIE9ic2VydmFibGUgcGFyYSBsYSBzdWJzY3JpcGNpw7NuIGFsIGV2ZW50byBGb2N1c1xuICAgKi9cbiAgQElucHV0KCkgc2V0IGRvRm9jdXMoZm9jdXNTdWJqZWN0OiBTdWJqZWN0PHZvaWQ+KSB7XG4gICAgdGhpcy5kb0ZvY3VzU3ViamVjdCQgPSBmb2N1c1N1YmplY3Q7XG5cbiAgICBpZiAodGhpcy5kb0ZvY3VzU3ViamVjdCQpIHtcbiAgICAgIHRoaXMuZG9Gb2N1c1N1YmplY3QkXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlQWxsJCkpXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3pvbmUucnVuKCgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dFRleHQ/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGFjacOzbiBjdXN0b21pemFkYSBwYXJhIGxhIHNlbGVjY2nDs24gZGUgZWxlbWVudG9zXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBhdXRvY29tcGxldGVWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IG51bGwgPT4ge1xuICAgICAgaWYgKGNvbnRyb2w/LnZhbHVlPy5jb25zdHJ1Y3RvciAhPT0gT2JqZWN0IHx8ICFjb250cm9sPy52YWx1ZT8uaWQpIHtcbiAgICAgICAgcmV0dXJuIHtpbnZhbGlkU2VsZWN0aW9uOiB0cnVlfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaXBjacOzbiBhIGxvcyBjYW1iaW9zIGRlbCBpbnB1dCBkZSBiw7pzcXVlZGFcbiAgICovXG4gIHByaXZhdGUgc3Vic2NyaWJlQ29tcG9uZW50Q2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvbmVudD8udmFsdWVDaGFuZ2VzXG4gICAgICA/LnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lVmFsdWUpLCB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZUFsbCQpKVxuICAgICAgPy5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgaWYgKCF0aGlzLmZpcnN0Q2FsbCgpICYmICF0aGlzLndhc1NlbGVjdGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0QXV0b2NvbXBsZXRlQnlUZXh0SGFuZGxlcih0aGlzLmdldEF1dG9jb21wbGV0ZVNlYXJjaFRleHQoKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmlyc3RDYWxsLnNldChmYWxzZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy53YXNTZWxlY3RlZC5zZXQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCw7pzcXVlZGEgZGUgbG9zIGVsZW1lbnRvcyBhIG1vc3RyYXIgZW4gZWwgY29tcG9uZW50ZSBkZSBhdXRvY29tcGxldGFtaWVudG9cbiAgICpcbiAgICogQHBhcmFtIHRleHQgLSBUZXh0byBhIGJ1c2NhclxuICAgKi9cbiAgcHJpdmF0ZSBnZXRBdXRvY29tcGxldGVCeVRleHRIYW5kbGVyKHRleHQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9hdXRvY29tcGxldGVTZXJ2aWNlXG4gICAgICAuZ2V0QXV0b2NvbXBsZXRlQnlUZXh0KHRoaXMuX3VybCgpLCB0ZXh0LCB0aGlzLmZpbHRlclN0cmluZywgdGhpcy5yZXN0cmljdGlvbnNGaWx0ZXJzKCksXG4gICAgICAgIHRoaXMucmVtb3ZlUHJvcGVydGllcywgdGhpcy5vcmRlciwgdGhpcy5ib2R5UmVxdWVzdClcbiAgICAgIC50aGVuKChyZXNwOiBPYnNlcnZhYmxlPGFueT4pOiB2b2lkID0+IHtcbiAgICAgICAgcmVzcD8uc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAocmVzdWx0OiBhbnkpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zLnNldChyZXN1bHQ/LnBheWxvYWQ/LmRhdGEgPz8gcmVzdWx0Py5kYXRhKTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmUgZWwgdGV4dG8gcG9yIGVsIHF1ZSBzZSB2YSBhIHJlYWxpemFyIGxhIGLDunNxdWVkYVxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRleHRvIGRlIGxhIGLDunNxdWVkYVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRBdXRvY29tcGxldGVTZWFyY2hUZXh0KCk6IHN0cmluZyB7XG4gICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcblxuICAgIGxldCB0ZXh0OiBzdHJpbmcgPSAnJztcblxuICAgIGlmICh0aGlzLmNvbXBvbmVudD8udmFsdWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5jb21wb25lbnQudmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFZhbHVlID0gdGhpcy5jb21wb25lbnQ/LnZhbHVlW3RoaXMuZmllbGRbMF1dXG4gICAgICAgIGlmICh0eXBlb2YgY29tcG9uZW50VmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgbGV0IGxhbmc6IHN0cmluZyA9ICdlcyc7XG4gICAgICAgICAgaWYgKHRoaXMuZmllbGRbMV0pIHtcbiAgICAgICAgICAgIGxhbmcgPSB0aGlzLmZpZWxkWzFdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRleHQgPSBjb21wb25lbnRWYWx1ZVtsYW5nXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5jb21wb25lbnQ/LnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICB0ZXh0ID0gdGhpcy5jb21wb25lbnQudmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cblxuICBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KTogdm9pZCA9PiB7XG4gIH07XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZCgpOiB2b2lkIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNpYmUgZWwgdmFsb3IgZGVsIEZvcm1Db250cm9sXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFZhbG9yIGVudHJhZG8gcG9yIEZvcm1Db250cm9sXG4gICAqL1xuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50LnNldFZhbHVlKHZhbHVlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB0aGlzLnZhbHVlSWQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQuc2V0KHZhbHVlPy5pZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC5zZXQodmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC5zZXQobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZ1bmNpw7NuIHBhcmEgbW9zdHJhciBsb3MgZWxlbWVudG9zIGEgc2VsZWNjaW9uYXJcbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVmFsb3IgYSBtb3N0cmFyXG4gICAqL1xuICBwdWJsaWMgZGlzcGxheUZuID0gKHZhbHVlOiBhbnkpOiBzdHJpbmcgPT4ge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuXG4gICAgICBsZXQgZGlzcGxheVRleHQ6IHN0cmluZyA9ICcnO1xuICAgICAgaWYgKCF0aGlzLmRpc3BsYXlPcHRpb25zKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheU9wdGlvbnMgPSBHRU5FUkFMX0RJU1BMQVlfT1BUSU9OUztcbiAgICAgIH1cblxuICAgICAgdGhpcy5kaXNwbGF5T3B0aW9ucz8uZmlydGhMYWJlbD8uZm9yRWFjaCgoZmllbGQ6IGFueSk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoZmllbGQ/LnR5cGUgPT09ICdwYXRoJykge1xuICAgICAgICAgIGRpc3BsYXlUZXh0ICs9IFV0aWxzU2VydmljZS5yZXNvbHZlUHJvcGVydHlCeVBhdGgodmFsdWUsIGZpZWxkPy5wYXRoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkaXNwbGF5VGV4dCArPSBmaWVsZD8uZGl2aWRlcjtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBkaXNwbGF5VGV4dDtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIEFjY2nDs24gYWwgbGltcGlhciBlbCB2YWxvciBkZWwgaW5wdXRcbiAgICpcbiAgICogQHBhcmFtIHRyaWdnZXJcbiAgICovXG4gIHB1YmxpYyBjbGVhcih0cmlnZ2VyOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyKTogdm9pZCB7XG4gICAgdGhpcy5jb21wb25lbnQuc2V0VmFsdWUobnVsbCk7XG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQuc2V0KG51bGwpO1xuICAgIHRoaXMuU2VsZWN0RWxlbWVudC5lbWl0KG51bGwpO1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKG51bGwpO1xuXG4gICAgdGhpcy5fem9uZS5ydW4oKCk6IHZvaWQgPT4ge1xuICAgICAgc2V0VGltZW91dCgoKTogdm9pZCA9PiB7XG4gICAgICAgIHRyaWdnZXIub3BlblBhbmVsKCk7XG4gICAgICB9LCAxMDApO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjY2nDs24gZW4gZWwgRm9jdXMgZGVsIGVsZW1lbnRvXG4gICAqL1xuICBwdWJsaWMgb25Gb2N1cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRFbGVtZW50KCkpIHtcbiAgICAgIHRoaXMuZ2V0QXV0b2NvbXBsZXRlQnlUZXh0SGFuZGxlcih0aGlzLmdldEF1dG9jb21wbGV0ZVNlYXJjaFRleHQoKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFjY2nDs24gYWwgc2VsZWNjaW9uYXIgdW4gZWxlbWVudG9cbiAgICpcbiAgICogQHBhcmFtIGl0ZW0gLSBFbGVtZW50byBzZWxlY2Npb25hZG9cbiAgICovXG4gIHB1YmxpYyBvblNlbGVjdEVsZW1lbnQoaXRlbTogYW55KTogdm9pZCB7XG4gICAgdGhpcy53YXNTZWxlY3RlZC5zZXQodHJ1ZSlcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC5zZXQoaXRlbSk7XG4gICAgdGhpcy5TZWxlY3RFbGVtZW50LmVtaXQoaXRlbSk7XG5cbiAgICBpZiAodGhpcy52YWx1ZUlkKSB7XG4gICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0eXBlb2YgaXRlbSA9PT0gXCJvYmplY3RcIiA/IGl0ZW0/LmlkIDogaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKGl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIHRoaXMuY29tcG9uZW50Lm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudW5zdWJzY3JpYmVBbGwkLm5leHQoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlQWxsJC5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8bWF0LWZvcm0tZmllbGQgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiIFtuZ0NsYXNzXT1cInsnd2l0aG91dC1wYWRkaW5nLWJvdHRvbSc6IHdpdGhvdXRQYWRkaW5nQm90dG9tfVwiIGNsYXNzPVwidy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiIFtjb2xvcl09XCJjb2xvclwiPlxyXG5cclxuICA8bWF0LWxhYmVsPnt7bGFiZWwgfCB0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxyXG4gIDxpbnB1dCAjaW5wdXRUZXh0ICN0cmlnZ2VyPVwibWF0QXV0b2NvbXBsZXRlVHJpZ2dlclwiIChmb2N1cyk9XCJvbkZvY3VzKClcIiBbZm9ybUNvbnRyb2xdPVwiY29tcG9uZW50XCJcclxuICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIiBhcmlhLWxhYmVsPVwiYXV0b2NvbXBsZXRlXCJcclxuICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWQoKVwiPlxyXG4gIDxidXR0b24gKGNsaWNrKT1cImNsZWFyKHRyaWdnZXIpXCIgKm5nSWY9XCIhbG9hZGluZygpICYmIGNvbXBvbmVudD8udmFsdWVcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRCdXR0b24oKVwiXHJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4PlxyXG4gICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICA8L2J1dHRvbj5cclxuICA8YnV0dG9uICpuZ0lmPVwibG9hZGluZygpXCIgYXJpYS1sYWJlbD1cInNlYXJjaFwiIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXg+XHJcbiAgICA8bWF0LXNwaW5uZXIgW3ZhbHVlXT1cIjkwXCIgY29sb3I9XCJhY2NlbnRcIiBkaWFtZXRlcj1cIjI1XCI+PC9tYXQtc3Bpbm5lcj5cclxuICA8L2J1dHRvbj5cclxuICA8bWF0LWF1dG9jb21wbGV0ZSAjYXV0b2NvbXBsZXRlPVwibWF0QXV0b2NvbXBsZXRlXCIgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlGblwiPlxyXG4gICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnMoKVwiIFt2YWx1ZV09XCJvcHRpb25cIiAob25TZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3RFbGVtZW50KG9wdGlvbilcIj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZGlzcGxheU9wdGlvbnMgJiYgIWRldGFpbHNUZW1wbGF0ZVwiPlxyXG4gICAgICAgIHt7IG9wdGlvbj8ubmFtZSB8IGkxOG5GaWVsZDogdHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZyB9fVxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZGV0YWlsc1RlbXBsYXRlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRpc3BsYXktb3B0aW9uc1wiPlxyXG4gICAgICAgICAgPHNwYW4gW25nU3R5bGVdPVwieydsaW5lLWhlaWdodCc6IGRpc3BsYXlPcHRpb25zPy5zZWNvbmRMYWJlbCA/ICcxNnB4JyA6ICcnfVwiPlxyXG4gICAgICAgICAgICB7e29wdGlvbiB8IHJlc29sdmVQcm9wZXJ0eVBhdGg6ZGlzcGxheU9wdGlvbnMuZmlydGhMYWJlbCB8IGkxOG5GaWVsZDogdHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZ319XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImRpc3BsYXlPcHRpb25zPy5zZWNvbmRMYWJlbFwiIGNsYXNzPVwibWF0LWNhcHRpb25cIj5cclxuICAgICAgICAgICAge3tvcHRpb24gfCByZXNvbHZlUHJvcGVydHlQYXRoOiBkaXNwbGF5T3B0aW9ucy5zZWNvbmRMYWJlbCB8IGkxOG5GaWVsZDogdHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZ319XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRldGFpbHNUZW1wbGF0ZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZXRhaWxzVGVtcGxhdGU7Y29udGV4dDp7JGltcGxpY2l0OiBvcHRpb24gfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbWF0LW9wdGlvbj5cclxuICA8L21hdC1hdXRvY29tcGxldGU+XHJcblxyXG4gIDxtYXQtZXJyb3IgKm5nSWY9XCJjb21wb25lbnQuaW52YWxpZFwiPlxyXG4gICAge3snRXN0ZSBjYW1wbyBlcyByZXF1ZXJpZG8uJyB8IHRyYW5zbGF0ZX19XHJcbiAgPC9tYXQtZXJyb3I+XHJcbjwvbWF0LWZvcm0tZmllbGQ+XHJcbiJdfQ==
|
401
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhY2hvcy1nZW5lcmFsLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWFjaG9zLWdlbmVyYWwtYXV0b2NvbXBsZXRlL3NyYy9saWIvZ3VhY2hvcy1nZW5lcmFsLWF1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWFjaG9zLWdlbmVyYWwtYXV0b2NvbXBsZXRlL3NyYy9saWIvZ3VhY2hvcy1nZW5lcmFsLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUdOLE1BQU0sRUFDTixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixrQkFBa0IsRUFFbEIsVUFBVSxFQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLHFCQUFxQixFQUF5QixNQUFNLGdDQUFnQyxDQUFDO0FBQzdGLE9BQU8sRUFBeUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RyxPQUFPLEVBQUMsZUFBZSxFQUFFLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFDLFlBQVksRUFBYyxPQUFPLEVBQUUsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGVB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WjtxQkFDRjs4SkE0QnVDLFNBQVM7c0JBQWhELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFJN0IsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTTtnQkFFTSxHQUFHO3NCQUFmLEtBQUs7Z0JBT08sU0FBUztzQkFBckIsS0FBSztnQkFpQk8sWUFBWTtzQkFBeEIsS0FBSztnQkFTTyxZQUFZO3NCQUF4QixLQUFLO2dCQWFPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBaUJPLE9BQU87c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIElucHV0LFxyXG4gIE5nWm9uZSxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBzaWduYWwsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFdyaXRhYmxlU2lnbmFsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgVW50eXBlZEZvcm1Db250cm9sLFxyXG4gIFZhbGlkYXRvckZuLFxyXG4gIFZhbGlkYXRvcnNcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7TWF0QXV0b2NvbXBsZXRlTW9kdWxlLCBNYXRBdXRvY29tcGxldGVUcmlnZ2VyfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQge0Zsb2F0TGFiZWxUeXBlLCBNYXRGb3JtRmllbGRBcHBlYXJhbmNlLCBNYXRGb3JtRmllbGRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0YWtlVW50aWx9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge05nQ2xhc3MsIE5nRm9yT2YsIE5nSWYsIE5nU3R5bGUsIE5nVGVtcGxhdGVPdXRsZXR9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtNYXRJbnB1dE1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XHJcbmltcG9ydCB7TWF0QnV0dG9uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XHJcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcclxuaW1wb3J0IHtNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyXCI7XHJcbmltcG9ydCB7VGhlbWVQYWxldHRlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xyXG5cclxuaW1wb3J0IHtHRU5FUkFMX0RJU1BMQVlfT1BUSU9OU30gZnJvbSAnLi4vdXRpbHMvY29uc3RhbnRzL2NvbnRhY3RzJztcclxuaW1wb3J0IHtBdXRvY29tcGxldGVTZXJ2aWNlfSBmcm9tICcuLi91dGlscy9zZXJ2aWNlcy9hdXRvY29tcGxldGUuc2VydmljZSc7XHJcbmltcG9ydCB7VXRpbHNTZXJ2aWNlfSBmcm9tICcuLi91dGlscy9zZXJ2aWNlcy91dGlscy5zZXJ2aWNlJztcclxuaW1wb3J0IHtBcGlGb3JtRGF0YSwgRGlzcGxheU9wdGlvbiwgUmVzdHJpY3Rpb25GaWx0ZXJ9IGZyb20gXCIuLi91dGlscy9pbnRlcmZhY2VzL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0IHtQaXBlc01vZHVsZX0gZnJvbSBcIi4uL3V0aWxzL3BpcGVzL3BpcGVzLm1vZHVsZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdndWFqaXJpdG9zLWdlbmVyYWwtYXV0b2NvbXBsZXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ3VhY2hvcy1nZW5lcmFsLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ3VhY2hvcy1nZW5lcmFsLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgTmdDbGFzcyxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXHJcbiAgICBOZ0lmLFxyXG4gICAgTmdGb3JPZixcclxuICAgIE5nU3R5bGUsXHJcbiAgICBQaXBlc01vZHVsZSxcclxuICAgIE5nVGVtcGxhdGVPdXRsZXRcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gR3VhamlyaXRvc0dlbmVyYWxBdXRvY29tcGxldGUpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEd1YWppcml0b3NHZW5lcmFsQXV0b2NvbXBsZXRlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9hdXRvY29tcGxldGVTZXJ2aWNlOiBBdXRvY29tcGxldGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfem9uZTogTmdab25lLFxyXG4gICAgcHVibGljIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHdhc1NlbGVjdGVkOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHNpZ25hbChmYWxzZSk7XHJcbiAgcHJpdmF0ZSBmaXJzdENhbGw6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKHRydWUpO1xyXG4gIHByaXZhdGUgY2xlYXJEYXRhJDogU3ViamVjdDx2b2lkPjtcclxuICBwcml2YXRlIHVuc3Vic2NyaWJlQWxsJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBkb0ZvY3VzU3ViamVjdCQ6IFN1YmplY3Q8dm9pZD47XHJcbiAgcHJpdmF0ZSBzZWxlY3RlZEVsZW1lbnQ6IFdyaXRhYmxlU2lnbmFsPGFueT4gPSBzaWduYWwobnVsbCk7XHJcbiAgcHJpdmF0ZSBfdXJsOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+ID0gc2lnbmFsKG51bGwpO1xyXG4gIHByaXZhdGUgcmVzdHJpY3Rpb25zRmlsdGVyczogV3JpdGFibGVTaWduYWw8UmVzdHJpY3Rpb25GaWx0ZXJbXT4gPSBzaWduYWwoW10pO1xyXG5cclxuICBwdWJsaWMgZGlzYWJsZWRCdXR0b246IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcclxuICBwdWJsaWMgbG9hZGluZzogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWwoZmFsc2UpO1xyXG4gIHB1YmxpYyByZXF1aXJlZDogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWwoZmFsc2UpO1xyXG4gIHB1YmxpYyBmaWx0ZXJlZE9wdGlvbnM6IFdyaXRhYmxlU2lnbmFsPGFueVtdPiA9IHNpZ25hbChbXSk7XHJcbiAgcHVibGljIGNvbXBvbmVudDogVW50eXBlZEZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCh7XHJcbiAgICB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlXHJcbiAgfSk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0VGV4dCcsIHtzdGF0aWM6IHRydWV9KSBpbnB1dFRleHQ6IEVsZW1lbnRSZWY7XHJcbiAgLyoqXHJcbiAgICogUG9zc2libGUgdmFsdWVzICduZXZlcicsICdhdXRvJyBvciAnYWx3YXlzJ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGZsb2F0TGFiZWw6IEZsb2F0TGFiZWxUeXBlID0gJ2F1dG8nO1xyXG4gIEBJbnB1dCgpIGJvZHlSZXF1ZXN0OiBBcGlGb3JtRGF0YTtcclxuICBASW5wdXQoKSBkZWJvdW5jZVRpbWVWYWx1ZTogbnVtYmVyID0gMzAwO1xyXG4gIEBJbnB1dCgpIGRldGFpbHNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJ1NlbGVjY2lvbmUnO1xyXG4gIEBJbnB1dCgpIHNob3dMYWJlbDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgYXBwZWFyYW5jZTogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSA9ICdvdXRsaW5lJztcclxuICBASW5wdXQoKSBjb2xvcjogVGhlbWVQYWxldHRlID0gJ2FjY2VudCc7XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWxlY2Npb25lIHVuIGVsZW1lbnRvJztcclxuICBASW5wdXQoKSBmaWVsZDogc3RyaW5nW10gPSBbJ25hbWUnXTtcclxuICBASW5wdXQoKSBmaWx0ZXJTdHJpbmc6IHN0cmluZyA9ICdmaWx0ZXJbJGFuZF1bbmFtZV1bJGxpa2VdJztcclxuICBASW5wdXQoKSBkaXNwbGF5T3B0aW9uczogRGlzcGxheU9wdGlvbiA9IEdFTkVSQUxfRElTUExBWV9PUFRJT05TO1xyXG4gIEBJbnB1dCgpIHdpdGhvdXRQYWRkaW5nQm90dG9tOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSB2YWx1ZUlkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgb3JkZXI6IHN0cmluZyA9IG51bGw7XHJcbiAgQElucHV0KCkgcmVtb3ZlUHJvcGVydGllczogc3RyaW5nW10gPSBbXTtcclxuICBAT3V0cHV0KCkgU2VsZWN0RWxlbWVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQElucHV0KCkgc2V0IHVybChkYXRhOiBzdHJpbmcpIHtcclxuICAgIGlmIChkYXRhKSB7XHJcbiAgICAgIHRoaXMuX3VybC5zZXQoZGF0YSk7XHJcbiAgICAgIHRoaXMuc3Vic2NyaWJlQ29tcG9uZW50Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IGNsZWFyRGF0YSh2YWx1ZTogU3ViamVjdDx2b2lkPikge1xyXG4gICAgdGhpcy5jbGVhckRhdGEkID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5jbGVhckRhdGEkKSB7XHJcbiAgICAgIHRoaXMuY2xlYXJEYXRhJFxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlQWxsJCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAoKTogdm9pZCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50LnNldFZhbHVlKG51bGwsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50LnNldChudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5TZWxlY3RFbGVtZW50LmVtaXQobnVsbCk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zLnNldChbXSk7XHJcbiAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKG51bGwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IGluaXRpYWxWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLmNvbXBvbmVudC5zZXRWYWx1ZSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBw7FhZGUgbyBlbGltaW5hIHJlc3RyaWNjaW9uZXMgcGFyYSBsYSBiw7pzcXVlZGFcclxuICAgKlxyXG4gICAqIEBwYXJhbSByZXN0cmljdGlvbnMgLSBSZXN0cmljY2lvbmVzIHBhcmEgbGEgYsO6c3F1ZWRhXHJcbiAgICovXHJcbiAgQElucHV0KCkgc2V0IHJlc3RyaWN0aW9ucyhyZXN0cmljdGlvbnM6IFJlc3RyaWN0aW9uRmlsdGVyW10pIHtcclxuICAgIGlmIChyZXN0cmljdGlvbnMpIHtcclxuICAgICAgdGhpcy5yZXN0cmljdGlvbnNGaWx0ZXJzLnNldChyZXN0cmljdGlvbnMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZXN0cmljdGlvbnNGaWx0ZXJzLnNldChbXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBw7FhZGUgbyBlbGltaW5hIGxhIHZhbGlkYWNpw7NuIGRlIHF1ZSBlbCBjYW1wbyBzZWEgcmVxdWVyaWRvXHJcbiAgICpcclxuICAgKiBAcGFyYW0gcmVxdWlyZWQgLSBEZWZpbmUgc2kgZXMgcmVxdWVyaWRvIG8gbm9cclxuICAgKi9cclxuICBASW5wdXQoKSBzZXQgaXNSZXF1aXJlZChyZXF1aXJlZDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5yZXF1aXJlZC5zZXQocmVxdWlyZWQpO1xyXG5cclxuICAgIGlmIChyZXF1aXJlZCkge1xyXG4gICAgICB0aGlzLmNvbXBvbmVudC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBHdWFqaXJpdG9zR2VuZXJhbEF1dG9jb21wbGV0ZS5hdXRvY29tcGxldGVWYWxpZGF0b3JdKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50LmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY29tcG9uZW50LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluZSBzaSB2YW1vcyBhIHJlYWxpemFyIHVuYSBiw7pzcXVlZGEgYWwgZWxlbWVudG8gZXN0YXIgZW4gZWwgZm9jdXMgZGUgbGEgYXBsaWNhY2nDs25cclxuICAgKlxyXG4gICAqIEBwYXJhbSBmb2N1c1N1YmplY3QgLSBPYnNlcnZhYmxlIHBhcmEgbGEgc3Vic2NyaXBjacOzbiBhbCBldmVudG8gRm9jdXNcclxuICAgKi9cclxuICBASW5wdXQoKSBzZXQgZG9Gb2N1cyhmb2N1c1N1YmplY3Q6IFN1YmplY3Q8dm9pZD4pIHtcclxuICAgIHRoaXMuZG9Gb2N1c1N1YmplY3QkID0gZm9jdXNTdWJqZWN0O1xyXG5cclxuICAgIGlmICh0aGlzLmRvRm9jdXNTdWJqZWN0JCkge1xyXG4gICAgICB0aGlzLmRvRm9jdXNTdWJqZWN0JFxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlQWxsJCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAoKTogdm9pZCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX3pvbmUucnVuKCgpOiB2b2lkID0+IHtcclxuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpOiB2b2lkID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRUZXh0Py5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xyXG4gICAgICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRhY2nDs24gY3VzdG9taXphZGEgcGFyYSBsYSBzZWxlY2Npw7NuIGRlIGVsZW1lbnRvc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIGF1dG9jb21wbGV0ZVZhbGlkYXRvcigpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCBudWxsID0+IHtcclxuICAgICAgaWYgKGNvbnRyb2w/LnZhbHVlPy5jb25zdHJ1Y3RvciAhPT0gT2JqZWN0IHx8ICFjb250cm9sPy52YWx1ZT8uaWQpIHtcclxuICAgICAgICByZXR1cm4ge2ludmFsaWRTZWxlY3Rpb246IHRydWV9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1YnNjcmlwY2nDs24gYSBsb3MgY2FtYmlvcyBkZWwgaW5wdXQgZGUgYsO6c3F1ZWRhXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVDb21wb25lbnRDaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb21wb25lbnQ/LnZhbHVlQ2hhbmdlc1xyXG4gICAgICA/LnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lVmFsdWUpLCB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZUFsbCQpKVxyXG4gICAgICA/LnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKCk6IHZvaWQgPT4ge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmZpcnN0Q2FsbCgpICYmICF0aGlzLndhc1NlbGVjdGVkKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRBdXRvY29tcGxldGVCeVRleHRIYW5kbGVyKHRoaXMuZ2V0QXV0b2NvbXBsZXRlU2VhcmNoVGV4dCgpKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlyc3RDYWxsLnNldChmYWxzZSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy53YXNTZWxlY3RlZC5zZXQoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCw7pzcXVlZGEgZGUgbG9zIGVsZW1lbnRvcyBhIG1vc3RyYXIgZW4gZWwgY29tcG9uZW50ZSBkZSBhdXRvY29tcGxldGFtaWVudG9cclxuICAgKlxyXG4gICAqIEBwYXJhbSB0ZXh0IC0gVGV4dG8gYSBidXNjYXJcclxuICAgKi9cclxuICBwcml2YXRlIGdldEF1dG9jb21wbGV0ZUJ5VGV4dEhhbmRsZXIodGV4dD86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fYXV0b2NvbXBsZXRlU2VydmljZVxyXG4gICAgICAuZ2V0QXV0b2NvbXBsZXRlQnlUZXh0KHRoaXMuX3VybCgpLCB0ZXh0LCB0aGlzLmZpbHRlclN0cmluZywgdGhpcy5yZXN0cmljdGlvbnNGaWx0ZXJzKCksXHJcbiAgICAgICAgdGhpcy5yZW1vdmVQcm9wZXJ0aWVzLCB0aGlzLm9yZGVyLCB0aGlzLmJvZHlSZXF1ZXN0KVxyXG4gICAgICAudGhlbigocmVzcDogT2JzZXJ2YWJsZTxhbnk+KTogdm9pZCA9PiB7XHJcbiAgICAgICAgcmVzcD8uc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChyZXN1bHQ6IGFueSk6IHZvaWQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucy5zZXQocmVzdWx0Py5wYXlsb2FkPy5kYXRhID8/IHJlc3VsdD8uZGF0YSk7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluZSBlbCB0ZXh0byBwb3IgZWwgcXVlIHNlIHZhIGEgcmVhbGl6YXIgbGEgYsO6c3F1ZWRhXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRleHRvIGRlIGxhIGLDunNxdWVkYVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0QXV0b2NvbXBsZXRlU2VhcmNoVGV4dCgpOiBzdHJpbmcge1xyXG4gICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcclxuXHJcbiAgICBsZXQgdGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgaWYgKHRoaXMuY29tcG9uZW50Py52YWx1ZSkge1xyXG4gICAgICBpZiAodHlwZW9mIHRoaXMuY29tcG9uZW50LnZhbHVlID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFZhbHVlID0gdGhpcy5jb21wb25lbnQ/LnZhbHVlW3RoaXMuZmllbGRbMF1dXHJcbiAgICAgICAgaWYgKHR5cGVvZiBjb21wb25lbnRWYWx1ZSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgIGxldCBsYW5nOiBzdHJpbmcgPSAnZXMnO1xyXG4gICAgICAgICAgaWYgKHRoaXMuZmllbGRbMV0pIHtcclxuICAgICAgICAgICAgbGFuZyA9IHRoaXMuZmllbGRbMV07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGV4dCA9IGNvbXBvbmVudFZhbHVlW2xhbmddO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5jb21wb25lbnQ/LnZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIHRleHQgPSB0aGlzLmNvbXBvbmVudC52YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0ZXh0O1xyXG4gIH1cclxuXHJcbiAgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSk6IHZvaWQgPT4ge1xyXG4gIH07XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlY2liZSBlbCB2YWxvciBkZWwgRm9ybUNvbnRyb2xcclxuICAgKlxyXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFZhbG9yIGVudHJhZG8gcG9yIEZvcm1Db250cm9sXHJcbiAgICovXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5jb21wb25lbnQuc2V0VmFsdWUodmFsdWUsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcblxyXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB0aGlzLnZhbHVlSWQpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC5zZXQodmFsdWU/LmlkKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC5zZXQodmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC5zZXQobnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZGlzYWJsZWRCdXR0b24uc2V0KGlzRGlzYWJsZWQpO1xyXG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5jb21wb25lbnQuZGlzYWJsZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jb21wb25lbnQuZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGdW5jacOzbiBwYXJhIG1vc3RyYXIgbG9zIGVsZW1lbnRvcyBhIHNlbGVjY2lvbmFyXHJcbiAgICpcclxuICAgKiBAcGFyYW0gdmFsdWUgLSBWYWxvciBhIG1vc3RyYXJcclxuICAgKi9cclxuICBwdWJsaWMgZGlzcGxheUZuID0gKHZhbHVlOiBhbnkpOiBzdHJpbmcgPT4ge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgZGlzcGxheVRleHQ6IHN0cmluZyA9ICcnO1xyXG4gICAgICBpZiAoIXRoaXMuZGlzcGxheU9wdGlvbnMpIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXlPcHRpb25zID0gR0VORVJBTF9ESVNQTEFZX09QVElPTlM7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZGlzcGxheU9wdGlvbnM/LmZpcnRoTGFiZWw/LmZvckVhY2goKGZpZWxkOiBhbnkpOiB2b2lkID0+IHtcclxuICAgICAgICBpZiAoZmllbGQ/LnR5cGUgPT09ICdwYXRoJykge1xyXG4gICAgICAgICAgZGlzcGxheVRleHQgKz0gVXRpbHNTZXJ2aWNlLnJlc29sdmVQcm9wZXJ0eUJ5UGF0aCh2YWx1ZSwgZmllbGQ/LnBhdGgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBkaXNwbGF5VGV4dCArPSBmaWVsZD8uZGl2aWRlcjtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcmV0dXJuIGRpc3BsYXlUZXh0O1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIEFjY2nDs24gYWwgbGltcGlhciBlbCB2YWxvciBkZWwgaW5wdXRcclxuICAgKlxyXG4gICAqIEBwYXJhbSB0cmlnZ2VyXHJcbiAgICovXHJcbiAgcHVibGljIGNsZWFyKHRyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuY29tcG9uZW50LnNldFZhbHVlKG51bGwpO1xyXG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQuc2V0KG51bGwpO1xyXG4gICAgdGhpcy5TZWxlY3RFbGVtZW50LmVtaXQobnVsbCk7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShudWxsKTtcclxuXHJcbiAgICB0aGlzLl96b25lLnJ1bigoKTogdm9pZCA9PiB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCk6IHZvaWQgPT4ge1xyXG4gICAgICAgIHRyaWdnZXIub3BlblBhbmVsKCk7XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFjY2nDs24gZW4gZWwgRm9jdXMgZGVsIGVsZW1lbnRvXHJcbiAgICovXHJcbiAgcHVibGljIG9uRm9jdXMoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRFbGVtZW50KCkpIHtcclxuICAgICAgdGhpcy5nZXRBdXRvY29tcGxldGVCeVRleHRIYW5kbGVyKHRoaXMuZ2V0QXV0b2NvbXBsZXRlU2VhcmNoVGV4dCgpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFjY2nDs24gYWwgc2VsZWNjaW9uYXIgdW4gZWxlbWVudG9cclxuICAgKlxyXG4gICAqIEBwYXJhbSBpdGVtIC0gRWxlbWVudG8gc2VsZWNjaW9uYWRvXHJcbiAgICovXHJcbiAgcHVibGljIG9uU2VsZWN0RWxlbWVudChpdGVtOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMud2FzU2VsZWN0ZWQuc2V0KHRydWUpXHJcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC5zZXQoaXRlbSk7XHJcbiAgICB0aGlzLlNlbGVjdEVsZW1lbnQuZW1pdChpdGVtKTtcclxuXHJcbiAgICBpZiAodGhpcy52YWx1ZUlkKSB7XHJcbiAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHR5cGVvZiBpdGVtID09PSBcIm9iamVjdFwiID8gaXRlbT8uaWQgOiBpdGVtKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKGl0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyB0aGlzLmNvbXBvbmVudC5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMudW5zdWJzY3JpYmVBbGwkLm5leHQoKTtcclxuICAgIHRoaXMudW5zdWJzY3JpYmVBbGwkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxtYXQtZm9ybS1maWVsZCBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCIgW25nQ2xhc3NdPVwieyd3aXRob3V0LXBhZGRpbmctYm90dG9tJzogd2l0aG91dFBhZGRpbmdCb3R0b219XCIgY2xhc3M9XCJ3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCIgW2NvbG9yXT1cImNvbG9yXCI+XHJcblxyXG4gIDxtYXQtbGFiZWwgKm5nSWY9XCJzaG93TGFiZWxcIj57e2xhYmVsIHwgdHJhbnNsYXRlfX08L21hdC1sYWJlbD5cclxuICA8aW5wdXQgI2lucHV0VGV4dCAjdHJpZ2dlcj1cIm1hdEF1dG9jb21wbGV0ZVRyaWdnZXJcIiAoZm9jdXMpPVwib25Gb2N1cygpXCIgW2Zvcm1Db250cm9sXT1cImNvbXBvbmVudFwiXHJcbiAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlXCIgYXJpYS1sYWJlbD1cImF1dG9jb21wbGV0ZVwiXHJcbiAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgW3JlcXVpcmVkXT1cInJlcXVpcmVkKClcIj5cclxuICA8YnV0dG9uIChjbGljayk9XCJjbGVhcih0cmlnZ2VyKVwiICpuZ0lmPVwiIWxvYWRpbmcoKSAmJiBjb21wb25lbnQ/LnZhbHVlXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkQnV0dG9uKClcIlxyXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyXCIgbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeD5cclxuICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgPC9idXR0b24+XHJcbiAgPGJ1dHRvbiAqbmdJZj1cImxvYWRpbmcoKVwiIGFyaWEtbGFiZWw9XCJzZWFyY2hcIiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4PlxyXG4gICAgPG1hdC1zcGlubmVyIFt2YWx1ZV09XCI5MFwiIGNvbG9yPVwiYWNjZW50XCIgZGlhbWV0ZXI9XCIyNVwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgPC9idXR0b24+XHJcbiAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG9jb21wbGV0ZT1cIm1hdEF1dG9jb21wbGV0ZVwiIFtkaXNwbGF5V2l0aF09XCJkaXNwbGF5Rm5cIj5cclxuICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zKClcIiBbdmFsdWVdPVwib3B0aW9uXCIgKG9uU2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0RWxlbWVudChvcHRpb24pXCI+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWRpc3BsYXlPcHRpb25zICYmICFkZXRhaWxzVGVtcGxhdGVcIj5cclxuICAgICAgICB7eyBvcHRpb24/Lm5hbWUgfCBpMThuRmllbGQ6IHRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcgfX1cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWRldGFpbHNUZW1wbGF0ZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkaXNwbGF5LW9wdGlvbnNcIj5cclxuICAgICAgICAgIDxzcGFuIFtuZ1N0eWxlXT1cInsnbGluZS1oZWlnaHQnOiBkaXNwbGF5T3B0aW9ucz8uc2Vjb25kTGFiZWwgPyAnMTZweCcgOiAnJ31cIj5cclxuICAgICAgICAgICAge3tvcHRpb24gfCByZXNvbHZlUHJvcGVydHlQYXRoOmRpc3BsYXlPcHRpb25zLmZpcnRoTGFiZWwgfCBpMThuRmllbGQ6IHRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmd9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJkaXNwbGF5T3B0aW9ucz8uc2Vjb25kTGFiZWxcIiBjbGFzcz1cIm1hdC1jYXB0aW9uXCI+XHJcbiAgICAgICAgICAgIHt7b3B0aW9uIHwgcmVzb2x2ZVByb3BlcnR5UGF0aDogZGlzcGxheU9wdGlvbnMuc2Vjb25kTGFiZWwgfCBpMThuRmllbGQ6IHRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmd9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkZXRhaWxzVGVtcGxhdGVcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGV0YWlsc1RlbXBsYXRlO2NvbnRleHQ6eyRpbXBsaWNpdDogb3B0aW9uIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L21hdC1vcHRpb24+XHJcbiAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG5cclxuICA8bWF0LWVycm9yICpuZ0lmPVwiY29tcG9uZW50LmludmFsaWRcIj5cclxuICAgIHt7J0VzdGUgY2FtcG8gZXMgcmVxdWVyaWRvLicgfCB0cmFuc2xhdGV9fVxyXG4gIDwvbWF0LWVycm9yPlxyXG48L21hdC1mb3JtLWZpZWxkPlxyXG4iXX0=
|
package/esm2022/public-api.mjs
CHANGED
@@ -4,4 +4,4 @@
|
|
4
4
|
export * from './utils/interfaces/interfaces';
|
5
5
|
export * from './utils/constants/contacts';
|
6
6
|
export * from './lib/guachos-general-autocomplete.component';
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2d1YWNob3MtZ2VuZXJhbC1hdXRvY29tcGxldGUvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw4Q0FBOEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBndWFjaG9zLWdlbmVyYWwtYXV0b2NvbXBsZXRlXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi91dGlscy9pbnRlcmZhY2VzL2ludGVyZmFjZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2NvbnN0YW50cy9jb250YWN0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2d1YWNob3MtZ2VuZXJhbC1hdXRvY29tcGxldGUuY29tcG9uZW50JztcclxuIl19
|
File without changes
|
@@ -9,4 +9,4 @@ export var CustomPipes;
|
|
9
9
|
CustomPipes["CURRENCY"] = "currency";
|
10
10
|
CustomPipes["UPPERCASE"] = "uppercase";
|
11
11
|
})(CustomPipes || (CustomPipes = {}));
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2d1YWNob3MtZ2VuZXJhbC1hdXRvY29tcGxldGUvc3JjL3V0aWxzL2ludGVyZmFjZXMvaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQU4sSUFBWSxXQVNYO0FBVEQsV0FBWSxXQUFXO0lBQ25CLDZDQUE4QixDQUFBO0lBQzlCLDZDQUE4QixDQUFBO0lBQzlCLHFEQUFzQyxDQUFBO0lBQ3RDLDBEQUEyQyxDQUFBO0lBQzNDLHVDQUF3QixDQUFBO0lBQ3hCLHVDQUF3QixDQUFBO0lBQ3hCLG9DQUFxQixDQUFBO0lBQ3JCLHNDQUF1QixDQUFBO0FBQzNCLENBQUMsRUFUVyxXQUFXLEtBQVgsV0FBVyxRQVN0QiIsInNvdXJjZXNDb250ZW50IjpbImRlY2xhcmUgdHlwZSBEaXNwbGF5T3B0aW9uSXRlbVR5cGUgPSAnZGl2aWRlcicgfCAncGF0aCc7XHJcblxyXG5leHBvcnQgZW51bSBDdXN0b21QaXBlcyB7XHJcbiAgICBTSE9XX1NFR01FTlRTID0gJ3Nob3dTZWdtZW50cycsXHJcbiAgICBEVVJBVElPTl9USU1FID0gJ2R1cmF0aW9uVGltZScsXHJcbiAgICBIVU1BTklaRV9EVVJBVElPTiA9ICdodW1hbml6ZUR1cmF0aW9uJyxcclxuICAgIFNIT1dfVFJBTlNQT1JUX1RZUEVTID0gJ3Nob3dUcmFuc3BvcnRUeXBlcycsXHJcbiAgICBTSE9XX1JPTEVTID0gJ3Nob3dSb2xlcycsXHJcbiAgICBJREFfUkVUVVJOID0gJ2lkYVJldHVybicsXHJcbiAgICBDVVJSRU5DWSA9ICdjdXJyZW5jeScsXHJcbiAgICBVUFBFUkNBU0UgPSAndXBwZXJjYXNlJyxcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEaXNwbGF5T3B0aW9uSXRlbSB7XHJcbiAgICB0eXBlOiBEaXNwbGF5T3B0aW9uSXRlbVR5cGU7XHJcbiAgICBjdXN0b21QaXBlPzogc3RyaW5nO1xyXG4gICAgZGl2aWRlcj86IHN0cmluZztcclxuICAgIHBhdGg/OiBzdHJpbmdbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEaXNwbGF5T3B0aW9uIHtcclxuICAgIGZpcnRoTGFiZWw6IERpc3BsYXlPcHRpb25JdGVtW107XHJcbiAgICBzZWNvbmRMYWJlbD86IERpc3BsYXlPcHRpb25JdGVtW107XHJcbiAgICBmaWx0ZXJTdHJpbmc/OiBzdHJpbmdbXSB8IHN0cmluZztcclxuICAgIGFwcGx5VHJhbnNsYXRlPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZXN0cmljdGlvbkZpbHRlciB7XHJcbiAgICBmaWx0ZXI6IHN0cmluZztcclxuICAgIHZhbHVlOiBzdHJpbmcgfCBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXBpRm9ybURhdGEge1xyXG4gICAgYXR0cmlidXRlcz86IHN0cmluZ1tdLFxyXG4gICAgZmlsdGVyPzogYW55O1xyXG4gICAgcmVsYXRpb25zPzogYW55O1xyXG59XHJcbiJdfQ==
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|