@metadev/lux 0.16.3 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/autocomplete/autocomplete.component.mjs +479 -0
- package/esm2020/lib/autocomplete-list/autocomplete-list.component.mjs +254 -0
- package/esm2020/lib/breadcrumb/breadcrumb.component.mjs +75 -0
- package/esm2020/lib/checkbox/checkbox.component.mjs +154 -0
- package/{esm2015/lib/datasource.js → esm2020/lib/datasource.mjs} +0 -0
- package/esm2020/lib/datetime/datetime.component.mjs +306 -0
- package/esm2020/lib/filter/filter.component.mjs +152 -0
- package/esm2020/lib/geolocation/geolocation.component.mjs +407 -0
- package/{esm2015/lib/geolocation/geolocation.service.js → esm2020/lib/geolocation/geolocation.service.mjs} +7 -11
- package/esm2020/lib/geolocation/openlayer-loader.service.mjs +62 -0
- package/esm2020/lib/helperFns.mjs +109 -0
- package/esm2020/lib/input/input.component.mjs +452 -0
- package/{esm2015/lib/input/regexp.service.js → esm2020/lib/input/regexp.service.mjs} +7 -6
- package/{esm2015/lib/lang.js → esm2020/lib/lang.mjs} +0 -0
- package/esm2020/lib/lux.module.mjs +130 -0
- package/{esm2015/lib/map/geopoint.js → esm2020/lib/map/geopoint.mjs} +0 -0
- package/esm2020/lib/map/map.component.mjs +265 -0
- package/esm2020/lib/modal/modal-backdrop.mjs +26 -0
- package/esm2020/lib/modal/modal-config.mjs +14 -0
- package/{esm2015/lib/modal/modal-dismiss-reasons.js → esm2020/lib/modal/modal-dismiss-reasons.mjs} +0 -0
- package/{esm2015/lib/modal/modal-ref.js → esm2020/lib/modal/modal-ref.mjs} +0 -0
- package/esm2020/lib/modal/modal-stack.mjs +179 -0
- package/esm2020/lib/modal/modal-window.mjs +119 -0
- package/esm2020/lib/modal/modal.service.mjs +26 -0
- package/{esm2015/lib/modal/util.js → esm2020/lib/modal/util.mjs} +0 -0
- package/esm2020/lib/pagination/pagination.component.mjs +137 -0
- package/{esm2015/lib/pagination/pagination.js → esm2020/lib/pagination/pagination.mjs} +0 -0
- package/esm2020/lib/radiogroup/radiogroup.component.mjs +130 -0
- package/esm2020/lib/select/select.component.mjs +149 -0
- package/{esm2015/lib/tooltip/placement.js → esm2020/lib/tooltip/placement.mjs} +0 -0
- package/{esm2015/lib/tooltip/tooltip-context.js → esm2020/lib/tooltip/tooltip-context.mjs} +0 -0
- package/esm2020/lib/tooltip/tooltip.component.mjs +23 -0
- package/esm2020/lib/tooltip/tooltip.directive.mjs +60 -0
- package/{esm2015/lib/tooltip/tooltip.service.js → esm2020/lib/tooltip/tooltip.service.mjs} +7 -9
- package/{esm2015/lib/tooltip/tooltop-content.js → esm2020/lib/tooltip/tooltop-content.mjs} +0 -0
- package/esm2020/lib/voice-recognition/voice-recognition.directive.mjs +73 -0
- package/{esm2015/lib/window/window.service.js → esm2020/lib/window/window.service.mjs} +0 -0
- package/esm2020/metadev-lux.mjs +5 -0
- package/esm2020/public-api.mjs +21 -0
- package/fesm2015/metadev-lux.mjs +4345 -0
- package/fesm2015/metadev-lux.mjs.map +1 -0
- package/fesm2020/metadev-lux.mjs +4343 -0
- package/fesm2020/metadev-lux.mjs.map +1 -0
- package/lib/autocomplete/autocomplete.component.d.ts +3 -0
- package/lib/autocomplete-list/autocomplete-list.component.d.ts +3 -0
- package/lib/breadcrumb/breadcrumb.component.d.ts +3 -0
- package/lib/checkbox/checkbox.component.d.ts +3 -0
- package/lib/datetime/datetime.component.d.ts +4 -0
- package/lib/filter/filter.component.d.ts +3 -0
- package/lib/geolocation/geolocation.component.d.ts +4 -0
- package/lib/geolocation/geolocation.service.d.ts +3 -0
- package/lib/geolocation/openlayer-loader.service.d.ts +3 -0
- package/lib/helperFns.d.ts +2 -0
- package/lib/input/input.component.d.ts +15 -0
- package/lib/input/regexp.service.d.ts +3 -0
- package/lib/lux.module.d.ts +26 -0
- package/lib/map/map.component.d.ts +3 -0
- package/lib/modal/modal-backdrop.d.ts +3 -0
- package/lib/modal/modal-config.d.ts +3 -0
- package/lib/modal/modal-stack.d.ts +3 -0
- package/lib/modal/modal-window.d.ts +3 -0
- package/lib/modal/modal.service.d.ts +3 -0
- package/lib/pagination/pagination.component.d.ts +3 -0
- package/lib/radiogroup/radiogroup.component.d.ts +3 -0
- package/lib/select/select.component.d.ts +3 -0
- package/lib/tooltip/tooltip.component.d.ts +3 -0
- package/lib/tooltip/tooltip.directive.d.ts +3 -0
- package/lib/tooltip/tooltip.service.d.ts +3 -0
- package/lib/voice-recognition/voice-recognition.directive.d.ts +3 -0
- package/metadev-lux.d.ts +1 -16
- package/package.json +20 -8
- package/public-api.d.ts +12 -7
- package/bundles/metadev-lux.umd.js +0 -4647
- package/bundles/metadev-lux.umd.js.map +0 -1
- package/esm2015/lib/autocomplete/autocomplete.component.js +0 -455
- package/esm2015/lib/autocomplete-list/autocomplete-list.component.js +0 -230
- package/esm2015/lib/breadcrumb/breadcrumb.component.js +0 -77
- package/esm2015/lib/checkbox/checkbox.component.js +0 -142
- package/esm2015/lib/datetime/datetime.component.js +0 -275
- package/esm2015/lib/filter/filter.component.js +0 -140
- package/esm2015/lib/geolocation/geolocation.component.js +0 -371
- package/esm2015/lib/geolocation/openlayer-loader.service.js +0 -63
- package/esm2015/lib/helperFns.js +0 -93
- package/esm2015/lib/input/input.component.js +0 -371
- package/esm2015/lib/lux.module.js +0 -83
- package/esm2015/lib/map/map.component.js +0 -261
- package/esm2015/lib/modal/modal-backdrop.js +0 -19
- package/esm2015/lib/modal/modal-config.js +0 -12
- package/esm2015/lib/modal/modal-stack.js +0 -182
- package/esm2015/lib/modal/modal-window.js +0 -92
- package/esm2015/lib/modal/modal.service.js +0 -28
- package/esm2015/lib/pagination/pagination.component.js +0 -134
- package/esm2015/lib/radiogroup/radiogroup.component.js +0 -114
- package/esm2015/lib/select/select.component.js +0 -131
- package/esm2015/lib/tooltip/tooltip.component.js +0 -19
- package/esm2015/lib/tooltip/tooltip.directive.js +0 -52
- package/esm2015/lib/voice-recognition/voice-recognition.directive.js +0 -76
- package/esm2015/metadev-lux.js +0 -21
- package/esm2015/public-api.js +0 -16
- package/fesm2015/metadev-lux.js +0 -4025
- package/fesm2015/metadev-lux.js.map +0 -1
- package/metadev-lux.metadata.json +0 -1
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
import { Component, ElementRef, EventEmitter, forwardRef, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { exists, hasValue, isInitialAndEmpty, isValidNumber, roundToMultipleOf } from '../helperFns';
|
|
4
|
+
import { languageDetector } from '../lang';
|
|
5
|
+
import { ModalService } from '../modal/modal.service';
|
|
6
|
+
import { GeolocationService } from './geolocation.service';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../modal/modal.service";
|
|
9
|
+
import * as i2 from "./geolocation.service";
|
|
10
|
+
import * as i3 from "../autocomplete/autocomplete.component";
|
|
11
|
+
import * as i4 from "../map/map.component";
|
|
12
|
+
import * as i5 from "@angular/forms";
|
|
13
|
+
import * as i6 from "@angular/common";
|
|
14
|
+
export class GeolocationComponent {
|
|
15
|
+
constructor(modalService, locationService) {
|
|
16
|
+
this.modalService = modalService;
|
|
17
|
+
this.locationService = locationService;
|
|
18
|
+
this.touched = false;
|
|
19
|
+
this.dirty = false;
|
|
20
|
+
this.lastErrors = null;
|
|
21
|
+
this.latitudeValue = undefined;
|
|
22
|
+
this.longitudeValue = undefined;
|
|
23
|
+
this.isValidNumber = isValidNumber;
|
|
24
|
+
this.i18n = {
|
|
25
|
+
en: {
|
|
26
|
+
lat: 'latitude',
|
|
27
|
+
lon: 'longitude',
|
|
28
|
+
selectLocation: 'Select location',
|
|
29
|
+
location: 'Location',
|
|
30
|
+
selectAction: 'Select',
|
|
31
|
+
cancelAction: 'Cancel',
|
|
32
|
+
closeAction: 'Close',
|
|
33
|
+
typeToSearch: 'type to search',
|
|
34
|
+
cardinalPoints: {
|
|
35
|
+
north: 'N',
|
|
36
|
+
south: 'S',
|
|
37
|
+
east: 'E',
|
|
38
|
+
west: 'W'
|
|
39
|
+
},
|
|
40
|
+
userErrors: {
|
|
41
|
+
required: 'Required field.',
|
|
42
|
+
minLatitude: 'Minimum latitude is $minLatitude.',
|
|
43
|
+
maxLatitude: 'Maximum latitude is $maxLatitude.',
|
|
44
|
+
minLongitude: 'Minimum longitude is $minLongitude.',
|
|
45
|
+
maxLongitude: 'Maximum longitude is $maxLongitude.'
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
es: {
|
|
49
|
+
lat: 'latitud',
|
|
50
|
+
lon: 'longitud',
|
|
51
|
+
selectLocation: 'Seleccione ubicación',
|
|
52
|
+
location: 'Ubicación',
|
|
53
|
+
selectAction: 'Seleccionar',
|
|
54
|
+
cancelAction: 'Cancelar',
|
|
55
|
+
closeAction: 'Cerrar',
|
|
56
|
+
typeToSearch: 'escribe para buscar',
|
|
57
|
+
cardinalPoints: {
|
|
58
|
+
north: 'N',
|
|
59
|
+
south: 'S',
|
|
60
|
+
east: 'E',
|
|
61
|
+
west: 'O'
|
|
62
|
+
},
|
|
63
|
+
userErrors: {
|
|
64
|
+
required: 'El campo es obligatorio.',
|
|
65
|
+
minLatitude: 'La latitud mínima es $minLatitude.',
|
|
66
|
+
maxLatitude: 'La latitud máxima es $maxLatitude.',
|
|
67
|
+
minLongitude: 'La longitud mínima es $minLongitude.',
|
|
68
|
+
maxLongitude: 'La longitud máxima es $maxLongitude.'
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
this.lang = languageDetector();
|
|
73
|
+
this.inlineErrors = false;
|
|
74
|
+
this.readonly = null;
|
|
75
|
+
this.valueChange = new EventEmitter();
|
|
76
|
+
this.keyPress = new EventEmitter();
|
|
77
|
+
this.onChange = (value) => { };
|
|
78
|
+
this.onTouched = () => { };
|
|
79
|
+
}
|
|
80
|
+
get className() {
|
|
81
|
+
return this.checkClassName();
|
|
82
|
+
}
|
|
83
|
+
set disabled(v) {
|
|
84
|
+
v = typeof v === 'string' && v !== 'false' ? true : v;
|
|
85
|
+
this._disabled = v;
|
|
86
|
+
}
|
|
87
|
+
get disabled() {
|
|
88
|
+
return this._disabled;
|
|
89
|
+
}
|
|
90
|
+
set required(v) {
|
|
91
|
+
this._required = v;
|
|
92
|
+
}
|
|
93
|
+
get required() {
|
|
94
|
+
return this._required;
|
|
95
|
+
}
|
|
96
|
+
set value(v) {
|
|
97
|
+
if (v === this._value) {
|
|
98
|
+
return; // prevent events when there is no changes
|
|
99
|
+
}
|
|
100
|
+
const initialAndEmpty = isInitialAndEmpty(this._value, v);
|
|
101
|
+
if (v &&
|
|
102
|
+
v.coordinates &&
|
|
103
|
+
v.coordinates.length === 2 &&
|
|
104
|
+
exists(v.coordinates[0] && exists(v.coordinates[1]))) {
|
|
105
|
+
this._value = v;
|
|
106
|
+
this.setLatitudeInControl(v.coordinates[1]);
|
|
107
|
+
this.setLongitudeInControl(v.coordinates[0]);
|
|
108
|
+
}
|
|
109
|
+
else if (!v) {
|
|
110
|
+
this._value = null;
|
|
111
|
+
this.setLatitudeInControl(null);
|
|
112
|
+
this.setLongitudeInControl(null);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
this._value = v;
|
|
116
|
+
// we don't set value in control if the value is not valid
|
|
117
|
+
// if we do, the content of the control changes and can erase what the user is typing
|
|
118
|
+
}
|
|
119
|
+
this.onChange(v);
|
|
120
|
+
if (!initialAndEmpty) {
|
|
121
|
+
this.valueChange.emit(v);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
get value() {
|
|
125
|
+
return this._value;
|
|
126
|
+
}
|
|
127
|
+
// ControlValueAccessor Interface implementation
|
|
128
|
+
writeValue(value) {
|
|
129
|
+
this.value = value;
|
|
130
|
+
}
|
|
131
|
+
registerOnChange(onChange) {
|
|
132
|
+
this.onChange = onChange;
|
|
133
|
+
}
|
|
134
|
+
registerOnTouched(onTouched) {
|
|
135
|
+
this.onTouched = onTouched;
|
|
136
|
+
}
|
|
137
|
+
markAsTouched() {
|
|
138
|
+
if (!this.touched) {
|
|
139
|
+
this.onTouched();
|
|
140
|
+
this.touched = true;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
setDisabledState(disabled) {
|
|
144
|
+
this.disabled = disabled;
|
|
145
|
+
}
|
|
146
|
+
// End of ControlValueAccessor Interface implementation
|
|
147
|
+
setLatitudeInControl(latitude) {
|
|
148
|
+
// this.latitude.nativeElement.value = latitude;
|
|
149
|
+
this.latitudeValue = latitude;
|
|
150
|
+
}
|
|
151
|
+
setLongitudeInControl(longitude) {
|
|
152
|
+
// this.longitude.nativeElement.value = longitude;
|
|
153
|
+
this.longitudeValue = longitude;
|
|
154
|
+
}
|
|
155
|
+
clear() {
|
|
156
|
+
this.setLatitudeInControl(null);
|
|
157
|
+
this.setLongitudeInControl(null);
|
|
158
|
+
this.value = null;
|
|
159
|
+
}
|
|
160
|
+
isClearable() {
|
|
161
|
+
return (isValidNumber(this.latitudeValue) || isValidNumber(this.longitudeValue));
|
|
162
|
+
}
|
|
163
|
+
// Validator interface
|
|
164
|
+
registerOnValidatorChange() { }
|
|
165
|
+
validate(control) {
|
|
166
|
+
const value = control.value;
|
|
167
|
+
let result = null;
|
|
168
|
+
if (this.required &&
|
|
169
|
+
!hasValue(value) &&
|
|
170
|
+
!exists(this.latitudeValue) &&
|
|
171
|
+
!exists(this.longitudeValue)) {
|
|
172
|
+
result = result || {};
|
|
173
|
+
result.required = { value, reason: 'Required field.' };
|
|
174
|
+
}
|
|
175
|
+
if (!exists(this.latitudeValue) && exists(this.longitudeValue)) {
|
|
176
|
+
result = result || {};
|
|
177
|
+
result.existsLatitude = {
|
|
178
|
+
value,
|
|
179
|
+
reason: 'Latitude not specified.'
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
if (exists(this.latitudeValue) && !exists(this.longitudeValue)) {
|
|
183
|
+
result = result || {};
|
|
184
|
+
result.existsLongitude = {
|
|
185
|
+
value,
|
|
186
|
+
reason: 'Longitude not specified.'
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
if (exists(this.minLatitude) && this.latitudeValue < this.minLatitude) {
|
|
190
|
+
result = result || {};
|
|
191
|
+
result.minLatitude = {
|
|
192
|
+
value,
|
|
193
|
+
min: this.minLatitude,
|
|
194
|
+
reason: `Latitude is lower than minimum value: ${this.minLatitude}.`
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
if (exists(this.maxLatitude) && this.latitudeValue > this.maxLatitude) {
|
|
198
|
+
result = result || {};
|
|
199
|
+
result.maxLatitude = {
|
|
200
|
+
value,
|
|
201
|
+
max: this.maxLatitude,
|
|
202
|
+
reason: `Latitude is higher than maximum value: ${this.maxLatitude}.`
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
if (exists(this.minLongitude) && this.longitudeValue < this.minLongitude) {
|
|
206
|
+
result = result || {};
|
|
207
|
+
result.minLongitude = {
|
|
208
|
+
value,
|
|
209
|
+
min: this.minLongitude,
|
|
210
|
+
reason: `Longitude is lower than minimum value: ${this.minLongitude}.`
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
if (exists(this.maxLongitude) && this.longitudeValue > this.maxLongitude) {
|
|
214
|
+
result = result || {};
|
|
215
|
+
result.maxLongitude = {
|
|
216
|
+
value,
|
|
217
|
+
max: this.maxLongitude,
|
|
218
|
+
reason: `Longitude is higher than maximum value: ${this.maxLongitude}.`
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
this.lastErrors = result;
|
|
222
|
+
return result;
|
|
223
|
+
}
|
|
224
|
+
// End of Validator interface
|
|
225
|
+
ngOnInit() {
|
|
226
|
+
this.inputId = this.inputId
|
|
227
|
+
? this.inputId
|
|
228
|
+
: `geolocation$${GeolocationComponent.idCounter++}`;
|
|
229
|
+
this.setPatterns();
|
|
230
|
+
}
|
|
231
|
+
roundToStepAndUpdateLatitudeAndLongitude(newLatitudeAndLongitude) {
|
|
232
|
+
const newLatitude = roundToMultipleOf(newLatitudeAndLongitude[1], this.step);
|
|
233
|
+
const newLongitude = roundToMultipleOf(newLatitudeAndLongitude[0], this.step);
|
|
234
|
+
if (this.disabled || this.readonly) {
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
if (!exists(newLatitudeAndLongitude)) {
|
|
238
|
+
this.value = null;
|
|
239
|
+
}
|
|
240
|
+
this.value = {
|
|
241
|
+
type: 'Point',
|
|
242
|
+
coordinates: [newLongitude, newLatitude]
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
onLostFocus() {
|
|
246
|
+
this.markAsTouched();
|
|
247
|
+
}
|
|
248
|
+
onEventLatitude(newLatitude) {
|
|
249
|
+
if (this.disabled || this.readonly) {
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
const newLatitudeValue = isValidNumber(newLatitude) ? +newLatitude : null;
|
|
253
|
+
if (!(exists(this.value) && exists(this.value.coordinates[0])) &&
|
|
254
|
+
!exists(newLatitudeValue)) {
|
|
255
|
+
this.value = null;
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
this.value = {
|
|
259
|
+
type: 'Point',
|
|
260
|
+
coordinates: [
|
|
261
|
+
this.value ? this.value.coordinates[0] : undefined,
|
|
262
|
+
newLatitudeValue
|
|
263
|
+
]
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
this.markAsTouched();
|
|
267
|
+
}
|
|
268
|
+
onEventLongitude(newLongitude) {
|
|
269
|
+
if (this.disabled || this.readonly) {
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
const newLongitudeValue = isValidNumber(newLongitude)
|
|
273
|
+
? +newLongitude
|
|
274
|
+
: null;
|
|
275
|
+
if (!exists(newLongitudeValue) &&
|
|
276
|
+
!(exists(this.value) && exists(this._value.coordinates[1]))) {
|
|
277
|
+
this.value = null;
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
this.value = {
|
|
281
|
+
type: 'Point',
|
|
282
|
+
coordinates: [
|
|
283
|
+
newLongitudeValue,
|
|
284
|
+
this.value ? this.value.coordinates[1] : undefined
|
|
285
|
+
]
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
this.markAsTouched();
|
|
289
|
+
}
|
|
290
|
+
onKeyPress(event) {
|
|
291
|
+
this.keyPress.emit(event);
|
|
292
|
+
}
|
|
293
|
+
checkClassName() {
|
|
294
|
+
return this.disabled
|
|
295
|
+
? this.readonly
|
|
296
|
+
? 'disabled readonly'
|
|
297
|
+
: 'disabled'
|
|
298
|
+
: this.readonly
|
|
299
|
+
? 'readonly'
|
|
300
|
+
: '';
|
|
301
|
+
}
|
|
302
|
+
openModalMap(modal) {
|
|
303
|
+
this.modalService.open(modal).result.then((result) => {
|
|
304
|
+
if (result !== 'cancel') {
|
|
305
|
+
this.roundToStepAndUpdateLatitudeAndLongitude(result);
|
|
306
|
+
}
|
|
307
|
+
}, (_) => { });
|
|
308
|
+
}
|
|
309
|
+
onSearchLocationChanged(newValue, map) {
|
|
310
|
+
map.markerPoint = newValue;
|
|
311
|
+
map.center = map.markerPoint;
|
|
312
|
+
}
|
|
313
|
+
get mapTitle() {
|
|
314
|
+
return this._disabled || !!this.readonly
|
|
315
|
+
? this.i18n[this.lang].location
|
|
316
|
+
: this.i18n[this.lang].selectLocation;
|
|
317
|
+
}
|
|
318
|
+
get self() {
|
|
319
|
+
return this;
|
|
320
|
+
}
|
|
321
|
+
getLabels(instance, keys) {
|
|
322
|
+
return instance.locationService.getLabels(instance.locationService, keys);
|
|
323
|
+
}
|
|
324
|
+
getData(instance, search) {
|
|
325
|
+
return instance.locationService.getData(instance.locationService, search);
|
|
326
|
+
}
|
|
327
|
+
setPatterns() {
|
|
328
|
+
this.step = this.step || 0.00001; // 0.00001 degrees = 1.11 meters
|
|
329
|
+
this.zoom = this.zoom || 18; // (360/2^18) degrees ~ 0.00137 degrees ~ 153 meters
|
|
330
|
+
this.minLatitude = this.minLatitude || -90;
|
|
331
|
+
this.maxLatitude = this.maxLatitude || +90;
|
|
332
|
+
this.minLongitude = this.minLongitude || -180;
|
|
333
|
+
this.maxLongitude = this.maxLongitude || +180;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
GeolocationComponent.idCounter = 0;
|
|
337
|
+
GeolocationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: GeolocationComponent, deps: [{ token: i1.ModalService }, { token: i2.GeolocationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
338
|
+
GeolocationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: GeolocationComponent, selector: "lux-geolocation", inputs: { minLatitude: "minLatitude", maxLatitude: "maxLatitude", minLongitude: "minLongitude", maxLongitude: "maxLongitude", step: "step", zoom: "zoom", lang: "lang", inlineErrors: "inlineErrors", inputId: "inputId", ariaLabel: ["aria-label", "ariaLabel"], readonly: "readonly", disabled: "disabled", required: "required", value: "value" }, outputs: { valueChange: "valueChange", keyPress: "keyPress" }, providers: [
|
|
339
|
+
{
|
|
340
|
+
provide: NG_VALUE_ACCESSOR,
|
|
341
|
+
multi: true,
|
|
342
|
+
useExisting: forwardRef(() => GeolocationComponent)
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
provide: NG_VALIDATORS,
|
|
346
|
+
multi: true,
|
|
347
|
+
useExisting: forwardRef(() => GeolocationComponent)
|
|
348
|
+
}
|
|
349
|
+
], viewQueries: [{ propertyName: "latitude", first: true, predicate: ["latitude"], descendants: true, static: true }, { propertyName: "longitude", first: true, predicate: ["longitude"], descendants: true, static: true }, { propertyName: "map", first: true, predicate: ["map"], descendants: true }], ngImport: i0, template: "<input\n #latitude\n class=\"rounded-left prefix\"\n [ngClass]=\"className\"\n type=\"number\"\n [id]=\"inputId + '$latitude'\"\n [(ngModel)]=\"latitudeValue\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.min]=\"\n minLatitude !== undefined && minLatitude !== null\n ? minLatitude.toString()\n : undefined\n \"\n [attr.max]=\"\n maxLatitude !== undefined && maxLatitude !== null\n ? maxLatitude.toString()\n : undefined\n \"\n [attr.step]=\"\n step !== undefined && step !== null ? step.toString() : undefined\n \"\n [placeholder]=\"i18n[lang].lat\"\n (keyup)=\"onEventLatitude(latitude.value)\"\n (change)=\"onEventLatitude(latitude.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n/>\n<div\n class=\"infix symbol monospace clickable\"\n [ngClass]=\"className\"\n (click)=\"openModalMap(modalMap)\">\n <span *ngIf=\"isValidNumber(latitudeValue) && latitudeValue >= 0\">{{\n i18n[lang].cardinalPoints.north\n }}</span>\n <span *ngIf=\"isValidNumber(latitudeValue) && latitudeValue < 0\">{{\n i18n[lang].cardinalPoints.south\n }}</span>\n <span *ngIf=\"!isValidNumber(latitudeValue)\">-</span>\n</div>\n<input\n #longitude\n class=\"prefix\"\n [ngClass]=\"className\"\n type=\"number\"\n [id]=\"inputId + '$longitude'\"\n [(ngModel)]=\"longitudeValue\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.min]=\"\n minLongitude !== undefined && minLongitude !== null\n ? minLongitude.toString()\n : undefined\n \"\n [attr.max]=\"\n maxLongitude !== undefined && maxLongitude !== null\n ? maxLongitude.toString()\n : undefined\n \"\n [attr.step]=\"\n step !== undefined && step !== null ? step.toString() : undefined\n \"\n [placeholder]=\"i18n[lang].lon\"\n (keyup)=\"onEventLongitude(longitude.value)\"\n (change)=\"onEventLongitude(longitude.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n/>\n<div\n class=\"infix symbol monospace clickable\"\n [ngClass]=\"className\"\n (click)=\"openModalMap(modalMap)\"\n>\n <span *ngIf=\"isValidNumber(longitudeValue) && longitudeValue >= 0\">{{\n i18n[lang].cardinalPoints.east\n }}</span>\n <span *ngIf=\"isValidNumber(longitudeValue) && longitudeValue < 0\">{{\n i18n[lang].cardinalPoints.west\n }}</span>\n <span *ngIf=\"!isValidNumber(longitudeValue)\">-</span>\n</div>\n<div\n [class]=\"\n disabled || readonly || !isClearable()\n ? 'clickable rounded-right postfix symbol'\n : 'clickable postfix symbol'\n \"\n [ngClass]=\"className\"\n (click)=\"openModalMap(modalMap)\"\n>\n <span class=\"icon-globe\"></span>\n</div>\n<button\n #clearButton\n *ngIf=\"!disabled && !readonly && isClearable()\"\n class=\"rounded-right postfix bordered icon icon-clear\"\n [id]=\"inputId + '$clear'\"\n type=\"button\"\n (click)=\"clear()\"\n aria-label=\"clear\"\n></button>\n\n<div *ngIf=\"inlineErrors && lastErrors && (dirty || touched)\" class=\"alert\">\n <div *ngIf=\"lastErrors.required\">\n {{ i18n[lang].userErrors.required }}\n </div>\n <div *ngIf=\"lastErrors.minLatitude\">\n {{\n i18n[lang].userErrors.minLatitude.replace(\n '$minLatitude',\n lastErrors.minLatitude.min\n )\n }}\n </div>\n <div *ngIf=\"lastErrors.maxLatitude\">\n {{\n i18n[lang].userErrors.maxLatitude.replace(\n '$maxLatitude',\n lastErrors.maxLatitude.max\n )\n }}\n </div>\n <div *ngIf=\"lastErrors.minLongitude\">\n {{\n i18n[lang].userErrors.minLongitude.replace(\n '$minLongitude',\n lastErrors.minLongitude.min\n )\n }}\n </div>\n <div *ngIf=\"lastErrors.maxLongitude\">\n {{\n i18n[lang].userErrors.maxLongitude.replace(\n '$maxLongitude',\n lastErrors.maxLongitude.max\n )\n }}\n </div>\n</div>\n\n<ng-template #modalMap let-modal>\n <div class=\"lux-modal-header\">\n <h4 class=\"modal-title default-font\" id=\"modal-basic-title\">{{ mapTitle }}</h4>\n <button\n type=\"button\"\n class=\"close\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss('Cross click')\"\n >\n <span aria-hidden=\"true\">\u00D7</span>\n </button>\n </div>\n <div class=\"lux-modal-body content\">\n <lux-autocomplete\n #searchBar\n [attr.aria-label]=\"i18n[lang].typeToSearch\"\n [placeholder]=\"i18n[lang].typeToSearch\"\n *ngIf=\"!disabled && !readonly\"\n [instance]=\"self\"\n [resolveLabelsFunction]=\"getLabels\"\n [populateFunction]=\"getData\"\n (valueChange)=\"onSearchLocationChanged(searchBar.value, map)\"\n ></lux-autocomplete>\n <div class=\"map-container\">\n <lux-map\n #map\n [center]=\"value\"\n [markerPoint]=\"value\"\n [zoom]=\"zoom\"\n [readonly]=\"readonly === true || disabled === true ? true : false\"\n ></lux-map>\n </div>\n </div>\n <div class=\"lux-modal-footer\">\n <button\n *ngIf=\"disabled || readonly\"\n type=\"button\"\n class=\"btn btn-cancel\"\n (click)=\"modal.close('cancel')\"\n >\n {{ i18n[lang].closeAction }}\n </button>\n <button\n *ngIf=\"!disabled && !readonly\"\n type=\"button\"\n class=\"btn btn-cancel\"\n (click)=\"modal.close('cancel')\"\n >\n {{ i18n[lang].cancelAction }}\n </button>\n <button\n *ngIf=\"!disabled && !readonly\"\n type=\"button\"\n class=\"btn btn-select\"\n (click)=\"modal.close(map.markerPoint.coordinates)\"\n >\n {{ i18n[lang].selectAction }}\n </button>\n </div>\n</ng-template>\n", styles: [":focus{z-index:1}input,select,textarea{border:1px solid #495057;border:var(--lux-input-border, 1px solid) var(--lux-input-border-color, #495057);margin:0rem;margin:var(--lux-input-margin, 0rem);padding:0rem .5rem;padding:var(--lux-input-padding, 0rem .5rem)}.alert{padding:.2rem 2rem;background:#fe2e2e;background:var(--lux-alert-background, #fe2e2e);color:#fff;color:var(--lux-alert-color, white);font-family:Consolas,monospace;width:45%;margin-right:1rem;display:inline-block}.symbol{display:inline-block;align-items:baseline;padding:0rem .5rem;margin-bottom:0;font-weight:400;color:default;color:var(--lux-symbol-color, default);text-align:center;white-space:nowrap;background:default;background:var(--lux-symbol-background, default);font-size:1rem;font-size:var(--lux-symbol-font-size, 1rem)}.bordered,.symbol{border:1px solid #495057;border:var(--lux-input-border, 1px solid) var(--lux-input-border-color, #495057)}.rounded,.rounded-right,.rounded-middle,.rounded-left{border-radius:.25rem;border-radius:var(--lux-border-radius, .25rem)}.rounded-left{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-middle{border-radius:0}.rounded-right{border-top-left-radius:0;border-bottom-left-radius:0}.prefix{border-right:none}.infix{border-left:none;border-right:none}.postfix{border-left:none;display:flex;align-items:center}.monospace{font-family:monospace}.default-font{color:#000;color:var(--lux-font-color, black)}:host{display:flex;align-items:stretch}.btn-select{color:#fff;background-color:#4242d1;margin-left:2rem}.btn-cancel{color:#fff;background-color:#c22929}.readonly{border:none}.readonly:focus{border:none;outline:none}.disabled{background-color:#f1f1f1;background-color:var(--lux-disabled-color, #f1f1f1);border-color:#6d6d6d;border-color:var(--lux-disabled-border-color, #6d6d6d)}.icon,.icon-clear,.icon-globe{display:inline-block;background-size:1rem 1rem;background-position:center;background-repeat:no-repeat;min-width:1rem;min-height:1rem;width:1.5rem;width:var(--lux-autocomplete-icon-width, 1.5rem);z-index:1}.clickable{cursor:pointer}.icon-globe{background:url(/assets/img/globe.svg) no-repeat center;background:var(--lux-autocomplete-icon-globe, url(/assets/img/globe.svg) no-repeat center);background-size:1rem;height:100%}.icon-clear{width:1.5rem;width:var(--lux-autocomplete-icon-width, 1.5rem);background:url(/assets/img/filter-clear.png) no-repeat center;background:var(--lux-autocomplete-icon-clear, url(/assets/img/filter-clear.png) no-repeat center);background-size:.5rem .5rem;background-size:var(--lux-autocomplete-icon-bg-size, .5rem .5rem);z-index:1}.lux-modal-body{padding:0}.map-container{height:45vh;height:var(--lux-geolocation-map-height, 45vh);width:90vw;width:var(--lux-geolocation-map-width, 90vw);max-width:100%}\n"], components: [{ type: i3.AutocompleteComponent, selector: "lux-autocomplete", inputs: ["inputId", "disabled", "readonly", "label", "canAddNewValues", "keepOpenAfterDelete", "value", "dataSource", "required", "placeholder", "resolveLabelsFunction", "populateFunction", "instance"], outputs: ["valueChange", "dataSourceChange"] }, { type: i4.MapComponent, selector: "lux-map", inputs: ["mapId", "zoom", "center", "readonly", "markerCoordinates", "markerPoint"], outputs: ["valueChange"] }], directives: [{ type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { type: i5.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { type: i5.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
350
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: GeolocationComponent, decorators: [{
|
|
351
|
+
type: Component,
|
|
352
|
+
args: [{ selector: 'lux-geolocation', providers: [
|
|
353
|
+
{
|
|
354
|
+
provide: NG_VALUE_ACCESSOR,
|
|
355
|
+
multi: true,
|
|
356
|
+
useExisting: forwardRef(() => GeolocationComponent)
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
provide: NG_VALIDATORS,
|
|
360
|
+
multi: true,
|
|
361
|
+
useExisting: forwardRef(() => GeolocationComponent)
|
|
362
|
+
}
|
|
363
|
+
], template: "<input\n #latitude\n class=\"rounded-left prefix\"\n [ngClass]=\"className\"\n type=\"number\"\n [id]=\"inputId + '$latitude'\"\n [(ngModel)]=\"latitudeValue\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.min]=\"\n minLatitude !== undefined && minLatitude !== null\n ? minLatitude.toString()\n : undefined\n \"\n [attr.max]=\"\n maxLatitude !== undefined && maxLatitude !== null\n ? maxLatitude.toString()\n : undefined\n \"\n [attr.step]=\"\n step !== undefined && step !== null ? step.toString() : undefined\n \"\n [placeholder]=\"i18n[lang].lat\"\n (keyup)=\"onEventLatitude(latitude.value)\"\n (change)=\"onEventLatitude(latitude.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n/>\n<div\n class=\"infix symbol monospace clickable\"\n [ngClass]=\"className\"\n (click)=\"openModalMap(modalMap)\">\n <span *ngIf=\"isValidNumber(latitudeValue) && latitudeValue >= 0\">{{\n i18n[lang].cardinalPoints.north\n }}</span>\n <span *ngIf=\"isValidNumber(latitudeValue) && latitudeValue < 0\">{{\n i18n[lang].cardinalPoints.south\n }}</span>\n <span *ngIf=\"!isValidNumber(latitudeValue)\">-</span>\n</div>\n<input\n #longitude\n class=\"prefix\"\n [ngClass]=\"className\"\n type=\"number\"\n [id]=\"inputId + '$longitude'\"\n [(ngModel)]=\"longitudeValue\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.min]=\"\n minLongitude !== undefined && minLongitude !== null\n ? minLongitude.toString()\n : undefined\n \"\n [attr.max]=\"\n maxLongitude !== undefined && maxLongitude !== null\n ? maxLongitude.toString()\n : undefined\n \"\n [attr.step]=\"\n step !== undefined && step !== null ? step.toString() : undefined\n \"\n [placeholder]=\"i18n[lang].lon\"\n (keyup)=\"onEventLongitude(longitude.value)\"\n (change)=\"onEventLongitude(longitude.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n/>\n<div\n class=\"infix symbol monospace clickable\"\n [ngClass]=\"className\"\n (click)=\"openModalMap(modalMap)\"\n>\n <span *ngIf=\"isValidNumber(longitudeValue) && longitudeValue >= 0\">{{\n i18n[lang].cardinalPoints.east\n }}</span>\n <span *ngIf=\"isValidNumber(longitudeValue) && longitudeValue < 0\">{{\n i18n[lang].cardinalPoints.west\n }}</span>\n <span *ngIf=\"!isValidNumber(longitudeValue)\">-</span>\n</div>\n<div\n [class]=\"\n disabled || readonly || !isClearable()\n ? 'clickable rounded-right postfix symbol'\n : 'clickable postfix symbol'\n \"\n [ngClass]=\"className\"\n (click)=\"openModalMap(modalMap)\"\n>\n <span class=\"icon-globe\"></span>\n</div>\n<button\n #clearButton\n *ngIf=\"!disabled && !readonly && isClearable()\"\n class=\"rounded-right postfix bordered icon icon-clear\"\n [id]=\"inputId + '$clear'\"\n type=\"button\"\n (click)=\"clear()\"\n aria-label=\"clear\"\n></button>\n\n<div *ngIf=\"inlineErrors && lastErrors && (dirty || touched)\" class=\"alert\">\n <div *ngIf=\"lastErrors.required\">\n {{ i18n[lang].userErrors.required }}\n </div>\n <div *ngIf=\"lastErrors.minLatitude\">\n {{\n i18n[lang].userErrors.minLatitude.replace(\n '$minLatitude',\n lastErrors.minLatitude.min\n )\n }}\n </div>\n <div *ngIf=\"lastErrors.maxLatitude\">\n {{\n i18n[lang].userErrors.maxLatitude.replace(\n '$maxLatitude',\n lastErrors.maxLatitude.max\n )\n }}\n </div>\n <div *ngIf=\"lastErrors.minLongitude\">\n {{\n i18n[lang].userErrors.minLongitude.replace(\n '$minLongitude',\n lastErrors.minLongitude.min\n )\n }}\n </div>\n <div *ngIf=\"lastErrors.maxLongitude\">\n {{\n i18n[lang].userErrors.maxLongitude.replace(\n '$maxLongitude',\n lastErrors.maxLongitude.max\n )\n }}\n </div>\n</div>\n\n<ng-template #modalMap let-modal>\n <div class=\"lux-modal-header\">\n <h4 class=\"modal-title default-font\" id=\"modal-basic-title\">{{ mapTitle }}</h4>\n <button\n type=\"button\"\n class=\"close\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss('Cross click')\"\n >\n <span aria-hidden=\"true\">\u00D7</span>\n </button>\n </div>\n <div class=\"lux-modal-body content\">\n <lux-autocomplete\n #searchBar\n [attr.aria-label]=\"i18n[lang].typeToSearch\"\n [placeholder]=\"i18n[lang].typeToSearch\"\n *ngIf=\"!disabled && !readonly\"\n [instance]=\"self\"\n [resolveLabelsFunction]=\"getLabels\"\n [populateFunction]=\"getData\"\n (valueChange)=\"onSearchLocationChanged(searchBar.value, map)\"\n ></lux-autocomplete>\n <div class=\"map-container\">\n <lux-map\n #map\n [center]=\"value\"\n [markerPoint]=\"value\"\n [zoom]=\"zoom\"\n [readonly]=\"readonly === true || disabled === true ? true : false\"\n ></lux-map>\n </div>\n </div>\n <div class=\"lux-modal-footer\">\n <button\n *ngIf=\"disabled || readonly\"\n type=\"button\"\n class=\"btn btn-cancel\"\n (click)=\"modal.close('cancel')\"\n >\n {{ i18n[lang].closeAction }}\n </button>\n <button\n *ngIf=\"!disabled && !readonly\"\n type=\"button\"\n class=\"btn btn-cancel\"\n (click)=\"modal.close('cancel')\"\n >\n {{ i18n[lang].cancelAction }}\n </button>\n <button\n *ngIf=\"!disabled && !readonly\"\n type=\"button\"\n class=\"btn btn-select\"\n (click)=\"modal.close(map.markerPoint.coordinates)\"\n >\n {{ i18n[lang].selectAction }}\n </button>\n </div>\n</ng-template>\n", styles: [":focus{z-index:1}input,select,textarea{border:1px solid #495057;border:var(--lux-input-border, 1px solid) var(--lux-input-border-color, #495057);margin:0rem;margin:var(--lux-input-margin, 0rem);padding:0rem .5rem;padding:var(--lux-input-padding, 0rem .5rem)}.alert{padding:.2rem 2rem;background:#fe2e2e;background:var(--lux-alert-background, #fe2e2e);color:#fff;color:var(--lux-alert-color, white);font-family:Consolas,monospace;width:45%;margin-right:1rem;display:inline-block}.symbol{display:inline-block;align-items:baseline;padding:0rem .5rem;margin-bottom:0;font-weight:400;color:default;color:var(--lux-symbol-color, default);text-align:center;white-space:nowrap;background:default;background:var(--lux-symbol-background, default);font-size:1rem;font-size:var(--lux-symbol-font-size, 1rem)}.bordered,.symbol{border:1px solid #495057;border:var(--lux-input-border, 1px solid) var(--lux-input-border-color, #495057)}.rounded,.rounded-right,.rounded-middle,.rounded-left{border-radius:.25rem;border-radius:var(--lux-border-radius, .25rem)}.rounded-left{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-middle{border-radius:0}.rounded-right{border-top-left-radius:0;border-bottom-left-radius:0}.prefix{border-right:none}.infix{border-left:none;border-right:none}.postfix{border-left:none;display:flex;align-items:center}.monospace{font-family:monospace}.default-font{color:#000;color:var(--lux-font-color, black)}:host{display:flex;align-items:stretch}.btn-select{color:#fff;background-color:#4242d1;margin-left:2rem}.btn-cancel{color:#fff;background-color:#c22929}.readonly{border:none}.readonly:focus{border:none;outline:none}.disabled{background-color:#f1f1f1;background-color:var(--lux-disabled-color, #f1f1f1);border-color:#6d6d6d;border-color:var(--lux-disabled-border-color, #6d6d6d)}.icon,.icon-clear,.icon-globe{display:inline-block;background-size:1rem 1rem;background-position:center;background-repeat:no-repeat;min-width:1rem;min-height:1rem;width:1.5rem;width:var(--lux-autocomplete-icon-width, 1.5rem);z-index:1}.clickable{cursor:pointer}.icon-globe{background:url(/assets/img/globe.svg) no-repeat center;background:var(--lux-autocomplete-icon-globe, url(/assets/img/globe.svg) no-repeat center);background-size:1rem;height:100%}.icon-clear{width:1.5rem;width:var(--lux-autocomplete-icon-width, 1.5rem);background:url(/assets/img/filter-clear.png) no-repeat center;background:var(--lux-autocomplete-icon-clear, url(/assets/img/filter-clear.png) no-repeat center);background-size:.5rem .5rem;background-size:var(--lux-autocomplete-icon-bg-size, .5rem .5rem);z-index:1}.lux-modal-body{padding:0}.map-container{height:45vh;height:var(--lux-geolocation-map-height, 45vh);width:90vw;width:var(--lux-geolocation-map-width, 90vw);max-width:100%}\n"] }]
|
|
364
|
+
}], ctorParameters: function () { return [{ type: i1.ModalService }, { type: i2.GeolocationService }]; }, propDecorators: { latitude: [{
|
|
365
|
+
type: ViewChild,
|
|
366
|
+
args: ['latitude', { static: true }]
|
|
367
|
+
}], longitude: [{
|
|
368
|
+
type: ViewChild,
|
|
369
|
+
args: ['longitude', { static: true }]
|
|
370
|
+
}], map: [{
|
|
371
|
+
type: ViewChild,
|
|
372
|
+
args: ['map', { static: false }]
|
|
373
|
+
}], minLatitude: [{
|
|
374
|
+
type: Input
|
|
375
|
+
}], maxLatitude: [{
|
|
376
|
+
type: Input
|
|
377
|
+
}], minLongitude: [{
|
|
378
|
+
type: Input
|
|
379
|
+
}], maxLongitude: [{
|
|
380
|
+
type: Input
|
|
381
|
+
}], step: [{
|
|
382
|
+
type: Input
|
|
383
|
+
}], zoom: [{
|
|
384
|
+
type: Input
|
|
385
|
+
}], lang: [{
|
|
386
|
+
type: Input
|
|
387
|
+
}], inlineErrors: [{
|
|
388
|
+
type: Input
|
|
389
|
+
}], inputId: [{
|
|
390
|
+
type: Input
|
|
391
|
+
}], ariaLabel: [{
|
|
392
|
+
type: Input,
|
|
393
|
+
args: ['aria-label']
|
|
394
|
+
}], readonly: [{
|
|
395
|
+
type: Input
|
|
396
|
+
}], disabled: [{
|
|
397
|
+
type: Input
|
|
398
|
+
}], required: [{
|
|
399
|
+
type: Input
|
|
400
|
+
}], value: [{
|
|
401
|
+
type: Input
|
|
402
|
+
}], valueChange: [{
|
|
403
|
+
type: Output
|
|
404
|
+
}], keyPress: [{
|
|
405
|
+
type: Output
|
|
406
|
+
}] } });
|
|
407
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbG9jYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbHV4L3NyYy9saWIvZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbHV4L3NyYy9saWIvZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsYUFBYSxFQUNiLGlCQUFpQixFQUVsQixNQUFNLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sRUFDTCxNQUFNLEVBQ04sUUFBUSxFQUNSLGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2xCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUUzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7O0FBbUIzRCxNQUFNLE9BQU8sb0JBQW9CO0lBb0ovQixZQUNVLFlBQTBCLEVBQzNCLGVBQW1DO1FBRGxDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzNCLG9CQUFlLEdBQWYsZUFBZSxDQUFvQjtRQS9JNUMsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2QsZUFBVSxHQUE0QixJQUFJLENBQUM7UUFNM0Msa0JBQWEsR0FBWSxTQUFTLENBQUM7UUFDbkMsbUJBQWMsR0FBWSxTQUFTLENBQUM7UUFFcEMsa0JBQWEsR0FBRyxhQUFhLENBQUM7UUFFOUIsU0FBSSxHQUFHO1lBQ0wsRUFBRSxFQUFFO2dCQUNGLEdBQUcsRUFBRSxVQUFVO2dCQUNmLEdBQUcsRUFBRSxXQUFXO2dCQUNoQixjQUFjLEVBQUUsaUJBQWlCO2dCQUNqQyxRQUFRLEVBQUUsVUFBVTtnQkFDcEIsWUFBWSxFQUFFLFFBQVE7Z0JBQ3RCLFlBQVksRUFBRSxRQUFRO2dCQUN0QixXQUFXLEVBQUUsT0FBTztnQkFDcEIsWUFBWSxFQUFFLGdCQUFnQjtnQkFDOUIsY0FBYyxFQUFFO29CQUNkLEtBQUssRUFBRSxHQUFHO29CQUNWLEtBQUssRUFBRSxHQUFHO29CQUNWLElBQUksRUFBRSxHQUFHO29CQUNULElBQUksRUFBRSxHQUFHO2lCQUNWO2dCQUNELFVBQVUsRUFBRTtvQkFDVixRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixXQUFXLEVBQUUsbUNBQW1DO29CQUNoRCxXQUFXLEVBQUUsbUNBQW1DO29CQUNoRCxZQUFZLEVBQUUscUNBQXFDO29CQUNuRCxZQUFZLEVBQUUscUNBQXFDO2lCQUNwRDthQUNGO1lBQ0QsRUFBRSxFQUFFO2dCQUNGLEdBQUcsRUFBRSxTQUFTO2dCQUNkLEdBQUcsRUFBRSxVQUFVO2dCQUNmLGNBQWMsRUFBRSxzQkFBc0I7Z0JBQ3RDLFFBQVEsRUFBRSxXQUFXO2dCQUNyQixZQUFZLEVBQUUsYUFBYTtnQkFDM0IsWUFBWSxFQUFFLFVBQVU7Z0JBQ3hCLFdBQVcsRUFBRSxRQUFRO2dCQUNyQixZQUFZLEVBQUUscUJBQXFCO2dCQUNuQyxjQUFjLEVBQUU7b0JBQ2QsS0FBSyxFQUFFLEdBQUc7b0JBQ1YsS0FBSyxFQUFFLEdBQUc7b0JBQ1YsSUFBSSxFQUFFLEdBQUc7b0JBQ1QsSUFBSSxFQUFFLEdBQUc7aUJBQ1Y7Z0JBQ0QsVUFBVSxFQUFFO29CQUNWLFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFdBQVcsRUFBRSxvQ0FBb0M7b0JBQ2pELFdBQVcsRUFBRSxvQ0FBb0M7b0JBQ2pELFlBQVksRUFBRSxzQ0FBc0M7b0JBQ3BELFlBQVksRUFBRSxzQ0FBc0M7aUJBQ3JEO2FBQ0Y7U0FDRixDQUFDO1FBbUJPLFNBQUksR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ25CLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBR3JCLGFBQVEsR0FBbUIsSUFBSSxDQUFDO1FBb0R0QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFZLENBQUM7UUFDM0MsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBRXZELGFBQVEsR0FBRyxDQUFDLEtBQVUsRUFBUSxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQ3BDLGNBQVMsR0FBRyxHQUFTLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFLeEIsQ0FBQztJQXJFSixJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBUUQsSUFDSSxRQUFRLENBQUMsQ0FBbUI7UUFDOUIsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUNJLFFBQVEsQ0FBQyxDQUFVO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQ0ksS0FBSyxDQUFDLENBQVc7UUFDbkIsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNyQixPQUFPLENBQUMsMENBQTBDO1NBQ25EO1FBQ0QsTUFBTSxlQUFlLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxRCxJQUNFLENBQUM7WUFDRCxDQUFDLENBQUMsV0FBVztZQUNiLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDMUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNwRDtZQUNBLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM5QzthQUFNLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFDYixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2xDO2FBQU07WUFDTCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNoQiwwREFBMEQ7WUFDMUQscUZBQXFGO1NBQ3RGO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUNELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBYUQsZ0RBQWdEO0lBQ2hELFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxRQUFhO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxTQUFjO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLFFBQWlCO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFDRCx1REFBdUQ7SUFFL0Msb0JBQW9CLENBQUMsUUFBZ0I7UUFDM0MsZ0RBQWdEO1FBQ2hELElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDO0lBQ2hDLENBQUM7SUFDTyxxQkFBcUIsQ0FBQyxTQUFpQjtRQUM3QyxrREFBa0Q7UUFDbEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7SUFDbEMsQ0FBQztJQUNELEtBQUs7UUFDSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFDRCxXQUFXO1FBQ1QsT0FBTyxDQUNMLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FDeEUsQ0FBQztJQUNKLENBQUM7SUFFRCxzQkFBc0I7SUFDdEIseUJBQXlCLEtBQVUsQ0FBQztJQUVwQyxRQUFRLENBQUMsT0FBd0I7UUFDL0IsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUM1QixJQUFJLE1BQU0sR0FBNEIsSUFBSSxDQUFDO1FBRTNDLElBQ0UsSUFBSSxDQUFDLFFBQVE7WUFDYixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDaEIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUMzQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQzVCO1lBQ0EsTUFBTSxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUM7WUFDdEIsTUFBTSxDQUFDLFFBQVEsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztTQUN4RDtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDOUQsTUFBTSxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUM7WUFDdEIsTUFBTSxDQUFDLGNBQWMsR0FBRztnQkFDdEIsS0FBSztnQkFDTCxNQUFNLEVBQUUseUJBQXlCO2FBQ2xDLENBQUM7U0FDSDtRQUNELElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDOUQsTUFBTSxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUM7WUFDdEIsTUFBTSxDQUFDLGVBQWUsR0FBRztnQkFDdkIsS0FBSztnQkFDTCxNQUFNLEVBQUUsMEJBQTBCO2FBQ25DLENBQUM7U0FDSDtRQUNELElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckUsTUFBTSxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUM7WUFDdEIsTUFBTSxDQUFDLFdBQVcsR0FBRztnQkFDbkIsS0FBSztnQkFDTCxHQUFHLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQ3JCLE1BQU0sRUFBRSx5Q0FBeUMsSUFBSSxDQUFDLFdBQVcsR0FBRzthQUNyRSxDQUFDO1NBQ0g7UUFDRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3JFLE1BQU0sR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO1lBQ3RCLE1BQU0sQ0FBQyxXQUFXLEdBQUc7Z0JBQ25CLEtBQUs7Z0JBQ0wsR0FBRyxFQUFFLElBQUksQ0FBQyxXQUFXO2dCQUNyQixNQUFNLEVBQUUsMENBQTBDLElBQUksQ0FBQyxXQUFXLEdBQUc7YUFDdEUsQ0FBQztTQUNIO1FBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN4RSxNQUFNLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztZQUN0QixNQUFNLENBQUMsWUFBWSxHQUFHO2dCQUNwQixLQUFLO2dCQUNMLEdBQUcsRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDdEIsTUFBTSxFQUFFLDBDQUEwQyxJQUFJLENBQUMsWUFBWSxHQUFHO2FBQ3ZFLENBQUM7U0FDSDtRQUNELElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDeEUsTUFBTSxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUM7WUFDdEIsTUFBTSxDQUFDLFlBQVksR0FBRztnQkFDcEIsS0FBSztnQkFDTCxHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVk7Z0JBQ3RCLE1BQU0sRUFBRSwyQ0FBMkMsSUFBSSxDQUFDLFlBQVksR0FBRzthQUN4RSxDQUFDO1NBQ0g7UUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUN6QixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBQ0QsNkJBQTZCO0lBRTdCLFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPO1lBQ3pCLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTztZQUNkLENBQUMsQ0FBQyxlQUFlLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7UUFDdEQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCx3Q0FBd0MsQ0FDdEMsdUJBQWlDO1FBRWpDLE1BQU0sV0FBVyxHQUFHLGlCQUFpQixDQUNuQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsRUFDMUIsSUFBSSxDQUFDLElBQUksQ0FDVixDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQUcsaUJBQWlCLENBQ3BDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxFQUMxQixJQUFJLENBQUMsSUFBSSxDQUNWLENBQUM7UUFDRixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQyxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLEVBQUU7WUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7U0FDbkI7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHO1lBQ1gsSUFBSSxFQUFFLE9BQU87WUFDYixXQUFXLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDO1NBQ3pDLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBQ0QsZUFBZSxDQUFDLFdBQW1CO1FBQ2pDLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xDLE9BQU87U0FDUjtRQUNELE1BQU0sZ0JBQWdCLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzFFLElBQ0UsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUQsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsRUFDekI7WUFDQSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNuQjthQUFNO1lBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRztnQkFDWCxJQUFJLEVBQUUsT0FBTztnQkFDYixXQUFXLEVBQUU7b0JBQ1gsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7b0JBQ2xELGdCQUFnQjtpQkFDakI7YUFDRixDQUFDO1NBQ0g7UUFDRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUNELGdCQUFnQixDQUFDLFlBQW9CO1FBQ25DLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xDLE9BQU87U0FDUjtRQUNELE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FBQztZQUNuRCxDQUFDLENBQUMsQ0FBQyxZQUFZO1lBQ2YsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNULElBQ0UsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUM7WUFDMUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDM0Q7WUFDQSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNuQjthQUFNO1lBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRztnQkFDWCxJQUFJLEVBQUUsT0FBTztnQkFDYixXQUFXLEVBQUU7b0JBQ1gsaUJBQWlCO29CQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztpQkFDbkQ7YUFDRixDQUFDO1NBQ0g7UUFDRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUNELFVBQVUsQ0FBQyxLQUFvQjtRQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLFFBQVE7WUFDbEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRO2dCQUNiLENBQUMsQ0FBQyxtQkFBbUI7Z0JBQ3JCLENBQUMsQ0FBQyxVQUFVO1lBQ2QsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRO2dCQUNmLENBQUMsQ0FBQyxVQUFVO2dCQUNaLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDVCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQXVCO1FBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3ZDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDVCxJQUFJLE1BQU0sS0FBSyxRQUFRLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyx3Q0FBd0MsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN2RDtRQUNILENBQUMsRUFDRCxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUNWLENBQUM7SUFDSixDQUFDO0lBRUQsdUJBQXVCLENBQUMsUUFBa0IsRUFBRSxHQUFRO1FBQ2xELEdBQUcsQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDO1FBQzNCLEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUN0QyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUTtZQUMvQixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsY0FBYyxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxTQUFTLENBQ1AsUUFBOEIsRUFDOUIsSUFBZ0I7UUFFaEIsT0FBTyxRQUFRLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxPQUFPLENBQ0wsUUFBOEIsRUFDOUIsTUFBYztRQUVkLE9BQU8sUUFBUSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxnQ0FBZ0M7UUFDbEUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLG9EQUFvRDtRQUNqRixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUM5QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDaEQsQ0FBQzs7QUFqWk0sOEJBQVMsR0FBRyxDQUFDLENBQUM7aUhBRFYsb0JBQW9CO3FHQUFwQixvQkFBb0IsK2JBYnBCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLEtBQUssRUFBRSxJQUFJO1lBQ1gsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztTQUNwRDtRQUNEO1lBQ0UsT0FBTyxFQUFFLGFBQWE7WUFDdEIsS0FBSyxFQUFFLElBQUk7WUFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO1NBQ3BEO0tBQ0Ysa1VDOUNILHd1TEEwTUE7MkZEMUphLG9CQUFvQjtrQkFqQmhDLFNBQVM7K0JBQ0UsaUJBQWlCLGFBR2hCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDO3lCQUNwRDt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsS0FBSyxFQUFFLElBQUk7NEJBQ1gsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUM7eUJBQ3BEO3FCQUNGO29JQUt3QyxRQUFRO3NCQUFoRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0csU0FBUztzQkFBbEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNILEdBQUc7c0JBQXZDLFNBQVM7dUJBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFpRTVCLFdBQVc7c0JBRGpCLEtBQUs7Z0JBR0MsV0FBVztzQkFEakIsS0FBSztnQkFHQyxZQUFZO3NCQURsQixLQUFLO2dCQUdDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBR0MsSUFBSTtzQkFEVixLQUFLO2dCQUdDLElBQUk7c0JBRFYsS0FBSztnQkFPRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNzQixTQUFTO3NCQUFwQyxLQUFLO3VCQUFDLFlBQVk7Z0JBQ0gsUUFBUTtzQkFBdkIsS0FBSztnQkFHRixRQUFRO3NCQURYLEtBQUs7Z0JBVUYsUUFBUTtzQkFEWCxLQUFLO2dCQVNGLEtBQUs7c0JBRFIsS0FBSztnQkFpQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFZhbGlkYXRpb25FcnJvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJy4uL2RhdGFzb3VyY2UnO1xuaW1wb3J0IHtcbiAgZXhpc3RzLFxuICBoYXNWYWx1ZSxcbiAgaXNJbml0aWFsQW5kRW1wdHksXG4gIGlzVmFsaWROdW1iZXIsXG4gIHJvdW5kVG9NdWx0aXBsZU9mXG59IGZyb20gJy4uL2hlbHBlckZucyc7XG5pbXBvcnQgeyBsYW5ndWFnZURldGVjdG9yIH0gZnJvbSAnLi4vbGFuZyc7XG5pbXBvcnQgeyBHZW9Qb2ludCB9IGZyb20gJy4uL21hcC9nZW9wb2ludCc7XG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi9tb2RhbC9tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IEdlb2xvY2F0aW9uU2VydmljZSB9IGZyb20gJy4vZ2VvbG9jYXRpb24uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2x1eC1nZW9sb2NhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9nZW9sb2NhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dlb2xvY2F0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBHZW9sb2NhdGlvbkNvbXBvbmVudClcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEdlb2xvY2F0aW9uQ29tcG9uZW50KVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBHZW9sb2NhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHN0YXRpYyBpZENvdW50ZXIgPSAwO1xuXG4gIEBWaWV3Q2hpbGQoJ2xhdGl0dWRlJywgeyBzdGF0aWM6IHRydWUgfSkgbGF0aXR1ZGU6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2xvbmdpdHVkZScsIHsgc3RhdGljOiB0cnVlIH0pIGxvbmdpdHVkZTogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnbWFwJywgeyBzdGF0aWM6IGZhbHNlIH0pIG1hcD86IEVsZW1lbnRSZWY7XG5cbiAgdG91Y2hlZCA9IGZhbHNlO1xuICBkaXJ0eSA9IGZhbHNlO1xuICBsYXN0RXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IHN0cmluZyB8IGJvb2xlYW47XG4gIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuO1xuICBwcml2YXRlIF92YWx1ZTogYW55O1xuXG4gIGxhdGl0dWRlVmFsdWU/OiBudW1iZXIgPSB1bmRlZmluZWQ7XG4gIGxvbmdpdHVkZVZhbHVlPzogbnVtYmVyID0gdW5kZWZpbmVkO1xuXG4gIGlzVmFsaWROdW1iZXIgPSBpc1ZhbGlkTnVtYmVyO1xuXG4gIGkxOG4gPSB7XG4gICAgZW46IHtcbiAgICAgIGxhdDogJ2xhdGl0dWRlJyxcbiAgICAgIGxvbjogJ2xvbmdpdHVkZScsXG4gICAgICBzZWxlY3RMb2NhdGlvbjogJ1NlbGVjdCBsb2NhdGlvbicsXG4gICAgICBsb2NhdGlvbjogJ0xvY2F0aW9uJyxcbiAgICAgIHNlbGVjdEFjdGlvbjogJ1NlbGVjdCcsXG4gICAgICBjYW5jZWxBY3Rpb246ICdDYW5jZWwnLFxuICAgICAgY2xvc2VBY3Rpb246ICdDbG9zZScsXG4gICAgICB0eXBlVG9TZWFyY2g6ICd0eXBlIHRvIHNlYXJjaCcsXG4gICAgICBjYXJkaW5hbFBvaW50czoge1xuICAgICAgICBub3J0aDogJ04nLFxuICAgICAgICBzb3V0aDogJ1MnLFxuICAgICAgICBlYXN0OiAnRScsXG4gICAgICAgIHdlc3Q6ICdXJ1xuICAgICAgfSxcbiAgICAgIHVzZXJFcnJvcnM6IHtcbiAgICAgICAgcmVxdWlyZWQ6ICdSZXF1aXJlZCBmaWVsZC4nLFxuICAgICAgICBtaW5MYXRpdHVkZTogJ01pbmltdW0gbGF0aXR1ZGUgaXMgJG1pbkxhdGl0dWRlLicsXG4gICAgICAgIG1heExhdGl0dWRlOiAnTWF4aW11bSBsYXRpdHVkZSBpcyAkbWF4TGF0aXR1ZGUuJyxcbiAgICAgICAgbWluTG9uZ2l0dWRlOiAnTWluaW11bSBsb25naXR1ZGUgaXMgJG1pbkxvbmdpdHVkZS4nLFxuICAgICAgICBtYXhMb25naXR1ZGU6ICdNYXhpbXVtIGxvbmdpdHVkZSBpcyAkbWF4TG9uZ2l0dWRlLidcbiAgICAgIH1cbiAgICB9LFxuICAgIGVzOiB7XG4gICAgICBsYXQ6ICdsYXRpdHVkJyxcbiAgICAgIGxvbjogJ2xvbmdpdHVkJyxcbiAgICAgIHNlbGVjdExvY2F0aW9uOiAnU2VsZWNjaW9uZSB1YmljYWNpw7NuJyxcbiAgICAgIGxvY2F0aW9uOiAnVWJpY2FjacOzbicsXG4gICAgICBzZWxlY3RBY3Rpb246ICdTZWxlY2Npb25hcicsXG4gICAgICBjYW5jZWxBY3Rpb246ICdDYW5jZWxhcicsXG4gICAgICBjbG9zZUFjdGlvbjogJ0NlcnJhcicsXG4gICAgICB0eXBlVG9TZWFyY2g6ICdlc2NyaWJlIHBhcmEgYnVzY2FyJyxcbiAgICAgIGNhcmRpbmFsUG9pbnRzOiB7XG4gICAgICAgIG5vcnRoOiAnTicsXG4gICAgICAgIHNvdXRoOiAnUycsXG4gICAgICAgIGVhc3Q6ICdFJyxcbiAgICAgICAgd2VzdDogJ08nXG4gICAgICB9LFxuICAgICAgdXNlckVycm9yczoge1xuICAgICAgICByZXF1aXJlZDogJ0VsIGNhbXBvIGVzIG9ibGlnYXRvcmlvLicsXG4gICAgICAgIG1pbkxhdGl0dWRlOiAnTGEgbGF0aXR1ZCBtw61uaW1hIGVzICRtaW5MYXRpdHVkZS4nLFxuICAgICAgICBtYXhMYXRpdHVkZTogJ0xhIGxhdGl0dWQgbcOheGltYSBlcyAkbWF4TGF0aXR1ZGUuJyxcbiAgICAgICAgbWluTG9uZ2l0dWRlOiAnTGEgbG9uZ2l0dWQgbcOtbmltYSBlcyAkbWluTG9uZ2l0dWRlLicsXG4gICAgICAgIG1heExvbmdpdHVkZTogJ0xhIGxvbmdpdHVkIG3DoXhpbWEgZXMgJG1heExvbmdpdHVkZS4nXG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtaW5MYXRpdHVkZTogbnVtYmVyO1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWF4TGF0aXR1ZGU6IG51bWJlcjtcbiAgQElucHV0KClcbiAgcHVibGljIG1pbkxvbmdpdHVkZTogbnVtYmVyO1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWF4TG9uZ2l0dWRlOiBudW1iZXI7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdGVwOiBudW1iZXI7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB6b29tOiBudW1iZXI7XG5cbiAgZ2V0IGNsYXNzTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNoZWNrQ2xhc3NOYW1lKCk7XG4gIH1cblxuICBASW5wdXQoKSBsYW5nID0gbGFuZ3VhZ2VEZXRlY3RvcigpO1xuICBASW5wdXQoKSBwdWJsaWMgaW5saW5lRXJyb3JzID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBpbnB1dElkOiBzdHJpbmc7XG4gIEBJbnB1dCgnYXJpYS1sYWJlbCcpIHB1YmxpYyBhcmlhTGFiZWw6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIHJlYWRvbmx5OiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbiAgQElucHV0KClcbiAgc2V0IGRpc2FibGVkKHY6IHN0cmluZyB8IGJvb2xlYW4pIHtcbiAgICB2ID0gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYgIT09ICdmYWxzZScgPyB0cnVlIDogdjtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IHY7XG4gIH1cbiAgZ2V0IGRpc2FibGVkKCk6IHN0cmluZyB8IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCByZXF1aXJlZCh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSB2O1xuICB9XG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgdmFsdWUodjogR2VvUG9pbnQpIHtcbiAgICBpZiAodiA9PT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgIHJldHVybjsgLy8gcHJldmVudCBldmVudHMgd2hlbiB0aGVyZSBpcyBubyBjaGFuZ2VzXG4gICAgfVxuICAgIGNvbnN0IGluaXRpYWxBbmRFbXB0eSA9IGlzSW5pdGlhbEFuZEVtcHR5KHRoaXMuX3ZhbHVlLCB2KTtcbiAgICBpZiAoXG4gICAgICB2ICYmXG4gICAgICB2LmNvb3JkaW5hdGVzICYmXG4gICAgICB2LmNvb3JkaW5hdGVzLmxlbmd0aCA9PT0gMiAmJlxuICAgICAgZXhpc3RzKHYuY29vcmRpbmF0ZXNbMF0gJiYgZXhpc3RzKHYuY29vcmRpbmF0ZXNbMV0pKVxuICAgICkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB2O1xuICAgICAgdGhpcy5zZXRMYXRpdHVkZUluQ29udHJvbCh2LmNvb3JkaW5hdGVzWzFdKTtcbiAgICAgIHRoaXMuc2V0TG9uZ2l0dWRlSW5Db250cm9sKHYuY29vcmRpbmF0ZXNbMF0pO1xuICAgIH0gZWxzZSBpZiAoIXYpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMuc2V0TGF0aXR1ZGVJbkNvbnRyb2wobnVsbCk7XG4gICAgICB0aGlzLnNldExvbmdpdHVkZUluQ29udHJvbChudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdmFsdWUgPSB2O1xuICAgICAgLy8gd2UgZG9uJ3Qgc2V0IHZhbHVlIGluIGNvbnRyb2wgaWYgdGhlIHZhbHVlIGlzIG5vdCB2YWxpZFxuICAgICAgLy8gaWYgd2UgZG8sIHRoZSBjb250ZW50IG9mIHRoZSBjb250cm9sIGNoYW5nZXMgYW5kIGNhbiBlcmFzZSB3aGF0IHRoZSB1c2VyIGlzIHR5cGluZ1xuICAgIH1cbiAgICB0aGlzLm9uQ2hhbmdlKHYpO1xuICAgIGlmICghaW5pdGlhbEFuZEVtcHR5KSB7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodik7XG4gICAgfVxuICB9XG4gIGdldCB2YWx1ZSgpOiBHZW9Qb2ludCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxHZW9Qb2ludD4oKTtcbiAgQE91dHB1dCgpIGtleVByZXNzID0gbmV3IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50PigpO1xuXG4gIG9uQ2hhbmdlID0gKHZhbHVlOiBhbnkpOiB2b2lkID0+IHt9O1xuICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxuICAgIHB1YmxpYyBsb2NhdGlvblNlcnZpY2U6IEdlb2xvY2F0aW9uU2VydmljZVxuICApIHt9XG5cbiAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3IgSW50ZXJmYWNlIGltcGxlbWVudGF0aW9uXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBvbkNoYW5nZTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2hlZDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBvblRvdWNoZWQ7XG4gIH1cblxuICBtYXJrQXNUb3VjaGVkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy50b3VjaGVkKSB7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy50b3VjaGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICB9XG4gIC8vIEVuZCBvZiBDb250cm9sVmFsdWVBY2Nlc3NvciBJbnRlcmZhY2UgaW1wbGVtZW50YXRpb25cblxuICBwcml2YXRlIHNldExhdGl0dWRlSW5Db250cm9sKGxhdGl0dWRlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAvLyB0aGlzLmxhdGl0dWRlLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBsYXRpdHVkZTtcbiAgICB0aGlzLmxhdGl0dWRlVmFsdWUgPSBsYXRpdHVkZTtcbiAgfVxuICBwcml2YXRlIHNldExvbmdpdHVkZUluQ29udHJvbChsb25naXR1ZGU6IG51bWJlcik6IHZvaWQge1xuICAgIC8vIHRoaXMubG9uZ2l0dWRlLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBsb25naXR1ZGU7XG4gICAgdGhpcy5sb25naXR1ZGVWYWx1ZSA9IGxvbmdpdHVkZTtcbiAgfVxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLnNldExhdGl0dWRlSW5Db250cm9sKG51bGwpO1xuICAgIHRoaXMuc2V0TG9uZ2l0dWRlSW5Db250cm9sKG51bGwpO1xuICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICB9XG4gIGlzQ2xlYXJhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBpc1ZhbGlkTnVtYmVyKHRoaXMubGF0aXR1ZGVWYWx1ZSkgfHwgaXNWYWxpZE51bWJlcih0aGlzLmxvbmdpdHVkZVZhbHVlKVxuICAgICk7XG4gIH1cblxuICAvLyBWYWxpZGF0b3IgaW50ZXJmYWNlXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoKTogdm9pZCB7fVxuXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgbGV0IHJlc3VsdDogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKFxuICAgICAgdGhpcy5yZXF1aXJlZCAmJlxuICAgICAgIWhhc1ZhbHVlKHZhbHVlKSAmJlxuICAgICAgIWV4aXN0cyh0aGlzLmxhdGl0dWRlVmFsdWUpICYmXG4gICAgICAhZXhpc3RzKHRoaXMubG9uZ2l0dWRlVmFsdWUpXG4gICAgKSB7XG4gICAgICByZXN1bHQgPSByZXN1bHQgfHwge307XG4gICAgICByZXN1bHQucmVxdWlyZWQgPSB7IHZhbHVlLCByZWFzb246ICdSZXF1aXJlZCBmaWVsZC4nIH07XG4gICAgfVxuICAgIGlmICghZXhpc3RzKHRoaXMubGF0aXR1ZGVWYWx1ZSkgJiYgZXhpc3RzKHRoaXMubG9uZ2l0dWRlVmFsdWUpKSB7XG4gICAgICByZXN1bHQgPSByZXN1bHQgfHwge307XG4gICAgICByZXN1bHQuZXhpc3RzTGF0aXR1ZGUgPSB7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICByZWFzb246ICdMYXRpdHVkZSBub3Qgc3BlY2lmaWVkLidcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChleGlzdHModGhpcy5sYXRpdHVkZVZhbHVlKSAmJiAhZXhpc3RzKHRoaXMubG9uZ2l0dWRlVmFsdWUpKSB7XG4gICAgICByZXN1bHQgPSByZXN1bHQgfHwge307XG4gICAgICByZXN1bHQuZXhpc3RzTG9uZ2l0dWRlID0ge1xuICAgICAgICB2YWx1ZSxcbiAgICAgICAgcmVhc29uOiAnTG9uZ2l0dWRlIG5vdCBzcGVjaWZpZWQuJ1xuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGV4aXN0cyh0aGlzLm1pbkxhdGl0dWRlKSAmJiB0aGlzLmxhdGl0dWRlVmFsdWUgPCB0aGlzLm1pbkxhdGl0dWRlKSB7XG4gICAgICByZXN1bHQgPSByZXN1bHQgfHwge307XG4gICAgICByZXN1bHQubWluTGF0aXR1ZGUgPSB7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBtaW46IHRoaXMubWluTGF0aXR1ZGUsXG4gICAgICAgIHJlYXNvbjogYExhdGl0dWRlIGlzIGxvd2VyIHRoYW4gbWluaW11bSB2YWx1ZTogJHt0aGlzLm1pbkxhdGl0dWRlfS5gXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoZXhpc3RzKHRoaXMubWF4TGF0aXR1ZGUpICYmIHRoaXMubGF0aXR1ZGVWYWx1ZSA+IHRoaXMubWF4TGF0aXR1ZGUpIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB7fTtcbiAgICAgIHJlc3VsdC5tYXhMYXRpdHVkZSA9IHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIG1heDogdGhpcy5tYXhMYXRpdHVkZSxcbiAgICAgICAgcmVhc29uOiBgTGF0aXR1ZGUgaXMgaGlnaGVyIHRoYW4gbWF4aW11bSB2YWx1ZTogJHt0aGlzLm1heExhdGl0dWRlfS5gXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoZXhpc3RzKHRoaXMubWluTG9uZ2l0dWRlKSAmJiB0aGlzLmxvbmdpdHVkZVZhbHVlIDwgdGhpcy5taW5Mb25naXR1ZGUpIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB7fTtcbiAgICAgIHJlc3VsdC5taW5Mb25naXR1ZGUgPSB7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBtaW46IHRoaXMubWluTG9uZ2l0dWRlLFxuICAgICAgICByZWFzb246IGBMb25naXR1ZGUgaXMgbG93ZXIgdGhhbiBtaW5pbXVtIHZhbHVlOiAke3RoaXMubWluTG9uZ2l0dWRlfS5gXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoZXhpc3RzKHRoaXMubWF4TG9uZ2l0dWRlKSAmJiB0aGlzLmxvbmdpdHVkZVZhbHVlID4gdGhpcy5tYXhMb25naXR1ZGUpIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB7fTtcbiAgICAgIHJlc3VsdC5tYXhMb25naXR1ZGUgPSB7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBtYXg6IHRoaXMubWF4TG9uZ2l0dWRlLFxuICAgICAgICByZWFzb246IGBMb25naXR1ZGUgaXMgaGlnaGVyIHRoYW4gbWF4aW11bSB2YWx1ZTogJHt0aGlzLm1heExvbmdpdHVkZX0uYFxuICAgICAgfTtcbiAgICB9XG4gICAgdGhpcy5sYXN0RXJyb3JzID0gcmVzdWx0O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgLy8gRW5kIG9mIFZhbGlkYXRvciBpbnRlcmZhY2VcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0SWQgPSB0aGlzLmlucHV0SWRcbiAgICAgID8gdGhpcy5pbnB1dElkXG4gICAgICA6IGBnZW9sb2NhdGlvbiQke0dlb2xvY2F0aW9uQ29tcG9uZW50LmlkQ291bnRlcisrfWA7XG4gICAgdGhpcy5zZXRQYXR0ZXJucygpO1xuICB9XG5cbiAgcm91bmRUb1N0ZXBBbmRVcGRhdGVMYXRpdHVkZUFuZExvbmdpdHVkZShcbiAgICBuZXdMYXRpdHVkZUFuZExvbmdpdHVkZTogbnVtYmVyW11cbiAgKTogdm9pZCB7XG4gICAgY29uc3QgbmV3TGF0aXR1ZGUgPSByb3VuZFRvTXVsdGlwbGVPZihcbiAgICAgIG5ld0xhdGl0dWRlQW5kTG9uZ2l0dWRlWzFdLFxuICAgICAgdGhpcy5zdGVwXG4gICAgKTtcbiAgICBjb25zdCBuZXdMb25naXR1ZGUgPSByb3VuZFRvTXVsdGlwbGVPZihcbiAgICAgIG5ld0xhdGl0dWRlQW5kTG9uZ2l0dWRlWzBdLFxuICAgICAgdGhpcy5zdGVwXG4gICAgKTtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLnJlYWRvbmx5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghZXhpc3RzKG5ld0xhdGl0dWRlQW5kTG9uZ2l0dWRlKSkge1xuICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMudmFsdWUgPSB7XG4gICAgICB0eXBlOiAnUG9pbnQnLFxuICAgICAgY29vcmRpbmF0ZXM6IFtuZXdMb25naXR1ZGUsIG5ld0xhdGl0dWRlXVxuICAgIH07XG4gIH1cblxuICBvbkxvc3RGb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuICBvbkV2ZW50TGF0aXR1ZGUobmV3TGF0aXR1ZGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbmV3TGF0aXR1ZGVWYWx1ZSA9IGlzVmFsaWROdW1iZXIobmV3TGF0aXR1ZGUpID8gK25ld0xhdGl0dWRlIDogbnVsbDtcbiAgICBpZiAoXG4gICAgICAhKGV4aXN0cyh0aGlzLnZhbHVlKSAmJiBleGlzdHModGhpcy52YWx1ZS5jb29yZGluYXRlc1swXSkpICYmXG4gICAgICAhZXhpc3RzKG5ld0xhdGl0dWRlVmFsdWUpXG4gICAgKSB7XG4gICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IHtcbiAgICAgICAgdHlwZTogJ1BvaW50JyxcbiAgICAgICAgY29vcmRpbmF0ZXM6IFtcbiAgICAgICAgICB0aGlzLnZhbHVlID8gdGhpcy52YWx1ZS5jb29yZGluYXRlc1swXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBuZXdMYXRpdHVkZVZhbHVlXG4gICAgICAgIF1cbiAgICAgIH07XG4gICAgfVxuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICB9XG4gIG9uRXZlbnRMb25naXR1ZGUobmV3TG9uZ2l0dWRlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLnJlYWRvbmx5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG5ld0xvbmdpdHVkZVZhbHVlID0gaXNWYWxpZE51bWJlcihuZXdMb25naXR1ZGUpXG4gICAgICA/ICtuZXdMb25naXR1ZGVcbiAgICAgIDogbnVsbDtcbiAgICBpZiAoXG4gICAgICAhZXhpc3RzKG5ld0xvbmdpdHVkZVZhbHVlKSAmJlxuICAgICAgIShleGlzdHModGhpcy52YWx1ZSkgJiYgZXhpc3RzKHRoaXMuX3ZhbHVlLmNvb3JkaW5hdGVzWzFdKSlcbiAgICApIHtcbiAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0ge1xuICAgICAgICB0eXBlOiAnUG9pbnQnLFxuICAgICAgICBjb29yZGluYXRlczogW1xuICAgICAgICAgIG5ld0xvbmdpdHVkZVZhbHVlLFxuICAgICAgICAgIHRoaXMudmFsdWUgPyB0aGlzLnZhbHVlLmNvb3JkaW5hdGVzWzFdIDogdW5kZWZpbmVkXG4gICAgICAgIF1cbiAgICAgIH07XG4gICAgfVxuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICB9XG4gIG9uS2V5UHJlc3MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmtleVByZXNzLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgY2hlY2tDbGFzc05hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZFxuICAgICAgPyB0aGlzLnJlYWRvbmx5XG4gICAgICAgID8gJ2Rpc2FibGVkIHJlYWRvbmx5J1xuICAgICAgICA6ICdkaXNhYmxlZCdcbiAgICAgIDogdGhpcy5yZWFkb25seVxuICAgICAgPyAncmVhZG9ubHknXG4gICAgICA6ICcnO1xuICB9XG5cbiAgb3Blbk1vZGFsTWFwKG1vZGFsOiBUZW1wbGF0ZVJlZjxhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbihtb2RhbCkucmVzdWx0LnRoZW4oXG4gICAgICAocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQgIT09ICdjYW5jZWwnKSB7XG4gICAgICAgICAgdGhpcy5yb3VuZFRvU3RlcEFuZFVwZGF0ZUxhdGl0dWRlQW5kTG9uZ2l0dWRlKHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoXykgPT4ge31cbiAgICApO1xuICB9XG5cbiAgb25TZWFyY2hMb2NhdGlvbkNoYW5nZWQobmV3VmFsdWU6IEdlb1BvaW50LCBtYXA6IGFueSk6IHZvaWQge1xuICAgIG1hcC5tYXJrZXJQb2ludCA9IG5ld1ZhbHVlO1xuICAgIG1hcC5jZW50ZXIgPSBtYXAubWFya2VyUG9pbnQ7XG4gIH1cblxuICBnZXQgbWFwVGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQgfHwgISF0aGlzLnJlYWRvbmx5XG4gICAgICA/IHRoaXMuaTE4blt0aGlzLmxhbmddLmxvY2F0aW9uXG4gICAgICA6IHRoaXMuaTE4blt0aGlzLmxhbmddLnNlbGVjdExvY2F0aW9uO1xuICB9XG5cbiAgZ2V0IHNlbGYoKTogR2VvbG9jYXRpb25Db21wb25lbnQge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0TGFiZWxzKFxuICAgIGluc3RhbmNlOiBHZW9sb2NhdGlvbkNvbXBvbmVudCxcbiAgICBrZXlzOiBHZW9Qb2ludFtdXG4gICk6IE9ic2VydmFibGU8RGF0YVNvdXJjZTxHZW9Qb2ludCwgc3RyaW5nPj4ge1xuICAgIHJldHVybiBpbnN0YW5jZS5sb2NhdGlvblNlcnZpY2UuZ2V0TGFiZWxzKGluc3RhbmNlLmxvY2F0aW9uU2VydmljZSwga2V5cyk7XG4gIH1cblxuICBnZXREYXRhKFxuICAgIGluc3RhbmNlOiBHZW9sb2NhdGlvbkNvbXBvbmVudCxcbiAgICBzZWFyY2g6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPERhdGFTb3VyY2U8R2VvUG9pbnQsIHN0cmluZz4+IHtcbiAgICByZXR1cm4gaW5zdGFuY2UubG9jYXRpb25TZXJ2aWNlLmdldERhdGEoaW5zdGFuY2UubG9jYXRpb25TZXJ2aWNlLCBzZWFyY2gpO1xuICB9XG5cbiAgc2V0UGF0dGVybnMoKTogdm9pZCB7XG4gICAgdGhpcy5zdGVwID0gdGhpcy5zdGVwIHx8IDAuMDAwMDE7IC8vIDAuMDAwMDEgZGVncmVlcyA9IDEuMTEgbWV0ZXJzXG4gICAgdGhpcy56b29tID0gdGhpcy56b29tIHx8IDE4OyAvLyAoMzYwLzJeMTgpIGRlZ3JlZXMgfiAwLjAwMTM3IGRlZ3JlZXMgfiAxNTMgbWV0ZXJzXG4gICAgdGhpcy5taW5MYXRpdHVkZSA9IHRoaXMubWluTGF0aXR1ZGUgfHwgLTkwO1xuICAgIHRoaXMubWF4TGF0aXR1ZGUgPSB0aGlzLm1heExhdGl0dWRlIHx8ICs5MDtcbiAgICB0aGlzLm1pbkxvbmdpdHVkZSA9IHRoaXMubWluTG9uZ2l0dWRlIHx8IC0xODA7XG4gICAgdGhpcy5tYXhMb25naXR1ZGUgPSB0aGlzLm1heExvbmdpdHVkZSB8fCArMTgwO1xuICB9XG59XG4iLCI8aW5wdXRcbiAgI2xhdGl0dWRlXG4gIGNsYXNzPVwicm91bmRlZC1sZWZ0IHByZWZpeFwiXG4gIFtuZ0NsYXNzXT1cImNsYXNzTmFtZVwiXG4gIHR5cGU9XCJudW1iZXJcIlxuICBbaWRdPVwiaW5wdXRJZCArICckbGF0aXR1ZGUnXCJcbiAgWyhuZ01vZGVsKV09XCJsYXRpdHVkZVZhbHVlXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA9PT0gdHJ1ZSA/ICd0cnVlJyA6IHVuZGVmaW5lZFwiXG4gIFthdHRyLnJlYWRvbmx5XT1cInJlYWRvbmx5ID09PSB0cnVlID8gJ3RydWUnIDogdW5kZWZpbmVkXCJcbiAgW2F0dHIubWluXT1cIlxuICAgIG1pbkxhdGl0dWRlICE9PSB1bmRlZmluZWQgJiYgbWluTGF0aXR1ZGUgIT09IG51bGxcbiAgICAgID8gbWluTGF0aXR1ZGUudG9TdHJpbmcoKVxuICAgICAgOiB1bmRlZmluZWRcbiAgXCJcbiAgW2F0dHIubWF4XT1cIlxuICAgIG1heExhdGl0dWRlICE9PSB1bmRlZmluZWQgJiYgbWF4TGF0aXR1ZGUgIT09IG51bGxcbiAgICAgID8gbWF4TGF0aXR1ZGUudG9TdHJpbmcoKVxuICAgICAgOiB1bmRlZmluZWRcbiAgXCJcbiAgW2F0dHIuc3RlcF09XCJcbiAgICBzdGVwICE9PSB1bmRlZmluZWQgJiYgc3RlcCAhPT0gbnVsbCA/IHN0ZXAudG9TdHJpbmcoKSA6IHVuZGVmaW5lZFxuICBcIlxuICBbcGxhY2Vob2xkZXJdPVwiaTE4bltsYW5nXS5sYXRcIlxuICAoa2V5dXApPVwib25FdmVudExhdGl0dWRlKGxhdGl0dWRlLnZhbHVlKVwiXG4gIChjaGFuZ2UpPVwib25FdmVudExhdGl0dWRlKGxhdGl0dWRlLnZhbHVlKVwiXG4gIChrZXlwcmVzcyk9XCJvbktleVByZXNzKCRldmVudClcIlxuICAoYmx1cik9XCJvbkxvc3RGb2N1cygpXCJcbi8+XG48ZGl2XG4gIGNsYXNzPVwiaW5maXggc3ltYm9sIG1vbm9zcGFjZSBjbGlja2FibGVcIlxuICBbbmdDbGFzc109XCJjbGFzc05hbWVcIlxuICAoY2xpY2spPVwib3Blbk1vZGFsTWFwKG1vZGFsTWFwKVwiPlxuICA8c3BhbiAqbmdJZj1cImlzVmFsaWROdW1iZXIobGF0aXR1ZGVWYWx1ZSkgJiYgbGF0aXR1ZGVWYWx1ZSA+PSAwXCI+e3tcbiAgICBpMThuW2xhbmddLmNhcmRpbmFsUG9pbnRzLm5vcnRoXG4gIH19PC9zcGFuPlxuICA8c3BhbiAqbmdJZj1cImlzVmFsaWROdW1iZXIobGF0aXR1ZGVWYWx1ZSkgJiYgbGF0aXR1ZGVWYWx1ZSA8IDBcIj57e1xuICAgIGkxOG5bbGFuZ10uY2FyZGluYWxQb2ludHMuc291dGhcbiAgfX08L3NwYW4+XG4gIDxzcGFuICpuZ0lmPVwiIWlzVmFsaWROdW1iZXIobGF0aXR1ZGVWYWx1ZSlcIj4tPC9zcGFuPlxuPC9kaXY+XG48aW5wdXRcbiAgI2xvbmdpdHVkZVxuICBjbGFzcz1cInByZWZpeFwiXG4gIFtuZ0NsYXNzXT1cImNsYXNzTmFtZVwiXG4gIHR5cGU9XCJudW1iZXJcIlxuICBbaWRdPVwiaW5wdXRJZCArICckbG9uZ2l0dWRlJ1wiXG4gIFsobmdNb2RlbCldPVwibG9uZ2l0dWRlVmFsdWVcIlxuICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID09PSB0cnVlID8gJ3RydWUnIDogdW5kZWZpbmVkXCJcbiAgW2F0dHIucmVhZG9ubHldPVwicmVhZG9ubHkgPT09IHRydWUgPyAndHJ1ZScgOiB1bmRlZmluZWRcIlxuICBbYXR0ci5taW5dPVwiXG4gICAgbWluTG9uZ2l0dWRlICE9PSB1bmRlZmluZWQgJiYgbWluTG9uZ2l0dWRlICE9PSBudWxsXG4gICAgICA/IG1pbkxvbmdpdHVkZS50b1N0cmluZygpXG4gICAgICA6IHVuZGVmaW5lZFxuICBcIlxuICBbYXR0ci5tYXhdPVwiXG4gICAgbWF4TG9uZ2l0dWRlICE9PSB1bmRlZmluZWQgJiYgbWF4TG9uZ2l0dWRlICE9PSBudWxsXG4gICAgICA/IG1heExvbmdpdHVkZS50b1N0cmluZygpXG4gICAgICA6IHVuZGVmaW5lZFxuICBcIlxuICBbYXR0ci5zdGVwXT1cIlxuICAgIHN0ZXAgIT09IHVuZGVmaW5lZCAmJiBzdGVwICE9PSBudWxsID8gc3RlcC50b1N0cmluZygpIDogdW5kZWZpbmVkXG4gIFwiXG4gIFtwbGFjZWhvbGRlcl09XCJpMThuW2xhbmddLmxvblwiXG4gIChrZXl1cCk9XCJvbkV2ZW50TG9uZ2l0dWRlKGxvbmdpdHVkZS52YWx1ZSlcIlxuICAoY2hhbmdlKT1cIm9uRXZlbnRMb25naXR1ZGUobG9uZ2l0dWRlLnZhbHVlKVwiXG4gIChrZXlwcmVzcyk9XCJvbktleVByZXNzKCRldmVudClcIlxuICAoYmx1cik9XCJvbkxvc3RGb2N1cygpXCJcbi8+XG48ZGl2XG4gIGNsYXNzPVwiaW5maXggc3ltYm9sIG1vbm9zcGFjZSBjbGlja2FibGVcIlxuICBbbmdDbGFzc109XCJjbGFzc05hbWVcIlxuICAoY2xpY2spPVwib3Blbk1vZGFsTWFwKG1vZGFsTWFwKVwiXG4+XG4gIDxzcGFuICpuZ0lmPVwiaXNWYWxpZE51bWJlcihsb25naXR1ZGVWYWx1ZSkgJiYgbG9uZ2l0dWRlVmFsdWUgPj0gMFwiPnt7XG4gICAgaTE4bltsYW5nXS5jYXJkaW5hbFBvaW50cy5lYXN0XG4gIH19PC9zcGFuPlxuICA8c3BhbiAqbmdJZj1cImlzVmFsaWROdW1iZXIobG9uZ2l0dWRlVmFsdWUpICYmIGxvbmdpdHVkZVZhbHVlIDwgMFwiPnt7XG4gICAgaTE4bltsYW5nXS5jYXJkaW5hbFBvaW50cy53ZXN0XG4gIH19PC9zcGFuPlxuICA8c3BhbiAqbmdJZj1cIiFpc1ZhbGlkTnVtYmVyKGxvbmdpdHVkZVZhbHVlKVwiPi08L3NwYW4+XG48L2Rpdj5cbjxkaXZcbiAgW2NsYXNzXT1cIlxuICAgIGRpc2FibGVkIHx8IHJlYWRvbmx5IHx8ICFpc0NsZWFyYWJsZSgpXG4gICAgICA/ICdjbGlja2FibGUgcm91bmRlZC1yaWdodCBwb3N0Zml4IHN5bWJvbCdcbiAgICAgIDogJ2NsaWNrYWJsZSBwb3N0Zml4IHN5bWJvbCdcbiAgXCJcbiAgW25nQ2xhc3NdPVwiY2xhc3NOYW1lXCJcbiAgKGNsaWNrKT1cIm9wZW5Nb2RhbE1hcChtb2RhbE1hcClcIlxuPlxuICA8c3BhbiBjbGFzcz1cImljb24tZ2xvYmVcIj48L3NwYW4+XG48L2Rpdj5cbjxidXR0b25cbiAgI2NsZWFyQnV0dG9uXG4gICpuZ0lmPVwiIWRpc2FibGVkICYmICFyZWFkb25seSAmJiBpc0NsZWFyYWJsZSgpXCJcbiAgY2xhc3M9XCJyb3VuZGVkLXJpZ2h0IHBvc3RmaXggYm9yZGVyZWQgaWNvbiBpY29uLWNsZWFyXCJcbiAgW2lkXT1cImlucHV0SWQgKyAnJGNsZWFyJ1wiXG4gIHR5cGU9XCJidXR0b25cIlxuICAoY2xpY2spPVwiY2xlYXIoKVwiXG4gIGFyaWEtbGFiZWw9XCJjbGVhclwiXG4+PC9idXR0b24+XG5cbjxkaXYgKm5nSWY9XCJpbmxpbmVFcnJvcnMgJiYgbGFzdEVycm9ycyAmJiAoZGlydHkgfHwgdG91Y2hlZClcIiBjbGFzcz1cImFsZXJ0XCI+XG4gIDxkaXYgKm5nSWY9XCJsYXN0RXJyb3JzLnJlcXVpcmVkXCI+XG4gICAge3sgaTE4bltsYW5nXS51c2VyRXJyb3JzLnJlcXVpcmVkIH19XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwibGFzdEVycm9ycy5taW5MYXRpdHVkZVwiPlxuICAgIHt7XG4gICAgICBpMThuW2xhbmddLnVzZXJFcnJvcnMubWluTGF0aXR1ZGUucmVwbGFjZShcbiAgICAgICAgJyRtaW5MYXRpdHVkZScsXG4gICAgICAgIGxhc3RFcnJvcnMubWluTGF0aXR1ZGUubWluXG4gICAgICApXG4gICAgfX1cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJsYXN0RXJyb3JzLm1heExhdGl0dWRlXCI+XG4gICAge3tcbiAgICAgIGkxOG5bbGFuZ10udXNlckVycm9ycy5tYXhMYXRpdHVkZS5yZXBsYWNlKFxuICAgICAgICAnJG1heExhdGl0dWRlJyxcbiAgICAgICAgbGFzdEVycm9ycy5tYXhMYXRpdHVkZS5tYXhcbiAgICAgIClcbiAgICB9fVxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImxhc3RFcnJvcnMubWluTG9uZ2l0dWRlXCI+XG4gICAge3tcbiAgICAgIGkxOG5bbGFuZ10udXNlckVycm9ycy5taW5Mb25naXR1ZGUucmVwbGFjZShcbiAgICAgICAgJyRtaW5Mb25naXR1ZGUnLFxuICAgICAgICBsYXN0RXJyb3JzLm1pbkxvbmdpdHVkZS5taW5cbiAgICAgIClcbiAgICB9fVxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImxhc3RFcnJvcnMubWF4TG9uZ2l0dWRlXCI+XG4gICAge3tcbiAgICAgIGkxOG5bbGFuZ10udXNlckVycm9ycy5tYXhMb25naXR1ZGUucmVwbGFjZShcbiAgICAgICAgJyRtYXhMb25naXR1ZGUnLFxuICAgICAgICBsYXN0RXJyb3JzLm1heExvbmdpdHVkZS5tYXhcbiAgICAgIClcbiAgICB9fVxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI21vZGFsTWFwIGxldC1tb2RhbD5cbiAgPGRpdiBjbGFzcz1cImx1eC1tb2RhbC1oZWFkZXJcIj5cbiAgICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZSBkZWZhdWx0LWZvbnRcIiBpZD1cIm1vZGFsLWJhc2ljLXRpdGxlXCI+e3sgbWFwVGl0bGUgfX08L2g0PlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJjbG9zZVwiXG4gICAgICBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxuICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoJ0Nyb3NzIGNsaWNrJylcIlxuICAgID5cbiAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPsOXPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImx1eC1tb2RhbC1ib2R5IGNvbnRlbnRcIj5cbiAgICA8bHV4LWF1dG9jb21wbGV0ZVxuICAgICAgI3NlYXJjaEJhclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpMThuW2xhbmddLnR5cGVUb1NlYXJjaFwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiaTE4bltsYW5nXS50eXBlVG9TZWFyY2hcIlxuICAgICAgKm5nSWY9XCIhZGlzYWJsZWQgJiYgIXJlYWRvbmx5XCJcbiAgICAgIFtpbnN0YW5jZV09XCJzZWxmXCJcbiAgICAgIFtyZXNvbHZlTGFiZWxzRnVuY3Rpb25dPVwiZ2V0TGFiZWxzXCJcbiAgICAgIFtwb3B1bGF0ZUZ1bmN0aW9uXT1cImdldERhdGFcIlxuICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uU2VhcmNoTG9jYXRpb25DaGFuZ2VkKHNlYXJjaEJhci52YWx1ZSwgbWFwKVwiXG4gICAgPjwvbHV4LWF1dG9jb21wbGV0ZT5cbiAgICA8ZGl2IGNsYXNzPVwibWFwLWNvbnRhaW5lclwiPlxuICAgICAgPGx1eC1tYXBcbiAgICAgICAgI21hcFxuICAgICAgICBbY2VudGVyXT1cInZhbHVlXCJcbiAgICAgICAgW21hcmtlclBvaW50XT1cInZhbHVlXCJcbiAgICAgICAgW3pvb21dPVwiem9vbVwiXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seSA9PT0gdHJ1ZSB8fCBkaXNhYmxlZCA9PT0gdHJ1ZSA/IHRydWUgOiBmYWxzZVwiXG4gICAgICA+PC9sdXgtbWFwPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImx1eC1tb2RhbC1mb290ZXJcIj5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdJZj1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJidG4gYnRuLWNhbmNlbFwiXG4gICAgICAoY2xpY2spPVwibW9kYWwuY2xvc2UoJ2NhbmNlbCcpXCJcbiAgICA+XG4gICAgICB7eyBpMThuW2xhbmddLmNsb3NlQWN0aW9uIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCIhZGlzYWJsZWQgJiYgIXJlYWRvbmx5XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJidG4gYnRuLWNhbmNlbFwiXG4gICAgICAoY2xpY2spPVwibW9kYWwuY2xvc2UoJ2NhbmNlbCcpXCJcbiAgICA+XG4gICAgICB7eyBpMThuW2xhbmddLmNhbmNlbEFjdGlvbiB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiIWRpc2FibGVkICYmICFyZWFkb25seVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zZWxlY3RcIlxuICAgICAgKGNsaWNrKT1cIm1vZGFsLmNsb3NlKG1hcC5tYXJrZXJQb2ludC5jb29yZGluYXRlcylcIlxuICAgID5cbiAgICAgIHt7IGkxOG5bbGFuZ10uc2VsZWN0QWN0aW9uIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -91,13 +91,12 @@ export class GeolocationService {
|
|
|
91
91
|
: null;
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
|
-
GeolocationService.ɵ
|
|
95
|
-
GeolocationService
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
];
|
|
94
|
+
GeolocationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: GeolocationService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
95
|
+
GeolocationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: GeolocationService, providedIn: 'root' });
|
|
96
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: GeolocationService, decorators: [{
|
|
97
|
+
type: Injectable,
|
|
98
|
+
args: [{ providedIn: 'root' }]
|
|
99
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
|
101
100
|
const samePosition = (searchResult, keys) => {
|
|
102
101
|
let found = false;
|
|
103
102
|
keys.forEach((item) => {
|
|
@@ -108,7 +107,6 @@ const samePosition = (searchResult, keys) => {
|
|
|
108
107
|
});
|
|
109
108
|
return found;
|
|
110
109
|
};
|
|
111
|
-
const ɵ0 = samePosition;
|
|
112
110
|
const distinct = (data) => {
|
|
113
111
|
const unique = {};
|
|
114
112
|
return data.filter((r) => {
|
|
@@ -119,6 +117,4 @@ const distinct = (data) => {
|
|
|
119
117
|
return true;
|
|
120
118
|
});
|
|
121
119
|
};
|
|
122
|
-
const ɵ1 = distinct;
|
|
123
|
-
export { ɵ0, ɵ1 };
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbG9jYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2x1eC9zcmMvbGliL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUNMLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsR0FBRyxFQUNILFNBQVMsRUFDVixNQUFNLGdCQUFnQixDQUFDOzs7QUFZeEIsTUFBTSxPQUFPLGtCQUFrQjtJQVE3QixZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBUDVCLHFCQUFnQixHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUs7UUFDN0IsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLDJCQUFzQixHQUFHLElBQUksR0FBRyxFQUEwQixDQUFDO1FBQzNELG1CQUFjLEdBQWEsRUFBRSxDQUFDO1FBS3BDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUU1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYzthQUMvQixZQUFZLEVBQUU7YUFDZCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBRWhDLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FDOUIsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUVuQyxTQUFTLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUN6QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzdDLElBQUksSUFBSSxL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LEdBQUcsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUN4QyxZQUFZLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ3hDO1lBQ0EsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNkO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQzs7QUFFRixNQUFNLFFBQVEsR0FBRyxDQUFDLElBQW9CLEVBQWtCLEVBQUU7SUFDeEQsTUFBTSxNQUFNLEdBQThCLEVBQUUsQ0FBQztJQUM3QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUN2QixJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDMUIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJy4uL2RhdGFzb3VyY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGRlYm91bmNlVGltZSxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIG1hcCxcbiAgc3dpdGNoTWFwXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEdlb1BvaW50IH0gZnJvbSAnLi4vbWFwL2dlb3BvaW50JztcblxuaW50ZXJmYWNlIFNlYXJjaFJlc3VsdCB7XG4gIHBsYWNlX2lkOiBudW1iZXI7XG4gIGxhdDogbnVtYmVyO1xuICBsb246IG51bWJlcjtcbiAgZGlzcGxheV9uYW1lOiBzdHJpbmc7XG4gIGljb246IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBHZW9sb2NhdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIGRlYm91bmNlUGVyaW9kTXMgPSAzMDA7IC8vIG1zXG4gIHByaXZhdGUgY2FjaGVTaXplID0gMjA7XG4gIHByaXZhdGUgbGFzdFF1ZXJpZXNXaXRoUmVzdWx0cyA9IG5ldyBNYXA8c3RyaW5nLCBTZWFyY2hSZXN1bHRbXT4oKTtcbiAgcHJpdmF0ZSBsYXN0UXVlcmllc0xydTogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBjdXJyZW50U2VhcmNoJDogU3ViamVjdDxzdHJpbmc+O1xuICBwcml2YXRlIGN1cnJlbnRRdWVyeSQ6IE9ic2VydmFibGU8U2VhcmNoUmVzdWx0W10+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge1xuICAgIHRoaXMuY3VycmVudFNlYXJjaCQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgICBjb25zdCB0eXBlZCQgPSB0aGlzLmN1cnJlbnRTZWFyY2gkXG4gICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuXG4gICAgdGhpcy5jdXJyZW50UXVlcnkkID0gdHlwZWQkLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVBlcmlvZE1zKSxcblxuICAgICAgc3dpdGNoTWFwKChjdXJyZW50UXVlcnkpID0+IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZ2V0RnJvbUNhY2hlKGN1cnJlbnRRdWVyeSk7XG4gICAgICAgIGlmIChkYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gb2YoZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gTm9taW5hdGltIHNlYXJjaCBkb2N1bWVudGF0aW9uOlxuICAgICAgICAvLyBodHRwczovL25vbWluYXRpbS5vcmcvcmVsZWFzZS1kb2NzL2RldmVsb3AvYXBpL1NlYXJjaC9cbiAgICAgICAgY29uc3QgdXJsID1cbiAgICAgICAgICAnaHR0cHM6Ly9ub21pbmF0aW0ub3BlbnN0cmVldG1hcC5vcmcvc2VhcmNoP2Zvcm1hdD1qc29uJmxpbWl0PTIwJnE9JyArXG4gICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KGN1cnJlbnRRdWVyeSk7XG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmFkZFRvQ2FjaGUoY3VycmVudFF1ZXJ5LCBbXSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsLCB7IGhlYWRlcnMgfSkucGlwZShcbiAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWFyY2hSZXN1bHRzID0gcmVzcG9uc2UgYXMgdW5rbm93biBhcyBTZWFyY2hSZXN1bHRbXTtcbiAgICAgICAgICAgIGNvbnN0IHVuaXF1ZVJlc3VsdHMgPSBkaXN0aW5jdChzZWFyY2hSZXN1bHRzKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZFRvQ2FjaGUoY3VycmVudFF1ZXJ5LCB1bmlxdWVSZXN1bHRzKTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc2VhcmNoR2VvbG9jYXRpb24ocXVlcnk6IHN0cmluZyk6IE9ic2VydmFibGU8U2VhcmNoUmVzdWx0W10+IHtcbiAgICB0aGlzLmN1cnJlbnRTZWFyY2gkLm5leHQocXVlcnkpO1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRRdWVyeSQ7XG4gIH1cblxuICBnZXRMYWJlbHMoXG4gICAgaW5zdGFuY2U6IEdlb2xvY2F0aW9uU2VydmljZSxcbiAgICBrZXlzOiBHZW9Qb2ludFtdXG4gICk6IE9ic2VydmFibGU8RGF0YVNvdXJjZTxHZW9Qb2ludCwgc3RyaW5nPj4ge1xuICAgIGNvbnN0IHNlYXJjaFJlc3VsdHMgPSBpbnN0YW5jZS5sYXN0UXVlcmllc1dpdGhSZXN1bHRzXG4gICAgICAuZ2V0KGluc3RhbmNlLmdldExhdGVzdFF1ZXJ5KCkpXG4gICAgICAuZmlsdGVyKChzZWFyY2hSZXN1bHQpID0+IHNhbWVQb3NpdGlvbihzZWFyY2hSZXN1bHQsIGtleXMpKTtcbiAgICByZXR1cm4gb2YoXG4gICAgICBzZWFyY2hSZXN1bHRzLm1hcCgoc2VhcmNoUmVzdWx0KSA9PiB7XG4gICAgICAgIGNvbnN0IGtleTogR2VvUG9pbnQgPSB7XG4gICAgICAgICAgdHlwZTogJ1BvaW50JyxcbiAgICAgICAgICBjb29yZGluYXRlczogW3NlYXJjaFJlc3VsdC5sb24sIHNlYXJjaFJlc3VsdC5sYXRdXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAga2V5LFxuICAgICAgICAgIGxhYmVsOiBzZWFyY2hSZXN1bHQuZGlzcGxheV9uYW1lXG4gICAgICAgIH07XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBnZXREYXRhKFxuICAgIGluc3RhbmNlOiBHZW9sb2NhdGlvblNlcnZpY2UsXG4gICAgc2VhcmNoOiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxEYXRhU291cmNlPEdlb1BvaW50LCBzdHJpbmc+PiB7XG4gICAgcmV0dXJuIGluc3RhbmNlLnNlYXJjaEdlb2xvY2F0aW9uKHNlYXJjaCkucGlwZShcbiAgICAgIG1hcCgoc2VhcmNoUmVzdWx0cykgPT5cbiAgICAgICAgc2VhcmNoUmVzdWx0cy5tYXAoKHNlYXJjaFJlc3VsdCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGtleTogR2VvUG9pbnQgPSB7XG4gICAgICAgICAgICB0eXBlOiAnUG9pbnQnLFxuICAgICAgICAgICAgY29vcmRpbmF0ZXM6IFtzZWFyY2hSZXN1bHQubG9uLCBzZWFyY2hSZXN1bHQubGF0XVxuICAgICAgICAgIH07XG4gICAgICAgICAgY29uc3QgbGFiZWwgPSBzZWFyY2hSZXN1bHQuZGlzcGxheV9uYW1lO1xuICAgICAgICAgIHJldHVybiB7IGtleSwgbGFiZWwgfTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLy8gQ2FjaGUgaW1wbGVtZW1lbnRhdGlvbiAtLS1cbiAgcHJpdmF0ZSBnZXRGcm9tQ2FjaGUocXVlcnk6IHN0cmluZyk6IFNlYXJjaFJlc3VsdFtdIHtcbiAgICBpZiAodGhpcy5sYXN0UXVlcmllc1dpdGhSZXN1bHRzLmhhcyhxdWVyeSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmxhc3RRdWVyaWVzV2l0aFJlc3VsdHMuZ2V0KHF1ZXJ5KTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBwcml2YXRlIGFkZFRvQ2FjaGUocXVlcnk6IHN0cmluZywgZGF0YTogU2VhcmNoUmVzdWx0W10pOiBTZWFyY2hSZXN1bHRbXSB7XG4gICAgaWYgKHRoaXMubGFzdFF1ZXJpZXNXaXRoUmVzdWx0cy5rZXlzLmxlbmd0aCA+PSB0aGlzLmNhY2hlU2l6ZSkge1xuICAgICAgY29uc3QgZGVsZXRlZFF1ZXJ5ID0gdGhpcy5sYXN0UXVlcmllc0xydVswXTtcbiAgICAgIHRoaXMucmV2b21lRnJvbUNhY2hlKGRlbGV0ZWRRdWVyeSk7XG4gICAgfVxuICAgIHRoaXMubGFzdFF1ZXJpZXNXaXRoUmVzdWx0cy5zZXQocXVlcnksIGRhdGEpO1xuICAgIHRoaXMubGFzdFF1ZXJpZXNMcnUucHVzaChxdWVyeSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbiAgcHJpdmF0ZSByZXZvbWVGcm9tQ2FjaGUocXVlcnk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubGFzdFF1ZXJpZXNXaXRoUmVzdWx0cy5kZWxldGUocXVlcnkpO1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5sYXN0UXVlcmllc0xydS5maW5kSW5kZXgoKGl0KSA9PiBpdCA9PT0gcXVlcnkpO1xuICAgIHRoaXMubGFzdFF1ZXJpZXNMcnUuc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxuICBwcml2YXRlIGdldExhdGVzdFF1ZXJ5KCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmxhc3RRdWVyaWVzTHJ1Lmxlbmd0aFxuICAgICAgPyB0aGlzLmxhc3RRdWVyaWVzTHJ1W3RoaXMubGFzdFF1ZXJpZXNMcnUubGVuZ3RoIC0gMV1cbiAgICAgIDogbnVsbDtcbiAgfVxuICAvLyBFbmQgY2FjaGUgaW1wbGVtZW1lbnRhdGlvbiAtLS1cbn1cblxuY29uc3Qgc2FtZVBvc2l0aW9uID0gKFxuICBzZWFyY2hSZXN1bHQ6IFNlYXJjaFJlc3VsdCxcbiAga2V5czogR2VvUG9pbnRbXVxuKTogYm9vbGVhbiA9PiB7XG4gIGxldCBmb3VuZCA9IGZhbHNlO1xuICBrZXlzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICBpZiAoXG4gICAgICBzZWFyY2hSZXN1bHQubG9uID09PSBpdGVtLmNvb3JkaW5hdGVzWzBdICYmXG4gICAgICBzZWFyY2hSZXN1bHQubGF0ID09PSBpdGVtLmNvb3JkaW5hdGVzWzFdXG4gICAgKSB7XG4gICAgICBmb3VuZCA9IHRydWU7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGZvdW5kO1xufTtcblxuY29uc3QgZGlzdGluY3QgPSAoZGF0YTogU2VhcmNoUmVzdWx0W10pOiBTZWFyY2hSZXN1bHRbXSA9PiB7XG4gIGNvbnN0IHVuaXF1ZTogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICByZXR1cm4gZGF0YS5maWx0ZXIoKHIpID0+IHtcbiAgICBpZiAodW5pcXVlW3IuZGlzcGxheV9uYW1lXSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB1bmlxdWVbci5kaXNwbGF5X25hbWVdID0gMTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG59O1xuIl19
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbG9jYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2x1eC9zcmMvbGliL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUNMLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsR0FBRyxFQUNILFNBQVMsRUFDVixNQUFNLGdCQUFnQixDQUFDOzs7QUFZeEIsTUFBTSxPQUFPLGtCQUFrQjtJQVE3QixZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBUDVCLHFCQUFnQixHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUs7UUFDN0IsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLDJCQUFzQixHQUFHLElBQUksR0FBRyxFQUEwQixDQUFDO1FBQzNELG1CQUFjLEdBQWEsRUFBRSxDQUFDO1FBS3BDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUU1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYzthQUMvQixZQUFZLEVBQUU7YUFDZCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBRWhDLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FDOUIsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUVuQyxTQUFTLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUN6QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzdDLElBQUksSUFBSSxL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QUMsSUFBSSxFQUFFLEVBQUU7UUFDcEIsSUFDRSxZQUFZLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLFlBQVksQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDeEM7WUFDQSxLQUFLLEdBQUcsSUFBSSxDQUFDO1NBQ2Q7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFvQixFQUFrQixFQUFFO0lBQ3hELE1BQU0sTUFBTSxHQUE4QixFQUFFLENBQUM7SUFDN0MsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDdkIsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQzFCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICcuLi9kYXRhc291cmNlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBtYXAsXG4gIHN3aXRjaE1hcFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBHZW9Qb2ludCB9IGZyb20gJy4uL21hcC9nZW9wb2ludCc7XG5cbmludGVyZmFjZSBTZWFyY2hSZXN1bHQge1xuICBwbGFjZV9pZDogbnVtYmVyO1xuICBsYXQ6IG51bWJlcjtcbiAgbG9uOiBudW1iZXI7XG4gIGRpc3BsYXlfbmFtZTogc3RyaW5nO1xuICBpY29uOiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgR2VvbG9jYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBkZWJvdW5jZVBlcmlvZE1zID0gMzAwOyAvLyBtc1xuICBwcml2YXRlIGNhY2hlU2l6ZSA9IDIwO1xuICBwcml2YXRlIGxhc3RRdWVyaWVzV2l0aFJlc3VsdHMgPSBuZXcgTWFwPHN0cmluZywgU2VhcmNoUmVzdWx0W10+KCk7XG4gIHByaXZhdGUgbGFzdFF1ZXJpZXNMcnU6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgY3VycmVudFNlYXJjaCQ6IFN1YmplY3Q8c3RyaW5nPjtcbiAgcHJpdmF0ZSBjdXJyZW50UXVlcnkkOiBPYnNlcnZhYmxlPFNlYXJjaFJlc3VsdFtdPjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHtcbiAgICB0aGlzLmN1cnJlbnRTZWFyY2gkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gICAgY29uc3QgdHlwZWQkID0gdGhpcy5jdXJyZW50U2VhcmNoJFxuICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcblxuICAgIHRoaXMuY3VycmVudFF1ZXJ5JCA9IHR5cGVkJC5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VQZXJpb2RNcyksXG5cbiAgICAgIHN3aXRjaE1hcCgoY3VycmVudFF1ZXJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldEZyb21DYWNoZShjdXJyZW50UXVlcnkpO1xuICAgICAgICBpZiAoZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIC8vIE5vbWluYXRpbSBzZWFyY2ggZG9jdW1lbnRhdGlvbjpcbiAgICAgICAgLy8gaHR0cHM6Ly9ub21pbmF0aW0ub3JnL3JlbGVhc2UtZG9jcy9kZXZlbG9wL2FwaS9TZWFyY2gvXG4gICAgICAgIGNvbnN0IHVybCA9XG4gICAgICAgICAgJ2h0dHBzOi8vbm9taW5hdGltLm9wZW5zdHJlZXRtYXAub3JnL3NlYXJjaD9mb3JtYXQ9anNvbiZsaW1pdD0yMCZxPScgK1xuICAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudChjdXJyZW50UXVlcnkpO1xuICAgICAgICBjb25zdCBoZWFkZXJzID0ge1xuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5hZGRUb0NhY2hlKGN1cnJlbnRRdWVyeSwgW10pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCwgeyBoZWFkZXJzIH0pLnBpcGUoXG4gICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VhcmNoUmVzdWx0cyA9IHJlc3BvbnNlIGFzIHVua25vd24gYXMgU2VhcmNoUmVzdWx0W107XG4gICAgICAgICAgICBjb25zdCB1bmlxdWVSZXN1bHRzID0gZGlzdGluY3Qoc2VhcmNoUmVzdWx0cyk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hZGRUb0NhY2hlKGN1cnJlbnRRdWVyeSwgdW5pcXVlUmVzdWx0cyk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHNlYXJjaEdlb2xvY2F0aW9uKHF1ZXJ5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNlYXJjaFJlc3VsdFtdPiB7XG4gICAgdGhpcy5jdXJyZW50U2VhcmNoJC5uZXh0KHF1ZXJ5KTtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UXVlcnkkO1xuICB9XG5cbiAgZ2V0TGFiZWxzKFxuICAgIGluc3RhbmNlOiBHZW9sb2NhdGlvblNlcnZpY2UsXG4gICAga2V5czogR2VvUG9pbnRbXVxuICApOiBPYnNlcnZhYmxlPERhdGFTb3VyY2U8R2VvUG9pbnQsIHN0cmluZz4+IHtcbiAgICBjb25zdCBzZWFyY2hSZXN1bHRzID0gaW5zdGFuY2UubGFzdFF1ZXJpZXNXaXRoUmVzdWx0c1xuICAgICAgLmdldChpbnN0YW5jZS5nZXRMYXRlc3RRdWVyeSgpKVxuICAgICAgLmZpbHRlcigoc2VhcmNoUmVzdWx0KSA9PiBzYW1lUG9zaXRpb24oc2VhcmNoUmVzdWx0LCBrZXlzKSk7XG4gICAgcmV0dXJuIG9mKFxuICAgICAgc2VhcmNoUmVzdWx0cy5tYXAoKHNlYXJjaFJlc3VsdCkgPT4ge1xuICAgICAgICBjb25zdCBrZXk6IEdlb1BvaW50ID0ge1xuICAgICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFtzZWFyY2hSZXN1bHQubG9uLCBzZWFyY2hSZXN1bHQubGF0XVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGtleSxcbiAgICAgICAgICBsYWJlbDogc2VhcmNoUmVzdWx0LmRpc3BsYXlfbmFtZVxuICAgICAgICB9O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0RGF0YShcbiAgICBpbnN0YW5jZTogR2VvbG9jYXRpb25TZXJ2aWNlLFxuICAgIHNlYXJjaDogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8RGF0YVNvdXJjZTxHZW9Qb2ludCwgc3RyaW5nPj4ge1xuICAgIHJldHVybiBpbnN0YW5jZS5zZWFyY2hHZW9sb2NhdGlvbihzZWFyY2gpLnBpcGUoXG4gICAgICBtYXAoKHNlYXJjaFJlc3VsdHMpID0+XG4gICAgICAgIHNlYXJjaFJlc3VsdHMubWFwKChzZWFyY2hSZXN1bHQpID0+IHtcbiAgICAgICAgICBjb25zdCBrZXk6IEdlb1BvaW50ID0ge1xuICAgICAgICAgICAgdHlwZTogJ1BvaW50JyxcbiAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBbc2VhcmNoUmVzdWx0Lmxvbiwgc2VhcmNoUmVzdWx0LmxhdF1cbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IGxhYmVsID0gc2VhcmNoUmVzdWx0LmRpc3BsYXlfbmFtZTtcbiAgICAgICAgICByZXR1cm4geyBrZXksIGxhYmVsIH07XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8vIENhY2hlIGltcGxlbWVtZW50YXRpb24gLS0tXG4gIHByaXZhdGUgZ2V0RnJvbUNhY2hlKHF1ZXJ5OiBzdHJpbmcpOiBTZWFyY2hSZXN1bHRbXSB7XG4gICAgaWYgKHRoaXMubGFzdFF1ZXJpZXNXaXRoUmVzdWx0cy5oYXMocXVlcnkpKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYXN0UXVlcmllc1dpdGhSZXN1bHRzLmdldChxdWVyeSk7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgcHJpdmF0ZSBhZGRUb0NhY2hlKHF1ZXJ5OiBzdHJpbmcsIGRhdGE6IFNlYXJjaFJlc3VsdFtdKTogU2VhcmNoUmVzdWx0W10ge1xuICAgIGlmICh0aGlzLmxhc3RRdWVyaWVzV2l0aFJlc3VsdHMua2V5cy5sZW5ndGggPj0gdGhpcy5jYWNoZVNpemUpIHtcbiAgICAgIGNvbnN0IGRlbGV0ZWRRdWVyeSA9IHRoaXMubGFzdFF1ZXJpZXNMcnVbMF07XG4gICAgICB0aGlzLnJldm9tZUZyb21DYWNoZShkZWxldGVkUXVlcnkpO1xuICAgIH1cbiAgICB0aGlzLmxhc3RRdWVyaWVzV2l0aFJlc3VsdHMuc2V0KHF1ZXJ5LCBkYXRhKTtcbiAgICB0aGlzLmxhc3RRdWVyaWVzTHJ1LnB1c2gocXVlcnkpO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG4gIHByaXZhdGUgcmV2b21lRnJvbUNhY2hlKHF1ZXJ5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmxhc3RRdWVyaWVzV2l0aFJlc3VsdHMuZGVsZXRlKHF1ZXJ5KTtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMubGFzdFF1ZXJpZXNMcnUuZmluZEluZGV4KChpdCkgPT4gaXQgPT09IHF1ZXJ5KTtcbiAgICB0aGlzLmxhc3RRdWVyaWVzTHJ1LnNwbGljZShpbmRleCwgMSk7XG4gIH1cbiAgcHJpdmF0ZSBnZXRMYXRlc3RRdWVyeSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5sYXN0UXVlcmllc0xydS5sZW5ndGhcbiAgICAgID8gdGhpcy5sYXN0UXVlcmllc0xydVt0aGlzLmxhc3RRdWVyaWVzTHJ1Lmxlbmd0aCAtIDFdXG4gICAgICA6IG51bGw7XG4gIH1cbiAgLy8gRW5kIGNhY2hlIGltcGxlbWVtZW50YXRpb24gLS0tXG59XG5cbmNvbnN0IHNhbWVQb3NpdGlvbiA9IChcbiAgc2VhcmNoUmVzdWx0OiBTZWFyY2hSZXN1bHQsXG4gIGtleXM6IEdlb1BvaW50W11cbik6IGJvb2xlYW4gPT4ge1xuICBsZXQgZm91bmQgPSBmYWxzZTtcbiAga2V5cy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgaWYgKFxuICAgICAgc2VhcmNoUmVzdWx0LmxvbiA9PT0gaXRlbS5jb29yZGluYXRlc1swXSAmJlxuICAgICAgc2VhcmNoUmVzdWx0LmxhdCA9PT0gaXRlbS5jb29yZGluYXRlc1sxXVxuICAgICkge1xuICAgICAgZm91bmQgPSB0cnVlO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBmb3VuZDtcbn07XG5cbmNvbnN0IGRpc3RpbmN0ID0gKGRhdGE6IFNlYXJjaFJlc3VsdFtdKTogU2VhcmNoUmVzdWx0W10gPT4ge1xuICBjb25zdCB1bmlxdWU6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcbiAgcmV0dXJuIGRhdGEuZmlsdGVyKChyKSA9PiB7XG4gICAgaWYgKHVuaXF1ZVtyLmRpc3BsYXlfbmFtZV0pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdW5pcXVlW3IuZGlzcGxheV9uYW1lXSA9IDE7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufTtcbiJdfQ==
|