@metadev/lux 0.16.4 → 0.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/esm2020/lib/autocomplete/autocomplete.component.mjs +479 -0
  2. package/esm2020/lib/autocomplete-list/autocomplete-list.component.mjs +254 -0
  3. package/esm2020/lib/breadcrumb/breadcrumb.component.mjs +75 -0
  4. package/esm2020/lib/checkbox/checkbox.component.mjs +154 -0
  5. package/{esm2015/lib/datasource.js → esm2020/lib/datasource.mjs} +0 -0
  6. package/esm2020/lib/datetime/datetime.component.mjs +306 -0
  7. package/esm2020/lib/filter/filter.component.mjs +152 -0
  8. package/esm2020/lib/geolocation/geolocation.component.mjs +407 -0
  9. package/{esm2015/lib/geolocation/geolocation.service.js → esm2020/lib/geolocation/geolocation.service.mjs} +7 -11
  10. package/esm2020/lib/geolocation/openlayer-loader.service.mjs +62 -0
  11. package/esm2020/lib/helperFns.mjs +109 -0
  12. package/esm2020/lib/input/input.component.mjs +452 -0
  13. package/{esm2015/lib/input/regexp.service.js → esm2020/lib/input/regexp.service.mjs} +7 -6
  14. package/{esm2015/lib/lang.js → esm2020/lib/lang.mjs} +0 -0
  15. package/esm2020/lib/lux.module.mjs +130 -0
  16. package/{esm2015/lib/map/geopoint.js → esm2020/lib/map/geopoint.mjs} +0 -0
  17. package/esm2020/lib/map/map.component.mjs +265 -0
  18. package/esm2020/lib/modal/modal-backdrop.mjs +26 -0
  19. package/esm2020/lib/modal/modal-config.mjs +14 -0
  20. package/{esm2015/lib/modal/modal-dismiss-reasons.js → esm2020/lib/modal/modal-dismiss-reasons.mjs} +0 -0
  21. package/{esm2015/lib/modal/modal-ref.js → esm2020/lib/modal/modal-ref.mjs} +0 -0
  22. package/esm2020/lib/modal/modal-stack.mjs +179 -0
  23. package/esm2020/lib/modal/modal-window.mjs +119 -0
  24. package/esm2020/lib/modal/modal.service.mjs +26 -0
  25. package/{esm2015/lib/modal/util.js → esm2020/lib/modal/util.mjs} +0 -0
  26. package/esm2020/lib/pagination/pagination.component.mjs +137 -0
  27. package/{esm2015/lib/pagination/pagination.js → esm2020/lib/pagination/pagination.mjs} +0 -0
  28. package/esm2020/lib/radiogroup/radiogroup.component.mjs +130 -0
  29. package/esm2020/lib/select/select.component.mjs +149 -0
  30. package/{esm2015/lib/tooltip/placement.js → esm2020/lib/tooltip/placement.mjs} +0 -0
  31. package/{esm2015/lib/tooltip/tooltip-context.js → esm2020/lib/tooltip/tooltip-context.mjs} +0 -0
  32. package/esm2020/lib/tooltip/tooltip.component.mjs +23 -0
  33. package/esm2020/lib/tooltip/tooltip.directive.mjs +60 -0
  34. package/{esm2015/lib/tooltip/tooltip.service.js → esm2020/lib/tooltip/tooltip.service.mjs} +7 -9
  35. package/{esm2015/lib/tooltip/tooltop-content.js → esm2020/lib/tooltip/tooltop-content.mjs} +0 -0
  36. package/esm2020/lib/voice-recognition/voice-recognition.directive.mjs +73 -0
  37. package/{esm2015/lib/window/window.service.js → esm2020/lib/window/window.service.mjs} +0 -0
  38. package/esm2020/metadev-lux.mjs +5 -0
  39. package/esm2020/public-api.mjs +21 -0
  40. package/fesm2015/metadev-lux.mjs +4345 -0
  41. package/fesm2015/metadev-lux.mjs.map +1 -0
  42. package/fesm2020/metadev-lux.mjs +4343 -0
  43. package/fesm2020/metadev-lux.mjs.map +1 -0
  44. package/lib/autocomplete/autocomplete.component.d.ts +3 -0
  45. package/lib/autocomplete-list/autocomplete-list.component.d.ts +3 -0
  46. package/lib/breadcrumb/breadcrumb.component.d.ts +3 -0
  47. package/lib/checkbox/checkbox.component.d.ts +3 -0
  48. package/lib/datetime/datetime.component.d.ts +4 -0
  49. package/lib/filter/filter.component.d.ts +3 -0
  50. package/lib/geolocation/geolocation.component.d.ts +4 -0
  51. package/lib/geolocation/geolocation.service.d.ts +3 -0
  52. package/lib/geolocation/openlayer-loader.service.d.ts +3 -0
  53. package/lib/helperFns.d.ts +2 -0
  54. package/lib/input/input.component.d.ts +15 -0
  55. package/lib/input/regexp.service.d.ts +3 -0
  56. package/lib/lux.module.d.ts +26 -0
  57. package/lib/map/map.component.d.ts +3 -0
  58. package/lib/modal/modal-backdrop.d.ts +3 -0
  59. package/lib/modal/modal-config.d.ts +3 -0
  60. package/lib/modal/modal-stack.d.ts +3 -0
  61. package/lib/modal/modal-window.d.ts +3 -0
  62. package/lib/modal/modal.service.d.ts +3 -0
  63. package/lib/pagination/pagination.component.d.ts +3 -0
  64. package/lib/radiogroup/radiogroup.component.d.ts +3 -0
  65. package/lib/select/select.component.d.ts +3 -0
  66. package/lib/tooltip/tooltip.component.d.ts +3 -0
  67. package/lib/tooltip/tooltip.directive.d.ts +3 -0
  68. package/lib/tooltip/tooltip.service.d.ts +3 -0
  69. package/lib/voice-recognition/voice-recognition.directive.d.ts +3 -0
  70. package/metadev-lux.d.ts +1 -16
  71. package/package.json +22 -10
  72. package/public-api.d.ts +12 -7
  73. package/bundles/metadev-lux.umd.js +0 -4647
  74. package/bundles/metadev-lux.umd.js.map +0 -1
  75. package/esm2015/lib/autocomplete/autocomplete.component.js +0 -455
  76. package/esm2015/lib/autocomplete-list/autocomplete-list.component.js +0 -230
  77. package/esm2015/lib/breadcrumb/breadcrumb.component.js +0 -77
  78. package/esm2015/lib/checkbox/checkbox.component.js +0 -142
  79. package/esm2015/lib/datetime/datetime.component.js +0 -275
  80. package/esm2015/lib/filter/filter.component.js +0 -140
  81. package/esm2015/lib/geolocation/geolocation.component.js +0 -371
  82. package/esm2015/lib/geolocation/openlayer-loader.service.js +0 -63
  83. package/esm2015/lib/helperFns.js +0 -93
  84. package/esm2015/lib/input/input.component.js +0 -371
  85. package/esm2015/lib/lux.module.js +0 -83
  86. package/esm2015/lib/map/map.component.js +0 -261
  87. package/esm2015/lib/modal/modal-backdrop.js +0 -19
  88. package/esm2015/lib/modal/modal-config.js +0 -12
  89. package/esm2015/lib/modal/modal-stack.js +0 -182
  90. package/esm2015/lib/modal/modal-window.js +0 -92
  91. package/esm2015/lib/modal/modal.service.js +0 -28
  92. package/esm2015/lib/pagination/pagination.component.js +0 -134
  93. package/esm2015/lib/radiogroup/radiogroup.component.js +0 -114
  94. package/esm2015/lib/select/select.component.js +0 -131
  95. package/esm2015/lib/tooltip/tooltip.component.js +0 -19
  96. package/esm2015/lib/tooltip/tooltip.directive.js +0 -52
  97. package/esm2015/lib/voice-recognition/voice-recognition.directive.js +0 -76
  98. package/esm2015/metadev-lux.js +0 -21
  99. package/esm2015/public-api.js +0 -16
  100. package/fesm2015/metadev-lux.js +0 -4025
  101. package/fesm2015/metadev-lux.js.map +0 -1
  102. package/metadev-lux.metadata.json +0 -1
