@agorapulse/ui-components 18.0.34 → 18.0.36

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 (25) hide show
  1. package/agorapulse-ui-components-18.0.36.tgz +0 -0
  2. package/checkbox/checkbox.component.d.ts +2 -1
  3. package/directives/checkbox.directive.d.ts +60 -0
  4. package/directives/public_api.d.ts +1 -0
  5. package/esm2022/checkbox/checkbox.component.mjs +11 -4
  6. package/esm2022/directives/checkbox.directive.mjs +442 -0
  7. package/esm2022/directives/public_api.mjs +2 -1
  8. package/esm2022/index.mjs +2 -2
  9. package/esm2022/nav-selector/nav-selector-category/nav-selector-category.component.mjs +3 -3
  10. package/esm2022/nav-selector/nav-selector-group/nav-selector-group.component.mjs +3 -3
  11. package/esm2022/nav-selector/nav-selector-leaf/nav-selector-leaf.component.mjs +3 -3
  12. package/esm2022/nav-selector/nav-selector-leaf-details/nav-selector-leaf-details.component.mjs +3 -3
  13. package/esm2022/nav-selector/utils/nav-selector.filter.mjs +2 -2
  14. package/esm2022/nav-selector/utils/nav-selector.merger.mjs +2 -2
  15. package/fesm2022/agorapulse-ui-components-checkbox.mjs +10 -3
  16. package/fesm2022/agorapulse-ui-components-checkbox.mjs.map +1 -1
  17. package/fesm2022/agorapulse-ui-components-directives.mjs +442 -3
  18. package/fesm2022/agorapulse-ui-components-directives.mjs.map +1 -1
  19. package/fesm2022/agorapulse-ui-components-nav-selector.mjs +10 -10
  20. package/fesm2022/agorapulse-ui-components-nav-selector.mjs.map +1 -1
  21. package/fesm2022/agorapulse-ui-components.mjs +1 -1
  22. package/fesm2022/agorapulse-ui-components.mjs.map +1 -1
  23. package/index.d.ts +1 -1
  24. package/package.json +7 -7
  25. package/agorapulse-ui-components-18.0.34.tgz +0 -0
