@tolle_/tolle-ui 18.2.23 → 18.2.25
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/accordion-item.component.mjs +17 -5
- package/esm2022/lib/alert-dialog-dynamic.component.mjs +1 -1
- package/esm2022/lib/alert-dialog.component.mjs +48 -10
- package/esm2022/lib/alert-dialog.service.mjs +13 -2
- package/esm2022/lib/alert.component.mjs +5 -5
- package/esm2022/lib/avatar.component.mjs +30 -9
- package/esm2022/lib/badge.component.mjs +41 -15
- package/esm2022/lib/breadcrumb-link.component.mjs +5 -5
- package/esm2022/lib/button.component.mjs +14 -3
- package/esm2022/lib/calendar.component.mjs +99 -17
- package/esm2022/lib/card.component.mjs +29 -9
- package/esm2022/lib/carousel/carousel.component.mjs +19 -3
- package/esm2022/lib/checkbox.component.mjs +44 -21
- package/esm2022/lib/collapsible.component.mjs +12 -4
- package/esm2022/lib/country-selector.component.mjs +140 -20
- package/esm2022/lib/data-table.component.mjs +27 -16
- package/esm2022/lib/date-picker.component.mjs +60 -25
- package/esm2022/lib/date-range-picker.component.mjs +64 -26
- package/esm2022/lib/dropdown-item.component.mjs +19 -5
- package/esm2022/lib/dropdown-label.component.mjs +3 -3
- package/esm2022/lib/dropdown-menu.component.mjs +3 -3
- package/esm2022/lib/dropdown-separator.component.mjs +3 -3
- package/esm2022/lib/dropdown-trigger.directive.mjs +7 -3
- package/esm2022/lib/empty-state.component.mjs +3 -3
- package/esm2022/lib/hover-card.component.mjs +4 -2
- package/esm2022/lib/input.component.mjs +7 -5
- package/esm2022/lib/label.component.mjs +2 -2
- package/esm2022/lib/masked-input.component.mjs +3 -3
- package/esm2022/lib/modal.component.mjs +58 -22
- package/esm2022/lib/modal.service.mjs +13 -1
- package/esm2022/lib/multi-select.component.mjs +228 -20
- package/esm2022/lib/otp.component.mjs +6 -3
- package/esm2022/lib/pagination.component.mjs +19 -9
- package/esm2022/lib/progress.component.mjs +8 -5
- package/esm2022/lib/radio-group.component.mjs +51 -3
- package/esm2022/lib/radio-item.component.mjs +46 -8
- package/esm2022/lib/radio-service.mjs +60 -1
- package/esm2022/lib/range-calendar.component.mjs +317 -98
- package/esm2022/lib/resizable-panel.component.mjs +5 -4
- package/esm2022/lib/scroll-area.component.mjs +5 -5
- package/esm2022/lib/segment.component.mjs +73 -7
- package/esm2022/lib/select-item.component.mjs +20 -2
- package/esm2022/lib/select-separator.component.mjs +3 -3
- package/esm2022/lib/select.component.mjs +221 -14
- package/esm2022/lib/separator.component.mjs +12 -6
- package/esm2022/lib/sheet-ref.mjs +8 -1
- package/esm2022/lib/sheet-wrapper.component.mjs +27 -11
- package/esm2022/lib/sheet.component.mjs +57 -16
- package/esm2022/lib/sheet.service.mjs +5 -1
- package/esm2022/lib/sidebar.component.mjs +73 -15
- package/esm2022/lib/skeleton.component.mjs +19 -5
- package/esm2022/lib/switch.component.mjs +59 -53
- package/esm2022/lib/tabs.component.mjs +75 -13
- package/esm2022/lib/tag-input.component.mjs +6 -3
- package/esm2022/lib/textarea.component.mjs +9 -7
- package/esm2022/lib/theme.service.mjs +114 -138
- package/esm2022/lib/toaster.component.mjs +19 -9
- package/esm2022/lib/toggle-group.component.mjs +76 -4
- package/esm2022/lib/tolle-config.mjs +1 -1
- package/esm2022/lib/tooltip.directive.mjs +41 -17
- package/esm2022/lib/utils/color.mjs +324 -0
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/tolle-ui.mjs +2715 -682
- package/fesm2022/tolle-ui.mjs.map +1 -1
- package/lib/alert-dialog.component.d.ts +10 -1
- package/lib/avatar.component.d.ts +16 -3
- package/lib/badge.component.d.ts +17 -5
- package/lib/button.component.d.ts +8 -1
- package/lib/calendar.component.d.ts +21 -3
- package/lib/card.component.d.ts +6 -0
- package/lib/carousel/carousel.component.d.ts +1 -0
- package/lib/checkbox.component.d.ts +12 -4
- package/lib/country-selector.component.d.ts +11 -2
- package/lib/date-picker.component.d.ts +2 -1
- package/lib/date-range-picker.component.d.ts +5 -2
- package/lib/dropdown-item.component.d.ts +4 -2
- package/lib/dropdown-trigger.directive.d.ts +1 -1
- package/lib/modal.component.d.ts +6 -0
- package/lib/multi-select.component.d.ts +20 -0
- package/lib/otp.component.d.ts +1 -0
- package/lib/progress.component.d.ts +1 -0
- package/lib/radio-group.component.d.ts +8 -0
- package/lib/radio-item.component.d.ts +10 -4
- package/lib/radio-service.d.ts +29 -0
- package/lib/range-calendar.component.d.ts +33 -4
- package/lib/segment.component.d.ts +13 -0
- package/lib/select-item.component.d.ts +4 -1
- package/lib/select.component.d.ts +20 -0
- package/lib/separator.component.d.ts +2 -0
- package/lib/sheet-wrapper.component.d.ts +4 -0
- package/lib/sheet.component.d.ts +10 -1
- package/lib/sidebar.component.d.ts +2 -0
- package/lib/skeleton.component.d.ts +9 -3
- package/lib/switch.component.d.ts +13 -20
- package/lib/tabs.component.d.ts +11 -1
- package/lib/theme.service.d.ts +21 -6
- package/lib/toaster.component.d.ts +2 -2
- package/lib/toggle-group.component.d.ts +20 -2
- package/lib/tolle-config.d.ts +8 -0
- package/lib/tooltip.directive.d.ts +3 -0
- package/lib/utils/color.d.ts +87 -0
- package/package.json +4 -1
- package/preset.js +28 -0
- package/public-api.d.ts +1 -0
- package/registry/docs-content.json +4214 -0
- package/registry/llms-full.txt +1599 -0
- package/registry/llms.txt +83 -0
- package/registry/manifest.json +4925 -0
- package/registry/r/accordion-item.json +21 -0
- package/registry/r/accordion.json +23 -0
- package/registry/r/alert-dialog-dynamic.json +31 -0
- package/registry/r/alert-dialog.json +26 -0
- package/registry/r/alert.json +23 -0
- package/registry/r/aspect-ratio.json +21 -0
- package/registry/r/avatar-fallback.json +16 -0
- package/registry/r/avatar.json +23 -0
- package/registry/r/badge.json +23 -0
- package/registry/r/breadcrumb-item.json +16 -0
- package/registry/r/breadcrumb-link.json +16 -0
- package/registry/r/breadcrumb-separator.json +16 -0
- package/registry/r/breadcrumb.json +21 -0
- package/registry/r/button-group.json +21 -0
- package/registry/r/button.json +23 -0
- package/registry/r/calendar.json +23 -0
- package/registry/r/card.json +21 -0
- package/registry/r/carousel.json +18 -0
- package/registry/r/checkbox.json +23 -0
- package/registry/r/collapsible.json +21 -0
- package/registry/r/context-menu-trigger.json +23 -0
- package/registry/r/context-menu.json +28 -0
- package/registry/r/country-selector.json +31 -0
- package/registry/r/data-table.json +38 -0
- package/registry/r/date-picker.json +27 -0
- package/registry/r/date-range-picker.json +32 -0
- package/registry/r/dropdown-item.json +21 -0
- package/registry/r/dropdown-label.json +16 -0
- package/registry/r/dropdown-menu.json +16 -0
- package/registry/r/dropdown-separator.json +16 -0
- package/registry/r/dropdown-trigger.json +20 -0
- package/registry/r/empty-state.json +23 -0
- package/registry/r/hover-card.json +23 -0
- package/registry/r/input.json +21 -0
- package/registry/r/label.json +21 -0
- package/registry/r/masked-input.json +21 -0
- package/registry/r/modal.json +36 -0
- package/registry/r/multi-select.json +33 -0
- package/registry/r/otp-group.json +16 -0
- package/registry/r/otp-slot.json +21 -0
- package/registry/r/otp.json +21 -0
- package/registry/r/pagination.json +32 -0
- package/registry/r/phone-number-input.json +34 -0
- package/registry/r/popover-content.json +21 -0
- package/registry/r/popover.json +18 -0
- package/registry/r/progress.json +21 -0
- package/registry/r/radio-group.json +26 -0
- package/registry/r/radio-item.json +26 -0
- package/registry/r/range-calendar.json +28 -0
- package/registry/r/resizable-panel-item.json +23 -0
- package/registry/r/resizable-panel.json +23 -0
- package/registry/r/resizable.json +21 -0
- package/registry/r/scroll-area.json +21 -0
- package/registry/r/segment.json +21 -0
- package/registry/r/select-group.json +21 -0
- package/registry/r/select-item.json +26 -0
- package/registry/r/select-separator.json +21 -0
- package/registry/r/select.json +31 -0
- package/registry/r/separator.json +21 -0
- package/registry/r/sheet-wrapper.json +31 -0
- package/registry/r/sheet.json +21 -0
- package/registry/r/sidebar.json +21 -0
- package/registry/r/skeleton.json +23 -0
- package/registry/r/slider.json +21 -0
- package/registry/r/switch.json +23 -0
- package/registry/r/tabs.json +23 -0
- package/registry/r/tag-input.json +25 -0
- package/registry/r/textarea.json +21 -0
- package/registry/r/toaster.json +26 -0
- package/registry/r/toggle-group.json +25 -0
- package/registry/r/toggle.json +23 -0
- package/registry/r/tolle-cell.json +16 -0
- package/registry/r/tooltip.json +23 -0
- package/registry/registry.json +1540 -0
- package/theme.css +60 -5
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { Component, Input, forwardRef, Output, EventEmitter } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
|
|
4
|
-
import { addMonths, subMonths, startOfMonth, endOfMonth, startOfWeek, endOfWeek, eachDayOfInterval, isSameMonth, isSameDay, isToday, setMonth, setYear, addYears, subYears, isBefore, startOfDay, format } from 'date-fns';
|
|
4
|
+
import { addDays, addMonths, subMonths, startOfMonth, endOfMonth, startOfWeek, endOfWeek, eachDayOfInterval, isSameMonth, isSameDay, isToday, setMonth, setYear, addYears, subYears, isBefore, startOfDay, format } from 'date-fns';
|
|
5
5
|
import { cn } from './utils/cn';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "@angular/common";
|
|
8
8
|
export class CalendarComponent {
|
|
9
|
+
cdr;
|
|
9
10
|
class = '';
|
|
11
|
+
/** Renders the calendar's own border, background and shadow. Set `false` when
|
|
12
|
+
* nesting inside a card/popover that already provides the chrome. @default true */
|
|
13
|
+
bordered = true;
|
|
10
14
|
mode = 'date';
|
|
11
15
|
disablePastDates = false;
|
|
12
16
|
showQuickActions = true;
|
|
@@ -24,12 +28,13 @@ export class CalendarComponent {
|
|
|
24
28
|
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
|
|
25
29
|
years = [];
|
|
26
30
|
yearRangeStart;
|
|
27
|
-
navBtnClass = cn('h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 border border-input rounded-md flex items-center justify-center hover:bg-accent hover:text-accent-foreground transition-all');
|
|
31
|
+
navBtnClass = cn('h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 border border-input rounded-md flex items-center justify-center hover:bg-accent hover:text-accent-foreground transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring');
|
|
28
32
|
quickActionBtnClass = cn('px-3 py-1.5 text-sm rounded hover:bg-accent text-muted-foreground hover:text-foreground transition-colors');
|
|
29
33
|
onTouched = () => { };
|
|
30
34
|
onChange = () => { };
|
|
31
35
|
cn = cn;
|
|
32
|
-
constructor() {
|
|
36
|
+
constructor(cdr) {
|
|
37
|
+
this.cdr = cdr;
|
|
33
38
|
this.yearRangeStart = new Date().getFullYear() - 6;
|
|
34
39
|
}
|
|
35
40
|
ngOnInit() {
|
|
@@ -161,6 +166,72 @@ export class CalendarComponent {
|
|
|
161
166
|
this.onTouched();
|
|
162
167
|
this.dateSelect.emit(date);
|
|
163
168
|
}
|
|
169
|
+
/**
|
|
170
|
+
* Grid keyboard navigation for the day view (react-day-picker semantics).
|
|
171
|
+
* Arrows move by day/week, Home/End to week edges, PageUp/PageDown by month.
|
|
172
|
+
* Enter/Space are left to the native day <button> (which selects on click and
|
|
173
|
+
* does not scroll the page).
|
|
174
|
+
*/
|
|
175
|
+
onGridKeydown(event) {
|
|
176
|
+
if (this.currentView !== 'date' || this.mode !== 'date')
|
|
177
|
+
return;
|
|
178
|
+
const gridEl = event.currentTarget;
|
|
179
|
+
const buttons = Array.from(gridEl.querySelectorAll('button'));
|
|
180
|
+
const idx = buttons.indexOf(event.target);
|
|
181
|
+
if (idx < 0)
|
|
182
|
+
return;
|
|
183
|
+
const current = this.daysInMonth[idx];
|
|
184
|
+
if (!current)
|
|
185
|
+
return;
|
|
186
|
+
let next = null;
|
|
187
|
+
switch (event.key) {
|
|
188
|
+
case 'ArrowLeft':
|
|
189
|
+
next = addDays(current, -1);
|
|
190
|
+
break;
|
|
191
|
+
case 'ArrowRight':
|
|
192
|
+
next = addDays(current, 1);
|
|
193
|
+
break;
|
|
194
|
+
case 'ArrowUp':
|
|
195
|
+
next = addDays(current, -7);
|
|
196
|
+
break;
|
|
197
|
+
case 'ArrowDown':
|
|
198
|
+
next = addDays(current, 7);
|
|
199
|
+
break;
|
|
200
|
+
case 'Home':
|
|
201
|
+
next = startOfWeek(current);
|
|
202
|
+
break;
|
|
203
|
+
case 'End':
|
|
204
|
+
next = endOfWeek(current);
|
|
205
|
+
break;
|
|
206
|
+
case 'PageUp':
|
|
207
|
+
next = subMonths(current, 1);
|
|
208
|
+
break;
|
|
209
|
+
case 'PageDown':
|
|
210
|
+
next = addMonths(current, 1);
|
|
211
|
+
break;
|
|
212
|
+
default: return;
|
|
213
|
+
}
|
|
214
|
+
event.preventDefault();
|
|
215
|
+
this.focusDay(next, gridEl);
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Moves focus to the day button matching `date`. If the day is not present in
|
|
219
|
+
* the current grid, the view advances/retreats to its month, regenerates and
|
|
220
|
+
* then focuses it.
|
|
221
|
+
*/
|
|
222
|
+
focusDay(date, gridEl) {
|
|
223
|
+
let idx = this.daysInMonth.findIndex(d => isSameDay(d, date));
|
|
224
|
+
if (idx < 0) {
|
|
225
|
+
this.viewDate = startOfMonth(date);
|
|
226
|
+
this.generateDays();
|
|
227
|
+
this.cdr.detectChanges(); // re-render the grid synchronously
|
|
228
|
+
idx = this.daysInMonth.findIndex(d => isSameDay(d, date));
|
|
229
|
+
}
|
|
230
|
+
if (idx < 0)
|
|
231
|
+
return;
|
|
232
|
+
const buttons = Array.from(gridEl.querySelectorAll('button'));
|
|
233
|
+
buttons[idx]?.focus();
|
|
234
|
+
}
|
|
164
235
|
selectMonth(monthIndex) {
|
|
165
236
|
if (this.mode === 'date') {
|
|
166
237
|
this.viewDate = setMonth(this.viewDate, monthIndex);
|
|
@@ -189,12 +260,15 @@ export class CalendarComponent {
|
|
|
189
260
|
this.dateSelect.emit(this.viewDate);
|
|
190
261
|
}
|
|
191
262
|
}
|
|
263
|
+
isSelected(date) {
|
|
264
|
+
return !!(this.selectedDate && isSameDay(date, this.selectedDate));
|
|
265
|
+
}
|
|
192
266
|
getDayClass(date) {
|
|
193
267
|
const isSelected = this.selectedDate && isSameDay(date, this.selectedDate);
|
|
194
268
|
const isTodayDate = isToday(date);
|
|
195
269
|
const isOutside = !isSameMonth(date, this.viewDate);
|
|
196
270
|
const isDisabled = this.isDateDisabled(date);
|
|
197
|
-
return cn('h-9 w-9 p-0 font-normal text-sm rounded-md transition-all flex items-center justify-center', !isSelected && !isDisabled && 'hover:bg-accent hover:text-accent-foreground', isSelected && 'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground', !isSelected && isTodayDate && 'bg-accent text-accent-foreground', (isOutside || isDisabled) && 'text-muted-foreground opacity-50', isDisabled && 'cursor-not-allowed');
|
|
271
|
+
return cn('h-9 w-9 p-0 font-normal text-sm rounded-md transition-all flex items-center justify-center focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring', !isSelected && !isDisabled && 'hover:bg-accent hover:text-accent-foreground', isSelected && 'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground', !isSelected && isTodayDate && 'bg-accent text-accent-foreground', (isOutside || isDisabled) && 'text-muted-foreground opacity-50', isDisabled && 'cursor-not-allowed');
|
|
198
272
|
}
|
|
199
273
|
getMonthClass(monthIndex) {
|
|
200
274
|
const isSelected = this.selectedDate &&
|
|
@@ -251,15 +325,15 @@ export class CalendarComponent {
|
|
|
251
325
|
}
|
|
252
326
|
registerOnChange(fn) { this.onChange = fn; }
|
|
253
327
|
registerOnTouched(fn) { this.onTouched = fn; }
|
|
254
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
255
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CalendarComponent, isStandalone: true, selector: "tolle-calendar", inputs: { class: "class", mode: "mode", disablePastDates: "disablePastDates", showQuickActions: "showQuickActions", minDate: "minDate", maxDate: "maxDate", formatMonthFn: "formatMonthFn", formatYearFn: "formatYearFn", formatDateFn: "formatDateFn" }, outputs: { dateSelect: "dateSelect" }, providers: [
|
|
328
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CalendarComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
329
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CalendarComponent, isStandalone: true, selector: "tolle-calendar", inputs: { class: "class", bordered: "bordered", mode: "mode", disablePastDates: "disablePastDates", showQuickActions: "showQuickActions", minDate: "minDate", maxDate: "maxDate", formatMonthFn: "formatMonthFn", formatYearFn: "formatYearFn", formatDateFn: "formatDateFn" }, outputs: { dateSelect: "dateSelect" }, providers: [
|
|
256
330
|
{
|
|
257
331
|
provide: NG_VALUE_ACCESSOR,
|
|
258
332
|
useExisting: forwardRef(() => CalendarComponent),
|
|
259
333
|
multi: true
|
|
260
334
|
}
|
|
261
335
|
], ngImport: i0, template: `
|
|
262
|
-
<div [class]="cn('p-3 border rounded-md bg-background
|
|
336
|
+
<div [class]="cn('text-popover-foreground inline-block min-w-fit', bordered ? 'p-3 border rounded-md bg-background shadow-sm' : '', class)">
|
|
263
337
|
<!-- Header with Navigation -->
|
|
264
338
|
<div class="flex items-center justify-between pt-1 pb-4 gap-2">
|
|
265
339
|
<!-- View Selector -->
|
|
@@ -287,10 +361,10 @@ export class CalendarComponent {
|
|
|
287
361
|
|
|
288
362
|
<!-- Navigation Buttons -->
|
|
289
363
|
<div class="flex items-center space-x-1">
|
|
290
|
-
<button type="button" (click)="prev()" [class]="navBtnClass">
|
|
364
|
+
<button type="button" (click)="prev()" [class]="navBtnClass" aria-label="Previous month">
|
|
291
365
|
<i class="ri-arrow-left-s-line text-lg"></i>
|
|
292
366
|
</button>
|
|
293
|
-
<button type="button" (click)="next()" [class]="navBtnClass">
|
|
367
|
+
<button type="button" (click)="next()" [class]="navBtnClass" aria-label="Next month">
|
|
294
368
|
<i class="ri-arrow-right-s-line text-lg"></i>
|
|
295
369
|
</button>
|
|
296
370
|
</div>
|
|
@@ -303,10 +377,13 @@ export class CalendarComponent {
|
|
|
303
377
|
{{ day }}
|
|
304
378
|
</span>
|
|
305
379
|
</div>
|
|
306
|
-
<div class="grid grid-cols-7 gap-1 w-full">
|
|
380
|
+
<div role="grid" class="grid grid-cols-7 gap-1 w-full" (keydown)="onGridKeydown($event)">
|
|
307
381
|
<button
|
|
308
382
|
*ngFor="let date of daysInMonth"
|
|
309
383
|
type="button"
|
|
384
|
+
role="gridcell"
|
|
385
|
+
[attr.aria-selected]="isSelected(date)"
|
|
386
|
+
[attr.aria-label]="(date | date:'fullDate')"
|
|
310
387
|
(click)="selectDate(date)"
|
|
311
388
|
[disabled]="isDateDisabled(date)"
|
|
312
389
|
[class]="getDayClass(date)"
|
|
@@ -363,7 +440,7 @@ export class CalendarComponent {
|
|
|
363
440
|
</div>
|
|
364
441
|
</div>
|
|
365
442
|
</div>
|
|
366
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }] });
|
|
443
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "ngmodule", type: FormsModule }] });
|
|
367
444
|
}
|
|
368
445
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CalendarComponent, decorators: [{
|
|
369
446
|
type: Component,
|
|
@@ -379,7 +456,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
379
456
|
}
|
|
380
457
|
],
|
|
381
458
|
template: `
|
|
382
|
-
<div [class]="cn('p-3 border rounded-md bg-background
|
|
459
|
+
<div [class]="cn('text-popover-foreground inline-block min-w-fit', bordered ? 'p-3 border rounded-md bg-background shadow-sm' : '', class)">
|
|
383
460
|
<!-- Header with Navigation -->
|
|
384
461
|
<div class="flex items-center justify-between pt-1 pb-4 gap-2">
|
|
385
462
|
<!-- View Selector -->
|
|
@@ -407,10 +484,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
407
484
|
|
|
408
485
|
<!-- Navigation Buttons -->
|
|
409
486
|
<div class="flex items-center space-x-1">
|
|
410
|
-
<button type="button" (click)="prev()" [class]="navBtnClass">
|
|
487
|
+
<button type="button" (click)="prev()" [class]="navBtnClass" aria-label="Previous month">
|
|
411
488
|
<i class="ri-arrow-left-s-line text-lg"></i>
|
|
412
489
|
</button>
|
|
413
|
-
<button type="button" (click)="next()" [class]="navBtnClass">
|
|
490
|
+
<button type="button" (click)="next()" [class]="navBtnClass" aria-label="Next month">
|
|
414
491
|
<i class="ri-arrow-right-s-line text-lg"></i>
|
|
415
492
|
</button>
|
|
416
493
|
</div>
|
|
@@ -423,10 +500,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
423
500
|
{{ day }}
|
|
424
501
|
</span>
|
|
425
502
|
</div>
|
|
426
|
-
<div class="grid grid-cols-7 gap-1 w-full">
|
|
503
|
+
<div role="grid" class="grid grid-cols-7 gap-1 w-full" (keydown)="onGridKeydown($event)">
|
|
427
504
|
<button
|
|
428
505
|
*ngFor="let date of daysInMonth"
|
|
429
506
|
type="button"
|
|
507
|
+
role="gridcell"
|
|
508
|
+
[attr.aria-selected]="isSelected(date)"
|
|
509
|
+
[attr.aria-label]="(date | date:'fullDate')"
|
|
430
510
|
(click)="selectDate(date)"
|
|
431
511
|
[disabled]="isDateDisabled(date)"
|
|
432
512
|
[class]="getDayClass(date)"
|
|
@@ -485,7 +565,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
485
565
|
</div>
|
|
486
566
|
`
|
|
487
567
|
}]
|
|
488
|
-
}], ctorParameters: () => [], propDecorators: { class: [{
|
|
568
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { class: [{
|
|
569
|
+
type: Input
|
|
570
|
+
}], bordered: [{
|
|
489
571
|
type: Input
|
|
490
572
|
}], mode: [{
|
|
491
573
|
type: Input
|
|
@@ -506,4 +588,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
506
588
|
}], dateSelect: [{
|
|
507
589
|
type: Output
|
|
508
590
|
}] } });
|
|
509
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9jYWxlbmRhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFBRSxLQUFLLEVBQVUsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQzNELE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFDTCxTQUFTLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQzlDLFdBQVcsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUN0RCxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFDekQsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQzdCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxZQUFZLENBQUM7OztBQTBIaEMsTUFBTSxPQUFPLGlCQUFpQjtJQUNuQixLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ1gsSUFBSSxHQUFpQixNQUFNLENBQUM7SUFDNUIsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUN4QixPQUFPLENBQVE7SUFDZixPQUFPLENBQVE7SUFDZixhQUFhLENBQTBCO0lBQ3ZDLFlBQVksQ0FBMEI7SUFDdEMsWUFBWSxDQUEwQjtJQUVyQyxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWUsQ0FBQztJQUV2RCxXQUFXLEdBQThCLE1BQU0sQ0FBQztJQUNoRCxRQUFRLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUM1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Q2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUM7b0JBQ3BDLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQzs0QkFDaEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5R1Q7aUJBQ0Y7d0RBRVUsS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgZm9yd2FyZFJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SLCBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIGFkZE1vbnRocywgc3ViTW9udGhzLCBzdGFydE9mTW9udGgsIGVuZE9mTW9udGgsXG4gIHN0YXJ0T2ZXZWVrLCBlbmRPZldlZWssIGVhY2hEYXlPZkludGVydmFsLCBpc1NhbWVNb250aCxcbiAgaXNTYW1lRGF5LCBpc1RvZGF5LCBzZXRNb250aCwgc2V0WWVhciwgYWRkWWVhcnMsIHN1YlllYXJzLFxuICBpc0JlZm9yZSwgc3RhcnRPZkRheSwgZm9ybWF0XG59IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi91dGlscy9jbic7XG5cbmV4cG9ydCB0eXBlIENhbGVuZGFyTW9kZSA9ICdkYXRlJyB8ICdtb250aCcgfCAneWVhcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLWNhbGVuZGFyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGVdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENhbGVuZGFyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgW2NsYXNzXT1cImNuKCdwLTMgYm9yZGVyIHJvdW5kZWQtbWQgYmctYmFja2dyb3VuZCB0ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBzaGFkb3ctc20gaW5saW5lLWJsb2NrIG1pbi13LWZpdCcsIGNsYXNzKVwiPlxuICAgICAgPCEtLSBIZWFkZXIgd2l0aCBOYXZpZ2F0aW9uIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBwdC0xIHBiLTQgZ2FwLTJcIj5cbiAgICAgICAgPCEtLSBWaWV3IFNlbGVjdG9yIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTFcIj5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwibW9kZSAhPT0gJ3llYXInXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNldFZpZXcoJ21vbnRoJylcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImNuKFxuICAgICAgICAgICAgICAndGV4dC1zbSBmb250LXNlbWlib2xkIHB4LTIgcHktMSByb3VuZGVkIHRyYW5zaXRpb24tY29sb3JzJyxcbiAgICAgICAgICAgICAgY3VycmVudFZpZXcgPT09ICdtb250aCcgPyAnYmctc2Vjb25kYXJ5IHRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmQnIDogJ2hvdmVyOmJnLWFjY2VudCBob3Zlcjp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kJ1xuICAgICAgICAgICAgKVwiPlxuICAgICAgICAgICAge3sgZm9ybWF0TW9udGhZZWFyKHZpZXdEYXRlLCAnbW9udGgnKSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2V0VmlldygneWVhcicpXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJjbihcbiAgICAgICAgICAgICAgJ3RleHQtc20gZm9udC1zZW1pYm9sZCBweC0yIHB5LTEgcm91bmRlZCB0cmFuc2l0aW9uLWNvbG9ycycsXG4gICAgICAgICAgICAgIGN1cnJlbnRWaWV3ID09PSAneWVhcicgPyAnYmctc2Vjb25kYXJ5IHRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmQnIDogJ2hvdmVyOmJnLWFjY2VudCBob3Zlcjp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kJ1xuICAgICAgICAgICAgKVwiPlxuICAgICAgICAgICAge3sgZm9ybWF0TW9udGhZZWFyKHZpZXdEYXRlLCAneWVhcicpIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gTmF2aWdhdGlvbiBCdXR0b25zIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xXCI+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInByZXYoKVwiIFtjbGFzc109XCJuYXZCdG5DbGFzc1wiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJyaS1hcnJvdy1sZWZ0LXMtbGluZSB0ZXh0LWxnXCI+PC9pPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJuZXh0KClcIiBbY2xhc3NdPVwibmF2QnRuQ2xhc3NcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwicmktYXJyb3ctcmlnaHQtcy1saW5lIHRleHQtbGdcIj48L2k+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gREFURSBNT0RFIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cImN1cnJlbnRWaWV3ID09PSAnZGF0ZScgJiYgbW9kZSA9PT0gJ2RhdGUnXCIgY2xhc3M9XCJzcGFjZS15LTIgYW5pbWF0ZS1pbiBmYWRlLWluIHpvb20taW4tOTUgZHVyYXRpb24tMjAwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGdyaWQtY29scy03IGdhcC0xIHctZnVsbFwiPlxuICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBkYXkgb2Ygd2Vla0RheXNcIiBjbGFzcz1cInRleHQtWzAuOHJlbV0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGZvbnQtbm9ybWFsIHRleHQtY2VudGVyIHctOVwiPlxuICAgICAgICAgICAge3sgZGF5IH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTcgZ2FwLTEgdy1mdWxsXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGUgb2YgZGF5c0luTW9udGhcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF0ZShkYXRlKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEYXRlRGlzYWJsZWQoZGF0ZSlcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImdldERheUNsYXNzKGRhdGUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBmb3JtYXREYXRlKGRhdGUsICdkYXknKSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIE1PTlRIIFNFTEVDVE9SIChmb3IgZGF0ZSBtb2RlIGFuZCBtb250aCBtb2RlKSAtLT5cbiAgICAgIDxkaXYgKm5nSWY9XCIoY3VycmVudFZpZXcgPT09ICdtb250aCcpXCJcbiAgICAgICAgICAgY2xhc3M9XCJncmlkIGdyaWQtY29scy0zIGdhcC0yIHctNjQgYW5pbWF0ZS1pbiBmYWRlLWluIHpvb20taW4tOTUgZHVyYXRpb24tMjAwXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgbW9udGggb2YgbW9udGhzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwic2VsZWN0TW9udGgoaSlcIlxuICAgICAgICAgIFtjbGFzc109XCJnZXRNb250aENsYXNzKGkpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IG1vbnRoIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gWUVBUiBTRUxFQ1RPUiAoZm9yIGRhdGUgbW9kZSBhbmQgeWVhciBtb2RlKSAtLT5cbiAgICAgIDxkaXYgKm5nSWY9XCIoY3VycmVudFZpZXcgPT09ICd5ZWFyJykgXCJcbiAgICAgICAgICAgY2xhc3M9XCJncmlkIGdyaWQtY29scy00IGdhcC0yIHctNjQgYW5pbWF0ZS1pbiBmYWRlLWluIHpvb20taW4tOTUgZHVyYXRpb24tMjAwXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgeWVhciBvZiB5ZWFyc1wiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFllYXIoeWVhcilcIlxuICAgICAgICAgIFtjbGFzc109XCJnZXRZZWFyQ2xhc3MoeWVhcilcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgeWVhciB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFF1aWNrIEFjdGlvbnMgLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd1F1aWNrQWN0aW9uc1wiIGNsYXNzPVwiYm9yZGVyLXQgcHQtMyBtdC0zXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTJcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RUb2RheSgpXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJxdWlja0FjdGlvbkJ0bkNsYXNzXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc1RvZGF5RGlzYWJsZWQoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgVG9kYXlcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGVhcigpXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJxdWlja0FjdGlvbkJ0bkNsYXNzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBDbGVhclxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBJbnB1dCgpIGNsYXNzID0gJyc7XG4gIEBJbnB1dCgpIG1vZGU6IENhbGVuZGFyTW9kZSA9ICdkYXRlJztcbiAgQElucHV0KCkgZGlzYWJsZVBhc3REYXRlcyA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93UXVpY2tBY3Rpb25zID0gdHJ1ZTtcbiAgQElucHV0KCkgbWluRGF0ZT86IERhdGU7XG4gIEBJbnB1dCgpIG1heERhdGU/OiBEYXRlO1xuICBASW5wdXQoKSBmb3JtYXRNb250aEZuPzogKGRhdGU6IERhdGUpID0+IHN0cmluZztcbiAgQElucHV0KCkgZm9ybWF0WWVhckZuPzogKGRhdGU6IERhdGUpID0+IHN0cmluZztcbiAgQElucHV0KCkgZm9ybWF0RGF0ZUZuPzogKGRhdGU6IERhdGUpID0+IHN0cmluZztcblxuICBAT3V0cHV0KCkgZGF0ZVNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZSB8IG51bGw+KCk7XG5cbiAgY3VycmVudFZpZXc6ICdkYXRlJyB8ICdtb250aCcgfCAneWVhcicgPSAnZGF0ZSc7XG4gIHZpZXdEYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgc2VsZWN0ZWREYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgd2Vla0RheXMgPSBbJ1N1JywgJ01vJywgJ1R1JywgJ1dlJywgJ1RoJywgJ0ZyJywgJ1NhJ107XG4gIGRheXNJbk1vbnRoOiBEYXRlW10gPSBbXTtcbiAgbW9udGhzID0gWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYyddO1xuICB5ZWFyczogbnVtYmVyW10gPSBbXTtcbiAgeWVhclJhbmdlU3RhcnQ6IG51bWJlcjtcblxuICBuYXZCdG5DbGFzcyA9IGNuKCdoLTcgdy03IGJnLXRyYW5zcGFyZW50IHAtMCBvcGFjaXR5LTUwIGhvdmVyOm9wYWNpdHktMTAwIGJvcmRlciBib3JkZXItaW5wdXQgcm91bmRlZC1tZCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBob3ZlcjpiZy1hY2NlbnQgaG92ZXI6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZCB0cmFuc2l0aW9uLWFsbCcpO1xuICBxdWlja0FjdGlvbkJ0bkNsYXNzID0gY24oJ3B4LTMgcHktMS41IHRleHQtc20gcm91bmRlZCBob3ZlcjpiZy1hY2NlbnQgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGhvdmVyOnRleHQtZm9yZWdyb3VuZCB0cmFuc2l0aW9uLWNvbG9ycycpO1xuXG4gIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBvbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICBwcm90ZWN0ZWQgY24gPSBjbjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnllYXJSYW5nZVN0YXJ0ID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpIC0gNjtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIEluaXRpYWxpemUgYmFzZWQgb24gbW9kZVxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdtb250aCcpIHtcbiAgICAgIHRoaXMuY3VycmVudFZpZXcgPSAnbW9udGgnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSAneWVhcicpIHtcbiAgICAgIHRoaXMuY3VycmVudFZpZXcgPSAneWVhcic7XG4gICAgfVxuXG4gICAgdGhpcy5nZW5lcmF0ZURheXMoKTtcbiAgICB0aGlzLmdlbmVyYXRlWWVhcnMoKTtcbiAgfVxuXG4gIC8vIEZvcm1hdCBoZWxwZXJzXG4gIGZvcm1hdE1vbnRoWWVhcihkYXRlOiBEYXRlLCB0eXBlOiAnbW9udGgnIHwgJ3llYXInKTogc3RyaW5nIHtcbiAgICBpZiAodHlwZSA9PT0gJ21vbnRoJyAmJiB0aGlzLmZvcm1hdE1vbnRoRm4pIHtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdE1vbnRoRm4oZGF0ZSk7XG4gICAgfVxuICAgIGlmICh0eXBlID09PSAneWVhcicgJiYgdGhpcy5mb3JtYXRZZWFyRm4pIHtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdFllYXJGbihkYXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIHR5cGUgPT09ICdtb250aCcgPyBmb3JtYXQoZGF0ZSwgJ01NTU0nKSA6IGZvcm1hdChkYXRlLCAneXl5eScpO1xuICB9XG5cbiAgZm9ybWF0RGF0ZShkYXRlOiBEYXRlLCB0eXBlOiAnZGF5JyB8ICdtb250aCcgfCAneWVhcicpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlID09PSAnZGF5JyAmJiB0aGlzLmZvcm1hdERhdGVGbikge1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0RGF0ZUZuKGRhdGUpO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0KGRhdGUsIHR5cGUgPT09ICdkYXknID8gJ2QnIDogdHlwZSA9PT0gJ21vbnRoJyA/ICdNTU0nIDogJ3l5eXknKTtcbiAgfVxuXG4gIGdlbmVyYXRlRGF5cygpIHtcbiAgICBpZiAodGhpcy5tb2RlICE9PSAnZGF0ZScpIHJldHVybjtcblxuICAgIGNvbnN0IHN0YXJ0ID0gc3RhcnRPZldlZWsoc3RhcnRPZk1vbnRoKHRoaXMudmlld0RhdGUpKTtcbiAgICBjb25zdCBlbmQgPSBlbmRPZldlZWsoZW5kT2ZNb250aCh0aGlzLnZpZXdEYXRlKSk7XG4gICAgdGhpcy5kYXlzSW5Nb250aCA9IGVhY2hEYXlPZkludGVydmFsKHsgc3RhcnQsIGVuZCB9KTtcbiAgfVxuXG4gIGdlbmVyYXRlWWVhcnMoKSB7XG4gICAgY29uc3QgY3VycmVudFllYXIgPSB0aGlzLnZpZXdEYXRlLmdldEZ1bGxZZWFyKCk7XG5cbiAgICBpZiAodGhpcy5tb2RlID09PSAneWVhcicpIHtcbiAgICAgIC8vIEZvciB5ZWFyIHBpY2tlciwgc2hvdyBhIDEyLXllYXIgZ3JpZFxuICAgICAgdGhpcy55ZWFycyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDEyIH0sIChfLCBpKSA9PiB0aGlzLnllYXJSYW5nZVN0YXJ0ICsgaSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZvciBkYXRlIG1vZGUgeWVhciBzZWxlY3Rvciwgc2hvdyAxNiB5ZWFycyBjZW50ZXJlZCBvbiBjdXJyZW50XG4gICAgICB0aGlzLnllYXJzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogMTYgfSwgKF8sIGkpID0+IGN1cnJlbnRZZWFyIC0gNiArIGkpO1xuICAgIH1cbiAgfVxuXG4gIHNldFZpZXcodmlldzogJ2RhdGUnIHwgJ21vbnRoJyB8ICd5ZWFyJykge1xuICAgIHRoaXMuY3VycmVudFZpZXcgPSB2aWV3O1xuICAgIGlmICh2aWV3ID09PSAneWVhcicpIHtcbiAgICAgIHRoaXMuZ2VuZXJhdGVZZWFycygpO1xuICAgIH1cbiAgfVxuXG4gIHByZXYoKSB7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ2RhdGUnKSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50VmlldyA9PT0gJ2RhdGUnKSB7XG4gICAgICAgIHRoaXMudmlld0RhdGUgPSBzdWJNb250aHModGhpcy52aWV3RGF0ZSwgMSk7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVEYXlzKCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY3VycmVudFZpZXcgPT09ICd5ZWFyJykge1xuICAgICAgICB0aGlzLnZpZXdEYXRlID0gc3ViWWVhcnModGhpcy52aWV3RGF0ZSwgMTYpO1xuICAgICAgICB0aGlzLmdlbmVyYXRlWWVhcnMoKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50VmlldyA9PT0gJ21vbnRoJykge1xuICAgICAgICB0aGlzLnZpZXdEYXRlID0gc3ViWWVhcnModGhpcy52aWV3RGF0ZSwgMSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLm1vZGUgPT09ICdtb250aCcpIHtcbiAgICAgIHRoaXMudmlld0RhdGUgPSBzdWJZZWFycyh0aGlzLnZpZXdEYXRlLCAxKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gJ3llYXInKSB7XG4gICAgICB0aGlzLnllYXJSYW5nZVN0YXJ0IC09IDEyO1xuICAgICAgdGhpcy5nZW5lcmF0ZVllYXJzKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm1vZGUgPT09ICdtb250aC15ZWFyJykge1xuICAgICAgaWYgKHRoaXMuY3VycmVudFZpZXcgPT09ICdtb250aCcpIHtcbiAgICAgICAgdGhpcy52aWV3RGF0ZSA9IHN1YlllYXJzKHRoaXMudmlld0RhdGUsIDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy55ZWFyUmFuZ2VTdGFydCAtPSAxMjtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVllYXJzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmV4dCgpIHtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnZGF0ZScpIHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRWaWV3ID09PSAnZGF0ZScpIHtcbiAgICAgICAgdGhpcy52aWV3RGF0ZSA9IGFkZE1vbnRocyh0aGlzLnZpZXdEYXRlLCAxKTtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZURheXMoKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50VmlldyA9PT0gJ3llYXInKSB7XG4gICAgICAgIHRoaXMudmlld0RhdGUgPSBhZGRZZWFycyh0aGlzLnZpZXdEYXRlLCAxNik7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVZZWFycygpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmN1cnJlbnRWaWV3ID09PSAnbW9udGgnKSB7XG4gICAgICAgIHRoaXMudmlld0RhdGUgPSBhZGRZZWFycyh0aGlzLnZpZXdEYXRlLCAxKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gJ21vbnRoJykge1xuICAgICAgdGhpcy52aWV3RGF0ZSA9IGFkZFllYXJzKHRoaXMudmlld0RhdGUsIDEpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSAneWVhcicpIHtcbiAgICAgIHRoaXMueWVhclJhbmdlU3RhcnQgKz0gMTI7XG4gICAgICB0aGlzLmdlbmVyYXRlWWVhcnMoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gJ21vbnRoLXllYXInKSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50VmlldyA9PT0gJ21vbnRoJykge1xuICAgICAgICB0aGlzLnZpZXdEYXRlID0gYWRkWWVhcnModGhpcy52aWV3RGF0ZSwgMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnllYXJSYW5nZVN0YXJ0ICs9IDEyO1xuICAgICAgICB0aGlzLmdlbmVyYXRlWWVhcnMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcmV2WWVhcnMoKSB7XG4gICAgdGhpcy55ZWFyUmFuZ2VTdGFydCAtPSAxMjtcbiAgICB0aGlzLmdlbmVyYXRlWWVhcnMoKTtcbiAgfVxuXG4gIG5leHRZZWFycygpIHtcbiAgICB0aGlzLnllYXJSYW5nZVN0YXJ0ICs9IDEyO1xuICAgIHRoaXMuZ2VuZXJhdGVZZWFycygpO1xuICB9XG5cbiAgc2VsZWN0RGF0ZShkYXRlOiBEYXRlKSB7XG4gICAgaWYgKHRoaXMuaXNEYXRlRGlzYWJsZWQoZGF0ZSkpIHJldHVybjtcblxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gZGF0ZTtcbiAgICB0aGlzLm9uQ2hhbmdlKGRhdGUpO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgdGhpcy5kYXRlU2VsZWN0LmVtaXQoZGF0ZSk7XG4gIH1cblxuICBzZWxlY3RNb250aChtb250aEluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnZGF0ZScpIHtcbiAgICAgIHRoaXMudmlld0RhdGUgPSBzZXRNb250aCh0aGlzLnZpZXdEYXRlLCBtb250aEluZGV4KTtcbiAgICAgIHRoaXMuY3VycmVudFZpZXcgPSAnZGF0ZSc7XG4gICAgICB0aGlzLmdlbmVyYXRlRGF5cygpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLnZpZXdEYXRlID0gc2V0TW9udGgodGhpcy52aWV3RGF0ZSwgbW9udGhJbmRleCk7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9ICB0aGlzLnZpZXdEYXRlO1xuICAgICAgdGhpcy5vbkNoYW5nZSggdGhpcy52aWV3RGF0ZSk7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5kYXRlU2VsZWN0LmVtaXQoIHRoaXMudmlld0RhdGUpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFllYXIoeWVhcjogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ2RhdGUnKSB7XG4gICAgICB0aGlzLnZpZXdEYXRlID0gc2V0WWVhcih0aGlzLnZpZXdEYXRlLCB5ZWFyKTtcbiAgICAgIHRoaXMuY3VycmVudFZpZXcgPSAnZGF0ZSc7XG4gICAgICB0aGlzLmdlbmVyYXRlRGF5cygpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSAneWVhcicgfHwgdGhpcy5tb2RlID09PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLnZpZXdEYXRlID0gc2V0WWVhcih0aGlzLnZpZXdEYXRlLCB5ZWFyKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gIHRoaXMudmlld0RhdGU7XG4gICAgICB0aGlzLm9uQ2hhbmdlKCB0aGlzLnZpZXdEYXRlKTtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB0aGlzLmRhdGVTZWxlY3QuZW1pdCggdGhpcy52aWV3RGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RGF5Q2xhc3MoZGF0ZTogRGF0ZSkge1xuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkRGF0ZSAmJiBpc1NhbWVEYXkoZGF0ZSwgdGhpcy5zZWxlY3RlZERhdGUpO1xuICAgIGNvbnN0IGlzVG9kYXlEYXRlID0gaXNUb2RheShkYXRlKTtcbiAgICBjb25zdCBpc091dHNpZGUgPSAhaXNTYW1lTW9udGgoZGF0ZSwgdGhpcy52aWV3RGF0ZSk7XG4gICAgY29uc3QgaXNEaXNhYmxlZCA9IHRoaXMuaXNEYXRlRGlzYWJsZWQoZGF0ZSk7XG5cbiAgICByZXR1cm4gY24oXG4gICAgICAnaC05IHctOSBwLTAgZm9udC1ub3JtYWwgdGV4dC1zbSByb3VuZGVkLW1kIHRyYW5zaXRpb24tYWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyJyxcbiAgICAgICFpc1NlbGVjdGVkICYmICFpc0Rpc2FibGVkICYmICdob3ZlcjpiZy1hY2NlbnQgaG92ZXI6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZCcsXG4gICAgICBpc1NlbGVjdGVkICYmICdiZy1wcmltYXJ5IHRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIGhvdmVyOmJnLXByaW1hcnkgaG92ZXI6dGV4dC1wcmltYXJ5LWZvcmVncm91bmQnLFxuICAgICAgIWlzU2VsZWN0ZWQgJiYgaXNUb2RheURhdGUgJiYgJ2JnLWFjY2VudCB0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kJyxcbiAgICAgIChpc091dHNpZGUgfHwgaXNEaXNhYmxlZCkgJiYgJ3RleHQtbXV0ZWQtZm9yZWdyb3VuZCBvcGFjaXR5LTUwJyxcbiAgICAgIGlzRGlzYWJsZWQgJiYgJ2N1cnNvci1ub3QtYWxsb3dlZCdcbiAgICApO1xuICB9XG5cbiAgZ2V0TW9udGhDbGFzcyhtb250aEluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gdGhpcy5zZWxlY3RlZERhdGUgJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLmdldE1vbnRoKCkgPT09IG1vbnRoSW5kZXggJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKCkgPT09IHRoaXMudmlld0RhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICBjb25zdCBpc0N1cnJlbnQgPSBuZXcgRGF0ZSgpLmdldE1vbnRoKCkgPT09IG1vbnRoSW5kZXggJiZcbiAgICAgIG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSA9PT0gdGhpcy52aWV3RGF0ZS5nZXRGdWxsWWVhcigpO1xuXG4gICAgcmV0dXJuIGNuKFxuICAgICAgJ3RleHQtc20gcHktMi41IHJvdW5kZWQtbWQgdHJhbnNpdGlvbi1jb2xvcnMnLFxuICAgICAgaXNTZWxlY3RlZCA/ICdiZy1wcmltYXJ5IHRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIGhvdmVyOmJnLXByaW1hcnknIDpcbiAgICAgICAgaXNDdXJyZW50ID8gJ2JvcmRlciBib3JkZXItcHJpbWFyeS8zMCB0ZXh0LXByaW1hcnknIDpcbiAgICAgICAgICAnaG92ZXI6YmctYWNjZW50IGhvdmVyOnRleHQtYWNjZW50LWZvcmVncm91bmQnXG4gICAgKTtcbiAgfVxuXG4gIGdldFllYXJDbGFzcyh5ZWFyOiBudW1iZXIpIHtcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gdGhpcy5zZWxlY3RlZERhdGUgJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKCkgPT09IHllYXI7XG4gICAgY29uc3QgaXNDdXJyZW50ID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpID09PSB5ZWFyO1xuXG4gICAgcmV0dXJuIGNuKFxuICAgICAgJ3RleHQtc20gcHktMiByb3VuZGVkLW1kIHRyYW5zaXRpb24tY29sb3JzJyxcbiAgICAgIGlzU2VsZWN0ZWQgPyAnYmctcHJpbWFyeSB0ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBob3ZlcjpiZy1wcmltYXJ5JyA6XG4gICAgICAgIGlzQ3VycmVudCA/ICdib3JkZXIgYm9yZGVyLXByaW1hcnkvMzAgdGV4dC1wcmltYXJ5JyA6XG4gICAgICAgICAgJ2hvdmVyOmJnLWFjY2VudCBob3Zlcjp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kJ1xuICAgICk7XG4gIH1cblxuICBpc0RhdGVEaXNhYmxlZChkYXRlOiBEYXRlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZVBhc3REYXRlcyAmJiBpc0JlZm9yZShkYXRlLCBzdGFydE9mRGF5KG5ldyBEYXRlKCkpKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLm1pbkRhdGUgJiYgaXNCZWZvcmUoZGF0ZSwgdGhpcy5taW5EYXRlKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiAhISh0aGlzLm1heERhdGUgJiYgaXNCZWZvcmUodGhpcy5tYXhEYXRlLCBkYXRlKSk7XG5cbiAgfVxuXG4gIGlzVG9kYXlEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0RhdGVEaXNhYmxlZChuZXcgRGF0ZSgpKTtcbiAgfVxuXG4gIHNlbGVjdFRvZGF5KCkge1xuICAgIGlmICghdGhpcy5pc1RvZGF5RGlzYWJsZWQoKSkge1xuICAgICAgdGhpcy5zZWxlY3REYXRlKG5ldyBEYXRlKCkpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyKCkge1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbnVsbDtcbiAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgdGhpcy5kYXRlU2VsZWN0LmVtaXQobnVsbCk7XG4gIH1cblxuICAvLyBDVkEgSW1wbGVtZW50YXRpb25cbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xuICAgIGlmIChvYmopIHtcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShvYmopO1xuICAgICAgaWYgKCFpc05hTihkYXRlLmdldFRpbWUoKSkpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBkYXRlO1xuICAgICAgICB0aGlzLnZpZXdEYXRlID0gZGF0ZTtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZURheXMoKTtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVllYXJzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQgeyB0aGlzLm9uQ2hhbmdlID0gZm47IH1cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQgeyB0aGlzLm9uVG91Y2hlZCA9IGZuOyB9XG59XG4iXX0=
|
|
591
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9jYWxlbmRhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFBRSxLQUFLLEVBQVUsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQzNELE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFDTCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUN2RCxXQUFXLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFDdEQsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQ3pELFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUM3QixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDOzs7QUE2SGhDLE1BQU0sT0FBTyxpQkFBaUI7SUFrQ1I7SUFqQ1gsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNwQjt1RkFDbUY7SUFDMUUsUUFBUSxHQUFHLElBQUksQ0FBQztJQUNoQixJQUFJLEdBQWlCLE1BQU0sQ0FBQztJQUM1QixnQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFDekIsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLE9BQU8sQ0FBUTtJQUNmLE9BQU8sQ0FBUTtJQUNmLGFBQWEsQ0FBMEI7SUFDdkMsWUFBWSxDQUEwQjtJQUN0QyxZQUFZLENBQTBCO0lBRXJDLFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBZSxDQUFDO0lBRXZELFdBQVcs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QUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDO2dCQUNoRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsMEJBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRHVCwyREFwSFMsWUFBWSxrVEFBRSxXQUFXOzs0RkFzSHhCLGlCQUFpQjtrQkF6SDdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUM7b0JBQ3BDLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQzs0QkFDaEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0R1Q7aUJBQ0Y7c0ZBRVUsS0FBSztzQkFBYixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBmb3J3YXJkUmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0b3JSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SLCBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIGFkZERheXMsIGFkZE1vbnRocywgc3ViTW9udGhzLCBzdGFydE9mTW9udGgsIGVuZE9mTW9udGgsXG4gIHN0YXJ0T2ZXZWVrLCBlbmRPZldlZWssIGVhY2hEYXlPZkludGVydmFsLCBpc1NhbWVNb250aCxcbiAgaXNTYW1lRGF5LCBpc1RvZGF5LCBzZXRNb250aCwgc2V0WWVhciwgYWRkWWVhcnMsIHN1YlllYXJzLFxuICBpc0JlZm9yZSwgc3RhcnRPZkRheSwgZm9ybWF0XG59IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi91dGlscy9jbic7XG5cbmV4cG9ydCB0eXBlIENhbGVuZGFyTW9kZSA9ICdkYXRlJyB8ICdtb250aCcgfCAneWVhcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLWNhbGVuZGFyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGVdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENhbGVuZGFyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgW2NsYXNzXT1cImNuKCd0ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBpbmxpbmUtYmxvY2sgbWluLXctZml0JywgYm9yZGVyZWQgPyAncC0zIGJvcmRlciByb3VuZGVkLW1kIGJnLWJhY2tncm91bmQgc2hhZG93LXNtJyA6ICcnLCBjbGFzcylcIj5cbiAgICAgIDwhLS0gSGVhZGVyIHdpdGggTmF2aWdhdGlvbiAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHQtMSBwYi00IGdhcC0yXCI+XG4gICAgICAgIDwhLS0gVmlldyBTZWxlY3RvciAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCI+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIm1vZGUgIT09ICd5ZWFyJ1wiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZXRWaWV3KCdtb250aCcpXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJjbihcbiAgICAgICAgICAgICAgJ3RleHQtc20gZm9udC1zZW1pYm9sZCBweC0yIHB5LTEgcm91bmRlZCB0cmFuc2l0aW9uLWNvbG9ycycsXG4gICAgICAgICAgICAgIGN1cnJlbnRWaWV3ID09PSAnbW9udGgnID8gJ2JnLXNlY29uZGFyeSB0ZXh0LXNlY29uZGFyeS1mb3JlZ3JvdW5kJyA6ICdob3ZlcjpiZy1hY2NlbnQgaG92ZXI6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZCdcbiAgICAgICAgICAgIClcIj5cbiAgICAgICAgICAgIHt7IGZvcm1hdE1vbnRoWWVhcih2aWV3RGF0ZSwgJ21vbnRoJykgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNldFZpZXcoJ3llYXInKVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiY24oXG4gICAgICAgICAgICAgICd0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgcHgtMiBweS0xIHJvdW5kZWQgdHJhbnNpdGlvbi1jb2xvcnMnLFxuICAgICAgICAgICAgICBjdXJyZW50VmlldyA9PT0gJ3llYXInID8gJ2JnLXNlY29uZGFyeSB0ZXh0LXNlY29uZGFyeS1mb3JlZ3JvdW5kJyA6ICdob3ZlcjpiZy1hY2NlbnQgaG92ZXI6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZCdcbiAgICAgICAgICAgIClcIj5cbiAgICAgICAgICAgIHt7IGZvcm1hdE1vbnRoWWVhcih2aWV3RGF0ZSwgJ3llYXInKSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIE5hdmlnYXRpb24gQnV0dG9ucyAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMVwiPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJwcmV2KClcIiBbY2xhc3NdPVwibmF2QnRuQ2xhc3NcIiBhcmlhLWxhYmVsPVwiUHJldmlvdXMgbW9udGhcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwicmktYXJyb3ctbGVmdC1zLWxpbmUgdGV4dC1sZ1wiPjwvaT5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwibmV4dCgpXCIgW2NsYXNzXT1cIm5hdkJ0bkNsYXNzXCIgYXJpYS1sYWJlbD1cIk5leHQgbW9udGhcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwicmktYXJyb3ctcmlnaHQtcy1saW5lIHRleHQtbGdcIj48L2k+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gREFURSBNT0RFIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cImN1cnJlbnRWaWV3ID09PSAnZGF0ZScgJiYgbW9kZSA9PT0gJ2RhdGUnXCIgY2xhc3M9XCJzcGFjZS15LTIgYW5pbWF0ZS1pbiBmYWRlLWluIHpvb20taW4tOTUgZHVyYXRpb24tMjAwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGdyaWQtY29scy03IGdhcC0xIHctZnVsbFwiPlxuICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBkYXkgb2Ygd2Vla0RheXNcIiBjbGFzcz1cInRleHQtWzAuOHJlbV0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGZvbnQtbm9ybWFsIHRleHQtY2VudGVyIHctOVwiPlxuICAgICAgICAgICAge3sgZGF5IH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiByb2xlPVwiZ3JpZFwiIGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtNyBnYXAtMSB3LWZ1bGxcIiAoa2V5ZG93bik9XCJvbkdyaWRLZXlkb3duKCRldmVudClcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0ZSBvZiBkYXlzSW5Nb250aFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWQoZGF0ZSlcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIoZGF0ZSB8IGRhdGU6J2Z1bGxEYXRlJylcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdERhdGUoZGF0ZSlcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGF0ZURpc2FibGVkKGRhdGUpXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJnZXREYXlDbGFzcyhkYXRlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgZm9ybWF0RGF0ZShkYXRlLCAnZGF5JykgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBNT05USCBTRUxFQ1RPUiAoZm9yIGRhdGUgbW9kZSBhbmQgbW9udGggbW9kZSkgLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwiKGN1cnJlbnRWaWV3ID09PSAnbW9udGgnKVwiXG4gICAgICAgICAgIGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMyBnYXAtMiB3LTY0IGFuaW1hdGUtaW4gZmFkZS1pbiB6b29tLWluLTk1IGR1cmF0aW9uLTIwMFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IG1vbnRoIG9mIG1vbnRoczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE1vbnRoKGkpXCJcbiAgICAgICAgICBbY2xhc3NdPVwiZ2V0TW9udGhDbGFzcyhpKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBtb250aCB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFlFQVIgU0VMRUNUT1IgKGZvciBkYXRlIG1vZGUgYW5kIHllYXIgbW9kZSkgLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwiKGN1cnJlbnRWaWV3ID09PSAneWVhcicpIFwiXG4gICAgICAgICAgIGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtNCBnYXAtMiB3LTY0IGFuaW1hdGUtaW4gZmFkZS1pbiB6b29tLWluLTk1IGR1cmF0aW9uLTIwMFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHllYXIgb2YgeWVhcnNcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3RZZWFyKHllYXIpXCJcbiAgICAgICAgICBbY2xhc3NdPVwiZ2V0WWVhckNsYXNzKHllYXIpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHllYXIgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBRdWljayBBY3Rpb25zIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cInNob3dRdWlja0FjdGlvbnNcIiBjbGFzcz1cImJvcmRlci10IHB0LTMgbXQtM1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VG9kYXkoKVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwicXVpY2tBY3Rpb25CdG5DbGFzc1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNUb2RheURpc2FibGVkKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIFRvZGF5XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xlYXIoKVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwicXVpY2tBY3Rpb25CdG5DbGFzc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQ2xlYXJcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBASW5wdXQoKSBjbGFzcyA9ICcnO1xuICAvKiogUmVuZGVycyB0aGUgY2FsZW5kYXIncyBvd24gYm9yZGVyLCBiYWNrZ3JvdW5kIGFuZCBzaGFkb3cuIFNldCBgZmFsc2VgIHdoZW5cbiAgICogbmVzdGluZyBpbnNpZGUgYSBjYXJkL3BvcG92ZXIgdGhhdCBhbHJlYWR5IHByb3ZpZGVzIHRoZSBjaHJvbWUuIEBkZWZhdWx0IHRydWUgKi9cbiAgQElucHV0KCkgYm9yZGVyZWQgPSB0cnVlO1xuICBASW5wdXQoKSBtb2RlOiBDYWxlbmRhck1vZGUgPSAnZGF0ZSc7XG4gIEBJbnB1dCgpIGRpc2FibGVQYXN0RGF0ZXMgPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd1F1aWNrQWN0aW9ucyA9IHRydWU7XG4gIEBJbnB1dCgpIG1pbkRhdGU/OiBEYXRlO1xuICBASW5wdXQoKSBtYXhEYXRlPzogRGF0ZTtcbiAgQElucHV0KCkgZm9ybWF0TW9udGhGbj86IChkYXRlOiBEYXRlKSA9PiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZvcm1hdFllYXJGbj86IChkYXRlOiBEYXRlKSA9PiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZvcm1hdERhdGVGbj86IChkYXRlOiBEYXRlKSA9PiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpIGRhdGVTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPigpO1xuXG4gIGN1cnJlbnRWaWV3OiAnZGF0ZScgfCAnbW9udGgnIHwgJ3llYXInID0gJ2RhdGUnO1xuICB2aWV3RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIHNlbGVjdGVkRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIHdlZWtEYXlzID0gWydTdScsICdNbycsICdUdScsICdXZScsICdUaCcsICdGcicsICdTYSddO1xuICBkYXlzSW5Nb250aDogRGF0ZVtdID0gW107XG4gIG1vbnRocyA9IFsnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ01heScsICdKdW4nLCAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXTtcbiAgeWVhcnM6IG51bWJlcltdID0gW107XG4gIHllYXJSYW5nZVN0YXJ0OiBudW1iZXI7XG5cbiAgbmF2QnRuQ2xhc3MgPSBjbignaC03IHctNyBiZy10cmFuc3BhcmVudCBwLTAgb3BhY2l0eS01MCBob3ZlcjpvcGFjaXR5LTEwMCBib3JkZXIgYm9yZGVyLWlucHV0IHJvdW5kZWQtbWQgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgaG92ZXI6YmctYWNjZW50IGhvdmVyOnRleHQtYWNjZW50LWZvcmVncm91bmQgdHJhbnNpdGlvbi1hbGwgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcnKTtcbiAgcXVpY2tBY3Rpb25CdG5DbGFzcyA9IGNuKCdweC0zIHB5LTEuNSB0ZXh0LXNtIHJvdW5kZWQgaG92ZXI6YmctYWNjZW50IHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3Zlcjp0ZXh0LWZvcmVncm91bmQgdHJhbnNpdGlvbi1jb2xvcnMnKTtcblxuICBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgcHJvdGVjdGVkIGNuID0gY247XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy55ZWFyUmFuZ2VTdGFydCA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAtIDY7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBJbml0aWFsaXplIGJhc2VkIG9uIG1vZGVcbiAgICBpZiAodGhpcy5tb2RlID09PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLmN1cnJlbnRWaWV3ID0gJ21vbnRoJztcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gJ3llYXInKSB7XG4gICAgICB0aGlzLmN1cnJlbnRWaWV3ID0gJ3llYXInO1xuICAgIH1cblxuICAgIHRoaXMuZ2VuZXJhdGVEYXlzKCk7XG4gICAgdGhpcy5nZW5lcmF0ZVllYXJzKCk7XG4gIH1cblxuICAvLyBGb3JtYXQgaGVscGVyc1xuICBmb3JtYXRNb250aFllYXIoZGF0ZTogRGF0ZSwgdHlwZTogJ21vbnRoJyB8ICd5ZWFyJyk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGUgPT09ICdtb250aCcgJiYgdGhpcy5mb3JtYXRNb250aEZuKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtYXRNb250aEZuKGRhdGUpO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gJ3llYXInICYmIHRoaXMuZm9ybWF0WWVhckZuKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtYXRZZWFyRm4oZGF0ZSk7XG4gICAgfVxuICAgIHJldHVybiB0eXBlID09PSAnbW9udGgnID8gZm9ybWF0KGRhdGUsICdNTU1NJykgOiBmb3JtYXQoZGF0ZSwgJ3l5eXknKTtcbiAgfVxuXG4gIGZvcm1hdERhdGUoZGF0ZTogRGF0ZSwgdHlwZTogJ2RheScgfCAnbW9udGgnIHwgJ3llYXInKTogc3RyaW5nIHtcbiAgICBpZiAodHlwZSA9PT0gJ2RheScgJiYgdGhpcy5mb3JtYXREYXRlRm4pIHtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdERhdGVGbihkYXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIGZvcm1hdChkYXRlLCB0eXBlID09PSAnZGF5JyA/ICdkJyA6IHR5cGUgPT09ICdtb250aCcgPyAnTU1NJyA6ICd5eXl5Jyk7XG4gIH1cblxuICBnZW5lcmF0ZURheXMoKSB7XG4gICAgaWYgKHRoaXMubW9kZSAhPT0gJ2RhdGUnKSByZXR1cm47XG5cbiAgICBjb25zdCBzdGFydCA9IHN0YXJ0T2ZXZWVrKHN0YXJ0T2ZNb250aCh0aGlzLnZpZXdEYXRlKSk7XG4gICAgY29uc3QgZW5kID0gZW5kT2ZXZWVrKGVuZE9mTW9udGgodGhpcy52aWV3RGF0ZSkpO1xuICAgIHRoaXMuZGF5c0luTW9udGggPSBlYWNoRGF5T2ZJbnRlcnZhbCh7IHN0YXJ0LCBlbmQgfSk7XG4gIH1cblxuICBnZW5lcmF0ZVllYXJzKCkge1xuICAgIGNvbnN0IGN1cnJlbnRZZWFyID0gdGhpcy52aWV3RGF0ZS5nZXRGdWxsWWVhcigpO1xuXG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ3llYXInKSB7XG4gICAgICAvLyBGb3IgeWVhciBwaWNrZXIsIHNob3cgYSAxMi15ZWFyIGdyaWRcbiAgICAgIHRoaXMueWVhcnMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiAxMiB9LCAoXywgaSkgPT4gdGhpcy55ZWFyUmFuZ2VTdGFydCArIGkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBGb3IgZGF0ZSBtb2RlIHllYXIgc2VsZWN0b3IsIHNob3cgMTYgeWVhcnMgY2VudGVyZWQgb24gY3VycmVudFxuICAgICAgdGhpcy55ZWFycyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDE2IH0sIChfLCBpKSA9PiBjdXJyZW50WWVhciAtIDYgKyBpKTtcbiAgICB9XG4gIH1cblxuICBzZXRWaWV3KHZpZXc6ICdkYXRlJyB8ICdtb250aCcgfCAneWVhcicpIHtcbiAgICB0aGlzLmN1cnJlbnRWaWV3ID0gdmlldztcbiAgICBpZiAodmlldyA9PT0gJ3llYXInKSB7XG4gICAgICB0aGlzLmdlbmVyYXRlWWVhcnMoKTtcbiAgICB9XG4gIH1cblxuICBwcmV2KCkge1xuICAgIGlmICh0aGlzLm1vZGUgPT09ICdkYXRlJykge1xuICAgICAgaWYgKHRoaXMuY3VycmVudFZpZXcgPT09ICdkYXRlJykge1xuICAgICAgICB0aGlzLnZpZXdEYXRlID0gc3ViTW9udGhzKHRoaXMudmlld0RhdGUsIDEpO1xuICAgICAgICB0aGlzLmdlbmVyYXRlRGF5cygpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmN1cnJlbnRWaWV3ID09PSAneWVhcicpIHtcbiAgICAgICAgdGhpcy52aWV3RGF0ZSA9IHN1YlllYXJzKHRoaXMudmlld0RhdGUsIDE2KTtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVllYXJzKCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY3VycmVudFZpZXcgPT09ICdtb250aCcpIHtcbiAgICAgICAgdGhpcy52aWV3RGF0ZSA9IHN1YlllYXJzKHRoaXMudmlld0RhdGUsIDEpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLnZpZXdEYXRlID0gc3ViWWVhcnModGhpcy52aWV3RGF0ZSwgMSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm1vZGUgPT09ICd5ZWFyJykge1xuICAgICAgdGhpcy55ZWFyUmFuZ2VTdGFydCAtPSAxMjtcbiAgICAgIHRoaXMuZ2VuZXJhdGVZZWFycygpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSAnbW9udGgteWVhcicpIHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRWaWV3ID09PSAnbW9udGgnKSB7XG4gICAgICAgIHRoaXMudmlld0RhdGUgPSBzdWJZZWFycyh0aGlzLnZpZXdEYXRlLCAxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMueWVhclJhbmdlU3RhcnQgLT0gMTI7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVZZWFycygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5leHQoKSB7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ2RhdGUnKSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50VmlldyA9PT0gJ2RhdGUnKSB7XG4gICAgICAgIHRoaXMudmlld0RhdGUgPSBhZGRNb250aHModGhpcy52aWV3RGF0ZSwgMSk7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVEYXlzKCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY3VycmVudFZpZXcgPT09ICd5ZWFyJykge1xuICAgICAgICB0aGlzLnZpZXdEYXRlID0gYWRkWWVhcnModGhpcy52aWV3RGF0ZSwgMTYpO1xuICAgICAgICB0aGlzLmdlbmVyYXRlWWVhcnMoKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50VmlldyA9PT0gJ21vbnRoJykge1xuICAgICAgICB0aGlzLnZpZXdEYXRlID0gYWRkWWVhcnModGhpcy52aWV3RGF0ZSwgMSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLm1vZGUgPT09ICdtb250aCcpIHtcbiAgICAgIHRoaXMudmlld0RhdGUgPSBhZGRZZWFycyh0aGlzLnZpZXdEYXRlLCAxKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gJ3llYXInKSB7XG4gICAgICB0aGlzLnllYXJSYW5nZVN0YXJ0ICs9IDEyO1xuICAgICAgdGhpcy5nZW5lcmF0ZVllYXJzKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm1vZGUgPT09ICdtb250aC15ZWFyJykge1xuICAgICAgaWYgKHRoaXMuY3VycmVudFZpZXcgPT09ICdtb250aCcpIHtcbiAgICAgICAgdGhpcy52aWV3RGF0ZSA9IGFkZFllYXJzKHRoaXMudmlld0RhdGUsIDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy55ZWFyUmFuZ2VTdGFydCArPSAxMjtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVllYXJzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJldlllYXJzKCkge1xuICAgIHRoaXMueWVhclJhbmdlU3RhcnQgLT0gMTI7XG4gICAgdGhpcy5nZW5lcmF0ZVllYXJzKCk7XG4gIH1cblxuICBuZXh0WWVhcnMoKSB7XG4gICAgdGhpcy55ZWFyUmFuZ2VTdGFydCArPSAxMjtcbiAgICB0aGlzLmdlbmVyYXRlWWVhcnMoKTtcbiAgfVxuXG4gIHNlbGVjdERhdGUoZGF0ZTogRGF0ZSkge1xuICAgIGlmICh0aGlzLmlzRGF0ZURpc2FibGVkKGRhdGUpKSByZXR1cm47XG5cbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IGRhdGU7XG4gICAgdGhpcy5vbkNoYW5nZShkYXRlKTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIHRoaXMuZGF0ZVNlbGVjdC5lbWl0KGRhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyaWQga2V5Ym9hcmQgbmF2aWdhdGlvbiBmb3IgdGhlIGRheSB2aWV3IChyZWFjdC1kYXktcGlja2VyIHNlbWFudGljcykuXG4gICAqIEFycm93cyBtb3ZlIGJ5IGRheS93ZWVrLCBIb21lL0VuZCB0byB3ZWVrIGVkZ2VzLCBQYWdlVXAvUGFnZURvd24gYnkgbW9udGguXG4gICAqIEVudGVyL1NwYWNlIGFyZSBsZWZ0IHRvIHRoZSBuYXRpdmUgZGF5IDxidXR0b24+ICh3aGljaCBzZWxlY3RzIG9uIGNsaWNrIGFuZFxuICAgKiBkb2VzIG5vdCBzY3JvbGwgdGhlIHBhZ2UpLlxuICAgKi9cbiAgb25HcmlkS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRWaWV3ICE9PSAnZGF0ZScgfHwgdGhpcy5tb2RlICE9PSAnZGF0ZScpIHJldHVybjtcblxuICAgIGNvbnN0IGdyaWRFbCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgYnV0dG9ucyA9IEFycmF5LmZyb20oZ3JpZEVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ2J1dHRvbicpKSBhcyBIVE1MRWxlbWVudFtdO1xuICAgIGNvbnN0IGlkeCA9IGJ1dHRvbnMuaW5kZXhPZihldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICAgIGlmIChpZHggPCAwKSByZXR1cm47XG5cbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5kYXlzSW5Nb250aFtpZHhdO1xuICAgIGlmICghY3VycmVudCkgcmV0dXJuO1xuXG4gICAgbGV0IG5leHQ6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQXJyb3dMZWZ0JzogbmV4dCA9IGFkZERheXMoY3VycmVudCwgLTEpOyBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOiBuZXh0ID0gYWRkRGF5cyhjdXJyZW50LCAxKTsgYnJlYWs7XG4gICAgICBjYXNlICdBcnJvd1VwJzogbmV4dCA9IGFkZERheXMoY3VycmVudCwgLTcpOyBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6IG5leHQgPSBhZGREYXlzKGN1cnJlbnQsIDcpOyBicmVhaztcbiAgICAgIGNhc2UgJ0hvbWUnOiBuZXh0ID0gc3RhcnRPZldlZWsoY3VycmVudCk7IGJyZWFrO1xuICAgICAgY2FzZSAnRW5kJzogbmV4dCA9IGVuZE9mV2VlayhjdXJyZW50KTsgYnJlYWs7XG4gICAgICBjYXNlICdQYWdlVXAnOiBuZXh0ID0gc3ViTW9udGhzKGN1cnJlbnQsIDEpOyBicmVhaztcbiAgICAgIGNhc2UgJ1BhZ2VEb3duJzogbmV4dCA9IGFkZE1vbnRocyhjdXJyZW50LCAxKTsgYnJlYWs7XG4gICAgICBkZWZhdWx0OiByZXR1cm47XG4gICAgfVxuXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmZvY3VzRGF5KG5leHQsIGdyaWRFbCk7XG4gIH1cblxuICAvKipcbiAgICogTW92ZXMgZm9jdXMgdG8gdGhlIGRheSBidXR0b24gbWF0Y2hpbmcgYGRhdGVgLiBJZiB0aGUgZGF5IGlzIG5vdCBwcmVzZW50IGluXG4gICAqIHRoZSBjdXJyZW50IGdyaWQsIHRoZSB2aWV3IGFkdmFuY2VzL3JldHJlYXRzIHRvIGl0cyBtb250aCwgcmVnZW5lcmF0ZXMgYW5kXG4gICAqIHRoZW4gZm9jdXNlcyBpdC5cbiAgICovXG4gIHByaXZhdGUgZm9jdXNEYXkoZGF0ZTogRGF0ZSwgZ3JpZEVsOiBIVE1MRWxlbWVudCkge1xuICAgIGxldCBpZHggPSB0aGlzLmRheXNJbk1vbnRoLmZpbmRJbmRleChkID0+IGlzU2FtZURheShkLCBkYXRlKSk7XG4gICAgaWYgKGlkeCA8IDApIHtcbiAgICAgIHRoaXMudmlld0RhdGUgPSBzdGFydE9mTW9udGgoZGF0ZSk7XG4gICAgICB0aGlzLmdlbmVyYXRlRGF5cygpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpOyAvLyByZS1yZW5kZXIgdGhlIGdyaWQgc3luY2hyb25vdXNseVxuICAgICAgaWR4ID0gdGhpcy5kYXlzSW5Nb250aC5maW5kSW5kZXgoZCA9PiBpc1NhbWVEYXkoZCwgZGF0ZSkpO1xuICAgIH1cbiAgICBpZiAoaWR4IDwgMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgYnV0dG9ucyA9IEFycmF5LmZyb20oZ3JpZEVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ2J1dHRvbicpKSBhcyBIVE1MRWxlbWVudFtdO1xuICAgIGJ1dHRvbnNbaWR4XT8uZm9jdXMoKTtcbiAgfVxuXG4gIHNlbGVjdE1vbnRoKG1vbnRoSW5kZXg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLm1vZGUgPT09ICdkYXRlJykge1xuICAgICAgdGhpcy52aWV3RGF0ZSA9IHNldE1vbnRoKHRoaXMudmlld0RhdGUsIG1vbnRoSW5kZXgpO1xuICAgICAgdGhpcy5jdXJyZW50VmlldyA9ICdkYXRlJztcbiAgICAgIHRoaXMuZ2VuZXJhdGVEYXlzKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm1vZGUgPT09ICdtb250aCcpIHtcbiAgICAgIHRoaXMudmlld0RhdGUgPSBzZXRNb250aCh0aGlzLnZpZXdEYXRlLCBtb250aEluZGV4KTtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gIHRoaXMudmlld0RhdGU7XG4gICAgICB0aGlzLm9uQ2hhbmdlKCB0aGlzLnZpZXdEYXRlKTtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB0aGlzLmRhdGVTZWxlY3QuZW1pdCggdGhpcy52aWV3RGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0WWVhcih5ZWFyOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnZGF0ZScpIHtcbiAgICAgIHRoaXMudmlld0RhdGUgPSBzZXRZZWFyKHRoaXMudmlld0RhdGUsIHllYXIpO1xuICAgICAgdGhpcy5jdXJyZW50VmlldyA9ICdkYXRlJztcbiAgICAgIHRoaXMuZ2VuZXJhdGVEYXlzKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm1vZGUgPT09ICd5ZWFyJyB8fCB0aGlzLm1vZGUgPT09ICdtb250aCcpIHtcbiAgICAgIHRoaXMudmlld0RhdGUgPSBzZXRZZWFyKHRoaXMudmlld0RhdGUsIHllYXIpO1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSAgdGhpcy52aWV3RGF0ZTtcbiAgICAgIHRoaXMub25DaGFuZ2UoIHRoaXMudmlld0RhdGUpO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMuZGF0ZVNlbGVjdC5lbWl0KCB0aGlzLnZpZXdEYXRlKTtcbiAgICB9XG4gIH1cblxuICBpc1NlbGVjdGVkKGRhdGU6IERhdGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5zZWxlY3RlZERhdGUgJiYgaXNTYW1lRGF5KGRhdGUsIHRoaXMuc2VsZWN0ZWREYXRlKSk7XG4gIH1cblxuICBnZXREYXlDbGFzcyhkYXRlOiBEYXRlKSB7XG4gICAgY29uc3QgaXNTZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWREYXRlICYmIGlzU2FtZURheShkYXRlLCB0aGlzLnNlbGVjdGVkRGF0ZSk7XG4gICAgY29uc3QgaXNUb2RheURhdGUgPSBpc1RvZGF5KGRhdGUpO1xuICAgIGNvbnN0IGlzT3V0c2lkZSA9ICFpc1NhbWVNb250aChkYXRlLCB0aGlzLnZpZXdEYXRlKTtcbiAgICBjb25zdCBpc0Rpc2FibGVkID0gdGhpcy5pc0RhdGVEaXNhYmxlZChkYXRlKTtcblxuICAgIHJldHVybiBjbihcbiAgICAgICdoLTkgdy05IHAtMCBmb250LW5vcm1hbCB0ZXh0LXNtIHJvdW5kZWQtbWQgdHJhbnNpdGlvbi1hbGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcnLFxuICAgICAgIWlzU2VsZWN0ZWQgJiYgIWlzRGlzYWJsZWQgJiYgJ2hvdmVyOmJnLWFjY2VudCBob3Zlcjp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kJyxcbiAgICAgIGlzU2VsZWN0ZWQgJiYgJ2JnLXByaW1hcnkgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgaG92ZXI6YmctcHJpbWFyeSBob3Zlcjp0ZXh0LXByaW1hcnktZm9yZWdyb3VuZCcsXG4gICAgICAhaXNTZWxlY3RlZCAmJiBpc1RvZGF5RGF0ZSAmJiAnYmctYWNjZW50IHRleHQtYWNjZW50LWZvcmVncm91bmQnLFxuICAgICAgKGlzT3V0c2lkZSB8fCBpc0Rpc2FibGVkKSAmJiAndGV4dC1tdXRlZC1mb3JlZ3JvdW5kIG9wYWNpdHktNTAnLFxuICAgICAgaXNEaXNhYmxlZCAmJiAnY3Vyc29yLW5vdC1hbGxvd2VkJ1xuICAgICk7XG4gIH1cblxuICBnZXRNb250aENsYXNzKG1vbnRoSW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkRGF0ZSAmJlxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUuZ2V0TW9udGgoKSA9PT0gbW9udGhJbmRleCAmJlxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKSA9PT0gdGhpcy52aWV3RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IGlzQ3VycmVudCA9IG5ldyBEYXRlKCkuZ2V0TW9udGgoKSA9PT0gbW9udGhJbmRleCAmJlxuICAgICAgbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpID09PSB0aGlzLnZpZXdEYXRlLmdldEZ1bGxZZWFyKCk7XG5cbiAgICByZXR1cm4gY24oXG4gICAgICAndGV4dC1zbSBweS0yLjUgcm91bmRlZC1tZCB0cmFuc2l0aW9uLWNvbG9ycycsXG4gICAgICBpc1NlbGVjdGVkID8gJ2JnLXByaW1hcnkgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgaG92ZXI6YmctcHJpbWFyeScgOlxuICAgICAgICBpc0N1cnJlbnQgPyAnYm9yZGVyIGJvcmRlci1wcmltYXJ5LzMwIHRleHQtcHJpbWFyeScgOlxuICAgICAgICAgICdob3ZlcjpiZy1hY2NlbnQgaG92ZXI6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZCdcbiAgICApO1xuICB9XG5cbiAgZ2V0WWVhckNsYXNzKHllYXI6IG51bWJlcikge1xuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkRGF0ZSAmJlxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKSA9PT0geWVhcjtcbiAgICBjb25zdCBpc0N1cnJlbnQgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgPT09IHllYXI7XG5cbiAgICByZXR1cm4gY24oXG4gICAgICAndGV4dC1zbSBweS0yIHJvdW5kZWQtbWQgdHJhbnNpdGlvbi1jb2xvcnMnLFxuICAgICAgaXNTZWxlY3RlZCA/ICdiZy1wcmltYXJ5IHRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIGhvdmVyOmJnLXByaW1hcnknIDpcbiAgICAgICAgaXNDdXJyZW50ID8gJ2JvcmRlciBib3JkZXItcHJpbWFyeS8zMCB0ZXh0LXByaW1hcnknIDpcbiAgICAgICAgICAnaG92ZXI6YmctYWNjZW50IGhvdmVyOnRleHQtYWNjZW50LWZvcmVncm91bmQnXG4gICAgKTtcbiAgfVxuXG4gIGlzRGF0ZURpc2FibGVkKGRhdGU6IERhdGUpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlUGFzdERhdGVzICYmIGlzQmVmb3JlKGRhdGUsIHN0YXJ0T2ZEYXkobmV3IERhdGUoKSkpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMubWluRGF0ZSAmJiBpc0JlZm9yZShkYXRlLCB0aGlzLm1pbkRhdGUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuICEhKHRoaXMubWF4RGF0ZSAmJiBpc0JlZm9yZSh0aGlzLm1heERhdGUsIGRhdGUpKTtcblxuICB9XG5cbiAgaXNUb2RheURpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRGF0ZURpc2FibGVkKG5ldyBEYXRlKCkpO1xuICB9XG5cbiAgc2VsZWN0VG9kYXkoKSB7XG4gICAgaWYgKCF0aGlzLmlzVG9kYXlEaXNhYmxlZCgpKSB7XG4gICAgICB0aGlzLnNlbGVjdERhdGUobmV3IERhdGUoKSk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSBudWxsO1xuICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB0aGlzLmRhdGVTZWxlY3QuZW1pdChudWxsKTtcbiAgfVxuXG4gIC8vIENWQSBJbXBsZW1lbnRhdGlvblxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XG4gICAgaWYgKG9iaikge1xuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKG9iaik7XG4gICAgICBpZiAoIWlzTmFOKGRhdGUuZ2V0VGltZSgpKSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IGRhdGU7XG4gICAgICAgIHRoaXMudmlld0RhdGUgPSBkYXRlO1xuICAgICAgICB0aGlzLmdlbmVyYXRlRGF5cygpO1xuICAgICAgICB0aGlzLmdlbmVyYXRlWWVhcnMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7IHRoaXMub25Ub3VjaGVkID0gZm47IH1cbn1cbiJdfQ==
|
|
@@ -7,7 +7,7 @@ export class CardComponent {
|
|
|
7
7
|
cn = cn;
|
|
8
8
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9
9
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CardComponent, isStandalone: true, selector: "tolle-card", inputs: { class: "class" }, ngImport: i0, template: `
|
|
10
|
-
<div [class]="cn('rounded-
|
|
10
|
+
<div [class]="cn('flex flex-col gap-6 rounded-lg border border-border bg-card text-card-foreground py-6 shadow-sm', class)">
|
|
11
11
|
<ng-content></ng-content>
|
|
12
12
|
</div>
|
|
13
13
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
@@ -18,8 +18,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
18
18
|
selector: 'tolle-card',
|
|
19
19
|
standalone: true,
|
|
20
20
|
imports: [CommonModule],
|
|
21
|
+
// Card owns the vertical rhythm: `flex-col` + `gap-6` spaces the sections and
|
|
22
|
+
// `py-6` gives top/bottom padding. Sub-sections only add horizontal padding
|
|
23
|
+
// (`px-6`). This means a card renders correctly with ANY combination of
|
|
24
|
+
// header / content / footer — including content-only — with no `pt-0` hacks.
|
|
21
25
|
template: `
|
|
22
|
-
<div [class]="cn('rounded-
|
|
26
|
+
<div [class]="cn('flex flex-col gap-6 rounded-lg border border-border bg-card text-card-foreground py-6 shadow-sm', class)">
|
|
23
27
|
<ng-content></ng-content>
|
|
24
28
|
</div>
|
|
25
29
|
`,
|
|
@@ -31,14 +35,14 @@ export class CardHeaderComponent {
|
|
|
31
35
|
class = '';
|
|
32
36
|
cn = cn;
|
|
33
37
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CardHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
34
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CardHeaderComponent, isStandalone: true, selector: "tolle-card-header", inputs: { class: "class" }, ngImport: i0, template: `<div [class]="cn('flex flex-col
|
|
38
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CardHeaderComponent, isStandalone: true, selector: "tolle-card-header", inputs: { class: "class" }, ngImport: i0, template: `<div [class]="cn('flex flex-col gap-1.5 px-6', class)"><ng-content></ng-content></div>`, isInline: true });
|
|
35
39
|
}
|
|
36
40
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CardHeaderComponent, decorators: [{
|
|
37
41
|
type: Component,
|
|
38
42
|
args: [{
|
|
39
43
|
selector: 'tolle-card-header',
|
|
40
44
|
standalone: true,
|
|
41
|
-
template: `<div [class]="cn('flex flex-col
|
|
45
|
+
template: `<div [class]="cn('flex flex-col gap-1.5 px-6', class)"><ng-content></ng-content></div>`,
|
|
42
46
|
}]
|
|
43
47
|
}], propDecorators: { class: [{
|
|
44
48
|
type: Input
|
|
@@ -59,18 +63,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
59
63
|
}], propDecorators: { class: [{
|
|
60
64
|
type: Input
|
|
61
65
|
}] } });
|
|
66
|
+
export class CardDescriptionComponent {
|
|
67
|
+
class = '';
|
|
68
|
+
cn = cn;
|
|
69
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CardDescriptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
70
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CardDescriptionComponent, isStandalone: true, selector: "tolle-card-description", inputs: { class: "class" }, ngImport: i0, template: `<p [class]="cn('text-sm text-muted-foreground', class)"><ng-content></ng-content></p>`, isInline: true });
|
|
71
|
+
}
|
|
72
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CardDescriptionComponent, decorators: [{
|
|
73
|
+
type: Component,
|
|
74
|
+
args: [{
|
|
75
|
+
selector: 'tolle-card-description',
|
|
76
|
+
standalone: true,
|
|
77
|
+
template: `<p [class]="cn('text-sm text-muted-foreground', class)"><ng-content></ng-content></p>`,
|
|
78
|
+
}]
|
|
79
|
+
}], propDecorators: { class: [{
|
|
80
|
+
type: Input
|
|
81
|
+
}] } });
|
|
62
82
|
export class CardContentComponent {
|
|
63
83
|
class = '';
|
|
64
84
|
cn = cn;
|
|
65
85
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CardContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
66
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CardContentComponent, isStandalone: true, selector: "tolle-card-content", inputs: { class: "class" }, ngImport: i0, template: `<div [class]="cn('
|
|
86
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CardContentComponent, isStandalone: true, selector: "tolle-card-content", inputs: { class: "class" }, ngImport: i0, template: `<div [class]="cn('px-6', class)"><ng-content></ng-content></div>`, isInline: true });
|
|
67
87
|
}
|
|
68
88
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CardContentComponent, decorators: [{
|
|
69
89
|
type: Component,
|
|
70
90
|
args: [{
|
|
71
91
|
selector: 'tolle-card-content',
|
|
72
92
|
standalone: true,
|
|
73
|
-
template: `<div [class]="cn('
|
|
93
|
+
template: `<div [class]="cn('px-6', class)"><ng-content></ng-content></div>`,
|
|
74
94
|
}]
|
|
75
95
|
}], propDecorators: { class: [{
|
|
76
96
|
type: Input
|
|
@@ -79,16 +99,16 @@ export class CardFooterComponent {
|
|
|
79
99
|
class = '';
|
|
80
100
|
cn = cn;
|
|
81
101
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CardFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
82
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CardFooterComponent, isStandalone: true, selector: "tolle-card-footer", inputs: { class: "class" }, ngImport: i0, template: `<div [class]="cn('flex items-center
|
|
102
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CardFooterComponent, isStandalone: true, selector: "tolle-card-footer", inputs: { class: "class" }, ngImport: i0, template: `<div [class]="cn('flex items-center px-6', class)"><ng-content></ng-content></div>`, isInline: true });
|
|
83
103
|
}
|
|
84
104
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CardFooterComponent, decorators: [{
|
|
85
105
|
type: Component,
|
|
86
106
|
args: [{
|
|
87
107
|
selector: 'tolle-card-footer',
|
|
88
108
|
standalone: true,
|
|
89
|
-
template: `<div [class]="cn('flex items-center
|
|
109
|
+
template: `<div [class]="cn('flex items-center px-6', class)"><ng-content></ng-content></div>`,
|
|
90
110
|
}]
|
|
91
111
|
}], propDecorators: { class: [{
|
|
92
112
|
type: Input
|
|
93
113
|
}] } });
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90b2xsZS9zcmMvbGliL2NhcmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDOztBQWdCaEMsTUFBTSxPQUFPLGFBQWE7SUFBWSxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQzt3R0FBdkQsYUFBYTs0RkFBYixhQUFhLGtHQU5kOzs7O0dBSVQsMkRBVFMsWUFBWTs7NEZBV1gsYUFBYTtrQkFkekIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsOEVBQThFO29CQUM5RSw0RUFBNEU7b0JBQzVFLHdFQUF3RTtvQkFDeEUsNkVBQTZFO29CQUM3RSxRQUFRLEVBQUU7Ozs7R0FJVDtpQkFDRjs4QkFDcUMsS0FBSztzQkFBYixLQUFLOztBQU9uQyxNQUFNLE9BQU8sbUJBQW1CO0lBQVksS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUFXLEVBQUUsR0FBRyxFQUFFLENBQUM7d0dBQTdELG1CQUFtQjs0RkFBbkIsbUJBQW1CLHlHQUZwQix3RkFBd0Y7OzRGQUV2RixtQkFBbUI7a0JBTC9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSx3RkFBd0Y7aUJBQ25HOzhCQUMyQyxLQUFLO3NCQUFiLEtBQUs7O0FBT3pDLE1BQU0sT0FBTyxrQkFBa0I7SUFBWSxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQzt3R0FBNUQsa0JBQWtCOzRGQUFsQixrQkFBa0Isd0dBRm5CLHFHQUFxRzs7NEZBRXBHLGtCQUFrQjtrQkFMOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHFHQUFxRztpQkFDaEg7OEJBQzBDLEtBQUs7c0JBQWIsS0FBSzs7QUFPeEMsTUFBTSxPQUFPLHdCQUF3QjtJQUFZLEtBQUssR0FBRyxFQUFFLENBQUM7SUFBVyxFQUFFLEdBQUcsRUFBRSxDQUFDO3dHQUFsRSx3QkFBd0I7NEZBQXhCLHdCQUF3Qiw4R0FGekIsdUZBQXVGOzs0RkFFdEYsd0JBQXdCO2tCQUxwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsdUZBQXVGO2lCQUNsRzs4QkFDZ0QsS0FBSztzQkFBYixLQUFLOztBQU85QyxNQUFNLE9BQU8sb0JBQW9CO0lBQVksS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUFXLEVBQUUsR0FBRyxFQUFFLENBQUM7d0dBQTlELG9CQUFvQjs0RkFBcEIsb0JBQW9CLDBHQUZyQixrRUFBa0U7OzRGQUVqRSxvQkFBb0I7a0JBTGhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxrRUFBa0U7aUJBQzdFOzhCQUM0QyxLQUFLO3NCQUFiLEtBQUs7O0FBTzFDLE1BQU0sT0FBTyxtQkFBbUI7SUFBWSxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQzt3R0FBN0QsbUJBQW1COzRGQUFuQixtQkFBbUIseUdBRnBCLG9GQUFvRjs7NEZBRW5GLG1CQUFtQjtrQkFML0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLG9GQUFvRjtpQkFDL0Y7OEJBQzJDLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4vdXRpbHMvY24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0b2xsZS1jYXJkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIC8vIENhcmQgb3ducyB0aGUgdmVydGljYWwgcmh5dGhtOiBgZmxleC1jb2xgICsgYGdhcC02YCBzcGFjZXMgdGhlIHNlY3Rpb25zIGFuZFxuICAvLyBgcHktNmAgZ2l2ZXMgdG9wL2JvdHRvbSBwYWRkaW5nLiBTdWItc2VjdGlvbnMgb25seSBhZGQgaG9yaXpvbnRhbCBwYWRkaW5nXG4gIC8vIChgcHgtNmApLiBUaGlzIG1lYW5zIGEgY2FyZCByZW5kZXJzIGNvcnJlY3RseSB3aXRoIEFOWSBjb21iaW5hdGlvbiBvZlxuICAvLyBoZWFkZXIgLyBjb250ZW50IC8gZm9vdGVyIOKAlCBpbmNsdWRpbmcgY29udGVudC1vbmx5IOKAlCB3aXRoIG5vIGBwdC0wYCBoYWNrcy5cbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtjbGFzc109XCJjbignZmxleCBmbGV4LWNvbCBnYXAtNiByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItYm9yZGVyIGJnLWNhcmQgdGV4dC1jYXJkLWZvcmVncm91bmQgcHktNiBzaGFkb3ctc20nLCBjbGFzcylcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgQ2FyZENvbXBvbmVudCB7IEBJbnB1dCgpIGNsYXNzID0gJyc7IHByb3RlY3RlZCBjbiA9IGNuOyB9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLWNhcmQtaGVhZGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6IGA8ZGl2IFtjbGFzc109XCJjbignZmxleCBmbGV4LWNvbCBnYXAtMS41IHB4LTYnLCBjbGFzcylcIj48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9kaXY+YCxcbn0pXG5leHBvcnQgY2xhc3MgQ2FyZEhlYWRlckNvbXBvbmVudCB7IEBJbnB1dCgpIGNsYXNzID0gJyc7IHByb3RlY3RlZCBjbiA9IGNuOyB9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLWNhcmQtdGl0bGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogYDxoMyBbY2xhc3NdPVwiY24oJ2ZvbnQtc2VtaWJvbGQgbGVhZGluZy1ub25lIHRyYWNraW5nLXRpZ2h0JywgY2xhc3MpXCI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvaDM+YCxcbn0pXG5leHBvcnQgY2xhc3MgQ2FyZFRpdGxlQ29tcG9uZW50IHsgQElucHV0KCkgY2xhc3MgPSAnJzsgcHJvdGVjdGVkIGNuID0gY247IH1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtY2FyZC1kZXNjcmlwdGlvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiBgPHAgW2NsYXNzXT1cImNuKCd0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCcsIGNsYXNzKVwiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L3A+YCxcbn0pXG5leHBvcnQgY2xhc3MgQ2FyZERlc2NyaXB0aW9uQ29tcG9uZW50IHsgQElucHV0KCkgY2xhc3MgPSAnJzsgcHJvdGVjdGVkIGNuID0gY247IH1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtY2FyZC1jb250ZW50JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6IGA8ZGl2IFtjbGFzc109XCJjbigncHgtNicsIGNsYXNzKVwiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj5gLFxufSlcbmV4cG9ydCBjbGFzcyBDYXJkQ29udGVudENvbXBvbmVudCB7IEBJbnB1dCgpIGNsYXNzID0gJyc7IHByb3RlY3RlZCBjbiA9IGNuOyB9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLWNhcmQtZm9vdGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6IGA8ZGl2IFtjbGFzc109XCJjbignZmxleCBpdGVtcy1jZW50ZXIgcHgtNicsIGNsYXNzKVwiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj5gLFxufSlcbmV4cG9ydCBjbGFzcyBDYXJkRm9vdGVyQ29tcG9uZW50IHsgQElucHV0KCkgY2xhc3MgPSAnJzsgcHJvdGVjdGVkIGNuID0gY247IH1cbiJdfQ==
|