pdm-ui-kit 0.2.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +168 -3
- package/esm2020/lib/components/button-group/button-group.component.mjs +211 -182
- package/esm2020/lib/components/combobox/combobox.component.mjs +136 -14
- package/esm2020/lib/components/context-menu/context-menu.component.mjs +121 -42
- package/esm2020/lib/components/data-table/data-table.component.mjs +3 -3
- package/esm2020/lib/components/date-picker/date-picker.component.mjs +66 -54
- package/esm2020/lib/components/dialog/dialog.component.mjs +111 -94
- package/esm2020/lib/components/hover-card/hover-card.component.mjs +185 -24
- package/esm2020/lib/components/input/input.component.mjs +15 -15
- package/esm2020/lib/components/input-group/input-group.component.mjs +14 -14
- package/esm2020/lib/components/menubar/menubar.component.mjs +105 -29
- package/esm2020/lib/components/popover/popover.component.mjs +107 -75
- package/esm2020/lib/components/select/select.component.mjs +23 -22
- package/esm2020/lib/components/table/table.component.mjs +77 -68
- package/esm2020/lib/components/tabs/tabs.component.mjs +6 -6
- package/esm2020/lib/components/toggle-group/toggle-group.component.mjs +6 -6
- package/esm2020/lib/components/tooltip/tooltip.component.mjs +162 -19
- package/esm2020/lib/overlay/z-index-helper.mjs +69 -0
- package/esm2020/lib/utils/z-index.mjs +25 -28
- package/esm2020/public-api.mjs +67 -66
- package/fesm2015/pdm-ui-kit.mjs +1379 -654
- package/fesm2015/pdm-ui-kit.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit.mjs +1383 -654
- package/fesm2020/pdm-ui-kit.mjs.map +1 -1
- package/lib/components/button-group/button-group.component.d.ts +8 -2
- package/lib/components/combobox/combobox.component.d.ts +20 -3
- package/lib/components/context-menu/context-menu.component.d.ts +17 -8
- package/lib/components/date-picker/date-picker.component.d.ts +5 -6
- package/lib/components/dialog/dialog.component.d.ts +5 -5
- package/lib/components/hover-card/hover-card.component.d.ts +27 -4
- package/lib/components/input/input.component.d.ts +3 -3
- package/lib/components/input-group/input-group.component.d.ts +1 -1
- package/lib/components/menubar/menubar.component.d.ts +16 -8
- package/lib/components/popover/popover.component.d.ts +13 -12
- package/lib/components/select/select.component.d.ts +4 -5
- package/lib/components/table/table.component.d.ts +2 -2
- package/lib/components/tabs/tabs.component.d.ts +1 -1
- package/lib/components/toggle-group/toggle-group.component.d.ts +1 -1
- package/lib/components/tooltip/tooltip.component.d.ts +21 -3
- package/lib/overlay/z-index-helper.d.ts +36 -0
- package/lib/utils/z-index.d.ts +14 -18
- package/package.json +6 -6
- package/public-api.d.ts +66 -65
- package/src/lib/styles/tokens.css +182 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, Output, ViewChild } from
|
|
2
|
-
import { TemplatePortal } from
|
|
3
|
-
import { format as formatDateFns } from
|
|
4
|
-
import { createFlexiblePositionStrategy } from
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, Output, ViewChild, } from "@angular/core";
|
|
2
|
+
import { TemplatePortal } from "@angular/cdk/portal";
|
|
3
|
+
import { format as formatDateFns } from "date-fns";
|
|
4
|
+
import { createFlexiblePositionStrategy } from "../../overlay/create-flexible-position-strategy";
|
|
5
|
+
import { mergeOverlayPanelClass, OVERLAY_BASE_Z_INDEX, } from "../../overlay/z-index-helper";
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
import * as i1 from "@angular/cdk/overlay";
|
|
7
8
|
import * as i2 from "@angular/common";
|
|
@@ -9,8 +10,7 @@ import * as i3 from "../calendar/calendar.component";
|
|
|
9
10
|
import * as i4 from "../label/label.component";
|
|
10
11
|
let nextDatePickerId = 0;
|
|
11
12
|
export class PdmDatePickerComponent {
|
|
12
|
-
constructor(
|
|
13
|
-
this.elementRef = elementRef;
|
|
13
|
+
constructor(cdr, overlay, viewContainerRef) {
|
|
14
14
|
this.cdr = cdr;
|
|
15
15
|
this.overlay = overlay;
|
|
16
16
|
this.viewContainerRef = viewContainerRef;
|
|
@@ -21,21 +21,21 @@ export class PdmDatePickerComponent {
|
|
|
21
21
|
this.triggerFocused = false;
|
|
22
22
|
this.overlayRef = null;
|
|
23
23
|
this.backdropSub = null;
|
|
24
|
-
this.id =
|
|
25
|
-
this.variant =
|
|
26
|
-
this.label =
|
|
27
|
-
this.labelClassName =
|
|
28
|
-
this.className =
|
|
29
|
-
this.triggerClassName =
|
|
24
|
+
this.id = "";
|
|
25
|
+
this.variant = "single";
|
|
26
|
+
this.label = "";
|
|
27
|
+
this.labelClassName = "";
|
|
28
|
+
this.className = "";
|
|
29
|
+
this.triggerClassName = "";
|
|
30
30
|
/**
|
|
31
31
|
* Additional CSS classes applied to the overlay panel.
|
|
32
32
|
* Backward-compatible: mapped to `overlayOptions.panelClass` when `overlayOptions` is not set.
|
|
33
33
|
* When both are supplied, `overlayOptions.panelClass` takes precedence.
|
|
34
34
|
*/
|
|
35
|
-
this.panelClassName =
|
|
36
|
-
this.placeholder =
|
|
37
|
-
this.rangePlaceholder =
|
|
38
|
-
this.format =
|
|
35
|
+
this.panelClassName = "";
|
|
36
|
+
this.placeholder = "Pick a date";
|
|
37
|
+
this.rangePlaceholder = "Pick a date range";
|
|
38
|
+
this.format = "MMM d, yyyy";
|
|
39
39
|
this.disabled = false;
|
|
40
40
|
this.readonly = false;
|
|
41
41
|
this.required = false;
|
|
@@ -56,7 +56,7 @@ export class PdmDatePickerComponent {
|
|
|
56
56
|
set open(value) {
|
|
57
57
|
if (this._open === !!value)
|
|
58
58
|
return;
|
|
59
|
-
if (
|
|
59
|
+
if (value) {
|
|
60
60
|
this.openPanel();
|
|
61
61
|
}
|
|
62
62
|
else {
|
|
@@ -77,7 +77,7 @@ export class PdmDatePickerComponent {
|
|
|
77
77
|
this._rangeValue = value
|
|
78
78
|
? {
|
|
79
79
|
start: this.normalizeDate(value.start),
|
|
80
|
-
end: this.normalizeDate(value.end)
|
|
80
|
+
end: this.normalizeDate(value.end),
|
|
81
81
|
}
|
|
82
82
|
: null;
|
|
83
83
|
this.cdr.markForCheck();
|
|
@@ -89,7 +89,7 @@ export class PdmDatePickerComponent {
|
|
|
89
89
|
this.destroyOverlay();
|
|
90
90
|
}
|
|
91
91
|
get resolvedVariant() {
|
|
92
|
-
return this.variant ===
|
|
92
|
+
return this.variant === "range" ? "range" : "single";
|
|
93
93
|
}
|
|
94
94
|
get triggerId() {
|
|
95
95
|
return this.id || `${this.instanceId}-trigger`;
|
|
@@ -98,13 +98,13 @@ export class PdmDatePickerComponent {
|
|
|
98
98
|
return `${this.id || this.instanceId}-panel`;
|
|
99
99
|
}
|
|
100
100
|
get hasSingleValue() {
|
|
101
|
-
return this.resolvedVariant ===
|
|
101
|
+
return this.resolvedVariant === "single" && !!this._value;
|
|
102
102
|
}
|
|
103
103
|
get hasRangeValue() {
|
|
104
|
-
return this.resolvedVariant ===
|
|
104
|
+
return this.resolvedVariant === "range" && !!this._rangeValue?.start;
|
|
105
105
|
}
|
|
106
106
|
get displayText() {
|
|
107
|
-
if (this.resolvedVariant ===
|
|
107
|
+
if (this.resolvedVariant === "single") {
|
|
108
108
|
return this._value ? this.formatDate(this._value) : this.placeholder;
|
|
109
109
|
}
|
|
110
110
|
const start = this._rangeValue?.start ?? null;
|
|
@@ -118,29 +118,29 @@ export class PdmDatePickerComponent {
|
|
|
118
118
|
return `${this.formatDate(start)} - ${this.formatDate(end)}`;
|
|
119
119
|
}
|
|
120
120
|
get textClasses() {
|
|
121
|
-
const hasValue = this.resolvedVariant ===
|
|
121
|
+
const hasValue = this.resolvedVariant === "single"
|
|
122
|
+
? this.hasSingleValue
|
|
123
|
+
: this.hasRangeValue;
|
|
122
124
|
return [
|
|
123
|
-
|
|
124
|
-
hasValue ?
|
|
125
|
+
"min-w-0 flex-1 truncate text-left text-sm leading-5",
|
|
126
|
+
hasValue ? "text-foreground" : "text-muted-foreground",
|
|
125
127
|
];
|
|
126
128
|
}
|
|
127
129
|
get rootClasses() {
|
|
128
130
|
return [
|
|
129
|
-
|
|
130
|
-
this.resolvedVariant ===
|
|
131
|
-
this.className
|
|
131
|
+
"grid gap-2",
|
|
132
|
+
this.resolvedVariant === "range" ? "w-[280px]" : "w-[197px]",
|
|
133
|
+
this.className,
|
|
132
134
|
];
|
|
133
135
|
}
|
|
134
136
|
get triggerClasses() {
|
|
135
137
|
const focusStyle = this._open || this.triggerFocused;
|
|
136
138
|
return [
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
focusStyle
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
this.invalid ? 'border-destructive ring-destructive/20' : '',
|
|
143
|
-
this.triggerClassName
|
|
139
|
+
"border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive relative flex w-full appearance-none items-center gap-2 overflow-hidden rounded-lg border bg-background px-3 py-[7.5px] text-left text-sm shadow-sm outline-none transition-colors",
|
|
140
|
+
"min-h-[36px] disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50",
|
|
141
|
+
focusStyle ? "border-ring ring-2 ring-ring/50" : "",
|
|
142
|
+
this.invalid ? "border-destructive ring-destructive/20" : "",
|
|
143
|
+
this.triggerClassName,
|
|
144
144
|
];
|
|
145
145
|
}
|
|
146
146
|
toggleOpen() {
|
|
@@ -171,16 +171,22 @@ export class PdmDatePickerComponent {
|
|
|
171
171
|
this._rangeValue = value
|
|
172
172
|
? {
|
|
173
173
|
start: this.normalizeDate(value.start),
|
|
174
|
-
end: this.normalizeDate(value.end)
|
|
174
|
+
end: this.normalizeDate(value.end),
|
|
175
175
|
}
|
|
176
176
|
: null;
|
|
177
177
|
this.rangeValueChange.emit(this._rangeValue
|
|
178
178
|
? {
|
|
179
|
-
start: this._rangeValue.start
|
|
180
|
-
|
|
179
|
+
start: this._rangeValue.start
|
|
180
|
+
? this.cloneDate(this._rangeValue.start)
|
|
181
|
+
: null,
|
|
182
|
+
end: this._rangeValue.end
|
|
183
|
+
? this.cloneDate(this._rangeValue.end)
|
|
184
|
+
: null,
|
|
181
185
|
}
|
|
182
186
|
: null);
|
|
183
|
-
if (this.closeOnSelect &&
|
|
187
|
+
if (this.closeOnSelect &&
|
|
188
|
+
this._rangeValue?.start &&
|
|
189
|
+
this._rangeValue?.end) {
|
|
184
190
|
this.setOpen(false);
|
|
185
191
|
return;
|
|
186
192
|
}
|
|
@@ -215,20 +221,26 @@ export class PdmDatePickerComponent {
|
|
|
215
221
|
this.openChange.emit(true);
|
|
216
222
|
this.cdr.markForCheck();
|
|
217
223
|
const positionStrategy = createFlexiblePositionStrategy(this.overlay, triggerEl, 8);
|
|
218
|
-
//
|
|
224
|
+
// CRITICAL: Use mergeOverlayPanelClass to ensure z-index is never lost.
|
|
225
|
+
// Consumer classes are appended AFTER base z-index.
|
|
226
|
+
const zIndexEnforced = mergeOverlayPanelClass(OVERLAY_BASE_Z_INDEX, this.panelClassName);
|
|
227
|
+
// Resolve panelClass: overlayOptions.panelClass wins; otherwise use z-index enforced.
|
|
219
228
|
const resolvedPanelClass = this.overlayOptions?.panelClass
|
|
220
|
-
|
|
229
|
+
? mergeOverlayPanelClass(OVERLAY_BASE_Z_INDEX, this.overlayOptions.panelClass)
|
|
230
|
+
: zIndexEnforced;
|
|
221
231
|
this.overlayRef = this.overlay.create({
|
|
222
232
|
positionStrategy,
|
|
223
233
|
scrollStrategy: this.overlay.scrollStrategies.reposition(),
|
|
224
|
-
// Consumer overrides are spread
|
|
234
|
+
// Consumer overrides are spread first.
|
|
225
235
|
...this.overlayOptions,
|
|
226
|
-
// panelClass always
|
|
227
|
-
panelClass: resolvedPanelClass
|
|
236
|
+
// panelClass always enforced last to preserve z-index.
|
|
237
|
+
panelClass: resolvedPanelClass,
|
|
228
238
|
});
|
|
229
239
|
const portal = new TemplatePortal(this.panelTemplateRef, this.viewContainerRef);
|
|
230
240
|
this.overlayRef.attach(portal);
|
|
231
|
-
this.backdropSub = this.overlayRef
|
|
241
|
+
this.backdropSub = this.overlayRef
|
|
242
|
+
.outsidePointerEvents()
|
|
243
|
+
.subscribe((event) => {
|
|
232
244
|
const target = event.target;
|
|
233
245
|
if (!triggerEl.contains(target)) {
|
|
234
246
|
this.closePanel();
|
|
@@ -256,10 +268,10 @@ export class PdmDatePickerComponent {
|
|
|
256
268
|
}
|
|
257
269
|
formatDate(date) {
|
|
258
270
|
try {
|
|
259
|
-
return formatDateFns(date, this.format ||
|
|
271
|
+
return formatDateFns(date, this.format || "MMM d, yyyy");
|
|
260
272
|
}
|
|
261
273
|
catch {
|
|
262
|
-
return formatDateFns(date,
|
|
274
|
+
return formatDateFns(date, "MMM d, yyyy");
|
|
263
275
|
}
|
|
264
276
|
}
|
|
265
277
|
normalizeDate(value) {
|
|
@@ -272,17 +284,17 @@ export class PdmDatePickerComponent {
|
|
|
272
284
|
return new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
|
273
285
|
}
|
|
274
286
|
}
|
|
275
|
-
PdmDatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmDatePickerComponent, deps: [{ token: i0.
|
|
287
|
+
PdmDatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmDatePickerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.Overlay }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
276
288
|
PdmDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmDatePickerComponent, selector: "pdm-date-picker", inputs: { id: "id", variant: "variant", label: "label", labelClassName: "labelClassName", className: "className", triggerClassName: "triggerClassName", panelClassName: "panelClassName", overlayOptions: "overlayOptions", placeholder: "placeholder", rangePlaceholder: "rangePlaceholder", format: "format", disabled: "disabled", readonly: "readonly", required: "required", invalid: "invalid", allowSameDayRange: "allowSameDayRange", closeOnSelect: "closeOnSelect", minDate: "minDate", maxDate: "maxDate", minYear: "minYear", maxYear: "maxYear", disabledDates: "disabledDates", isDateDisabled: "isDateDisabled", open: "open", value: "value", rangeValue: "rangeValue" }, outputs: { valueChange: "valueChange", rangeValueChange: "rangeValueChange", openChange: "openChange", monthChange: "monthChange" }, host: { listeners: { "document:keydown.escape": "onEscape()" } }, viewQueries: [{ propertyName: "triggerRef", first: true, predicate: ["triggerEl"], descendants: true }, { propertyName: "panelTemplateRef", first: true, predicate: ["panelTemplate"], descendants: true }], ngImport: i0, template: "<div [ngClass]=\"rootClasses\">\n <pdm-label *ngIf=\"label\" [forId]=\"triggerId\" [required]=\"required\" [className]=\"labelClassName\">\n {{ label }}\n </pdm-label>\n\n <button\n #triggerEl\n type=\"button\"\n [id]=\"triggerId\"\n [disabled]=\"disabled\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-controls]=\"panelId\"\n [attr.aria-haspopup]=\"'dialog'\"\n [attr.aria-invalid]=\"invalid\"\n [ngClass]=\"triggerClasses\"\n [attr.title]=\"displayText\"\n (click)=\"toggleOpen()\"\n (focus)=\"onTriggerFocus()\"\n (blur)=\"onTriggerBlur()\"\n >\n <span class=\"flex h-5 w-5 shrink-0 items-center justify-center p-0.5 text-muted-foreground\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\">\n <path d=\"M8 2v4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M16 2v4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <rect x=\"3\" y=\"4.5\" width=\"18\" height=\"16.5\" rx=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></rect>\n <path d=\"M3 9.5h18\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n\n <span [ngClass]=\"textClasses\">{{ displayText }}</span>\n </button>\n</div>\n\n<ng-template #panelTemplate>\n <div [id]=\"panelId\" role=\"dialog\" [attr.aria-labelledby]=\"label ? triggerId : null\">\n <pdm-calendar\n [variant]=\"resolvedVariant\"\n [value]=\"value\"\n [rangeValue]=\"rangeValue\"\n [readonly]=\"readonly\"\n [allowSameDayRange]=\"allowSameDayRange\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minYear]=\"minYear\"\n [maxYear]=\"maxYear\"\n [disabledDates]=\"disabledDates\"\n [isDateDisabled]=\"isDateDisabled\"\n (valueChange)=\"onCalendarValueChange($event)\"\n (rangeValueChange)=\"onCalendarRangeValueChange($event)\"\n (monthChange)=\"onCalendarMonthChange($event)\"\n ></pdm-calendar>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PdmCalendarComponent, selector: "pdm-calendar", inputs: ["variant", "className", "disabledDates", "minDate", "maxDate", "minYear", "maxYear", "isDateDisabled", "allowSameDayRange", "readonly", "value", "rangeValue", "month"], outputs: ["valueChange", "rangeValueChange", "monthChange", "dateClick", "disabledDateClick"] }, { kind: "component", type: i4.PdmLabelComponent, selector: "pdm-label", inputs: ["forId", "required", "className"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
277
289
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmDatePickerComponent, decorators: [{
|
|
278
290
|
type: Component,
|
|
279
|
-
args: [{ selector:
|
|
280
|
-
}], ctorParameters: function () { return [{ type: i0.
|
|
291
|
+
args: [{ selector: "pdm-date-picker", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [ngClass]=\"rootClasses\">\n <pdm-label *ngIf=\"label\" [forId]=\"triggerId\" [required]=\"required\" [className]=\"labelClassName\">\n {{ label }}\n </pdm-label>\n\n <button\n #triggerEl\n type=\"button\"\n [id]=\"triggerId\"\n [disabled]=\"disabled\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-controls]=\"panelId\"\n [attr.aria-haspopup]=\"'dialog'\"\n [attr.aria-invalid]=\"invalid\"\n [ngClass]=\"triggerClasses\"\n [attr.title]=\"displayText\"\n (click)=\"toggleOpen()\"\n (focus)=\"onTriggerFocus()\"\n (blur)=\"onTriggerBlur()\"\n >\n <span class=\"flex h-5 w-5 shrink-0 items-center justify-center p-0.5 text-muted-foreground\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\">\n <path d=\"M8 2v4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M16 2v4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <rect x=\"3\" y=\"4.5\" width=\"18\" height=\"16.5\" rx=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></rect>\n <path d=\"M3 9.5h18\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n\n <span [ngClass]=\"textClasses\">{{ displayText }}</span>\n </button>\n</div>\n\n<ng-template #panelTemplate>\n <div [id]=\"panelId\" role=\"dialog\" [attr.aria-labelledby]=\"label ? triggerId : null\">\n <pdm-calendar\n [variant]=\"resolvedVariant\"\n [value]=\"value\"\n [rangeValue]=\"rangeValue\"\n [readonly]=\"readonly\"\n [allowSameDayRange]=\"allowSameDayRange\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minYear]=\"minYear\"\n [maxYear]=\"maxYear\"\n [disabledDates]=\"disabledDates\"\n [isDateDisabled]=\"isDateDisabled\"\n (valueChange)=\"onCalendarValueChange($event)\"\n (rangeValueChange)=\"onCalendarRangeValueChange($event)\"\n (monthChange)=\"onCalendarMonthChange($event)\"\n ></pdm-calendar>\n </div>\n</ng-template>\n" }]
|
|
292
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.Overlay }, { type: i0.ViewContainerRef }]; }, propDecorators: { triggerRef: [{
|
|
281
293
|
type: ViewChild,
|
|
282
|
-
args: [
|
|
294
|
+
args: ["triggerEl"]
|
|
283
295
|
}], panelTemplateRef: [{
|
|
284
296
|
type: ViewChild,
|
|
285
|
-
args: [
|
|
297
|
+
args: ["panelTemplate"]
|
|
286
298
|
}], id: [{
|
|
287
299
|
type: Input
|
|
288
300
|
}], variant: [{
|
|
@@ -345,6 +357,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
345
357
|
type: Input
|
|
346
358
|
}], onEscape: [{
|
|
347
359
|
type: HostListener,
|
|
348
|
-
args: [
|
|
360
|
+
args: ["document:keydown.escape"]
|
|
349
361
|
}] } });
|
|
350
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUVWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsTUFBTSxJQUFJLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUduRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7Ozs7O0FBRWpHLElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0FBT3pCLE1BQU0sT0FBTyxzQkFBc0I7SUFjakMsWUFDbUIsVUFBbUMsRUFDbkMsR0FBc0IsRUFDdEIsT0FBZ0IsRUFDaEIsZ0JBQWtDO1FBSGxDLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ25DLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQWpCN0MsV0FBTSxHQUFnQixJQUFJLENBQUM7UUFDM0IsZ0JBQVcsR0FBNEIsSUFBSSxDQUFDO1FBQzVDLFVBQUssR0FBRyxLQUFLLENBQUM7UUFFTCxlQUFVLEdBQUcsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztRQUM5RCxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUV2QixlQUFVLEdBQXNCLElBQUksQ0FB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V0FBVztzQkFBcEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUdILElBQUk7c0JBRFAsS0FBSztnQkFjRixLQUFLO3NCQURSLEtBQUs7Z0JBVUYsVUFBVTtzQkFEYixLQUFLO2dCQWtKTixRQUFRO3NCQURQLFlBQVk7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmb3JtYXQgYXMgZm9ybWF0RGF0ZUZucyB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB7IFBkbUNhbGVuZGFyUmFuZ2UsIFBkbUNhbGVuZGFyVmFyaWFudCB9IGZyb20gJy4uL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZG1PdmVybGF5T3B0aW9ucyB9IGZyb20gJy4uLy4uL292ZXJsYXkvcGRtLW92ZXJsYXktb3B0aW9ucyc7XG5pbXBvcnQgeyBjcmVhdGVGbGV4aWJsZVBvc2l0aW9uU3RyYXRlZ3kgfSBmcm9tICcuLi8uLi9vdmVybGF5L2NyZWF0ZS1mbGV4aWJsZS1wb3NpdGlvbi1zdHJhdGVneSc7XG5cbmxldCBuZXh0RGF0ZVBpY2tlcklkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRtLWRhdGUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUGRtRGF0ZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX3ZhbHVlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3JhbmdlVmFsdWU6IFBkbUNhbGVuZGFyUmFuZ2UgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfb3BlbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5zdGFuY2VJZCA9IGBwZG0tZGF0ZS1waWNrZXItJHsrK25leHREYXRlUGlja2VySWR9YDtcbiAgcHJpdmF0ZSB0cmlnZ2VyRm9jdXNlZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGJhY2tkcm9wU3ViOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcblxuICBAVmlld0NoaWxkKCd0cmlnZ2VyRWwnKSBwcml2YXRlIHRyaWdnZXJSZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgncGFuZWxUZW1wbGF0ZScpIHByaXZhdGUgcGFuZWxUZW1wbGF0ZVJlZiE6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmXG4gICkge31cblxuICBASW5wdXQoKSBpZCA9ICcnO1xuICBASW5wdXQoKSB2YXJpYW50OiBQZG1DYWxlbmRhclZhcmlhbnQgfCBzdHJpbmcgPSAnc2luZ2xlJztcbiAgQElucHV0KCkgbGFiZWwgPSAnJztcbiAgQElucHV0KCkgbGFiZWxDbGFzc05hbWUgPSAnJztcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJyc7XG4gIEBJbnB1dCgpIHRyaWdnZXJDbGFzc05hbWUgPSAnJztcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgQ1NTIGNsYXNzZXMgYXBwbGllZCB0byB0aGUgb3ZlcmxheSBwYW5lbC5cbiAgICogQmFja3dhcmQtY29tcGF0aWJsZTogbWFwcGVkIHRvIGBvdmVybGF5T3B0aW9ucy5wYW5lbENsYXNzYCB3aGVuIGBvdmVybGF5T3B0aW9uc2AgaXMgbm90IHNldC5cbiAgICogV2hlbiBib3RoIGFyZSBzdXBwbGllZCwgYG92ZXJsYXlPcHRpb25zLnBhbmVsQ2xhc3NgIHRha2VzIHByZWNlZGVuY2UuXG4gICAqL1xuICBASW5wdXQoKSBwYW5lbENsYXNzTmFtZSA9ICcnO1xuICAvKipcbiAgICogT3B0aW9uYWwgQ0RLIE92ZXJsYXlDb25maWcgb3ZlcnJpZGVzLlxuICAgKiBTaGFsbG93LW1lcmdlZCBvbiB0b3Agb2YgY29tcG9uZW50IGRlZmF1bHRzIOKAlCBjb25zdW1lciBhbHdheXMgd2lucy5cbiAgICogUHJvdmlkaW5nIGBwb3NpdGlvblN0cmF0ZWd5YCBvciBgc2Nyb2xsU3RyYXRlZ3lgIHJlcGxhY2VzIHRoZSBjb21wb25lbnQgZGVmYXVsdCBlbnRpcmVseS5cbiAgICovXG4gIEBJbnB1dCgpIG92ZXJsYXlPcHRpb25zPzogUGRtT3ZlcmxheU9wdGlvbnM7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJ1BpY2sgYSBkYXRlJztcbiAgQElucHV0KCkgcmFuZ2VQbGFjZWhvbGRlciA9ICdQaWNrIGEgZGF0ZSByYW5nZSc7XG4gIEBJbnB1dCgpIGZvcm1hdCA9ICdNTU0gZCwgeXl5eSc7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlcXVpcmVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGludmFsaWQgPSBmYWxzZTtcbiAgQElucHV0KCkgYWxsb3dTYW1lRGF5UmFuZ2UgPSB0cnVlO1xuICBASW5wdXQoKSBjbG9zZU9uU2VsZWN0ID0gdHJ1ZTtcbiAgQElucHV0KCkgbWluRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBtYXhEYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIG1pblllYXI6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBtYXhZZWFyOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgZGlzYWJsZWREYXRlczogRGF0ZVtdID0gW107XG4gIEBJbnB1dCgpIGlzRGF0ZURpc2FibGVkOiAoKGRhdGU6IERhdGUpID0+IGJvb2xlYW4pIHwgbnVsbCA9IG51bGw7XG5cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlIHwgbnVsbD4oKTtcbiAgQE91dHB1dCgpIHJhbmdlVmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFBkbUNhbGVuZGFyUmFuZ2UgfCBudWxsPigpO1xuICBAT3V0cHV0KCkgb3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIG1vbnRoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBvcGVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuX29wZW4gPT09ICEhdmFsdWUpIHJldHVybjtcbiAgICBpZiAoISF2YWx1ZSkge1xuICAgICAgdGhpcy5vcGVuUGFuZWwoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbG9zZVBhbmVsKCk7XG4gICAgfVxuICB9XG4gIGdldCBvcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9vcGVuO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHZhbHVlOiBEYXRlIHwgbnVsbCkge1xuICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5ub3JtYWxpemVEYXRlKHZhbHVlKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuICBnZXQgdmFsdWUoKTogRGF0ZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCByYW5nZVZhbHVlKHZhbHVlOiBQZG1DYWxlbmRhclJhbmdlIHwgbnVsbCkge1xuICAgIHRoaXMuX3JhbmdlVmFsdWUgPSB2YWx1ZVxuICAgICAgPyB7XG4gICAgICAgICAgc3RhcnQ6IHRoaXMubm9ybWFsaXplRGF0ZSh2YWx1ZS5zdGFydCksXG4gICAgICAgICAgZW5kOiB0aGlzLm5vcm1hbGl6ZURhdGUodmFsdWUuZW5kKVxuICAgICAgICB9XG4gICAgICA6IG51bGw7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cbiAgZ2V0IHJhbmdlVmFsdWUoKTogUGRtQ2FsZW5kYXJSYW5nZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9yYW5nZVZhbHVlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95T3ZlcmxheSgpO1xuICB9XG5cbiAgZ2V0IHJlc29sdmVkVmFyaWFudCgpOiBQZG1DYWxlbmRhclZhcmlhbnQge1xuICAgIHJldHVybiB0aGlzLnZhcmlhbnQgPT09ICdyYW5nZScgPyAncmFuZ2UnIDogJ3NpbmdsZSc7XG4gIH1cblxuICBnZXQgdHJpZ2dlcklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaWQgfHwgYCR7dGhpcy5pbnN0YW5jZUlkfS10cmlnZ2VyYDtcbiAgfVxuXG4gIGdldCBwYW5lbElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuaWQgfHwgdGhpcy5pbnN0YW5jZUlkfS1wYW5lbGA7XG4gIH1cblxuICBnZXQgaGFzU2luZ2xlVmFsdWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRWYXJpYW50ID09PSAnc2luZ2xlJyAmJiAhIXRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgZ2V0IGhhc1JhbmdlVmFsdWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRWYXJpYW50ID09PSAncmFuZ2UnICYmICEhdGhpcy5fcmFuZ2VWYWx1ZT8uc3RhcnQ7XG4gIH1cblxuICBnZXQgZGlzcGxheVRleHQoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5yZXNvbHZlZFZhcmlhbnQgPT09ICdzaW5nbGUnKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdmFsdWUgPyB0aGlzLmZvcm1hdERhdGUodGhpcy5fdmFsdWUpIDogdGhpcy5wbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX3JhbmdlVmFsdWU/LnN0YXJ0ID8/IG51bGw7XG4gICAgY29uc3QgZW5kID0gdGhpcy5fcmFuZ2VWYWx1ZT8uZW5kID8/IG51bGw7XG5cbiAgICBpZiAoIXN0YXJ0KSB7XG4gICAgICByZXR1cm4gdGhpcy5yYW5nZVBsYWNlaG9sZGVyO1xuICAgIH1cblxuICAgIGlmICghZW5kKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5mb3JtYXREYXRlKHN0YXJ0KX0gLWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke3RoaXMuZm9ybWF0RGF0ZShzdGFydCl9IC0gJHt0aGlzLmZvcm1hdERhdGUoZW5kKX1gO1xuICB9XG5cbiAgZ2V0IHRleHRDbGFzc2VzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBoYXNWYWx1ZSA9IHRoaXMucmVzb2x2ZWRWYXJpYW50ID09PSAnc2luZ2xlJyA/IHRoaXMuaGFzU2luZ2xlVmFsdWUgOiB0aGlzLmhhc1JhbmdlVmFsdWU7XG4gICAgcmV0dXJuIFtcbiAgICAgICdtaW4tdy0wIGZsZXgtMSB0cnVuY2F0ZSB0ZXh0LWxlZnQgdGV4dC1zbSBsZWFkaW5nLTUnLFxuICAgICAgaGFzVmFsdWUgPyAndGV4dC1mb3JlZ3JvdW5kJyA6ICd0ZXh0LW11dGVkLWZvcmVncm91bmQnXG4gICAgXTtcbiAgfVxuXG4gIGdldCByb290Q2xhc3NlcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICdncmlkIGdhcC0yJyxcbiAgICAgIHRoaXMucmVzb2x2ZWRWYXJpYW50ID09PSAncmFuZ2UnID8gJ3ctWzI4MHB4XScgOiAndy1bMTk3cHhdJyxcbiAgICAgIHRoaXMuY2xhc3NOYW1lXG4gICAgXTtcbiAgfVxuXG4gIGdldCB0cmlnZ2VyQ2xhc3NlcygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgZm9jdXNTdHlsZSA9IHRoaXMuX29wZW4gfHwgdGhpcy50cmlnZ2VyRm9jdXNlZDtcblxuICAgIHJldHVybiBbXG4gICAgICAnYm9yZGVyLWlucHV0IGZvY3VzLXZpc2libGU6Ym9yZGVyLXJpbmcgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcvNTAgYXJpYS1pbnZhbGlkOnJpbmctMiBhcmlhLWludmFsaWQ6cmluZy1kZXN0cnVjdGl2ZSBhcmlhLWludmFsaWQ6Ym9yZGVyLWRlc3RydWN0aXZlIHJlbGF0aXZlIGZsZXggdy1mdWxsIGFwcGVhcmFuY2Utbm9uZSBpdGVtcy1jZW50ZXIgZ2FwLTIgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbGcgYm9yZGVyIGJnLWJhY2tncm91bmQgcHgtMyBweS1bNy41cHhdIHRleHQtbGVmdCB0ZXh0LXNtIHNoYWRvdy1zbSBvdXRsaW5lLW5vbmUgdHJhbnNpdGlvbi1jb2xvcnMnLFxuICAgICAgJ21pbi1oLVszNnB4XSBkaXNhYmxlZDpwb2ludGVyLWV2ZW50cy1ub25lIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwJyxcbiAgICAgIGZvY3VzU3R5bGVcbiAgICAgICAgPyAnYm9yZGVyLXJpbmcgcmluZy0yIHJpbmctcmluZy81MCdcbiAgICAgICAgOiAnJyxcbiAgICAgIHRoaXMuaW52YWxpZCA/ICdib3JkZXItZGVzdHJ1Y3RpdmUgcmluZy1kZXN0cnVjdGl2ZS8yMCcgOiAnJyxcbiAgICAgIHRoaXMudHJpZ2dlckNsYXNzTmFtZVxuICAgIF07XG4gIH1cblxuICB0b2dnbGVPcGVuKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldE9wZW4oIXRoaXMuX29wZW4pO1xuICB9XG5cbiAgb25UcmlnZ2VyRm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy50cmlnZ2VyRm9jdXNlZCA9IHRydWU7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvblRyaWdnZXJCbHVyKCk6IHZvaWQge1xuICAgIHRoaXMudHJpZ2dlckZvY3VzZWQgPSBmYWxzZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uQ2FsZW5kYXJWYWx1ZUNoYW5nZSh2YWx1ZTogRGF0ZSB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLl92YWx1ZSA9IHRoaXMubm9ybWFsaXplRGF0ZSh2YWx1ZSk7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuX3ZhbHVlID8gdGhpcy5jbG9uZURhdGUodGhpcy5fdmFsdWUpIDogbnVsbCk7XG5cbiAgICBpZiAodGhpcy5jbG9zZU9uU2VsZWN0ICYmIHRoaXMuX3ZhbHVlKSB7XG4gICAgICB0aGlzLnNldE9wZW4oZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBvbkNhbGVuZGFyUmFuZ2VWYWx1ZUNoYW5nZSh2YWx1ZTogUGRtQ2FsZW5kYXJSYW5nZSB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLl9yYW5nZVZhbHVlID0gdmFsdWVcbiAgICAgID8ge1xuICAgICAgICAgIHN0YXJ0OiB0aGlzLm5vcm1hbGl6ZURhdGUodmFsdWUuc3RhcnQpLFxuICAgICAgICAgIGVuZDogdGhpcy5ub3JtYWxpemVEYXRlKHZhbHVlLmVuZClcbiAgICAgICAgfVxuICAgICAgOiBudWxsO1xuXG4gICAgdGhpcy5yYW5nZVZhbHVlQ2hhbmdlLmVtaXQoXG4gICAgICB0aGlzLl9yYW5nZVZhbHVlXG4gICAgICAgID8ge1xuICAgICAgICAgICAgc3RhcnQ6IHRoaXMuX3JhbmdlVmFsdWUuc3RhcnQgPyB0aGlzLmNsb25lRGF0ZSh0aGlzLl9yYW5nZVZhbHVlLnN0YXJ0KSA6IG51bGwsXG4gICAgICAgICAgICBlbmQ6IHRoaXMuX3JhbmdlVmFsdWUuZW5kID8gdGhpcy5jbG9uZURhdGUodGhpcy5fcmFuZ2VWYWx1ZS5lbmQpIDogbnVsbFxuICAgICAgICAgIH1cbiAgICAgICAgOiBudWxsXG4gICAgKTtcblxuICAgIGlmICh0aGlzLmNsb3NlT25TZWxlY3QgJiYgdGhpcy5fcmFuZ2VWYWx1ZT8uc3RhcnQgJiYgdGhpcy5fcmFuZ2VWYWx1ZT8uZW5kKSB7XG4gICAgICB0aGlzLnNldE9wZW4oZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgb25DYWxlbmRhck1vbnRoQ2hhbmdlKG1vbnRoOiBEYXRlKTogdm9pZCB7XG4gICAgdGhpcy5tb250aENoYW5nZS5lbWl0KHRoaXMuY2xvbmVEYXRlKG1vbnRoKSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScpXG4gIG9uRXNjYXBlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9vcGVuKSB7XG4gICAgICB0aGlzLnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0T3BlbihuZXh0T3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLl9vcGVuID09PSBuZXh0T3Blbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChuZXh0T3Blbikge1xuICAgICAgdGhpcy5vcGVuUGFuZWwoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbG9zZVBhbmVsKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvcGVuUGFuZWwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZikgcmV0dXJuO1xuXG4gICAgY29uc3QgdHJpZ2dlckVsID0gdGhpcy50cmlnZ2VyUmVmPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmICghdHJpZ2dlckVsKSByZXR1cm47XG5cbiAgICB0aGlzLl9vcGVuID0gdHJ1ZTtcbiAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSBjcmVhdGVGbGV4aWJsZVBvc2l0aW9uU3RyYXRlZ3koXG4gICAgICB0aGlzLm92ZXJsYXksXG4gICAgICB0cmlnZ2VyRWwsXG4gICAgICA4XG4gICAgKTtcblxuICAgIC8vIFJlc29sdmUgcGFuZWxDbGFzczogb3ZlcmxheU9wdGlvbnMucGFuZWxDbGFzcyB3aW5zOyBvdGhlcndpc2UgbWFwIHBhbmVsQ2xhc3NOYW1lLlxuICAgIGNvbnN0IHJlc29sdmVkUGFuZWxDbGFzcyA9IHRoaXMub3ZlcmxheU9wdGlvbnM/LnBhbmVsQ2xhc3NcbiAgICAgID8/ICh0aGlzLnBhbmVsQ2xhc3NOYW1lID8gWydibG9jaycsIHRoaXMucGFuZWxDbGFzc05hbWVdIDogWydibG9jayddKTtcblxuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xuICAgICAgcG9zaXRpb25TdHJhdGVneSxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG4gICAgICAvLyBDb25zdW1lciBvdmVycmlkZXMgYXJlIHNwcmVhZCBsYXN0IOKAlCB0aGV5IHdpbiBvdmVyIGV2ZXJ5IGRlZmF1bHQgYWJvdmUuXG4gICAgICAuLi50aGlzLm92ZXJsYXlPcHRpb25zLFxuICAgICAgLy8gcGFuZWxDbGFzcyBhbHdheXMgb3ZlcnJpZGVzIGxhc3Q6IGl0IGFscmVhZHkgbWVyZ2VzIHBhbmVsQ2xhc3NOYW1lICsgb3ZlcmxheU9wdGlvbnMuXG4gICAgICBwYW5lbENsYXNzOiByZXNvbHZlZFBhbmVsQ2xhc3NcbiAgICB9KTtcblxuICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnBhbmVsVGVtcGxhdGVSZWYsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChwb3J0YWwpO1xuXG4gICAgdGhpcy5iYWNrZHJvcFN1YiA9IHRoaXMub3ZlcmxheVJlZi5vdXRzaWRlUG9pbnRlckV2ZW50cygpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBOb2RlO1xuICAgICAgaWYgKCF0cmlnZ2VyRWwuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICB0aGlzLmNsb3NlUGFuZWwoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZVBhbmVsKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5vdmVybGF5UmVmICYmICF0aGlzLl9vcGVuKSByZXR1cm47XG5cbiAgICB0aGlzLl9vcGVuID0gZmFsc2U7XG4gICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgIHRoaXMuZGVzdHJveU92ZXJsYXkoKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveU92ZXJsYXkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYmFja2Ryb3BTdWIpIHtcbiAgICAgIHRoaXMuYmFja2Ryb3BTdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuYmFja2Ryb3BTdWIgPSBudWxsO1xuICAgIH1cbiAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdERhdGUoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBmb3JtYXREYXRlRm5zKGRhdGUsIHRoaXMuZm9ybWF0IHx8ICdNTU0gZCwgeXl5eScpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZvcm1hdERhdGVGbnMoZGF0ZSwgJ01NTSBkLCB5eXl5Jyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVEYXRlKHZhbHVlOiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHx8IE51bWJlci5pc05hTih2YWx1ZS5nZXRUaW1lKCkpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERhdGUodmFsdWUuZ2V0RnVsbFllYXIoKSwgdmFsdWUuZ2V0TW9udGgoKSwgdmFsdWUuZ2V0RGF0ZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvbmVEYXRlKGRhdGU6IERhdGUpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKTtcbiAgfVxufVxuIiwiPGRpdiBbbmdDbGFzc109XCJyb290Q2xhc3Nlc1wiPlxuICA8cGRtLWxhYmVsICpuZ0lmPVwibGFiZWxcIiBbZm9ySWRdPVwidHJpZ2dlcklkXCIgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCIgW2NsYXNzTmFtZV09XCJsYWJlbENsYXNzTmFtZVwiPlxuICAgIHt7IGxhYmVsIH19XG4gIDwvcGRtLWxhYmVsPlxuXG4gIDxidXR0b25cbiAgICAjdHJpZ2dlckVsXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW2lkXT1cInRyaWdnZXJJZFwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIm9wZW5cIlxuICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwicGFuZWxJZFwiXG4gICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCInZGlhbG9nJ1wiXG4gICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImludmFsaWRcIlxuICAgIFtuZ0NsYXNzXT1cInRyaWdnZXJDbGFzc2VzXCJcbiAgICBbYXR0ci50aXRsZV09XCJkaXNwbGF5VGV4dFwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZU9wZW4oKVwiXG4gICAgKGZvY3VzKT1cIm9uVHJpZ2dlckZvY3VzKClcIlxuICAgIChibHVyKT1cIm9uVHJpZ2dlckJsdXIoKVwiXG4gID5cbiAgICA8c3BhbiBjbGFzcz1cImZsZXggaC01IHctNSBzaHJpbmstMCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcC0wLjUgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBjbGFzcz1cImgtNCB3LTRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuOFwiPlxuICAgICAgICA8cGF0aCBkPVwiTTggMnY0XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgICA8cGF0aCBkPVwiTTE2IDJ2NFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgICAgPHJlY3QgeD1cIjNcIiB5PVwiNC41XCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE2LjVcIiByeD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3JlY3Q+XG4gICAgICAgIDxwYXRoIGQ9XCJNMyA5LjVoMThcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgICA8L3N2Zz5cbiAgICA8L3NwYW4+XG5cbiAgICA8c3BhbiBbbmdDbGFzc109XCJ0ZXh0Q2xhc3Nlc1wiPnt7IGRpc3BsYXlUZXh0IH19PC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3BhbmVsVGVtcGxhdGU+XG4gIDxkaXYgW2lkXT1cInBhbmVsSWRcIiByb2xlPVwiZGlhbG9nXCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImxhYmVsID8gdHJpZ2dlcklkIDogbnVsbFwiPlxuICAgIDxwZG0tY2FsZW5kYXJcbiAgICAgIFt2YXJpYW50XT1cInJlc29sdmVkVmFyaWFudFwiXG4gICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgW3JhbmdlVmFsdWVdPVwicmFuZ2VWYWx1ZVwiXG4gICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgW2FsbG93U2FtZURheVJhbmdlXT1cImFsbG93U2FtZURheVJhbmdlXCJcbiAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgICAgW21heERhdGVdPVwibWF4RGF0ZVwiXG4gICAgICBbbWluWWVhcl09XCJtaW5ZZWFyXCJcbiAgICAgIFttYXhZZWFyXT1cIm1heFllYXJcIlxuICAgICAgW2Rpc2FibGVkRGF0ZXNdPVwiZGlzYWJsZWREYXRlc1wiXG4gICAgICBbaXNEYXRlRGlzYWJsZWRdPVwiaXNEYXRlRGlzYWJsZWRcIlxuICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uQ2FsZW5kYXJWYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIChyYW5nZVZhbHVlQ2hhbmdlKT1cIm9uQ2FsZW5kYXJSYW5nZVZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgKG1vbnRoQ2hhbmdlKT1cIm9uQ2FsZW5kYXJNb250aENoYW5nZSgkZXZlbnQpXCJcbiAgICA+PC9wZG0tY2FsZW5kYXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
362
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUVULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsTUFBTSxJQUFJLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQU1uRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNqRyxPQUFPLEVBQ04sc0JBQXNCLEVBQ3RCLG9CQUFvQixHQUNwQixNQUFNLDhCQUE4QixDQUFDOzs7Ozs7QUFFdEMsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7QUFPekIsTUFBTSxPQUFPLHNCQUFzQjtJQWNsQyxZQUNrQixHQUFzQixFQUN0QixPQUFnQixFQUNoQixnQkFBa0M7UUFGbEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBaEI1QyxXQUFNLEdBQWdCLElBQUksQ0FBQztRQUMzQixnQkFBVyxHQUE0QixJQUFJLENBQUM7UUFDNUMsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUVMLGVBQVUsR0FBRyxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO1FBQzlELG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRXZC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QWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBR0gsSUFBSTtzQkFEUCxLQUFLO2dCQWNGLEtBQUs7c0JBRFIsS0FBSztnQkFVRixVQUFVO3NCQURiLEtBQUs7Z0JBMkpOLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXG5cdENvbXBvbmVudCxcblx0RWxlbWVudFJlZixcblx0RXZlbnRFbWl0dGVyLFxuXHRIb3N0TGlzdGVuZXIsXG5cdElucHV0LFxuXHRPbkRlc3Ryb3ksXG5cdE91dHB1dCxcblx0Vmlld0NoaWxkLFxuXHRWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVJlZiB9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BvcnRhbFwiO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IGZvcm1hdCBhcyBmb3JtYXREYXRlRm5zIH0gZnJvbSBcImRhdGUtZm5zXCI7XG5pbXBvcnQge1xuXHRQZG1DYWxlbmRhclJhbmdlLFxuXHRQZG1DYWxlbmRhclZhcmlhbnQsXG59IGZyb20gXCIuLi9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnRcIjtcbmltcG9ydCB7IFBkbU92ZXJsYXlPcHRpb25zIH0gZnJvbSBcIi4uLy4uL292ZXJsYXkvcGRtLW92ZXJsYXktb3B0aW9uc1wiO1xuaW1wb3J0IHsgY3JlYXRlRmxleGlibGVQb3NpdGlvblN0cmF0ZWd5IH0gZnJvbSBcIi4uLy4uL292ZXJsYXkvY3JlYXRlLWZsZXhpYmxlLXBvc2l0aW9uLXN0cmF0ZWd5XCI7XG5pbXBvcnQge1xuXHRtZXJnZU92ZXJsYXlQYW5lbENsYXNzLFxuXHRPVkVSTEFZX0JBU0VfWl9JTkRFWCxcbn0gZnJvbSBcIi4uLy4uL292ZXJsYXkvei1pbmRleC1oZWxwZXJcIjtcblxubGV0IG5leHREYXRlUGlja2VySWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6IFwicGRtLWRhdGUtcGlja2VyXCIsXG5cdHRlbXBsYXRlVXJsOiBcIi4vZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWxcIixcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFBkbURhdGVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXHRwcml2YXRlIF92YWx1ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuXHRwcml2YXRlIF9yYW5nZVZhbHVlOiBQZG1DYWxlbmRhclJhbmdlIHwgbnVsbCA9IG51bGw7XG5cdHByaXZhdGUgX29wZW4gPSBmYWxzZTtcblxuXHRwcml2YXRlIHJlYWRvbmx5IGluc3RhbmNlSWQgPSBgcGRtLWRhdGUtcGlja2VyLSR7KytuZXh0RGF0ZVBpY2tlcklkfWA7XG5cdHByaXZhdGUgdHJpZ2dlckZvY3VzZWQgPSBmYWxzZTtcblxuXHRwcml2YXRlIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCBudWxsID0gbnVsbDtcblx0cHJpdmF0ZSBiYWNrZHJvcFN1YjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG5cblx0QFZpZXdDaGlsZChcInRyaWdnZXJFbFwiKSBwcml2YXRlIHRyaWdnZXJSZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pjtcblx0QFZpZXdDaGlsZChcInBhbmVsVGVtcGxhdGVcIikgcHJpdmF0ZSBwYW5lbFRlbXBsYXRlUmVmITogYW55O1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcblx0XHRwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXk6IE92ZXJsYXksXG5cdFx0cHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuXHQpIHt9XG5cblx0QElucHV0KCkgaWQgPSBcIlwiO1xuXHRASW5wdXQoKSB2YXJpYW50OiBQZG1DYWxlbmRhclZhcmlhbnQgfCBzdHJpbmcgPSBcInNpbmdsZVwiO1xuXHRASW5wdXQoKSBsYWJlbCA9IFwiXCI7XG5cdEBJbnB1dCgpIGxhYmVsQ2xhc3NOYW1lID0gXCJcIjtcblx0QElucHV0KCkgY2xhc3NOYW1lID0gXCJcIjtcblx0QElucHV0KCkgdHJpZ2dlckNsYXNzTmFtZSA9IFwiXCI7XG5cdC8qKlxuXHQgKiBBZGRpdGlvbmFsIENTUyBjbGFzc2VzIGFwcGxpZWQgdG8gdGhlIG92ZXJsYXkgcGFuZWwuXG5cdCAqIEJhY2t3YXJkLWNvbXBhdGlibGU6IG1hcHBlZCB0byBgb3ZlcmxheU9wdGlvbnMucGFuZWxDbGFzc2Agd2hlbiBgb3ZlcmxheU9wdGlvbnNgIGlzIG5vdCBzZXQuXG5cdCAqIFdoZW4gYm90aCBhcmUgc3VwcGxpZWQsIGBvdmVybGF5T3B0aW9ucy5wYW5lbENsYXNzYCB0YWtlcyBwcmVjZWRlbmNlLlxuXHQgKi9cblx0QElucHV0KCkgcGFuZWxDbGFzc05hbWUgPSBcIlwiO1xuXHQvKipcblx0ICogT3B0aW9uYWwgQ0RLIE92ZXJsYXlDb25maWcgb3ZlcnJpZGVzLlxuXHQgKiBTaGFsbG93LW1lcmdlZCBvbiB0b3Agb2YgY29tcG9uZW50IGRlZmF1bHRzIOKAlCBjb25zdW1lciBhbHdheXMgd2lucy5cblx0ICogUHJvdmlkaW5nIGBwb3NpdGlvblN0cmF0ZWd5YCBvciBgc2Nyb2xsU3RyYXRlZ3lgIHJlcGxhY2VzIHRoZSBjb21wb25lbnQgZGVmYXVsdCBlbnRpcmVseS5cblx0ICovXG5cdEBJbnB1dCgpIG92ZXJsYXlPcHRpb25zPzogUGRtT3ZlcmxheU9wdGlvbnM7XG5cdEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gXCJQaWNrIGEgZGF0ZVwiO1xuXHRASW5wdXQoKSByYW5nZVBsYWNlaG9sZGVyID0gXCJQaWNrIGEgZGF0ZSByYW5nZVwiO1xuXHRASW5wdXQoKSBmb3JtYXQgPSBcIk1NTSBkLCB5eXl5XCI7XG5cdEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cdEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XG5cdEBJbnB1dCgpIHJlcXVpcmVkID0gZmFsc2U7XG5cdEBJbnB1dCgpIGludmFsaWQgPSBmYWxzZTtcblx0QElucHV0KCkgYWxsb3dTYW1lRGF5UmFuZ2UgPSB0cnVlO1xuXHRASW5wdXQoKSBjbG9zZU9uU2VsZWN0ID0gdHJ1ZTtcblx0QElucHV0KCkgbWluRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuXHRASW5wdXQoKSBtYXhEYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cdEBJbnB1dCgpIG1pblllYXI6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXHRASW5wdXQoKSBtYXhZZWFyOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblx0QElucHV0KCkgZGlzYWJsZWREYXRlczogRGF0ZVtdID0gW107XG5cdEBJbnB1dCgpIGlzRGF0ZURpc2FibGVkOiAoKGRhdGU6IERhdGUpID0+IGJvb2xlYW4pIHwgbnVsbCA9IG51bGw7XG5cblx0QE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlIHwgbnVsbD4oKTtcblx0QE91dHB1dCgpIHJhbmdlVmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFBkbUNhbGVuZGFyUmFuZ2UgfCBudWxsPigpO1xuXHRAT3V0cHV0KCkgb3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblx0QE91dHB1dCgpIG1vbnRoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG5cdEBJbnB1dCgpXG5cdHNldCBvcGVuKHZhbHVlOiBib29sZWFuKSB7XG5cdFx0aWYgKHRoaXMuX29wZW4gPT09ICEhdmFsdWUpIHJldHVybjtcblx0XHRpZiAodmFsdWUpIHtcblx0XHRcdHRoaXMub3BlblBhbmVsKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuY2xvc2VQYW5lbCgpO1xuXHRcdH1cblx0fVxuXHRnZXQgb3BlbigpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5fb3Blbjtcblx0fVxuXG5cdEBJbnB1dCgpXG5cdHNldCB2YWx1ZSh2YWx1ZTogRGF0ZSB8IG51bGwpIHtcblx0XHR0aGlzLl92YWx1ZSA9IHRoaXMubm9ybWFsaXplRGF0ZSh2YWx1ZSk7XG5cdFx0dGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG5cdH1cblx0Z2V0IHZhbHVlKCk6IERhdGUgfCBudWxsIHtcblx0XHRyZXR1cm4gdGhpcy5fdmFsdWU7XG5cdH1cblxuXHRASW5wdXQoKVxuXHRzZXQgcmFuZ2VWYWx1ZSh2YWx1ZTogUGRtQ2FsZW5kYXJSYW5nZSB8IG51bGwpIHtcblx0XHR0aGlzLl9yYW5nZVZhbHVlID0gdmFsdWVcblx0XHRcdD8ge1xuXHRcdFx0XHRcdHN0YXJ0OiB0aGlzLm5vcm1hbGl6ZURhdGUodmFsdWUuc3RhcnQpLFxuXHRcdFx0XHRcdGVuZDogdGhpcy5ub3JtYWxpemVEYXRlKHZhbHVlLmVuZCksXG5cdFx0XHRcdH1cblx0XHRcdDogbnVsbDtcblx0XHR0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblx0fVxuXHRnZXQgcmFuZ2VWYWx1ZSgpOiBQZG1DYWxlbmRhclJhbmdlIHwgbnVsbCB7XG5cdFx0cmV0dXJuIHRoaXMuX3JhbmdlVmFsdWU7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcblx0XHR0aGlzLmRlc3Ryb3lPdmVybGF5KCk7XG5cdH1cblxuXHRnZXQgcmVzb2x2ZWRWYXJpYW50KCk6IFBkbUNhbGVuZGFyVmFyaWFudCB7XG5cdFx0cmV0dXJuIHRoaXMudmFyaWFudCA9PT0gXCJyYW5nZVwiID8gXCJyYW5nZVwiIDogXCJzaW5nbGVcIjtcblx0fVxuXG5cdGdldCB0cmlnZ2VySWQoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5pZCB8fCBgJHt0aGlzLmluc3RhbmNlSWR9LXRyaWdnZXJgO1xuXHR9XG5cblx0Z2V0IHBhbmVsSWQoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYCR7dGhpcy5pZCB8fCB0aGlzLmluc3RhbmNlSWR9LXBhbmVsYDtcblx0fVxuXG5cdGdldCBoYXNTaW5nbGVWYWx1ZSgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5yZXNvbHZlZFZhcmlhbnQgPT09IFwic2luZ2xlXCIgJiYgISF0aGlzLl92YWx1ZTtcblx0fVxuXG5cdGdldCBoYXNSYW5nZVZhbHVlKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLnJlc29sdmVkVmFyaWFudCA9PT0gXCJyYW5nZVwiICYmICEhdGhpcy5fcmFuZ2VWYWx1ZT8uc3RhcnQ7XG5cdH1cblxuXHRnZXQgZGlzcGxheVRleHQoKTogc3RyaW5nIHtcblx0XHRpZiAodGhpcy5yZXNvbHZlZFZhcmlhbnQgPT09IFwic2luZ2xlXCIpIHtcblx0XHRcdHJldHVybiB0aGlzLl92YWx1ZSA/IHRoaXMuZm9ybWF0RGF0ZSh0aGlzLl92YWx1ZSkgOiB0aGlzLnBsYWNlaG9sZGVyO1xuXHRcdH1cblxuXHRcdGNvbnN0IHN0YXJ0ID0gdGhpcy5fcmFuZ2VWYWx1ZT8uc3RhcnQgPz8gbnVsbDtcblx0XHRjb25zdCBlbmQgPSB0aGlzLl9yYW5nZVZhbHVlPy5lbmQgPz8gbnVsbDtcblxuXHRcdGlmICghc3RhcnQpIHtcblx0XHRcdHJldHVybiB0aGlzLnJhbmdlUGxhY2Vob2xkZXI7XG5cdFx0fVxuXG5cdFx0aWYgKCFlbmQpIHtcblx0XHRcdHJldHVybiBgJHt0aGlzLmZvcm1hdERhdGUoc3RhcnQpfSAtYDtcblx0XHR9XG5cblx0XHRyZXR1cm4gYCR7dGhpcy5mb3JtYXREYXRlKHN0YXJ0KX0gLSAke3RoaXMuZm9ybWF0RGF0ZShlbmQpfWA7XG5cdH1cblxuXHRnZXQgdGV4dENsYXNzZXMoKTogc3RyaW5nW10ge1xuXHRcdGNvbnN0IGhhc1ZhbHVlID1cblx0XHRcdHRoaXMucmVzb2x2ZWRWYXJpYW50ID09PSBcInNpbmdsZVwiXG5cdFx0XHRcdD8gdGhpcy5oYXNTaW5nbGVWYWx1ZVxuXHRcdFx0XHQ6IHRoaXMuaGFzUmFuZ2VWYWx1ZTtcblx0XHRyZXR1cm4gW1xuXHRcdFx0XCJtaW4tdy0wIGZsZXgtMSB0cnVuY2F0ZSB0ZXh0LWxlZnQgdGV4dC1zbSBsZWFkaW5nLTVcIixcblx0XHRcdGhhc1ZhbHVlID8gXCJ0ZXh0LWZvcmVncm91bmRcIiA6IFwidGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsXG5cdFx0XTtcblx0fVxuXG5cdGdldCByb290Q2xhc3NlcygpOiBzdHJpbmdbXSB7XG5cdFx0cmV0dXJuIFtcblx0XHRcdFwiZ3JpZCBnYXAtMlwiLFxuXHRcdFx0dGhpcy5yZXNvbHZlZFZhcmlhbnQgPT09IFwicmFuZ2VcIiA/IFwidy1bMjgwcHhdXCIgOiBcInctWzE5N3B4XVwiLFxuXHRcdFx0dGhpcy5jbGFzc05hbWUsXG5cdFx0XTtcblx0fVxuXG5cdGdldCB0cmlnZ2VyQ2xhc3NlcygpOiBzdHJpbmdbXSB7XG5cdFx0Y29uc3QgZm9jdXNTdHlsZSA9IHRoaXMuX29wZW4gfHwgdGhpcy50cmlnZ2VyRm9jdXNlZDtcblxuXHRcdHJldHVybiBbXG5cdFx0XHRcImJvcmRlci1pbnB1dCBmb2N1cy12aXNpYmxlOmJvcmRlci1yaW5nIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1yaW5nLzUwIGFyaWEtaW52YWxpZDpyaW5nLTIgYXJpYS1pbnZhbGlkOnJpbmctZGVzdHJ1Y3RpdmUgYXJpYS1pbnZhbGlkOmJvcmRlci1kZXN0cnVjdGl2ZSByZWxhdGl2ZSBmbGV4IHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgaXRlbXMtY2VudGVyIGdhcC0yIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLWxnIGJvcmRlciBiZy1iYWNrZ3JvdW5kIHB4LTMgcHktWzcuNXB4XSB0ZXh0LWxlZnQgdGV4dC1zbSBzaGFkb3ctc20gb3V0bGluZS1ub25lIHRyYW5zaXRpb24tY29sb3JzXCIsXG5cdFx0XHRcIm1pbi1oLVszNnB4XSBkaXNhYmxlZDpwb2ludGVyLWV2ZW50cy1ub25lIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwXCIsXG5cdFx0XHRmb2N1c1N0eWxlID8gXCJib3JkZXItcmluZyByaW5nLTIgcmluZy1yaW5nLzUwXCIgOiBcIlwiLFxuXHRcdFx0dGhpcy5pbnZhbGlkID8gXCJib3JkZXItZGVzdHJ1Y3RpdmUgcmluZy1kZXN0cnVjdGl2ZS8yMFwiIDogXCJcIixcblx0XHRcdHRoaXMudHJpZ2dlckNsYXNzTmFtZSxcblx0XHRdO1xuXHR9XG5cblx0dG9nZ2xlT3BlbigpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLnJlYWRvbmx5KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5zZXRPcGVuKCF0aGlzLl9vcGVuKTtcblx0fVxuXG5cdG9uVHJpZ2dlckZvY3VzKCk6IHZvaWQge1xuXHRcdHRoaXMudHJpZ2dlckZvY3VzZWQgPSB0cnVlO1xuXHRcdHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXHR9XG5cblx0b25UcmlnZ2VyQmx1cigpOiB2b2lkIHtcblx0XHR0aGlzLnRyaWdnZXJGb2N1c2VkID0gZmFsc2U7XG5cdFx0dGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG5cdH1cblxuXHRvbkNhbGVuZGFyVmFsdWVDaGFuZ2UodmFsdWU6IERhdGUgfCBudWxsKTogdm9pZCB7XG5cdFx0dGhpcy5fdmFsdWUgPSB0aGlzLm5vcm1hbGl6ZURhdGUodmFsdWUpO1xuXHRcdHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLl92YWx1ZSA/IHRoaXMuY2xvbmVEYXRlKHRoaXMuX3ZhbHVlKSA6IG51bGwpO1xuXG5cdFx0aWYgKHRoaXMuY2xvc2VPblNlbGVjdCAmJiB0aGlzLl92YWx1ZSkge1xuXHRcdFx0dGhpcy5zZXRPcGVuKGZhbHNlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG5cdFx0fVxuXHR9XG5cblx0b25DYWxlbmRhclJhbmdlVmFsdWVDaGFuZ2UodmFsdWU6IFBkbUNhbGVuZGFyUmFuZ2UgfCBudWxsKTogdm9pZCB7XG5cdFx0dGhpcy5fcmFuZ2VWYWx1ZSA9IHZhbHVlXG5cdFx0XHQ/IHtcblx0XHRcdFx0XHRzdGFydDogdGhpcy5ub3JtYWxpemVEYXRlKHZhbHVlLnN0YXJ0KSxcblx0XHRcdFx0XHRlbmQ6IHRoaXMubm9ybWFsaXplRGF0ZSh2YWx1ZS5lbmQpLFxuXHRcdFx0XHR9XG5cdFx0XHQ6IG51bGw7XG5cblx0XHR0aGlzLnJhbmdlVmFsdWVDaGFuZ2UuZW1pdChcblx0XHRcdHRoaXMuX3JhbmdlVmFsdWVcblx0XHRcdFx0PyB7XG5cdFx0XHRcdFx0XHRzdGFydDogdGhpcy5fcmFuZ2VWYWx1ZS5zdGFydFxuXHRcdFx0XHRcdFx0XHQ/IHRoaXMuY2xvbmVEYXRlKHRoaXMuX3JhbmdlVmFsdWUuc3RhcnQpXG5cdFx0XHRcdFx0XHRcdDogbnVsbCxcblx0XHRcdFx0XHRcdGVuZDogdGhpcy5fcmFuZ2VWYWx1ZS5lbmRcblx0XHRcdFx0XHRcdFx0PyB0aGlzLmNsb25lRGF0ZSh0aGlzLl9yYW5nZVZhbHVlLmVuZClcblx0XHRcdFx0XHRcdFx0OiBudWxsLFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0OiBudWxsLFxuXHRcdCk7XG5cblx0XHRpZiAoXG5cdFx0XHR0aGlzLmNsb3NlT25TZWxlY3QgJiZcblx0XHRcdHRoaXMuX3JhbmdlVmFsdWU/LnN0YXJ0ICYmXG5cdFx0XHR0aGlzLl9yYW5nZVZhbHVlPy5lbmRcblx0XHQpIHtcblx0XHRcdHRoaXMuc2V0T3BlbihmYWxzZSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG5cdH1cblxuXHRvbkNhbGVuZGFyTW9udGhDaGFuZ2UobW9udGg6IERhdGUpOiB2b2lkIHtcblx0XHR0aGlzLm1vbnRoQ2hhbmdlLmVtaXQodGhpcy5jbG9uZURhdGUobW9udGgpKTtcblx0fVxuXG5cdEBIb3N0TGlzdGVuZXIoXCJkb2N1bWVudDprZXlkb3duLmVzY2FwZVwiKVxuXHRvbkVzY2FwZSgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5fb3Blbikge1xuXHRcdFx0dGhpcy5zZXRPcGVuKGZhbHNlKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHNldE9wZW4obmV4dE9wZW46IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAodGhpcy5fb3BlbiA9PT0gbmV4dE9wZW4pIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAobmV4dE9wZW4pIHtcblx0XHRcdHRoaXMub3BlblBhbmVsKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuY2xvc2VQYW5lbCgpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgb3BlblBhbmVsKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLm92ZXJsYXlSZWYpIHJldHVybjtcblxuXHRcdGNvbnN0IHRyaWdnZXJFbCA9IHRoaXMudHJpZ2dlclJlZj8ubmF0aXZlRWxlbWVudDtcblx0XHRpZiAoIXRyaWdnZXJFbCkgcmV0dXJuO1xuXG5cdFx0dGhpcy5fb3BlbiA9IHRydWU7XG5cdFx0dGhpcy5vcGVuQ2hhbmdlLmVtaXQodHJ1ZSk7XG5cdFx0dGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG5cblx0XHRjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gY3JlYXRlRmxleGlibGVQb3NpdGlvblN0cmF0ZWd5KFxuXHRcdFx0dGhpcy5vdmVybGF5LFxuXHRcdFx0dHJpZ2dlckVsLFxuXHRcdFx0OCxcblx0XHQpO1xuXG5cdFx0Ly8gQ1JJVElDQUw6IFVzZSBtZXJnZU92ZXJsYXlQYW5lbENsYXNzIHRvIGVuc3VyZSB6LWluZGV4IGlzIG5ldmVyIGxvc3QuXG5cdFx0Ly8gQ29uc3VtZXIgY2xhc3NlcyBhcmUgYXBwZW5kZWQgQUZURVIgYmFzZSB6LWluZGV4LlxuXHRcdGNvbnN0IHpJbmRleEVuZm9yY2VkID0gbWVyZ2VPdmVybGF5UGFuZWxDbGFzcyhcblx0XHRcdE9WRVJMQVlfQkFTRV9aX0lOREVYLFxuXHRcdFx0dGhpcy5wYW5lbENsYXNzTmFtZSxcblx0XHQpO1xuXG5cdFx0Ly8gUmVzb2x2ZSBwYW5lbENsYXNzOiBvdmVybGF5T3B0aW9ucy5wYW5lbENsYXNzIHdpbnM7IG90aGVyd2lzZSB1c2Ugei1pbmRleCBlbmZvcmNlZC5cblx0XHRjb25zdCByZXNvbHZlZFBhbmVsQ2xhc3MgPSB0aGlzLm92ZXJsYXlPcHRpb25zPy5wYW5lbENsYXNzXG5cdFx0XHQ/IG1lcmdlT3ZlcmxheVBhbmVsQ2xhc3MoXG5cdFx0XHRcdFx0T1ZFUkxBWV9CQVNFX1pfSU5ERVgsXG5cdFx0XHRcdFx0dGhpcy5vdmVybGF5T3B0aW9ucy5wYW5lbENsYXNzLFxuXHRcdFx0XHQpXG5cdFx0XHQ6IHpJbmRleEVuZm9yY2VkO1xuXG5cdFx0dGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG5cdFx0XHRwb3NpdGlvblN0cmF0ZWd5LFxuXHRcdFx0c2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSxcblx0XHRcdC8vIENvbnN1bWVyIG92ZXJyaWRlcyBhcmUgc3ByZWFkIGZpcnN0LlxuXHRcdFx0Li4udGhpcy5vdmVybGF5T3B0aW9ucyxcblx0XHRcdC8vIHBhbmVsQ2xhc3MgYWx3YXlzIGVuZm9yY2VkIGxhc3QgdG8gcHJlc2VydmUgei1pbmRleC5cblx0XHRcdHBhbmVsQ2xhc3M6IHJlc29sdmVkUGFuZWxDbGFzcyxcblx0XHR9KTtcblxuXHRcdGNvbnN0IHBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbChcblx0XHRcdHRoaXMucGFuZWxUZW1wbGF0ZVJlZixcblx0XHRcdHRoaXMudmlld0NvbnRhaW5lclJlZixcblx0XHQpO1xuXHRcdHRoaXMub3ZlcmxheVJlZi5hdHRhY2gocG9ydGFsKTtcblxuXHRcdHRoaXMuYmFja2Ryb3BTdWIgPSB0aGlzLm92ZXJsYXlSZWZcblx0XHRcdC5vdXRzaWRlUG9pbnRlckV2ZW50cygpXG5cdFx0XHQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuXHRcdFx0XHRjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgTm9kZTtcblx0XHRcdFx0aWYgKCF0cmlnZ2VyRWwuY29udGFpbnModGFyZ2V0KSkge1xuXHRcdFx0XHRcdHRoaXMuY2xvc2VQYW5lbCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblxuXHRcdHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXHR9XG5cblx0cHJpdmF0ZSBjbG9zZVBhbmVsKCk6IHZvaWQge1xuXHRcdGlmICghdGhpcy5vdmVybGF5UmVmICYmICF0aGlzLl9vcGVuKSByZXR1cm47XG5cblx0XHR0aGlzLl9vcGVuID0gZmFsc2U7XG5cdFx0dGhpcy5vcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xuXHRcdHRoaXMuZGVzdHJveU92ZXJsYXkoKTtcblx0XHR0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblx0fVxuXG5cdHByaXZhdGUgZGVzdHJveU92ZXJsYXkoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuYmFja2Ryb3BTdWIpIHtcblx0XHRcdHRoaXMuYmFja2Ryb3BTdWIudW5zdWJzY3JpYmUoKTtcblx0XHRcdHRoaXMuYmFja2Ryb3BTdWIgPSBudWxsO1xuXHRcdH1cblx0XHRpZiAodGhpcy5vdmVybGF5UmVmKSB7XG5cdFx0XHR0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuXHRcdFx0dGhpcy5vdmVybGF5UmVmID0gbnVsbDtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGZvcm1hdERhdGUoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG5cdFx0dHJ5IHtcblx0XHRcdHJldHVybiBmb3JtYXREYXRlRm5zKGRhdGUsIHRoaXMuZm9ybWF0IHx8IFwiTU1NIGQsIHl5eXlcIik7XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHRyZXR1cm4gZm9ybWF0RGF0ZUZucyhkYXRlLCBcIk1NTSBkLCB5eXl5XCIpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgbm9ybWFsaXplRGF0ZSh2YWx1ZTogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQpOiBEYXRlIHwgbnVsbCB7XG5cdFx0aWYgKCEodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB8fCBOdW1iZXIuaXNOYU4odmFsdWUuZ2V0VGltZSgpKSkge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG5ldyBEYXRlKHZhbHVlLmdldEZ1bGxZZWFyKCksIHZhbHVlLmdldE1vbnRoKCksIHZhbHVlLmdldERhdGUoKSk7XG5cdH1cblxuXHRwcml2YXRlIGNsb25lRGF0ZShkYXRlOiBEYXRlKTogRGF0ZSB7XG5cdFx0cmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSk7XG5cdH1cbn1cbiIsIjxkaXYgW25nQ2xhc3NdPVwicm9vdENsYXNzZXNcIj5cbiAgPHBkbS1sYWJlbCAqbmdJZj1cImxhYmVsXCIgW2ZvcklkXT1cInRyaWdnZXJJZFwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiIFtjbGFzc05hbWVdPVwibGFiZWxDbGFzc05hbWVcIj5cbiAgICB7eyBsYWJlbCB9fVxuICA8L3BkbS1sYWJlbD5cblxuICA8YnV0dG9uXG4gICAgI3RyaWdnZXJFbFxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFtpZF09XCJ0cmlnZ2VySWRcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJvcGVuXCJcbiAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cInBhbmVsSWRcIlxuICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiJ2RpYWxvZydcIlxuICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJpbnZhbGlkXCJcbiAgICBbbmdDbGFzc109XCJ0cmlnZ2VyQ2xhc3Nlc1wiXG4gICAgW2F0dHIudGl0bGVdPVwiZGlzcGxheVRleHRcIlxuICAgIChjbGljayk9XCJ0b2dnbGVPcGVuKClcIlxuICAgIChmb2N1cyk9XCJvblRyaWdnZXJGb2N1cygpXCJcbiAgICAoYmx1cik9XCJvblRyaWdnZXJCbHVyKClcIlxuICA+XG4gICAgPHNwYW4gY2xhc3M9XCJmbGV4IGgtNSB3LTUgc2hyaW5rLTAgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHAtMC41IHRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgY2xhc3M9XCJoLTQgdy00XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjhcIj5cbiAgICAgICAgPHBhdGggZD1cIk04IDJ2NFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgICAgPHBhdGggZD1cIk0xNiAydjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgICAgIDxyZWN0IHg9XCIzXCIgeT1cIjQuNVwiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxNi41XCIgcng9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9yZWN0PlxuICAgICAgICA8cGF0aCBkPVwiTTMgOS41aDE4XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgPC9zdmc+XG4gICAgPC9zcGFuPlxuXG4gICAgPHNwYW4gW25nQ2xhc3NdPVwidGV4dENsYXNzZXNcIj57eyBkaXNwbGF5VGV4dCB9fTwvc3Bhbj5cbiAgPC9idXR0b24+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNwYW5lbFRlbXBsYXRlPlxuICA8ZGl2IFtpZF09XCJwYW5lbElkXCIgcm9sZT1cImRpYWxvZ1wiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJsYWJlbCA/IHRyaWdnZXJJZCA6IG51bGxcIj5cbiAgICA8cGRtLWNhbGVuZGFyXG4gICAgICBbdmFyaWFudF09XCJyZXNvbHZlZFZhcmlhbnRcIlxuICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgIFtyYW5nZVZhbHVlXT1cInJhbmdlVmFsdWVcIlxuICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgIFthbGxvd1NhbWVEYXlSYW5nZV09XCJhbGxvd1NhbWVEYXlSYW5nZVwiXG4gICAgICBbbWluRGF0ZV09XCJtaW5EYXRlXCJcbiAgICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxuICAgICAgW21pblllYXJdPVwibWluWWVhclwiXG4gICAgICBbbWF4WWVhcl09XCJtYXhZZWFyXCJcbiAgICAgIFtkaXNhYmxlZERhdGVzXT1cImRpc2FibGVkRGF0ZXNcIlxuICAgICAgW2lzRGF0ZURpc2FibGVkXT1cImlzRGF0ZURpc2FibGVkXCJcbiAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkNhbGVuZGFyVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAocmFuZ2VWYWx1ZUNoYW5nZSk9XCJvbkNhbGVuZGFyUmFuZ2VWYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIChtb250aENoYW5nZSk9XCJvbkNhbGVuZGFyTW9udGhDaGFuZ2UoJGV2ZW50KVwiXG4gICAgPjwvcGRtLWNhbGVuZGFyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|