@@ -0,0 +1,442 @@
1
+ import { apCheck, SymbolComponent, SymbolRegistry } from '@agorapulse/ui-symbol';
2
+ import { booleanAttribute, Directive, ElementRef, EventEmitter, forwardRef, inject, Input, Output, Renderer2, ViewContainerRef, } from '@angular/core';
3
+ import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
4
+ import * as i0 from "@angular/core";
5
+ export const AP_CHECKBOX_DIRECTIVE_CONTROL_VALUE_ACCESSOR = {
6
+ provide: NG_VALUE_ACCESSOR,
7
+ useExisting: forwardRef(() => CheckboxDirective),
8
+ multi: true,
9
+ };
10
+ /*
11
+ Host bindings is important here:
12
+ - This provides encapsulation and reactivity regardless of how the directive is used in templates.
13
+ - It guarantees that properties like checked, disabled, required, and ARIA attributes always reflect
14
+ only the directive's logic, not just consumer bindings.
15
+ - So we need to have host bindings for all the properties that we want to control.
16
+ - We could also use @HostListener.
17
+ */
18
+ export class CheckboxDirective {
19
+ symbolRegistry = inject(SymbolRegistry);
20
+ elementRef = inject((ElementRef));
21
+ renderer = inject(Renderer2);
22
+ viewContainer = inject(ViewContainerRef);
23
+ ariaLabel;
24
+ ariaLabelledby;
25
+ ariaDescribedby;
26
+ disabled = false;
27
+ set indeterminate(indeterminate) {
28
+ if (indeterminate) {
29
+ this._checked = false;
30
+ }
31
+ this._indeterminate = indeterminate;
32
+ const input = this.elementRef.nativeElement;
33
+ if (input) {
34
+ input.indeterminate = indeterminate;
35
+ }
36
+ // Only update visibility if containers are ready
37
+ if (this.checkmarkContainer && this.indeterminateContainer) {
38
+ this.updateCheckmarkVisibility();
39
+ }
40
+ }
41
+ get indeterminate() {
42
+ return this._indeterminate;
43
+ }
44
+ set checked(checked) {
45
+ this._checked = checked;
46
+ // Only update visibility if containers are ready
47
+ if (this.checkmarkContainer && this.indeterminateContainer) {
48
+ this.updateCheckmarkVisibility();
49
+ }
50
+ }
51
+ get checked() {
52
+ return this._checked;
53
+ }
54
+ required = false;
55
+ set name(name) {
56
+ this._name = name;
57
+ }
58
+ get name() {
59
+ return this._name;
60
+ }
61
+ // eslint-disable-next-line @angular-eslint/no-output-native
62
+ change = new EventEmitter();
63
+ _checked = false;
64
+ _indeterminate = false;
65
+ _name = '';
66
+ _controlValueAccessorChangeFn = () => { };
67
+ _onTouched = () => { };
68
+ listeners = [];
69
+ styleElement;
70
+ wrapper;
71
+ checkmarkContainer;
72
+ indeterminateContainer;
73
+ symbolComponent;
74
+ ngOnInit() {
75
+ this.symbolRegistry.registerSymbols([apCheck]);
76
+ this.createCheckboxStructure();
77
+ this.setupEventListeners();
78
+ }
79
+ ngOnDestroy() {
80
+ this.listeners.forEach(unlisten => unlisten());
81
+ if (this.styleElement && this.styleElement.parentNode) {
82
+ this.styleElement.parentNode.removeChild(this.styleElement);
83
+ }
84
+ if (this.symbolComponent) {
85
+ this.symbolComponent.destroy();
86
+ }
87
+ if (this.checkmarkContainer && this.checkmarkContainer.parentNode) {
88
+ this.checkmarkContainer.parentNode.removeChild(this.checkmarkContainer);
89
+ }
90
+ if (this.indeterminateContainer && this.indeterminateContainer.parentNode) {
91
+ this.indeterminateContainer.parentNode.removeChild(this.indeterminateContainer);
92
+ }
93
+ // Move input back out of wrapper and remove wrapper
94
+ if (this.wrapper && this.wrapper.parentNode) {
95
+ const input = this.elementRef.nativeElement;
96
+ this.renderer.insertBefore(this.wrapper.parentNode, input, this.wrapper);
97
+ this.wrapper.parentNode.removeChild(this.wrapper);
98
+ }
99
+ }
100
+ createCheckboxStructure() {
101
+ const input = this.elementRef.nativeElement;
102
+ const parent = input.parentElement;
103
+ // Hot take - Input doesn't need positioning since it will be wrapped
104
+ // Make input's parent use inline-flex for alignment
105
+ if (parent) {
106
+ this.renderer.setStyle(parent, 'display', 'inline-flex');
107
+ this.renderer.setStyle(parent, 'align-items', 'center');
108
+ this.renderer.setStyle(parent, 'gap', 'var(--ref-spacing-xxs)');
109
+ }
110
+ this.renderer.addClass(input, 'ap-checkbox-styled');
111
+ this.checkmarkContainer = this.createOverlayContainer('ap-checkbox-checkmark');
112
+ this.wrapper = this.renderer.createElement('span');
113
+ this.renderer.setStyle(this.wrapper, 'position', 'relative');
114
+ this.renderer.setStyle(this.wrapper, 'display', 'inline-flex');
115
+ this.renderer.setStyle(this.wrapper, 'align-items', 'center');
116
+ this.renderer.setStyle(this.wrapper, 'vertical-align', 'middle');
117
+ this.renderer.insertBefore(parent, this.wrapper, input);
118
+ this.renderer.appendChild(this.wrapper, input);
119
+ this.renderer.appendChild(this.wrapper, this.checkmarkContainer);
120
+ this.indeterminateContainer = this.createOverlayContainer('ap-checkbox-indeterminate');
121
+ this.renderer.appendChild(this.wrapper, this.indeterminateContainer);
122
+ this.createCheckmarkSymbol();
123
+ this.createIndeterminateBar();
124
+ this.applyCheckboxStyles();
125
+ this.updateCheckmarkVisibility();
126
+ }
127
+ createOverlayContainer(className) {
128
+ const container = this.renderer.createElement('span');
129
+ this.renderer.addClass(container, className);
130
+ this.renderer.setStyle(container, 'position', 'absolute');
131
+ this.renderer.setStyle(container, 'top', '50%');
132
+ this.renderer.setStyle(container, 'left', '50%');
133
+ this.renderer.setStyle(container, 'transform', 'translate(-50%, -50%)');
134
+ this.renderer.setStyle(container, 'width', 'auto');
135
+ this.renderer.setStyle(container, 'height', 'auto');
136
+ this.renderer.setStyle(container, 'display', 'flex');
137
+ this.renderer.setStyle(container, 'justify-content', 'center');
138
+ this.renderer.setStyle(container, 'align-items', 'center');
139
+ this.renderer.setStyle(container, 'pointer-events', 'none');
140
+ this.renderer.setStyle(container, 'opacity', '0');
141
+ this.renderer.setStyle(container, 'z-index', '1');
142
+ return container;
143
+ }
144
+ createCheckmarkSymbol() {
145
+ // Create the symbol component
146
+ this.symbolComponent = this.viewContainer.createComponent(SymbolComponent);
147
+ // Set inputs using setInput method for signal-based inputs
148
+ this.symbolComponent.setInput('symbolId', 'check');
149
+ this.symbolComponent.setInput('color', 'white');
150
+ this.symbolComponent.setInput('size', 10);
151
+ // Append the symbol to our checkmark container
152
+ this.renderer.appendChild(this.checkmarkContainer, this.symbolComponent.location.nativeElement);
153
+ }
154
+ createIndeterminateBar() {
155
+ // Create the indeterminate bar element exactly like the component
156
+ const bar = this.renderer.createElement('span');
157
+ this.renderer.setStyle(bar, 'height', '1.5px');
158
+ this.renderer.setStyle(bar, 'background', 'var(--ref-color-white)');
159
+ this.renderer.setStyle(bar, 'width', '8px');
160
+ // Append the bar to the indeterminate container
161
+ this.renderer.appendChild(this.indeterminateContainer, bar);
162
+ }
163
+ updateCheckmarkVisibility() {
164
+ if (this.checkmarkContainer) {
165
+ const opacity = this._checked && !this._indeterminate ? '1' : '0';
166
+ this.renderer.setStyle(this.checkmarkContainer, 'opacity', opacity);
167
+ }
168
+ if (this.indeterminateContainer) {
169
+ const opacity = this._indeterminate && !this._checked ? '1' : '0';
170
+ this.renderer.setStyle(this.indeterminateContainer, 'opacity', opacity);
171
+ }
172
+ }
173
+ setupEventListeners() {
174
+ const input = this.elementRef.nativeElement;
175
+ // Input change listener (native checkbox change)
176
+ const changeListener = this.renderer.listen(input, 'change', () => {
177
+ this.onValueChange();
178
+ });
179
+ this.listeners.push(changeListener);
180
+ // Listen for label clicks to ensure focus is maintained
181
+ const parent = input.parentElement;
182
+ if (parent) {
183
+ const labelClickListener = this.renderer.listen(parent, 'click', (event) => {
184
+ const target = event.target;
185
+ // If clicking on a label that targets our input, ensure focus
186
+ if (target.tagName === 'LABEL' && target.getAttribute('for') === this.name) {
187
+ // Small delay to ensure the label click is processed first
188
+ setTimeout(() => {
189
+ input.focus();
190
+ }, 0);
191
+ }
192
+ });
193
+ this.listeners.push(labelClickListener);
194
+ }
195
+ }
196
+ applyCheckboxStyles() {
197
+ // Style the input directly without moving DOM elements
198
+ const styles = `
199
+ /* Complete reset and custom styling for our checkbox */
200
+ input[type="checkbox"].ap-checkbox-styled {
201
+ /* Targeted reset of problematic properties */
202
+ appearance: none !important;
203
+ -webkit-appearance: none !important;
204
+ -moz-appearance: none !important;
205
+
206
+ /* Our custom styling - use !important to override any global styles */
207
+ display: inline-block !important;
208
+ width: 16px !important;
209
+ height: 16px !important;
210
+ min-width: 16px !important;
211
+ min-height: 16px !important;
212
+ margin: 0 !important;
213
+ padding: 0 !important;
214
+ border: 1px solid var(--ref-color-grey-60);
215
+ border-radius: var(--sys-border-radius-sm);
216
+ background: var(--ref-color-white);
217
+ background-color: var(--ref-color-white);
218
+ box-sizing: border-box;
219
+ position: relative;
220
+ cursor: pointer;
221
+ vertical-align: middle;
222
+
223
+ /* Ensure no other styles can interfere */
224
+ box-shadow: none;
225
+ text-decoration: none;
226
+ font: inherit;
227
+ color: inherit;
228
+ letter-spacing: normal;
229
+ word-spacing: normal;
230
+ text-transform: none;
231
+ text-indent: 0;
232
+ text-shadow: none;
233
+ text-align: start;
234
+ }
235
+
236
+ /* Hover state */
237
+ input[type="checkbox"].ap-checkbox-styled:hover {
238
+ border-color: var(--ref-color-grey-80);
239
+ }
240
+
241
+ /* Active/pressed state */
242
+ input[type="checkbox"].ap-checkbox-styled:active {
243
+ border-color: var(--ref-color-grey-100);
244
+ }
245
+
246
+ /* Checked state */
247
+ input[type="checkbox"].ap-checkbox-styled:checked {
248
+ background: var(--ref-color-electric-blue-100);
249
+ border-color: var(--ref-color-electric-blue-100);
250
+ }
251
+
252
+ /* Checked hover state */
253
+ input[type="checkbox"].ap-checkbox-styled:checked:hover {
254
+ background: var(--ref-color-electric-blue-80);
255
+ border-color: var(--ref-color-electric-blue-100);
256
+ }
257
+
258
+ /* Checked active/pressed state */
259
+ input[type="checkbox"].ap-checkbox-styled:checked:active {
260
+ background: var(--ref-color-electric-blue-60);
261
+ border-color: var(--ref-color-electric-blue-100);
262
+ }
263
+
264
+ /* Indeterminate state */
265
+ input[type="checkbox"].ap-checkbox-styled:indeterminate {
266
+ background: var(--ref-color-electric-blue-100);
267
+ border-color: var(--ref-color-electric-blue-100);
268
+ }
269
+
270
+ /* Disabled state */
271
+ input[type="checkbox"].ap-checkbox-styled:disabled {
272
+ border-color: var(--ref-color-grey-20);
273
+ background: var(--ref-color-grey-10);
274
+ cursor: default;
275
+ }
276
+
277
+ input[type="checkbox"].ap-checkbox-styled:disabled:checked {
278
+ background: var(--ref-color-grey-20);
279
+ }
280
+
281
+ /* Focus state - only show on hover-capable devices like the component */
282
+ @media (hover: hover) {
283
+ input[type="checkbox"].ap-checkbox-styled:focus:not(.disabled) {
284
+ outline: 3px solid var(--ref-color-electric-blue-100) !important;
285
+ outline-offset: 1px !important;
286
+ }
287
+ }
288
+
289
+ /* Label styling - targets labels that follow our wrapper containing styled checkboxes */
290
+ span:has(input[type="checkbox"].ap-checkbox-styled) + label {
291
+ display: flex;
292
+ align-items: center;
293
+ font-family: var(--comp-forms-label-font-family);
294
+ font-size: var(--comp-forms-label-size);
295
+ font-weight: var(--comp-forms-label-font-weight);
296
+ line-height: var(--comp-forms-label-line-height);
297
+ color: var(--comp-forms-label-text-color);
298
+ }
299
+
300
+ /* Empty label styling */
301
+ span:has(input[type="checkbox"].ap-checkbox-styled) + label:empty {
302
+ display: none;
303
+ }
304
+
305
+ /* Disabled label styling */
306
+ span:has(input[type="checkbox"].ap-checkbox-styled:disabled) + label {
307
+ color: var(--ref-color-grey-60);
308
+ }
309
+
310
+ /* Label hover styling */
311
+ span:has(input[type="checkbox"].ap-checkbox-styled) + label:hover:not(.disabled) {
312
+ cursor: pointer;
313
+ }
314
+
315
+ /* Disabled label hover */
316
+ span:has(input[type="checkbox"].ap-checkbox-styled:disabled) + label:hover {
317
+ cursor: default;
318
+ }
319
+ `;
320
+ // Create and append style element
321
+ this.styleElement = this.renderer.createElement('style');
322
+ this.renderer.appendChild(this.styleElement, this.renderer.createText(styles));
323
+ this.renderer.appendChild(document.head, this.styleElement);
324
+ }
325
+ onBlur() {
326
+ this._onTouched();
327
+ }
328
+ onValueChange() {
329
+ if (!this.disabled) {
330
+ const input = this.elementRef.nativeElement;
331
+ if (this._indeterminate) {
332
+ // When indeterminate, clicking should go to checked state
333
+ this._checked = true;
334
+ this._indeterminate = false;
335
+ input.checked = true;
336
+ input.indeterminate = false;
337
+ }
338
+ else {
339
+ // Normal toggle behavior
340
+ this._checked = input.checked;
341
+ }
342
+ this.updateCheckmarkVisibility();
343
+ this.change.emit(this._checked);
344
+ this._controlValueAccessorChangeFn(this._checked);
345
+ }
346
+ }
347
+ // ControlValueAccessor implementation
348
+ writeValue(value) {
349
+ this._checked = value;
350
+ const input = this.elementRef.nativeElement;
351
+ input.checked = value;
352
+ // Ensure indeterminate state is properly set
353
+ input.indeterminate = this._indeterminate;
354
+ this.updateCheckmarkVisibility();
355
+ }
356
+ registerOnChange(fn) {
357
+ this._controlValueAccessorChangeFn = fn;
358
+ }
359
+ registerOnTouched(fn) {
360
+ this._onTouched = fn;
361
+ }
362
+ setDisabledState(isDisabled) {
363
+ this.disabled = isDisabled;
364
+ const input = this.elementRef.nativeElement;
365
+ input.disabled = isDisabled;
366
+ }
367
+ validate() {
368
+ const isNotValid = !this._checked && this.required;
369
+ return (isNotValid && {
370
+ invalid: true,
371
+ });
372
+ }
373
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CheckboxDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
374
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.9", type: CheckboxDirective, isStandalone: true, selector: "input[type=\"checkbox\"][apCheckbox]", inputs: { ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"], ariaDescribedby: ["aria-describedby", "ariaDescribedby"], disabled: ["disabled", "disabled", booleanAttribute], indeterminate: ["indeterminate", "indeterminate", booleanAttribute], checked: "checked", required: ["required", "required", booleanAttribute], name: "name" }, outputs: { change: "change" }, host: { listeners: { "blur": "onBlur()" }, properties: { "disabled": "disabled", "required": "required", "checked": "checked", "attr.aria-label": "ariaLabel", "attr.aria-labelledby": "ariaLabelledby", "attr.aria-describedby": "ariaDescribedby", "attr.data-test": "name", "id": "name" } }, providers: [
375
+ AP_CHECKBOX_DIRECTIVE_CONTROL_VALUE_ACCESSOR,
376
+ {
377
+ provide: NG_VALIDATORS,
378
+ useExisting: CheckboxDirective,
379
+ multi: true,
380
+ },
381
+ ], ngImport: i0 });
382
+ }
383
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CheckboxDirective, decorators: [{
384
+ type: Directive,
385
+ args: [{
386
+ selector: 'input[type="checkbox"][apCheckbox]',
387
+ standalone: true,
388
+ providers: [
389
+ AP_CHECKBOX_DIRECTIVE_CONTROL_VALUE_ACCESSOR,
390
+ {
391
+ provide: NG_VALIDATORS,
392
+ useExisting: CheckboxDirective,
393
+ multi: true,
394
+ },
395
+ ],
396
+ host: {
397
+ '(blur)': 'onBlur()',
398
+ '[disabled]': 'disabled',
399
+ '[required]': 'required',
400
+ '[checked]': 'checked',
401
+ '[attr.aria-label]': 'ariaLabel',
402
+ '[attr.aria-labelledby]': 'ariaLabelledby',
403
+ '[attr.aria-describedby]': 'ariaDescribedby',
404
+ '[attr.data-test]': 'name',
405
+ '[id]': 'name',
406
+ },
407
+ }]
408
+ }], propDecorators: { ariaLabel: [{
409
+ type: Input,
410
+ args: ['aria-label']
411
+ }], ariaLabelledby: [{
412
+ type: Input,
413
+ args: ['aria-labelledby']
414
+ }], ariaDescribedby: [{
415
+ type: Input,
416
+ args: ['aria-describedby']
417
+ }], disabled: [{
418
+ type: Input,
419
+ args: [{
420
+ transform: booleanAttribute,
421
+ }]
422
+ }], indeterminate: [{
423
+ type: Input,
424
+ args: [{
425
+ transform: booleanAttribute,
426
+ }]
427
+ }], checked: [{
428
+ type: Input
429
+ }], required: [{
430
+ type: Input,
431
+ args: [{
432
+ transform: booleanAttribute,
433
+ }]
434
+ }], name: [{
435
+ type: Input,
436
+ args: [{
437
+ required: true,
438
+ }]
439
+ }], change: [{
440
+ type: Output
441
+ }] } });
442
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy91aS1jb21wb25lbnRzL2RpcmVjdGl2ZXMvc3JjL2NoZWNrYm94LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRixPQUFPLEVBQ0gsZ0JBQWdCLEVBRWhCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRXhGLE1BQU0sQ0FBQyxNQUFNLDRDQUE0QyxHQUFHO0lBQ3hELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztJQUNoRCxLQUFLLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFFRjs7Ozs7OztFQU9FO0FBd0JGLE1BQU0sT0FBTyxpQkFBaUI7SUFDVCxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hDLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQSxVQUE0QixDQUFBLENBQUMsQ0FBQztJQUNsRCxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdCLGFBQWEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUVyQyxTQUFTLENBQVU7SUFDZCxjQUFjLENBQVU7SUFDdkIsZUFBZSxDQUFVO0lBS3BELFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFakIsSUFHSSxhQUFhLENBQUMsYUFBc0I7UUFDcEMsSUFBSSxhQUFhLEVBQUUsQ0FB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QkFDeEIsWUFBWSxFQUFFLFVBQVU7d0JBQ3hCLFdBQVcsRUFBRSxTQUFTO3dCQUN0QixtQkFBbUIsRUFBRSxXQUFXO3dCQUNoQyx3QkFBd0IsRUFBRSxnQkFBZ0I7d0JBQzFDLHlCQUF5QixFQUFFLGlCQUFpQjt3QkFDNUMsa0JBQWtCLEVBQUUsTUFBTTt3QkFDMUIsTUFBTSxFQUFFLE1BQU07cUJBQ2pCO2lCQUNKOzhCQU93QixTQUFTO3NCQUE3QixLQUFLO3VCQUFDLFlBQVk7Z0JBQ08sY0FBYztzQkFBdkMsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBQ0csZUFBZTtzQkFBekMsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBS3pCLFFBQVE7c0JBSFAsS0FBSzt1QkFBQzt3QkFDSCxTQUFTLEVBQUUsZ0JBQWdCO3FCQUM5QjtnQkFNRyxhQUFhO3NCQUhoQixLQUFLO3VCQUFDO3dCQUNILFNBQVMsRUFBRSxnQkFBZ0I7cUJBQzlCO2dCQXFCRyxPQUFPO3NCQURWLEtBQUs7Z0JBZ0JOLFFBQVE7c0JBSFAsS0FBSzt1QkFBQzt3QkFDSCxTQUFTLEVBQUUsZ0JBQWdCO3FCQUM5QjtnQkFNRyxJQUFJO3NCQUhQLEtBQUs7dUJBQUM7d0JBQ0gsUUFBUSxFQUFFLElBQUk7cUJBQ2pCO2dCQVNrQixNQUFNO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXBDaGVjaywgU3ltYm9sQ29tcG9uZW50LCBTeW1ib2xSZWdpc3RyeSB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLXN5bWJvbCc7XG5pbXBvcnQge1xuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBjb25zdCBBUF9DSEVDS0JPWF9ESVJFQ1RJVkVfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUiA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDaGVja2JveERpcmVjdGl2ZSksXG4gICAgbXVsdGk6IHRydWUsXG59O1xuXG4vKlxuICAgIEhvc3QgYmluZGluZ3MgaXMgaW1wb3J0YW50IGhlcmU6XG4gICAgLSBUaGlzIHByb3ZpZGVzIGVuY2Fwc3VsYXRpb24gYW5kIHJlYWN0aXZpdHkgcmVnYXJkbGVzcyBvZiBob3cgdGhlIGRpcmVjdGl2ZSBpcyB1c2VkIGluIHRlbXBsYXRlcy5cbiAgICAtIEl0IGd1YXJhbnRlZXMgdGhhdCBwcm9wZXJ0aWVzIGxpa2UgY2hlY2tlZCwgZGlzYWJsZWQsIHJlcXVpcmVkLCBhbmQgQVJJQSBhdHRyaWJ1dGVzIGFsd2F5cyByZWZsZWN0XG4gICAgb25seSB0aGUgZGlyZWN0aXZlJ3MgbG9naWMsIG5vdCBqdXN0IGNvbnN1bWVyIGJpbmRpbmdzLlxuICAgIC0gU28gd2UgbmVlZCB0byBoYXZlIGhvc3QgYmluZGluZ3MgZm9yIGFsbCB0aGUgcHJvcGVydGllcyB0aGF0IHdlIHdhbnQgdG8gY29udHJvbC5cbiAgICAtIFdlIGNvdWxkIGFsc28gdXNlIEBIb3N0TGlzdGVuZXIuXG4qL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl1bYXBDaGVja2JveF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIEFQX0NIRUNLQk9YX0RJUkVDVElWRV9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IENoZWNrYm94RGlyZWN0aXZlLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICcoYmx1ciknOiAnb25CbHVyKCknLFxuICAgICAgICAnW2Rpc2FibGVkXSc6ICdkaXNhYmxlZCcsXG4gICAgICAgICdbcmVxdWlyZWRdJzogJ3JlcXVpcmVkJyxcbiAgICAgICAgJ1tjaGVja2VkXSc6ICdjaGVja2VkJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtbGFiZWxdJzogJ2FyaWFMYWJlbCcsXG4gICAgICAgICdbYXR0ci5hcmlhLWxhYmVsbGVkYnldJzogJ2FyaWFMYWJlbGxlZGJ5JyxcbiAgICAgICAgJ1thdHRyLmFyaWEtZGVzY3JpYmVkYnldJzogJ2FyaWFEZXNjcmliZWRieScsXG4gICAgICAgICdbYXR0ci5kYXRhLXRlc3RdJzogJ25hbWUnLFxuICAgICAgICAnW2lkXSc6ICduYW1lJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBDaGVja2JveERpcmVjdGl2ZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzeW1ib2xSZWdpc3RyeSA9IGluamVjdChTeW1ib2xSZWdpc3RyeSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXIgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cbiAgICBASW5wdXQoJ2FyaWEtbGFiZWwnKSBhcmlhTGFiZWw/OiBzdHJpbmc7XG4gICAgQElucHV0KCdhcmlhLWxhYmVsbGVkYnknKSBhcmlhTGFiZWxsZWRieT86IHN0cmluZztcbiAgICBASW5wdXQoJ2FyaWEtZGVzY3JpYmVkYnknKSBhcmlhRGVzY3JpYmVkYnk/OiBzdHJpbmc7XG4gICAgXG4gICAgQElucHV0KHtcbiAgICAgICAgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLFxuICAgIH0pXG4gICAgZGlzYWJsZWQgPSBmYWxzZTtcbiAgICBcbiAgICBASW5wdXQoe1xuICAgICAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgfSlcbiAgICBzZXQgaW5kZXRlcm1pbmF0ZShpbmRldGVybWluYXRlOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChpbmRldGVybWluYXRlKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGVja2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faW5kZXRlcm1pbmF0ZSA9IGluZGV0ZXJtaW5hdGU7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChpbnB1dCkge1xuICAgICAgICAgICAgaW5wdXQuaW5kZXRlcm1pbmF0ZSA9IGluZGV0ZXJtaW5hdGU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gT25seSB1cGRhdGUgdmlzaWJpbGl0eSBpZiBjb250YWluZXJzIGFyZSByZWFkeVxuICAgICAgICBpZiAodGhpcy5jaGVja21hcmtDb250YWluZXIgJiYgdGhpcy5pbmRldGVybWluYXRlQ29udGFpbmVyKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNoZWNrbWFya1Zpc2liaWxpdHkoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBpbmRldGVybWluYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5kZXRlcm1pbmF0ZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBcbiAgICBzZXQgY2hlY2tlZChjaGVja2VkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2NoZWNrZWQgPSBjaGVja2VkO1xuICAgICAgICAvLyBPbmx5IHVwZGF0ZSB2aXNpYmlsaXR5IGlmIGNvbnRhaW5lcnMgYXJlIHJlYWR5XG4gICAgICAgIGlmICh0aGlzLmNoZWNrbWFya0NvbnRhaW5lciAmJiB0aGlzLmluZGV0ZXJtaW5hdGVDb250YWluZXIpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hlY2ttYXJrVmlzaWJpbGl0eSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIGdldCBjaGVja2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hlY2tlZDtcbiAgICB9XG5cbiAgICBASW5wdXQoe1xuICAgICAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgfSlcbiAgICByZXF1aXJlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KHtcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSlcbiAgICBzZXQgbmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fbmFtZSA9IG5hbWU7XG4gICAgfVxuICAgIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICAgIEBPdXRwdXQoKSByZWFkb25seSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIHByaXZhdGUgX2NoZWNrZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9pbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfbmFtZSA9ICcnO1xuICAgIHByaXZhdGUgX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm46ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZCA9ICgpID0+IHt9O1xuICAgIHByaXZhdGUgX29uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICAgIFxuICAgIHByaXZhdGUgbGlzdGVuZXJzOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xuICAgIHByaXZhdGUgc3R5bGVFbGVtZW50ITogSFRNTFN0eWxlRWxlbWVudDtcbiAgICBwcml2YXRlIHdyYXBwZXIhOiBIVE1MRWxlbWVudDtcbiAgICBwcml2YXRlIGNoZWNrbWFya0NvbnRhaW5lciE6IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgaW5kZXRlcm1pbmF0ZUNvbnRhaW5lciE6IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgc3ltYm9sQ29tcG9uZW50PzogQ29tcG9uZW50UmVmPFN5bWJvbENvbXBvbmVudD47XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5zeW1ib2xSZWdpc3RyeS5yZWdpc3RlclN5bWJvbHMoW2FwQ2hlY2tdKTtcbiAgICAgICAgdGhpcy5jcmVhdGVDaGVja2JveFN0cnVjdHVyZSgpO1xuICAgICAgICB0aGlzLnNldHVwRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5saXN0ZW5lcnMuZm9yRWFjaCh1bmxpc3RlbiA9PiB1bmxpc3RlbigpKTtcbiAgICAgICAgaWYgKHRoaXMuc3R5bGVFbGVtZW50ICYmIHRoaXMuc3R5bGVFbGVtZW50LnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5zdHlsZUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnN5bWJvbENvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy5zeW1ib2xDb21wb25lbnQuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNoZWNrbWFya0NvbnRhaW5lciAmJiB0aGlzLmNoZWNrbWFya0NvbnRhaW5lci5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrbWFya0NvbnRhaW5lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuY2hlY2ttYXJrQ29udGFpbmVyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pbmRldGVybWluYXRlQ29udGFpbmVyICYmIHRoaXMuaW5kZXRlcm1pbmF0ZUNvbnRhaW5lci5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVDb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmluZGV0ZXJtaW5hdGVDb250YWluZXIpO1xuICAgICAgICB9XG4gICAgICAgIC8vIE1vdmUgaW5wdXQgYmFjayBvdXQgb2Ygd3JhcHBlciBhbmQgcmVtb3ZlIHdyYXBwZXJcbiAgICAgICAgaWYgKHRoaXMud3JhcHBlciAmJiB0aGlzLndyYXBwZXIucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuaW5zZXJ0QmVmb3JlKHRoaXMud3JhcHBlci5wYXJlbnROb2RlLCBpbnB1dCwgdGhpcy53cmFwcGVyKTtcbiAgICAgICAgICAgIHRoaXMud3JhcHBlci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMud3JhcHBlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUNoZWNrYm94U3RydWN0dXJlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBwYXJlbnQgPSBpbnB1dC5wYXJlbnRFbGVtZW50O1xuICAgICAgICBcbiAgICAgICAgLy8gSG90IHRha2UgLSBJbnB1dCBkb2Vzbid0IG5lZWQgcG9zaXRpb25pbmcgc2luY2UgaXQgd2lsbCBiZSB3cmFwcGVkXG4gICAgICAgIFxuICAgICAgICAvLyBNYWtlIGlucHV0J3MgcGFyZW50IHVzZSBpbmxpbmUtZmxleCBmb3IgYWxpZ25tZW50XG4gICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUocGFyZW50LCAnZGlzcGxheScsICdpbmxpbmUtZmxleCcpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShwYXJlbnQsICdhbGlnbi1pdGVtcycsICdjZW50ZXInKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUocGFyZW50LCAnZ2FwJywgJ3ZhcigtLXJlZi1zcGFjaW5nLXh4cyknKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhpbnB1dCwgJ2FwLWNoZWNrYm94LXN0eWxlZCcpO1xuICAgICAgICBcbiAgICAgICAgdGhpcy5jaGVja21hcmtDb250YWluZXIgPSB0aGlzLmNyZWF0ZU92ZXJsYXlDb250YWluZXIoJ2FwLWNoZWNrYm94LWNoZWNrbWFyaycpO1xuICAgICAgICBcbiAgICAgICAgdGhpcy53cmFwcGVyID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy53cmFwcGVyLCAncG9zaXRpb24nLCAncmVsYXRpdmUnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLndyYXBwZXIsICdkaXNwbGF5JywgJ2lubGluZS1mbGV4Jyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy53cmFwcGVyLCAnYWxpZ24taXRlbXMnLCAnY2VudGVyJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy53cmFwcGVyLCAndmVydGljYWwtYWxpZ24nLCAnbWlkZGxlJyk7XG4gICAgICAgIFxuICAgICAgICB0aGlzLnJlbmRlcmVyLmluc2VydEJlZm9yZShwYXJlbnQsIHRoaXMud3JhcHBlciwgaW5wdXQpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMud3JhcHBlciwgaW5wdXQpO1xuICAgICAgICBcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLndyYXBwZXIsIHRoaXMuY2hlY2ttYXJrQ29udGFpbmVyKTtcbiAgICAgICAgXG4gICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZUNvbnRhaW5lciA9IHRoaXMuY3JlYXRlT3ZlcmxheUNvbnRhaW5lcignYXAtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZScpO1xuICAgICAgICBcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLndyYXBwZXIsIHRoaXMuaW5kZXRlcm1pbmF0ZUNvbnRhaW5lcik7XG4gICAgICAgIFxuICAgICAgICB0aGlzLmNyZWF0ZUNoZWNrbWFya1N5bWJvbCgpO1xuICAgICAgICB0aGlzLmNyZWF0ZUluZGV0ZXJtaW5hdGVCYXIoKTtcbiAgICAgICAgXG4gICAgICAgIHRoaXMuYXBwbHlDaGVja2JveFN0eWxlcygpO1xuICAgICAgICBcbiAgICAgICAgdGhpcy51cGRhdGVDaGVja21hcmtWaXNpYmlsaXR5KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVPdmVybGF5Q29udGFpbmVyKGNsYXNzTmFtZTogc3RyaW5nKTogSFRNTEVsZW1lbnQge1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhjb250YWluZXIsIGNsYXNzTmFtZSk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoY29udGFpbmVyLCAncG9zaXRpb24nLCAnYWJzb2x1dGUnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShjb250YWluZXIsICd0b3AnLCAnNTAlJyk7IFxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGNvbnRhaW5lciwgJ2xlZnQnLCAnNTAlJyk7ICAgXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoY29udGFpbmVyLCAndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZSgtNTAlLCAtNTAlKScpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGNvbnRhaW5lciwgJ3dpZHRoJywgJ2F1dG8nKTsgXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoY29udGFpbmVyLCAnaGVpZ2h0JywgJ2F1dG8nKTsgXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoY29udGFpbmVyLCAnZGlzcGxheScsICdmbGV4Jyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoY29udGFpbmVyLCAnanVzdGlmeS1jb250ZW50JywgJ2NlbnRlcicpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGNvbnRhaW5lciwgJ2FsaWduLWl0ZW1zJywgJ2NlbnRlcicpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGNvbnRhaW5lciwgJ3BvaW50ZXItZXZlbnRzJywgJ25vbmUnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShjb250YWluZXIsICdvcGFjaXR5JywgJzAnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShjb250YWluZXIsICd6LWluZGV4JywgJzEnKTtcbiAgICAgICAgcmV0dXJuIGNvbnRhaW5lcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUNoZWNrbWFya1N5bWJvbCgpOiB2b2lkIHtcbiAgICAgICAgLy8gQ3JlYXRlIHRoZSBzeW1ib2wgY29tcG9uZW50XG4gICAgICAgIHRoaXMuc3ltYm9sQ29tcG9uZW50ID0gdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChTeW1ib2xDb21wb25lbnQpO1xuICAgICAgICBcbiAgICAgICAgLy8gU2V0IGlucHV0cyB1c2luZyBzZXRJbnB1dCBtZXRob2QgZm9yIHNpZ25hbC1iYXNlZCBpbnB1dHNcbiAgICAgICAgdGhpcy5zeW1ib2xDb21wb25lbnQuc2V0SW5wdXQoJ3N5bWJvbElkJywgJ2NoZWNrJyk7XG4gICAgICAgIHRoaXMuc3ltYm9sQ29tcG9uZW50LnNldElucHV0KCdjb2xvcicsICd3aGl0ZScpO1xuICAgICAgICB0aGlzLnN5bWJvbENvbXBvbmVudC5zZXRJbnB1dCgnc2l6ZScsIDEwKTtcbiAgICAgICAgXG4gICAgICAgIC8vIEFwcGVuZCB0aGUgc3ltYm9sIHRvIG91ciBjaGVja21hcmsgY29udGFpbmVyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5jaGVja21hcmtDb250YWluZXIsIHRoaXMuc3ltYm9sQ29tcG9uZW50LmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlSW5kZXRlcm1pbmF0ZUJhcigpOiB2b2lkIHtcbiAgICAgICAgLy8gQ3JlYXRlIHRoZSBpbmRldGVybWluYXRlIGJhciBlbGVtZW50IGV4YWN0bHkgbGlrZSB0aGUgY29tcG9uZW50XG4gICAgICAgIGNvbnN0IGJhciA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGJhciwgJ2hlaWdodCcsICcxLjVweCcpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGJhciwgJ2JhY2tncm91bmQnLCAndmFyKC0tcmVmLWNvbG9yLXdoaXRlKScpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGJhciwgJ3dpZHRoJywgJzhweCcpO1xuICAgICAgICBcbiAgICAgICAgLy8gQXBwZW5kIHRoZSBiYXIgdG8gdGhlIGluZGV0ZXJtaW5hdGUgY29udGFpbmVyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5pbmRldGVybWluYXRlQ29udGFpbmVyLCBiYXIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQ2hlY2ttYXJrVmlzaWJpbGl0eSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY2hlY2ttYXJrQ29udGFpbmVyKSB7XG4gICAgICAgICAgICBjb25zdCBvcGFjaXR5ID0gdGhpcy5fY2hlY2tlZCAmJiAhdGhpcy5faW5kZXRlcm1pbmF0ZSA/ICcxJyA6ICcwJztcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5jaGVja21hcmtDb250YWluZXIsICdvcGFjaXR5Jywgb3BhY2l0eSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaW5kZXRlcm1pbmF0ZUNvbnRhaW5lcikge1xuICAgICAgICAgICAgY29uc3Qgb3BhY2l0eSA9IHRoaXMuX2luZGV0ZXJtaW5hdGUgJiYgIXRoaXMuX2NoZWNrZWQgPyAnMScgOiAnMCc7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaW5kZXRlcm1pbmF0ZUNvbnRhaW5lciwgJ29wYWNpdHknLCBvcGFjaXR5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgXG4gICAgICAgIC8vIElucHV0IGNoYW5nZSBsaXN0ZW5lciAobmF0aXZlIGNoZWNrYm94IGNoYW5nZSlcbiAgICAgICAgY29uc3QgY2hhbmdlTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihpbnB1dCwgJ2NoYW5nZScsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5saXN0ZW5lcnMucHVzaChjaGFuZ2VMaXN0ZW5lcik7XG4gICAgICAgIFxuICAgICAgICAvLyBMaXN0ZW4gZm9yIGxhYmVsIGNsaWNrcyB0byBlbnN1cmUgZm9jdXMgaXMgbWFpbnRhaW5lZFxuICAgICAgICBjb25zdCBwYXJlbnQgPSBpbnB1dC5wYXJlbnRFbGVtZW50O1xuICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICBjb25zdCBsYWJlbENsaWNrTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihwYXJlbnQsICdjbGljaycsIChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgICAgICAvLyBJZiBjbGlja2luZyBvbiBhIGxhYmVsIHRoYXQgdGFyZ2V0cyBvdXIgaW5wdXQsIGVuc3VyZSBmb2N1c1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQudGFnTmFtZSA9PT0gJ0xBQkVMJyAmJiB0YXJnZXQuZ2V0QXR0cmlidXRlKCdmb3InKSA9PT0gdGhpcy5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNtYWxsIGRlbGF5IHRvIGVuc3VyZSB0aGUgbGFiZWwgY2xpY2sgaXMgcHJvY2Vzc2VkIGZpcnN0XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmxpc3RlbmVycy5wdXNoKGxhYmVsQ2xpY2tMaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGx5Q2hlY2tib3hTdHlsZXMoKTogdm9pZCB7XG4gICAgICAgIC8vIFN0eWxlIHRoZSBpbnB1dCBkaXJlY3RseSB3aXRob3V0IG1vdmluZyBET00gZWxlbWVudHNcbiAgICAgICAgY29uc3Qgc3R5bGVzID0gYFxuICAgICAgICAgICAgLyogQ29tcGxldGUgcmVzZXQgYW5kIGN1c3RvbSBzdHlsaW5nIGZvciBvdXIgY2hlY2tib3ggKi9cbiAgICAgICAgICAgIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXS5hcC1jaGVja2JveC1zdHlsZWQge1xuICAgICAgICAgICAgICAgIC8qIFRhcmdldGVkIHJlc2V0IG9mIHByb2JsZW1hdGljIHByb3BlcnRpZXMgKi9cbiAgICAgICAgICAgICAgICBhcHBlYXJhbmNlOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgLyogT3VyIGN1c3RvbSBzdHlsaW5nIC0gdXNlICFpbXBvcnRhbnQgdG8gb3ZlcnJpZGUgYW55IGdsb2JhbCBzdHlsZXMgKi9cbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTZweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTZweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIG1pbi13aWR0aDogMTZweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDE2cHggIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcmVmLWNvbG9yLWdyZXktNjApO1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN5cy1ib3JkZXItcmFkaXVzLXNtKTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1yZWYtY29sb3Itd2hpdGUpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXJlZi1jb2xvci13aGl0ZSk7XG4gICAgICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgLyogRW5zdXJlIG5vIG90aGVyIHN0eWxlcyBjYW4gaW50ZXJmZXJlICovXG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogbm9ybWFsO1xuICAgICAgICAgICAgICAgIHdvcmQtc3BhY2luZzogbm9ybWFsO1xuICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgICAgIHRleHQtaW5kZW50OiAwO1xuICAgICAgICAgICAgICAgIHRleHQtc2hhZG93OiBub25lO1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IHN0YXJ0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICAvKiBIb3ZlciBzdGF0ZSAqL1xuICAgICAgICAgICAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLmFwLWNoZWNrYm94LXN0eWxlZDpob3ZlciB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1yZWYtY29sb3ItZ3JleS04MCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8qIEFjdGl2ZS9wcmVzc2VkIHN0YXRlICovXG4gICAgICAgICAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0uYXAtY2hlY2tib3gtc3R5bGVkOmFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1yZWYtY29sb3ItZ3JleS0xMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICAvKiBDaGVja2VkIHN0YXRlICovXG4gICAgICAgICAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0uYXAtY2hlY2tib3gtc3R5bGVkOmNoZWNrZWQge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJlZi1jb2xvci1lbGVjdHJpYy1ibHVlLTEwMCk7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1yZWYtY29sb3ItZWxlY3RyaWMtYmx1ZS0xMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICAvKiBDaGVja2VkIGhvdmVyIHN0YXRlICovXG4gICAgICAgICAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0uYXAtY2hlY2tib3gtc3R5bGVkOmNoZWNrZWQ6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJlZi1jb2xvci1lbGVjdHJpYy1ibHVlLTgwKTtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXJlZi1jb2xvci1lbGVjdHJpYy1ibHVlLTEwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8qIENoZWNrZWQgYWN0aXZlL3ByZXNzZWQgc3RhdGUgKi9cbiAgICAgICAgICAgIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXS5hcC1jaGVja2JveC1zdHlsZWQ6Y2hlY2tlZDphY3RpdmUge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJlZi1jb2xvci1lbGVjdHJpYy1ibHVlLTYwKTtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXJlZi1jb2xvci1lbGVjdHJpYy1ibHVlLTEwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8qIEluZGV0ZXJtaW5hdGUgc3RhdGUgKi9cbiAgICAgICAgICAgIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXS5hcC1jaGVja2JveC1zdHlsZWQ6aW5kZXRlcm1pbmF0ZSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcmVmLWNvbG9yLWVsZWN0cmljLWJsdWUtMTAwKTtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXJlZi1jb2xvci1lbGVjdHJpYy1ibHVlLTEwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8qIERpc2FibGVkIHN0YXRlICovXG4gICAgICAgICAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0uYXAtY2hlY2tib3gtc3R5bGVkOmRpc2FibGVkIHtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXJlZi1jb2xvci1ncmV5LTIwKTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1yZWYtY29sb3ItZ3JleS0xMCk7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0uYXAtY2hlY2tib3gtc3R5bGVkOmRpc2FibGVkOmNoZWNrZWQge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJlZi1jb2xvci1ncmV5LTIwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLyogRm9jdXMgc3RhdGUgLSBvbmx5IHNob3cgb24gaG92ZXItY2FwYWJsZSBkZXZpY2VzIGxpa2UgdGhlIGNvbXBvbmVudCAqL1xuICAgICAgICAgICAgQG1lZGlhIChob3ZlcjogaG92ZXIpIHtcbiAgICAgICAgICAgICAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0uYXAtY2hlY2tib3gtc3R5bGVkOmZvY3VzOm5vdCguZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0bGluZTogM3B4IHNvbGlkIHZhcigtLXJlZi1jb2xvci1lbGVjdHJpYy1ibHVlLTEwMCkgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDFweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLyogTGFiZWwgc3R5bGluZyAtIHRhcmdldHMgbGFiZWxzIHRoYXQgZm9sbG93IG91ciB3cmFwcGVyIGNvbnRhaW5pbmcgc3R5bGVkIGNoZWNrYm94ZXMgKi9cbiAgICAgICAgICAgIHNwYW46aGFzKGlucHV0W3R5cGU9XCJjaGVja2JveFwiXS5hcC1jaGVja2JveC1zdHlsZWQpICsgbGFiZWwge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBmb250LWZhbWlseTogdmFyKC0tY29tcC1mb3Jtcy1sYWJlbC1mb250LWZhbWlseSk7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1jb21wLWZvcm1zLWxhYmVsLXNpemUpO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1jb21wLWZvcm1zLWxhYmVsLWZvbnQtd2VpZ2h0KTtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogdmFyKC0tY29tcC1mb3Jtcy1sYWJlbC1saW5lLWhlaWdodCk7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLWNvbXAtZm9ybXMtbGFiZWwtdGV4dC1jb2xvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8qIEVtcHR5IGxhYmVsIHN0eWxpbmcgKi9cbiAgICAgICAgICAgIHNwYW46aGFzKGlucHV0W3R5cGU9XCJjaGVja2JveFwiXS5hcC1jaGVja2JveC1zdHlsZWQpICsgbGFiZWw6ZW1wdHkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8qIERpc2FibGVkIGxhYmVsIHN0eWxpbmcgKi9cbiAgICAgICAgICAgIHNwYW46aGFzKGlucHV0W3R5cGU9XCJjaGVja2JveFwiXS5hcC1jaGVja2JveC1zdHlsZWQ6ZGlzYWJsZWQpICsgbGFiZWwge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1yZWYtY29sb3ItZ3JleS02MCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8qIExhYmVsIGhvdmVyIHN0eWxpbmcgKi9cbiAgICAgICAgICAgIHNwYW46aGFzKGlucHV0W3R5cGU9XCJjaGVja2JveFwiXS5hcC1jaGVja2JveC1zdHlsZWQpICsgbGFiZWw6aG92ZXI6bm90KC5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLyogRGlzYWJsZWQgbGFiZWwgaG92ZXIgKi9cbiAgICAgICAgICAgIHNwYW46aGFzKGlucHV0W3R5cGU9XCJjaGVja2JveFwiXS5hcC1jaGVja2JveC1zdHlsZWQ6ZGlzYWJsZWQpICsgbGFiZWw6aG92ZXIge1xuICAgICAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgYDtcbiAgICAgICAgXG4gICAgICAgIC8vIENyZWF0ZSBhbmQgYXBwZW5kIHN0eWxlIGVsZW1lbnRcbiAgICAgICAgdGhpcy5zdHlsZUVsZW1lbnQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5zdHlsZUVsZW1lbnQsIHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dChzdHlsZXMpKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChkb2N1bWVudC5oZWFkLCB0aGlzLnN0eWxlRWxlbWVudCk7XG4gICAgfVxuXG5cbiAgICBvbkJsdXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25WYWx1ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAodGhpcy5faW5kZXRlcm1pbmF0ZSkge1xuICAgICAgICAgICAgICAgIC8vIFdoZW4gaW5kZXRlcm1pbmF0ZSwgY2xpY2tpbmcgc2hvdWxkIGdvIHRvIGNoZWNrZWQgc3RhdGVcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9pbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaW5wdXQuY2hlY2tlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaW5wdXQuaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBOb3JtYWwgdG9nZ2xlIGJlaGF2aW9yXG4gICAgICAgICAgICAgICAgdGhpcy5fY2hlY2tlZCA9IGlucHV0LmNoZWNrZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hlY2ttYXJrVmlzaWJpbGl0eSgpO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLl9jaGVja2VkKTtcbiAgICAgICAgICAgIHRoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4odGhpcy5fY2hlY2tlZCk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8vIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGltcGxlbWVudGF0aW9uXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9jaGVja2VkID0gdmFsdWU7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlucHV0LmNoZWNrZWQgPSB2YWx1ZTtcbiAgICAgICAgLy8gRW5zdXJlIGluZGV0ZXJtaW5hdGUgc3RhdGUgaXMgcHJvcGVybHkgc2V0XG4gICAgICAgIGlucHV0LmluZGV0ZXJtaW5hdGUgPSB0aGlzLl9pbmRldGVybWluYXRlO1xuICAgICAgICB0aGlzLnVwZGF0ZUNoZWNrbWFya1Zpc2liaWxpdHkoKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbiA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaW5wdXQuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIHZhbGlkYXRlKCkge1xuICAgICAgICBjb25zdCBpc05vdFZhbGlkID0gIXRoaXMuX2NoZWNrZWQgJiYgdGhpcy5yZXF1aXJlZDtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGlzTm90VmFsaWQgJiYge1xuICAgICAgICAgICAgICAgIGludmFsaWQ6IHRydWUsXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxufSJdfQ==
@@ -1,8 +1,9 @@
1
1
  export * from './autosize-textarea.directive';
