@coreui/angular-pro 4.5.28 → 4.5.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/backdrop/backdrop.service.mjs +53 -29
- package/esm2022/lib/backdrop/index.mjs +2 -0
- package/esm2022/lib/backdrop/public_api.mjs +2 -0
- package/esm2022/lib/modal/modal/modal.component.mjs +86 -57
- package/esm2022/lib/multi-select/multi-select/multi-select.component.mjs +5 -5
- package/esm2022/lib/multi-select/multi-select-option/multi-select-option.component.mjs +50 -63
- package/esm2022/lib/multi-select/multi-select-tag/multi-select-tag.component.mjs +4 -4
- package/esm2022/lib/offcanvas/offcanvas/offcanvas.component.mjs +48 -57
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/coreui-angular-pro.mjs +261 -229
- package/fesm2022/coreui-angular-pro.mjs.map +1 -1
- package/lib/backdrop/backdrop.service.d.ts +7 -10
- package/lib/backdrop/index.d.ts +1 -0
- package/lib/backdrop/public_api.d.ts +1 -0
- package/lib/modal/modal/modal.component.d.ts +13 -13
- package/lib/multi-select/multi-select-option/multi-select-option.component.d.ts +8 -12
- package/lib/offcanvas/offcanvas/offcanvas.component.d.ts +12 -10
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component,
|
|
1
|
+
import { booleanAttribute, ChangeDetectionStrategy, Component, computed, DestroyRef, EventEmitter, HostBinding, HostListener, inject, Input, NgZone, Output, signal, ViewChild } from '@angular/core';
|
|
2
2
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
3
3
|
import { NgIf } from '@angular/common';
|
|
4
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
5
4
|
import { distinctUntilChanged, filter, tap } from 'rxjs/operators';
|
|
6
5
|
import * as i0 from "@angular/core";
|
|
7
6
|
import * as i1 from "@angular/cdk/a11y";
|
|
8
7
|
import * as i2 from "../multi-select.service";
|
|
9
8
|
export class MultiSelectOptionComponent {
|
|
10
9
|
#destroyRef;
|
|
10
|
+
#ngZone;
|
|
11
11
|
constructor(elementRef, changeDetectorRef, focusMonitor, multiSelectService) {
|
|
12
12
|
this.elementRef = elementRef;
|
|
13
13
|
this.changeDetectorRef = changeDetectorRef;
|
|
14
14
|
this.focusMonitor = focusMonitor;
|
|
15
15
|
this.multiSelectService = multiSelectService;
|
|
16
16
|
this.#destroyRef = inject(DestroyRef);
|
|
17
|
+
this.#ngZone = inject(NgZone);
|
|
17
18
|
/**
|
|
18
19
|
* Option style
|
|
19
20
|
* @type ('checkbox' | 'text')
|
|
@@ -21,34 +22,37 @@ export class MultiSelectOptionComponent {
|
|
|
21
22
|
*/
|
|
22
23
|
this.optionsStyle = this.multiSelectService.optionsStyle;
|
|
23
24
|
this.#visible = signal(true);
|
|
24
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Option disabled.
|
|
27
|
+
* @type boolean
|
|
28
|
+
* @default false
|
|
29
|
+
*/
|
|
30
|
+
this.disabled = false;
|
|
25
31
|
this.#selected = signal(undefined);
|
|
26
|
-
this.#selectedEffect = effect(() => {
|
|
27
|
-
const value = this.#value();
|
|
28
|
-
const selected = this.#selected();
|
|
29
|
-
if ((value !== undefined) && (selected !== undefined)) {
|
|
30
|
-
selected ? this.multiSelectService.selectionModel?.select(value) : this.multiSelectService.selectionModel?.deselect(value);
|
|
31
|
-
this.ariaSelected = selected;
|
|
32
|
-
this.selectedChange.emit(selected);
|
|
33
|
-
this.changeDetectorRef.markForCheck();
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
32
|
/**
|
|
37
33
|
* Emits option selected change
|
|
38
34
|
* @type boolean
|
|
39
35
|
*/
|
|
40
36
|
this.selectedChange = new EventEmitter();
|
|
41
37
|
this.#value = signal(undefined);
|
|
42
|
-
this.hasContent = true;
|
|
38
|
+
this.hasContent = signal(true);
|
|
43
39
|
this.#dropdownVisible = signal(false);
|
|
44
40
|
this.#active = signal(false);
|
|
45
|
-
this.#activeEffect = effect(() => {
|
|
46
|
-
this.tabIndex = this.#active() && this.#visible() ? 0 : -1;
|
|
47
|
-
});
|
|
48
41
|
this.#focused = false;
|
|
49
42
|
this.focusChange = new EventEmitter();
|
|
50
|
-
this.#tabIndex =
|
|
51
|
-
|
|
43
|
+
this.#tabIndex = computed(() => {
|
|
44
|
+
return (this.#active() && this.#visible() ? 0 : -1);
|
|
45
|
+
});
|
|
46
|
+
this.#ariaSelected = computed(() => {
|
|
47
|
+
const value = this.#value();
|
|
48
|
+
const selected = this.#selected();
|
|
49
|
+
if ((value !== undefined) && (selected !== undefined)) {
|
|
50
|
+
selected ? this.multiSelectService.selectionModel?.select(value) : this.multiSelectService.selectionModel?.deselect(value);
|
|
51
|
+
this.selectedChange.emit(selected);
|
|
52
|
+
this.changeDetectorRef.markForCheck();
|
|
53
|
+
}
|
|
54
|
+
return selected;
|
|
55
|
+
});
|
|
52
56
|
}
|
|
53
57
|
/**
|
|
54
58
|
* Option visible.
|
|
@@ -56,24 +60,12 @@ export class MultiSelectOptionComponent {
|
|
|
56
60
|
* @default true
|
|
57
61
|
*/
|
|
58
62
|
set visible(value) {
|
|
59
|
-
this.#visible.set(
|
|
63
|
+
this.#visible.set(value);
|
|
60
64
|
}
|
|
61
65
|
get visible() {
|
|
62
66
|
return this.#visible();
|
|
63
67
|
}
|
|
64
68
|
#visible;
|
|
65
|
-
/**
|
|
66
|
-
* Option disabled.
|
|
67
|
-
* @type boolean
|
|
68
|
-
* @default false
|
|
69
|
-
*/
|
|
70
|
-
set disabled(value) {
|
|
71
|
-
this.#disabled = coerceBooleanProperty(value);
|
|
72
|
-
}
|
|
73
|
-
get disabled() {
|
|
74
|
-
return this.#disabled;
|
|
75
|
-
}
|
|
76
|
-
#disabled;
|
|
77
69
|
/**
|
|
78
70
|
* Option selected.
|
|
79
71
|
* @type boolean
|
|
@@ -81,7 +73,7 @@ export class MultiSelectOptionComponent {
|
|
|
81
73
|
*/
|
|
82
74
|
set selected(value) {
|
|
83
75
|
if (value !== undefined) {
|
|
84
|
-
const selected =
|
|
76
|
+
const selected = booleanAttribute(value);
|
|
85
77
|
if (this.#selected() !== selected) {
|
|
86
78
|
this.#selected.set(selected);
|
|
87
79
|
if (this.value !== undefined) {
|
|
@@ -94,7 +86,6 @@ export class MultiSelectOptionComponent {
|
|
|
94
86
|
return this.#selected();
|
|
95
87
|
}
|
|
96
88
|
#selected;
|
|
97
|
-
#selectedEffect;
|
|
98
89
|
/**
|
|
99
90
|
* Option value.
|
|
100
91
|
* @type string
|
|
@@ -111,7 +102,7 @@ export class MultiSelectOptionComponent {
|
|
|
111
102
|
#value;
|
|
112
103
|
#dropdownVisible;
|
|
113
104
|
set active(value) {
|
|
114
|
-
const active =
|
|
105
|
+
const active = value && this.#visible() && !this.disabled;
|
|
115
106
|
if (this.#active() !== active) {
|
|
116
107
|
this.#active.set(active);
|
|
117
108
|
}
|
|
@@ -120,7 +111,6 @@ export class MultiSelectOptionComponent {
|
|
|
120
111
|
return this.#active() && this.#visible();
|
|
121
112
|
}
|
|
122
113
|
#active;
|
|
123
|
-
#activeEffect;
|
|
124
114
|
#focused;
|
|
125
115
|
get role() {
|
|
126
116
|
return 'option';
|
|
@@ -137,25 +127,14 @@ export class MultiSelectOptionComponent {
|
|
|
137
127
|
};
|
|
138
128
|
}
|
|
139
129
|
get tabIndex() {
|
|
140
|
-
|
|
141
|
-
return (this.disabled || !this.#visible()) ? -1 : this.#tabIndex;
|
|
142
|
-
}
|
|
143
|
-
set tabIndex(tabindex) {
|
|
144
|
-
setTimeout(() => {
|
|
145
|
-
this.#tabIndex = tabindex;
|
|
146
|
-
});
|
|
130
|
+
return (this.disabled || !this.#visible()) ? -1 : this.#tabIndex();
|
|
147
131
|
}
|
|
148
132
|
#tabIndex;
|
|
149
133
|
get ariaDisabled() {
|
|
150
134
|
return this.disabled || null;
|
|
151
135
|
}
|
|
152
136
|
get ariaSelected() {
|
|
153
|
-
return this.#ariaSelected;
|
|
154
|
-
}
|
|
155
|
-
set ariaSelected(selected) {
|
|
156
|
-
setTimeout(() => {
|
|
157
|
-
this.#ariaSelected = selected || undefined;
|
|
158
|
-
});
|
|
137
|
+
return this.#ariaSelected() ?? false;
|
|
159
138
|
}
|
|
160
139
|
#ariaSelected;
|
|
161
140
|
onKeyDown($event) {
|
|
@@ -189,18 +168,23 @@ export class MultiSelectOptionComponent {
|
|
|
189
168
|
}
|
|
190
169
|
ngAfterViewInit() {
|
|
191
170
|
this.setSubscriptions();
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
171
|
+
const hasContent = !!this.contentDiv?.nativeElement.childNodes.length;
|
|
172
|
+
if (!hasContent) {
|
|
173
|
+
this.#ngZone.runOutsideAngular(() => {
|
|
174
|
+
setTimeout(() => {
|
|
175
|
+
this.hasContent.set(hasContent);
|
|
176
|
+
// this.#ngZone.run(() => {
|
|
177
|
+
// this.changeDetectorRef.markForCheck();
|
|
178
|
+
// });
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
}
|
|
198
182
|
if (this.text === undefined) {
|
|
199
183
|
const innerText = this.elementRef.nativeElement.textContent.trim() || this.elementRef.nativeElement.innerText.trim();
|
|
200
|
-
this.text = innerText || this.value?.trim()
|
|
184
|
+
this.text = innerText || this.value?.trim();
|
|
201
185
|
}
|
|
202
186
|
if (this.label === undefined) {
|
|
203
|
-
this.label = this.text?.trim()
|
|
187
|
+
this.label = this.text?.trim();
|
|
204
188
|
}
|
|
205
189
|
if (this.value === undefined) {
|
|
206
190
|
this.value = this.label?.trim() || '...';
|
|
@@ -249,11 +233,11 @@ export class MultiSelectOptionComponent {
|
|
|
249
233
|
return (this.#selected() || this.multiSelectService.selectionModel?.isSelected(value)) ?? false;
|
|
250
234
|
}
|
|
251
235
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultiSelectOptionComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FocusMonitor }, { token: i2.MultiSelectService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
252
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
236
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "16.2.12", type: MultiSelectOptionComponent, isStandalone: true, selector: "c-multi-select-option", inputs: { optionsStyle: "optionsStyle", label: "label", text: "text", visible: ["visible", "visible", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], selected: "selected", value: "value", active: ["active", "active", booleanAttribute], role: "role" }, outputs: { selectedChange: "selectedChange", focusChange: "focusChange" }, host: { listeners: { "keydown": "onKeyDown($event)", "blur": "onBlur()", "focus": "onFocus()", "keyup": "onKeyUp($event)", "click": "onClick($event)" }, properties: { "role": "this.role", "class": "this.hostClasses", "attr.tabindex": "this.tabIndex", "attr.disabled": "this.ariaDisabled", "attr.aria-disabled": "this.ariaDisabled", "attr.aria-selected": "this.ariaSelected" } }, viewQueries: [{ propertyName: "contentDiv", first: true, predicate: ["contentDiv"], descendants: true }], exportAs: ["cMultiSelectOption"], ngImport: i0, template: "<div #contentDiv>\n <ng-content></ng-content>\n</div>\n<div *ngIf=\"!hasContent()\">\n {{text ?? label ?? value}}\n</div>\n", styles: [":host{display:block;-webkit-user-select:none;user-select:none;white-space:nowrap;overflow:hidden}:host.active{border-radius:var(--cui-form-multi-select-option-indicator-border-radius, .375rem);box-shadow:0 0 .125rem 0 var(--cui-gray-400)}:host.focused,:host :focus-visible{box-shadow:0 0 0 .125rem #321fdb40;outline:none}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
253
237
|
}
|
|
254
238
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultiSelectOptionComponent, decorators: [{
|
|
255
239
|
type: Component,
|
|
256
|
-
args: [{ selector: 'c-multi-select-option', exportAs: 'cMultiSelectOption', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf], template: "<div #contentDiv>\n <ng-content></ng-content>\n</div>\n<div *ngIf=\"!hasContent\">\n {{text ?? label ?? value}}\n</div>\n", styles: [":host{display:block;-webkit-user-select:none;user-select:none;white-space:nowrap;overflow:hidden}:host.active{border-radius:var(--cui-form-multi-select-option-indicator-border-radius, .375rem);box-shadow:0 0 .125rem 0 var(--cui-gray-400)}:host.focused,:host :focus-visible{box-shadow:0 0 0 .125rem #321fdb40;outline:none}\n"] }]
|
|
240
|
+
args: [{ selector: 'c-multi-select-option', exportAs: 'cMultiSelectOption', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf], template: "<div #contentDiv>\n <ng-content></ng-content>\n</div>\n<div *ngIf=\"!hasContent()\">\n {{text ?? label ?? value}}\n</div>\n", styles: [":host{display:block;-webkit-user-select:none;user-select:none;white-space:nowrap;overflow:hidden}:host.active{border-radius:var(--cui-form-multi-select-option-indicator-border-radius, .375rem);box-shadow:0 0 .125rem 0 var(--cui-gray-400)}:host.focused,:host :focus-visible{box-shadow:0 0 0 .125rem #321fdb40;outline:none}\n"] }]
|
|
257
241
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FocusMonitor }, { type: i2.MultiSelectService }]; }, propDecorators: { optionsStyle: [{
|
|
258
242
|
type: Input
|
|
259
243
|
}], label: [{
|
|
@@ -261,9 +245,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
261
245
|
}], text: [{
|
|
262
246
|
type: Input
|
|
263
247
|
}], visible: [{
|
|
264
|
-
type: Input
|
|
248
|
+
type: Input,
|
|
249
|
+
args: [{ transform: booleanAttribute }]
|
|
265
250
|
}], disabled: [{
|
|
266
|
-
type: Input
|
|
251
|
+
type: Input,
|
|
252
|
+
args: [{ transform: booleanAttribute }]
|
|
267
253
|
}], selected: [{
|
|
268
254
|
type: Input
|
|
269
255
|
}], selectedChange: [{
|
|
@@ -274,7 +260,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
274
260
|
type: ViewChild,
|
|
275
261
|
args: ['contentDiv']
|
|
276
262
|
}], active: [{
|
|
277
|
-
type: Input
|
|
263
|
+
type: Input,
|
|
264
|
+
args: [{ transform: booleanAttribute }]
|
|
278
265
|
}], focusChange: [{
|
|
279
266
|
type: Output
|
|
280
267
|
}], role: [{
|
|
@@ -313,4 +300,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
313
300
|
type: HostListener,
|
|
314
301
|
args: ['click', ['$event']]
|
|
315
302
|
}] } });
|
|
316
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LW9wdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL211bHRpLXNlbGVjdC9tdWx0aS1zZWxlY3Qtb3B0aW9uL211bHRpLXNlbGVjdC1vcHRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9tdWx0aS1zZWxlY3QvbXVsdGktc2VsZWN0LW9wdGlvbi9tdWx0aS1zZWxlY3Qtb3B0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBRU4sWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsRUFHVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTVFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFhbkUsTUFBTSxPQUFPLDBCQUEwQjtJQUU1QixXQUFXLENBQXNCO0lBRTFDLFlBQ2tCLFVBQXNCLEVBQ3JCLGlCQUFvQyxFQUNwQyxZQUEwQixFQUMxQixrQkFBc0M7UUFIdkMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNyQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHVCQUFrQixHQUFsQixr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QUFZO3VCQUFDLE9BQU87Z0JBTWIsT0FBTztzQkFEZCxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFhekIsT0FBTztzQkFEZCxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBEZXN0cm95UmVmLFxuICBlZmZlY3QsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBzaWduYWwsXG4gIFZpZXdDaGlsZCxcbiAgVmlld1JlZixcbiAgV3JpdGFibGVTaWduYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEZvY3VzYWJsZU9wdGlvbiwgRm9jdXNNb25pdG9yLCBGb2N1c09yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTXVsdGlTZWxlY3RTZXJ2aWNlIH0gZnJvbSAnLi4vbXVsdGktc2VsZWN0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjLW11bHRpLXNlbGVjdC1vcHRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vbXVsdGktc2VsZWN0LW9wdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL211bHRpLXNlbGVjdC1vcHRpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgZXhwb3J0QXM6ICdjTXVsdGlTZWxlY3RPcHRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nSWZdXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpU2VsZWN0T3B0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgRm9jdXNhYmxlT3B0aW9uIHtcblxuICByZWFkb25seSAjZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbXVsdGlTZWxlY3RTZXJ2aWNlOiBNdWx0aVNlbGVjdFNlcnZpY2VcbiAgKSB7fVxuXG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9kaXNhYmxlZDogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc2VsZWN0ZWQ6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3Zpc2libGU6IEJvb2xlYW5JbnB1dDtcblxuICAvKipcbiAgICogT3B0aW9uIHN0eWxlXG4gICAqIEB0eXBlICgnY2hlY2tib3gnIHwgJ3RleHQnKVxuICAgKiBAZGVmYXVsdCAnY2hlY2tib3gnXG4gICAqL1xuICBASW5wdXQoKSBvcHRpb25zU3R5bGU6ICgnY2hlY2tib3gnIHwgJ3RleHQnKSA9IHRoaXMubXVsdGlTZWxlY3RTZXJ2aWNlLm9wdGlvbnNTdHlsZTtcblxuICAvKipcbiAgICogT3B0aW9uIGxhYmVsXG4gICAqIEB0eXBlIHN0cmluZ1xuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb24gaW5uZXIgdGV4dFxuICAgKiBAdHlwZSBzdHJpbmdcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSB0ZXh0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb24gdmlzaWJsZS5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgdmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuI3Zpc2libGUuc2V0KGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSkpO1xuICB9XG5cbiAgZ2V0IHZpc2libGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuI3Zpc2libGUoKTtcbiAgfVxuXG4gICN2aXNpYmxlID0gc2lnbmFsKHRydWUpO1xuXG4gIC8qKlxuICAgKiBPcHRpb24gZGlzYWJsZWQuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuI2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy4jZGlzYWJsZWQ7XG4gIH1cblxuICAjZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogT3B0aW9uIHNlbGVjdGVkLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgc2VsZWN0ZWQodmFsdWU6IChib29sZWFuIHwgdW5kZWZpbmVkKSkge1xuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgICBpZiAodGhpcy4jc2VsZWN0ZWQoKSAhPT0gc2VsZWN0ZWQpIHtcbiAgICAgICAgdGhpcy4jc2VsZWN0ZWQuc2V0KHNlbGVjdGVkKTtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNlbGVjdGVkID8gdGhpcy5tdWx0aVNlbGVjdFNlcnZpY2Uuc2VsZWN0aW9uTW9kZWw/LnNlbGVjdCh0aGlzLnZhbHVlKSA6IHRoaXMubXVsdGlTZWxlY3RTZXJ2aWNlLnNlbGVjdGlvbk1vZGVsPy5kZXNlbGVjdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBzZWxlY3RlZCgpIHtcbiAgICByZXR1cm4gdGhpcy4jc2VsZWN0ZWQoKTtcbiAgfVxuXG4gICNzZWxlY3RlZCA9IHNpZ25hbDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gICNzZWxlY3RlZEVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLiN2YWx1ZSgpO1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy4jc2VsZWN0ZWQoKTtcbiAgICBpZiAoKHZhbHVlICE9PSB1bmRlZmluZWQpICYmIChzZWxlY3RlZCAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgc2VsZWN0ZWQgPyB0aGlzLm11bHRpU2VsZWN0U2VydmljZS5zZWxlY3Rpb25Nb2RlbD8uc2VsZWN0KHZhbHVlKSA6IHRoaXMubXVsdGlTZWxlY3RTZXJ2aWNlLnNlbGVjdGlvbk1vZGVsPy5kZXNlbGVjdCh2YWx1ZSk7XG4gICAgICB0aGlzLmFyaWFTZWxlY3RlZCA9IHNlbGVjdGVkO1xuICAgICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHNlbGVjdGVkKTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9KTtcblxuICAvKipcbiAgICogRW1pdHMgb3B0aW9uIHNlbGVjdGVkIGNoYW5nZVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgLyoqXG4gICAqIE9wdGlvbiB2YWx1ZS5cbiAgICogQHR5cGUgc3RyaW5nXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy4jdmFsdWUoKSAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMuI3ZhbHVlLnNldCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLiN2YWx1ZSgpO1xuICB9XG5cbiAgI3ZhbHVlOiBXcml0YWJsZVNpZ25hbDxhbnk+ID0gc2lnbmFsKHVuZGVmaW5lZCk7XG5cbiAgQFZpZXdDaGlsZCgnY29udGVudERpdicpIHByaXZhdGUgY29udGVudERpdj86IEVsZW1lbnRSZWY7XG4gIHB1YmxpYyBoYXNDb250ZW50ID0gdHJ1ZTtcblxuICAjZHJvcGRvd25WaXNpYmxlID0gc2lnbmFsKGZhbHNlKTtcblxuICBASW5wdXQoKVxuICBzZXQgYWN0aXZlKHZhbHVlOiAoYm9vbGVhbiB8IHVuZGVmaW5lZCkpIHtcbiAgICBjb25zdCBhY3RpdmUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpICYmIHRoaXMuI3Zpc2libGUoKSAmJiAhdGhpcy5kaXNhYmxlZDtcbiAgICBpZiAodGhpcy4jYWN0aXZlKCkgIT09IGFjdGl2ZSkge1xuICAgICAgdGhpcy4jYWN0aXZlLnNldChhY3RpdmUpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBhY3RpdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2FjdGl2ZSgpICYmIHRoaXMuI3Zpc2libGUoKTtcbiAgfVxuXG4gICNhY3RpdmUgPSBzaWduYWwoZmFsc2UpO1xuXG4gICNhY3RpdmVFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIHRoaXMudGFiSW5kZXggPSB0aGlzLiNhY3RpdmUoKSAmJiB0aGlzLiN2aXNpYmxlKCkgPyAwIDogLTE7XG4gIH0pO1xuXG4gICNmb2N1c2VkID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGZvY3VzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNdWx0aVNlbGVjdE9wdGlvbkNvbXBvbmVudD4oKTtcblxuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoJ3JvbGUnKVxuICBwcml2YXRlIGdldCByb2xlKCkge1xuICAgIHJldHVybiAnb3B0aW9uJztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgaG9zdENsYXNzZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdmb3JtLW11bHRpLXNlbGVjdC1vcHRpb24nOiB0cnVlLFxuICAgICAgJ2Zvcm0tbXVsdGktc2VsZWN0ZWQnOiB0aGlzLiNzZWxlY3RlZCgpLFxuICAgICAgW2Bmb3JtLW11bHRpLXNlbGVjdC1vcHRpb24td2l0aC0ke3RoaXMub3B0aW9uc1N0eWxlfWBdOiAhIXRoaXMub3B0aW9uc1N0eWxlLFxuICAgICAgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQsXG4gICAgICAnZC1ub25lJzogIXRoaXMuI3Zpc2libGUoKSxcbiAgICAgIGFjdGl2ZTogdGhpcy4jYWN0aXZlKCksXG4gICAgICBmb2N1c2VkOiB0aGlzLiNmb2N1c2VkXG4gICAgfTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpXG4gIHByaXZhdGUgZ2V0IHRhYkluZGV4KCkge1xuICAgIC8vIHJldHVybiB0aGlzLmRpc2FibGVkIHx8ICF0aGlzLl9hY3RpdmUgPyAtMSA6IDA7XG4gICAgcmV0dXJuICh0aGlzLmRpc2FibGVkIHx8ICF0aGlzLiN2aXNpYmxlKCkpID8gLTEgOiB0aGlzLiN0YWJJbmRleDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0IHRhYkluZGV4KHRhYmluZGV4KSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLiN0YWJJbmRleCA9IHRhYmluZGV4O1xuICAgIH0pO1xuICB9XG5cbiAgI3RhYkluZGV4OiBudW1iZXIgPSAtMTtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGlzYWJsZWQnKVxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kaXNhYmxlZCcpXG4gIHByaXZhdGUgZ2V0IGFyaWFEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCB8fCBudWxsO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtc2VsZWN0ZWQnKVxuICBwcml2YXRlIGdldCBhcmlhU2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2FyaWFTZWxlY3RlZDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0IGFyaWFTZWxlY3RlZChzZWxlY3RlZCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy4jYXJpYVNlbGVjdGVkID0gc2VsZWN0ZWQgfHwgdW5kZWZpbmVkO1xuICAgIH0pO1xuICB9XG5cbiAgI2FyaWFTZWxlY3RlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgb25LZXlEb3duKCRldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChbJ1NwYWNlJ10uaW5jbHVkZXMoJGV2ZW50LmNvZGUpKSB7XG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKFsnVGFiJ10uaW5jbHVkZXMoJGV2ZW50LmNvZGUpKSB7XG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdibHVyJylcbiAgcHJpdmF0ZSBvbkJsdXIoKSB7XG4gICAgdGhpcy4jZm9jdXNlZCA9IGZhbHNlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKVxuICBwcml2YXRlIG9uRm9jdXMoKSB7XG4gICAgdGhpcy4jZm9jdXNlZCA9IHRydWU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gIHByaXZhdGUgb25LZXlVcCgkZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jZHJvcGRvd25WaXNpYmxlKCkpIHtcbiAgICAgIGlmIChbJ0VudGVyJywgJ1NwYWNlJ10uaW5jbHVkZXMoJGV2ZW50LmNvZGUpKSB7XG4gICAgICAgICRldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLmRpc2FibGVkID8gdGhpcy4jc2VsZWN0ZWQoKSA6ICF0aGlzLiNzZWxlY3RlZCgpO1xuICAgICAgICB0aGlzLmZvY3VzKCdrZXlib2FyZCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgcHJpdmF0ZSBvbkNsaWNrKCRldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnNlbGVjdGVkID0gdGhpcy5kaXNhYmxlZCA/IHRoaXMuI3NlbGVjdGVkKCkgOiAhdGhpcy4jc2VsZWN0ZWQoKTtcbiAgICB0aGlzLmZvY3VzKCdtb3VzZScpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuXG4gICAgdGhpcy5zZXRTdWJzY3JpcHRpb25zKCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaGFzQ29udGVudCA9ICEhdGhpcy5jb250ZW50RGl2Py5uYXRpdmVFbGVtZW50LmNoaWxkTm9kZXMubGVuZ3RoO1xuICAgICAgaWYgKCF0aGlzLmhhc0NvbnRlbnQpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgaW5uZXJUZXh0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQudHJpbSgpIHx8IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmlubmVyVGV4dC50cmltKCk7XG4gICAgICB0aGlzLnRleHQgPSBpbm5lclRleHQgfHwgdGhpcy52YWx1ZT8udHJpbSgpIHx8ICcuLi4nO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxhYmVsID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubGFiZWwgPSB0aGlzLnRleHQ/LnRyaW0oKSB8fCAnLi4uJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5sYWJlbD8udHJpbSgpIHx8ICcuLi4nO1xuICAgIH1cblxuICAgIGlmICghKHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYgYXMgVmlld1JlZikuZGVzdHJveWVkKSB7XG4gICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLmlzU2VsZWN0ZWQodGhpcy52YWx1ZSk7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgLy8gfSk7XG4gICAgfVxuXG4gIH1cblxuICAvKiogR2V0IHRoZSBsYWJlbCBmb3IgdGhpcyBlbGVtZW50IHdoaWNoIGlzIHJlcXVpcmVkIGJ5IHRoZSBGb2N1c2FibGVPcHRpb24gaW50ZXJmYWNlLiAqL1xuICBnZXRMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiA8c3RyaW5nPih0aGlzLmxhYmVsID8/IHRoaXMudmFsdWUpO1xuICB9XG5cbiAgZm9jdXMob3JpZ2luOiBGb2N1c09yaWdpbiA9ICdwcm9ncmFtJyk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNkcm9wZG93blZpc2libGUoKSAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5mb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIG9yaWdpbiwgeyBwcmV2ZW50U2Nyb2xsOiBmYWxzZSB9KTtcbiAgICAgIHRoaXMubXVsdGlTZWxlY3RTZXJ2aWNlLmZvY3VzQ2hhbmdlKHRoaXMpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuZm9jdXNDaGFuZ2UuZW1pdCh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFN1YnNjcmlwdGlvbnMoKSB7XG5cbiAgICB0aGlzLm11bHRpU2VsZWN0U2VydmljZS5tdWx0aVNlbGVjdFZpc2libGUkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKHZpc2libGUgPT4ge1xuICAgICAgICAgICAgdGhpcy4jZHJvcGRvd25WaXNpYmxlLnNldCh2aXNpYmxlKTtcbiAgICAgICAgICB9XG4gICAgICAgICksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5tdWx0aVNlbGVjdFNlcnZpY2UubXVsdGlTZWxlY3RGb2N1cyRcbiAgICAgIC5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBmaWx0ZXIob3B0aW9uID0+IHRoaXMuYWN0aXZlICE9PSAodGhpcy52YWx1ZSA9PT0gb3B0aW9uLnZhbHVlKSksXG4gICAgICAgIHRhcChvcHRpb24gPT4ge1xuICAgICAgICAgIHRoaXMuYWN0aXZlID0gdGhpcy52YWx1ZSA9PT0gb3B0aW9uLnZhbHVlO1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZilcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIGlmICghKHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYgYXMgVmlld1JlZikuZGVzdHJveWVkKSB7XG4gICAgICB0aGlzLm11bHRpU2VsZWN0U2VydmljZS5zZWxlY3Rpb25Nb2RlbC5jaGFuZ2VkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcihjaGFuZ2UgPT4gY2hhbmdlLmFkZGVkLmluY2x1ZGVzKHRoaXMudmFsdWUpIHx8IGNoYW5nZS5yZW1vdmVkLmluY2x1ZGVzKHRoaXMudmFsdWUpKSxcbiAgICAgICAgICB0YXAoY2hhbmdlID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBjaGFuZ2UuYWRkZWQuaW5jbHVkZXModGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBpc1NlbGVjdGVkKHZhbHVlID0gdGhpcy52YWx1ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy4jc2VsZWN0ZWQoKSB8fCB0aGlzLm11bHRpU2VsZWN0U2VydmljZS5zZWxlY3Rpb25Nb2RlbD8uaXNTZWxlY3RlZCh2YWx1ZSkpID8/IGZhbHNlO1xuICB9XG59XG4iLCI8ZGl2ICNjb250ZW50RGl2PlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCIhaGFzQ29udGVudFwiPlxuICB7e3RleHQgPz8gbGFiZWwgPz8gdmFsdWV9fVxuPC9kaXY+XG4iXX0=
|
|
303
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LW9wdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL211bHRpLXNlbGVjdC9tdWx0aS1zZWxlY3Qtb3B0aW9uL211bHRpLXNlbGVjdC1vcHRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9tdWx0aS1zZWxlY3QvbXVsdGktc2VsZWN0LW9wdGlvbi9tdWx0aS1zZWxlY3Qtb3B0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUVWLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxFQUdWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV2QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBYW5FLE1BQU0sT0FBTywwQkFBMEI7SUFFNUIsV0FBVyxDQUFzQjtJQUNqQyxPQUFPLENBQWtCO0lBRWxDLFlBQ2tCLFVBQXNCLEVBQ3JCLGlCQUFvQyxFQUNwQyxZQUEwQixFQUMxQixrQkFBc0M7UUFIdkMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNyQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHVCQUFrQixHQUFsQixrQkFBa0Is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SUFBSTtzQkFBWixLQUFLO2dCQVFGLE9BQU87c0JBRFYsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFnQkUsUUFBUTtzQkFBL0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFRbEMsUUFBUTtzQkFEWCxLQUFLO2dCQXVCYSxjQUFjO3NCQUFoQyxNQUFNO2dCQVFILEtBQUs7c0JBRFIsS0FBSztnQkFhMkIsVUFBVTtzQkFBMUMsU0FBUzt1QkFBQyxZQUFZO2dCQU1uQixNQUFNO3NCQURULEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBZ0JuQixXQUFXO3NCQUE3QixNQUFNO2dCQUlLLElBQUk7c0JBRmYsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxNQUFNO2dCQU1mLFdBQVc7c0JBRGQsV0FBVzt1QkFBQyxPQUFPO2dCQWNSLFFBQVE7c0JBRG5CLFdBQVc7dUJBQUMsZUFBZTtnQkFXaEIsWUFBWTtzQkFGdkIsV0FBVzt1QkFBQyxlQUFlOztzQkFDM0IsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBTXJCLFlBQVk7c0JBRHZCLFdBQVc7dUJBQUMsb0JBQW9CO2dCQWlCakMsU0FBUztzQkFEUixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFXM0IsTUFBTTtzQkFEYixZQUFZO3VCQUFDLE1BQU07Z0JBTVosT0FBTztzQkFEZCxZQUFZO3VCQUFDLE9BQU87Z0JBTWIsT0FBTztzQkFEZCxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFhekIsT0FBTztzQkFEZCxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgRGVzdHJveVJlZixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE91dHB1dCxcbiAgc2lnbmFsLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdSZWYsXG4gIFdyaXRhYmxlU2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb2N1c2FibGVPcHRpb24sIEZvY3VzTW9uaXRvciwgRm9jdXNPcmlnaW4gfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE11bHRpU2VsZWN0U2VydmljZSB9IGZyb20gJy4uL211bHRpLXNlbGVjdC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYy1tdWx0aS1zZWxlY3Qtb3B0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpLXNlbGVjdC1vcHRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tdWx0aS1zZWxlY3Qtb3B0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGV4cG9ydEFzOiAnY011bHRpU2VsZWN0T3B0aW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ0lmXVxufSlcbmV4cG9ydCBjbGFzcyBNdWx0aVNlbGVjdE9wdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIEZvY3VzYWJsZU9wdGlvbiB7XG5cbiAgcmVhZG9ubHkgI2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIHJlYWRvbmx5ICNuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbXVsdGlTZWxlY3RTZXJ2aWNlOiBNdWx0aVNlbGVjdFNlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBPcHRpb24gc3R5bGVcbiAgICogQHR5cGUgKCdjaGVja2JveCcgfCAndGV4dCcpXG4gICAqIEBkZWZhdWx0ICdjaGVja2JveCdcbiAgICovXG4gIEBJbnB1dCgpIG9wdGlvbnNTdHlsZTogKCdjaGVja2JveCcgfCAndGV4dCcpID0gdGhpcy5tdWx0aVNlbGVjdFNlcnZpY2Uub3B0aW9uc1N0eWxlO1xuXG4gIC8qKlxuICAgKiBPcHRpb24gbGFiZWxcbiAgICogQHR5cGUgc3RyaW5nXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgbGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbiBpbm5lciB0ZXh0XG4gICAqIEB0eXBlIHN0cmluZ1xuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIHRleHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbiB2aXNpYmxlLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBzZXQgdmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuI3Zpc2libGUuc2V0KHZhbHVlKTtcbiAgfVxuXG4gIGdldCB2aXNpYmxlKCkge1xuICAgIHJldHVybiB0aGlzLiN2aXNpYmxlKCk7XG4gIH1cblxuICAjdmlzaWJsZSA9IHNpZ25hbCh0cnVlKTtcblxuICAvKipcbiAgICogT3B0aW9uIGRpc2FibGVkLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogT3B0aW9uIHNlbGVjdGVkLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgc2VsZWN0ZWQodmFsdWU6IChib29sZWFuIHwgdW5kZWZpbmVkKSkge1xuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZCA9IGJvb2xlYW5BdHRyaWJ1dGUodmFsdWUpO1xuICAgICAgaWYgKHRoaXMuI3NlbGVjdGVkKCkgIT09IHNlbGVjdGVkKSB7XG4gICAgICAgIHRoaXMuI3NlbGVjdGVkLnNldChzZWxlY3RlZCk7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzZWxlY3RlZCA/IHRoaXMubXVsdGlTZWxlY3RTZXJ2aWNlLnNlbGVjdGlvbk1vZGVsPy5zZWxlY3QodGhpcy52YWx1ZSkgOiB0aGlzLm11bHRpU2VsZWN0U2VydmljZS5zZWxlY3Rpb25Nb2RlbD8uZGVzZWxlY3QodGhpcy52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgc2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuI3NlbGVjdGVkKCk7XG4gIH1cblxuICAjc2VsZWN0ZWQgPSBzaWduYWw8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvKipcbiAgICogRW1pdHMgb3B0aW9uIHNlbGVjdGVkIGNoYW5nZVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgLyoqXG4gICAqIE9wdGlvbiB2YWx1ZS5cbiAgICogQHR5cGUgc3RyaW5nXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy4jdmFsdWUoKSAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMuI3ZhbHVlLnNldCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLiN2YWx1ZSgpO1xuICB9XG5cbiAgI3ZhbHVlOiBXcml0YWJsZVNpZ25hbDxhbnk+ID0gc2lnbmFsKHVuZGVmaW5lZCk7XG5cbiAgQFZpZXdDaGlsZCgnY29udGVudERpdicpIHByaXZhdGUgY29udGVudERpdj86IEVsZW1lbnRSZWY7XG4gIHB1YmxpYyBoYXNDb250ZW50ID0gc2lnbmFsKHRydWUpO1xuXG4gICNkcm9wZG93blZpc2libGUgPSBzaWduYWwoZmFsc2UpO1xuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBzZXQgYWN0aXZlKHZhbHVlOiAoYm9vbGVhbikpIHtcbiAgICBjb25zdCBhY3RpdmUgPSB2YWx1ZSAmJiB0aGlzLiN2aXNpYmxlKCkgJiYgIXRoaXMuZGlzYWJsZWQ7XG4gICAgaWYgKHRoaXMuI2FjdGl2ZSgpICE9PSBhY3RpdmUpIHtcbiAgICAgIHRoaXMuI2FjdGl2ZS5zZXQoYWN0aXZlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgYWN0aXZlKCkge1xuICAgIHJldHVybiB0aGlzLiNhY3RpdmUoKSAmJiB0aGlzLiN2aXNpYmxlKCk7XG4gIH1cblxuICAjYWN0aXZlID0gc2lnbmFsKGZhbHNlKTtcblxuICAjZm9jdXNlZCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSBmb2N1c0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TXVsdGlTZWxlY3RPcHRpb25Db21wb25lbnQ+KCk7XG5cbiAgQElucHV0KClcbiAgQEhvc3RCaW5kaW5nKCdyb2xlJylcbiAgcHJpdmF0ZSBnZXQgcm9sZSgpIHtcbiAgICByZXR1cm4gJ29wdGlvbic7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IGhvc3RDbGFzc2VzKCkge1xuICAgIHJldHVybiB7XG4gICAgICAnZm9ybS1tdWx0aS1zZWxlY3Qtb3B0aW9uJzogdHJ1ZSxcbiAgICAgICdmb3JtLW11bHRpLXNlbGVjdGVkJzogdGhpcy4jc2VsZWN0ZWQoKSxcbiAgICAgIFtgZm9ybS1tdWx0aS1zZWxlY3Qtb3B0aW9uLXdpdGgtJHt0aGlzLm9wdGlvbnNTdHlsZX1gXTogISF0aGlzLm9wdGlvbnNTdHlsZSxcbiAgICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkLFxuICAgICAgJ2Qtbm9uZSc6ICF0aGlzLiN2aXNpYmxlKCksXG4gICAgICBhY3RpdmU6IHRoaXMuI2FjdGl2ZSgpLFxuICAgICAgZm9jdXNlZDogdGhpcy4jZm9jdXNlZFxuICAgIH07XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKVxuICBwcml2YXRlIGdldCB0YWJJbmRleCgpIHtcbiAgICByZXR1cm4gKHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMuI3Zpc2libGUoKSkgPyAtMSA6IHRoaXMuI3RhYkluZGV4KCk7XG4gIH1cblxuICAjdGFiSW5kZXggPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuICh0aGlzLiNhY3RpdmUoKSAmJiB0aGlzLiN2aXNpYmxlKCkgPyAwIDogLTEpO1xuICB9KTtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGlzYWJsZWQnKVxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kaXNhYmxlZCcpXG4gIHByaXZhdGUgZ2V0IGFyaWFEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCB8fCBudWxsO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtc2VsZWN0ZWQnKVxuICBwcml2YXRlIGdldCBhcmlhU2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2FyaWFTZWxlY3RlZCgpID8/IGZhbHNlO1xuICB9XG5cbiAgI2FyaWFTZWxlY3RlZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuI3ZhbHVlKCk7XG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLiNzZWxlY3RlZCgpO1xuICAgIGlmICgodmFsdWUgIT09IHVuZGVmaW5lZCkgJiYgKHNlbGVjdGVkICE9PSB1bmRlZmluZWQpKSB7XG4gICAgICBzZWxlY3RlZCA/IHRoaXMubXVsdGlTZWxlY3RTZXJ2aWNlLnNlbGVjdGlvbk1vZGVsPy5zZWxlY3QodmFsdWUpIDogdGhpcy5tdWx0aVNlbGVjdFNlcnZpY2Uuc2VsZWN0aW9uTW9kZWw/LmRlc2VsZWN0KHZhbHVlKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdChzZWxlY3RlZCk7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgICByZXR1cm4gc2VsZWN0ZWQ7XG4gIH0pO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBvbktleURvd24oJGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKFsnU3BhY2UnXS5pbmNsdWRlcygkZXZlbnQuY29kZSkpIHtcbiAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBpZiAoWydUYWInXS5pbmNsdWRlcygkZXZlbnQuY29kZSkpIHtcbiAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICBwcml2YXRlIG9uQmx1cigpIHtcbiAgICB0aGlzLiNmb2N1c2VkID0gZmFsc2U7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1cycpXG4gIHByaXZhdGUgb25Gb2N1cygpIHtcbiAgICB0aGlzLiNmb2N1c2VkID0gdHJ1ZTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSlcbiAgcHJpdmF0ZSBvbktleVVwKCRldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNkcm9wZG93blZpc2libGUoKSkge1xuICAgICAgaWYgKFsnRW50ZXInLCAnU3BhY2UnXS5pbmNsdWRlcygkZXZlbnQuY29kZSkpIHtcbiAgICAgICAgJGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMuZGlzYWJsZWQgPyB0aGlzLiNzZWxlY3RlZCgpIDogIXRoaXMuI3NlbGVjdGVkKCk7XG4gICAgICAgIHRoaXMuZm9jdXMoJ2tleWJvYXJkJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBwcml2YXRlIG9uQ2xpY2soJGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLmRpc2FibGVkID8gdGhpcy4jc2VsZWN0ZWQoKSA6ICF0aGlzLiNzZWxlY3RlZCgpO1xuICAgIHRoaXMuZm9jdXMoJ21vdXNlJyk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG5cbiAgICB0aGlzLnNldFN1YnNjcmlwdGlvbnMoKTtcblxuICAgIGNvbnN0IGhhc0NvbnRlbnQgPSAhIXRoaXMuY29udGVudERpdj8ubmF0aXZlRWxlbWVudC5jaGlsZE5vZGVzLmxlbmd0aDtcbiAgICBpZiAoIWhhc0NvbnRlbnQpIHtcbiAgICAgIHRoaXMuI25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaGFzQ29udGVudC5zZXQoaGFzQ29udGVudCk7XG4gICAgICAgICAgLy8gdGhpcy4jbmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgLy8gICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIC8vIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgaW5uZXJUZXh0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQudHJpbSgpIHx8IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmlubmVyVGV4dC50cmltKCk7XG4gICAgICB0aGlzLnRleHQgPSBpbm5lclRleHQgfHwgdGhpcy52YWx1ZT8udHJpbSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxhYmVsID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubGFiZWwgPSB0aGlzLnRleHQ/LnRyaW0oKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5sYWJlbD8udHJpbSgpIHx8ICcuLi4nO1xuICAgIH1cblxuICAgIGlmICghKHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYgYXMgVmlld1JlZikuZGVzdHJveWVkKSB7XG4gICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLmlzU2VsZWN0ZWQodGhpcy52YWx1ZSk7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgLy8gfSk7XG4gICAgfVxuXG4gIH1cblxuICAvKiogR2V0IHRoZSBsYWJlbCBmb3IgdGhpcyBlbGVtZW50IHdoaWNoIGlzIHJlcXVpcmVkIGJ5IHRoZSBGb2N1c2FibGVPcHRpb24gaW50ZXJmYWNlLiAqL1xuICBnZXRMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiA8c3RyaW5nPih0aGlzLmxhYmVsID8/IHRoaXMudmFsdWUpO1xuICB9XG5cbiAgZm9jdXMob3JpZ2luOiBGb2N1c09yaWdpbiA9ICdwcm9ncmFtJyk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNkcm9wZG93blZpc2libGUoKSAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5mb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIG9yaWdpbiwgeyBwcmV2ZW50U2Nyb2xsOiBmYWxzZSB9KTtcbiAgICAgIHRoaXMubXVsdGlTZWxlY3RTZXJ2aWNlLmZvY3VzQ2hhbmdlKHRoaXMpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuZm9jdXNDaGFuZ2UuZW1pdCh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFN1YnNjcmlwdGlvbnMoKSB7XG5cbiAgICB0aGlzLm11bHRpU2VsZWN0U2VydmljZS5tdWx0aVNlbGVjdFZpc2libGUkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKHZpc2libGUgPT4ge1xuICAgICAgICAgICAgdGhpcy4jZHJvcGRvd25WaXNpYmxlLnNldCh2aXNpYmxlKTtcbiAgICAgICAgICB9XG4gICAgICAgICksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5tdWx0aVNlbGVjdFNlcnZpY2UubXVsdGlTZWxlY3RGb2N1cyRcbiAgICAgIC5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBmaWx0ZXIob3B0aW9uID0+IHRoaXMuYWN0aXZlICE9PSAodGhpcy52YWx1ZSA9PT0gb3B0aW9uLnZhbHVlKSksXG4gICAgICAgIHRhcChvcHRpb24gPT4ge1xuICAgICAgICAgIHRoaXMuYWN0aXZlID0gdGhpcy52YWx1ZSA9PT0gb3B0aW9uLnZhbHVlO1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZilcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIGlmICghKHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYgYXMgVmlld1JlZikuZGVzdHJveWVkKSB7XG4gICAgICB0aGlzLm11bHRpU2VsZWN0U2VydmljZS5zZWxlY3Rpb25Nb2RlbC5jaGFuZ2VkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcihjaGFuZ2UgPT4gY2hhbmdlLmFkZGVkLmluY2x1ZGVzKHRoaXMudmFsdWUpIHx8IGNoYW5nZS5yZW1vdmVkLmluY2x1ZGVzKHRoaXMudmFsdWUpKSxcbiAgICAgICAgICB0YXAoY2hhbmdlID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBjaGFuZ2UuYWRkZWQuaW5jbHVkZXModGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBpc1NlbGVjdGVkKHZhbHVlID0gdGhpcy52YWx1ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy4jc2VsZWN0ZWQoKSB8fCB0aGlzLm11bHRpU2VsZWN0U2VydmljZS5zZWxlY3Rpb25Nb2RlbD8uaXNTZWxlY3RlZCh2YWx1ZSkpID8/IGZhbHNlO1xuICB9XG59XG4iLCI8ZGl2ICNjb250ZW50RGl2PlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCIhaGFzQ29udGVudCgpXCI+XG4gIHt7dGV4dCA/PyBsYWJlbCA/PyB2YWx1ZX19XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';
|
|
2
2
|
import { AsyncPipe, NgIf } from '@angular/common';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "../multi-select.service";
|
|
@@ -21,11 +21,11 @@ export class MultiSelectTagComponent {
|
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultiSelectTagComponent, deps: [{ token: i1.MultiSelectService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MultiSelectTagComponent, isStandalone: true, selector: "c-multi-select-tag", inputs: { option: "option", disabled: "disabled", label: "label", value: "value" }, outputs: { remove: "remove" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "{{label ?? value ?? '???'}}\n<button (click)=\"handleRemove($event)\" *ngIf=\"!disabled\"\n [disabled]=\"((multiselectVisible$ | async) ?? true) === false\" aria-label=\"Clear\"\n class=\"form-multi-select-tag-delete close\" type=\"button\">\n <span aria-hidden=\"true\">\u00D7</span>\n</button>\n", styles: [":host .btn-xs{padding-left:.125rem;padding-right:.125rem;font-size:.575rem;border-radius:.2rem}:host.form-multi-select-tag{-webkit-user-select:none;user-select:none;pointer-events:all}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
|
|
24
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MultiSelectTagComponent, isStandalone: true, selector: "c-multi-select-tag", inputs: { option: "option", disabled: "disabled", label: "label", value: "value" }, outputs: { remove: "remove" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "{{label ?? value ?? '???'}}\n<button (click)=\"handleRemove($event)\" *ngIf=\"!disabled\"\n [disabled]=\"((multiselectVisible$ | async) ?? true) === false\" aria-label=\"Clear\"\n class=\"form-multi-select-tag-delete close\" type=\"button\">\n <span aria-hidden=\"true\">\u00D7</span>\n</button>\n", styles: [":host .btn-xs{padding-left:.125rem;padding-right:.125rem;font-size:.575rem;border-radius:.2rem}:host.form-multi-select-tag{-webkit-user-select:none;user-select:none;pointer-events:all}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25
25
|
}
|
|
26
26
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultiSelectTagComponent, decorators: [{
|
|
27
27
|
type: Component,
|
|
28
|
-
args: [{ selector: 'c-multi-select-tag', standalone: true, imports: [NgIf, AsyncPipe], template: "{{label ?? value ?? '???'}}\n<button (click)=\"handleRemove($event)\" *ngIf=\"!disabled\"\n [disabled]=\"((multiselectVisible$ | async) ?? true) === false\" aria-label=\"Clear\"\n class=\"form-multi-select-tag-delete close\" type=\"button\">\n <span aria-hidden=\"true\">\u00D7</span>\n</button>\n", styles: [":host .btn-xs{padding-left:.125rem;padding-right:.125rem;font-size:.575rem;border-radius:.2rem}:host.form-multi-select-tag{-webkit-user-select:none;user-select:none;pointer-events:all}\n"] }]
|
|
28
|
+
args: [{ selector: 'c-multi-select-tag', standalone: true, imports: [NgIf, AsyncPipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "{{label ?? value ?? '???'}}\n<button (click)=\"handleRemove($event)\" *ngIf=\"!disabled\"\n [disabled]=\"((multiselectVisible$ | async) ?? true) === false\" aria-label=\"Clear\"\n class=\"form-multi-select-tag-delete close\" type=\"button\">\n <span aria-hidden=\"true\">\u00D7</span>\n</button>\n", styles: [":host .btn-xs{padding-left:.125rem;padding-right:.125rem;font-size:.575rem;border-radius:.2rem}:host.form-multi-select-tag{-webkit-user-select:none;user-select:none;pointer-events:all}\n"] }]
|
|
29
29
|
}], ctorParameters: function () { return [{ type: i1.MultiSelectService }]; }, propDecorators: { option: [{
|
|
30
30
|
type: Input
|
|
31
31
|
}], disabled: [{
|
|
@@ -40,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
40
40
|
type: HostBinding,
|
|
41
41
|
args: ['class']
|
|
42
42
|
}] } });
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LXRhZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL211bHRpLXNlbGVjdC9tdWx0aS1zZWxlY3QtdGFnL211bHRpLXNlbGVjdC10YWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9tdWx0aS1zZWxlY3QvbXVsdGktc2VsZWN0LXRhZy9tdWx0aS1zZWxlY3QtdGFnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQWFsRCxNQUFNLE9BQU8sdUJBQXVCO0lBRWxDLFlBQ1Usa0JBQXNDO1FBQXRDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFHekMsd0JBQW1CLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDO1FBSWhFLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFJeEIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7SUFWM0MsQ0FBQztJQVlMLElBQ0ksV0FBVztRQUNiLE9BQU87WUFDTCx1QkFBdUIsRUFBRSxJQUFJO1NBQzlCLENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWtCO1FBQzdCLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDOUI7SUFDSCxDQUFDOytHQTVCVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qix3UENkcEMsMFRBTUEsb1BES1ksSUFBSSx3RkFBRSxTQUFTOzs0RkFHZCx1QkFBdUI7a0JBUm5DLFNBQVM7K0JBQ0Usb0JBQW9CLGNBR2xCLElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsbUJBQ1QsdUJBQXVCLENBQUMsTUFBTTt5R0FVdEMsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU07Z0JBR0gsV0FBVztzQkFEZCxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBNdWx0aVNlbGVjdFNlcnZpY2UgfSBmcm9tICcuLi9tdWx0aS1zZWxlY3Quc2VydmljZSc7XG5pbXBvcnQgeyBJT3B0aW9uIH0gZnJvbSAnLi4vbXVsdGktc2VsZWN0LnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjLW11bHRpLXNlbGVjdC10YWcnLFxuICB0ZW1wbGF0ZVVybDogJy4vbXVsdGktc2VsZWN0LXRhZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL211bHRpLXNlbGVjdC10YWcuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nSWYsIEFzeW5jUGlwZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpU2VsZWN0VGFnQ29tcG9uZW50IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG11bHRpU2VsZWN0U2VydmljZTogTXVsdGlTZWxlY3RTZXJ2aWNlXG4gICkgeyB9XG5cbiAgcHVibGljIG11bHRpc2VsZWN0VmlzaWJsZSQgPSB0aGlzLm11bHRpU2VsZWN0U2VydmljZS5tdWx0aVNlbGVjdFZpc2libGUkO1xuXG4gIEBJbnB1dCgpIG9wdGlvbj86IElPcHRpb247XG5cbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBsYWJlbD86IHN0cmluZztcbiAgQElucHV0KCkgdmFsdWU/OiBhbnk7XG5cbiAgQE91dHB1dCgpIHJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8SU9wdGlvbj4oKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IGhvc3RDbGFzc2VzKCkge1xuICAgIHJldHVybiB7XG4gICAgICAnZm9ybS1tdWx0aS1zZWxlY3QtdGFnJzogdHJ1ZVxuICAgIH07XG4gIH1cblxuICBoYW5kbGVSZW1vdmUoJGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLnJlbW92ZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgIH1cbiAgfVxuXG59XG4iLCJ7e2xhYmVsID8/IHZhbHVlID8/ICc/Pz8nfX1cbjxidXR0b24gKGNsaWNrKT1cImhhbmRsZVJlbW92ZSgkZXZlbnQpXCIgKm5nSWY9XCIhZGlzYWJsZWRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiKChtdWx0aXNlbGVjdFZpc2libGUkIHwgYXN5bmMpID8/IHRydWUpID09PSBmYWxzZVwiIGFyaWEtbGFiZWw9XCJDbGVhclwiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1tdWx0aS1zZWxlY3QtdGFnLWRlbGV0ZSBjbG9zZVwiIHR5cGU9XCJidXR0b25cIj5cbiAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+w5c8L3NwYW4+XG48L2J1dHRvbj5cbiJdfQ==
|