@@ -1,371 +0,0 @@
1
- import { Component, Input, Output, EventEmitter, ElementRef, ViewChild, forwardRef } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
3
- import { hasValue, isInitialAndEmpty, isValidEmail, isValidNumber, normalizeDate } from '../helperFns';
4
- import { languageDetector } from '../lang';
5
- import { RegexpService } from './regexp.service';
6
- export class InputComponent {
7
- constructor(regexpService) {
8
- this.regexpService = regexpService;
9
- this.touched = false;
10
- this.dirty = false;
11
- this.lastErrors = null;
12
- this._value = '';
13
- this._pattern = undefined;
14
- this._regexp = undefined;
15
- this.userErrors = {
16
- en: {
17
- required: 'Required field.',
18
- min: 'Minimum value is $min.',
19
- max: 'Maximum value is $max.',
20
- email: 'Format should match example@example.com.'
21
- },
22
- es: {
23
- required: 'El campo es obligatorio.',
24
- min: 'El valor mínimo es $min.',
25
- max: 'El valor máximo es $max.',
26
- email: 'El campo debe tener un formato como ejemplo@ejemplo.com.'
27
- }
28
- };
29
- this.lang = languageDetector();
30
- this.inlineErrors = false;
31
- this.readonly = null;
32
- this.valueChange = new EventEmitter();
33
- this.keyPress = new EventEmitter();
34
- this.onChange = (value) => { };
35
- this.onTouched = () => { };
36
- }
37
- get className() {
38
- return this.checkClassName();
39
- }
40
- set disabled(v) {
41
- v = typeof v === 'string' ? true : v;
42
- this._disabled = v;
43
- }
44
- get disabled() {
45
- return this._disabled;
46
- }
47
- set pattern(p) {
48
- this._pattern = p;
49
- if (p === undefined) {
50
- this._regexp = undefined;
51
- }
52
- else {
53
- try {
54
- this._regexp = new RegExp(p);
55
- }
56
- catch (e) {
57
- this._pattern = undefined;
58
- this._regexp = undefined;
59
- }
60
- }
61
- }
62
- get pattern() {
63
- return this._pattern;
64
- }
65
- set currency(v) {
66
- this._currency = v.toUpperCase();
67
- }
68
- get currency() {
69
- return this._currency;
70
- }
71
- set placeholder(v) {
72
- this._placeholder = v;
73
- }
74
- get placeholder() {
75
- return this._placeholder ? this._placeholder : '';
76
- }
77
- set required(v) {
78
- this._required = v;
79
- }
80
- get required() {
81
- return this._required;
82
- }
83
- set type(v) {
84
- this._type = v.toLowerCase();
85
- this.domain = v.toLowerCase();
86
- this.checkType(v);
87
- }
88
- get type() {
89
- return this._type ? this._type : 'text';
90
- }
91
- set value(v) {
92
- v = v === undefined ? null : v;
93
- if (v === this._value) {
94
- return; // prevent events when there is no changes
95
- }
96
- const initialAndEmpty = isInitialAndEmpty(this._value, v);
97
- if (this.type === 'date') {
98
- v = normalizeDate(v);
99
- }
100
- this._value = v;
101
- this.onChange(v);
102
- if (!initialAndEmpty) {
103
- this.valueChange.emit(v);
104
- }
105
- }
106
- get value() {
107
- if (this.isPercentage() || this.isPermillage() || this.isNumber()) {
108
- const numVal = parseFloat(this._value);
109
- if (!Number.isNaN(numVal)) {
110
- return numVal;
111
- }
112
- }
113
- return this._value;
114
- }
115
- // ControlValueAccessor Interface implementation
116
- writeValue(value) {
117
- this.value = value;
118
- this.setValueInControl(value);
119
- }
120
- registerOnChange(onChange) {
121
- this.onChange = onChange;
122
- }
123
- registerOnTouched(onTouched) {
124
- this.onTouched = onTouched;
125
- }
126
- markAsTouched() {
127
- if (!this.touched) {
128
- this.onTouched();
129
- this.touched = true;
130
- }
131
- }
132
- setDisabledState(disabled) {
133
- this.disabled = disabled;
134
- }
135
- // End of ControlValueAccessor Interface implementation
136
- setValueInControl(v) {
137
- if (this.domain === 'date') {
138
- v = normalizeDate(v);
139
- }
140
- if (this.input) {
141
- this.input.nativeElement.value = v;
142
- }
143
- if (this.textarea) {
144
- this.textarea.nativeElement.value = v;
145
- }
146
- }
147
- // Validator interface
148
- registerOnValidatorChange() { }
149
- validate(control) {
150
- const value = control.value;
151
- let result = null;
152
- if (this.required && !hasValue(value)) {
153
- result = result || {};
154
- result.required = { value, reason: 'Required field.' };
155
- }
156
- if (this._regexp && hasValue(value) && !this._regexp.test(value)) {
157
- result = result || {};
158
- result.pattern = {
159
- value,
160
- reason: `Value must follow the pattern: ${this._pattern}`
161
- };
162
- }
163
- if (this.type === 'email' && hasValue(value) && !isValidEmail(value)) {
164
- result = result || {};
165
- result.email = { value, reason: 'Invalid email.' };
166
- }
167
- if (this.type === 'number' && hasValue(value) && !isValidNumber(value)) {
168
- result = result || {};
169
- result.numeric = { value, reason: 'Invalid number.' };
170
- }
171
- if (this.type === 'date' ||
172
- this.type === 'time' ||
173
- this.type === 'timestamp') {
174
- if (typeof this.min === 'string' &&
175
- hasValue(value) &&
176
- String(value).localeCompare(this.min) === -1) {
177
- result = result || {};
178
- result.min = {
179
- value,
180
- min: this.min,
181
- reason: `Value is lower than minimum value: ${this.min}.`
182
- };
183
- }
184
- if (typeof this.max === 'string' &&
185
- hasValue(value) &&
186
- String(value).localeCompare(this.max) !== -1) {
187
- result = result || {};
188
- result.max = {
189
- value,
190
- max: this.max,
191
- reason: `Value is greater than than maximum value: ${this.max}.`
192
- };
193
- }
194
- }
195
- if (this.type === 'percentage' ||
196
- this.type === 'permillage' ||
197
- this.type === 'number' ||
198
- this.type === 'currency') {
199
- if (hasValue(this.min) && hasValue(value) && value < +this.min) {
200
- result = result || {};
201
- result.min = {
202
- value,
203
- min: this.min,
204
- reason: `Value is lower than minimum value: ${this.min}.`
205
- };
206
- }
207
- if (hasValue(this.max) && hasValue(value) && value > +this.max) {
208
- result = result || {};
209
- result.max = {
210
- value,
211
- max: this.max,
212
- reason: `Value is greater than than maximum value: ${this.max}.`
213
- };
214
- }
215
- }
216
- this.lastErrors = result;
217
- return result;
218
- }
219
- // End of Validator interface
220
- ngOnInit() {
221
- this.inputId = this.inputId
222
- ? this.inputId
223
- : `${this.type}$${InputComponent.idCounter++}`;
224
- }
225
- onLostFocus() {
226
- this.markAsTouched();
227
- }
228
- onKeyUp(newValue) {
229
- this.value = newValue;
230
- }
231
- onChangeValue(newValue) {
232
- this.value = newValue;
233
- this.markAsTouched();
234
- }
235
- onKeyPress(event) {
236
- this.keyPress.emit(event);
237
- }
238
- isNumber() {
239
- return this.type === 'number';
240
- }
241
- isPercentage() {
242
- return this.type === 'percentage';
243
- }
244
- isPermillage() {
245
- return this.type === 'permillage';
246
- }
247
- hasPrefix() {
248
- return this.currency === 'USD';
249
- }
250
- hasPostfix() {
251
- return (this.currency === 'EUR' || this.isPercentage() || this.isPermillage());
252
- }
253
- checkClassName() {
254
- return this.disabled
255
- ? this.readonly
256
- ? 'disabled readonly'
257
- : 'disabled'
258
- : this.readonly
259
- ? 'readonly'
260
- : '';
261
- }
262
- checkType(type) {
263
- switch (type) {
264
- case 'email':
265
- this.setEmailPatterns();
266
- break;
267
- case 'date':
268
- this.setDatePatterns();
269
- break;
270
- case 'time':
271
- this.setTimePatterns();
272
- break;
273
- case 'password':
274
- this.setPasswordPatterns();
275
- break;
276
- case 'number':
277
- this.setNumberPatterns();
278
- break;
279
- case 'currency':
280
- this.setCurrencyPatterns();
281
- break;
282
- case 'percentage':
283
- this.setPercentagePatterns();
284
- break;
285
- case 'permillage':
286
- this.setPermillagePatterns();
287
- break;
288
- default:
289
- break;
290
- }
291
- }
292
- setEmailPatterns() { }
293
- setDatePatterns() {
294
- this.min = this.min || '1900-01-01';
295
- this.max = this.max || '2100-01-01';
296
- }
297
- setTimePatterns() { }
298
- setPasswordPatterns() { }
299
- setNumberPatterns() {
300
- this.domain = 'number';
301
- this.placeholder = '0';
302
- }
303
- setCurrencyPatterns() {
304
- this.domain = 'number';
305
- this.step = this.step || 0.1;
306
- this.min = this.min || 0.0;
307
- this.max = this.max || 10000.0;
308
- this.value = 0.0;
309
- }
310
- setPercentagePatterns() {
311
- this.domain = 'number';
312
- this.step = this.step || 0.01;
313
- this.min = this.min || 0.0;
314
- this.max = this.max || 100.0;
315
- this.placeholder = '0.00';
316
- }
317
- setPermillagePatterns() {
318
- this.domain = 'number';
319
- this.step = this.step || 0.01;
320
- this.min = this.min || 0.0;
321
- this.max = this.max || 1000.0;
322
- this.placeholder = '0.00';
323
- }
324
- }
325
- InputComponent.idCounter = 0;
326
- InputComponent.decorators = [
327
- { type: Component, args: [{
328
- selector: 'lux-input',
329
- template: "<div *ngIf=\"currency && currency === 'USD'\" class=\"prefix rounded-left symbol\" [ngClass]=\"className\">\n <span>$</span>\n</div>\n<input\n #input\n *ngIf=\"type !== 'textarea'\"\n [class]=\"hasPrefix() ? (hasPostfix() ? 'infix' : 'postfix rounded-right') : (hasPostfix() ? 'prefix rounded-left' : 'rounded')\"\n [ngClass]=\"className\"\n placement=\"top\"\n [id]=\"inputId\"\n [type]=\"domain\"\n [attr.value]=\"value\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.min]=\"min?.toString() || undefined\"\n [attr.max]=\"max?.toString() || undefined\"\n [attr.step]=\"step?.toString() || undefined\"\n [attr.pattern]=\"pattern || undefined\"\n [placeholder]=\"placeholder\"\n (keyup)=\"onKeyUp(input.value)\"\n (change)=\"onChangeValue(input.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n/>\n<textarea\n #textarea\n *ngIf=\"type === 'textarea'\"\n class=\"rounded\"\n [ngClass]=\"className\"\n placement=\"top\"\n [id]=\"inputId\"\n [attr.value]=\"value\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.cols]=\"cols?.toString() || undefined\"\n [attr.rows]=\"rows?.toString() || undefined\"\n [placeholder]=\"placeholder\"\n (keyup)=\"onKeyUp(textarea.value)\"\n (change)=\"onChangeValue(textarea.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n></textarea>\n<div *ngIf=\"currency && currency === 'EUR'\" class=\"postfix rounded-right symbol\" [ngClass]=\"className\">\n <span>\u20AC</span>\n</div>\n<div *ngIf=\"isPercentage()\" class=\"postfix rounded-right symbol\" [ngClass]=\"className\">\n <span>%</span>\n</div>\n<div *ngIf=\"isPermillage()\" class=\"postfix rounded-right symbol\" [ngClass]=\"className\">\n <span>\u2030</span>\n</div>\n\n<div *ngIf=\"inlineErrors && lastErrors && (dirty || touched)\" class=\"alert\">\n <div *ngIf=\"lastErrors.required\">\n {{ userErrors[this.lang].required }}\n </div>\n <div *ngIf=\"lastErrors.email\">{{ userErrors[this.lang].email }}</div>\n <div *ngIf=\"lastErrors.min\">\n {{ userErrors[this.lang].min.replace('$min', lastErrors.min.min) }}\n </div>\n <div *ngIf=\"lastErrors.max\">\n {{ userErrors[this.lang].max.replace('$max', lastErrors.max.max) }}\n </div>\n</div>\n",
330
- providers: [
331
- {
332
- provide: NG_VALUE_ACCESSOR,
333
- multi: true,
334
- useExisting: forwardRef(() => InputComponent)
335
- },
336
- {
337
- provide: NG_VALIDATORS,
338
- multi: true,
339
- useExisting: forwardRef(() => InputComponent)
340
- }
341
- ],
342
- styles: [":focus{z-index:1}input,select,textarea{border:solid 1px #495057;border:solid 1px var(--lux-input-border-color, #495057);margin:0;margin:var(--lux-input-margin, 0rem);padding:0 .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:0 .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);border:1px solid #495057;border:1px solid var(--lux-input-border-color, #495057);font-size:1rem;font-size:var(--lux-symbol-font-size, 1rem)}.rounded,.rounded-right,.rounded-middle,.rounded-left{border-radius:.25rem;border:1px solid;border:var(--lux-input-border, 1px solid)}.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}:host{display:flex;align-items:stretch}.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)}\n"]
343
- },] }
344
- ];
345
- InputComponent.ctorParameters = () => [
346
- { type: RegexpService }
347
- ];
348
- InputComponent.propDecorators = {
349
- input: [{ type: ViewChild, args: ['input', { static: false },] }],
350
- textarea: [{ type: ViewChild, args: ['textarea', { static: false },] }],
351
- rows: [{ type: Input }],
352
- cols: [{ type: Input }],
353
- step: [{ type: Input }],
354
- min: [{ type: Input }],
355
- max: [{ type: Input }],
356
- lang: [{ type: Input }],
357
- inlineErrors: [{ type: Input }],
358
- inputId: [{ type: Input }],
359
- ariaLabel: [{ type: Input, args: ['aria-label',] }],
360
- readonly: [{ type: Input }],
361
- disabled: [{ type: Input }],
362
- pattern: [{ type: Input }],
363
- currency: [{ type: Input }],
364
- placeholder: [{ type: Input }],
365
- required: [{ type: Input }],
366
- type: [{ type: Input }],
367
- value: [{ type: Input }],
368
- valueChange: [{ type: Output }],
369
- keyPress: [{ type: Output }]
370
- };
371
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbHV4L3NyYy9saWIvaW5wdXQvaW5wdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBRVosVUFBVSxFQUNWLFNBQVMsRUFDVCxVQUFVLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGlCQUFpQixFQUtqQixhQUFhLEVBQ2QsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsUUFBUSxFQUNSLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osYUFBYSxFQUNiLGFBQWEsRUFDZCxNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBa0JqRCxNQUFNLE9BQU8sY0FBYztJQXFKekIsWUFBbUIsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUEvSS9DLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNkLGVBQVUsR0FBNEIsSUFBSSxDQUFDO1FBR25DLFdBQU0sR0FBUSxFQUFFLENBQUM7UUFHakIsYUFBUSxHQUFZLFNBQVMsQ0FBQztRQUM5QixZQUFPLEdBQVksU0FBUyxDQUFDO1FBSTlCLGVBQVUsR0FBRztZQUNsQixFQUFFLEVBQUU7Z0JBQ0YsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsR0FBRyxFQUFFLHdCQUF3QjtnQkFDN0IsR0FBRyxFQUFFLHdCQUF3QjtnQkFDN0IsS0FBSyxFQUFFLDBDQUEwQzthQUNsRDtZQUNELEVBQUUsRUFBRTtnQkFDRixRQUFRLEVBQUUsMEJBQTBCO2dCQUNwQyxHQUFHLEVBQUUsMEJBQTBC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LEtBQUs7b0JBVUwsS0FBSzswQkEwQkwsTUFBTTt1QkFDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uSW5pdCxcbiAgRWxlbWVudFJlZixcbiAgVmlld0NoaWxkLFxuICBmb3J3YXJkUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBBYnN0cmFjdENvbnRyb2wsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvcixcbiAgTkdfVkFMSURBVE9SU1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBoYXNWYWx1ZSxcbiAgaXNJbml0aWFsQW5kRW1wdHksXG4gIGlzVmFsaWRFbWFpbCxcbiAgaXNWYWxpZE51bWJlcixcbiAgbm9ybWFsaXplRGF0ZVxufSBmcm9tICcuLi9oZWxwZXJGbnMnO1xuaW1wb3J0IHsgbGFuZ3VhZ2VEZXRlY3RvciB9IGZyb20gJy4uL2xhbmcnO1xuaW1wb3J0IHsgUmVnZXhwU2VydmljZSB9IGZyb20gJy4vcmVnZXhwLnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHV4LWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0Q29tcG9uZW50KVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5wdXRDb21wb25lbnQpXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIElucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcbiAgc3RhdGljIGlkQ291bnRlciA9IDA7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7IHN0YXRpYzogZmFsc2UgfSkgaW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3RleHRhcmVhJywgeyBzdGF0aWM6IGZhbHNlIH0pIHRleHRhcmVhOiBFbGVtZW50UmVmO1xuXG4gIHRvdWNoZWQgPSBmYWxzZTtcbiAgZGlydHkgPSBmYWxzZTtcbiAgbGFzdEVycm9yczogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgX2Rpc2FibGVkOiBzdHJpbmcgfCBib29sZWFuO1xuICBwcml2YXRlIF92YWx1ZTogYW55ID0gJyc7XG4gIHByaXZhdGUgX3R5cGU6IHN0cmluZztcbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgcHJpdmF0ZSBfcGF0dGVybj86IHN0cmluZyA9IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfcmVnZXhwPzogUmVnRXhwID0gdW5kZWZpbmVkO1xuICBwcml2YXRlIF9jdXJyZW5jeTogc3RyaW5nO1xuICBwcml2YXRlIF9yZXF1aXJlZDogYm9vbGVhbjtcblxuICBwdWJsaWMgdXNlckVycm9ycyA9IHtcbiAgICBlbjoge1xuICAgICAgcmVxdWlyZWQ6ICdSZXF1aXJlZCBmaWVsZC4nLFxuICAgICAgbWluOiAnTWluaW11bSB2YWx1ZSBpcyAkbWluLicsXG4gICAgICBtYXg6ICdNYXhpbXVtIHZhbHVlIGlzICRtYXguJyxcbiAgICAgIGVtYWlsOiAnRm9ybWF0IHNob3VsZCBtYXRjaCBleGFtcGxlQGV4YW1wbGUuY29tLidcbiAgICB9LFxuICAgIGVzOiB7XG4gICAgICByZXF1aXJlZDogJ0VsIGNhbXBvIGVzIG9ibGlnYXRvcmlvLicsXG4gICAgICBtaW46ICdFbCB2YWxvciBtw61uaW1vIGVzICRtaW4uJyxcbiAgICAgIG1heDogJ0VsIHZhbG9yIG3DoXhpbW8gZXMgJG1heC4nLFxuICAgICAgZW1haWw6ICdFbCBjYW1wbyBkZWJlIHRlbmVyIHVuIGZvcm1hdG8gY29tbyBlamVtcGxvQGVqZW1wbG8uY29tLidcbiAgICB9XG4gIH07XG5cbiAgcHVibGljIGRvbWFpbjogc3RyaW5nO1xuICBASW5wdXQoKVxuICBwdWJsaWMgcm93cz86IG51bWJlciB8IHN0cmluZztcbiAgQElucHV0KClcbiAgcHVibGljIGNvbHM/OiBudW1iZXIgfCBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdGVwPzogbnVtYmVyO1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWluPzogbnVtYmVyIHwgc3RyaW5nO1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWF4PzogbnVtYmVyIHwgc3RyaW5nO1xuXG4gIGdldCBjbGFzc05hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jaGVja0NsYXNzTmFtZSgpO1xuICB9XG5cbiAgQElucHV0KCkgbGFuZyA9IGxhbmd1YWdlRGV0ZWN0b3IoKTtcbiAgQElucHV0KCkgcHVibGljIGlubGluZUVycm9ycyA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgaW5wdXRJZDogc3RyaW5nO1xuICBASW5wdXQoJ2FyaWEtbGFiZWwnKSBwdWJsaWMgYXJpYUxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyByZWFkb25seTogYm9vbGVhbiB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBkaXNhYmxlZCh2OiBzdHJpbmcgfCBib29sZWFuKSB7XG4gICAgdiA9IHR5cGVvZiB2ID09PSAnc3RyaW5nJyA/IHRydWUgOiB2O1xuICAgIHRoaXMuX2Rpc2FibGVkID0gdjtcbiAgfVxuICBnZXQgZGlzYWJsZWQoKTogc3RyaW5nIHwgYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHBhdHRlcm4ocDogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fcGF0dGVybiA9IHA7XG4gICAgaWYgKHAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fcmVnZXhwID0gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLl9yZWdleHAgPSBuZXcgUmVnRXhwKHApO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLl9wYXR0ZXJuID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLl9yZWdleHAgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGdldCBwYXR0ZXJuKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3BhdHRlcm47XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgY3VycmVuY3kodjogc3RyaW5nKSB7XG4gICAgdGhpcy5fY3VycmVuY3kgPSB2LnRvVXBwZXJDYXNlKCk7XG4gIH1cbiAgZ2V0IGN1cnJlbmN5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbmN5O1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHBsYWNlaG9sZGVyKHY6IHN0cmluZykge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdjtcbiAgfVxuICBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXIgPyB0aGlzLl9wbGFjZWhvbGRlciA6ICcnO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHJlcXVpcmVkKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IHY7XG4gIH1cbiAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCB0eXBlKHY6IHN0cmluZykge1xuICAgIHRoaXMuX3R5cGUgPSB2LnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5kb21haW4gPSB2LnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5jaGVja1R5cGUodik7XG4gIH1cbiAgZ2V0IHR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZSA/IHRoaXMuX3R5cGUgOiAndGV4dCc7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgdmFsdWUodjogYW55KSB7XG4gICAgdiA9IHYgPT09IHVuZGVmaW5lZCA/IG51bGwgOiB2O1xuICAgIGlmICh2ID09PSB0aGlzLl92YWx1ZSkge1xuICAgICAgcmV0dXJuOyAvLyBwcmV2ZW50IGV2ZW50cyB3aGVuIHRoZXJlIGlzIG5vIGNoYW5nZXNcbiAgICB9XG4gICAgY29uc3QgaW5pdGlhbEFuZEVtcHR5ID0gaXNJbml0aWFsQW5kRW1wdHkodGhpcy5fdmFsdWUsIHYpO1xuICAgIGlmICh0aGlzLnR5cGUgPT09ICdkYXRlJykge1xuICAgICAgdiA9IG5vcm1hbGl6ZURhdGUodik7XG4gICAgfVxuXG4gICAgdGhpcy5fdmFsdWUgPSB2O1xuICAgIHRoaXMub25DaGFuZ2Uodik7XG4gICAgaWYgKCFpbml0aWFsQW5kRW1wdHkpIHtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2KTtcbiAgICB9XG4gIH1cbiAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgaWYgKHRoaXMuaXNQZXJjZW50YWdlKCkgfHwgdGhpcy5pc1Blcm1pbGxhZ2UoKSB8fCB0aGlzLmlzTnVtYmVyKCkpIHtcbiAgICAgIGNvbnN0IG51bVZhbCA9IHBhcnNlRmxvYXQodGhpcy5fdmFsdWUpO1xuICAgICAgaWYgKCFOdW1iZXIuaXNOYU4obnVtVmFsKSkge1xuICAgICAgICByZXR1cm4gbnVtVmFsO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBrZXlQcmVzcyA9IG5ldyBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD4oKTtcblxuICBvbkNoYW5nZSA9ICh2YWx1ZSk6IHZvaWQgPT4ge307XG4gIG9uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWdleHBTZXJ2aWNlOiBSZWdleHBTZXJ2aWNlKSB7fVxuXG4gIC8vIENvbnRyb2xWYWx1ZUFjY2Vzc29yIEludGVyZmFjZSBpbXBsZW1lbnRhdGlvblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5zZXRWYWx1ZUluQ29udHJvbCh2YWx1ZSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKG9uQ2hhbmdlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gb25DaGFuZ2U7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gb25Ub3VjaGVkO1xuICB9XG5cbiAgbWFya0FzVG91Y2hlZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudG91Y2hlZCkge1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMudG91Y2hlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgfVxuICAvLyBFbmQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IgSW50ZXJmYWNlIGltcGxlbWVudGF0aW9uXG5cbiAgcHJpdmF0ZSBzZXRWYWx1ZUluQ29udHJvbCh2OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kb21haW4gPT09ICdkYXRlJykge1xuICAgICAgdiA9IG5vcm1hbGl6ZURhdGUodik7XG4gICAgfVxuICAgIGlmICh0aGlzLmlucHV0KSB7XG4gICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB2O1xuICAgIH1cbiAgICBpZiAodGhpcy50ZXh0YXJlYSkge1xuICAgICAgdGhpcy50ZXh0YXJlYS5uYXRpdmVFbGVtZW50LnZhbHVlID0gdjtcbiAgICB9XG4gIH1cblxuICAvLyBWYWxpZGF0b3IgaW50ZXJmYWNlXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoKTogdm9pZCB7fVxuXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgbGV0IHJlc3VsdDogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgIWhhc1ZhbHVlKHZhbHVlKSkge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0IHx8IHt9O1xuICAgICAgcmVzdWx0LnJlcXVpcmVkID0geyB2YWx1ZSwgcmVhc29uOiAnUmVxdWlyZWQgZmllbGQuJyB9O1xuICAgIH1cbiAgICBpZiAodGhpcy5fcmVnZXhwICYmIGhhc1ZhbHVlKHZhbHVlKSAmJiAhdGhpcy5fcmVnZXhwLnRlc3QodmFsdWUpKSB7XG4gICAgICByZXN1bHQgPSByZXN1bHQgfHwge307XG4gICAgICByZXN1bHQucGF0dGVybiA9IHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHJlYXNvbjogYFZhbHVlIG11c3QgZm9sbG93IHRoZSBwYXR0ZXJuOiAke3RoaXMuX3BhdHRlcm59YFxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ2VtYWlsJyAmJiBoYXNWYWx1ZSh2YWx1ZSkgJiYgIWlzVmFsaWRFbWFpbCh2YWx1ZSkpIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB7fTtcbiAgICAgIHJlc3VsdC5lbWFpbCA9IHsgdmFsdWUsIHJlYXNvbjogJ0ludmFsaWQgZW1haWwuJyB9O1xuICAgIH1cbiAgICBpZiAodGhpcy50eXBlID09PSAnbnVtYmVyJyAmJiBoYXNWYWx1ZSh2YWx1ZSkgJiYgIWlzVmFsaWROdW1iZXIodmFsdWUpKSB7XG4gICAgICByZXN1bHQgPSByZXN1bHQgfHwge307XG4gICAgICByZXN1bHQubnVtZXJpYyA9IHsgdmFsdWUsIHJlYXNvbjogJ0ludmFsaWQgbnVtYmVyLicgfTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgdGhpcy50eXBlID09PSAnZGF0ZScgfHxcbiAgICAgIHRoaXMudHlwZSA9PT0gJ3RpbWUnIHx8XG4gICAgICB0aGlzLnR5cGUgPT09ICd0aW1lc3RhbXAnXG4gICAgKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiB0aGlzLm1pbiA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgaGFzVmFsdWUodmFsdWUpICYmXG4gICAgICAgIFN0cmluZyh2YWx1ZSkubG9jYWxlQ29tcGFyZSh0aGlzLm1pbikgPT09IC0xXG4gICAgICApIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0IHx8IHt9O1xuICAgICAgICByZXN1bHQubWluID0ge1xuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIG1pbjogdGhpcy5taW4sXG4gICAgICAgICAgcmVhc29uOiBgVmFsdWUgaXMgbG93ZXIgdGhhbiBtaW5pbXVtIHZhbHVlOiAke3RoaXMubWlufS5gXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiB0aGlzLm1heCA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgaGFzVmFsdWUodmFsdWUpICYmXG4gICAgICAgIFN0cmluZyh2YWx1ZSkubG9jYWxlQ29tcGFyZSh0aGlzLm1heCkgIT09IC0xXG4gICAgICApIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0IHx8IHt9O1xuICAgICAgICByZXN1bHQubWF4ID0ge1xuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIG1heDogdGhpcy5tYXgsXG4gICAgICAgICAgcmVhc29uOiBgVmFsdWUgaXMgZ3JlYXRlciB0aGFuIHRoYW4gbWF4aW11bSB2YWx1ZTogJHt0aGlzLm1heH0uYFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMudHlwZSA9PT0gJ3BlcmNlbnRhZ2UnIHx8XG4gICAgICB0aGlzLnR5cGUgPT09ICdwZXJtaWxsYWdlJyB8fFxuICAgICAgdGhpcy50eXBlID09PSAnbnVtYmVyJyB8fFxuICAgICAgdGhpcy50eXBlID09PSAnY3VycmVuY3knXG4gICAgKSB7XG4gICAgICBpZiAoaGFzVmFsdWUodGhpcy5taW4pICYmIGhhc1ZhbHVlKHZhbHVlKSAmJiB2YWx1ZSA8ICt0aGlzLm1pbikge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQgfHwge307XG4gICAgICAgIHJlc3VsdC5taW4gPSB7XG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgbWluOiB0aGlzLm1pbixcbiAgICAgICAgICByZWFzb246IGBWYWx1ZSBpcyBsb3dlciB0aGFuIG1pbmltdW0gdmFsdWU6ICR7dGhpcy5taW59LmBcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGlmIChoYXNWYWx1ZSh0aGlzLm1heCkgJiYgaGFzVmFsdWUodmFsdWUpICYmIHZhbHVlID4gK3RoaXMubWF4KSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB7fTtcbiAgICAgICAgcmVzdWx0Lm1heCA9IHtcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICBtYXg6IHRoaXMubWF4LFxuICAgICAgICAgIHJlYXNvbjogYFZhbHVlIGlzIGdyZWF0ZXIgdGhhbiB0aGFuIG1heGltdW0gdmFsdWU6ICR7dGhpcy5tYXh9LmBcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5sYXN0RXJyb3JzID0gcmVzdWx0O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgLy8gRW5kIG9mIFZhbGlkYXRvciBpbnRlcmZhY2VcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0SWQgPSB0aGlzLmlucHV0SWRcbiAgICAgID8gdGhpcy5pbnB1dElkXG4gICAgICA6IGAke3RoaXMudHlwZX0kJHtJbnB1dENvbXBvbmVudC5pZENvdW50ZXIrK31gO1xuICB9XG4gIG9uTG9zdEZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICB9XG4gIG9uS2V5VXAobmV3VmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSBuZXdWYWx1ZTtcbiAgfVxuICBvbkNoYW5nZVZhbHVlKG5ld1ZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XG4gIH1cbiAgb25LZXlQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMua2V5UHJlc3MuZW1pdChldmVudCk7XG4gIH1cblxuICBpc051bWJlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSAnbnVtYmVyJztcbiAgfVxuICBpc1BlcmNlbnRhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gJ3BlcmNlbnRhZ2UnO1xuICB9XG4gIGlzUGVybWlsbGFnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSAncGVybWlsbGFnZSc7XG4gIH1cbiAgaGFzUHJlZml4KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbmN5ID09PSAnVVNEJztcbiAgfVxuICBoYXNQb3N0Zml4KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmN1cnJlbmN5ID09PSAnRVVSJyB8fCB0aGlzLmlzUGVyY2VudGFnZSgpIHx8IHRoaXMuaXNQZXJtaWxsYWdlKClcbiAgICApO1xuICB9XG5cbiAgY2hlY2tDbGFzc05hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZFxuICAgICAgPyB0aGlzLnJlYWRvbmx5XG4gICAgICAgID8gJ2Rpc2FibGVkIHJlYWRvbmx5J1xuICAgICAgICA6ICdkaXNhYmxlZCdcbiAgICAgIDogdGhpcy5yZWFkb25seVxuICAgICAgPyAncmVhZG9ubHknXG4gICAgICA6ICcnO1xuICB9XG5cbiAgY2hlY2tUeXBlKHR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnZW1haWwnOlxuICAgICAgICB0aGlzLnNldEVtYWlsUGF0dGVybnMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgdGhpcy5zZXREYXRlUGF0dGVybnMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0aW1lJzpcbiAgICAgICAgdGhpcy5zZXRUaW1lUGF0dGVybnMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdwYXNzd29yZCc6XG4gICAgICAgIHRoaXMuc2V0UGFzc3dvcmRQYXR0ZXJucygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgIHRoaXMuc2V0TnVtYmVyUGF0dGVybnMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjdXJyZW5jeSc6XG4gICAgICAgIHRoaXMuc2V0Q3VycmVuY3lQYXR0ZXJucygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3BlcmNlbnRhZ2UnOlxuICAgICAgICB0aGlzLnNldFBlcmNlbnRhZ2VQYXR0ZXJucygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Blcm1pbGxhZ2UnOlxuICAgICAgICB0aGlzLnNldFBlcm1pbGxhZ2VQYXR0ZXJucygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHNldEVtYWlsUGF0dGVybnMoKTogdm9pZCB7fVxuXG4gIHNldERhdGVQYXR0ZXJucygpOiB2b2lkIHtcbiAgICB0aGlzLm1pbiA9IHRoaXMubWluIHx8ICcxOTAwLTAxLTAxJztcbiAgICB0aGlzLm1heCA9IHRoaXMubWF4IHx8ICcyMTAwLTAxLTAxJztcbiAgfVxuXG4gIHNldFRpbWVQYXR0ZXJucygpOiB2b2lkIHt9XG5cbiAgc2V0UGFzc3dvcmRQYXR0ZXJucygpOiB2b2lkIHt9XG5cbiAgc2V0TnVtYmVyUGF0dGVybnMoKTogdm9pZCB7XG4gICAgdGhpcy5kb21haW4gPSAnbnVtYmVyJztcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gJzAnO1xuICB9XG5cbiAgc2V0Q3VycmVuY3lQYXR0ZXJucygpOiB2b2lkIHtcbiAgICB0aGlzLmRvbWFpbiA9ICdudW1iZXInO1xuICAgIHRoaXMuc3RlcCA9IHRoaXMuc3RlcCB8fCAwLjE7XG4gICAgdGhpcy5taW4gPSB0aGlzLm1pbiB8fCAwLjA7XG4gICAgdGhpcy5tYXggPSB0aGlzLm1heCB8fCAxMDAwMC4wO1xuICAgIHRoaXMudmFsdWUgPSAwLjA7XG4gIH1cblxuICBzZXRQZXJjZW50YWdlUGF0dGVybnMoKTogdm9pZCB7XG4gICAgdGhpcy5kb21haW4gPSAnbnVtYmVyJztcbiAgICB0aGlzLnN0ZXAgPSB0aGlzLnN0ZXAgfHwgMC4wMTtcbiAgICB0aGlzLm1pbiA9IHRoaXMubWluIHx8IDAuMDtcbiAgICB0aGlzLm1heCA9IHRoaXMubWF4IHx8IDEwMC4wO1xuICAgIHRoaXMucGxhY2Vob2xkZXIgPSAnMC4wMCc7XG4gIH1cblxuICBzZXRQZXJtaWxsYWdlUGF0dGVybnMoKTogdm9pZCB7XG4gICAgdGhpcy5kb21haW4gPSAnbnVtYmVyJztcbiAgICB0aGlzLnN0ZXAgPSB0aGlzLnN0ZXAgfHwgMC4wMTtcbiAgICB0aGlzLm1pbiA9IHRoaXMubWluIHx8IDAuMDtcbiAgICB0aGlzLm1heCA9IHRoaXMubWF4IHx8IDEwMDAuMDtcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gJzAuMDAnO1xuICB9XG59XG4iXX0=
@@ -1,83 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
- import { RouterModule } from '@angular/router';
5
- import { AngularResizedEventModule } from 'angular-resize-event';
6
- import { AutocompleteComponent } from './autocomplete/autocomplete.component';
7
- import { AutocompleteListComponent } from './autocomplete-list/autocomplete-list.component';
8
- import { CheckboxComponent } from './checkbox/checkbox.component';
9
- import { DatetimeComponent } from './datetime/datetime.component';
10
- import { InputComponent } from './input/input.component';
11
- import { FilterComponent } from './filter/filter.component';
12
- import { GeolocationComponent } from './geolocation/geolocation.component';
13
- import { HttpClientModule } from '@angular/common/http';
14
- import { LuxTooltipDirective } from './tooltip/tooltip.directive';
15
- import { LuxBreadcrumbComponent } from './breadcrumb/breadcrumb.component';
16
- import { LuxModalWindowComponent } from './modal/modal-window';
17
- import { LuxModalBackdropComponent } from './modal/modal-backdrop';
18
- import { MapComponent } from './map/map.component';
19
- import { ModalService } from './modal/modal.service';
20
- import { PaginationComponent } from './pagination/pagination.component';
21
- import { RadiogroupComponent } from './radiogroup/radiogroup.component';
22
- import { SelectComponent } from './select/select.component';
23
- import { TooltipComponent } from './tooltip/tooltip.component';
24
- import { TooltipService } from './tooltip/tooltip.service';
25
- import { VoiceRecognitionDirective } from './voice-recognition/voice-recognition.directive';
26
- import { WINDOW_PROVIDERS } from './window/window.service';
27
- export class LuxModule {
28
- }
29
- LuxModule.decorators = [
30
- { type: NgModule, args: [{
31
- declarations: [
32
- AutocompleteComponent,
33
- AutocompleteListComponent,
34
- FilterComponent,
35
- CheckboxComponent,
36
- DatetimeComponent,
37
- InputComponent,
38
- GeolocationComponent,
39
- LuxTooltipDirective,
40
- LuxModalWindowComponent,
41
- LuxModalBackdropComponent,
42
- LuxBreadcrumbComponent,
43
- MapComponent,
44
- SelectComponent,
45
- TooltipComponent,
46
- PaginationComponent,
47
- RadiogroupComponent,
48
- VoiceRecognitionDirective
49
- ],
50
- entryComponents: [
51
- LuxModalWindowComponent,
52
- LuxModalBackdropComponent,
53
- TooltipComponent
54
- ],
55
- providers: [ModalService, TooltipService, WINDOW_PROVIDERS],
56
- imports: [
57
- AngularResizedEventModule,
58
- FormsModule,
59
- HttpClientModule,
60
- ReactiveFormsModule,
61
- RouterModule,
62
- CommonModule
63
- ],
64
- exports: [
65
- AutocompleteComponent,
66
- AutocompleteListComponent,
67
- FilterComponent,
68
- CheckboxComponent,
69
- DatetimeComponent,
70
- InputComponent,
71
- GeolocationComponent,
72
- LuxTooltipDirective,
73
- LuxBreadcrumbComponent,
74
- LuxBreadcrumbComponent,
75
- MapComponent,
76
- SelectComponent,
77
- PaginationComponent,
78
- RadiogroupComponent,
79
- VoiceRecognitionDirective
80
- ]
81
- },] }
82
- ];
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHV4Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2x1eC9zcmMvbGliL2x1eC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQXNEM0QsTUFBTSxPQUFPLFNBQVM7OztZQXBEckIsUUFBUSxTQUFDO2dCQUNSLFlBQVksRUFBRTtvQkFDWixxQkFBcUI7b0JBQ3JCLHlCQUF5QjtvQkFDekIsZUFBZTtvQkFDZixpQkFBaUI7b0JBQ2pCLGlCQUFpQjtvQkFDakIsY0FBYztvQkFDZCxvQkFBb0I7b0JBQ3BCLG1CQUFtQjtvQkFDbkIsdUJBQXVCO29CQUN2Qix5QkFBeUI7b0JBQ3pCLHNCQUFzQjtvQkFDdEIsWUFBWTtvQkFDWixlQUFlO29CQUNmLGdCQUFnQjtvQkFDaEIsbUJBQW1CO29CQUNuQixtQkFBbUI7b0JBQ25CLHlCQUF5QjtpQkFDMUI7Z0JBQ0QsZUFBZSxFQUFFO29CQUNmLHVCQUF1QjtvQkFDdkIseUJBQXlCO29CQUN6QixnQkFBZ0I7aUJBQ2pCO2dCQUNELFNBQVMsRUFBRSxDQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLENBQUM7Z0JBQzNELE9BQU8sRUFBRTtvQkFDUCx5QkFBeUI7b0JBQ3pCLFdBQVc7b0JBQ1gsZ0JBQWdCO29CQUNoQixtQkFBbUI7b0JBQ25CLFlBQVk7b0JBQ1osWUFBWTtpQkFDYjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AscUJBQXFCO29CQUNyQix5QkFBeUI7b0JBQ3pCLGVBQWU7b0JBQ2YsaUJBQWlCO29CQUNqQixpQkFBaUI7b0JBQ2pCLGNBQWM7b0JBQ2Qsb0JBQW9CO29CQUNwQixtQkFBbUI7b0JBQ25CLHNCQUFzQjtvQkFDdEIsc0JBQXNCO29CQUN0QixZQUFZO29CQUNaLGVBQWU7b0JBQ2YsbUJBQW1CO29CQUNuQixtQkFBbUI7b0JBQ25CLHlCQUF5QjtpQkFDMUI7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBBbmd1bGFyUmVzaXplZEV2ZW50TW9kdWxlIH0gZnJvbSAnYW5ndWxhci1yZXNpemUtZXZlbnQnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9hdXRvY29tcGxldGUtbGlzdC9hdXRvY29tcGxldGUtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRldGltZUNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZXRpbWUvZGF0ZXRpbWUuY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC9pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHZW9sb2NhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBMdXhUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnLi90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlJztcbmltcG9ydCB7IEx1eEJyZWFkY3J1bWJDb21wb25lbnQgfSBmcm9tICcuL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTHV4TW9kYWxXaW5kb3dDb21wb25lbnQgfSBmcm9tICcuL21vZGFsL21vZGFsLXdpbmRvdyc7XG5pbXBvcnQgeyBMdXhNb2RhbEJhY2tkcm9wQ29tcG9uZW50IH0gZnJvbSAnLi9tb2RhbC9tb2RhbC1iYWNrZHJvcCc7XG5pbXBvcnQgeyBNYXBDb21wb25lbnQgfSBmcm9tICcuL21hcC9tYXAuY29tcG9uZW50JztcbmltcG9ydCB7IE1vZGFsU2VydmljZSB9IGZyb20gJy4vbW9kYWwvbW9kYWwuc2VydmljZSc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFJhZGlvZ3JvdXBDb21wb25lbnQgfSBmcm9tICcuL3JhZGlvZ3JvdXAvcmFkaW9ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb29sdGlwQ29tcG9uZW50IH0gZnJvbSAnLi90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50JztcbmltcG9ydCB7IFRvb2x0aXBTZXJ2aWNlIH0gZnJvbSAnLi90b29sdGlwL3Rvb2x0aXAuc2VydmljZSc7XG5pbXBvcnQgeyBWb2ljZVJlY29nbml0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi92b2ljZS1yZWNvZ25pdGlvbi92b2ljZS1yZWNvZ25pdGlvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgV0lORE9XX1BST1ZJREVSUyB9IGZyb20gJy4vd2luZG93L3dpbmRvdy5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQXV0b2NvbXBsZXRlQ29tcG9uZW50LFxuICAgIEF1dG9jb21wbGV0ZUxpc3RDb21wb25lbnQsXG4gICAgRmlsdGVyQ29tcG9uZW50LFxuICAgIENoZWNrYm94Q29tcG9uZW50LFxuICAgIERhdGV0aW1lQ29tcG9uZW50LFxuICAgIElucHV0Q29tcG9uZW50LFxuICAgIEdlb2xvY2F0aW9uQ29tcG9uZW50LFxuICAgIEx1eFRvb2x0aXBEaXJlY3RpdmUsXG4gICAgTHV4TW9kYWxXaW5kb3dDb21wb25lbnQsXG4gICAgTHV4TW9kYWxCYWNrZHJvcENvbXBvbmVudCxcbiAgICBMdXhCcmVhZGNydW1iQ29tcG9uZW50LFxuICAgIE1hcENvbXBvbmVudCxcbiAgICBTZWxlY3RDb21wb25lbnQsXG4gICAgVG9vbHRpcENvbXBvbmVudCxcbiAgICBQYWdpbmF0aW9uQ29tcG9uZW50LFxuICAgIFJhZGlvZ3JvdXBDb21wb25lbnQsXG4gICAgVm9pY2VSZWNvZ25pdGlvbkRpcmVjdGl2ZVxuICBdLFxuICBlbnRyeUNvbXBvbmVudHM6IFtcbiAgICBMdXhNb2RhbFdpbmRvd0NvbXBvbmVudCxcbiAgICBMdXhNb2RhbEJhY2tkcm9wQ29tcG9uZW50LFxuICAgIFRvb2x0aXBDb21wb25lbnRcbiAgXSxcbiAgcHJvdmlkZXJzOiBbTW9kYWxTZXJ2aWNlLCBUb29sdGlwU2VydmljZSwgV0lORE9XX1BST1ZJREVSU10sXG4gIGltcG9ydHM6IFtcbiAgICBBbmd1bGFyUmVzaXplZEV2ZW50TW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEh0dHBDbGllbnRNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgQXV0b2NvbXBsZXRlTGlzdENvbXBvbmVudCxcbiAgICBGaWx0ZXJDb21wb25lbnQsXG4gICAgQ2hlY2tib3hDb21wb25lbnQsXG4gICAgRGF0ZXRpbWVDb21wb25lbnQsXG4gICAgSW5wdXRDb21wb25lbnQsXG4gICAgR2VvbG9jYXRpb25Db21wb25lbnQsXG4gICAgTHV4VG9vbHRpcERpcmVjdGl2ZSxcbiAgICBMdXhCcmVhZGNydW1iQ29tcG9uZW50LFxuICAgIEx1eEJyZWFkY3J1bWJDb21wb25lbnQsXG4gICAgTWFwQ29tcG9uZW50LFxuICAgIFNlbGVjdENvbXBvbmVudCxcbiAgICBQYWdpbmF0aW9uQ29tcG9uZW50LFxuICAgIFJhZGlvZ3JvdXBDb21wb25lbnQsXG4gICAgVm9pY2VSZWNvZ25pdGlvbkRpcmVjdGl2ZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEx1eE1vZHVsZSB7fVxuIl19