2
2
  export * from './base-button.directive';
3
+ export * from './checkbox.directive';
3
4
  export * from './default-image.directive';
4
5
  export * from './ellipsis.directive';
5
6
  export * from './equal-validator.directive';
6
7
  export * from './frozen-gif.directive';
7
8
  export * from './multi-style-text.directive';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9kaXJlY3RpdmVzL3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2F1dG9zaXplLXRleHRhcmVhLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2Jhc2UtYnV0dG9uLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RlZmF1bHQtaW1hZ2UuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZWxsaXBzaXMuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZXF1YWwtdmFsaWRhdG9yLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2Zyb3plbi1naWYuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbXVsdGktc3R5bGUtdGV4dC5kaXJlY3RpdmUnO1xuIl19
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9kaXJlY3RpdmVzL3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyw4QkFBOEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXV0b3NpemUtdGV4dGFyZWEuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vYmFzZS1idXR0b24uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vY2hlY2tib3guZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGVmYXVsdC1pbWFnZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9lbGxpcHNpcy5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9lcXVhbC12YWxpZGF0b3IuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZnJvemVuLWdpZi5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9tdWx0aS1zdHlsZS10ZXh0LmRpcmVjdGl2ZSc7XG4iXX0=
package/esm2022/index.mjs CHANGED
@@ -5,7 +5,7 @@
5
5
  export { PopmenuModule } from '@agorapulse/ui-components/popmenu';
