@progressio_resources/gravity-design-system 3.6.7 → 3.6.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/esm2022/lib/components/{gravity-calendar-next → gravity-date-picker}/components/day-calendar/day-calendar.component.mjs +3 -3
  2. package/esm2022/lib/components/gravity-date-picker/components/day-calendar/range-days-calendar.utils.mjs +224 -0
  3. package/esm2022/lib/components/gravity-date-picker/components/month-calendar/month-calendar.component.mjs +110 -0
  4. package/esm2022/lib/components/gravity-date-picker/components/year-calendar/year-calendar.component.mjs +111 -0
  5. package/esm2022/lib/components/gravity-date-picker/gravity-date-picker.component.mjs +85 -0
  6. package/esm2022/lib/components/gravity-date-picker/shared/date-picker.constants.mjs +61 -0
  7. package/esm2022/lib/components/gravity-date-picker/shared/date-picker.modal.mjs +2 -0
  8. package/esm2022/lib/components/gravity-date-picker/shared/date-picker.utils.mjs +111 -0
  9. package/esm2022/lib/gravity-design-system.module.mjs +9 -9
  10. package/esm2022/public-api.mjs +2 -2
  11. package/fesm2022/progressio_resources-gravity-design-system.mjs +27 -29
  12. package/fesm2022/progressio_resources-gravity-design-system.mjs.map +1 -1
  13. package/lib/components/{gravity-calendar-next → gravity-date-picker}/components/day-calendar/day-calendar.component.d.ts +4 -4
  14. package/lib/components/{gravity-calendar-next → gravity-date-picker}/components/day-calendar/range-days-calendar.utils.d.ts +1 -1
  15. package/lib/components/{gravity-calendar-next → gravity-date-picker}/components/month-calendar/month-calendar.component.d.ts +6 -6
  16. package/lib/components/{gravity-calendar-next → gravity-date-picker}/components/year-calendar/year-calendar.component.d.ts +7 -7
  17. package/lib/components/{gravity-calendar-next/gravity-calendar-next.component.d.ts → gravity-date-picker/gravity-date-picker.component.d.ts} +10 -10
  18. package/lib/components/{gravity-calendar-next/shared/calendar.modal.d.ts → gravity-date-picker/shared/date-picker.modal.d.ts} +6 -6
  19. package/lib/components/{gravity-calendar-next/shared/calendar.utils.d.ts → gravity-date-picker/shared/date-picker.utils.d.ts} +1 -1
  20. package/lib/gravity-design-system.module.d.ts +5 -5
  21. package/package.json +1 -1
  22. package/public-api.d.ts +1 -1
  23. package/esm2022/lib/components/gravity-calendar-next/components/day-calendar/range-days-calendar.utils.mjs +0 -224
  24. package/esm2022/lib/components/gravity-calendar-next/components/month-calendar/month-calendar.component.mjs +0 -111
  25. package/esm2022/lib/components/gravity-calendar-next/components/year-calendar/year-calendar.component.mjs +0 -112
  26. package/esm2022/lib/components/gravity-calendar-next/gravity-calendar-next.component.mjs +0 -85
  27. package/esm2022/lib/components/gravity-calendar-next/shared/calendar.constants.mjs +0 -61
  28. package/esm2022/lib/components/gravity-calendar-next/shared/calendar.modal.mjs +0 -2
  29. package/esm2022/lib/components/gravity-calendar-next/shared/calendar.utils.mjs +0 -111
  30. /package/lib/components/{gravity-calendar-next/shared/calendar.constants.d.ts → gravity-date-picker/shared/date-picker.constants.d.ts} +0 -0
@@ -1,6 +1,6 @@
1
1
  import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
- import { CALENDAR_I18N, DAYS_SHORT_EN, DAYS_SHORT_ES, MONTHS_EN, MONTHS_ES } from "../../shared/calendar.constants";
3
- import { dateToCalendarDay, getStartDate, changeDate, calendarDateToDate, isPeriodAvailable } from '../../shared/calendar.utils';
2
+ import { CALENDAR_I18N, DAYS_SHORT_EN, DAYS_SHORT_ES, MONTHS_EN, MONTHS_ES } from "../../shared/date-picker.constants";
3
+ import { dateToCalendarDay, getStartDate, changeDate, calendarDateToDate, isPeriodAvailable } from '../../shared/date-picker.utils';
4
4
  import { getRangeSelectionClass, isPreview, onApplyRageDate, onClearHover, onDateKeyup, onHoverDay, onSelectDaysRange, processPreselectedRangeDate, searchDate } from "./range-days-calendar.utils";
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@angular/common";
@@ -268,4 +268,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
268
268
  type: ViewChild,
269
269
  args: ['startDate']
270
270
  }] } });
