@rivet-health/design-system 21.2.1 → 22.0.0
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/esm2020/lib/input/calendar/calendar.component.mjs +2 -1
- package/esm2020/lib/input/date/date.component.mjs +5 -4
- package/esm2020/lib/input/date-range/date-range.component.mjs +7 -5
- package/esm2020/lib/input/select/select/select.component.mjs +8 -7
- package/esm2020/lib/input/select/select-node/select-node.component.mjs +2 -1
- package/esm2020/lib/input/single-select/single-select.component.mjs +10 -9
- package/esm2020/lib/modal/callout/callout.component.mjs +5 -4
- package/esm2020/lib/modal/menu/menu.component.mjs +6 -9
- package/esm2020/lib/modal/modal/modal.component.mjs +26 -0
- package/esm2020/lib/modal/overlay-outlet.component.mjs +17 -0
- package/esm2020/lib/modal/overlay.directive.mjs +25 -0
- package/esm2020/lib/modal/overlay.service.mjs +36 -0
- package/esm2020/lib/modal/side-sheet/side-sheet.component.mjs +20 -0
- package/esm2020/lib/modal/tooltip/tooltip.component.mjs +4 -3
- package/esm2020/lib/navigation/views/views/views.component.mjs +5 -5
- package/esm2020/lib/riv.module.mjs +21 -11
- package/esm2020/lib/table/table/table.component.mjs +7 -7
- package/esm2020/lib/table/table-column-settings/table-column-settings.component.mjs +8 -8
- package/esm2020/lib/visualization/chart/chart.component.mjs +6 -5
- package/esm2020/lib/visualization/stacked-column/stacked-column.component.mjs +6 -5
- package/esm2020/lib/visualization/stacked-row/stacked-row.component.mjs +6 -5
- package/esm2020/lib/visualization/time-series/time-series.component.mjs +6 -5
- package/esm2020/public-api.mjs +5 -3
- package/fesm2015/rivet-health-design-system.mjs +170 -102
- package/fesm2015/rivet-health-design-system.mjs.map +1 -1
- package/fesm2020/rivet-health-design-system.mjs +166 -101
- package/fesm2020/rivet-health-design-system.mjs.map +1 -1
- package/lib/input/single-select/single-select.component.d.ts +2 -2
- package/lib/modal/callout/callout.component.d.ts +2 -2
- package/lib/modal/menu/menu.component.d.ts +1 -3
- package/lib/modal/modal/modal.component.d.ts +9 -0
- package/lib/modal/overlay-outlet.component.d.ts +11 -0
- package/lib/modal/overlay.directive.d.ts +13 -0
- package/lib/modal/overlay.service.d.ts +11 -0
- package/lib/modal/side-sheet/side-sheet.component.d.ts +8 -0
- package/lib/riv.module.d.ts +73 -71
- package/package.json +1 -1
- package/public-api.d.ts +4 -2
- package/esm2020/lib/modal/callout/callout-outlet.component.mjs +0 -16
- package/esm2020/lib/modal/callout/callout.directive.mjs +0 -27
- package/esm2020/lib/modal/callout/callout.service.mjs +0 -21
- package/lib/modal/callout/callout-outlet.component.d.ts +0 -8
- package/lib/modal/callout/callout.directive.d.ts +0 -13
- package/lib/modal/callout/callout.service.d.ts +0 -10
|
@@ -16,6 +16,7 @@ function getWeekdayNumber(date) {
|
|
|
16
16
|
}
|
|
17
17
|
// TODO: once we upgrade to Angular 16, this component can be cleaned up with
|
|
18
18
|
// signals instead of RxJS.
|
|
19
|
+
// https://www.notion.so/rivet/Resolve-TODOs-after-Angular-upgrade-1f2667eb2a3180b79f6ad92a7e576f08
|
|
19
20
|
export class CalendarComponent {
|
|
20
21
|
constructor() {
|
|
21
22
|
this.activeYearMonth$ = new BehaviorSubject(new Date());
|
|
@@ -278,4 +279,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
278
279
|
CalendarComponent.defaultMin = timeYear.floor(timeYear.offset(new Date(), -7));
|
|
279
280
|
CalendarComponent.defaultMax = timeDay.offset(timeYear.floor(timeYear.offset(new Date(), 5)), -1);
|
|
280
281
|
})(CalendarComponent || (CalendarComponent = {}));
|
|
281
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLE9BQU8sRUFDUCxRQUFRLEVBQ1IsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsUUFBUSxFQUNSLFNBQVMsR0FDVixNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUNMLGVBQWUsRUFFZixhQUFhLEVBQ2IsR0FBRyxFQUNILFdBQVcsR0FDWixNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBR2QsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hDLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEMsTUFBTSxzQkFBc0IsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFaEQsU0FBUyxnQkFBZ0IsQ0FBQyxJQUFVO0lBQ2xDLE9BQU8sUUFBUSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQW9CRCw2RUFBNkU7QUFDN0UsMkJBQTJCO0FBTzNCLE1BQU0sT0FBTyxpQkFBaUI7SUFOOUI7UUFPbUIscUJBQWdC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dCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgdGltZURheSxcbiAgdGltZURheXMsXG4gIHRpbWVNb250aCxcbiAgdGltZU1vbnRocyxcbiAgdGltZVN1bmRheSxcbiAgdGltZVllYXIsXG4gIHRpbWVZZWFycyxcbn0gZnJvbSAnZDMtdGltZSc7XG5pbXBvcnQgeyB0aW1lRm9ybWF0IH0gZnJvbSAnZDMtdGltZS1mb3JtYXQnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBPYnNlcnZhYmxlLFxuICBjb21iaW5lTGF0ZXN0LFxuICBtYXAsXG4gIHNoYXJlUmVwbGF5LFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNpbmdsZVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uL3NpbmdsZS1zZWxlY3Qvc2luZ2xlLXNlbGVjdC5jb21wb25lbnQnO1xuXG5jb25zdCBtb250aEZvcm1hdHRlciA9IHRpbWVGb3JtYXQoJyVCJyk7XG5jb25zdCB5ZWFyRm9ybWF0dGVyID0gdGltZUZvcm1hdCgnJVknKTtcbmNvbnN0IGRheUZvcm1hdHRlciA9IHRpbWVGb3JtYXQoJyVlJyk7XG5jb25zdCB3ZWVrZGF5TnVtYmVyRm9ybWF0dGVyID0gdGltZUZvcm1hdCgnJXcnKTtcblxuZnVuY3Rpb24gZ2V0V2Vla2RheU51bWJlcihkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgcmV0dXJuIHBhcnNlSW50KHdlZWtkYXlOdW1iZXJGb3JtYXR0ZXIoZGF0ZSkpO1xufVxuXG50eXBlIERhdGVPcHRpb24gPSBTaW5nbGVTZWxlY3RDb21wb25lbnQuT3B0aW9uICYgeyBkYXRlOiBEYXRlIH07XG5cbnR5cGUgQ2FsZW5kYXJEYXRlID0ge1xuICBkYXRlOiBEYXRlO1xuICBkaXNwbGF5OiBzdHJpbmc7XG4gIGZhZGVJbjogYm9vbGVhbjtcbiAgZmFkZU91dDogYm9vbGVhbjtcbiAgaGlkZGVuOiBib29sZWFuO1xuICBpbkN1cnJlbnRNb250aDogYm9vbGVhbjtcbiAgaW5SYW5nZTogYm9vbGVhbjtcbiAgcm91bmRlZE5lOiBib29sZWFuO1xuICByb3VuZGVkTnc6IGJvb2xlYW47XG4gIHJvdW5kZWRTZTogYm9vbGVhbjtcbiAgcm91bmRlZFN3OiBib29sZWFuO1xuICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgdG9kYXk6IGJvb2xlYW47XG59O1xuXG4vLyBUT0RPOiBvbmNlIHdlIHVwZ3JhZGUgdG8gQW5ndWxhciAxNiwgdGhpcyBjb21wb25lbnQgY2FuIGJlIGNsZWFuZWQgdXAgd2l0aFxuLy8gc2lnbmFscyBpbnN0ZWFkIG9mIFJ4SlMuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtY2FsZW5kYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckNvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZlWWVhck1vbnRoJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0ZT4obmV3IERhdGUoKSk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYWN0aXZlWWVhck1vbnRoKHY6IERhdGUpIHtcbiAgICB0aGlzLmFjdGl2ZVllYXJNb250aCQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IGFjdGl2ZVllYXJNb250aCgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVZZWFyTW9udGgkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGRpc3BsYXlNaW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRlPihcbiAgICBDYWxlbmRhckNvbXBvbmVudC5kZWZhdWx0TWluLFxuICApO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc3BsYXlNaW4odjogRGF0ZSkge1xuICAgIHRoaXMuZGlzcGxheU1pbiQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IGRpc3BsYXlNaW4oKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheU1pbiQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGlzcGxheU1heCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGU+KFxuICAgIENhbGVuZGFyQ29tcG9uZW50LmRlZmF1bHRNYXgsXG4gICk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzcGxheU1heCh2OiBEYXRlKSB7XG4gICAgdGhpcy5kaXNwbGF5TWF4JC5uZXh0KHYpO1xuICB9XG4gIHB1YmxpYyBnZXQgZGlzcGxheU1heCgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5TWF4JC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3RhYmxlTWluJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0ZSB8IHVuZGVmaW5lZD4oXG4gICAgdW5kZWZpbmVkLFxuICApO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdGFibGVNaW4odjogRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuc2VsZWN0YWJsZU1pbiQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IHNlbGVjdGFibGVNaW4oKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0YWJsZU1pbiQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0YWJsZU1heCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGUgfCB1bmRlZmluZWQ+KFxuICAgIHVuZGVmaW5lZCxcbiAgKTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWxlY3RhYmxlTWF4KHY6IERhdGUgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnNlbGVjdGFibGVNYXgkLm5leHQodik7XG4gIH1cbiAgcHVibGljIGdldCBzZWxlY3RhYmxlTWF4KCk6IERhdGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGFibGVNYXgkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IG9taXRSYW5nZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZD4oXG4gICAgdW5kZWZpbmVkLFxuICApO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG9taXRSYW5nZSh2OiBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLm9taXRSYW5nZSQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IG9taXRSYW5nZSgpOiBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm9taXRSYW5nZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0ZWRWYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgIERhdGUgfCBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWRcbiAgPih1bmRlZmluZWQpO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdGVkVmFsdWUodjogRGF0ZSB8IFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkVmFsdWUoKTogRGF0ZSB8IFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRWYWx1ZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IHllYXJPcHRpb25zJDogT2JzZXJ2YWJsZTxEYXRlT3B0aW9uW10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5kaXNwbGF5TWluJCxcbiAgICB0aGlzLmRpc3BsYXlNYXgkLFxuICAgIHRoaXMuc2VsZWN0YWJsZU1pbiQsXG4gICAgdGhpcy5zZWxlY3RhYmxlTWF4JCxcbiAgICB0aGlzLmFjdGl2ZVllYXJNb250aCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKFxuICAgICAgKFtcbiAgICAgICAgZGlzcGxheU1pbixcbiAgICAgICAgZGlzcGxheU1heCxcbiAgICAgICAgc2VsZWN0YWJsZU1pbixcbiAgICAgICAgc2VsZWN0YWJsZU1heCxcbiAgICAgICAgYWN0aXZlWWVhck1vbnRoLFxuICAgICAgXSkgPT4ge1xuICAgICAgICBjb25zdCBtaW46IERhdGUgPSBzZWxlY3RhYmxlTWluID8/IGRpc3BsYXlNaW47XG4gICAgICAgIGNvbnN0IG1heDogRGF0ZSA9IHNlbGVjdGFibGVNYXggPz8gZGlzcGxheU1heDtcbiAgICAgICAgcmV0dXJuIHRpbWVZZWFycyh0aW1lWWVhci5mbG9vcihkaXNwbGF5TWluKSwgZGlzcGxheU1heCkubWFwKFxuICAgICAgICAgIGZsb29yZWRZZWFyID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHllYXIgPSBuZXcgRGF0ZShcbiAgICAgICAgICAgICAgZmxvb3JlZFllYXIuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgICAgICAgYWN0aXZlWWVhck1vbnRoLmdldE1vbnRoKCksXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgaWQ6IHllYXIuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpLFxuICAgICAgICAgICAgICB0aXRsZTogeWVhckZvcm1hdHRlcih5ZWFyKSxcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6XG4gICAgICAgICAgICAgICAgeWVhci5nZXRGdWxsWWVhcigpIDwgbWluLmdldEZ1bGxZZWFyKCkgfHxcbiAgICAgICAgICAgICAgICB5ZWFyLmdldEZ1bGxZZWFyKCkgPiBtYXguZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgICAgICAgZGF0ZTogeWVhcixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGVkWWVhck9wdGlvbiQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLnllYXJPcHRpb25zJCxcbiAgICB0aGlzLmFjdGl2ZVllYXJNb250aCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKFxuICAgICAgKFt5ZWFyT3B0aW9ucywgYWN0aXZlWWVhck1vbnRoXSkgPT5cbiAgICAgICAgeWVhck9wdGlvbnMuZmluZChcbiAgICAgICAgICB5ID0+IHkuaWQgPT09IGFjdGl2ZVllYXJNb250aC5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCksXG4gICAgICAgICkgfHwgbnVsbCxcbiAgICApLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgbW9udGhPcHRpb25zJDogT2JzZXJ2YWJsZTxEYXRlT3B0aW9uW10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5hY3RpdmVZZWFyTW9udGgkLFxuICAgIHRoaXMuZGlzcGxheU1pbiQsXG4gICAgdGhpcy5kaXNwbGF5TWF4JCxcbiAgICB0aGlzLnNlbGVjdGFibGVNaW4kLFxuICAgIHRoaXMuc2VsZWN0YWJsZU1heCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKFxuICAgICAgKFtcbiAgICAgICAgYWN0aXZlWWVhck1vbnRoLFxuICAgICAgICBkaXNwbGF5TWluLFxuICAgICAgICBkaXNwbGF5TWF4LFxuICAgICAgICBzZWxlY3RhYmxlTWluLFxuICAgICAgICBzZWxlY3RhYmxlTWF4LFxuICAgICAgXSkgPT4ge1xuICAgICAgICBjb25zdCBtaW4gPSBzZWxlY3RhYmxlTWluID8/IGRpc3BsYXlNaW47XG4gICAgICAgIGNvbnN0IG1heCA9IHNlbGVjdGFibGVNYXggPz8gZGlzcGxheU1heDtcbiAgICAgICAgcmV0dXJuIHRpbWVNb250aHMoXG4gICAgICAgICAgdGltZVllYXIuZmxvb3IoYWN0aXZlWWVhck1vbnRoKSxcbiAgICAgICAgICB0aW1lWWVhci5mbG9vcih0aW1lWWVhci5vZmZzZXQoYWN0aXZlWWVhck1vbnRoLCAxKSksXG4gICAgICAgICkubWFwKG1vbnRoID0+ICh7XG4gICAgICAgICAgaWQ6IG1vbnRoLmdldE1vbnRoKCkudG9TdHJpbmcoKSxcbiAgICAgICAgICB0aXRsZTogbW9udGhGb3JtYXR0ZXIobW9udGgpLFxuICAgICAgICAgIGRpc2FibGVkOlxuICAgICAgICAgICAgbW9udGgudmFsdWVPZigpIDwgbWluLnZhbHVlT2YoKSB8fCBtb250aC52YWx1ZU9mKCkgPiBtYXgudmFsdWVPZigpLFxuICAgICAgICAgIGRhdGU6IG1vbnRoLFxuICAgICAgICB9KSk7XG4gICAgICB9LFxuICAgICksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSBzZWxlY3RlZE1vbnRoT3B0aW9uJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMubW9udGhPcHRpb25zJCxcbiAgICB0aGlzLmFjdGl2ZVllYXJNb250aCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKFxuICAgICAgKFttb250aE9wdGlvbnMsIGFjdGl2ZVllYXJNb250aF0pID0+XG4gICAgICAgIG1vbnRoT3B0aW9ucy5maW5kKFxuICAgICAgICAgIG0gPT4gbS5pZCA9PT0gYWN0aXZlWWVhck1vbnRoLmdldE1vbnRoKCkudG9TdHJpbmcoKSxcbiAgICAgICAgKSB8fCBudWxsLFxuICAgICksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSBwcmV2aW91c01vbnRoJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuYWN0aXZlWWVhck1vbnRoJCxcbiAgICB0aGlzLmRpc3BsYXlNaW4kLFxuICAgIHRoaXMuc2VsZWN0YWJsZU1pbiQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbeWVhck1vbnRoLCBkaXNwbGF5TWluLCBzZWxlY3RhYmxlTWluXSkgPT4ge1xuICAgICAgY29uc3QgbWluOiBEYXRlID0gc2VsZWN0YWJsZU1pbiA/PyBkaXNwbGF5TWluO1xuICAgICAgY29uc3QgcHJldmlvdXMgPSB0aW1lTW9udGguZmxvb3IodGltZU1vbnRoLm9mZnNldCh5ZWFyTW9udGgsIC0xKSk7XG4gICAgICBpZiAocHJldmlvdXMudmFsdWVPZigpIDwgbWluLnZhbHVlT2YoKSkgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4gcHJldmlvdXM7XG4gICAgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgbmV4dE1vbnRoJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuYWN0aXZlWWVhck1vbnRoJCxcbiAgICB0aGlzLmRpc3BsYXlNYXgkLFxuICAgIHRoaXMuc2VsZWN0YWJsZU1heCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbeWVhck1vbnRoLCBkaXNwbGF5TWF4LCBzZWxlY3RhYmxlTWF4XSkgPT4ge1xuICAgICAgY29uc3QgbWF4OiBEYXRlID0gc2VsZWN0YWJsZU1heCA/PyBkaXNwbGF5TWF4O1xuICAgICAgY29uc3QgbmV4dCA9IHRpbWVNb250aC5mbG9vcih0aW1lTW9udGgub2Zmc2V0KHllYXJNb250aCwgMSkpO1xuICAgICAgaWYgKG5leHQudmFsdWVPZigpID4gbWF4LnZhbHVlT2YoKSkgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4gbmV4dDtcbiAgICB9KSxcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRhdGVzSW5TZWxlY3RlZFJhbmdlJDogT2JzZXJ2YWJsZTxEYXRlW10+ID1cbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUkLnBpcGUoXG4gICAgICBtYXAoc2VsZWN0ZWRWYWx1ZSA9PiB7XG4gICAgICAgIGlmICghc2VsZWN0ZWRWYWx1ZSkgcmV0dXJuIFtdO1xuICAgICAgICBpZiAoc2VsZWN0ZWRWYWx1ZSBpbnN0YW5jZW9mIERhdGUpIHJldHVybiBbc2VsZWN0ZWRWYWx1ZV07XG4gICAgICAgIHJldHVybiB0aW1lRGF5cyhcbiAgICAgICAgICB0aW1lRGF5LmZsb29yKHNlbGVjdGVkVmFsdWVbMF0pLFxuICAgICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQoc2VsZWN0ZWRWYWx1ZVsxXSwgMSkpLFxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICAgICk7XG5cbiAgcmVhZG9ubHkgZGF0ZXMkOiBPYnNlcnZhYmxlPENhbGVuZGFyRGF0ZVtdPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuYWN0aXZlWWVhck1vbnRoJCxcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUkLFxuICAgIHRoaXMuZGF0ZXNJblNlbGVjdGVkUmFuZ2UkLFxuICAgIHRoaXMuc2VsZWN0YWJsZU1pbiQsXG4gICAgdGhpcy5zZWxlY3RhYmxlTWF4JCxcbiAgICB0aGlzLm9taXRSYW5nZSQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKFxuICAgICAgKFtcbiAgICAgICAgYWN0aXZlWWVhck1vbnRoLFxuICAgICAgICBzZWxlY3RlZFZhbHVlLFxuICAgICAgICBkYXRlc0luU2VsZWN0ZWRSYW5nZSxcbiAgICAgICAgc2VsZWN0YWJsZU1pbixcbiAgICAgICAgc2VsZWN0YWJsZU1heCxcbiAgICAgICAgb21pdFJhbmdlLFxuICAgICAgXSkgPT4ge1xuICAgICAgICBjb25zdCBjYWxlbmRhckRhdGVzID0gdGltZURheXMoXG4gICAgICAgICAgdGltZVN1bmRheS5mbG9vcihhY3RpdmVZZWFyTW9udGgpLFxuICAgICAgICAgIHRpbWVTdW5kYXkuY2VpbCh0aW1lTW9udGgub2Zmc2V0KGFjdGl2ZVllYXJNb250aCwgMSkpLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBtaW5DYWxlbmRhckRhdGUgPSBjYWxlbmRhckRhdGVzWzBdO1xuICAgICAgICBjb25zdCBtYXhDYWxlbmRhckRhdGUgPSBjYWxlbmRhckRhdGVzW2NhbGVuZGFyRGF0ZXMubGVuZ3RoIC0gMV07XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRGF0ZUNvb3JkaW5hdGVzID0gbmV3IE1hcDxudW1iZXIsIFtudW1iZXIsIG51bWJlcl0+KCk7XG4gICAgICAgIGNvbnN0IHZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZSA9IGRhdGVzSW5TZWxlY3RlZFJhbmdlLmZpbHRlcihcbiAgICAgICAgICBzZWxlY3RlZCA9PlxuICAgICAgICAgICAgc2VsZWN0ZWQudmFsdWVPZigpID49IG1pbkNhbGVuZGFyRGF0ZS52YWx1ZU9mKCkgJiZcbiAgICAgICAgICAgIHNlbGVjdGVkLnZhbHVlT2YoKSA8PSBtYXhDYWxlbmRhckRhdGUudmFsdWVPZigpICYmXG4gICAgICAgICAgICAoc2VsZWN0YWJsZU1pblxuICAgICAgICAgICAgICA/IHNlbGVjdGVkLnZhbHVlT2YoKSA+PSBzZWxlY3RhYmxlTWluLnZhbHVlT2YoKVxuICAgICAgICAgICAgICA6IHRydWUpICYmXG4gICAgICAgICAgICAoc2VsZWN0YWJsZU1heFxuICAgICAgICAgICAgICA/IHNlbGVjdGVkLnZhbHVlT2YoKSA8PSBzZWxlY3RhYmxlTWF4LnZhbHVlT2YoKVxuICAgICAgICAgICAgICA6IHRydWUpICYmXG4gICAgICAgICAgICAob21pdFJhbmdlXG4gICAgICAgICAgICAgID8gc2VsZWN0ZWQudmFsdWVPZigpIDwgb21pdFJhbmdlWzBdLnZhbHVlT2YoKSB8fFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkLnZhbHVlT2YoKSA+IG9taXRSYW5nZVsxXS52YWx1ZU9mKClcbiAgICAgICAgICAgICAgOiB0cnVlKSxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgZmlyc3RWaXNpYmxlU2VsZWN0ZWREYXRlT2Zmc2V0ID0gZ2V0V2Vla2RheU51bWJlcihcbiAgICAgICAgICAgIHZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZVswXSxcbiAgICAgICAgICApO1xuICAgICAgICAgIHZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZS5mb3JFYWNoKChzZWxlY3RlZCwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeCA9IGdldFdlZWtkYXlOdW1iZXIoc2VsZWN0ZWQpO1xuICAgICAgICAgICAgY29uc3QgeSA9IE1hdGguZmxvb3IoKGkgKyBmaXJzdFZpc2libGVTZWxlY3RlZERhdGVPZmZzZXQpIC8gNyk7XG4gICAgICAgICAgICBzZWxlY3RlZERhdGVDb29yZGluYXRlcy5zZXQoc2VsZWN0ZWQudmFsdWVPZigpLCBbeCwgeV0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHNlcmlhbGl6ZUNvb3JkaW5hdGVzKGNvb3JkaW5hdGVzOiBbbnVtYmVyLCBudW1iZXJdKTogc3RyaW5nIHtcbiAgICAgICAgICByZXR1cm4gY29vcmRpbmF0ZXMuam9pbignOicpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlQ29vcmRpbmF0ZXMgPSBuZXcgU2V0KFxuICAgICAgICAgIFsuLi5zZWxlY3RlZERhdGVDb29yZGluYXRlcy52YWx1ZXMoKV0ubWFwKHNlcmlhbGl6ZUNvb3JkaW5hdGVzKSxcbiAgICAgICAgKTtcblxuICAgICAgICBmdW5jdGlvbiBnZXRSb3VuZGVkQ29ybmVycyhkYXRlOiBEYXRlKToge1xuICAgICAgICAgIG53OiBib29sZWFuO1xuICAgICAgICAgIG5lOiBib29sZWFuO1xuICAgICAgICAgIHNlOiBib29sZWFuO1xuICAgICAgICAgIHN3OiBib29sZWFuO1xuICAgICAgICB9IHtcbiAgICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IHNlbGVjdGVkRGF0ZUNvb3JkaW5hdGVzLmdldChkYXRlLnZhbHVlT2YoKSk7XG4gICAgICAgICAgaWYgKCFjb29yZGluYXRlcylcbiAgICAgICAgICAgIHJldHVybiB7IG53OiBmYWxzZSwgbmU6IGZhbHNlLCBzZTogZmFsc2UsIHN3OiBmYWxzZSB9O1xuICAgICAgICAgIGNvbnN0IFt4LCB5XSA9IGNvb3JkaW5hdGVzO1xuICAgICAgICAgIGNvbnN0IHRvcCA9IHNlcmlhbGl6ZUNvb3JkaW5hdGVzKFt4LCB5IC0gMV0pLFxuICAgICAgICAgICAgcmlnaHQgPSBzZXJpYWxpemVDb29yZGluYXRlcyhbeCArIDEsIHldKSxcbiAgICAgICAgICAgIGJvdHRvbSA9IHNlcmlhbGl6ZUNvb3JkaW5hdGVzKFt4LCB5ICsgMV0pLFxuICAgICAgICAgICAgbGVmdCA9IHNlcmlhbGl6ZUNvb3JkaW5hdGVzKFt4IC0gMSwgeV0pO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBudzpcbiAgICAgICAgICAgICAgIXZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZUNvb3JkaW5hdGVzLmhhcyh0b3ApICYmXG4gICAgICAgICAgICAgICF2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2VDb29yZGluYXRlcy5oYXMobGVmdCksXG4gICAgICAgICAgICBuZTpcbiAgICAgICAgICAgICAgIXZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZUNvb3JkaW5hdGVzLmhhcyh0b3ApICYmXG4gICAgICAgICAgICAgICF2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2VDb29yZGluYXRlcy5oYXMocmlnaHQpLFxuICAgICAgICAgICAgc2U6XG4gICAgICAgICAgICAgICF2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2VDb29yZGluYXRlcy5oYXMocmlnaHQpICYmXG4gICAgICAgICAgICAgICF2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2VDb29yZGluYXRlcy5oYXMoYm90dG9tKSxcbiAgICAgICAgICAgIHN3OlxuICAgICAgICAgICAgICAhdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlQ29vcmRpbmF0ZXMuaGFzKGxlZnQpICYmXG4gICAgICAgICAgICAgICF2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2VDb29yZGluYXRlcy5oYXMoYm90dG9tKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlVmFsdWVzID0gbmV3IFNldChcbiAgICAgICAgICB2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2UubWFwKHNlbGVjdGVkID0+IHNlbGVjdGVkLnZhbHVlT2YoKSksXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgdG9kYXkgPSB0aW1lRGF5LmZsb29yKG5ldyBEYXRlKCkpO1xuXG4gICAgICAgIHJldHVybiBjYWxlbmRhckRhdGVzLm1hcChkYXRlID0+IHtcbiAgICAgICAgICBjb25zdCB7IG53LCBuZSwgc2UsIHN3IH0gPSBnZXRSb3VuZGVkQ29ybmVycyhkYXRlKTtcbiAgICAgICAgICBjb25zdCBkYXRlVmFsdWUgPSBkYXRlLnZhbHVlT2YoKTtcbiAgICAgICAgICBjb25zdCBpblJhbmdlID0gdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlVmFsdWVzLmhhcyhkYXRlVmFsdWUpO1xuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gc2VsZWN0ZWRWYWx1ZVxuICAgICAgICAgICAgPyBzZWxlY3RlZFZhbHVlIGluc3RhbmNlb2YgRGF0ZVxuICAgICAgICAgICAgICA/IGRhdGVWYWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZS52YWx1ZU9mKClcbiAgICAgICAgICAgICAgOiBkYXRlVmFsdWUgPT09IHNlbGVjdGVkVmFsdWVbMF0udmFsdWVPZigpIHx8XG4gICAgICAgICAgICAgICAgZGF0ZVZhbHVlID09PSBzZWxlY3RlZFZhbHVlWzFdLnZhbHVlT2YoKVxuICAgICAgICAgICAgOiBmYWxzZTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgIGRpc3BsYXk6IGRheUZvcm1hdHRlcihkYXRlKSxcbiAgICAgICAgICAgIGZhZGVJbjpcbiAgICAgICAgICAgICAgaW5SYW5nZSAmJlxuICAgICAgICAgICAgICAoZGF0ZVZhbHVlID09PVxuICAgICAgICAgICAgICAgIE1hdGgubWF4KFxuICAgICAgICAgICAgICAgICAgbWluQ2FsZW5kYXJEYXRlLnZhbHVlT2YoKSxcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGFibGVNaW4/LnZhbHVlT2YoKSA/PyAtSW5maW5pdHksXG4gICAgICAgICAgICAgICAgKSB8fFxuICAgICAgICAgICAgICAgIGRhdGVWYWx1ZSA9PT1cbiAgICAgICAgICAgICAgICAgIChvbWl0UmFuZ2VcbiAgICAgICAgICAgICAgICAgICAgPyB0aW1lRGF5Lm9mZnNldChvbWl0UmFuZ2VbMV0sIDEpLnZhbHVlT2YoKVxuICAgICAgICAgICAgICAgICAgICA6IC1JbmZpbml0eSkpLFxuICAgICAgICAgICAgZmFkZU91dDpcbiAgICAgICAgICAgICAgaW5SYW5nZSAmJlxuICAgICAgICAgICAgICAoZGF0ZVZhbHVlID09PVxuICAgICAgICAgICAgICAgIE1hdGgubWluKFxuICAgICAgICAgICAgICAgICAgbWF4Q2FsZW5kYXJEYXRlLnZhbHVlT2YoKSxcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGFibGVNYXg/LnZhbHVlT2YoKSA/PyBJbmZpbml0eSxcbiAgICAgICAgICAgICAgICApIHx8XG4gICAgICAgICAgICAgICAgZGF0ZVZhbHVlID09PVxuICAgICAgICAgICAgICAgICAgKG9taXRSYW5nZVxuICAgICAgICAgICAgICAgICAgICA/IHRpbWVEYXkub2Zmc2V0KG9taXRSYW5nZVswXSwgLTEpLnZhbHVlT2YoKVxuICAgICAgICAgICAgICAgICAgICA6IEluZmluaXR5KSksXG4gICAgICAgICAgICBoaWRkZW46XG4gICAgICAgICAgICAgIGRhdGVWYWx1ZSA8IChzZWxlY3RhYmxlTWluPy52YWx1ZU9mKCkgPz8gLUluZmluaXR5KSB8fFxuICAgICAgICAgICAgICBkYXRlVmFsdWUgPiAoc2VsZWN0YWJsZU1heD8udmFsdWVPZigpID8/IEluZmluaXR5KSB8fFxuICAgICAgICAgICAgICAob21pdFJhbmdlXG4gICAgICAgICAgICAgICAgPyBvbWl0UmFuZ2VbMF0udmFsdWVPZigpIDw9IGRhdGVWYWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgZGF0ZVZhbHVlIDw9IG9taXRSYW5nZVsxXS52YWx1ZU9mKClcbiAgICAgICAgICAgICAgICA6IGZhbHNlKSxcbiAgICAgICAgICAgIGluQ3VycmVudE1vbnRoOlxuICAgICAgICAgICAgICBkYXRlVmFsdWUgPj0gYWN0aXZlWWVhck1vbnRoLnZhbHVlT2YoKSAmJlxuICAgICAgICAgICAgICBkYXRlVmFsdWUgPCB0aW1lTW9udGgub2Zmc2V0KGFjdGl2ZVllYXJNb250aCwgMSkudmFsdWVPZigpLFxuICAgICAgICAgICAgaW5SYW5nZSxcbiAgICAgICAgICAgIHJvdW5kZWROZTogbmUsXG4gICAgICAgICAgICByb3VuZGVkTnc6IG53LFxuICAgICAgICAgICAgcm91bmRlZFNlOiBzZSxcbiAgICAgICAgICAgIHJvdW5kZWRTdzogc3csXG4gICAgICAgICAgICBzZWxlY3RlZCxcbiAgICAgICAgICAgIHRvZGF5OiBkYXRlVmFsdWUgPT09IHRvZGF5LnZhbHVlT2YoKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHNlbGVjdERheShkYXk6IENhbGVuZGFyRGF0ZSkge1xuICAgIGlmICghZGF5LmluQ3VycmVudE1vbnRoKSB7XG4gICAgICB0aGlzLmFjdGl2ZVllYXJNb250aENoYW5nZS5lbWl0KHRpbWVNb250aC5mbG9vcihkYXkuZGF0ZSkpO1xuICAgIH1cbiAgICB0aGlzLmRhdGVTZWxlY3QuZW1pdChkYXkuZGF0ZSk7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgYWN0aXZlWWVhck1vbnRoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gIEBPdXRwdXQoKVxuICBkYXRlU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIENhbGVuZGFyQ29tcG9uZW50IHtcbiAgZXhwb3J0IGNvbnN0IGRlZmF1bHRNaW4gPSB0aW1lWWVhci5mbG9vcih0aW1lWWVhci5vZmZzZXQobmV3IERhdGUoKSwgLTcpKTtcbiAgZXhwb3J0IGNvbnN0IGRlZmF1bHRNYXggPSB0aW1lRGF5Lm9mZnNldChcbiAgICB0aW1lWWVhci5mbG9vcih0aW1lWWVhci5vZmZzZXQobmV3IERhdGUoKSwgNSkpLFxuICAgIC0xLFxuICApO1xufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRyb2xzXCI+XG4gIDxkaXY+XG4gICAgPG5nLXRlbXBsYXRlICNzZWxlY3RUcmlnZ2VyIGxldC1zZWxlY3RlZE9wdGlvbj1cInNlbGVjdGVkT3B0aW9uXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHJpdkJ1dHRvblxuICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcbiAgICAgICAgW3ZhcmlhbnRdPVwiJ2dob3N0J1wiXG4gICAgICAgIFtpY29uXT1cIidDaGV2cm9uRG93bidcIlxuICAgICAgICBbaWNvblBvc2l0aW9uXT1cIidsYXN0J1wiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgPlxuICAgICAgICB7eyBzZWxlY3RlZE9wdGlvbi50aXRsZSB8fCAnLi4uJyB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8cml2LXNpbmdsZS1zZWxlY3RcbiAgICAgIHBsYWNlaG9sZGVyPVwiTW9udGguLi5cIlxuICAgICAgW2dyb3Vwc109XCJtb250aE9wdGlvbnMkIHwgYXN5bmMgfCByaXZPcHRpb25Hcm91cFwiXG4gICAgICBbc2VsZWN0ZWRPcHRpb25dPVwic2VsZWN0ZWRNb250aE9wdGlvbiQgfCBhc3luY1wiXG4gICAgICAoc2VsZWN0ZWRPcHRpb25DaGFuZ2UpPVwiYWN0aXZlWWVhck1vbnRoQ2hhbmdlLmVtaXQoJGV2ZW50LmRhdGUpXCJcbiAgICAgIFt0cmlnZ2VyVGVtcGxhdGVdPVwic2VsZWN0VHJpZ2dlclwiXG4gICAgPjwvcml2LXNpbmdsZS1zZWxlY3Q+XG4gICAgPHJpdi1zaW5nbGUtc2VsZWN0XG4gICAgICBwbGFjZWhvbGRlcj1cIlllYXIuLi5cIlxuICAgICAgW2dyb3Vwc109XCJ5ZWFyT3B0aW9ucyQgfCBhc3luYyB8IHJpdk9wdGlvbkdyb3VwXCJcbiAgICAgIFtzZWxlY3RlZE9wdGlvbl09XCJzZWxlY3RlZFllYXJPcHRpb24kIHwgYXN5bmNcIlxuICAgICAgKHNlbGVjdGVkT3B0aW9uQ2hhbmdlKT1cImFjdGl2ZVllYXJNb250aENoYW5nZS5lbWl0KCRldmVudC5kYXRlKVwiXG4gICAgICBbdHJpZ2dlclRlbXBsYXRlXT1cInNlbGVjdFRyaWdnZXJcIlxuICAgID48L3Jpdi1zaW5nbGUtc2VsZWN0PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgICpuZ0lmPVwieyBwcmV2OiBwcmV2aW91c01vbnRoJCB8IGFzeW5jLCBuZXh0OiBuZXh0TW9udGgkIHwgYXN5bmMgfTsgbGV0IHZtXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIHJpdkJ1dHRvblxuICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICBbdmFyaWFudF09XCInZ2hvc3QnXCJcbiAgICAgIFtpY29uXT1cIidBcnJvd0xlZnQnXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhdm0ucHJldlwiXG4gICAgICAoY2xpY2spPVwidm0ucHJldiA/IGFjdGl2ZVllYXJNb250aENoYW5nZS5lbWl0KHZtLnByZXYpIDogbnVsbFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICA+PC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgcml2QnV0dG9uXG4gICAgICBbc2l6ZV09XCInc21hbGwnXCJcbiAgICAgIFt2YXJpYW50XT1cIidnaG9zdCdcIlxuICAgICAgW2ljb25dPVwiJ0Fycm93UmlnaHQnXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhdm0ubmV4dFwiXG4gICAgICAoY2xpY2spPVwidm0ubmV4dCA/IGFjdGl2ZVllYXJNb250aENoYW5nZS5lbWl0KHZtLm5leHQpIDogbnVsbFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICA+PC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiY2FsZW5kYXJcIj5cbiAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPlN1PC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+TW88L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5UdTwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPldlPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+VGg8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5Gcjwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPlNhPC9zcGFuPlxuICA8YnV0dG9uXG4gICAgKm5nRm9yPVwibGV0IGRheSBvZiBkYXRlcyQgfCBhc3luY1wiXG4gICAgY2xhc3M9XCJkYXlcIlxuICAgIFtkaXNhYmxlZF09XCJkYXkuaGlkZGVuXCJcbiAgICBbY2xhc3MuYmxlZWRdPVwiIWRheS5pbkN1cnJlbnRNb250aFwiXG4gICAgW2NsYXNzLmZhZGUtaW5dPVwiZGF5LmZhZGVJblwiXG4gICAgW2NsYXNzLmZhZGUtb3V0XT1cImRheS5mYWRlT3V0XCJcbiAgICBbY2xhc3MuaW4tcmFuZ2VdPVwiZGF5LmluUmFuZ2VcIlxuICAgIFtjbGFzcy5yb3VuZGVkLW5lXT1cImRheS5yb3VuZGVkTmVcIlxuICAgIFtjbGFzcy5yb3VuZGVkLW53XT1cImRheS5yb3VuZGVkTndcIlxuICAgIFtjbGFzcy5yb3VuZGVkLXNlXT1cImRheS5yb3VuZGVkU2VcIlxuICAgIFtjbGFzcy5yb3VuZGVkLXN3XT1cImRheS5yb3VuZGVkU3dcIlxuICAgIChjbGljayk9XCJzZWxlY3REYXkoZGF5KVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gID5cbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJkYXktd3JhcHBlclwiXG4gICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiZGF5LnNlbGVjdGVkXCJcbiAgICAgIFtjbGFzcy50b2RheV09XCJkYXkudG9kYXlcIlxuICAgICAgW2NsYXNzLmhpZGRlbl09XCJkYXkuaGlkZGVuXCJcbiAgICA+XG4gICAgICB7eyBkYXkuZGlzcGxheSB9fVxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|
|
282
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLE9BQU8sRUFDUCxRQUFRLEVBQ1IsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsUUFBUSxFQUNSLFNBQVMsR0FDVixNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUNMLGVBQWUsRUFFZixhQUFhLEVBQ2IsR0FBRyxFQUNILFdBQVcsR0FDWixNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBR2QsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hDLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEMsTUFBTSxzQkFBc0IsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFaEQsU0FBUyxnQkFBZ0IsQ0FBQyxJQUFVO0lBQ2xDLE9BQU8sUUFBUSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQW9CRCw2RUFBNkU7QUFDN0UsMkJBQTJCO0FBQzNCLG1HQUFtRztBQU9uRyxNQUFNLE9BQU8saUJBQWlCO0lBTjlC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c291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIHRpbWVEYXksXG4gIHRpbWVEYXlzLFxuICB0aW1lTW9udGgsXG4gIHRpbWVNb250aHMsXG4gIHRpbWVTdW5kYXksXG4gIHRpbWVZZWFyLFxuICB0aW1lWWVhcnMsXG59IGZyb20gJ2QzLXRpbWUnO1xuaW1wb3J0IHsgdGltZUZvcm1hdCB9IGZyb20gJ2QzLXRpbWUtZm9ybWF0JztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgT2JzZXJ2YWJsZSxcbiAgY29tYmluZUxhdGVzdCxcbiAgbWFwLFxuICBzaGFyZVJlcGxheSxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTaW5nbGVTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi9zaW5nbGUtc2VsZWN0L3NpbmdsZS1zZWxlY3QuY29tcG9uZW50JztcblxuY29uc3QgbW9udGhGb3JtYXR0ZXIgPSB0aW1lRm9ybWF0KCclQicpO1xuY29uc3QgeWVhckZvcm1hdHRlciA9IHRpbWVGb3JtYXQoJyVZJyk7XG5jb25zdCBkYXlGb3JtYXR0ZXIgPSB0aW1lRm9ybWF0KCclZScpO1xuY29uc3Qgd2Vla2RheU51bWJlckZvcm1hdHRlciA9IHRpbWVGb3JtYXQoJyV3Jyk7XG5cbmZ1bmN0aW9uIGdldFdlZWtkYXlOdW1iZXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gIHJldHVybiBwYXJzZUludCh3ZWVrZGF5TnVtYmVyRm9ybWF0dGVyKGRhdGUpKTtcbn1cblxudHlwZSBEYXRlT3B0aW9uID0gU2luZ2xlU2VsZWN0Q29tcG9uZW50Lk9wdGlvbiAmIHsgZGF0ZTogRGF0ZSB9O1xuXG50eXBlIENhbGVuZGFyRGF0ZSA9IHtcbiAgZGF0ZTogRGF0ZTtcbiAgZGlzcGxheTogc3RyaW5nO1xuICBmYWRlSW46IGJvb2xlYW47XG4gIGZhZGVPdXQ6IGJvb2xlYW47XG4gIGhpZGRlbjogYm9vbGVhbjtcbiAgaW5DdXJyZW50TW9udGg6IGJvb2xlYW47XG4gIGluUmFuZ2U6IGJvb2xlYW47XG4gIHJvdW5kZWROZTogYm9vbGVhbjtcbiAgcm91bmRlZE53OiBib29sZWFuO1xuICByb3VuZGVkU2U6IGJvb2xlYW47XG4gIHJvdW5kZWRTdzogYm9vbGVhbjtcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gIHRvZGF5OiBib29sZWFuO1xufTtcblxuLy8gVE9ETzogb25jZSB3ZSB1cGdyYWRlIHRvIEFuZ3VsYXIgMTYsIHRoaXMgY29tcG9uZW50IGNhbiBiZSBjbGVhbmVkIHVwIHdpdGhcbi8vIHNpZ25hbHMgaW5zdGVhZCBvZiBSeEpTLlxuLy8gaHR0cHM6Ly93d3cubm90aW9uLnNvL3JpdmV0L1Jlc29sdmUtVE9ET3MtYWZ0ZXItQW5ndWxhci11cGdyYWRlLTFmMjY2N2ViMmEzMTgwYjc5ZjZhZDkyYTdlNTc2ZjA4XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtY2FsZW5kYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckNvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZlWWVhck1vbnRoJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0ZT4obmV3IERhdGUoKSk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYWN0aXZlWWVhck1vbnRoKHY6IERhdGUpIHtcbiAgICB0aGlzLmFjdGl2ZVllYXJNb250aCQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IGFjdGl2ZVllYXJNb250aCgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVZZWFyTW9udGgkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGRpc3BsYXlNaW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRlPihcbiAgICBDYWxlbmRhckNvbXBvbmVudC5kZWZhdWx0TWluLFxuICApO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc3BsYXlNaW4odjogRGF0ZSkge1xuICAgIHRoaXMuZGlzcGxheU1pbiQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IGRpc3BsYXlNaW4oKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheU1pbiQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGlzcGxheU1heCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGU+KFxuICAgIENhbGVuZGFyQ29tcG9uZW50LmRlZmF1bHRNYXgsXG4gICk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzcGxheU1heCh2OiBEYXRlKSB7XG4gICAgdGhpcy5kaXNwbGF5TWF4JC5uZXh0KHYpO1xuICB9XG4gIHB1YmxpYyBnZXQgZGlzcGxheU1heCgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5TWF4JC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3RhYmxlTWluJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0ZSB8IHVuZGVmaW5lZD4oXG4gICAgdW5kZWZpbmVkLFxuICApO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdGFibGVNaW4odjogRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuc2VsZWN0YWJsZU1pbiQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IHNlbGVjdGFibGVNaW4oKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0YWJsZU1pbiQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0YWJsZU1heCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGUgfCB1bmRlZmluZWQ+KFxuICAgIHVuZGVmaW5lZCxcbiAgKTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWxlY3RhYmxlTWF4KHY6IERhdGUgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnNlbGVjdGFibGVNYXgkLm5leHQodik7XG4gIH1cbiAgcHVibGljIGdldCBzZWxlY3RhYmxlTWF4KCk6IERhdGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGFibGVNYXgkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IG9taXRSYW5nZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZD4oXG4gICAgdW5kZWZpbmVkLFxuICApO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG9taXRSYW5nZSh2OiBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLm9taXRSYW5nZSQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IG9taXRSYW5nZSgpOiBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm9taXRSYW5nZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0ZWRWYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgIERhdGUgfCBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWRcbiAgPih1bmRlZmluZWQpO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdGVkVmFsdWUodjogRGF0ZSB8IFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkVmFsdWUoKTogRGF0ZSB8IFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRWYWx1ZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IHllYXJPcHRpb25zJDogT2JzZXJ2YWJsZTxEYXRlT3B0aW9uW10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5kaXNwbGF5TWluJCxcbiAgICB0aGlzLmRpc3BsYXlNYXgkLFxuICAgIHRoaXMuc2VsZWN0YWJsZU1pbiQsXG4gICAgdGhpcy5zZWxlY3RhYmxlTWF4JCxcbiAgICB0aGlzLmFjdGl2ZVllYXJNb250aCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKFxuICAgICAgKFtcbiAgICAgICAgZGlzcGxheU1pbixcbiAgICAgICAgZGlzcGxheU1heCxcbiAgICAgICAgc2VsZWN0YWJsZU1pbixcbiAgICAgICAgc2VsZWN0YWJsZU1heCxcbiAgICAgICAgYWN0aXZlWWVhck1vbnRoLFxuICAgICAgXSkgPT4ge1xuICAgICAgICBjb25zdCBtaW46IERhdGUgPSBzZWxlY3RhYmxlTWluID8/IGRpc3BsYXlNaW47XG4gICAgICAgIGNvbnN0IG1heDogRGF0ZSA9IHNlbGVjdGFibGVNYXggPz8gZGlzcGxheU1heDtcbiAgICAgICAgcmV0dXJuIHRpbWVZZWFycyh0aW1lWWVhci5mbG9vcihkaXNwbGF5TWluKSwgZGlzcGxheU1heCkubWFwKFxuICAgICAgICAgIGZsb29yZWRZZWFyID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHllYXIgPSBuZXcgRGF0ZShcbiAgICAgICAgICAgICAgZmxvb3JlZFllYXIuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgICAgICAgYWN0aXZlWWVhck1vbnRoLmdldE1vbnRoKCksXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgaWQ6IHllYXIuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpLFxuICAgICAgICAgICAgICB0aXRsZTogeWVhckZvcm1hdHRlcih5ZWFyKSxcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6XG4gICAgICAgICAgICAgICAgeWVhci5nZXRGdWxsWWVhcigpIDwgbWluLmdldEZ1bGxZZWFyKCkgfHxcbiAgICAgICAgICAgICAgICB5ZWFyLmdldEZ1bGxZZWFyKCkgPiBtYXguZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgICAgICAgZGF0ZTogeWVhcixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGVkWWVhck9wdGlvbiQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLnllYXJPcHRpb25zJCxcbiAgICB0aGlzLmFjdGl2ZVllYXJNb250aCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKFxuICAgICAgKFt5ZWFyT3B0aW9ucywgYWN0aXZlWWVhck1vbnRoXSkgPT5cbiAgICAgICAgeWVhck9wdGlvbnMuZmluZChcbiAgICAgICAgICB5ID0+IHkuaWQgPT09IGFjdGl2ZVllYXJNb250aC5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCksXG4gICAgICAgICkgfHwgbnVsbCxcbiAgICApLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgbW9udGhPcHRpb25zJDogT2JzZXJ2YWJsZTxEYXRlT3B0aW9uW10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5hY3RpdmVZZWFyTW9udGgkLFxuICAgIHRoaXMuZGlzcGxheU1pbiQsXG4gICAgdGhpcy5kaXNwbGF5TWF4JCxcbiAgICB0aGlzLnNlbGVjdGFibGVNaW4kLFxuICAgIHRoaXMuc2VsZWN0YWJsZU1heCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKFxuICAgICAgKFtcbiAgICAgICAgYWN0aXZlWWVhck1vbnRoLFxuICAgICAgICBkaXNwbGF5TWluLFxuICAgICAgICBkaXNwbGF5TWF4LFxuICAgICAgICBzZWxlY3RhYmxlTWluLFxuICAgICAgICBzZWxlY3RhYmxlTWF4LFxuICAgICAgXSkgPT4ge1xuICAgICAgICBjb25zdCBtaW4gPSBzZWxlY3RhYmxlTWluID8/IGRpc3BsYXlNaW47XG4gICAgICAgIGNvbnN0IG1heCA9IHNlbGVjdGFibGVNYXggPz8gZGlzcGxheU1heDtcbiAgICAgICAgcmV0dXJuIHRpbWVNb250aHMoXG4gICAgICAgICAgdGltZVllYXIuZmxvb3IoYWN0aXZlWWVhck1vbnRoKSxcbiAgICAgICAgICB0aW1lWWVhci5mbG9vcih0aW1lWWVhci5vZmZzZXQoYWN0aXZlWWVhck1vbnRoLCAxKSksXG4gICAgICAgICkubWFwKG1vbnRoID0+ICh7XG4gICAgICAgICAgaWQ6IG1vbnRoLmdldE1vbnRoKCkudG9TdHJpbmcoKSxcbiAgICAgICAgICB0aXRsZTogbW9udGhGb3JtYXR0ZXIobW9udGgpLFxuICAgICAgICAgIGRpc2FibGVkOlxuICAgICAgICAgICAgbW9udGgudmFsdWVPZigpIDwgbWluLnZhbHVlT2YoKSB8fCBtb250aC52YWx1ZU9mKCkgPiBtYXgudmFsdWVPZigpLFxuICAgICAgICAgIGRhdGU6IG1vbnRoLFxuICAgICAgICB9KSk7XG4gICAgICB9LFxuICAgICksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSBzZWxlY3RlZE1vbnRoT3B0aW9uJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMubW9udGhPcHRpb25zJCxcbiAgICB0aGlzLmFjdGl2ZVllYXJNb250aCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKFxuICAgICAgKFttb250aE9wdGlvbnMsIGFjdGl2ZVllYXJNb250aF0pID0+XG4gICAgICAgIG1vbnRoT3B0aW9ucy5maW5kKFxuICAgICAgICAgIG0gPT4gbS5pZCA9PT0gYWN0aXZlWWVhck1vbnRoLmdldE1vbnRoKCkudG9TdHJpbmcoKSxcbiAgICAgICAgKSB8fCBudWxsLFxuICAgICksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSBwcmV2aW91c01vbnRoJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuYWN0aXZlWWVhck1vbnRoJCxcbiAgICB0aGlzLmRpc3BsYXlNaW4kLFxuICAgIHRoaXMuc2VsZWN0YWJsZU1pbiQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbeWVhck1vbnRoLCBkaXNwbGF5TWluLCBzZWxlY3RhYmxlTWluXSkgPT4ge1xuICAgICAgY29uc3QgbWluOiBEYXRlID0gc2VsZWN0YWJsZU1pbiA/PyBkaXNwbGF5TWluO1xuICAgICAgY29uc3QgcHJldmlvdXMgPSB0aW1lTW9udGguZmxvb3IodGltZU1vbnRoLm9mZnNldCh5ZWFyTW9udGgsIC0xKSk7XG4gICAgICBpZiAocHJldmlvdXMudmFsdWVPZigpIDwgbWluLnZhbHVlT2YoKSkgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4gcHJldmlvdXM7XG4gICAgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgbmV4dE1vbnRoJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuYWN0aXZlWWVhck1vbnRoJCxcbiAgICB0aGlzLmRpc3BsYXlNYXgkLFxuICAgIHRoaXMuc2VsZWN0YWJsZU1heCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbeWVhck1vbnRoLCBkaXNwbGF5TWF4LCBzZWxlY3RhYmxlTWF4XSkgPT4ge1xuICAgICAgY29uc3QgbWF4OiBEYXRlID0gc2VsZWN0YWJsZU1heCA/PyBkaXNwbGF5TWF4O1xuICAgICAgY29uc3QgbmV4dCA9IHRpbWVNb250aC5mbG9vcih0aW1lTW9udGgub2Zmc2V0KHllYXJNb250aCwgMSkpO1xuICAgICAgaWYgKG5leHQudmFsdWVPZigpID4gbWF4LnZhbHVlT2YoKSkgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4gbmV4dDtcbiAgICB9KSxcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRhdGVzSW5TZWxlY3RlZFJhbmdlJDogT2JzZXJ2YWJsZTxEYXRlW10+ID1cbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUkLnBpcGUoXG4gICAgICBtYXAoc2VsZWN0ZWRWYWx1ZSA9PiB7XG4gICAgICAgIGlmICghc2VsZWN0ZWRWYWx1ZSkgcmV0dXJuIFtdO1xuICAgICAgICBpZiAoc2VsZWN0ZWRWYWx1ZSBpbnN0YW5jZW9mIERhdGUpIHJldHVybiBbc2VsZWN0ZWRWYWx1ZV07XG4gICAgICAgIHJldHVybiB0aW1lRGF5cyhcbiAgICAgICAgICB0aW1lRGF5LmZsb29yKHNlbGVjdGVkVmFsdWVbMF0pLFxuICAgICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQoc2VsZWN0ZWRWYWx1ZVsxXSwgMSkpLFxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICAgICk7XG5cbiAgcmVhZG9ubHkgZGF0ZXMkOiBPYnNlcnZhYmxlPENhbGVuZGFyRGF0ZVtdPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuYWN0aXZlWWVhck1vbnRoJCxcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUkLFxuICAgIHRoaXMuZGF0ZXNJblNlbGVjdGVkUmFuZ2UkLFxuICAgIHRoaXMuc2VsZWN0YWJsZU1pbiQsXG4gICAgdGhpcy5zZWxlY3RhYmxlTWF4JCxcbiAgICB0aGlzLm9taXRSYW5nZSQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKFxuICAgICAgKFtcbiAgICAgICAgYWN0aXZlWWVhck1vbnRoLFxuICAgICAgICBzZWxlY3RlZFZhbHVlLFxuICAgICAgICBkYXRlc0luU2VsZWN0ZWRSYW5nZSxcbiAgICAgICAgc2VsZWN0YWJsZU1pbixcbiAgICAgICAgc2VsZWN0YWJsZU1heCxcbiAgICAgICAgb21pdFJhbmdlLFxuICAgICAgXSkgPT4ge1xuICAgICAgICBjb25zdCBjYWxlbmRhckRhdGVzID0gdGltZURheXMoXG4gICAgICAgICAgdGltZVN1bmRheS5mbG9vcihhY3RpdmVZZWFyTW9udGgpLFxuICAgICAgICAgIHRpbWVTdW5kYXkuY2VpbCh0aW1lTW9udGgub2Zmc2V0KGFjdGl2ZVllYXJNb250aCwgMSkpLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBtaW5DYWxlbmRhckRhdGUgPSBjYWxlbmRhckRhdGVzWzBdO1xuICAgICAgICBjb25zdCBtYXhDYWxlbmRhckRhdGUgPSBjYWxlbmRhckRhdGVzW2NhbGVuZGFyRGF0ZXMubGVuZ3RoIC0gMV07XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRGF0ZUNvb3JkaW5hdGVzID0gbmV3IE1hcDxudW1iZXIsIFtudW1iZXIsIG51bWJlcl0+KCk7XG4gICAgICAgIGNvbnN0IHZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZSA9IGRhdGVzSW5TZWxlY3RlZFJhbmdlLmZpbHRlcihcbiAgICAgICAgICBzZWxlY3RlZCA9PlxuICAgICAgICAgICAgc2VsZWN0ZWQudmFsdWVPZigpID49IG1pbkNhbGVuZGFyRGF0ZS52YWx1ZU9mKCkgJiZcbiAgICAgICAgICAgIHNlbGVjdGVkLnZhbHVlT2YoKSA8PSBtYXhDYWxlbmRhckRhdGUudmFsdWVPZigpICYmXG4gICAgICAgICAgICAoc2VsZWN0YWJsZU1pblxuICAgICAgICAgICAgICA/IHNlbGVjdGVkLnZhbHVlT2YoKSA+PSBzZWxlY3RhYmxlTWluLnZhbHVlT2YoKVxuICAgICAgICAgICAgICA6IHRydWUpICYmXG4gICAgICAgICAgICAoc2VsZWN0YWJsZU1heFxuICAgICAgICAgICAgICA/IHNlbGVjdGVkLnZhbHVlT2YoKSA8PSBzZWxlY3RhYmxlTWF4LnZhbHVlT2YoKVxuICAgICAgICAgICAgICA6IHRydWUpICYmXG4gICAgICAgICAgICAob21pdFJhbmdlXG4gICAgICAgICAgICAgID8gc2VsZWN0ZWQudmFsdWVPZigpIDwgb21pdFJhbmdlWzBdLnZhbHVlT2YoKSB8fFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkLnZhbHVlT2YoKSA+IG9taXRSYW5nZVsxXS52YWx1ZU9mKClcbiAgICAgICAgICAgICAgOiB0cnVlKSxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgZmlyc3RWaXNpYmxlU2VsZWN0ZWREYXRlT2Zmc2V0ID0gZ2V0V2Vla2RheU51bWJlcihcbiAgICAgICAgICAgIHZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZVswXSxcbiAgICAgICAgICApO1xuICAgICAgICAgIHZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZS5mb3JFYWNoKChzZWxlY3RlZCwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeCA9IGdldFdlZWtkYXlOdW1iZXIoc2VsZWN0ZWQpO1xuICAgICAgICAgICAgY29uc3QgeSA9IE1hdGguZmxvb3IoKGkgKyBmaXJzdFZpc2libGVTZWxlY3RlZERhdGVPZmZzZXQpIC8gNyk7XG4gICAgICAgICAgICBzZWxlY3RlZERhdGVDb29yZGluYXRlcy5zZXQoc2VsZWN0ZWQudmFsdWVPZigpLCBbeCwgeV0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHNlcmlhbGl6ZUNvb3JkaW5hdGVzKGNvb3JkaW5hdGVzOiBbbnVtYmVyLCBudW1iZXJdKTogc3RyaW5nIHtcbiAgICAgICAgICByZXR1cm4gY29vcmRpbmF0ZXMuam9pbignOicpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlQ29vcmRpbmF0ZXMgPSBuZXcgU2V0KFxuICAgICAgICAgIFsuLi5zZWxlY3RlZERhdGVDb29yZGluYXRlcy52YWx1ZXMoKV0ubWFwKHNlcmlhbGl6ZUNvb3JkaW5hdGVzKSxcbiAgICAgICAgKTtcblxuICAgICAgICBmdW5jdGlvbiBnZXRSb3VuZGVkQ29ybmVycyhkYXRlOiBEYXRlKToge1xuICAgICAgICAgIG53OiBib29sZWFuO1xuICAgICAgICAgIG5lOiBib29sZWFuO1xuICAgICAgICAgIHNlOiBib29sZWFuO1xuICAgICAgICAgIHN3OiBib29sZWFuO1xuICAgICAgICB9IHtcbiAgICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IHNlbGVjdGVkRGF0ZUNvb3JkaW5hdGVzLmdldChkYXRlLnZhbHVlT2YoKSk7XG4gICAgICAgICAgaWYgKCFjb29yZGluYXRlcylcbiAgICAgICAgICAgIHJldHVybiB7IG53OiBmYWxzZSwgbmU6IGZhbHNlLCBzZTogZmFsc2UsIHN3OiBmYWxzZSB9O1xuICAgICAgICAgIGNvbnN0IFt4LCB5XSA9IGNvb3JkaW5hdGVzO1xuICAgICAgICAgIGNvbnN0IHRvcCA9IHNlcmlhbGl6ZUNvb3JkaW5hdGVzKFt4LCB5IC0gMV0pLFxuICAgICAgICAgICAgcmlnaHQgPSBzZXJpYWxpemVDb29yZGluYXRlcyhbeCArIDEsIHldKSxcbiAgICAgICAgICAgIGJvdHRvbSA9IHNlcmlhbGl6ZUNvb3JkaW5hdGVzKFt4LCB5ICsgMV0pLFxuICAgICAgICAgICAgbGVmdCA9IHNlcmlhbGl6ZUNvb3JkaW5hdGVzKFt4IC0gMSwgeV0pO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBudzpcbiAgICAgICAgICAgICAgIXZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZUNvb3JkaW5hdGVzLmhhcyh0b3ApICYmXG4gICAgICAgICAgICAgICF2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2VDb29yZGluYXRlcy5oYXMobGVmdCksXG4gICAgICAgICAgICBuZTpcbiAgICAgICAgICAgICAgIXZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZUNvb3JkaW5hdGVzLmhhcyh0b3ApICYmXG4gICAgICAgICAgICAgICF2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2VDb29yZGluYXRlcy5oYXMocmlnaHQpLFxuICAgICAgICAgICAgc2U6XG4gICAgICAgICAgICAgICF2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2VDb29yZGluYXRlcy5oYXMocmlnaHQpICYmXG4gICAgICAgICAgICAgICF2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2VDb29yZGluYXRlcy5oYXMoYm90dG9tKSxcbiAgICAgICAgICAgIHN3OlxuICAgICAgICAgICAgICAhdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlQ29vcmRpbmF0ZXMuaGFzKGxlZnQpICYmXG4gICAgICAgICAgICAgICF2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2VDb29yZGluYXRlcy5oYXMoYm90dG9tKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlVmFsdWVzID0gbmV3IFNldChcbiAgICAgICAgICB2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2UubWFwKHNlbGVjdGVkID0+IHNlbGVjdGVkLnZhbHVlT2YoKSksXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgdG9kYXkgPSB0aW1lRGF5LmZsb29yKG5ldyBEYXRlKCkpO1xuXG4gICAgICAgIHJldHVybiBjYWxlbmRhckRhdGVzLm1hcChkYXRlID0+IHtcbiAgICAgICAgICBjb25zdCB7IG53LCBuZSwgc2UsIHN3IH0gPSBnZXRSb3VuZGVkQ29ybmVycyhkYXRlKTtcbiAgICAgICAgICBjb25zdCBkYXRlVmFsdWUgPSBkYXRlLnZhbHVlT2YoKTtcbiAgICAgICAgICBjb25zdCBpblJhbmdlID0gdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlVmFsdWVzLmhhcyhkYXRlVmFsdWUpO1xuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gc2VsZWN0ZWRWYWx1ZVxuICAgICAgICAgICAgPyBzZWxlY3RlZFZhbHVlIGluc3RhbmNlb2YgRGF0ZVxuICAgICAgICAgICAgICA/IGRhdGVWYWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZS52YWx1ZU9mKClcbiAgICAgICAgICAgICAgOiBkYXRlVmFsdWUgPT09IHNlbGVjdGVkVmFsdWVbMF0udmFsdWVPZigpIHx8XG4gICAgICAgICAgICAgICAgZGF0ZVZhbHVlID09PSBzZWxlY3RlZFZhbHVlWzFdLnZhbHVlT2YoKVxuICAgICAgICAgICAgOiBmYWxzZTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgIGRpc3BsYXk6IGRheUZvcm1hdHRlcihkYXRlKSxcbiAgICAgICAgICAgIGZhZGVJbjpcbiAgICAgICAgICAgICAgaW5SYW5nZSAmJlxuICAgICAgICAgICAgICAoZGF0ZVZhbHVlID09PVxuICAgICAgICAgICAgICAgIE1hdGgubWF4KFxuICAgICAgICAgICAgICAgICAgbWluQ2FsZW5kYXJEYXRlLnZhbHVlT2YoKSxcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGFibGVNaW4/LnZhbHVlT2YoKSA/PyAtSW5maW5pdHksXG4gICAgICAgICAgICAgICAgKSB8fFxuICAgICAgICAgICAgICAgIGRhdGVWYWx1ZSA9PT1cbiAgICAgICAgICAgICAgICAgIChvbWl0UmFuZ2VcbiAgICAgICAgICAgICAgICAgICAgPyB0aW1lRGF5Lm9mZnNldChvbWl0UmFuZ2VbMV0sIDEpLnZhbHVlT2YoKVxuICAgICAgICAgICAgICAgICAgICA6IC1JbmZpbml0eSkpLFxuICAgICAgICAgICAgZmFkZU91dDpcbiAgICAgICAgICAgICAgaW5SYW5nZSAmJlxuICAgICAgICAgICAgICAoZGF0ZVZhbHVlID09PVxuICAgICAgICAgICAgICAgIE1hdGgubWluKFxuICAgICAgICAgICAgICAgICAgbWF4Q2FsZW5kYXJEYXRlLnZhbHVlT2YoKSxcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGFibGVNYXg/LnZhbHVlT2YoKSA/PyBJbmZpbml0eSxcbiAgICAgICAgICAgICAgICApIHx8XG4gICAgICAgICAgICAgICAgZGF0ZVZhbHVlID09PVxuICAgICAgICAgICAgICAgICAgKG9taXRSYW5nZVxuICAgICAgICAgICAgICAgICAgICA/IHRpbWVEYXkub2Zmc2V0KG9taXRSYW5nZVswXSwgLTEpLnZhbHVlT2YoKVxuICAgICAgICAgICAgICAgICAgICA6IEluZmluaXR5KSksXG4gICAgICAgICAgICBoaWRkZW46XG4gICAgICAgICAgICAgIGRhdGVWYWx1ZSA8IChzZWxlY3RhYmxlTWluPy52YWx1ZU9mKCkgPz8gLUluZmluaXR5KSB8fFxuICAgICAgICAgICAgICBkYXRlVmFsdWUgPiAoc2VsZWN0YWJsZU1heD8udmFsdWVPZigpID8/IEluZmluaXR5KSB8fFxuICAgICAgICAgICAgICAob21pdFJhbmdlXG4gICAgICAgICAgICAgICAgPyBvbWl0UmFuZ2VbMF0udmFsdWVPZigpIDw9IGRhdGVWYWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgZGF0ZVZhbHVlIDw9IG9taXRSYW5nZVsxXS52YWx1ZU9mKClcbiAgICAgICAgICAgICAgICA6IGZhbHNlKSxcbiAgICAgICAgICAgIGluQ3VycmVudE1vbnRoOlxuICAgICAgICAgICAgICBkYXRlVmFsdWUgPj0gYWN0aXZlWWVhck1vbnRoLnZhbHVlT2YoKSAmJlxuICAgICAgICAgICAgICBkYXRlVmFsdWUgPCB0aW1lTW9udGgub2Zmc2V0KGFjdGl2ZVllYXJNb250aCwgMSkudmFsdWVPZigpLFxuICAgICAgICAgICAgaW5SYW5nZSxcbiAgICAgICAgICAgIHJvdW5kZWROZTogbmUsXG4gICAgICAgICAgICByb3VuZGVkTnc6IG53LFxuICAgICAgICAgICAgcm91bmRlZFNlOiBzZSxcbiAgICAgICAgICAgIHJvdW5kZWRTdzogc3csXG4gICAgICAgICAgICBzZWxlY3RlZCxcbiAgICAgICAgICAgIHRvZGF5OiBkYXRlVmFsdWUgPT09IHRvZGF5LnZhbHVlT2YoKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHNlbGVjdERheShkYXk6IENhbGVuZGFyRGF0ZSkge1xuICAgIGlmICghZGF5LmluQ3VycmVudE1vbnRoKSB7XG4gICAgICB0aGlzLmFjdGl2ZVllYXJNb250aENoYW5nZS5lbWl0KHRpbWVNb250aC5mbG9vcihkYXkuZGF0ZSkpO1xuICAgIH1cbiAgICB0aGlzLmRhdGVTZWxlY3QuZW1pdChkYXkuZGF0ZSk7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgYWN0aXZlWWVhck1vbnRoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gIEBPdXRwdXQoKVxuICBkYXRlU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIENhbGVuZGFyQ29tcG9uZW50IHtcbiAgZXhwb3J0IGNvbnN0IGRlZmF1bHRNaW4gPSB0aW1lWWVhci5mbG9vcih0aW1lWWVhci5vZmZzZXQobmV3IERhdGUoKSwgLTcpKTtcbiAgZXhwb3J0IGNvbnN0IGRlZmF1bHRNYXggPSB0aW1lRGF5Lm9mZnNldChcbiAgICB0aW1lWWVhci5mbG9vcih0aW1lWWVhci5vZmZzZXQobmV3IERhdGUoKSwgNSkpLFxuICAgIC0xLFxuICApO1xufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRyb2xzXCI+XG4gIDxkaXY+XG4gICAgPG5nLXRlbXBsYXRlICNzZWxlY3RUcmlnZ2VyIGxldC1zZWxlY3RlZE9wdGlvbj1cInNlbGVjdGVkT3B0aW9uXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHJpdkJ1dHRvblxuICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcbiAgICAgICAgW3ZhcmlhbnRdPVwiJ2dob3N0J1wiXG4gICAgICAgIFtpY29uXT1cIidDaGV2cm9uRG93bidcIlxuICAgICAgICBbaWNvblBvc2l0aW9uXT1cIidsYXN0J1wiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgPlxuICAgICAgICB7eyBzZWxlY3RlZE9wdGlvbi50aXRsZSB8fCAnLi4uJyB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8cml2LXNpbmdsZS1zZWxlY3RcbiAgICAgIHBsYWNlaG9sZGVyPVwiTW9udGguLi5cIlxuICAgICAgW2dyb3Vwc109XCJtb250aE9wdGlvbnMkIHwgYXN5bmMgfCByaXZPcHRpb25Hcm91cFwiXG4gICAgICBbc2VsZWN0ZWRPcHRpb25dPVwic2VsZWN0ZWRNb250aE9wdGlvbiQgfCBhc3luY1wiXG4gICAgICAoc2VsZWN0ZWRPcHRpb25DaGFuZ2UpPVwiYWN0aXZlWWVhck1vbnRoQ2hhbmdlLmVtaXQoJGV2ZW50LmRhdGUpXCJcbiAgICAgIFt0cmlnZ2VyVGVtcGxhdGVdPVwic2VsZWN0VHJpZ2dlclwiXG4gICAgPjwvcml2LXNpbmdsZS1zZWxlY3Q+XG4gICAgPHJpdi1zaW5nbGUtc2VsZWN0XG4gICAgICBwbGFjZWhvbGRlcj1cIlllYXIuLi5cIlxuICAgICAgW2dyb3Vwc109XCJ5ZWFyT3B0aW9ucyQgfCBhc3luYyB8IHJpdk9wdGlvbkdyb3VwXCJcbiAgICAgIFtzZWxlY3RlZE9wdGlvbl09XCJzZWxlY3RlZFllYXJPcHRpb24kIHwgYXN5bmNcIlxuICAgICAgKHNlbGVjdGVkT3B0aW9uQ2hhbmdlKT1cImFjdGl2ZVllYXJNb250aENoYW5nZS5lbWl0KCRldmVudC5kYXRlKVwiXG4gICAgICBbdHJpZ2dlclRlbXBsYXRlXT1cInNlbGVjdFRyaWdnZXJcIlxuICAgID48L3Jpdi1zaW5nbGUtc2VsZWN0PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgICpuZ0lmPVwieyBwcmV2OiBwcmV2aW91c01vbnRoJCB8IGFzeW5jLCBuZXh0OiBuZXh0TW9udGgkIHwgYXN5bmMgfTsgbGV0IHZtXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIHJpdkJ1dHRvblxuICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICBbdmFyaWFudF09XCInZ2hvc3QnXCJcbiAgICAgIFtpY29uXT1cIidBcnJvd0xlZnQnXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhdm0ucHJldlwiXG4gICAgICAoY2xpY2spPVwidm0ucHJldiA/IGFjdGl2ZVllYXJNb250aENoYW5nZS5lbWl0KHZtLnByZXYpIDogbnVsbFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICA+PC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgcml2QnV0dG9uXG4gICAgICBbc2l6ZV09XCInc21hbGwnXCJcbiAgICAgIFt2YXJpYW50XT1cIidnaG9zdCdcIlxuICAgICAgW2ljb25dPVwiJ0Fycm93UmlnaHQnXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhdm0ubmV4dFwiXG4gICAgICAoY2xpY2spPVwidm0ubmV4dCA/IGFjdGl2ZVllYXJNb250aENoYW5nZS5lbWl0KHZtLm5leHQpIDogbnVsbFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICA+PC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiY2FsZW5kYXJcIj5cbiAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPlN1PC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+TW88L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5UdTwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPldlPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+VGg8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5Gcjwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPlNhPC9zcGFuPlxuICA8YnV0dG9uXG4gICAgKm5nRm9yPVwibGV0IGRheSBvZiBkYXRlcyQgfCBhc3luY1wiXG4gICAgY2xhc3M9XCJkYXlcIlxuICAgIFtkaXNhYmxlZF09XCJkYXkuaGlkZGVuXCJcbiAgICBbY2xhc3MuYmxlZWRdPVwiIWRheS5pbkN1cnJlbnRNb250aFwiXG4gICAgW2NsYXNzLmZhZGUtaW5dPVwiZGF5LmZhZGVJblwiXG4gICAgW2NsYXNzLmZhZGUtb3V0XT1cImRheS5mYWRlT3V0XCJcbiAgICBbY2xhc3MuaW4tcmFuZ2VdPVwiZGF5LmluUmFuZ2VcIlxuICAgIFtjbGFzcy5yb3VuZGVkLW5lXT1cImRheS5yb3VuZGVkTmVcIlxuICAgIFtjbGFzcy5yb3VuZGVkLW53XT1cImRheS5yb3VuZGVkTndcIlxuICAgIFtjbGFzcy5yb3VuZGVkLXNlXT1cImRheS5yb3VuZGVkU2VcIlxuICAgIFtjbGFzcy5yb3VuZGVkLXN3XT1cImRheS5yb3VuZGVkU3dcIlxuICAgIChjbGljayk9XCJzZWxlY3REYXkoZGF5KVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gID5cbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJkYXktd3JhcHBlclwiXG4gICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiZGF5LnNlbGVjdGVkXCJcbiAgICAgIFtjbGFzcy50b2RheV09XCJkYXkudG9kYXlcIlxuICAgICAgW2NsYXNzLmhpZGRlbl09XCJkYXkuaGlkZGVuXCJcbiAgICA+XG4gICAgICB7eyBkYXkuZGlzcGxheSB9fVxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -8,7 +8,8 @@ import * as i2 from "../calendar/calendar.component";
|
|
|
8
8
|
import * as i3 from "../../modal/callout/callout.component";
|
|
9
9
|
import * as i4 from "../../icon/icon.component";
|
|
10
10
|
import * as i5 from "../input-label/input-label.component";
|
|
11
|
-
import * as i6 from "../../
|
|
11
|
+
import * as i6 from "../../modal/overlay.directive";
|
|
12
|
+
import * as i7 from "../../format/pipes/date.pipe";
|
|
12
13
|
export class DateComponent extends InputLabelComponent {
|
|
13
14
|
constructor() {
|
|
14
15
|
super(...arguments);
|
|
@@ -22,10 +23,10 @@ export class DateComponent extends InputLabelComponent {
|
|
|
22
23
|
}
|
|
23
24
|
}
|
|
24
25
|
DateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
25
|
-
DateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: DateComponent, selector: "riv-date", inputs: { min: "min", max: "max", value: "value", placeholder: "placeholder", disabled: "disabled" }, outputs: { valueChange: "valueChange" }, usesInheritance: true, ngImport: i0, template: "<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <button\n #trigger\n class=\"trigger\"\n (click)=\"open = true\"\n [disabled]=\"disabled\"\n type=\"button\"\n >\n <ng-container *ngIf=\"value; else placeholderValue\">\n <span class=\"value\">{{ value | rivDate }}</span>\n </ng-container>\n <ng-template #placeholderValue>\n <span class=\"value placeholder\">{{ placeholder }}</span>\n </ng-template>\n <span class=\"chevron\">\n <riv-icon [name]=\"'Calendar'\" [size]=\"16\"></riv-icon>\n </span>\n </button>\n</riv-input-label>\n<
|
|
26
|
+
DateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: DateComponent, selector: "riv-date", inputs: { min: "min", max: "max", value: "value", placeholder: "placeholder", disabled: "disabled" }, outputs: { valueChange: "valueChange" }, usesInheritance: true, ngImport: i0, template: "<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <button\n #trigger\n class=\"trigger\"\n (click)=\"open = true\"\n [disabled]=\"disabled\"\n type=\"button\"\n >\n <ng-container *ngIf=\"value; else placeholderValue\">\n <span class=\"value\">{{ value | rivDate }}</span>\n </ng-container>\n <ng-template #placeholderValue>\n <span class=\"value placeholder\">{{ placeholder }}</span>\n </ng-template>\n <span class=\"chevron\">\n <riv-icon [name]=\"'Calendar'\" [size]=\"16\"></riv-icon>\n </span>\n </button>\n</riv-input-label>\n<ng-container *ngIf=\"open\">\n <riv-callout\n *riv-overlay\n [anchor]=\"trigger\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [allowedPositions]=\"[\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-right',\n 'bottom-center',\n 'bottom-left'\n ]\"\n [preferredPosition]=\"'bottom-right'\"\n (close)=\"open = false\"\n >\n <div class=\"content\">\n <riv-calendar\n [activeYearMonth]=\"activeYearMonth\"\n (activeYearMonthChange)=\"activeYearMonth = $event\"\n [displayMin]=\"min\"\n [displayMax]=\"max\"\n [selectedValue]=\"value\"\n (dateSelect)=\"valueChange.next($event); open = false\"\n ></riv-calendar>\n </div>\n </riv-callout>\n</ng-container>\n", styles: [".trigger{width:100%;border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-small);display:flex;gap:var(--size-small)}.trigger:focus{outline:none;border:var(--border-width) solid var(--purp-60)}.trigger:disabled{color:var(--type-light-disabled);background-color:var(--surface-light-1)}.value{font-size:var(--type-2-font-size);line-height:var(--type-2-line-height-0);color:var(--type-light-high-contrast);padding:var(--size-small);flex-grow:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:pre}.value.placeholder{color:var(--type-light-disabled)}.chevron{display:flex;justify-content:center;align-items:center;padding:var(--size-small);background-color:var(--surface-light-2);border-left:var(--border-width) solid var(--border-light)}.content{padding:var(--size-large)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.CalendarComponent, selector: "riv-calendar", inputs: ["activeYearMonth", "displayMin", "displayMax", "selectableMin", "selectableMax", "omitRange", "selectedValue"], outputs: ["activeYearMonthChange", "dateSelect"] }, { kind: "component", type: i3.CalloutComponent, selector: "riv-callout", inputs: ["anchor", "isModal", "preferredPosition", "allowedPositions", "fallbackDirection", "showCaret", "theme"], outputs: ["close"] }, { kind: "component", type: i4.IconComponent, selector: "riv-icon", inputs: ["name", "size", "customSize", "strokeWidth"] }, { kind: "component", type: i5.InputLabelComponent, selector: "riv-input-label", inputs: ["label", "help", "required", "labelActionText"], outputs: ["labelAction"] }, { kind: "directive", type: i6.OverlayDirective, selector: "[riv-overlay]" }, { kind: "pipe", type: i7.DatePipe, name: "rivDate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
26
27
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DateComponent, decorators: [{
|
|
27
28
|
type: Component,
|
|
28
|
-
args: [{ selector: 'riv-date', changeDetection: ChangeDetectionStrategy.OnPush, template: "<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <button\n #trigger\n class=\"trigger\"\n (click)=\"open = true\"\n [disabled]=\"disabled\"\n type=\"button\"\n >\n <ng-container *ngIf=\"value; else placeholderValue\">\n <span class=\"value\">{{ value | rivDate }}</span>\n </ng-container>\n <ng-template #placeholderValue>\n <span class=\"value placeholder\">{{ placeholder }}</span>\n </ng-template>\n <span class=\"chevron\">\n <riv-icon [name]=\"'Calendar'\" [size]=\"16\"></riv-icon>\n </span>\n </button>\n</riv-input-label>\n<
|
|
29
|
+
args: [{ selector: 'riv-date', changeDetection: ChangeDetectionStrategy.OnPush, template: "<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <button\n #trigger\n class=\"trigger\"\n (click)=\"open = true\"\n [disabled]=\"disabled\"\n type=\"button\"\n >\n <ng-container *ngIf=\"value; else placeholderValue\">\n <span class=\"value\">{{ value | rivDate }}</span>\n </ng-container>\n <ng-template #placeholderValue>\n <span class=\"value placeholder\">{{ placeholder }}</span>\n </ng-template>\n <span class=\"chevron\">\n <riv-icon [name]=\"'Calendar'\" [size]=\"16\"></riv-icon>\n </span>\n </button>\n</riv-input-label>\n<ng-container *ngIf=\"open\">\n <riv-callout\n *riv-overlay\n [anchor]=\"trigger\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [allowedPositions]=\"[\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-right',\n 'bottom-center',\n 'bottom-left'\n ]\"\n [preferredPosition]=\"'bottom-right'\"\n (close)=\"open = false\"\n >\n <div class=\"content\">\n <riv-calendar\n [activeYearMonth]=\"activeYearMonth\"\n (activeYearMonthChange)=\"activeYearMonth = $event\"\n [displayMin]=\"min\"\n [displayMax]=\"max\"\n [selectedValue]=\"value\"\n (dateSelect)=\"valueChange.next($event); open = false\"\n ></riv-calendar>\n </div>\n </riv-callout>\n</ng-container>\n", styles: [".trigger{width:100%;border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-small);display:flex;gap:var(--size-small)}.trigger:focus{outline:none;border:var(--border-width) solid var(--purp-60)}.trigger:disabled{color:var(--type-light-disabled);background-color:var(--surface-light-1)}.value{font-size:var(--type-2-font-size);line-height:var(--type-2-line-height-0);color:var(--type-light-high-contrast);padding:var(--size-small);flex-grow:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:pre}.value.placeholder{color:var(--type-light-disabled)}.chevron{display:flex;justify-content:center;align-items:center;padding:var(--size-small);background-color:var(--surface-light-2);border-left:var(--border-width) solid var(--border-light)}.content{padding:var(--size-large)}\n"] }]
|
|
29
30
|
}], propDecorators: { min: [{
|
|
30
31
|
type: Input
|
|
31
32
|
}], max: [{
|
|
@@ -39,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
39
40
|
}], valueChange: [{
|
|
40
41
|
type: Output
|
|
41
42
|
}] } });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9pbnB1dC9kYXRlL2RhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvZGF0ZS9kYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDcEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7OztBQVEzRSxNQUFNLE9BQU8sYUFBYyxTQUFRLG1CQUFtQjtJQU50RDs7UUFRRSxRQUFHLEdBQVMsaUJBQWlCLENBQUMsVUFBVSxDQUFDO1FBR3pDLFFBQUcsR0FBUyxpQkFBaUIsQ0FBQyxVQUFVLENBQUM7UUFNekMsZ0JBQVcsR0FBVyxnQkFBZ0IsQ0FBQztRQUd2QyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRTFCLG9CQUFlLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUMsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUdiLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztLQUN4Qzs7MEdBckJZLGFBQWE7OEZBQWIsYUFBYSxzTkNqQjFCLGc5Q0FzREE7MkZEckNhLGFBQWE7a0JBTnpCLFNBQVM7K0JBQ0UsVUFBVSxtQkFHSCx1QkFBdUIsQ0FBQyxNQUFNOzhCQUkvQyxHQUFHO3NCQURGLEtBQUs7Z0JBSU4sR0FBRztzQkFERixLQUFLO2dCQUlOLEtBQUs7c0JBREosS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQU9OLFdBQVc7c0JBRFYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0aW1lTW9udGggfSBmcm9tICdkMy10aW1lJztcbmltcG9ydCB7IENhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0TGFiZWxDb21wb25lbnQgfSBmcm9tICcuLi9pbnB1dC1sYWJlbC9pbnB1dC1sYWJlbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtZGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlQ29tcG9uZW50IGV4dGVuZHMgSW5wdXRMYWJlbENvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIG1pbjogRGF0ZSA9IENhbGVuZGFyQ29tcG9uZW50LmRlZmF1bHRNaW47XG5cbiAgQElucHV0KClcbiAgbWF4OiBEYXRlID0gQ2FsZW5kYXJDb21wb25lbnQuZGVmYXVsdE1heDtcblxuICBASW5wdXQoKVxuICB2YWx1ZT86IERhdGU7XG5cbiAgQElucHV0KClcbiAgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWxlY3QgZGF0ZS4uLic7XG5cbiAgQElucHV0KClcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBhY3RpdmVZZWFyTW9udGggPSB0aW1lTW9udGguZmxvb3IobmV3IERhdGUoKSk7XG4gIG9wZW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG59XG4iLCI8cml2LWlucHV0LWxhYmVsXG4gIFtsYWJlbF09XCJsYWJlbFwiXG4gIFtoZWxwXT1cImhlbHBcIlxuICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICBbbGFiZWxBY3Rpb25UZXh0XT1cImxhYmVsQWN0aW9uVGV4dFwiXG4gIChsYWJlbEFjdGlvbik9XCJsYWJlbEFjdGlvbi5lbWl0KCRldmVudClcIlxuPlxuICA8YnV0dG9uXG4gICAgI3RyaWdnZXJcbiAgICBjbGFzcz1cInRyaWdnZXJcIlxuICAgIChjbGljayk9XCJvcGVuID0gdHJ1ZVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2YWx1ZTsgZWxzZSBwbGFjZWhvbGRlclZhbHVlXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+e3sgdmFsdWUgfCByaXZEYXRlIH19PC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXJWYWx1ZT5cbiAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWUgcGxhY2Vob2xkZXJcIj57eyBwbGFjZWhvbGRlciB9fTwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxzcGFuIGNsYXNzPVwiY2hldnJvblwiPlxuICAgICAgPHJpdi1pY29uIFtuYW1lXT1cIidDYWxlbmRhcidcIiBbc2l6ZV09XCIxNlwiPjwvcml2LWljb24+XG4gICAgPC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvcml2LWlucHV0LWxhYmVsPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wZW5cIj5cbiAgPHJpdi1jYWxsb3V0XG4gICAgKnJpdi1vdmVybGF5XG4gICAgW2FuY2hvcl09XCJ0cmlnZ2VyXCJcbiAgICBbc2hvd0NhcmV0XT1cImZhbHNlXCJcbiAgICBbdGhlbWVdPVwiJ2xpZ2h0J1wiXG4gICAgW2FsbG93ZWRQb3NpdGlvbnNdPVwiW1xuICAgICAgJ3RvcC1sZWZ0JyxcbiAgICAgICd0b3AtY2VudGVyJyxcbiAgICAgICd0b3AtcmlnaHQnLFxuICAgICAgJ2JvdHRvbS1yaWdodCcsXG4gICAgICAnYm90dG9tLWNlbnRlcicsXG4gICAgICAnYm90dG9tLWxlZnQnXG4gICAgXVwiXG4gICAgW3ByZWZlcnJlZFBvc2l0aW9uXT1cIidib3R0b20tcmlnaHQnXCJcbiAgICAoY2xvc2UpPVwib3BlbiA9IGZhbHNlXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICA8cml2LWNhbGVuZGFyXG4gICAgICAgIFthY3RpdmVZZWFyTW9udGhdPVwiYWN0aXZlWWVhck1vbnRoXCJcbiAgICAgICAgKGFjdGl2ZVllYXJNb250aENoYW5nZSk9XCJhY3RpdmVZZWFyTW9udGggPSAkZXZlbnRcIlxuICAgICAgICBbZGlzcGxheU1pbl09XCJtaW5cIlxuICAgICAgICBbZGlzcGxheU1heF09XCJtYXhcIlxuICAgICAgICBbc2VsZWN0ZWRWYWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgIChkYXRlU2VsZWN0KT1cInZhbHVlQ2hhbmdlLm5leHQoJGV2ZW50KTsgb3BlbiA9IGZhbHNlXCJcbiAgICAgID48L3Jpdi1jYWxlbmRhcj5cbiAgICA8L2Rpdj5cbiAgPC9yaXYtY2FsbG91dD5cbjwvbmctY29udGFpbmVyPlxuIl19
|