6
6
  export { AgorapulseUiComponentsModule } from './src/lib/agorapulse-ui-components.module';
7
7
  // Directive
8
- export { AutosizeTextareaDirective, DefaultImageDirective, EllipsisDirective, EqualValidatorDirective, FrozenGifDirective, MultiStyleTextDirective, } from '@agorapulse/ui-components/directives';
8
+ export { AutosizeTextareaDirective, CheckboxDirective, DefaultImageDirective, EllipsisDirective, EqualValidatorDirective, FrozenGifDirective, MultiStyleTextDirective, } from '@agorapulse/ui-components/directives';
9
9
  export { PopmenuDirective } from '@agorapulse/ui-components/popmenu';
10
10
  export { TooltipDirective } from '@agorapulse/ui-components/tooltip';
11
11
  // Component
@@ -46,4 +46,4 @@ export { ToggleComponent } from '@agorapulse/ui-components/toggle';
46
46
  // Service
47
47
  export { SnackbarsThreadService } from '@agorapulse/ui-components/snackbars-thread';
48
48
  export { CodeStatus, SnackbarTypeValues, generateCodeStatus, } from '@agorapulse/ui-components/snackbars-thread';
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxTQUFTO0FBQ1QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRXpGLFlBQVk7QUFDWixPQUFPLEVBQ0gseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQixpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQix1QkFBdUIsR0FDMUIsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVyRSxZQUFZO0FBQ1osT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBMEIsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNyRyxPQUFPLEVBQUUsY0FBYyxFQUFlLE1BQU0saUNBQWlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFDN0UsT0FBTyxFQUNILGVBQWUsRUFJZixzQkFBc0IsR0FDekIsTUFBTSwwQ0FBMEMsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBbUIsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRW5FLFVBQVU7QUFDVixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUlwRixPQUFPLEVBQ0gsVUFBVSxFQUNWLGtCQUFrQixFQUdsQixrQkFBa0IsR0FDckIsTUFBTSw0Q0FBNEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgdWlcbiAqL1xuXG4vLyBNb2R1bGVcbmV4cG9ydCB7IFBvcG1lbnVNb2R1bGUgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL3BvcG1lbnUnO1xuZXhwb3J0IHsgQWdvcmFwdWxzZVVpQ29tcG9uZW50c01vZHVsZSB9IGZyb20gJy4vc3JjL2xpYi9hZ29yYXB1bHNlLXVpLWNvbXBvbmVudHMubW9kdWxlJztcblxuLy8gRGlyZWN0aXZlXG5leHBvcnQge1xuICAgIEF1dG9zaXplVGV4dGFyZWFEaXJlY3RpdmUsXG4gICAgRGVmYXVsdEltYWdlRGlyZWN0aXZlLFxuICAgIEVsbGlwc2lzRGlyZWN0aXZlLFxuICAgIEVxdWFsVmFsaWRhdG9yRGlyZWN0aXZlLFxuICAgIEZyb3plbkdpZkRpcmVjdGl2ZSxcbiAgICBNdWx0aVN0eWxlVGV4dERpcmVjdGl2ZSxcbn0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9kaXJlY3RpdmVzJztcbmV4cG9ydCB7IFBvcG1lbnVEaXJlY3RpdmUgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL3BvcG1lbnUnO1xuZXhwb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvdG9vbHRpcCc7XG5cbi8vIENvbXBvbmVudFxuZXhwb3J0IHsgQWRkQ29tbWVudENvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvYWRkLWNvbW1lbnQnO1xuZXhwb3J0IHsgQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9hdXRvY29tcGxldGUnO1xuZXhwb3J0IHsgQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9hdmF0YXInO1xuZXhwb3J0IHsgQmFkZ2VDb21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL2JhZGdlJztcbmV4cG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvYnV0dG9uJztcbmV4cG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9jaGVja2JveCc7XG5leHBvcnQgeyBDb25maXJtTW9kYWxDb21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL2NvbmZpcm0tbW9kYWwnO1xuZXhwb3J0IHsgQ291bnRlckNvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvY291bnRlcic7XG5leHBvcnQgeyBEYXRlcGlja2VyQ29tcG9uZW50LCBEYXRlcGlja2VyTW9kZSwgSTE4bkRhdGVQaWNrZXIsIFBlcmlvZCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvZGF0ZXBpY2tlcic7XG5leHBvcnQgeyBEb3RTdGVwcGVyQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9kb3Qtc3RlcHBlcic7XG5leHBvcnQgeyBJY29uQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9pY29uLWJ1dHRvbic7XG5leHBvcnQgeyBJbmZvYm94Q29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9pbmZvYm94JztcbmV4cG9ydCB7IExhYmVsQ29tcG9uZW50LCBMYWJlbExpc3RDb21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL2xhYmVscyc7XG5leHBvcnQgeyBMYWJlbHNTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvbGFiZWxzLXNlbGVjdG9yJztcbmV4cG9ydCB7IElucHV0Q29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9sZWdhY3kvaW5wdXQnO1xuZXhwb3J0IHsgU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9sZWdhY3kvc2VsZWN0JztcbmV4cG9ydCB7IFRleHRhcmVhQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9sZWdhY3kvdGV4dGFyZWEnO1xuZXhwb3J0IHsgTWVkaWFEaXNwbGF5T3ZlcmxheURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvbWVkaWEtZGlzcGxheS1vdmVybGF5JztcbmV4cG9ydCB7IE1vZGFsQ29tcG9uZW50LCBNb2RhbENvbmZpZyB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvbW9kYWwnO1xuZXhwb3J0IHsgTmF2U2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL25hdi1zZWxlY3RvcidcbmV4cG9ydCB7XG4gICAgRGF5RGlzYWJsZWRQaXBlLFxuICAgIE5lb0RhdGVQaWNrZXJMb2NhbGUsXG4gICAgTmVvRGF0ZVBpY2tlck1vZGUsXG4gICAgTmVvRGF0ZVBpY2tlclN0YXJ0c09uLFxuICAgIE5lb0RhdGVwaWNrZXJDb21wb25lbnQsXG59IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvbmVvLWRhdGVwaWNrZXInO1xuZXhwb3J0IHsgTm90aWZpY2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9ub3RpZmljYXRpb24nO1xuZXhwb3J0IHsgUGFnaW5hdG9yQnV0dG9uQ29tcG9uZW50LCBQYWdpbmF0b3JDb21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL3BhZ2luYXRvcic7XG5leHBvcnQgeyBQYXNzd29yZElucHV0Q29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9wYXNzd29yZC1pbnB1dCc7XG5leHBvcnQgeyBQb3BtZW51Q29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9wb3BtZW51JztcbmV4cG9ydCB7IFJhZGlvQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9yYWRpbyc7XG5leHBvcnQgeyBTbGlkZVRvZ2dsZUNvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvc2xpZGUtdG9nZ2xlJztcbmV4cG9ydCB7IFNuYWNrYmFyc1RocmVhZENvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvc25hY2tiYXJzLXRocmVhZCc7XG5leHBvcnQgeyBTb2NpYWxCdXR0b25Db21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL3NvY2lhbC1idXR0b24nO1xuZXhwb3J0IHsgU3RhdHVzQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9zdGF0dXMnO1xuZXhwb3J0IHsgU3RhdHVzQ2FyZEFjdG9yLCBTdGF0dXNDYXJkQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9zdGF0dXMtY2FyZCc7XG5leHBvcnQgeyBTdGVwcGVyQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9zdGVwcGVyJztcbmV4cG9ydCB7IFRhZ0NvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvdGFnJztcbmV4cG9ydCB7IFRvZ2dsZUNvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvdG9nZ2xlJztcblxuLy8gU2VydmljZVxuZXhwb3J0IHsgU25hY2tiYXJzVGhyZWFkU2VydmljZSB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvc25hY2tiYXJzLXRocmVhZCc7XG5cbi8vIE1vZGVsXG5leHBvcnQgeyBDb25maXJtTW9kYWxUZXh0cyB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvY29uZmlybS1tb2RhbCc7XG5leHBvcnQge1xuICAgIENvZGVTdGF0dXMsXG4gICAgU25hY2tiYXJUeXBlVmFsdWVzLFxuICAgIFNuYWNrYmFyc1RocmVhZEJhc2UsXG4gICAgZXh0ZXJuYWxTbmFja2JhclR5cGVBbGxvd2VkLFxuICAgIGdlbmVyYXRlQ29kZVN0YXR1cyxcbn0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9zbmFja2JhcnMtdGhyZWFkJztcbmV4cG9ydCB7IFN0ZXAgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL3N0ZXBwZXInO1xuIl19
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxTQUFTO0FBQ1QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRXpGLFlBQVk7QUFDWixPQUFPLEVBQ0gseUJBQXlCLEVBQ3pCLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixrQkFBa0IsRUFDbEIsdUJBQXVCLEdBQzFCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFckUsWUFBWTtBQUNaLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQTBCLE1BQU0sc0NBQXNDLENBQUM7QUFDbkgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0saURBQWlELENBQUM7QUFDckcsT0FBTyxFQUFFLGNBQWMsRUFBZSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFBO0FBQzdFLE9BQU8sRUFDSCxlQUFlLEVBSWYsc0JBQXNCLEdBQ3pCLE1BQU0sMENBQTBDLENBQUM7QUFDbEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbkcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQW1CLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVuRSxVQUFVO0FBQ1YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFJcEYsT0FBTyxFQUNILFVBQVUsRUFDVixrQkFBa0IsRUFHbEIsa0JBQWtCLEdBQ3JCLE1BQU0sNENBQTRDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHVpXG4gKi9cblxuLy8gTW9kdWxlXG5leHBvcnQgeyBQb3BtZW51TW9kdWxlIH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9wb3BtZW51JztcbmV4cG9ydCB7IEFnb3JhcHVsc2VVaUNvbXBvbmVudHNNb2R1bGUgfSBmcm9tICcuL3NyYy9saWIvYWdvcmFwdWxzZS11aS1jb21wb25lbnRzLm1vZHVsZSc7XG5cbi8vIERpcmVjdGl2ZVxuZXhwb3J0IHtcbiAgICBBdXRvc2l6ZVRleHRhcmVhRGlyZWN0aXZlLFxuICAgIENoZWNrYm94RGlyZWN0aXZlLFxuICAgIERlZmF1bHRJbWFnZURpcmVjdGl2ZSxcbiAgICBFbGxpcHNpc0RpcmVjdGl2ZSxcbiAgICBFcXVhbFZhbGlkYXRvckRpcmVjdGl2ZSxcbiAgICBGcm96ZW5HaWZEaXJlY3RpdmUsXG4gICAgTXVsdGlTdHlsZVRleHREaXJlY3RpdmUsXG59IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvZGlyZWN0aXZlcyc7XG5leHBvcnQgeyBQb3BtZW51RGlyZWN0aXZlIH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9wb3BtZW51JztcbmV4cG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL3Rvb2x0aXAnO1xuXG4vLyBDb21wb25lbnRcbmV4cG9ydCB7IEFkZENvbW1lbnRDb21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL2FkZC1jb21tZW50JztcbmV4cG9ydCB7IEF1dG9jb21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvYXV0b2NvbXBsZXRlJztcbmV4cG9ydCB7IEF2YXRhckNvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvYXZhdGFyJztcbmV4cG9ydCB7IEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9iYWRnZSc7XG5leHBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL2J1dHRvbic7XG5leHBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvY2hlY2tib3gnO1xuZXhwb3J0IHsgQ29uZmlybU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9jb25maXJtLW1vZGFsJztcbmV4cG9ydCB7IENvdW50ZXJDb21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL2NvdW50ZXInO1xuZXhwb3J0IHsgRGF0ZXBpY2tlckNvbXBvbmVudCwgRGF0ZXBpY2tlck1vZGUsIEkxOG5EYXRlUGlja2VyLCBQZXJpb2QgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL2RhdGVwaWNrZXInO1xuZXhwb3J0IHsgRG90U3RlcHBlckNvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvZG90LXN0ZXBwZXInO1xuZXhwb3J0IHsgSWNvbkJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvaWNvbi1idXR0b24nO1xuZXhwb3J0IHsgSW5mb2JveENvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvaW5mb2JveCc7XG5leHBvcnQgeyBMYWJlbENvbXBvbmVudCwgTGFiZWxMaXN0Q29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9sYWJlbHMnO1xuZXhwb3J0IHsgTGFiZWxzU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL2xhYmVscy1zZWxlY3Rvcic7XG5leHBvcnQgeyBJbnB1dENvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvbGVnYWN5L2lucHV0JztcbmV4cG9ydCB7IFNlbGVjdENvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvbGVnYWN5L3NlbGVjdCc7XG5leHBvcnQgeyBUZXh0YXJlYUNvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvbGVnYWN5L3RleHRhcmVhJztcbmV4cG9ydCB7IE1lZGlhRGlzcGxheU92ZXJsYXlEaWFsb2dDb21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL21lZGlhLWRpc3BsYXktb3ZlcmxheSc7XG5leHBvcnQgeyBNb2RhbENvbXBvbmVudCwgTW9kYWxDb25maWcgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL21vZGFsJztcbmV4cG9ydCB7IE5hdlNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9uYXYtc2VsZWN0b3InXG5leHBvcnQge1xuICAgIERheURpc2FibGVkUGlwZSxcbiAgICBOZW9EYXRlUGlja2VyTG9jYWxlLFxuICAgIE5lb0RhdGVQaWNrZXJNb2RlLFxuICAgIE5lb0RhdGVQaWNrZXJTdGFydHNPbixcbiAgICBOZW9EYXRlcGlja2VyQ29tcG9uZW50LFxufSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL25lby1kYXRlcGlja2VyJztcbmV4cG9ydCB7IE5vdGlmaWNhdGlvbkNvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvbm90aWZpY2F0aW9uJztcbmV4cG9ydCB7IFBhZ2luYXRvckJ1dHRvbkNvbXBvbmVudCwgUGFnaW5hdG9yQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9wYWdpbmF0b3InO1xuZXhwb3J0IHsgUGFzc3dvcmRJbnB1dENvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvcGFzc3dvcmQtaW5wdXQnO1xuZXhwb3J0IHsgUG9wbWVudUNvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvcG9wbWVudSc7XG5leHBvcnQgeyBSYWRpb0NvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvcmFkaW8nO1xuZXhwb3J0IHsgU2xpZGVUb2dnbGVDb21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL3NsaWRlLXRvZ2dsZSc7XG5leHBvcnQgeyBTbmFja2JhcnNUaHJlYWRDb21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL3NuYWNrYmFycy10aHJlYWQnO1xuZXhwb3J0IHsgU29jaWFsQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9zb2NpYWwtYnV0dG9uJztcbmV4cG9ydCB7IFN0YXR1c0NvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvc3RhdHVzJztcbmV4cG9ydCB7IFN0YXR1c0NhcmRBY3RvciwgU3RhdHVzQ2FyZENvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvc3RhdHVzLWNhcmQnO1xuZXhwb3J0IHsgU3RlcHBlckNvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvc3RlcHBlcic7XG5leHBvcnQgeyBUYWdDb21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL3RhZyc7XG5leHBvcnQgeyBUb2dnbGVDb21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL3RvZ2dsZSc7XG5cbi8vIFNlcnZpY2VcbmV4cG9ydCB7IFNuYWNrYmFyc1RocmVhZFNlcnZpY2UgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL3NuYWNrYmFycy10aHJlYWQnO1xuXG4vLyBNb2RlbFxuZXhwb3J0IHsgQ29uZmlybU1vZGFsVGV4dHMgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL2NvbmZpcm0tbW9kYWwnO1xuZXhwb3J0IHtcbiAgICBDb2RlU3RhdHVzLFxuICAgIFNuYWNrYmFyVHlwZVZhbHVlcyxcbiAgICBTbmFja2JhcnNUaHJlYWRCYXNlLFxuICAgIGV4dGVybmFsU25hY2tiYXJUeXBlQWxsb3dlZCxcbiAgICBnZW5lcmF0ZUNvZGVTdGF0dXMsXG59IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvc25hY2tiYXJzLXRocmVhZCc7XG5leHBvcnQgeyBTdGVwIH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9zdGVwcGVyJztcbiJdfQ==