271
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LWNhbGVuZGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZ3Jhdml0eS1jYWxlbmRhci1uZXh0L2NvbXBvbmVudHMvZGF5LWNhbGVuZGFyL2RheS1jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktY2FsZW5kYXItbmV4dC9jb21wb25lbnRzL2RheS1jYWxlbmRhci9kYXktY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBaUIsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFHLE9BQU8sRUFBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDbEgsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUMvSCxPQUFPLEVBQUMsc0JBQXNCLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSwyQkFBMkIsRUFBRSxVQUFVLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7QUFPbE0sTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQVNrQixVQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDMUIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFD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QUNoRSxJQUFJLGtCQUFrQixFQUFFO1lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkI7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7K0dBek5VLG9CQUFvQjttR0FBcEIsb0JBQW9CLDJ3QkNaakMsczhNQWtIQTs7NEZEdEdhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDSSxjQUFjOzhCQUtWLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDUyxXQUFXO3NCQUExQixLQUFLO2dCQUNXLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUVXLFVBQVU7c0JBQTFCLE1BQU07Z0JBQ1UsY0FBYztzQkFBOUIsTUFBTTtnQkFDVSxXQUFXO3NCQUEzQixNQUFNO2dCQUNVLFFBQVE7c0JBQXhCLE1BQU07Z0JBQ1Usc0JBQXNCO3NCQUF0QyxNQUFNO2dCQUNVLFlBQVk7c0JBQTVCLE1BQU07Z0JBQ1UsZ0JBQWdCO3NCQUFoQyxNQUFNO2dCQUNVLHVCQUF1QjtzQkFBdkMsTUFBTTtnQkFFZSxZQUFZO3NCQUFqQyxTQUFTO3VCQUFDLFNBQVM7Z0JBQ0ksY0FBYztzQkFBckMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDYWxlbmRhckFwcGVhcmFuY2UsIENhbGVuZGFyQ29uZmlnLCBDYWxlbmRhckRhdGV9IGZyb20gXCIuLi8uLi9zaGFyZWQvY2FsZW5kYXIubW9kYWxcIjtcbmltcG9ydCB7R3Jhdml0eVRleHRGaWVsZENvbXBvbmVudH0gZnJvbSBcIi4uLy4uLy4uL2dyYXZpdHktdGV4dC1maWVsZC9ncmF2aXR5LXRleHQtZmllbGQuY29tcG9uZW50XCI7XG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NBTEVOREFSX0kxOE4sIERBWVNfU0hPUlRfRU4sIERBWVNfU0hPUlRfRVMsIE1PTlRIU19FTiwgTU9OVEhTX0VTfSBmcm9tIFwiLi4vLi4vc2hhcmVkL2NhbGVuZGFyLmNvbnN0YW50c1wiO1xuaW1wb3J0IHtkYXRlVG9DYWxlbmRhckRheSwgZ2V0U3RhcnREYXRlLCBjaGFuZ2VEYXRlLCBjYWxlbmRhckRhdGVUb0RhdGUsIGlzUGVyaW9kQXZhaWxhYmxlfSBmcm9tICcuLi8uLi9zaGFyZWQvY2FsZW5kYXIudXRpbHMnO1xuaW1wb3J0IHtnZXRSYW5nZVNlbGVjdGlvbkNsYXNzLCBpc1ByZXZpZXcsIG9uQXBwbHlSYWdlRGF0ZSwgb25DbGVhckhvdmVyLCBvbkRhdGVLZXl1cCwgb25Ib3ZlckRheSwgb25TZWxlY3REYXlzUmFuZ2UsIHByb2Nlc3NQcmVzZWxlY3RlZFJhbmdlRGF0ZSwgc2VhcmNoRGF0ZX0gZnJvbSBcIi4vcmFuZ2UtZGF5cy1jYWxlbmRhci51dGlsc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RheS1jYWxlbmRhcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RheS1jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZGF5LWNhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRGF5Q2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBwdWJsaWMgaW5pdFllYXI6IERhdGU7XG4gIEBJbnB1dCgpIHB1YmxpYyBpbml0TW9udGg6IERhdGU7XG4gIEBJbnB1dCgpIHB1YmxpYyBjb25maWc6IENhbGVuZGFyQ29uZmlnO1xuICBASW5wdXQoKSBwdWJsaWMgcmFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHJlc3RhcnQ6IGJvb2xlYW4gPSBmYWxzZTtcblx0QElucHV0KCkgcHVibGljIGFwcHlPbkNsb3NlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBjdXJyZW50RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIEBJbnB1dCgpIHB1YmxpYyBhcHBlYXJhbmNlOiBDYWxlbmRhckFwcGVhcmFuY2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBuYXZUeXBlOiAncHJldicgfCAnbmV4dCcgfCAnYm90aCcgfCAnbm9uZSc9ICdib3RoJ1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2xlYXJIb3ZlcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcHVibGljIGNsZWFyU2VsZWN0aW9uOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlTW9udGg6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgaG92ZXJEYXk6IEV2ZW50RW1pdHRlcjxDYWxlbmRhckRhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxDYWxlbmRhckRhdGU+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgb3BlbkludGVncmF0ZWRDYWxlbmRhcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcHVibGljIHNlbGVjdGVkUmFnZTogRXZlbnRFbWl0dGVyPENhbGVuZGFyRGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPENhbGVuZGFyRGF0ZT4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBjYWxlbmRhclJlc3BvbnNlOiBFdmVudEVtaXR0ZXI8RGF0ZVtdIHwgRGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGVbXSB8IERhdGU+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlTW9udGhZZWFyUmVzcG9uc2U6IEV2ZW50RW1pdHRlcjxEYXRlIHwgRGF0ZVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZSB8IERhdGVbXT4oKTtcblxuICBAVmlld0NoaWxkKCdlbmREYXRlJykgZW5kRGF0ZUZpZWxkITogR3Jhdml0eVRleHRGaWVsZENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnc3RhcnREYXRlJykgc3RhcnREYXRlRmllbGQhOiBHcmF2aXR5VGV4dEZpZWxkQ29tcG9uZW50O1xuXG4gIHB1YmxpYyBlbmREYXRlRXJyb3I6IHN0cmluZyA9ICcnO1xuICBwdWJsaWMgc3RhcnREYXRlRXJyb3I6IHN0cmluZyA9ICcnO1xuXHRwdWJsaWMgZW5kRmllbGREaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXHRwdWJsaWMgc3RhcnRGaWVsZERpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cdHB1YmxpYyBzZWxlY3RlZFJhbmdlRW5kOiBDYWxlbmRhckRhdGUgfCBudWxsID0gbnVsbDtcblx0cHVibGljIHNlbGVjdGVkUmFuZ2VTdGFydDogQ2FsZW5kYXJEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIHNob3dZZWFyQ2FsZW5kYXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHNob3dNb250aENhbGVuZGFyOiBib29sZWFuID0gZmFsc2U7XG5cdHB1YmxpYyBmb2N1c2VkOiAnc3RhcnQnIHwgJ2VuZCcgPSAnc3RhcnQnO1xuXHRwdWJsaWMgaG92ZXJlZERheTogQ2FsZW5kYXJEYXRlIHwgbnVsbCA9IG51bGw7XG5cdHB1YmxpYyBzZWxlY3RlZERheTogQ2FsZW5kYXJEYXRlIHwgbnVsbCA9IG51bGw7XG5cdHB1YmxpYyBub3RpZmljYXRpb246IHt0ZXh0OiBzdHJpbmcsIGVycm9yOiBib29sZWFufTtcblxuICBwdWJsaWMgZ2V0IGkxOG4oKSB7IHJldHVybiBDQUxFTkRBUl9JMThOW3RoaXMuYXBwZWFyYW5jZS5sYW5ndWFnZV07IH1cbiAgcHVibGljIGdldCBtb250aHNMaXN0KCkgeyByZXR1cm4gdGhpcy5hcHBlYXJhbmNlLmxhbmd1YWdlID09PSAnZW4nID8gTU9OVEhTX0VOIDogTU9OVEhTX0VTOyB9XG4gIHB1YmxpYyBnZXQgZGF5c0xpc3QoKSB7IHJldHVybiB0aGlzLmFwcGVhcmFuY2UubGFuZ3VhZ2UgPT09ICdlbicgPyBEQVlTX1NIT1JUX0VOIDogREFZU19TSE9SVF9FUzsgfVxuXG4gIHB1YmxpYyB0cmFja0J5V2VlayhpbmRleDogbnVtYmVyLCBfOiBhbnkpOiBudW1iZXIgeyByZXR1cm4gaW5kZXg7IH1cbiAgcHVibGljIHRyYWNrQnlEYXkoXzogbnVtYmVyLCBkYXk6IENhbGVuZGFyRGF0ZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke2RheS5tb250aFllYXIueWVhcn0tJHtkYXkubW9udGhZZWFyLm1vbnRofS0ke2RheS5kYXl9YDtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCBzaG91bGRSZXN0YXJ0ID0gY2hhbmdlc1sncmVzdGFydCddICYmIHRoaXMucmVzdGFydDtcblx0XHRjb25zdCBzaG91bGRBcHB5ID0gY2hhbmdlc1snYXBweU9uQ2xvc2UnXSAmJiB0aGlzLmFwcHlPbkNsb3NlO1xuICAgIGNvbnN0IHNob3VsZFByb2Nlc3NQcmVTZWxlY3RlZCA9IGNoYW5nZXNbJ3ByZVNlbGVjdGVkRGF0ZSddICYmIHRoaXMuY29uZmlnLmluaXREYXRlO1xuXG5cdFx0aWYgKHNob3VsZEFwcHkpIHsgdGhpcy5hcHBseVNlbGVjdGVkRGF0ZSgpOyB9XG4gICAgaWYgKHNob3VsZFJlc3RhcnQgfHwgc2hvdWxkUHJvY2Vzc1ByZVNlbGVjdGVkKSB7IHRoaXMucHJvY2Vzc0luaXREYXRlKCk7IH1cbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc0luaXREYXRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJhbmdlKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtwcm9jZXNzUHJlc2VsZWN0ZWRSYW5nZURhdGUodGhpcyl9LCAwKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnLmluaXREYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgdGhpcy5jdXJyZW50RGF0ZSA9IGdldFN0YXJ0RGF0ZSh0aGlzLmNvbmZpZy5pbml0RGF0ZSk7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF5ID0gZGF0ZVRvQ2FsZW5kYXJEYXkodGhpcy5jb25maWcuaW5pdERhdGUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc0RhdGVTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiAhdGhpcy5yYW5nZSA/ICEhdGhpcy5zZWxlY3RlZERheSA6ICEhdGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQgJiYgISF0aGlzLnNlbGVjdGVkUmFuZ2VFbmQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF5U2VsZWN0aW9uQ2xhc3MoZGF5OiBDYWxlbmRhckRhdGUpOiBzdHJpbmcge1xuICAgIGlmICghZGF5LmluQ3VycmVudE1vbnRoKSByZXR1cm4gJ2Rpc2FibGVkJztcblxuICAgIGNvbnN0IGRheURhdGUgPSBuZXcgRGF0ZShkYXkubW9udGhZZWFyLnllYXIsIGRheS5tb250aFllYXIubW9udGgsIGRheS5kYXkpO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnPy5taW5EYXRlKSB7IGlmIChkYXlEYXRlIDwgdGhpcy5jb25maWcubWluRGF0ZSkgcmV0dXJuICdkaXNhYmxlZCc7IH1cbiAgICBpZiAodGhpcy5jb25maWc/Lm1heERhdGUpIHsgaWYgKGRheURhdGUgPiB0aGlzLmNvbmZpZy5tYXhEYXRlKSByZXR1cm4gJ2Rpc2FibGVkJzsgfVxuXG4gICAgcmV0dXJuIHRoaXMucmFuZ2UgPyBnZXRSYW5nZVNlbGVjdGlvbkNsYXNzKHRoaXMsIGRheSkgOiB0aGlzLmdldFNpbmdsZURheVNlbGVjdGlvbkNsYXNzKGRheSk7XG4gIH1cblxuICBwcml2YXRlIGdldFNpbmdsZURheVNlbGVjdGlvbkNsYXNzKGRheTogQ2FsZW5kYXJEYXRlKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZERheSAmJiBkYXkuZGF5ID09PSB0aGlzLnNlbGVjdGVkRGF5LmRheSAmJlxuICAgICAgZGF5Lm1vbnRoWWVhci5tb250aCA9PT0gdGhpcy5zZWxlY3RlZERheS5tb250aFllYXIubW9udGggJiZcbiAgICAgIGRheS5tb250aFllYXIueWVhciA9PT0gdGhpcy5zZWxlY3RlZERheS5tb250aFllYXIueWVhcikge1xuICAgICAgcmV0dXJuICdzbCBzaW5nbGUnO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3REYXkoZGF5OiBDYWxlbmRhckRhdGUpOiB2b2lkIHtcbiAgICBpZiAoIWRheS5pbkN1cnJlbnRNb250aCkgcmV0dXJuO1xuXG4gICAgaWYgKCF0aGlzLnJhbmdlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF5ID0gZGF5O1xuICAgICAgY29uc3QgY3VycmVudERhdGUgPSBjYWxlbmRhckRhdGVUb0RhdGUoZGF5KTtcbiAgICAgIHRoaXMuY2FsZW5kYXJSZXNwb25zZS5lbWl0KGN1cnJlbnREYXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb25TZWxlY3REYXlzUmFuZ2UodGhpcywgZGF5KTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSYWdlLmVtaXQoZGF5KTtcbiAgICB9XG4gIH1cblxuXHRwdWJsaWMgYXBwbHlTZWxlY3RlZERhdGUoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMucmFuZ2UpIHtcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydCAmJiB0aGlzLnNlbGVjdGVkUmFuZ2VFbmQpIHtcblx0XHRcdFx0b25BcHBseVJhZ2VEYXRlKHRoaXMpO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLmVuZERhdGVGaWVsZCAmJiB0aGlzLnN0YXJ0RGF0ZUZpZWxkKSB7XG5cdFx0XHRcdHRoaXMuY2xlYXJTZWxlY3RlZERhdGUoJ2FsbCcpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZERheSkge1xuXHRcdFx0Y29uc3QgZGF0ZSA9IGNhbGVuZGFyRGF0ZVRvRGF0ZSh0aGlzLnNlbGVjdGVkRGF5KTtcblx0XHRcdHRoaXMuY2FsZW5kYXJSZXNwb25zZS5lbWl0KGRhdGUpO1xuXHRcdH1cblx0fVxuXG4gIHB1YmxpYyBjbGVhclNlbGVjdGVkRGF0ZShjbGVhclRhcmdldDogJ2FsbCcgfCAnc3RhcnQnIHwgJ2VuZCcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yYW5nZSAmJiAoY2xlYXJUYXJnZXQgPT09ICdhbGwnIHx8IGNsZWFyVGFyZ2V0ID09PSAnZW5kJykpIHtcblx0XHRcdHRoaXMuZW5kRGF0ZUVycm9yID0gJyc7XG5cdCAgICB0aGlzLmVuZERhdGVGaWVsZC5mb2N1cygpO1xuICAgICAgdGhpcy5zZWxlY3RlZFJhbmdlRW5kID0gbnVsbDtcblx0XHRcdHRoaXMuc3RhcnRGaWVsZERpc2FibGVkID0gZmFsc2U7XG4gICAgICB0aGlzLmVuZERhdGVGaWVsZC5pbnB1dFZhbHVlID0gJyc7XG5cdFx0XHRpZih0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydCkgeyB0aGlzLmN1cnJlbnREYXRlID0gY2FsZW5kYXJEYXRlVG9EYXRlKHRoaXMuc2VsZWN0ZWRSYW5nZVN0YXJ0KSB9XG4gICAgfVxuXG5cdCAgaWYgKHRoaXMucmFuZ2UgJiYgKGNsZWFyVGFyZ2V0ID09PSAnYWxsJyB8fCBjbGVhclRhcmdldCA9PT0gJ3N0YXJ0JykpIHtcblx0XHQgIHRoaXMuc3RhcnREYXRlRXJyb3IgPSAnJztcblx0XHRcdHRoaXMuc3RhcnREYXRlRmllbGQuZm9jdXMoKTtcblx0XHRcdHRoaXMuZW5kRmllbGREaXNhYmxlZCA9IGZhbHNlO1xuXHRcdCAgdGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQgPSBudWxsO1xuXHRcdCAgdGhpcy5zdGFydERhdGVGaWVsZC5pbnB1dFZhbHVlID0gJyc7XG5cdFx0ICBpZih0aGlzLnNlbGVjdGVkUmFuZ2VFbmQpIHsgdGhpcy5jdXJyZW50RGF0ZSA9IGNhbGVuZGFyRGF0ZVRvRGF0ZSh0aGlzLnNlbGVjdGVkUmFuZ2VFbmQpIH1cblx0ICB9XG5cblx0XHRpZiAodGhpcy5yYW5nZSAmJiB0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydCA9PT0gbnVsbCAmJiB0aGlzLnNlbGVjdGVkUmFuZ2VFbmQgPT09IG51bGwpIHtcblx0XHRcdHRoaXMuZm9jdXNlZCA9ICdzdGFydCc7XG5cdFx0XHR0aGlzLnN0YXJ0RGF0ZUZpZWxkLmZvY3VzKCk7XG5cdFx0XHR0aGlzLmN1cnJlbnREYXRlID0gbmV3IERhdGUoKTtcblx0XHR9XG5cbiAgICB0aGlzLnNlbGVjdGVkRGF5ID0gbnVsbDtcblx0XHR0aGlzLm5vdGlmaWNhdGlvbiA9IG51bGw7XG5cdFx0aWYgKCF0aGlzLnJhbmdlKSB7IHRoaXMuY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpOyB9XG5cbiAgICB0aGlzLmNsZWFyU2VsZWN0aW9uLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVDYWxlbmRhclJlc3BvbnNlKGRhdGU6IERhdGUgfCBEYXRlW10sIGlzTW9udGg6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoIShkYXRlIGluc3RhbmNlb2YgRGF0ZSkpIHJldHVybjtcblxuICAgIGNvbnN0IHllYXIgPSBpc01vbnRoID8gdGhpcy5jdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpIDogZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IG1vbnRoID0gaXNNb250aCA/IGRhdGUuZ2V0TW9udGgoKSA6IHRoaXMuY3VycmVudERhdGUuZ2V0TW9udGgoKTtcblxuICAgIHRoaXMuY3VycmVudERhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgdGhpcy5jdXJyZW50RGF0ZS5nZXREYXRlKCkpO1xuXG4gICAgaWYgKGlzTW9udGgpIHsgdGhpcy5pbml0TW9udGggPSB0aGlzLmN1cnJlbnREYXRlOyB0aGlzLnNob3dNb250aENhbGVuZGFyID0gZmFsc2U7IH1cbiAgICBlbHNlIHsgdGhpcy5pbml0WWVhciA9IHRoaXMuY3VycmVudERhdGU7IHRoaXMuc2hvd1llYXJDYWxlbmRhciA9IGZhbHNlOyB9XG5cbiAgICB0aGlzLmNoYW5nZU1vbnRoWWVhclJlc3BvbnNlLmVtaXQodGhpcy5jdXJyZW50RGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlT25DbGlja0Ryb3Bkb3duTGFiZWwoaXNNb250aDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgdGhpcy5pbml0TW9udGggPSBpc01vbnRoID8gdGhpcy5jdXJyZW50RGF0ZSA6IHRoaXMuaW5pdE1vbnRoO1xuICAgICAgdGhpcy5pbml0WWVhciA9ICFpc01vbnRoID8gdGhpcy5jdXJyZW50RGF0ZSA6IHRoaXMuaW5pdFllYXI7XG5cbiAgICAgIHRoaXMuc2hvd01vbnRoQ2FsZW5kYXIgPSBpc01vbnRoO1xuICAgICAgdGhpcy5zaG93WWVhckNhbGVuZGFyID0gIWlzTW9udGg7XG5cbiAgICAgIHRoaXMub3BlbkludGVncmF0ZWRDYWxlbmRhci5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TW9udGhHcmlkKCk6IENhbGVuZGFyRGF0ZVtdW10ge1xuICAgIGxldCB3ZWVrOiBDYWxlbmRhckRhdGVbXSA9IFtdO1xuXG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGdyaWQ6IENhbGVuZGFyRGF0ZVtdW10gPSBbXTtcbiAgICBjb25zdCBiYXNlRGF0ZSA9IHRoaXMuY3VycmVudERhdGU7XG4gICAgY29uc3QgbW9udGggPSBiYXNlRGF0ZS5nZXRNb250aCgpO1xuICAgIGNvbnN0IHllYXIgPSBiYXNlRGF0ZS5nZXRGdWxsWWVhcigpO1xuXG4gICAgY29uc3QgZmlyc3REYXkgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSk7XG4gICAgY29uc3Qgc3RhcnRXZWVrZGF5ID0gKGZpcnN0RGF5LmdldERheSgpICsgNikgJSA3O1xuXG4gICAgY29uc3QgZGF5c0luTW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCArIDEsIDApLmdldERhdGUoKTtcbiAgICBjb25zdCBkYXlzSW5QcmV2TW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMCkuZ2V0RGF0ZSgpO1xuXG4gICAgLy8gZmlsbCBkYXlzIGZyb20gcHJldmlvdXMgbW9udGhcbiAgICBmb3IgKGxldCBpID0gc3RhcnRXZWVrZGF5IC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgY29uc3QgZGF5ID0gZGF5c0luUHJldk1vbnRoIC0gaTtcbiAgICAgICAgY29uc3Qgd2Vla0RheSA9IChzdGFydFdlZWtkYXkgLSAxIC0gaSArIDcpICUgNztcbiAgICAgICAgd2Vlay5wdXNoKHsgZGF5LCBtb250aFllYXI6IHttb250aDogbW9udGggLSAxLCB5ZWFyOiB5ZWFyfSwgaXNUb2RheTogZmFsc2UsIGluQ3VycmVudE1vbnRoOiBmYWxzZSwgd2Vla0RheSB9KTtcbiAgICB9XG5cbiAgICAvLyBmaWxsIGRheXMgZnJvbSBjdXJyZW50IG1vbnRoXG4gICAgZm9yIChsZXQgZCA9IDE7IGQgPD0gZGF5c0luTW9udGg7IGQrKykge1xuICAgICAgICBjb25zdCBpc1RvZGF5ID0gZCA9PT0gdG9kYXkuZ2V0RGF0ZSgpICYmIG1vbnRoID09PSB0b2RheS5nZXRNb250aCgpICYmIHllYXIgPT09IHRvZGF5LmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGNvbnN0IHdlZWtEYXkgPSB3ZWVrLmxlbmd0aCAlIDc7XG4gICAgICAgIHdlZWsucHVzaCh7IGRheTogZCwgbW9udGhZZWFyOiB7bW9udGg6IG1vbnRoLCB5ZWFyOiB5ZWFyfSwgaXNUb2RheSwgaW5DdXJyZW50TW9udGg6IHRydWUsIHdlZWtEYXkgfSk7XG5cbiAgICAgICAgaWYgKHdlZWsubGVuZ3RoID09PSA3KSB7XG4gICAgICAgICAgICBncmlkLnB1c2god2Vlayk7XG4gICAgICAgICAgICB3ZWVrID0gW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBmaWxsIHJlbWFpbmluZyBkYXlzIGZyb20gbmV4dCBtb250aFxuICAgIGxldCBuZXh0RGF5ID0gMTtcbiAgICB3aGlsZSAod2Vlay5sZW5ndGggPCA3KSB7XG4gICAgICAgIGNvbnN0IHdlZWtEYXkgPSB3ZWVrLmxlbmd0aDtcbiAgICAgICAgd2Vlay5wdXNoKHsgZGF5OiBuZXh0RGF5KyssIG1vbnRoWWVhcjoge21vbnRoOiBtb250aCArIDEsIHllYXI6IHllYXJ9LCBpc1RvZGF5OiBmYWxzZSwgaW5DdXJyZW50TW9udGg6IGZhbHNlLCB3ZWVrRGF5IH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc0N1cnJlbnRNb250aERheSA9IHdlZWsuc29tZShkYXkgPT4gZGF5LmluQ3VycmVudE1vbnRoKTtcbiAgICBpZiAoaGFzQ3VycmVudE1vbnRoRGF5KSB7XG4gICAgICAgIGdyaWQucHVzaCh3ZWVrKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ3JpZDtcbiAgfVxuXG5cdHByb3RlY3RlZCByZWFkb25seSBjaGFuZ2VEYXRlID0gY2hhbmdlRGF0ZTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzUHJldmlldyA9IGlzUHJldmlldztcblx0cHJvdGVjdGVkIHJlYWRvbmx5IHNlYXJjaERhdGUgPSBzZWFyY2hEYXRlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb25Ib3ZlckRheSA9IG9uSG92ZXJEYXk7XG5cdHByb3RlY3RlZCByZWFkb25seSBvbkRhdGVLZXl1cCA9IG9uRGF0ZUtleXVwO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb25DbGVhckhvdmVyID0gb25DbGVhckhvdmVyO1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgY2FsZW5kYXJEYXRlVG9EYXRlID0gY2FsZW5kYXJEYXRlVG9EYXRlO1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgaXNQZXJpb2RBdmFpbGFibGUgPSBpc1BlcmlvZEF2YWlsYWJsZTtcbn0iLCI8c2VjdGlvbiAqbmdJZj1cInNob3dNb250aENhbGVuZGFyXCI+XG4gIDxtb250aC1jYWxlbmRhclxuICAgIFtjb25maWddPVwiY29uZmlnXCJcbiAgICBbaW50ZWdyYXRlZE1vZGVdPVwidHJ1ZVwiXG4gICAgW3Jlc3RhcnRdPVwic2hvd01vbnRoQ2FsZW5kYXJcIlxuICAgIChyZXNwb25zZSk9XCJoYW5kbGVDYWxlbmRhclJlc3BvbnNlKCRldmVudCwgdHJ1ZSlcIiBbaW5pdERhdGVdPVwiaW5pdE1vbnRoXCJcbiAgICBbYXBwZWFyYW5jZV09XCJ7bGFuZ3VhZ2U6IGFwcGVhcmFuY2UubGFuZ3VhZ2UsIGlzTW9iaWxlOiBhcHBlYXJhbmNlLmlzTW9iaWxlLCBhY3Rpb25zOiBmYWxzZSwgfVwiPlxuICA8L21vbnRoLWNhbGVuZGFyPlxuPC9zZWN0aW9uPlxuXG48c2VjdGlvbiAqbmdJZj1cInNob3dZZWFyQ2FsZW5kYXJcIj5cbiAgPHllYXItY2FsZW5kYXJcbiAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgW2ludGVncmF0ZWRNb2RlXT1cInRydWVcIlxuICAgIFtyZXN0YXJ0XT1cInNob3dZZWFyQ2FsZW5kYXJcIlxuICAgIChyZXNwb25zZSk9XCJoYW5kbGVDYWxlbmRhclJlc3BvbnNlKCRldmVudCwgZmFsc2UpXCIgW2luaXREYXRlXT1cImluaXRZZWFyXCJcbiAgICBbYXBwZWFyYW5jZV09XCJ7bGFuZ3VhZ2U6IGFwcGVhcmFuY2UubGFuZ3VhZ2UsIGlzTW9iaWxlOiBhcHBlYXJhbmNlLmlzTW9iaWxlLCBhY3Rpb25zOiBmYWxzZX1cIj5cbiAgPC95ZWFyLWNhbGVuZGFyPlxuPC9zZWN0aW9uPlxuXG48ZGl2ICpuZ0lmPVwiIXNob3dZZWFyQ2FsZW5kYXIgJiYgIXNob3dNb250aENhbGVuZGFyXCIgY2xhc3M9XCJncmF2aXR5LWNhbGVuZGFyLWNvbnRlbnRcIiBbY2xhc3MubW9iaWxlXT1cImFwcGVhcmFuY2UuaXNNb2JpbGVcIj5cbiAgPHNwYW4gKm5nSWY9XCIhYXBwZWFyYW5jZS5pc01vYmlsZVwiIGNsYXNzPVwiaHItbGFiZWwgc20tYm9sZCB0aXRsZVwiPnt7cmFuZ2UgPyBpMThuLnNlbGVjdF9yYW5nZSA6IGkxOG4uc2VsZWN0X2RhdGV9fTwvc3Bhbj5cblxuICA8ZGl2ICpuZ0lmPVwicmFuZ2VcIiBjbGFzcz1cInNlbGVjdGVkLWRhdGVzXCI+XG4gICAgPGdyYXZpdHktdGV4dC1maWVsZCAjc3RhcnREYXRlXG4gICAgICBbc2l6ZV09XCInc20nXCJcbiAgICAgIFt3aWR0aF09XCInc2hvcnQnXCJcbiAgICAgIFtsYWJlbF09XCJpMThuLnN0YXJ0X2RhdGVcIlxuICAgICAgW2lucHV0Q29udGVudFR5cGVdPVwiJ2RhdGUnXCJcbiAgICAgIFtzdXBwb3J0VGV4dF09XCJzdGFydERhdGVFcnJvclwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiaTE4bi5kYXRlX3BsYWNlaG9sZGVyXCJcbiAgICAgIFtjbGlja09uUmlnaHRJY29uXT1cIiFzdGFydEZpZWxkRGlzYWJsZWRcIlxuICAgICAgKGtleXVwKT1cIm9uRGF0ZUtleXVwKHRoaXMsICRldmVudCwgJ3N0YXJ0JylcIlxuICAgICAgKGNsaWNrSWNvblJpZ2h0KT1cImNsZWFyU2VsZWN0ZWREYXRlKCdzdGFydCcpXCJcbiAgICAgIChmb2N1c291dCk9XCJzZWFyY2hEYXRlKHRoaXMsIHN0YXJ0RGF0ZS5pbnB1dFZhbHVlLCAnc3RhcnQnKVwiXG4gICAgICBbaWNvblJpZ2h0XT1cIihzZWxlY3RlZFJhbmdlU3RhcnQgfHwgc3RhcnREYXRlLmlucHV0VmFsdWUubGVuZ3RoID4gOSkgPyAndW5zdWNjZXNzJyA6ICAnJ1wiXG4gICAgICAoY2xpY2spPVwiZm9jdXNlZCA9ICdzdGFydCc7IHNlbGVjdGVkUmFuZ2VTdGFydCA/IGN1cnJlbnREYXRlID0gY2FsZW5kYXJEYXRlVG9EYXRlKHNlbGVjdGVkUmFuZ2VTdGFydCkgOiBudWxsXCJcbiAgICAgIFtjdXN0b21TdGF0ZV09XCJzdGFydEZpZWxkRGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogc3RhcnREYXRlRXJyb3IgPyAndHlwZWQtZXJyb3InIDogKHN0YXJ0RGF0ZS5pbnB1dFZhbHVlLmxlbmd0aCA8IDEgPyAnZGVmYXVsdCcgOiAndHlwaW5nJylcIi8+XG5cbiAgICA8Z3Jhdml0eS10ZXh0LWZpZWxkICNlbmREYXRlXG4gICAgICBbc2l6ZV09XCInc20nXCJcbiAgICAgIFt3aWR0aF09XCInc2hvcnQnXCJcbiAgICAgIFtsYWJlbF09XCJpMThuLmVuZF9kYXRlXCJcbiAgICAgIFtpbnB1dENvbnRlbnRUeXBlXT1cIidkYXRlJ1wiXG4gICAgICBbc3VwcG9ydFRleHRdPVwiZW5kRGF0ZUVycm9yXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJpMThuLmRhdGVfcGxhY2Vob2xkZXJcIlxuICAgICAgW2NsaWNrT25SaWdodEljb25dPVwiIWVuZEZpZWxkRGlzYWJsZWRcIlxuICAgICAgKGtleXVwKT1cIm9uRGF0ZUtleXVwKHRoaXMsICRldmVudCwgJ2VuZCcpXCJcbiAgICAgIChjbGlja0ljb25SaWdodCk9XCJjbGVhclNlbGVjdGVkRGF0ZSgnZW5kJylcIlxuICAgICAgKGZvY3Vzb3V0KT1cInNlYXJjaERhdGUodGhpcywgZW5kRGF0ZS5pbnB1dFZhbHVlLCAnZW5kJylcIlxuICAgICAgW2ljb25SaWdodF09XCIoc2VsZWN0ZWRSYW5nZUVuZCB8fCBlbmREYXRlLmlucHV0VmFsdWUubGVuZ3RoID4gOSkgPyAndW5zdWNjZXNzJyA6ICcnXCJcbiAgICAgIChjbGljayk9XCIgZm9jdXNlZCA9ICdlbmQnOyBzZWxlY3RlZFJhbmdlRW5kID8gY3VycmVudERhdGUgPSBjYWxlbmRhckRhdGVUb0RhdGUoc2VsZWN0ZWRSYW5nZUVuZCkgOiBudWxsXCJcbiAgICAgIFtjdXN0b21TdGF0ZV09XCJlbmRGaWVsZERpc2FibGVkID8gJ2Rpc2FibGVkJyA6IGVuZERhdGVFcnJvciA/ICd0eXBlZC1lcnJvcicgOiAoZW5kRGF0ZS5pbnB1dFZhbHVlLmxlbmd0aCA8IDEgPyAnZGVmYXVsdCcgOiAndHlwaW5nJylcIi8+XG4gIDwvZGl2PlxuXG4gIDxzZWN0aW9uICBjbGFzcz1cImdyYXZpdHktY2FsZW5kYXItaGVhZGVyXCIgW2NsYXNzLm1vYmlsZV09XCJhcHBlYXJhbmNlLmlzTW9iaWxlXCI+XG4gICAgPGdyYXZpdHktaWNvbi1idXR0b24gW3R5cGVdPVwiJ3ByaW1hcnknXCIgW3NpemVdPVwiJ3NtJ1wiIFtpY29uXT1cIidhcnJvdy1sZWZ0J1wiIFtzdXBwb3J0VGV4dF09XCJpMThuLnByZXZpZXdfbW9udGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIChjbGlja09uSWNvbik9XCJjdXJyZW50RGF0ZSA9IGNoYW5nZURhdGUoLTEsIGN1cnJlbnREYXRlLCB0cnVlKTsgY2hhbmdlTW9udGguZW1pdCgtMSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCIobmF2VHlwZSA9PT0gJ3ByZXYnIHx8IG5hdlR5cGUgPT09ICdib3RoJykgJiYgKGFwcGVhcmFuY2Uuc3RhdGUgIT09ICdkaXNhYmxlZCcpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzUGVyaW9kQXZhaWxhYmxlKGN1cnJlbnREYXRlLCBjb25maWcubWluRGF0ZSwgJ21vbnRoJywgJ3ByZXYnKSA/ICdhY3RpdmUnIDogJ2Rpc2FibGVkJ1wiLz5cblxuICAgIDxkaXYgY2xhc3M9XCJtb250aC15ZWFyLWxhYmVsXCI+XG4gICAgICA8Z3Jhdml0eS1kcm9wZG93bi1sYWJlbCBbZm9udENsYXNzXT1cIidoci10aXRsZSBzbS1ib2xkJ1wiIFtzaXplXT1cIidzbSdcIiBbbGFiZWxdPVwibW9udGhzTGlzdFtjdXJyZW50RGF0ZS5nZXRNb250aCgpXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhdGVdPVwiYXBwZWFyYW5jZS5zdGF0ZSA9PT0gJ2Rpc2FibGVkJyA/ICdpbmFjdGl2ZScgOiAnYWN0aXZlJ1wiIChvbkNsaWNrTGFiZWwpPVwiaGFuZGxlT25DbGlja0Ryb3Bkb3duTGFiZWwodHJ1ZSlcIj4gPC9ncmF2aXR5LWRyb3Bkb3duLWxhYmVsPlxuXG4gICAgICA8Z3Jhdml0eS1kcm9wZG93bi1sYWJlbCBbZm9udENsYXNzXT1cIidoci10aXRsZSBzbS1ib2xkJ1wiIFtzaXplXT1cIidzbSdcIiBbbGFiZWxdPVwiY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJhcHBlYXJhbmNlLnN0YXRlID09PSAnZGlzYWJsZWQnID8gJ2luYWN0aXZlJyA6ICdhY3RpdmUnXCIgKG9uQ2xpY2tMYWJlbCk9XCJoYW5kbGVPbkNsaWNrRHJvcGRvd25MYWJlbChmYWxzZSlcIj4gPC9ncmF2aXR5LWRyb3Bkb3duLWxhYmVsPlxuICAgIDwvZGl2PlxuXG4gICAgICA8Z3Jhdml0eS1pY29uLWJ1dHRvbiBbdHlwZV09XCIncHJpbWFyeSdcIiBbc2l6ZV09XCInc20nXCIgW2ljb25dPVwiJ2Fycm93LXJpZ2h0J1wiIFtzdXBwb3J0VGV4dF09XCJpMThuLm5leHRfbW9udGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrT25JY29uKT1cImN1cnJlbnREYXRlID0gY2hhbmdlRGF0ZSgxLCBjdXJyZW50RGF0ZSwgdHJ1ZSk7IGNoYW5nZU1vbnRoLmVtaXQoMSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXRlXT1cIihuYXZUeXBlID09PSAnbmV4dCcgfHwgbmF2VHlwZSA9PT0gJ2JvdGgnKSAmJiAoYXBwZWFyYW5jZS5zdGF0ZSAhPT0gJ2Rpc2FibGVkJykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1BlcmlvZEF2YWlsYWJsZShjdXJyZW50RGF0ZSwgY29uZmlnLm1heERhdGUsICdtb250aCcsICduZXh0JykgPyAnYWN0aXZlJyA6ICdkaXNhYmxlZCdcIi8+XG4gIDwvc2VjdGlvbj5cblxuICA8c2VjdGlvbiBjbGFzcz1cImdyYXZpdHktY2FsZW5kYXItYm9keVwiIFtjbGFzcy5tb2JpbGVdPVwiYXBwZWFyYW5jZS5pc01vYmlsZVwiPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwiZGF5cy1uYW1lLWxpbmVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXlzLW5hbWVcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJoci1ib2R5XCIgW25nQ2xhc3NdPVwiYXBwZWFyYW5jZS5pc01vYmlsZSA/ICdtZC1yZWd1bGFyJyA6ICdzbS1yZWd1bGFyJ1wiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2YgZGF5c0xpc3RcIj4ge3sgZGF5IH19IDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwic2VwYXJhdG9yLWxpbmVcIj48L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImRheXMtbnVtYmVyLXNlbGVjdG9yXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGF5cy1udW1iZXItdGFibGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndlZWstcm93XCIgKm5nRm9yPVwibGV0IHdlZWsgb2YgZ2V0TW9udGhHcmlkKCk7IHRyYWNrQnk6IHRyYWNrQnlXZWVrXCI+XG4gICAgICAgICA8c3BhbiBjbGFzcz1cImhyLWJvZHlcIiAqbmdGb3I9XCJsZXQgZGF5IG9mIHdlZWs7IHRyYWNrQnk6IHRyYWNrQnlEYXlcIlxuICAgICAgICAgIFtjbGFzcy5wcmV2aWV3XT1cInJhbmdlID8gaXNQcmV2aWV3KHRoaXMsIGRheSkgOiBudWxsXCJcbiAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIWRheS5pbkN1cnJlbnRNb250aFwiIFtjbGFzcy50b2RheV09XCJkYXkuaXNUb2RheVwiXG4gICAgICAgICAgKG1vdXNlZW50ZXIpPVwicmFuZ2UgPyBvbkhvdmVyRGF5KHRoaXMsIGRheSkgOiBudWxsOyBob3ZlckRheS5lbWl0KGRheSlcIlxuICAgICAgICAgIChtb3VzZWxlYXZlKT1cInJhbmdlID8gb25DbGVhckhvdmVyKHRoaXMpIDogbnVsbDsgdGhpcy5jbGVhckhvdmVyLmVtaXQoKVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiW2FwcGVhcmFuY2UuaXNNb2JpbGUgPyAnbWQtcmVndWxhcicgOiAnc20tcmVndWxhcicsXG4gICAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZS5zdGF0ZSA9PT0gJ2Rpc2FibGVkJyA/ICdkaXNhYmxlZCcgOiBnZXREYXlTZWxlY3Rpb25DbGFzcyhkYXkpXVwiXG4gICAgICAgICAgKGNsaWNrKT1cImRheS5pbkN1cnJlbnRNb250aCA/IG9uU2VsZWN0RGF5KGRheSk6IG51bGxcIj4ge3sgZGF5LmRheSB9fSA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJub3RpZmljYXRpb25cIiBjbGFzcz1cIm5vdGlmaWNhdGlvblwiIFtjbGFzcy5lcnJvcl09XCJub3RpZmljYXRpb24uZXJyb3JcIj5cbiAgICAgICAgPGdyYXZpdHktaWNvbiBbc3R5bGUuLS1pY29uLWNvbG9yXT1cIid2YXIoLS1ub3RpZmljYXRpb24taWNvbi1jb2xvciknXCIgW2ljb25TaXplXT1cIidzbS0xMidcIiBbaWNvbk5hbWVdPVwiJ2luZm9ybWF0aW9uLWNpcmNsZSdcIi8+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaHItbGFiZWwgc20tcmVndWxhclwiPnt7bm90aWZpY2F0aW9uLnRleHR9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwiYXBwZWFyYW5jZS5hY3Rpb25zXCIgY2xhc3M9XCJhY3Rpb24tc2VjdGlvblwiID5cbiAgICAgICAgPGdyYXZpdHktbGluayBbbGlua1RleHRdPVwiaTE4bi5jbGVhclwiIFtzdGF0ZV09XCIhaXNEYXRlU2VsZWN0ZWQoKSA/ICdkaXNhYmxlZCcgOiAnYWN0aXZlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiBpc0RhdGVTZWxlY3RlZCgpID8gY2xlYXJTZWxlY3RlZERhdGUoJ2FsbCcpIDogbnVsbFwiPiA8L2dyYXZpdHktbGluaz5cblxuICAgICAgICA8Z3Jhdml0eS1idXR0b24gW3NpemVdPVwiJ3NtJ1wiIFt0eXBlXT1cIid0ZXJ0aWFyeSdcIiBbZGlzYWJsZWRdPVwiIWlzRGF0ZVNlbGVjdGVkKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImlzRGF0ZVNlbGVjdGVkKCkgPyBhcHBseVNlbGVjdGVkRGF0ZSgpIDogbnVsbFwiPiB7e2kxOG4uYXBwbHl9fSA8L2dyYXZpdHktYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuICA8L3NlY3Rpb24+XG48L2Rpdj5cbiJdfQ==
271
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LWNhbGVuZGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZ3Jhdml0eS1kYXRlLXBpY2tlci9jb21wb25lbnRzL2RheS1jYWxlbmRhci9kYXktY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3Jhdml0eS1kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9ncmF2aXR5LWRhdGUtcGlja2VyL2NvbXBvbmVudHMvZGF5LWNhbGVuZGFyL2RheS1jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUNySCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xJLE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLDJCQUEyQixFQUFFLFVBQVUsRUFBQyxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7OztBQU9sTSxNQUFNLE9BQU8sb0JBQW9CO0lBTGpDO1FBU2tCLFVBQUssR0FBWSxLQUFLLENBQUM7UUFDdkIsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUMxQixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM1Qixn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LElBQUksa0JBQWtCLEVBQUU7WUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNuQjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzsrR0F6TlUsb0JBQW9CO21HQUFwQixvQkFBb0IsMndCQ1pqQyxzOE1Ba0hBOzs0RkR0R2Esb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNJLGNBQWM7OEJBS1YsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLE1BQU07c0JBQXJCLEtBQUs7Z0JBQ1UsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNTLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1csV0FBVztzQkFBMUIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUs7Z0JBRVcsVUFBVTtzQkFBMUIsTUFBTTtnQkFDVSxjQUFjO3NCQUE5QixNQUFNO2dCQUNVLFdBQVc7c0JBQTNCLE1BQU07Z0JBQ1UsUUFBUTtzQkFBeEIsTUFBTTtnQkFDVSxzQkFBc0I7c0JBQXRDLE1BQU07Z0JBQ1UsWUFBWTtzQkFBNUIsTUFBTTtnQkFDVSxnQkFBZ0I7c0JBQWhDLE1BQU07Z0JBQ1UsdUJBQXVCO3NCQUF2QyxNQUFNO2dCQUVlLFlBQVk7c0JBQWpDLFNBQVM7dUJBQUMsU0FBUztnQkFDSSxjQUFjO3NCQUFyQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RhdGVQaWNrZXJBcHBlYXJhbmNlLCBEYXRlUGlja2VyQ29uZmlnLCBDYWxlbmRhckRhdGV9IGZyb20gXCIuLi8uLi9zaGFyZWQvZGF0ZS1waWNrZXIubW9kYWxcIjtcbmltcG9ydCB7R3Jhdml0eVRleHRGaWVsZENvbXBvbmVudH0gZnJvbSBcIi4uLy4uLy4uL2dyYXZpdHktdGV4dC1maWVsZC9ncmF2aXR5LXRleHQtZmllbGQuY29tcG9uZW50XCI7XG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NBTEVOREFSX0kxOE4sIERBWVNfU0hPUlRfRU4sIERBWVNfU0hPUlRfRVMsIE1PTlRIU19FTiwgTU9OVEhTX0VTfSBmcm9tIFwiLi4vLi4vc2hhcmVkL2RhdGUtcGlja2VyLmNvbnN0YW50c1wiO1xuaW1wb3J0IHtkYXRlVG9DYWxlbmRhckRheSwgZ2V0U3RhcnREYXRlLCBjaGFuZ2VEYXRlLCBjYWxlbmRhckRhdGVUb0RhdGUsIGlzUGVyaW9kQXZhaWxhYmxlfSBmcm9tICcuLi8uLi9zaGFyZWQvZGF0ZS1waWNrZXIudXRpbHMnO1xuaW1wb3J0IHtnZXRSYW5nZVNlbGVjdGlvbkNsYXNzLCBpc1ByZXZpZXcsIG9uQXBwbHlSYWdlRGF0ZSwgb25DbGVhckhvdmVyLCBvbkRhdGVLZXl1cCwgb25Ib3ZlckRheSwgb25TZWxlY3REYXlzUmFuZ2UsIHByb2Nlc3NQcmVzZWxlY3RlZFJhbmdlRGF0ZSwgc2VhcmNoRGF0ZX0gZnJvbSBcIi4vcmFuZ2UtZGF5cy1jYWxlbmRhci51dGlsc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RheS1jYWxlbmRhcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RheS1jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZGF5LWNhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRGF5Q2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBwdWJsaWMgaW5pdFllYXI6IERhdGU7XG4gIEBJbnB1dCgpIHB1YmxpYyBpbml0TW9udGg6IERhdGU7XG4gIEBJbnB1dCgpIHB1YmxpYyBjb25maWc6IERhdGVQaWNrZXJDb25maWc7XG4gIEBJbnB1dCgpIHB1YmxpYyByYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgcmVzdGFydDogYm9vbGVhbiA9IGZhbHNlO1xuXHRASW5wdXQoKSBwdWJsaWMgYXBweU9uQ2xvc2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGN1cnJlbnREYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgQElucHV0KCkgcHVibGljIGFwcGVhcmFuY2U6IERhdGVQaWNrZXJBcHBlYXJhbmNlO1xuICBASW5wdXQoKSBwdWJsaWMgbmF2VHlwZTogJ3ByZXYnIHwgJ25leHQnIHwgJ2JvdGgnIHwgJ25vbmUnPSAnYm90aCdcblxuICBAT3V0cHV0KCkgcHVibGljIGNsZWFySG92ZXI6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBjbGVhclNlbGVjdGlvbjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZU1vbnRoOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBAT3V0cHV0KCkgcHVibGljIGhvdmVyRGF5OiBFdmVudEVtaXR0ZXI8Q2FsZW5kYXJEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FsZW5kYXJEYXRlPigpO1xuICBAT3V0cHV0KCkgcHVibGljIG9wZW5JbnRlZ3JhdGVkQ2FsZW5kYXI6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBzZWxlY3RlZFJhZ2U6IEV2ZW50RW1pdHRlcjxDYWxlbmRhckRhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxDYWxlbmRhckRhdGU+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgY2FsZW5kYXJSZXNwb25zZTogRXZlbnRFbWl0dGVyPERhdGVbXSB8IERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlW10gfCBEYXRlPigpO1xuICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZU1vbnRoWWVhclJlc3BvbnNlOiBFdmVudEVtaXR0ZXI8RGF0ZSB8IERhdGVbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGUgfCBEYXRlW10+KCk7XG5cbiAgQFZpZXdDaGlsZCgnZW5kRGF0ZScpIGVuZERhdGVGaWVsZCE6IEdyYXZpdHlUZXh0RmllbGRDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ3N0YXJ0RGF0ZScpIHN0YXJ0RGF0ZUZpZWxkITogR3Jhdml0eVRleHRGaWVsZENvbXBvbmVudDtcblxuICBwdWJsaWMgZW5kRGF0ZUVycm9yOiBzdHJpbmcgPSAnJztcbiAgcHVibGljIHN0YXJ0RGF0ZUVycm9yOiBzdHJpbmcgPSAnJztcblx0cHVibGljIGVuZEZpZWxkRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblx0cHVibGljIHN0YXJ0RmllbGREaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXHRwdWJsaWMgc2VsZWN0ZWRSYW5nZUVuZDogQ2FsZW5kYXJEYXRlIHwgbnVsbCA9IG51bGw7XG5cdHB1YmxpYyBzZWxlY3RlZFJhbmdlU3RhcnQ6IENhbGVuZGFyRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBzaG93WWVhckNhbGVuZGFyOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBzaG93TW9udGhDYWxlbmRhcjogYm9vbGVhbiA9IGZhbHNlO1xuXHRwdWJsaWMgZm9jdXNlZDogJ3N0YXJ0JyB8ICdlbmQnID0gJ3N0YXJ0Jztcblx0cHVibGljIGhvdmVyZWREYXk6IENhbGVuZGFyRGF0ZSB8IG51bGwgPSBudWxsO1xuXHRwdWJsaWMgc2VsZWN0ZWREYXk6IENhbGVuZGFyRGF0ZSB8IG51bGwgPSBudWxsO1xuXHRwdWJsaWMgbm90aWZpY2F0aW9uOiB7dGV4dDogc3RyaW5nLCBlcnJvcjogYm9vbGVhbn07XG5cbiAgcHVibGljIGdldCBpMThuKCkgeyByZXR1cm4gQ0FMRU5EQVJfSTE4Tlt0aGlzLmFwcGVhcmFuY2UubGFuZ3VhZ2VdOyB9XG4gIHB1YmxpYyBnZXQgbW9udGhzTGlzdCgpIHsgcmV0dXJuIHRoaXMuYXBwZWFyYW5jZS5sYW5ndWFnZSA9PT0gJ2VuJyA/IE1PTlRIU19FTiA6IE1PTlRIU19FUzsgfVxuICBwdWJsaWMgZ2V0IGRheXNMaXN0KCkgeyByZXR1cm4gdGhpcy5hcHBlYXJhbmNlLmxhbmd1YWdlID09PSAnZW4nID8gREFZU19TSE9SVF9FTiA6IERBWVNfU0hPUlRfRVM7IH1cblxuICBwdWJsaWMgdHJhY2tCeVdlZWsoaW5kZXg6IG51bWJlciwgXzogYW55KTogbnVtYmVyIHsgcmV0dXJuIGluZGV4OyB9XG4gIHB1YmxpYyB0cmFja0J5RGF5KF86IG51bWJlciwgZGF5OiBDYWxlbmRhckRhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtkYXkubW9udGhZZWFyLnllYXJ9LSR7ZGF5Lm1vbnRoWWVhci5tb250aH0tJHtkYXkuZGF5fWA7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3Qgc2hvdWxkUmVzdGFydCA9IGNoYW5nZXNbJ3Jlc3RhcnQnXSAmJiB0aGlzLnJlc3RhcnQ7XG5cdFx0Y29uc3Qgc2hvdWxkQXBweSA9IGNoYW5nZXNbJ2FwcHlPbkNsb3NlJ10gJiYgdGhpcy5hcHB5T25DbG9zZTtcbiAgICBjb25zdCBzaG91bGRQcm9jZXNzUHJlU2VsZWN0ZWQgPSBjaGFuZ2VzWydwcmVTZWxlY3RlZERhdGUnXSAmJiB0aGlzLmNvbmZpZy5pbml0RGF0ZTtcblxuXHRcdGlmIChzaG91bGRBcHB5KSB7IHRoaXMuYXBwbHlTZWxlY3RlZERhdGUoKTsgfVxuICAgIGlmIChzaG91bGRSZXN0YXJ0IHx8IHNob3VsZFByb2Nlc3NQcmVTZWxlY3RlZCkgeyB0aGlzLnByb2Nlc3NJbml0RGF0ZSgpOyB9XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NJbml0RGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yYW5nZSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7cHJvY2Vzc1ByZXNlbGVjdGVkUmFuZ2VEYXRlKHRoaXMpfSwgMCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZy5pbml0RGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHRoaXMuY3VycmVudERhdGUgPSBnZXRTdGFydERhdGUodGhpcy5jb25maWcuaW5pdERhdGUpO1xuICAgICAgdGhpcy5zZWxlY3RlZERheSA9IGRhdGVUb0NhbGVuZGFyRGF5KHRoaXMuY29uZmlnLmluaXREYXRlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNEYXRlU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gIXRoaXMucmFuZ2UgPyAhIXRoaXMuc2VsZWN0ZWREYXkgOiAhIXRoaXMuc2VsZWN0ZWRSYW5nZVN0YXJ0ICYmICEhdGhpcy5zZWxlY3RlZFJhbmdlRW5kO1xuICB9XG5cbiAgcHVibGljIGdldERheVNlbGVjdGlvbkNsYXNzKGRheTogQ2FsZW5kYXJEYXRlKTogc3RyaW5nIHtcbiAgICBpZiAoIWRheS5pbkN1cnJlbnRNb250aCkgcmV0dXJuICdkaXNhYmxlZCc7XG5cbiAgICBjb25zdCBkYXlEYXRlID0gbmV3IERhdGUoZGF5Lm1vbnRoWWVhci55ZWFyLCBkYXkubW9udGhZZWFyLm1vbnRoLCBkYXkuZGF5KTtcblxuICAgIGlmICh0aGlzLmNvbmZpZz8ubWluRGF0ZSkgeyBpZiAoZGF5RGF0ZSA8IHRoaXMuY29uZmlnLm1pbkRhdGUpIHJldHVybiAnZGlzYWJsZWQnOyB9XG4gICAgaWYgKHRoaXMuY29uZmlnPy5tYXhEYXRlKSB7IGlmIChkYXlEYXRlID4gdGhpcy5jb25maWcubWF4RGF0ZSkgcmV0dXJuICdkaXNhYmxlZCc7IH1cblxuICAgIHJldHVybiB0aGlzLnJhbmdlID8gZ2V0UmFuZ2VTZWxlY3Rpb25DbGFzcyh0aGlzLCBkYXkpIDogdGhpcy5nZXRTaW5nbGVEYXlTZWxlY3Rpb25DbGFzcyhkYXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTaW5nbGVEYXlTZWxlY3Rpb25DbGFzcyhkYXk6IENhbGVuZGFyRGF0ZSk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXkgJiYgZGF5LmRheSA9PT0gdGhpcy5zZWxlY3RlZERheS5kYXkgJiZcbiAgICAgIGRheS5tb250aFllYXIubW9udGggPT09IHRoaXMuc2VsZWN0ZWREYXkubW9udGhZZWFyLm1vbnRoICYmXG4gICAgICBkYXkubW9udGhZZWFyLnllYXIgPT09IHRoaXMuc2VsZWN0ZWREYXkubW9udGhZZWFyLnllYXIpIHtcbiAgICAgIHJldHVybiAnc2wgc2luZ2xlJztcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0RGF5KGRheTogQ2FsZW5kYXJEYXRlKTogdm9pZCB7XG4gICAgaWYgKCFkYXkuaW5DdXJyZW50TW9udGgpIHJldHVybjtcblxuICAgIGlmICghdGhpcy5yYW5nZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZERheSA9IGRheTtcbiAgICAgIGNvbnN0IGN1cnJlbnREYXRlID0gY2FsZW5kYXJEYXRlVG9EYXRlKGRheSk7XG4gICAgICB0aGlzLmNhbGVuZGFyUmVzcG9uc2UuZW1pdChjdXJyZW50RGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uU2VsZWN0RGF5c1JhbmdlKHRoaXMsIGRheSk7XG4gICAgICB0aGlzLnNlbGVjdGVkUmFnZS5lbWl0KGRheSk7XG4gICAgfVxuICB9XG5cblx0cHVibGljIGFwcGx5U2VsZWN0ZWREYXRlKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLnJhbmdlKSB7XG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQgJiYgdGhpcy5zZWxlY3RlZFJhbmdlRW5kKSB7XG5cdFx0XHRcdG9uQXBwbHlSYWdlRGF0ZSh0aGlzKTtcblx0XHRcdH0gZWxzZSBpZiAodGhpcy5lbmREYXRlRmllbGQgJiYgdGhpcy5zdGFydERhdGVGaWVsZCkge1xuXHRcdFx0XHR0aGlzLmNsZWFyU2VsZWN0ZWREYXRlKCdhbGwnKTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWREYXkpIHtcblx0XHRcdGNvbnN0IGRhdGUgPSBjYWxlbmRhckRhdGVUb0RhdGUodGhpcy5zZWxlY3RlZERheSk7XG5cdFx0XHR0aGlzLmNhbGVuZGFyUmVzcG9uc2UuZW1pdChkYXRlKTtcblx0XHR9XG5cdH1cblxuICBwdWJsaWMgY2xlYXJTZWxlY3RlZERhdGUoY2xlYXJUYXJnZXQ6ICdhbGwnIHwgJ3N0YXJ0JyB8ICdlbmQnKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmFuZ2UgJiYgKGNsZWFyVGFyZ2V0ID09PSAnYWxsJyB8fCBjbGVhclRhcmdldCA9PT0gJ2VuZCcpKSB7XG5cdFx0XHR0aGlzLmVuZERhdGVFcnJvciA9ICcnO1xuXHQgICAgdGhpcy5lbmREYXRlRmllbGQuZm9jdXMoKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSYW5nZUVuZCA9IG51bGw7XG5cdFx0XHR0aGlzLnN0YXJ0RmllbGREaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5lbmREYXRlRmllbGQuaW5wdXRWYWx1ZSA9ICcnO1xuXHRcdFx0aWYodGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQpIHsgdGhpcy5jdXJyZW50RGF0ZSA9IGNhbGVuZGFyRGF0ZVRvRGF0ZSh0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydCkgfVxuICAgIH1cblxuXHQgIGlmICh0aGlzLnJhbmdlICYmIChjbGVhclRhcmdldCA9PT0gJ2FsbCcgfHwgY2xlYXJUYXJnZXQgPT09ICdzdGFydCcpKSB7XG5cdFx0ICB0aGlzLnN0YXJ0RGF0ZUVycm9yID0gJyc7XG5cdFx0XHR0aGlzLnN0YXJ0RGF0ZUZpZWxkLmZvY3VzKCk7XG5cdFx0XHR0aGlzLmVuZEZpZWxkRGlzYWJsZWQgPSBmYWxzZTtcblx0XHQgIHRoaXMuc2VsZWN0ZWRSYW5nZVN0YXJ0ID0gbnVsbDtcblx0XHQgIHRoaXMuc3RhcnREYXRlRmllbGQuaW5wdXRWYWx1ZSA9ICcnO1xuXHRcdCAgaWYodGhpcy5zZWxlY3RlZFJhbmdlRW5kKSB7IHRoaXMuY3VycmVudERhdGUgPSBjYWxlbmRhckRhdGVUb0RhdGUodGhpcy5zZWxlY3RlZFJhbmdlRW5kKSB9XG5cdCAgfVxuXG5cdFx0aWYgKHRoaXMucmFuZ2UgJiYgdGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQgPT09IG51bGwgJiYgdGhpcy5zZWxlY3RlZFJhbmdlRW5kID09PSBudWxsKSB7XG5cdFx0XHR0aGlzLmZvY3VzZWQgPSAnc3RhcnQnO1xuXHRcdFx0dGhpcy5zdGFydERhdGVGaWVsZC5mb2N1cygpO1xuXHRcdFx0dGhpcy5jdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7XG5cdFx0fVxuXG4gICAgdGhpcy5zZWxlY3RlZERheSA9IG51bGw7XG5cdFx0dGhpcy5ub3RpZmljYXRpb24gPSBudWxsO1xuXHRcdGlmICghdGhpcy5yYW5nZSkgeyB0aGlzLmN1cnJlbnREYXRlID0gbmV3IERhdGUoKTsgfVxuXG4gICAgdGhpcy5jbGVhclNlbGVjdGlvbi5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlQ2FsZW5kYXJSZXNwb25zZShkYXRlOiBEYXRlIHwgRGF0ZVtdLCBpc01vbnRoOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKCEoZGF0ZSBpbnN0YW5jZW9mIERhdGUpKSByZXR1cm47XG5cbiAgICBjb25zdCB5ZWFyID0gaXNNb250aCA/IHRoaXMuY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSA6IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICBjb25zdCBtb250aCA9IGlzTW9udGggPyBkYXRlLmdldE1vbnRoKCkgOiB0aGlzLmN1cnJlbnREYXRlLmdldE1vbnRoKCk7XG5cbiAgICB0aGlzLmN1cnJlbnREYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIHRoaXMuY3VycmVudERhdGUuZ2V0RGF0ZSgpKTtcblxuICAgIGlmIChpc01vbnRoKSB7IHRoaXMuaW5pdE1vbnRoID0gdGhpcy5jdXJyZW50RGF0ZTsgdGhpcy5zaG93TW9udGhDYWxlbmRhciA9IGZhbHNlOyB9XG4gICAgZWxzZSB7IHRoaXMuaW5pdFllYXIgPSB0aGlzLmN1cnJlbnREYXRlOyB0aGlzLnNob3dZZWFyQ2FsZW5kYXIgPSBmYWxzZTsgfVxuXG4gICAgdGhpcy5jaGFuZ2VNb250aFllYXJSZXNwb25zZS5lbWl0KHRoaXMuY3VycmVudERhdGUpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZU9uQ2xpY2tEcm9wZG93bkxhYmVsKGlzTW9udGg6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgIHRoaXMuaW5pdE1vbnRoID0gaXNNb250aCA/IHRoaXMuY3VycmVudERhdGUgOiB0aGlzLmluaXRNb250aDtcbiAgICAgIHRoaXMuaW5pdFllYXIgPSAhaXNNb250aCA/IHRoaXMuY3VycmVudERhdGUgOiB0aGlzLmluaXRZZWFyO1xuXG4gICAgICB0aGlzLnNob3dNb250aENhbGVuZGFyID0gaXNNb250aDtcbiAgICAgIHRoaXMuc2hvd1llYXJDYWxlbmRhciA9ICFpc01vbnRoO1xuXG4gICAgICB0aGlzLm9wZW5JbnRlZ3JhdGVkQ2FsZW5kYXIuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIGdldE1vbnRoR3JpZCgpOiBDYWxlbmRhckRhdGVbXVtdIHtcbiAgICBsZXQgd2VlazogQ2FsZW5kYXJEYXRlW10gPSBbXTtcblxuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBncmlkOiBDYWxlbmRhckRhdGVbXVtdID0gW107XG4gICAgY29uc3QgYmFzZURhdGUgPSB0aGlzLmN1cnJlbnREYXRlO1xuICAgIGNvbnN0IG1vbnRoID0gYmFzZURhdGUuZ2V0TW9udGgoKTtcbiAgICBjb25zdCB5ZWFyID0gYmFzZURhdGUuZ2V0RnVsbFllYXIoKTtcblxuICAgIGNvbnN0IGZpcnN0RGF5ID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xuICAgIGNvbnN0IHN0YXJ0V2Vla2RheSA9IChmaXJzdERheS5nZXREYXkoKSArIDYpICUgNztcblxuICAgIGNvbnN0IGRheXNJbk1vbnRoID0gbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCAwKS5nZXREYXRlKCk7XG4gICAgY29uc3QgZGF5c0luUHJldk1vbnRoID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDApLmdldERhdGUoKTtcblxuICAgIC8vIGZpbGwgZGF5cyBmcm9tIHByZXZpb3VzIG1vbnRoXG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0V2Vla2RheSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGNvbnN0IGRheSA9IGRheXNJblByZXZNb250aCAtIGk7XG4gICAgICAgIGNvbnN0IHdlZWtEYXkgPSAoc3RhcnRXZWVrZGF5IC0gMSAtIGkgKyA3KSAlIDc7XG4gICAgICAgIHdlZWsucHVzaCh7IGRheSwgbW9udGhZZWFyOiB7bW9udGg6IG1vbnRoIC0gMSwgeWVhcjogeWVhcn0sIGlzVG9kYXk6IGZhbHNlLCBpbkN1cnJlbnRNb250aDogZmFsc2UsIHdlZWtEYXkgfSk7XG4gICAgfVxuXG4gICAgLy8gZmlsbCBkYXlzIGZyb20gY3VycmVudCBtb250aFxuICAgIGZvciAobGV0IGQgPSAxOyBkIDw9IGRheXNJbk1vbnRoOyBkKyspIHtcbiAgICAgICAgY29uc3QgaXNUb2RheSA9IGQgPT09IHRvZGF5LmdldERhdGUoKSAmJiBtb250aCA9PT0gdG9kYXkuZ2V0TW9udGgoKSAmJiB5ZWFyID09PSB0b2RheS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBjb25zdCB3ZWVrRGF5ID0gd2Vlay5sZW5ndGggJSA3O1xuICAgICAgICB3ZWVrLnB1c2goeyBkYXk6IGQsIG1vbnRoWWVhcjoge21vbnRoOiBtb250aCwgeWVhcjogeWVhcn0sIGlzVG9kYXksIGluQ3VycmVudE1vbnRoOiB0cnVlLCB3ZWVrRGF5IH0pO1xuXG4gICAgICAgIGlmICh3ZWVrLmxlbmd0aCA9PT0gNykge1xuICAgICAgICAgICAgZ3JpZC5wdXNoKHdlZWspO1xuICAgICAgICAgICAgd2VlayA9IFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZmlsbCByZW1haW5pbmcgZGF5cyBmcm9tIG5leHQgbW9udGhcbiAgICBsZXQgbmV4dERheSA9IDE7XG4gICAgd2hpbGUgKHdlZWsubGVuZ3RoIDwgNykge1xuICAgICAgICBjb25zdCB3ZWVrRGF5ID0gd2Vlay5sZW5ndGg7XG4gICAgICAgIHdlZWsucHVzaCh7IGRheTogbmV4dERheSsrLCBtb250aFllYXI6IHttb250aDogbW9udGggKyAxLCB5ZWFyOiB5ZWFyfSwgaXNUb2RheTogZmFsc2UsIGluQ3VycmVudE1vbnRoOiBmYWxzZSwgd2Vla0RheSB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNDdXJyZW50TW9udGhEYXkgPSB3ZWVrLnNvbWUoZGF5ID0+IGRheS5pbkN1cnJlbnRNb250aCk7XG4gICAgaWYgKGhhc0N1cnJlbnRNb250aERheSkge1xuICAgICAgICBncmlkLnB1c2god2Vlayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdyaWQ7XG4gIH1cblxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgY2hhbmdlRGF0ZSA9IGNoYW5nZURhdGU7XG4gIHByb3RlY3RlZCByZWFkb25seSBpc1ByZXZpZXcgPSBpc1ByZXZpZXc7XG5cdHByb3RlY3RlZCByZWFkb25seSBzZWFyY2hEYXRlID0gc2VhcmNoRGF0ZTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9uSG92ZXJEYXkgPSBvbkhvdmVyRGF5O1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgb25EYXRlS2V5dXAgPSBvbkRhdGVLZXl1cDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9uQ2xlYXJIb3ZlciA9IG9uQ2xlYXJIb3Zlcjtcblx0cHJvdGVjdGVkIHJlYWRvbmx5IGNhbGVuZGFyRGF0ZVRvRGF0ZSA9IGNhbGVuZGFyRGF0ZVRvRGF0ZTtcblx0cHJvdGVjdGVkIHJlYWRvbmx5IGlzUGVyaW9kQXZhaWxhYmxlID0gaXNQZXJpb2RBdmFpbGFibGU7XG59IiwiPHNlY3Rpb24gKm5nSWY9XCJzaG93TW9udGhDYWxlbmRhclwiPlxuICA8bW9udGgtY2FsZW5kYXJcbiAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgW2ludGVncmF0ZWRNb2RlXT1cInRydWVcIlxuICAgIFtyZXN0YXJ0XT1cInNob3dNb250aENhbGVuZGFyXCJcbiAgICAocmVzcG9uc2UpPVwiaGFuZGxlQ2FsZW5kYXJSZXNwb25zZSgkZXZlbnQsIHRydWUpXCIgW2luaXREYXRlXT1cImluaXRNb250aFwiXG4gICAgW2FwcGVhcmFuY2VdPVwie2xhbmd1YWdlOiBhcHBlYXJhbmNlLmxhbmd1YWdlLCBpc01vYmlsZTogYXBwZWFyYW5jZS5pc01vYmlsZSwgYWN0aW9uczogZmFsc2UsIH1cIj5cbiAgPC9tb250aC1jYWxlbmRhcj5cbjwvc2VjdGlvbj5cblxuPHNlY3Rpb24gKm5nSWY9XCJzaG93WWVhckNhbGVuZGFyXCI+XG4gIDx5ZWFyLWNhbGVuZGFyXG4gICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgIFtpbnRlZ3JhdGVkTW9kZV09XCJ0cnVlXCJcbiAgICBbcmVzdGFydF09XCJzaG93WWVhckNhbGVuZGFyXCJcbiAgICAocmVzcG9uc2UpPVwiaGFuZGxlQ2FsZW5kYXJSZXNwb25zZSgkZXZlbnQsIGZhbHNlKVwiIFtpbml0RGF0ZV09XCJpbml0WWVhclwiXG4gICAgW2FwcGVhcmFuY2VdPVwie2xhbmd1YWdlOiBhcHBlYXJhbmNlLmxhbmd1YWdlLCBpc01vYmlsZTogYXBwZWFyYW5jZS5pc01vYmlsZSwgYWN0aW9uczogZmFsc2V9XCI+XG4gIDwveWVhci1jYWxlbmRhcj5cbjwvc2VjdGlvbj5cblxuPGRpdiAqbmdJZj1cIiFzaG93WWVhckNhbGVuZGFyICYmICFzaG93TW9udGhDYWxlbmRhclwiIGNsYXNzPVwiZ3Jhdml0eS1jYWxlbmRhci1jb250ZW50XCIgW2NsYXNzLm1vYmlsZV09XCJhcHBlYXJhbmNlLmlzTW9iaWxlXCI+XG4gIDxzcGFuICpuZ0lmPVwiIWFwcGVhcmFuY2UuaXNNb2JpbGVcIiBjbGFzcz1cImhyLWxhYmVsIHNtLWJvbGQgdGl0bGVcIj57e3JhbmdlID8gaTE4bi5zZWxlY3RfcmFuZ2UgOiBpMThuLnNlbGVjdF9kYXRlfX08L3NwYW4+XG5cbiAgPGRpdiAqbmdJZj1cInJhbmdlXCIgY2xhc3M9XCJzZWxlY3RlZC1kYXRlc1wiPlxuICAgIDxncmF2aXR5LXRleHQtZmllbGQgI3N0YXJ0RGF0ZVxuICAgICAgW3NpemVdPVwiJ3NtJ1wiXG4gICAgICBbd2lkdGhdPVwiJ3Nob3J0J1wiXG4gICAgICBbbGFiZWxdPVwiaTE4bi5zdGFydF9kYXRlXCJcbiAgICAgIFtpbnB1dENvbnRlbnRUeXBlXT1cIidkYXRlJ1wiXG4gICAgICBbc3VwcG9ydFRleHRdPVwic3RhcnREYXRlRXJyb3JcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cImkxOG4uZGF0ZV9wbGFjZWhvbGRlclwiXG4gICAgICBbY2xpY2tPblJpZ2h0SWNvbl09XCIhc3RhcnRGaWVsZERpc2FibGVkXCJcbiAgICAgIChrZXl1cCk9XCJvbkRhdGVLZXl1cCh0aGlzLCAkZXZlbnQsICdzdGFydCcpXCJcbiAgICAgIChjbGlja0ljb25SaWdodCk9XCJjbGVhclNlbGVjdGVkRGF0ZSgnc3RhcnQnKVwiXG4gICAgICAoZm9jdXNvdXQpPVwic2VhcmNoRGF0ZSh0aGlzLCBzdGFydERhdGUuaW5wdXRWYWx1ZSwgJ3N0YXJ0JylcIlxuICAgICAgW2ljb25SaWdodF09XCIoc2VsZWN0ZWRSYW5nZVN0YXJ0IHx8IHN0YXJ0RGF0ZS5pbnB1dFZhbHVlLmxlbmd0aCA+IDkpID8gJ3Vuc3VjY2VzcycgOiAgJydcIlxuICAgICAgKGNsaWNrKT1cImZvY3VzZWQgPSAnc3RhcnQnOyBzZWxlY3RlZFJhbmdlU3RhcnQgPyBjdXJyZW50RGF0ZSA9IGNhbGVuZGFyRGF0ZVRvRGF0ZShzZWxlY3RlZFJhbmdlU3RhcnQpIDogbnVsbFwiXG4gICAgICBbY3VzdG9tU3RhdGVdPVwic3RhcnRGaWVsZERpc2FibGVkID8gJ2Rpc2FibGVkJyA6IHN0YXJ0RGF0ZUVycm9yID8gJ3R5cGVkLWVycm9yJyA6IChzdGFydERhdGUuaW5wdXRWYWx1ZS5sZW5ndGggPCAxID8gJ2RlZmF1bHQnIDogJ3R5cGluZycpXCIvPlxuXG4gICAgPGdyYXZpdHktdGV4dC1maWVsZCAjZW5kRGF0ZVxuICAgICAgW3NpemVdPVwiJ3NtJ1wiXG4gICAgICBbd2lkdGhdPVwiJ3Nob3J0J1wiXG4gICAgICBbbGFiZWxdPVwiaTE4bi5lbmRfZGF0ZVwiXG4gICAgICBbaW5wdXRDb250ZW50VHlwZV09XCInZGF0ZSdcIlxuICAgICAgW3N1cHBvcnRUZXh0XT1cImVuZERhdGVFcnJvclwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiaTE4bi5kYXRlX3BsYWNlaG9sZGVyXCJcbiAgICAgIFtjbGlja09uUmlnaHRJY29uXT1cIiFlbmRGaWVsZERpc2FibGVkXCJcbiAgICAgIChrZXl1cCk9XCJvbkRhdGVLZXl1cCh0aGlzLCAkZXZlbnQsICdlbmQnKVwiXG4gICAgICAoY2xpY2tJY29uUmlnaHQpPVwiY2xlYXJTZWxlY3RlZERhdGUoJ2VuZCcpXCJcbiAgICAgIChmb2N1c291dCk9XCJzZWFyY2hEYXRlKHRoaXMsIGVuZERhdGUuaW5wdXRWYWx1ZSwgJ2VuZCcpXCJcbiAgICAgIFtpY29uUmlnaHRdPVwiKHNlbGVjdGVkUmFuZ2VFbmQgfHwgZW5kRGF0ZS5pbnB1dFZhbHVlLmxlbmd0aCA+IDkpID8gJ3Vuc3VjY2VzcycgOiAnJ1wiXG4gICAgICAoY2xpY2spPVwiIGZvY3VzZWQgPSAnZW5kJzsgc2VsZWN0ZWRSYW5nZUVuZCA/IGN1cnJlbnREYXRlID0gY2FsZW5kYXJEYXRlVG9EYXRlKHNlbGVjdGVkUmFuZ2VFbmQpIDogbnVsbFwiXG4gICAgICBbY3VzdG9tU3RhdGVdPVwiZW5kRmllbGREaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiBlbmREYXRlRXJyb3IgPyAndHlwZWQtZXJyb3InIDogKGVuZERhdGUuaW5wdXRWYWx1ZS5sZW5ndGggPCAxID8gJ2RlZmF1bHQnIDogJ3R5cGluZycpXCIvPlxuICA8L2Rpdj5cblxuICA8c2VjdGlvbiAgY2xhc3M9XCJncmF2aXR5LWNhbGVuZGFyLWhlYWRlclwiIFtjbGFzcy5tb2JpbGVdPVwiYXBwZWFyYW5jZS5pc01vYmlsZVwiPlxuICAgIDxncmF2aXR5LWljb24tYnV0dG9uIFt0eXBlXT1cIidwcmltYXJ5J1wiIFtzaXplXT1cIidzbSdcIiBbaWNvbl09XCInYXJyb3ctbGVmdCdcIiBbc3VwcG9ydFRleHRdPVwiaTE4bi5wcmV2aWV3X21vbnRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2tPbkljb24pPVwiY3VycmVudERhdGUgPSBjaGFuZ2VEYXRlKC0xLCBjdXJyZW50RGF0ZSwgdHJ1ZSk7IGNoYW5nZU1vbnRoLmVtaXQoLTEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhdGVdPVwiKG5hdlR5cGUgPT09ICdwcmV2JyB8fCBuYXZUeXBlID09PSAnYm90aCcpICYmIChhcHBlYXJhbmNlLnN0YXRlICE9PSAnZGlzYWJsZWQnKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc1BlcmlvZEF2YWlsYWJsZShjdXJyZW50RGF0ZSwgY29uZmlnLm1pbkRhdGUsICdtb250aCcsICdwcmV2JykgPyAnYWN0aXZlJyA6ICdkaXNhYmxlZCdcIi8+XG5cbiAgICA8ZGl2IGNsYXNzPVwibW9udGgteWVhci1sYWJlbFwiPlxuICAgICAgPGdyYXZpdHktZHJvcGRvd24tbGFiZWwgW2ZvbnRDbGFzc109XCInaHItdGl0bGUgc20tYm9sZCdcIiBbc2l6ZV09XCInc20nXCIgW2xhYmVsXT1cIm1vbnRoc0xpc3RbY3VycmVudERhdGUuZ2V0TW9udGgoKV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXRlXT1cImFwcGVhcmFuY2Uuc3RhdGUgPT09ICdkaXNhYmxlZCcgPyAnaW5hY3RpdmUnIDogJ2FjdGl2ZSdcIiAob25DbGlja0xhYmVsKT1cImhhbmRsZU9uQ2xpY2tEcm9wZG93bkxhYmVsKHRydWUpXCI+IDwvZ3Jhdml0eS1kcm9wZG93bi1sYWJlbD5cblxuICAgICAgPGdyYXZpdHktZHJvcGRvd24tbGFiZWwgW2ZvbnRDbGFzc109XCInaHItdGl0bGUgc20tYm9sZCdcIiBbc2l6ZV09XCInc20nXCIgW2xhYmVsXT1cImN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhdGVdPVwiYXBwZWFyYW5jZS5zdGF0ZSA9PT0gJ2Rpc2FibGVkJyA/ICdpbmFjdGl2ZScgOiAnYWN0aXZlJ1wiIChvbkNsaWNrTGFiZWwpPVwiaGFuZGxlT25DbGlja0Ryb3Bkb3duTGFiZWwoZmFsc2UpXCI+IDwvZ3Jhdml0eS1kcm9wZG93bi1sYWJlbD5cbiAgICA8L2Rpdj5cblxuICAgICAgPGdyYXZpdHktaWNvbi1idXR0b24gW3R5cGVdPVwiJ3ByaW1hcnknXCIgW3NpemVdPVwiJ3NtJ1wiIFtpY29uXT1cIidhcnJvdy1yaWdodCdcIiBbc3VwcG9ydFRleHRdPVwiaTE4bi5uZXh0X21vbnRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGlja09uSWNvbik9XCJjdXJyZW50RGF0ZSA9IGNoYW5nZURhdGUoMSwgY3VycmVudERhdGUsIHRydWUpOyBjaGFuZ2VNb250aC5lbWl0KDEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCIobmF2VHlwZSA9PT0gJ25leHQnIHx8IG5hdlR5cGUgPT09ICdib3RoJykgJiYgKGFwcGVhcmFuY2Uuc3RhdGUgIT09ICdkaXNhYmxlZCcpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQZXJpb2RBdmFpbGFibGUoY3VycmVudERhdGUsIGNvbmZpZy5tYXhEYXRlLCAnbW9udGgnLCAnbmV4dCcpID8gJ2FjdGl2ZScgOiAnZGlzYWJsZWQnXCIvPlxuICA8L3NlY3Rpb24+XG5cbiAgPHNlY3Rpb24gY2xhc3M9XCJncmF2aXR5LWNhbGVuZGFyLWJvZHlcIiBbY2xhc3MubW9iaWxlXT1cImFwcGVhcmFuY2UuaXNNb2JpbGVcIj5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImRheXMtbmFtZS1saW5lXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGF5cy1uYW1lXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaHItYm9keVwiIFtuZ0NsYXNzXT1cImFwcGVhcmFuY2UuaXNNb2JpbGUgPyAnbWQtcmVndWxhcicgOiAnc20tcmVndWxhcidcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheXNMaXN0XCI+IHt7IGRheSB9fSA8L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInNlcGFyYXRvci1saW5lXCI+PC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJkYXlzLW51bWJlci1zZWxlY3RvclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImRheXMtbnVtYmVyLXRhYmxlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrLXJvd1wiICpuZ0Zvcj1cImxldCB3ZWVrIG9mIGdldE1vbnRoR3JpZCgpOyB0cmFja0J5OiB0cmFja0J5V2Vla1wiPlxuICAgICAgICAgPHNwYW4gY2xhc3M9XCJoci1ib2R5XCIgKm5nRm9yPVwibGV0IGRheSBvZiB3ZWVrOyB0cmFja0J5OiB0cmFja0J5RGF5XCJcbiAgICAgICAgICBbY2xhc3MucHJldmlld109XCJyYW5nZSA/IGlzUHJldmlldyh0aGlzLCBkYXkpIDogbnVsbFwiXG4gICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFkYXkuaW5DdXJyZW50TW9udGhcIiBbY2xhc3MudG9kYXldPVwiZGF5LmlzVG9kYXlcIlxuICAgICAgICAgIChtb3VzZWVudGVyKT1cInJhbmdlID8gb25Ib3ZlckRheSh0aGlzLCBkYXkpIDogbnVsbDsgaG92ZXJEYXkuZW1pdChkYXkpXCJcbiAgICAgICAgICAobW91c2VsZWF2ZSk9XCJyYW5nZSA/IG9uQ2xlYXJIb3Zlcih0aGlzKSA6IG51bGw7IHRoaXMuY2xlYXJIb3Zlci5lbWl0KClcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIlthcHBlYXJhbmNlLmlzTW9iaWxlID8gJ21kLXJlZ3VsYXInIDogJ3NtLXJlZ3VsYXInLFxuICAgICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2Uuc3RhdGUgPT09ICdkaXNhYmxlZCcgPyAnZGlzYWJsZWQnIDogZ2V0RGF5U2VsZWN0aW9uQ2xhc3MoZGF5KV1cIlxuICAgICAgICAgIChjbGljayk9XCJkYXkuaW5DdXJyZW50TW9udGggPyBvblNlbGVjdERheShkYXkpOiBudWxsXCI+IHt7IGRheS5kYXkgfX0gPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwibm90aWZpY2F0aW9uXCIgY2xhc3M9XCJub3RpZmljYXRpb25cIiBbY2xhc3MuZXJyb3JdPVwibm90aWZpY2F0aW9uLmVycm9yXCI+XG4gICAgICAgIDxncmF2aXR5LWljb24gW3N0eWxlLi0taWNvbi1jb2xvcl09XCIndmFyKC0tbm90aWZpY2F0aW9uLWljb24tY29sb3IpJ1wiIFtpY29uU2l6ZV09XCInc20tMTInXCIgW2ljb25OYW1lXT1cIidpbmZvcm1hdGlvbi1jaXJjbGUnXCIvPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImhyLWxhYmVsIHNtLXJlZ3VsYXJcIj57e25vdGlmaWNhdGlvbi50ZXh0fX08L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdJZj1cImFwcGVhcmFuY2UuYWN0aW9uc1wiIGNsYXNzPVwiYWN0aW9uLXNlY3Rpb25cIiA+XG4gICAgICAgIDxncmF2aXR5LWxpbmsgW2xpbmtUZXh0XT1cImkxOG4uY2xlYXJcIiBbc3RhdGVdPVwiIWlzRGF0ZVNlbGVjdGVkKCkgPyAnZGlzYWJsZWQnIDogJ2FjdGl2ZSdcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIgaXNEYXRlU2VsZWN0ZWQoKSA/IGNsZWFyU2VsZWN0ZWREYXRlKCdhbGwnKSA6IG51bGxcIj4gPC9ncmF2aXR5LWxpbms+XG5cbiAgICAgICAgPGdyYXZpdHktYnV0dG9uIFtzaXplXT1cIidzbSdcIiBbdHlwZV09XCIndGVydGlhcnknXCIgW2Rpc2FibGVkXT1cIiFpc0RhdGVTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJpc0RhdGVTZWxlY3RlZCgpID8gYXBwbHlTZWxlY3RlZERhdGUoKSA6IG51bGxcIj4ge3tpMThuLmFwcGx5fX0gPC9ncmF2aXR5LWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbiAgPC9zZWN0aW9uPlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,224 @@
1
+ import { calendarDateToDate, dateToString, getStartDate, stringToCalendarDate, stringToDate, dateToCalendarDay } from "../../shared/date-picker.utils";
2
+ export function isPreview(component, day) {
3
+ const current = calendarDateToDate(day);
4
+ if (component.selectedRangeStart && !component.selectedRangeEnd && component.hoveredDay) {
5
+ const start = calendarDateToDate(component.selectedRangeStart);
6
+ const hover = calendarDateToDate(component.hoveredDay);
7
+ if (hover <= start)
8
+ return false;
9
+ return current > start && current <= hover;
10
+ }
11
+ if (!component.selectedRangeStart && component.selectedRangeEnd && component.hoveredDay) {
12
+ const end = calendarDateToDate(component.selectedRangeEnd);
13
+ const hover = calendarDateToDate(component.hoveredDay);
14
+ if (hover >= end)
15
+ return false;
16
+ return current < end && current >= hover;
17
+ }
18
+ return false;
19
+ }
20
+ export function processPreselectedRangeDate(component) {
21
+ let end = null;
22
+ let start = null;
23
+ component.startDateField.focus();
24
+ if (Array.isArray(component.config.initDate)) {
25
+ [start, end] = component.config.initDate;
26
+ }
27
+ if (start instanceof Date) {
28
+ component.selectedRangeStart = dateToCalendarDay(start);
29
+ setTimeout(() => {
30
+ component.endDateField.focus();
31
+ component.startDateField.inputValue = dateToString(start, component.appearance.language);
32
+ }, 0);
33
+ }
34
+ if (end instanceof Date) {
35
+ component.currentDate = getStartDate(end);
36
+ component.selectedRangeEnd = dateToCalendarDay(end);
37
+ setTimeout(() => {
38
+ component.startDateField.focus();
39
+ component.endDateField.inputValue = dateToString(end, component.appearance.language);
40
+ }, 0);
41
+ }
42
+ else if (start instanceof Date) {
43
+ component.currentDate = getStartDate(start);
44
+ }
45
+ }
46
+ export function getRangeSelectionClass(component, day) {
47
+ const current = calendarDateToDate(day);
48
+ const start = component.selectedRangeStart ? calendarDateToDate(component.selectedRangeStart) : null;
49
+ const end = component.selectedRangeEnd ? calendarDateToDate(component.selectedRangeEnd) : null;
50
+ if (!start && !end) {
51
+ return component.focused === 'start' ? 'nsl-start' : 'nsl-end';
52
+ }
53
+ if (start && !end) {
54
+ if (current.getTime() === start.getTime())
55
+ return 'sl start';
56
+ if (current.getTime() < start.getTime())
57
+ return 'nsl-start';
58
+ return 'in-slt nsl-end';
59
+ }
60
+ if (!start && end) {
61
+ if (current.getTime() === end.getTime())
62
+ return 'sl end';
63
+ if (current.getTime() > end.getTime())
64
+ return 'nsl-end';
65
+ return 'in-slt nsl-start';
66
+ }
67
+ if (start && end) {
68
+ if (current.getTime() === start.getTime() &&
69
+ start.getTime() === end.getTime())
70
+ return 'start sl same-sln';
71
+ if (current.getTime() === start.getTime())
72
+ return 'sl start';
73
+ if (current.getTime() < start.getTime())
74
+ return 'nsl-start';
75
+ if (current.getTime() === end.getTime())
76
+ return 'sl end';
77
+ if (current.getTime() > end.getTime())
78
+ return 'nsl-end';
79
+ if (current > start && current < end)
80
+ return 'sl range';
81
+ return 'default';
82
+ }
83
+ }
84
+ export function onSelectDaysRange(component, day) {
85
+ const selected = calendarDateToDate(day);
86
+ const hasEnd = !!component.selectedRangeEnd;
87
+ const hasStart = !!component.selectedRangeStart;
88
+ const language = component.appearance.language;
89
+ const endDate = hasEnd ? calendarDateToDate(component.selectedRangeEnd) : null;
90
+ const startDate = hasStart ? calendarDateToDate(component.selectedRangeStart) : null;
91
+ Object.assign(component, {
92
+ notification: null,
93
+ endDateError: '', startDateError: '',
94
+ endFieldDisabled: false, startFieldDisabled: false,
95
+ });
96
+ const updateField = (field) => {
97
+ component[`selectedRange${field === 'start' ? 'Start' : 'End'}`] = day;
98
+ component[`${field}DateField`].inputValue = dateToString(selected, language);
99
+ setTimeout(() => {
100
+ const focusField = field === 'start' ?
101
+ (component.selectedRangeEnd ? 'start' : 'end') :
102
+ (component.selectedRangeStart ? 'end' : 'start');
103
+ component[`${focusField}DateField`].focus();
104
+ component[`${focusField}DateField`].inputElement.nativeElement.setSelectionRange(10, 10);
105
+ }, 100);
106
+ };
107
+ if (!hasStart && !hasEnd) {
108
+ updateField(component.focused);
109
+ return;
110
+ }
111
+ if (hasStart && !hasEnd) {
112
+ selected >= startDate ? updateField('end') : updateField('start');
113
+ return;
114
+ }
115
+ if (!hasStart && hasEnd) {
116
+ selected < endDate ? updateField('start') : updateField('end');
117
+ return;
118
+ }
119
+ if (hasStart && hasEnd) {
120
+ selected < startDate ? updateField('start') : updateField('end');
121
+ return;
122
+ }
123
+ }
124
+ export function onApplyRageDate(component) {
125
+ const start = calendarDateToDate(component.selectedRangeStart);
126
+ const end = calendarDateToDate(component.selectedRangeEnd);
127
+ component.calendarResponse.emit([start, end]);
128
+ }
129
+ export function onHoverDay(component, day) {
130
+ const startSelected = !!component.selectedRangeStart && !component.selectedRangeEnd;
131
+ const endSelected = !!component.selectedRangeEnd && !component.selectedRangeStart;
132
+ if (startSelected || endSelected) {
133
+ component.hoveredDay = day;
134
+ }
135
+ }
136
+ export function onClearHover(component) {
137
+ component.hoveredDay = null;
138
+ }
139
+ export function searchDate(component, dateStr, target) {
140
+ const i18n = component.i18n;
141
+ const date = stringToDate(dateStr, component.appearance.language);
142
+ const calendarDate = stringToCalendarDate(dateStr, component.appearance.language);
143
+ const errorProp = target === 'start' ? 'startDateError' : 'endDateError';
144
+ const field = target === 'start' ? component.startDateField : component.endDateField;
145
+ const oppositeDisabled = target === 'start' ? 'endFieldDisabled' : 'startFieldDisabled';
146
+ if (!dateStr) {
147
+ component[oppositeDisabled] = false;
148
+ return;
149
+ }
150
+ if (!calendarDate) {
151
+ field.focus();
152
+ component[oppositeDisabled] = true;
153
+ component[errorProp] = i18n.invalid_date;
154
+ component.notification = { text: i18n.select_valid_date, error: true };
155
+ return;
156
+ }
157
+ if (!validateDateLimits(component, date, target)) {
158
+ component[oppositeDisabled] = true;
159
+ return;
160
+ }
161
+ const otherCalendarDate = target === 'start' ? component.selectedRangeEnd : component.selectedRangeStart;
162
+ const otherDate = otherCalendarDate ? calendarDateToDate(otherCalendarDate) : null;
163
+ if ((target === 'start' && otherDate && date > otherDate) ||
164
+ (target === 'end' && otherDate && date < otherDate)) {
165
+ field.focus();
166
+ component[oppositeDisabled] = true;
167
+ component[errorProp] = i18n.invalid_date;
168
+ component.notification = { text: target === 'start' ? i18n.start_before_end : i18n.end_after_start, error: true };
169
+ return;
170
+ }
171
+ if (target === 'start') {
172
+ component.selectedRangeStart = calendarDate;
173
+ if (!component.selectedRangeEnd)
174
+ setTimeout(() => component.endDateField.focus(), 100);
175
+ }
176
+ else {
177
+ component.selectedRangeEnd = calendarDate;
178
+ if (!component.selectedRangeStart)
179
+ setTimeout(() => component.startDateField.focus(), 100);
180
+ }
181
+ component[errorProp] = null;
182
+ component.currentDate = date;
183
+ component.notification = null;
184
+ component[oppositeDisabled] = false;
185
+ }
186
+ export function validateDateLimits(component, date, target) {
187
+ if (component.config.minDate && date < component.config.minDate) {
188
+ component.notification = { text: component.i18n.date_unavailable, error: true };
189
+ target === 'start' ? component.startDateError = component.i18n.invalid_date : component.endDateError = component.i18n.invalid_date;
190
+ return false;
191
+ }
192
+ if (component.config.maxDate && date > component.config.maxDate) {
193
+ component.notification = { text: component.i18n.date_unavailable, error: true };
194
+ target === 'start' ? component.startDateError = component.i18n.invalid_date : component.endDateError = component.i18n.invalid_date;
195
+ return false;
196
+ }
197
+ return true;
198
+ }
199
+ export function onDateKeyup(component, event, target) {
200
+ const ignoredKeys = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'Enter', ' ', 'Spacebar'];
201
+ if (ignoredKeys.includes(event.key)) {
202
+ return;
203
+ }
204
+ const errorProp = target === 'start' ? 'startDateError' : 'endDateError';
205
+ const disabled = target === 'start' ? 'endFieldDisabled' : 'startFieldDisabled';
206
+ const dateInput = target === 'start' ? component.startDateField : component.endDateField;
207
+ const selectedRangeProp = target === 'start' ? 'selectedRangeStart' : 'selectedRangeEnd';
208
+ const value = dateInput?.inputValue ?? '';
209
+ if (value.length < 10) {
210
+ component[selectedRangeProp] = null;
211
+ if (!component.notification?.error) {
212
+ component.notification = null;
213
+ }
214
+ if (value.length < 1) {
215
+ component[errorProp] = '';
216
+ component[disabled] = false;
217
+ component.notification = null;
218
+ }
219
+ }
220
+ if (value.length > 9) {
221
+ searchDate(this, value, target);
222
+ }
223
+ }
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UtZGF5cy1jYWxlbmRhci51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZ3Jhdml0eS1kYXRlLXBpY2tlci9jb21wb25lbnRzL2RheS1jYWxlbmRhci9yYW5nZS1kYXlzLWNhbGVuZGFyLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBRXJKLE1BQU0sVUFBVSxTQUFTLENBQUMsU0FBK0IsRUFBRSxHQUFpQjtJQUMzRSxNQUFNLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUV4QyxJQUFJLFNBQVMsQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsSUFBSSxTQUFTLENBQUMsVUFBVSxFQUFFO1FBQ3hGLE1BQU0sS0FBSyxHQUFHLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sS0FBSyxHQUFHLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RCxJQUFJLEtBQUssSUFBSSxLQUFLO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDakMsT0FBTyxPQUFPLEdBQUcsS0FBSyxJQUFJLE9BQU8sSUFBSSxLQUFLLENBQUM7S0FDM0M7SUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixJQUFJLFNBQVMsQ0FBQyxnQkFBZ0IsSUFBSSxTQUFTLENBQUMsVUFBVSxFQUFFO1FBQ3hGLE1BQU0sR0FBRyxHQUFHLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzNELE1BQU0sS0FBSyxHQUFH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cG9ydCB7Q2FsZW5kYXJEYXRlfSBmcm9tIFwiLi4vLi4vc2hhcmVkL2RhdGUtcGlja2VyLm1vZGFsXCI7XG5pbXBvcnQge0RheUNhbGVuZGFyQ29tcG9uZW50fSBmcm9tIFwiLi9kYXktY2FsZW5kYXIuY29tcG9uZW50XCI7XG5pbXBvcnQge2NhbGVuZGFyRGF0ZVRvRGF0ZSwgZGF0ZVRvU3RyaW5nLCBnZXRTdGFydERhdGUsIHN0cmluZ1RvQ2FsZW5kYXJEYXRlLCBzdHJpbmdUb0RhdGUsIGRhdGVUb0NhbGVuZGFyRGF5fSBmcm9tIFwiLi4vLi4vc2hhcmVkL2RhdGUtcGlja2VyLnV0aWxzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ByZXZpZXcoY29tcG9uZW50OiBEYXlDYWxlbmRhckNvbXBvbmVudCwgZGF5OiBDYWxlbmRhckRhdGUpOiBib29sZWFuIHtcblx0Y29uc3QgY3VycmVudCA9IGNhbGVuZGFyRGF0ZVRvRGF0ZShkYXkpO1xuXG5cdGlmIChjb21wb25lbnQuc2VsZWN0ZWRSYW5nZVN0YXJ0ICYmICFjb21wb25lbnQuc2VsZWN0ZWRSYW5nZUVuZCAmJiBjb21wb25lbnQuaG92ZXJlZERheSkge1xuXHRcdGNvbnN0IHN0YXJ0ID0gY2FsZW5kYXJEYXRlVG9EYXRlKGNvbXBvbmVudC5zZWxlY3RlZFJhbmdlU3RhcnQpO1xuXHRcdGNvbnN0IGhvdmVyID0gY2FsZW5kYXJEYXRlVG9EYXRlKGNvbXBvbmVudC5ob3ZlcmVkRGF5KTtcblx0XHRpZiAoaG92ZXIgPD0gc3RhcnQpIHJldHVybiBmYWxzZTtcblx0XHRyZXR1cm4gY3VycmVudCA+IHN0YXJ0ICYmIGN1cnJlbnQgPD0gaG92ZXI7XG5cdH1cblxuXHRpZiAoIWNvbXBvbmVudC5zZWxlY3RlZFJhbmdlU3RhcnQgJiYgY29tcG9uZW50LnNlbGVjdGVkUmFuZ2VFbmQgJiYgY29tcG9uZW50LmhvdmVyZWREYXkpIHtcblx0XHRjb25zdCBlbmQgPSBjYWxlbmRhckRhdGVUb0RhdGUoY29tcG9uZW50LnNlbGVjdGVkUmFuZ2VFbmQpO1xuXHRcdGNvbnN0IGhvdmVyID0gY2FsZW5kYXJEYXRlVG9EYXRlKGNvbXBvbmVudC5ob3ZlcmVkRGF5KTtcblx0XHRpZiAoaG92ZXIgPj0gZW5kKSByZXR1cm4gZmFsc2U7XG5cdFx0cmV0dXJuIGN1cnJlbnQgPCBlbmQgJiYgY3VycmVudCA+PSBob3Zlcjtcblx0fVxuXG5cdHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NQcmVzZWxlY3RlZFJhbmdlRGF0ZShjb21wb25lbnQ6IERheUNhbGVuZGFyQ29tcG9uZW50KSB7XG5cdGxldCBlbmQ6IERhdGUgfCBudWxsID0gbnVsbDtcblx0bGV0IHN0YXJ0OiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cblx0Y29tcG9uZW50LnN0YXJ0RGF0ZUZpZWxkLmZvY3VzKCk7XG5cblx0aWYgKEFycmF5LmlzQXJyYXkoY29tcG9uZW50LmNvbmZpZy5pbml0RGF0ZSkpIHtbc3RhcnQsIGVuZF0gPSBjb21wb25lbnQuY29uZmlnLmluaXREYXRlO31cblxuICBpZiAoc3RhcnQgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgY29tcG9uZW50LnNlbGVjdGVkUmFuZ2VTdGFydCA9IGRhdGVUb0NhbGVuZGFyRGF5KHN0YXJ0KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcblx0ICAgIGNvbXBvbmVudC5lbmREYXRlRmllbGQuZm9jdXMoKTtcblx0XHRcdGNvbXBvbmVudC5zdGFydERhdGVGaWVsZC5pbnB1dFZhbHVlID0gZGF0ZVRvU3RyaW5nKHN0YXJ0LCBjb21wb25lbnQuYXBwZWFyYW5jZS5sYW5ndWFnZSk7XG5cdFx0fSwgMCk7XG4gIH1cblxuICBpZiAoZW5kIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIGNvbXBvbmVudC5jdXJyZW50RGF0ZSA9IGdldFN0YXJ0RGF0ZShlbmQpO1xuICAgIGNvbXBvbmVudC5zZWxlY3RlZFJhbmdlRW5kID0gZGF0ZVRvQ2FsZW5kYXJEYXkoZW5kKTtcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdGNvbXBvbmVudC5zdGFydERhdGVGaWVsZC5mb2N1cygpO1xuXHRcdFx0Y29tcG9uZW50LmVuZERhdGVGaWVsZC5pbnB1dFZhbHVlID0gZGF0ZVRvU3RyaW5nKGVuZCwgY29tcG9uZW50LmFwcGVhcmFuY2UubGFuZ3VhZ2UpO1xuXHRcdH0sIDApO1xuXG4gIH0gZWxzZSBpZiAoc3RhcnQgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgY29tcG9uZW50LmN1cnJlbnREYXRlID0gZ2V0U3RhcnREYXRlKHN0YXJ0KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmFuZ2VTZWxlY3Rpb25DbGFzcyhjb21wb25lbnQ6IERheUNhbGVuZGFyQ29tcG9uZW50LCBkYXk6IENhbGVuZGFyRGF0ZSk6IHN0cmluZyB7XG5cdGNvbnN0IGN1cnJlbnQgPSBjYWxlbmRhckRhdGVUb0RhdGUoZGF5KTtcblx0Y29uc3Qgc3RhcnQgPSBjb21wb25lbnQuc2VsZWN0ZWRSYW5nZVN0YXJ0ID8gY2FsZW5kYXJEYXRlVG9EYXRlKGNvbXBvbmVudC5zZWxlY3RlZFJhbmdlU3RhcnQpIDogbnVsbDtcblx0Y29uc3QgZW5kID0gY29tcG9uZW50LnNlbGVjdGVkUmFuZ2VFbmQgPyBjYWxlbmRhckRhdGVUb0RhdGUoY29tcG9uZW50LnNlbGVjdGVkUmFuZ2VFbmQpIDogbnVsbDtcblxuXHRpZiAoIXN0YXJ0ICYmICFlbmQpIHtcblx0XHRyZXR1cm4gY29tcG9uZW50LmZvY3VzZWQgPT09ICdzdGFydCcgPyAnbnNsLXN0YXJ0JyA6ICduc2wtZW5kJztcblx0fVxuXG5cdGlmIChzdGFydCAmJiAhZW5kKSB7XG5cdFx0aWYgKGN1cnJlbnQuZ2V0VGltZSgpID09PSBzdGFydC5nZXRUaW1lKCkpIHJldHVybiAnc2wgc3RhcnQnO1xuXHRcdGlmIChjdXJyZW50LmdldFRpbWUoKSA8IHN0YXJ0LmdldFRpbWUoKSkgcmV0dXJuICduc2wtc3RhcnQnO1xuXHRcdHJldHVybiAnaW4tc2x0IG5zbC1lbmQnO1xuXHR9XG5cblx0aWYgKCFzdGFydCAmJiBlbmQpIHtcblx0XHRpZiAoY3VycmVudC5nZXRUaW1lKCkgPT09IGVuZC5nZXRUaW1lKCkpIHJldHVybiAnc2wgZW5kJztcblx0XHRpZiAoY3VycmVudC5nZXRUaW1lKCkgPiBlbmQuZ2V0VGltZSgpKSByZXR1cm4gJ25zbC1lbmQnO1xuXHRcdHJldHVybiAnaW4tc2x0IG5zbC1zdGFydCc7XG5cdH1cblxuXHRpZiAoc3RhcnQgJiYgZW5kKSB7XG5cdFx0aWYoY3VycmVudC5nZXRUaW1lKCkgPT09IHN0YXJ0LmdldFRpbWUoKSAmJlxuXHRcdFx0IHN0YXJ0LmdldFRpbWUoKSA9PT0gZW5kLmdldFRpbWUoKSlcblx0XHRcdFx0cmV0dXJuICdzdGFydCBzbCBzYW1lLXNsbic7XG5cblx0XHRpZiAoY3VycmVudC5nZXRUaW1lKCkgPT09IHN0YXJ0LmdldFRpbWUoKSkgcmV0dXJuICdzbCBzdGFydCc7XG5cdFx0aWYgKGN1cnJlbnQuZ2V0VGltZSgpIDwgc3RhcnQuZ2V0VGltZSgpKSByZXR1cm4gJ25zbC1zdGFydCc7XG5cdFx0aWYgKGN1cnJlbnQuZ2V0VGltZSgpID09PSBlbmQuZ2V0VGltZSgpKSByZXR1cm4gJ3NsIGVuZCc7XG5cdFx0aWYgKGN1cnJlbnQuZ2V0VGltZSgpID4gZW5kLmdldFRpbWUoKSkgcmV0dXJuICduc2wtZW5kJztcblx0XHRpZiAoY3VycmVudCA+IHN0YXJ0ICYmIGN1cnJlbnQgPCBlbmQpIHJldHVybiAnc2wgcmFuZ2UnO1xuXHRcdHJldHVybiAnZGVmYXVsdCc7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9uU2VsZWN0RGF5c1JhbmdlKGNvbXBvbmVudDogRGF5Q2FsZW5kYXJDb21wb25lbnQsIGRheTogQ2FsZW5kYXJEYXRlKTogdm9pZCB7XG5cdGNvbnN0IHNlbGVjdGVkID0gY2FsZW5kYXJEYXRlVG9EYXRlKGRheSk7XG5cdGNvbnN0IGhhc0VuZCA9ICEhY29tcG9uZW50LnNlbGVjdGVkUmFuZ2VFbmQ7XG5cdGNvbnN0IGhhc1N0YXJ0ID0gISFjb21wb25lbnQuc2VsZWN0ZWRSYW5nZVN0YXJ0O1xuXHRjb25zdCBsYW5ndWFnZSA9IGNvbXBvbmVudC5hcHBlYXJhbmNlLmxhbmd1YWdlO1xuXHRjb25zdCBlbmREYXRlID0gaGFzRW5kID8gY2FsZW5kYXJEYXRlVG9EYXRlKGNvbXBvbmVudC5zZWxlY3RlZFJhbmdlRW5kKSA6IG51bGw7XG5cdGNvbnN0IHN0YXJ0RGF0ZSA9IGhhc1N0YXJ0ID8gY2FsZW5kYXJEYXRlVG9EYXRlKGNvbXBvbmVudC5zZWxlY3RlZFJhbmdlU3RhcnQpIDogbnVsbDtcblxuXHRPYmplY3QuYXNzaWduKGNvbXBvbmVudCwge1xuXHRcdG5vdGlmaWNhdGlvbjogbnVsbCxcblx0XHRlbmREYXRlRXJyb3I6ICcnLCBzdGFydERhdGVFcnJvcjogJycsXG5cdFx0ZW5kRmllbGREaXNhYmxlZDogZmFsc2UsIHN0YXJ0RmllbGREaXNhYmxlZDogZmFsc2UsXG5cdH0pO1xuXG5cdGNvbnN0IHVwZGF0ZUZpZWxkID0gKGZpZWxkOiAnc3RhcnQnIHwgJ2VuZCcpID0+IHtcblx0XHRjb21wb25lbnRbYHNlbGVjdGVkUmFuZ2Uke2ZpZWxkID09PSAnc3RhcnQnID8gJ1N0YXJ0JyA6ICdFbmQnfWBdID0gZGF5O1xuXHRcdGNvbXBvbmVudFtgJHtmaWVsZH1EYXRlRmllbGRgXS5pbnB1dFZhbHVlID0gZGF0ZVRvU3RyaW5nKHNlbGVjdGVkLCBsYW5ndWFnZSk7XG5cblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdGNvbnN0IGZvY3VzRmllbGQgPSBmaWVsZCA9PT0gJ3N0YXJ0JyA/XG5cdFx0XHRcdChjb21wb25lbnQuc2VsZWN0ZWRSYW5nZUVuZCA/ICdzdGFydCcgOiAnZW5kJykgOlxuXHRcdFx0XHQoY29tcG9uZW50LnNlbGVjdGVkUmFuZ2VTdGFydCA/ICdlbmQnIDogJ3N0YXJ0Jyk7XG5cblx0XHRcdGNvbXBvbmVudFtgJHtmb2N1c0ZpZWxkfURhdGVGaWVsZGBdLmZvY3VzKCk7XG5cdFx0XHRjb21wb25lbnRbYCR7Zm9jdXNGaWVsZH1EYXRlRmllbGRgXS5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSgxMCwgMTApO1xuXHRcdH0sIDEwMCk7XG5cdH07XG5cblx0aWYgKCFoYXNTdGFydCAmJiAhaGFzRW5kKSB7XG5cdFx0dXBkYXRlRmllbGQoY29tcG9uZW50LmZvY3VzZWQpO1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGlmIChoYXNTdGFydCAmJiAhaGFzRW5kKSB7XG5cdFx0c2VsZWN0ZWQgPj0gc3RhcnREYXRlISA/IHVwZGF0ZUZpZWxkKCdlbmQnKSA6IHVwZGF0ZUZpZWxkKCdzdGFydCcpO1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGlmICghaGFzU3RhcnQgJiYgaGFzRW5kKSB7XG5cdFx0c2VsZWN0ZWQgPCBlbmREYXRlISA/IHVwZGF0ZUZpZWxkKCdzdGFydCcpIDogdXBkYXRlRmllbGQoJ2VuZCcpO1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGlmIChoYXNTdGFydCAmJiBoYXNFbmQpIHtcblx0XHRzZWxlY3RlZCA8IHN0YXJ0RGF0ZSEgPyB1cGRhdGVGaWVsZCgnc3RhcnQnKSA6IHVwZGF0ZUZpZWxkKCdlbmQnKTtcblx0XHRyZXR1cm47XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9uQXBwbHlSYWdlRGF0ZShjb21wb25lbnQ6IERheUNhbGVuZGFyQ29tcG9uZW50KXtcbiAgICBjb25zdCBzdGFydCA9IGNhbGVuZGFyRGF0ZVRvRGF0ZShjb21wb25lbnQuc2VsZWN0ZWRSYW5nZVN0YXJ0KTtcbiAgICBjb25zdCBlbmQgPSBjYWxlbmRhckRhdGVUb0RhdGUoY29tcG9uZW50LnNlbGVjdGVkUmFuZ2VFbmQpO1xuICAgIGNvbXBvbmVudC5jYWxlbmRhclJlc3BvbnNlLmVtaXQoW3N0YXJ0LCBlbmRdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9uSG92ZXJEYXkoY29tcG9uZW50OiBEYXlDYWxlbmRhckNvbXBvbmVudCwgZGF5OiBDYWxlbmRhckRhdGUpOiB2b2lkIHtcblx0Y29uc3Qgc3RhcnRTZWxlY3RlZCA9ICEhY29tcG9uZW50LnNlbGVjdGVkUmFuZ2VTdGFydCAmJiAhY29tcG9uZW50LnNlbGVjdGVkUmFuZ2VFbmQ7XG5cdGNvbnN0IGVuZFNlbGVjdGVkID0gISFjb21wb25lbnQuc2VsZWN0ZWRSYW5nZUVuZCAmJiAhY29tcG9uZW50LnNlbGVjdGVkUmFuZ2VTdGFydDtcblx0aWYgKHN0YXJ0U2VsZWN0ZWQgfHwgZW5kU2VsZWN0ZWQpIHsgY29tcG9uZW50LmhvdmVyZWREYXkgPSBkYXk7IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9uQ2xlYXJIb3Zlcihjb21wb25lbnQ6IERheUNhbGVuZGFyQ29tcG9uZW50KTogdm9pZCB7XG5cdGNvbXBvbmVudC5ob3ZlcmVkRGF5ID0gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlYXJjaERhdGUoY29tcG9uZW50OiBEYXlDYWxlbmRhckNvbXBvbmVudCwgZGF0ZVN0cjogc3RyaW5nLCB0YXJnZXQ6ICdzdGFydCcgfCAnZW5kJyk6IHZvaWQge1xuXHRjb25zdCBpMThuID0gY29tcG9uZW50LmkxOG47XG5cdGNvbnN0IGRhdGUgPSBzdHJpbmdUb0RhdGUoZGF0ZVN0ciwgY29tcG9uZW50LmFwcGVhcmFuY2UubGFuZ3VhZ2UpO1xuXHRjb25zdCBjYWxlbmRhckRhdGUgPSBzdHJpbmdUb0NhbGVuZGFyRGF0ZShkYXRlU3RyLCBjb21wb25lbnQuYXBwZWFyYW5jZS5sYW5ndWFnZSk7XG5cdGNvbnN0IGVycm9yUHJvcCA9IHRhcmdldCA9PT0gJ3N0YXJ0JyA/ICdzdGFydERhdGVFcnJvcicgOiAnZW5kRGF0ZUVycm9yJztcblx0Y29uc3QgZmllbGQgPSB0YXJnZXQgPT09ICdzdGFydCcgPyBjb21wb25lbnQuc3RhcnREYXRlRmllbGQgOiBjb21wb25lbnQuZW5kRGF0ZUZpZWxkO1xuXHRjb25zdCBvcHBvc2l0ZURpc2FibGVkID0gdGFyZ2V0ID09PSAnc3RhcnQnID8gJ2VuZEZpZWxkRGlzYWJsZWQnIDogJ3N0YXJ0RmllbGREaXNhYmxlZCc7XG5cblx0aWYgKCFkYXRlU3RyKSB7IGNvbXBvbmVudFtvcHBvc2l0ZURpc2FibGVkXSA9IGZhbHNlOyByZXR1cm47IH1cblxuXHRpZiAoIWNhbGVuZGFyRGF0ZSkge1xuXHRcdGZpZWxkLmZvY3VzKCk7XG5cdFx0Y29tcG9uZW50W29wcG9zaXRlRGlzYWJsZWRdID0gdHJ1ZTtcblx0XHRjb21wb25lbnRbZXJyb3JQcm9wXSA9IGkxOG4uaW52YWxpZF9kYXRlO1xuXHRcdGNvbXBvbmVudC5ub3RpZmljYXRpb24gPSB7IHRleHQ6IGkxOG4uc2VsZWN0X3ZhbGlkX2RhdGUsIGVycm9yOiB0cnVlIH07XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0aWYgKCF2YWxpZGF0ZURhdGVMaW1pdHMoY29tcG9uZW50LCBkYXRlLCB0YXJnZXQpKSB7XG5cdFx0Y29tcG9uZW50W29wcG9zaXRlRGlzYWJsZWRdID0gdHJ1ZTtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCBvdGhlckNhbGVuZGFyRGF0ZSA9IHRhcmdldCA9PT0gJ3N0YXJ0JyA/IGNvbXBvbmVudC5zZWxlY3RlZFJhbmdlRW5kIDogY29tcG9uZW50LnNlbGVjdGVkUmFuZ2VTdGFydDtcblx0Y29uc3Qgb3RoZXJEYXRlID0gb3RoZXJDYWxlbmRhckRhdGUgPyBjYWxlbmRhckRhdGVUb0RhdGUob3RoZXJDYWxlbmRhckRhdGUpIDogbnVsbDtcblxuXHRpZiAoKHRhcmdldCA9PT0gJ3N0YXJ0JyAmJiBvdGhlckRhdGUgJiYgZGF0ZSA+IG90aGVyRGF0ZSkgfHxcblx0XHQodGFyZ2V0ID09PSAnZW5kJyAmJiBvdGhlckRhdGUgJiYgZGF0ZSA8IG90aGVyRGF0ZSkpIHtcblx0XHRmaWVsZC5mb2N1cygpO1xuXHRcdGNvbXBvbmVudFtvcHBvc2l0ZURpc2FibGVkXSA9IHRydWU7XG5cdFx0Y29tcG9uZW50W2Vycm9yUHJvcF0gPSBpMThuLmludmFsaWRfZGF0ZTtcblx0XHRjb21wb25lbnQubm90aWZpY2F0aW9uID0geyB0ZXh0OiB0YXJnZXQgPT09ICdzdGFydCcgPyBpMThuLnN0YXJ0X2JlZm9yZV9lbmQgOiBpMThuLmVuZF9hZnRlcl9zdGFydCwgZXJyb3I6IHRydWUgfTtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRpZiAodGFyZ2V0ID09PSAnc3RhcnQnKSB7XG5cdFx0Y29tcG9uZW50LnNlbGVjdGVkUmFuZ2VTdGFydCA9IGNhbGVuZGFyRGF0ZTtcblx0XHRpZiAoIWNvbXBvbmVudC5zZWxlY3RlZFJhbmdlRW5kKSBzZXRUaW1lb3V0KCgpID0+IGNvbXBvbmVudC5lbmREYXRlRmllbGQuZm9jdXMoKSwgMTAwKTtcblx0fSBlbHNlIHtcblx0XHRjb21wb25lbnQuc2VsZWN0ZWRSYW5nZUVuZCA9IGNhbGVuZGFyRGF0ZTtcblx0XHRpZiAoIWNvbXBvbmVudC5zZWxlY3RlZFJhbmdlU3RhcnQpIHNldFRpbWVvdXQoKCkgPT4gY29tcG9uZW50LnN0YXJ0RGF0ZUZpZWxkLmZvY3VzKCksIDEwMCk7XG5cdH1cblxuXHRjb21wb25lbnRbZXJyb3JQcm9wXSA9IG51bGw7XG5cdGNvbXBvbmVudC5jdXJyZW50RGF0ZSA9IGRhdGU7XG5cdGNvbXBvbmVudC5ub3RpZmljYXRpb24gPSBudWxsO1xuXHRjb21wb25lbnRbb3Bwb3NpdGVEaXNhYmxlZF0gPSBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRGF0ZUxpbWl0cyhjb21wb25lbnQ6IERheUNhbGVuZGFyQ29tcG9uZW50LCBkYXRlOiBEYXRlLCB0YXJnZXQ6ICdzdGFydCcgfCAnZW5kJykgOiBib29sZWFuIHtcblx0aWYgKGNvbXBvbmVudC5jb25maWcubWluRGF0ZSAmJiBkYXRlIDwgY29tcG9uZW50LmNvbmZpZy5taW5EYXRlKSB7XG5cdFx0Y29tcG9uZW50Lm5vdGlmaWNhdGlvbiA9IHsgdGV4dDogY29tcG9uZW50LmkxOG4uZGF0ZV91bmF2YWlsYWJsZSwgZXJyb3I6IHRydWUgfTtcblx0XHR0YXJnZXQgPT09ICdzdGFydCcgPyBjb21wb25lbnQuc3RhcnREYXRlRXJyb3IgPSBjb21wb25lbnQuaTE4bi5pbnZhbGlkX2RhdGUgOiBjb21wb25lbnQuZW5kRGF0ZUVycm9yID0gY29tcG9uZW50LmkxOG4uaW52YWxpZF9kYXRlO1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGlmIChjb21wb25lbnQuY29uZmlnLm1heERhdGUgJiYgZGF0ZSA+IGNvbXBvbmVudC5jb25maWcubWF4RGF0ZSkge1xuXHRcdGNvbXBvbmVudC5ub3RpZmljYXRpb24gPSB7IHRleHQ6IGNvbXBvbmVudC5pMThuLmRhdGVfdW5hdmFpbGFibGUsIGVycm9yOiB0cnVlIH07XG5cdFx0dGFyZ2V0ID09PSAnc3RhcnQnID8gY29tcG9uZW50LnN0YXJ0RGF0ZUVycm9yID0gY29tcG9uZW50LmkxOG4uaW52YWxpZF9kYXRlIDogY29tcG9uZW50LmVuZERhdGVFcnJvciA9IGNvbXBvbmVudC5pMThuLmludmFsaWRfZGF0ZTtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRyZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9uRGF0ZUtleXVwKGNvbXBvbmVudDogRGF5Q2FsZW5kYXJDb21wb25lbnQsIGV2ZW50OiBLZXlib2FyZEV2ZW50LCB0YXJnZXQ6ICdzdGFydCcgfCAnZW5kJyk6IHZvaWQge1xuXHRjb25zdCBpZ25vcmVkS2V5cyA9IFsnQXJyb3dVcCcsICdBcnJvd0Rvd24nLCAnQXJyb3dMZWZ0JywgJ0Fycm93UmlnaHQnLCAnRW50ZXInLCAnICcsICdTcGFjZWJhciddO1xuXHRpZiAoaWdub3JlZEtleXMuaW5jbHVkZXMoZXZlbnQua2V5KSkgeyByZXR1cm47IH1cblxuXHRjb25zdCBlcnJvclByb3AgPSB0YXJnZXQgPT09ICdzdGFydCcgPyAnc3RhcnREYXRlRXJyb3InIDogJ2VuZERhdGVFcnJvcic7XG5cdGNvbnN0IGRpc2FibGVkID0gdGFyZ2V0ID09PSAnc3RhcnQnID8gJ2VuZEZpZWxkRGlzYWJsZWQnIDogJ3N0YXJ0RmllbGREaXNhYmxlZCc7XG5cdGNvbnN0IGRhdGVJbnB1dCA9IHRhcmdldCA9PT0gJ3N0YXJ0JyA/IGNvbXBvbmVudC5zdGFydERhdGVGaWVsZCA6IGNvbXBvbmVudC5lbmREYXRlRmllbGQ7XG5cdGNvbnN0IHNlbGVjdGVkUmFuZ2VQcm9wID0gdGFyZ2V0ID09PSAnc3RhcnQnID8gJ3NlbGVjdGVkUmFuZ2VTdGFydCcgOiAnc2VsZWN0ZWRSYW5nZUVuZCc7XG5cblx0Y29uc3QgdmFsdWUgPSBkYXRlSW5wdXQ/LmlucHV0VmFsdWUgPz8gJyc7XG5cblx0aWYgKHZhbHVlLmxlbmd0aCA8IDEwKSB7XG5cdFx0Y29tcG9uZW50W3NlbGVjdGVkUmFuZ2VQcm9wXSA9IG51bGw7XG5cblx0XHRpZighY29tcG9uZW50Lm5vdGlmaWNhdGlvbj8uZXJyb3IpIHtcblx0XHRcdGNvbXBvbmVudC5ub3RpZmljYXRpb24gPSBudWxsO1xuXHRcdH1cblxuXHRcdGlmICh2YWx1ZS5sZW5ndGggPCAxKSB7XG5cdFx0XHRjb21wb25lbnRbZXJyb3JQcm9wXSA9ICcnO1xuXHRcdFx0Y29tcG9uZW50W2Rpc2FibGVkXSA9IGZhbHNlO1xuXHRcdFx0Y29tcG9uZW50Lm5vdGlmaWNhdGlvbiA9IG51bGw7XG5cdFx0fVxuXHR9XG5cblx0aWYgKHZhbHVlLmxlbmd0aCA+IDkpIHtcblx0XHRzZWFyY2hEYXRlKHRoaXMsIHZhbHVlLCB0YXJnZXQpO1xuXHR9XG5cbn1cbiJdfQ==