ngx-np-datepicker 2.3.3 → 2.5.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/README.md
CHANGED
|
@@ -40,9 +40,18 @@ then use `<np-datepicker [(ngModel)]="nepaliDate"></np-datepicker>` in your temp
|
|
|
40
40
|
<np-datepicker></np-datepicker>
|
|
41
41
|
```
|
|
42
42
|
|
|
43
|
-
###
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
### Date Conversion Service
|
|
44
|
+
Inject service:
|
|
45
|
+
```
|
|
46
|
+
constructor(private _nepaliDate: NpDatePickerService){}
|
|
47
|
+
```
|
|
48
|
+
Use conversion methods
|
|
49
|
+
```
|
|
50
|
+
//string_date = 2025-05-27
|
|
51
|
+
const nepaliDate1 = this._nepaliDate.engStringToNepDate(string_date);
|
|
52
|
+
const nepalidate2 = this._nepaliDate.engToNepDate(day, month, year);
|
|
53
|
+
const englishdate = this._nepaliDate.nepToEngDate(day, month, year);
|
|
54
|
+
```
|
|
46
55
|
|
|
47
56
|
### Format
|
|
48
57
|
|
|
@@ -55,4 +64,5 @@ MIT License
|
|
|
55
64
|
### 🔍 Key Fixes:
|
|
56
65
|
|
|
57
66
|
- Fixed date issues related to BS 2081 and 2082.
|
|
58
|
-
- Module import bug fixed.
|
|
67
|
+
- Module import bug fixed.
|
|
68
|
+
- minor styles updated.
|
|
@@ -243,7 +243,7 @@ NpDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
243
243
|
useExisting: forwardRef(() => NpDatePickerComponent),
|
|
244
244
|
multi: true,
|
|
245
245
|
},
|
|
246
|
-
], ngImport: i0, template: "<div class=\"nepali-date-picker\" [ngClass]=\"theme\">\r\n <input\r\n class=\"ngx_np_datepicker_input\"\r\n type=\"text\"\r\n [value]=\"formattedDate\"\r\n (focus)=\"open()\"\r\n (keydown)=\"$event.preventDefault()\"\r\n aria-hidden=\"true\"\r\n placeholder=\"yyyy/mm/dd\"\r\n />\r\n <a\r\n class=\"form-icon\"\r\n (click)=\"toggleOpen()\"\r\n [ngClass]=\"isOpen ? 'active' : ''\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path\r\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\r\n />\r\n </svg>\r\n </a>\r\n <ng-container [ngTemplateOutlet]=\"npdp\" *ngIf=\"isOpen\"></ng-container>\r\n</div>\r\n<ng-template #npdp>\r\n <div class=\"datepicker__container\">\r\n <div class=\"datepicker__options-container\">\r\n <a class=\"prev-month\" (click)=\"prevMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\"\r\n />\r\n </svg>\r\n </a>\r\n <a class=\"select-today\" (click)=\"selectToday()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-home\"><path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"></path><polyline points=\"9 22 9 12 15 12 15 22\"></polyline></svg>\r\n </a>\r\n <span class=\"datepicker__options-month-container\">\r\n \r\n <select (change)=\"selectMonth($event)\">\r\n <option\r\n *ngFor=\"\r\n let month of monthsMapping[language][monthDisplayType];\r\n index as i\r\n \"\r\n [value]=\"month\"\r\n [selected]=\"i === currentNepaliDate?.month\"\r\n >\r\n {{ month }}\r\n </option>\r\n </select>\r\n </span>\r\n <span class=\"datepicker__options-year-container\">\r\n \r\n <select (change)=\"selectYear($event)\">\r\n <option\r\n *ngFor=\"let year of years; index as i\"\r\n [value]=\"year\"\r\n [selected]=\"year == currentNepaliDate?.year\"\r\n >\r\n {{ year | toNp: language:\"number\" }}\r\n </option>\r\n </select>\r\n </span>\r\n \r\n <a class=\"next-month\" (click)=\"nextMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\"\r\n />\r\n </svg>\r\n </a>\r\n </div>\r\n <div class=\"datepicker__days-container\">\r\n <div\r\n class=\"datepicker__days\"\r\n *ngFor=\"let day of daysMapping[language][dayDisplayType]; index as i\"\r\n >\r\n <div class=\"datepicker__weekday\">{{ day }}</div>\r\n <div\r\n class=\"datepicker__date-container\"\r\n *ngFor=\"let date of currentMonthData[i]\"\r\n >\r\n <div *ngIf=\"hasFuture; else noFutureDate\">\r\n <div\r\n *ngIf=\"date\"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === selectedDate?.day &&\r\n currentNepaliDate.month === selectedDate?.month &&\r\n currentNepaliDate.year === selectedDate?.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language:\"number\" }}\r\n </div>\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span> </span>\r\n </div>\r\n </div>\r\n\r\n <ng-template #noFutureDate>\r\n <div\r\n *ngIf=\"\r\n date &&\r\n this.currentNepaliDate.year * 365 +\r\n this.currentNepaliDate.month * 30 +\r\n date <=\r\n nepaliDateToday.day +\r\n nepaliDateToday.month * 30 +\r\n nepaliDateToday.year * 365;\r\n else disabledDates\r\n \"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === selectedDate?.day &&\r\n currentNepaliDate.month === selectedDate?.month &&\r\n currentNepaliDate.year === selectedDate?.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language:\"number\" }}\r\n </div>\r\n\r\n <ng-template #disabledDates>\r\n <div class=\"datepicker__date datepicker__date--disabled\">\r\n {{ date | toNp: language:\"number\" }}\r\n </div>\r\n </ng-template>\r\n\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span> </span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <!--.datepicker__date-container ends-->\r\n </div>\r\n <!--.datepicker__days ends-->\r\n </div>\r\n <!--.datepicker__days-container ends-->\r\n </div>\r\n <!--.datepicker__container ends-->\r\n</ng-template>\r\n", styles: [".nepali-date-picker.nepali-date-picker{position:relative;display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:1em}.nepali-date-picker a.active svg{fill:#337ab7;opacity:.9}.nepali-date-picker .form-icon svg{width:14px;opacity:.3;position:absolute;right:8px;top:12px;cursor:pointer}.datepicker__container{border:1px solid #eee;background:#fff;width:294px;box-shadow:#0a0a0f33 0 7px 29px;position:absolute;z-index:99999}.datepicker__options-container{padding:12px 5px;border-bottom:1px solid #eee;display:flex;justify-content:space-evenly;background-color:#337ab7;color:#fff;line-height:25px;font-size:1em}.datepicker__days-container{display:flex;justify-content:center;color:#777}.datepicker__days{text-align:center;padding-bottom:10px}.datepicker__weekday{padding:8px;font-weight:700;border-bottom:1px solid #eee;margin-bottom:14px}.datepicker__date-container{width:40px;height:40px;line-height:40px;margin:8px 0}.datepicker__date-container>div{height:100%}.datepicker__date{cursor:pointer;border-radius:4px}.datepicker__date:hover{background-color:#eee}.datepicker__date.datepicker__date--disabled{background:#f3f3f3;border-radius:0}.datepicker__date.datepicker__date--disabled:hover{background:#f3f3f3}.datepicker__date--active.datepicker__date--active{background-color:#337ab7;color:#fff}select:focus,select:focus-visible{outline:1px solid #fff}.datepicker__container select{border:none;color:#fff;background:none;font-size:inherit}select option{color:#333}.ngx_np_datepicker_input{border:1px solid #eee;padding:10px;font-size:16px;color:#777}.ngx_np_datepicker_input:focus-visible{outline:2px solid #337ab7}.prev-month,.next-month{padding:0;width:25px;height:25px;display:block;opacity:.5;border-radius:50%;background:#f3f3f3;cursor:pointer;text-align:center;line-height:23px}.next-month:hover,.prev-month:hover{background:#ccc}.prev-month svg,.next-month svg{max-width:8px;height:auto}.select-today{padding:0;width:22px;height:22px;display:block;cursor:pointer;color:#ffffffe6;text-align:center;line-height:23px}.select-today:hover{color:#ffffff80}.select-today svg{max-width:100%}.dark.nepali-date-picker a.active svg{fill:#000}.dark .datepicker__options-container{border-bottom:1px solid #000;background-color:#000;color:#fff}.dark .datepicker__container{background:#333}.dark select{color:#fff}.datepicker__date--current-day{background-color:#f3f3f3;border:2px dashed rgba(0,0,0,.2);position:relative;z-index:999;height:100%}.dark .datepicker__date--active.datepicker__date--active{background-color:#000;color:#fff}.dark .ngx_np_datepicker_input:focus-visible{outline:2px solid #000}.dark .datepicker__days{background-color:#333}.dark .datepicker__date:hover{background-color:#222;color:#fff}.dark .datepicker__days-container{color:#aaa}.dark .datepicker__weekday{border-bottom:1px solid #555}.dark .datepicker__date--current-day{background:#555;border:none}.light.nepali-date-picker a.active svg{fill:#777}.light .datepicker__options-container{border-bottom:none;background-color:#fff;color:#777}.light select{color:#777}.light .datepicker__date--active.datepicker__date--active{background-color:#aaa;color:#fff}.light .ngx_np_datepicker_input:focus-visible{outline:1px solid #ddd}.lightblue.nepali-date-picker a.active svg{fill:#38c5f0da}.lightblue .datepicker__options-container{background-color:#38c5f0da;color:#fff}.lightblue select{color:#fff}.lightblue .datepicker__date--active.datepicker__date--active{background-color:#38c5f0da;color:#fff}.lightblue .ngx_np_datepicker_input:focus-visible{outline:2px solid #38c5f0da}.lightblue .ngx_np_datepicker_input:focus-visible{outline:1px solid #38c5f0da}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], pipes: { "toNp": i4.ToNpPipe }, encapsulation: i0.ViewEncapsulation.None });
|
|
246
|
+
], ngImport: i0, template: "<div class=\"nepali-date-picker\" [ngClass]=\"theme\">\r\n <input\r\n class=\"ngx_np_datepicker_input\"\r\n type=\"text\"\r\n [value]=\"formattedDate\"\r\n (focus)=\"open()\"\r\n (keydown)=\"$event.preventDefault()\"\r\n placeholder=\"yyyy/mm/dd\"\r\n />\r\n <a\r\n class=\"form-icon\"\r\n (click)=\"toggleOpen()\"\r\n [ngClass]=\"isOpen ? 'active' : ''\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path\r\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\r\n />\r\n </svg>\r\n </a>\r\n <ng-container [ngTemplateOutlet]=\"npdp\" *ngIf=\"isOpen\"></ng-container>\r\n</div>\r\n<ng-template #npdp>\r\n <div class=\"datepicker__container\">\r\n <div class=\"datepicker__options-container\">\r\n <a class=\"prev-month\" (click)=\"prevMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\"\r\n />\r\n </svg>\r\n </a>\r\n <a class=\"select-today\" (click)=\"selectToday()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-home\"><path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"></path><polyline points=\"9 22 9 12 15 12 15 22\"></polyline></svg>\r\n </a>\r\n <span class=\"datepicker__options-month-container\">\r\n \r\n <select (change)=\"selectMonth($event)\">\r\n <option\r\n *ngFor=\"\r\n let month of monthsMapping[language][monthDisplayType];\r\n index as i\r\n \"\r\n [value]=\"month\"\r\n [selected]=\"i === currentNepaliDate?.month\"\r\n >\r\n {{ month }}\r\n </option>\r\n </select>\r\n </span>\r\n <span class=\"datepicker__options-year-container\">\r\n \r\n <select (change)=\"selectYear($event)\">\r\n <option\r\n *ngFor=\"let year of years; index as i\"\r\n [value]=\"year\"\r\n [selected]=\"year == currentNepaliDate?.year\"\r\n >\r\n {{ year | toNp: language:\"number\" }}\r\n </option>\r\n </select>\r\n </span>\r\n \r\n <a class=\"next-month\" (click)=\"nextMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\"\r\n />\r\n </svg>\r\n </a>\r\n </div>\r\n <div class=\"datepicker__days-container\">\r\n <div\r\n class=\"datepicker__days\"\r\n *ngFor=\"let day of daysMapping[language][dayDisplayType]; index as i\"\r\n >\r\n <div class=\"datepicker__weekday\">{{ day }}</div>\r\n <div\r\n class=\"datepicker__date-container\"\r\n *ngFor=\"let date of currentMonthData[i]\"\r\n >\r\n <div *ngIf=\"hasFuture; else noFutureDate\">\r\n <div\r\n *ngIf=\"date\"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === selectedDate?.day &&\r\n currentNepaliDate.month === selectedDate?.month &&\r\n currentNepaliDate.year === selectedDate?.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language:\"number\" }}\r\n </div>\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span> </span>\r\n </div>\r\n </div>\r\n\r\n <ng-template #noFutureDate>\r\n <div\r\n *ngIf=\"\r\n date &&\r\n this.currentNepaliDate.year * 365 +\r\n this.currentNepaliDate.month * 30 +\r\n date <=\r\n nepaliDateToday.day +\r\n nepaliDateToday.month * 30 +\r\n nepaliDateToday.year * 365;\r\n else disabledDates\r\n \"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === selectedDate?.day &&\r\n currentNepaliDate.month === selectedDate?.month &&\r\n currentNepaliDate.year === selectedDate?.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language:\"number\" }}\r\n </div>\r\n\r\n <ng-template #disabledDates>\r\n <div class=\"datepicker__date datepicker__date--disabled\">\r\n {{ date | toNp: language:\"number\" }}\r\n </div>\r\n </ng-template>\r\n\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span> </span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <!--.datepicker__date-container ends-->\r\n </div>\r\n <!--.datepicker__days ends-->\r\n </div>\r\n <!--.datepicker__days-container ends-->\r\n </div>\r\n <!--.datepicker__container ends-->\r\n</ng-template>\r\n", styles: [".nepali-date-picker.nepali-date-picker{position:relative;display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:1em}.nepali-date-picker a.active svg{fill:#337ab7;opacity:.9}.nepali-date-picker .form-icon svg{width:14px;opacity:.3;position:absolute;right:8px;top:12px;cursor:pointer}.datepicker__container{border:1px solid #eee;background:#fff;width:294px;box-shadow:#0a0a0f33 0 7px 29px;position:absolute;z-index:99999}.datepicker__options-container{padding:12px 5px;border-bottom:1px solid #eee;display:flex;justify-content:space-evenly;background-color:#337ab7;color:#fff;line-height:25px;font-size:1em}.datepicker__days-container{display:flex;justify-content:center;color:#777}.datepicker__days{text-align:center;padding-bottom:10px}.datepicker__weekday{padding:8px;font-weight:700;border-bottom:1px solid #eee;margin-bottom:0}.datepicker__date-container{width:40px;height:40px;line-height:40px;margin:0}.datepicker__date-container>div{height:100%}.datepicker__date{cursor:pointer;border-radius:4px}.datepicker__date:hover{background-color:#eee}.datepicker__date.datepicker__date--disabled{background:#f3f3f3;border-radius:0}.datepicker__date.datepicker__date--disabled:hover{background:#f3f3f3}.datepicker__date--active.datepicker__date--active{background-color:#337ab7;color:#fff}select:focus,select:focus-visible{outline:1px solid #fff}.datepicker__container select{border:none;color:#fff;background:none;font-size:inherit}select option{color:#333}.ngx_np_datepicker_input{border:1px solid #eee;padding:10px;font-size:16px;color:#777}.ngx_np_datepicker_input:focus-visible{outline:2px solid #337ab7}.prev-month,.next-month{padding:0;width:25px;height:25px;display:block;opacity:.5;border-radius:50%;background:#f3f3f3;cursor:pointer;text-align:center;line-height:23px}.next-month:hover,.prev-month:hover{background:#ccc}.prev-month svg,.next-month svg{max-width:8px;height:auto}.select-today{padding:0;width:22px;height:22px;display:block;cursor:pointer;color:#ffffffe6;text-align:center;line-height:23px}.select-today:hover{color:#ffffff80}.select-today svg{max-width:100%}.dark.nepali-date-picker a.active svg{fill:#000}.dark .datepicker__options-container{border-bottom:1px solid #000;background-color:#000;color:#fff}.dark .datepicker__container{background:#333}.dark select{color:#fff}.datepicker__date--current-day{background-color:#f3f3f3;border:2px dashed rgba(0,0,0,.2);position:relative;z-index:999;height:100%}.dark .datepicker__date--active.datepicker__date--active{background-color:#000;color:#fff}.dark .ngx_np_datepicker_input:focus-visible{outline:2px solid #000}.dark .datepicker__days{background-color:#333}.dark .datepicker__date:hover{background-color:#222;color:#fff}.dark .datepicker__days-container{color:#aaa}.dark .datepicker__weekday{border-bottom:1px solid #555}.dark .datepicker__date--current-day{background:#555;border:none}.light.nepali-date-picker a.active svg{fill:#777}.light .datepicker__options-container{border-bottom:none;background-color:#fff;color:#777}.light select{color:#777}.light .datepicker__date--active.datepicker__date--active{background-color:#aaa;color:#fff}.light .ngx_np_datepicker_input:focus-visible{outline:1px solid #ddd}.lightblue.nepali-date-picker a.active svg{fill:#38c5f0da}.lightblue .datepicker__options-container{background-color:#38c5f0da;color:#fff}.lightblue select{color:#fff}.lightblue .datepicker__date--active.datepicker__date--active{background-color:#38c5f0da;color:#fff}.lightblue .ngx_np_datepicker_input:focus-visible{outline:2px solid #38c5f0da}.lightblue .ngx_np_datepicker_input:focus-visible{outline:1px solid #38c5f0da}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], pipes: { "toNp": i4.ToNpPipe }, encapsulation: i0.ViewEncapsulation.None });
|
|
247
247
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: NpDatePickerComponent, decorators: [{
|
|
248
248
|
type: Component,
|
|
249
249
|
args: [{ selector: 'np-datepicker', providers: [
|
|
@@ -252,7 +252,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
|
|
|
252
252
|
useExisting: forwardRef(() => NpDatePickerComponent),
|
|
253
253
|
multi: true,
|
|
254
254
|
},
|
|
255
|
-
], encapsulation: ViewEncapsulation.None, template: "<div class=\"nepali-date-picker\" [ngClass]=\"theme\">\r\n <input\r\n class=\"ngx_np_datepicker_input\"\r\n type=\"text\"\r\n [value]=\"formattedDate\"\r\n (focus)=\"open()\"\r\n (keydown)=\"$event.preventDefault()\"\r\n aria-hidden=\"true\"\r\n placeholder=\"yyyy/mm/dd\"\r\n />\r\n <a\r\n class=\"form-icon\"\r\n (click)=\"toggleOpen()\"\r\n [ngClass]=\"isOpen ? 'active' : ''\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path\r\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\r\n />\r\n </svg>\r\n </a>\r\n <ng-container [ngTemplateOutlet]=\"npdp\" *ngIf=\"isOpen\"></ng-container>\r\n</div>\r\n<ng-template #npdp>\r\n <div class=\"datepicker__container\">\r\n <div class=\"datepicker__options-container\">\r\n <a class=\"prev-month\" (click)=\"prevMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\"\r\n />\r\n </svg>\r\n </a>\r\n <a class=\"select-today\" (click)=\"selectToday()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-home\"><path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"></path><polyline points=\"9 22 9 12 15 12 15 22\"></polyline></svg>\r\n </a>\r\n <span class=\"datepicker__options-month-container\">\r\n \r\n <select (change)=\"selectMonth($event)\">\r\n <option\r\n *ngFor=\"\r\n let month of monthsMapping[language][monthDisplayType];\r\n index as i\r\n \"\r\n [value]=\"month\"\r\n [selected]=\"i === currentNepaliDate?.month\"\r\n >\r\n {{ month }}\r\n </option>\r\n </select>\r\n </span>\r\n <span class=\"datepicker__options-year-container\">\r\n \r\n <select (change)=\"selectYear($event)\">\r\n <option\r\n *ngFor=\"let year of years; index as i\"\r\n [value]=\"year\"\r\n [selected]=\"year == currentNepaliDate?.year\"\r\n >\r\n {{ year | toNp: language:\"number\" }}\r\n </option>\r\n </select>\r\n </span>\r\n \r\n <a class=\"next-month\" (click)=\"nextMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\"\r\n />\r\n </svg>\r\n </a>\r\n </div>\r\n <div class=\"datepicker__days-container\">\r\n <div\r\n class=\"datepicker__days\"\r\n *ngFor=\"let day of daysMapping[language][dayDisplayType]; index as i\"\r\n >\r\n <div class=\"datepicker__weekday\">{{ day }}</div>\r\n <div\r\n class=\"datepicker__date-container\"\r\n *ngFor=\"let date of currentMonthData[i]\"\r\n >\r\n <div *ngIf=\"hasFuture; else noFutureDate\">\r\n <div\r\n *ngIf=\"date\"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === selectedDate?.day &&\r\n currentNepaliDate.month === selectedDate?.month &&\r\n currentNepaliDate.year === selectedDate?.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language:\"number\" }}\r\n </div>\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span> </span>\r\n </div>\r\n </div>\r\n\r\n <ng-template #noFutureDate>\r\n <div\r\n *ngIf=\"\r\n date &&\r\n this.currentNepaliDate.year * 365 +\r\n this.currentNepaliDate.month * 30 +\r\n date <=\r\n nepaliDateToday.day +\r\n nepaliDateToday.month * 30 +\r\n nepaliDateToday.year * 365;\r\n else disabledDates\r\n \"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === selectedDate?.day &&\r\n currentNepaliDate.month === selectedDate?.month &&\r\n currentNepaliDate.year === selectedDate?.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language:\"number\" }}\r\n </div>\r\n\r\n <ng-template #disabledDates>\r\n <div class=\"datepicker__date datepicker__date--disabled\">\r\n {{ date | toNp: language:\"number\" }}\r\n </div>\r\n </ng-template>\r\n\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span> </span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <!--.datepicker__date-container ends-->\r\n </div>\r\n <!--.datepicker__days ends-->\r\n </div>\r\n <!--.datepicker__days-container ends-->\r\n </div>\r\n <!--.datepicker__container ends-->\r\n</ng-template>\r\n", styles: [".nepali-date-picker.nepali-date-picker{position:relative;display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:1em}.nepali-date-picker a.active svg{fill:#337ab7;opacity:.9}.nepali-date-picker .form-icon svg{width:14px;opacity:.3;position:absolute;right:8px;top:12px;cursor:pointer}.datepicker__container{border:1px solid #eee;background:#fff;width:294px;box-shadow:#0a0a0f33 0 7px 29px;position:absolute;z-index:99999}.datepicker__options-container{padding:12px 5px;border-bottom:1px solid #eee;display:flex;justify-content:space-evenly;background-color:#337ab7;color:#fff;line-height:25px;font-size:1em}.datepicker__days-container{display:flex;justify-content:center;color:#777}.datepicker__days{text-align:center;padding-bottom:10px}.datepicker__weekday{padding:8px;font-weight:700;border-bottom:1px solid #eee;margin-bottom:14px}.datepicker__date-container{width:40px;height:40px;line-height:40px;margin:8px 0}.datepicker__date-container>div{height:100%}.datepicker__date{cursor:pointer;border-radius:4px}.datepicker__date:hover{background-color:#eee}.datepicker__date.datepicker__date--disabled{background:#f3f3f3;border-radius:0}.datepicker__date.datepicker__date--disabled:hover{background:#f3f3f3}.datepicker__date--active.datepicker__date--active{background-color:#337ab7;color:#fff}select:focus,select:focus-visible{outline:1px solid #fff}.datepicker__container select{border:none;color:#fff;background:none;font-size:inherit}select option{color:#333}.ngx_np_datepicker_input{border:1px solid #eee;padding:10px;font-size:16px;color:#777}.ngx_np_datepicker_input:focus-visible{outline:2px solid #337ab7}.prev-month,.next-month{padding:0;width:25px;height:25px;display:block;opacity:.5;border-radius:50%;background:#f3f3f3;cursor:pointer;text-align:center;line-height:23px}.next-month:hover,.prev-month:hover{background:#ccc}.prev-month svg,.next-month svg{max-width:8px;height:auto}.select-today{padding:0;width:22px;height:22px;display:block;cursor:pointer;color:#ffffffe6;text-align:center;line-height:23px}.select-today:hover{color:#ffffff80}.select-today svg{max-width:100%}.dark.nepali-date-picker a.active svg{fill:#000}.dark .datepicker__options-container{border-bottom:1px solid #000;background-color:#000;color:#fff}.dark .datepicker__container{background:#333}.dark select{color:#fff}.datepicker__date--current-day{background-color:#f3f3f3;border:2px dashed rgba(0,0,0,.2);position:relative;z-index:999;height:100%}.dark .datepicker__date--active.datepicker__date--active{background-color:#000;color:#fff}.dark .ngx_np_datepicker_input:focus-visible{outline:2px solid #000}.dark .datepicker__days{background-color:#333}.dark .datepicker__date:hover{background-color:#222;color:#fff}.dark .datepicker__days-container{color:#aaa}.dark .datepicker__weekday{border-bottom:1px solid #555}.dark .datepicker__date--current-day{background:#555;border:none}.light.nepali-date-picker a.active svg{fill:#777}.light .datepicker__options-container{border-bottom:none;background-color:#fff;color:#777}.light select{color:#777}.light .datepicker__date--active.datepicker__date--active{background-color:#aaa;color:#fff}.light .ngx_np_datepicker_input:focus-visible{outline:1px solid #ddd}.lightblue.nepali-date-picker a.active svg{fill:#38c5f0da}.lightblue .datepicker__options-container{background-color:#38c5f0da;color:#fff}.lightblue select{color:#fff}.lightblue .datepicker__date--active.datepicker__date--active{background-color:#38c5f0da;color:#fff}.lightblue .ngx_np_datepicker_input:focus-visible{outline:2px solid #38c5f0da}.lightblue .ngx_np_datepicker_input:focus-visible{outline:1px solid #38c5f0da}\n"] }]
|
|
255
|
+
], encapsulation: ViewEncapsulation.None, template: "<div class=\"nepali-date-picker\" [ngClass]=\"theme\">\r\n <input\r\n class=\"ngx_np_datepicker_input\"\r\n type=\"text\"\r\n [value]=\"formattedDate\"\r\n (focus)=\"open()\"\r\n (keydown)=\"$event.preventDefault()\"\r\n placeholder=\"yyyy/mm/dd\"\r\n />\r\n <a\r\n class=\"form-icon\"\r\n (click)=\"toggleOpen()\"\r\n [ngClass]=\"isOpen ? 'active' : ''\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path\r\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\r\n />\r\n </svg>\r\n </a>\r\n <ng-container [ngTemplateOutlet]=\"npdp\" *ngIf=\"isOpen\"></ng-container>\r\n</div>\r\n<ng-template #npdp>\r\n <div class=\"datepicker__container\">\r\n <div class=\"datepicker__options-container\">\r\n <a class=\"prev-month\" (click)=\"prevMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\"\r\n />\r\n </svg>\r\n </a>\r\n <a class=\"select-today\" (click)=\"selectToday()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-home\"><path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"></path><polyline points=\"9 22 9 12 15 12 15 22\"></polyline></svg>\r\n </a>\r\n <span class=\"datepicker__options-month-container\">\r\n \r\n <select (change)=\"selectMonth($event)\">\r\n <option\r\n *ngFor=\"\r\n let month of monthsMapping[language][monthDisplayType];\r\n index as i\r\n \"\r\n [value]=\"month\"\r\n [selected]=\"i === currentNepaliDate?.month\"\r\n >\r\n {{ month }}\r\n </option>\r\n </select>\r\n </span>\r\n <span class=\"datepicker__options-year-container\">\r\n \r\n <select (change)=\"selectYear($event)\">\r\n <option\r\n *ngFor=\"let year of years; index as i\"\r\n [value]=\"year\"\r\n [selected]=\"year == currentNepaliDate?.year\"\r\n >\r\n {{ year | toNp: language:\"number\" }}\r\n </option>\r\n </select>\r\n </span>\r\n \r\n <a class=\"next-month\" (click)=\"nextMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\"\r\n />\r\n </svg>\r\n </a>\r\n </div>\r\n <div class=\"datepicker__days-container\">\r\n <div\r\n class=\"datepicker__days\"\r\n *ngFor=\"let day of daysMapping[language][dayDisplayType]; index as i\"\r\n >\r\n <div class=\"datepicker__weekday\">{{ day }}</div>\r\n <div\r\n class=\"datepicker__date-container\"\r\n *ngFor=\"let date of currentMonthData[i]\"\r\n >\r\n <div *ngIf=\"hasFuture; else noFutureDate\">\r\n <div\r\n *ngIf=\"date\"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === selectedDate?.day &&\r\n currentNepaliDate.month === selectedDate?.month &&\r\n currentNepaliDate.year === selectedDate?.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language:\"number\" }}\r\n </div>\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span> </span>\r\n </div>\r\n </div>\r\n\r\n <ng-template #noFutureDate>\r\n <div\r\n *ngIf=\"\r\n date &&\r\n this.currentNepaliDate.year * 365 +\r\n this.currentNepaliDate.month * 30 +\r\n date <=\r\n nepaliDateToday.day +\r\n nepaliDateToday.month * 30 +\r\n nepaliDateToday.year * 365;\r\n else disabledDates\r\n \"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === selectedDate?.day &&\r\n currentNepaliDate.month === selectedDate?.month &&\r\n currentNepaliDate.year === selectedDate?.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language:\"number\" }}\r\n </div>\r\n\r\n <ng-template #disabledDates>\r\n <div class=\"datepicker__date datepicker__date--disabled\">\r\n {{ date | toNp: language:\"number\" }}\r\n </div>\r\n </ng-template>\r\n\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span> </span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <!--.datepicker__date-container ends-->\r\n </div>\r\n <!--.datepicker__days ends-->\r\n </div>\r\n <!--.datepicker__days-container ends-->\r\n </div>\r\n <!--.datepicker__container ends-->\r\n</ng-template>\r\n", styles: [".nepali-date-picker.nepali-date-picker{position:relative;display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:1em}.nepali-date-picker a.active svg{fill:#337ab7;opacity:.9}.nepali-date-picker .form-icon svg{width:14px;opacity:.3;position:absolute;right:8px;top:12px;cursor:pointer}.datepicker__container{border:1px solid #eee;background:#fff;width:294px;box-shadow:#0a0a0f33 0 7px 29px;position:absolute;z-index:99999}.datepicker__options-container{padding:12px 5px;border-bottom:1px solid #eee;display:flex;justify-content:space-evenly;background-color:#337ab7;color:#fff;line-height:25px;font-size:1em}.datepicker__days-container{display:flex;justify-content:center;color:#777}.datepicker__days{text-align:center;padding-bottom:10px}.datepicker__weekday{padding:8px;font-weight:700;border-bottom:1px solid #eee;margin-bottom:0}.datepicker__date-container{width:40px;height:40px;line-height:40px;margin:0}.datepicker__date-container>div{height:100%}.datepicker__date{cursor:pointer;border-radius:4px}.datepicker__date:hover{background-color:#eee}.datepicker__date.datepicker__date--disabled{background:#f3f3f3;border-radius:0}.datepicker__date.datepicker__date--disabled:hover{background:#f3f3f3}.datepicker__date--active.datepicker__date--active{background-color:#337ab7;color:#fff}select:focus,select:focus-visible{outline:1px solid #fff}.datepicker__container select{border:none;color:#fff;background:none;font-size:inherit}select option{color:#333}.ngx_np_datepicker_input{border:1px solid #eee;padding:10px;font-size:16px;color:#777}.ngx_np_datepicker_input:focus-visible{outline:2px solid #337ab7}.prev-month,.next-month{padding:0;width:25px;height:25px;display:block;opacity:.5;border-radius:50%;background:#f3f3f3;cursor:pointer;text-align:center;line-height:23px}.next-month:hover,.prev-month:hover{background:#ccc}.prev-month svg,.next-month svg{max-width:8px;height:auto}.select-today{padding:0;width:22px;height:22px;display:block;cursor:pointer;color:#ffffffe6;text-align:center;line-height:23px}.select-today:hover{color:#ffffff80}.select-today svg{max-width:100%}.dark.nepali-date-picker a.active svg{fill:#000}.dark .datepicker__options-container{border-bottom:1px solid #000;background-color:#000;color:#fff}.dark .datepicker__container{background:#333}.dark select{color:#fff}.datepicker__date--current-day{background-color:#f3f3f3;border:2px dashed rgba(0,0,0,.2);position:relative;z-index:999;height:100%}.dark .datepicker__date--active.datepicker__date--active{background-color:#000;color:#fff}.dark .ngx_np_datepicker_input:focus-visible{outline:2px solid #000}.dark .datepicker__days{background-color:#333}.dark .datepicker__date:hover{background-color:#222;color:#fff}.dark .datepicker__days-container{color:#aaa}.dark .datepicker__weekday{border-bottom:1px solid #555}.dark .datepicker__date--current-day{background:#555;border:none}.light.nepali-date-picker a.active svg{fill:#777}.light .datepicker__options-container{border-bottom:none;background-color:#fff;color:#777}.light select{color:#777}.light .datepicker__date--active.datepicker__date--active{background-color:#aaa;color:#fff}.light .ngx_np_datepicker_input:focus-visible{outline:1px solid #ddd}.lightblue.nepali-date-picker a.active svg{fill:#38c5f0da}.lightblue .datepicker__options-container{background-color:#38c5f0da;color:#fff}.lightblue select{color:#fff}.lightblue .datepicker__date--active.datepicker__date--active{background-color:#38c5f0da;color:#fff}.lightblue .ngx_np_datepicker_input:focus-visible{outline:2px solid #38c5f0da}.lightblue .ngx_np_datepicker_input:focus-visible{outline:1px solid #38c5f0da}\n"] }]
|
|
256
256
|
}], ctorParameters: function () { return [{ type: i1.NpDatePickerService }, { type: i0.ElementRef }]; }, propDecorators: { theme: [{
|
|
257
257
|
type: Input
|
|
258
258
|
}], language: [{
|
|
@@ -265,4 +265,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
|
|
|
265
265
|
type: HostListener,
|
|
266
266
|
args: ['document:click', ['$event']]
|
|
267
267
|
}] } });
|
|
268
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnAtZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ucHgtbnAtZGF0ZXBpY2tlci9zcmMvbGliL25wLWRhdGVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbnB4LW5wLWRhdGVwaWNrZXIvc3JjL2xpYi9ucC1kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFHWixLQUFLLEVBQ0wsVUFBVSxFQUNWLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFTekUsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7OztBQWV2RCxNQUFNLE9BQU8scUJBQXFCO0lBMkRoQyxZQUNTLFdBQWdDLEVBQy9CLElBQWdCO1FBRGpCLGdCQUFXLEdBQVgsV0FBVyxDQUFxQjtRQUMvQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBNUQxQixvQkFBZSxHQUFlLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUM1RCxzQkFBaUIsR0FBZSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFFOUQsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFLbkIsVUFBSyxHQUFhLEVBQUUsQ0FBQztRQUlyQixnQkFBVyxHQUFnQixXQUFXLENBQUM7UUFFdkMsa0JBQWEsR0FBaUIsYUFBYSxDQUFDO1FBRTVDLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFZixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGtCQUFhLEdBQUcs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QyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgT25Jbml0LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgZm9yd2FyZFJlZixcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTnBEYXRlUGlja2VyU2VydmljZSB9IGZyb20gJy4vbnAtZGF0ZXBpY2tlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHtcclxuICBOZXBhbGlEYXRlLFxyXG4gIE1vbnRoRGF0YSxcclxuICBEYXlzTWFwcGluZyxcclxuICBNb250aE1hcHBpbmcsXHJcbiAgRGF0ZUZvcm1hdHRlcixcclxufSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHsgZGF5c01hcHBpbmcsIG1vbnRoc01hcHBpbmcgfSBmcm9tICcuL21hcHBpbmcnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICducC1kYXRlcGlja2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbnAtZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25wLWRhdGUtcGlja2VyLmNvbXBvbmVudC5jc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE5wRGF0ZVBpY2tlckNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOcERhdGVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBuZXBhbGlEYXRlVG9kYXk6IE5lcGFsaURhdGUgPSB7IGRheTogMCwgbW9udGg6IDAsIHllYXI6IDAgfTtcclxuICBjdXJyZW50TmVwYWxpRGF0ZTogTmVwYWxpRGF0ZSA9IHsgZGF5OiAwLCBtb250aDogMCwgeWVhcjogMCB9O1xyXG4gIHNlbGVjdGVkRGF0ZSE6IE5lcGFsaURhdGU7XHJcbiAgZm9ybWF0dGVkRGF0ZSA9ICcnO1xyXG4gIGN1cnJlbnREYXRlOiBhbnk7XHJcblxyXG4gIGRpc3BsYXlEYXRlITogc3RyaW5nO1xyXG5cclxuICB5ZWFyczogbnVtYmVyW10gPSBbXTtcclxuXHJcbiAgY3VycmVudE1vbnRoRGF0YSE6IGFueTtcclxuXHJcbiAgZGF5c01hcHBpbmc6IERheXNNYXBwaW5nID0gZGF5c01hcHBpbmc7XHJcblxyXG4gIG1vbnRoc01hcHBpbmc6IE1vbnRoTWFwcGluZyA9IG1vbnRoc01hcHBpbmc7XHJcblxyXG4gIGlzT3BlbiA9IGZhbHNlO1xyXG5cclxuICBoaWRlSW5wdXQgPSBmYWxzZTtcclxuXHJcbiAgYWx3YXlzVmlzaWJsZSA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHRoZW1lITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgbGFuZ3VhZ2U6ICdlbicgfCAnbmUnID0gJ25lJztcclxuICBASW5wdXQoKSBoYXNGdXR1cmU6IEJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGZvcm1hdDogc3RyaW5nID0gJ3l5LW1tLWRkJztcclxuXHJcbiAgbW9udGhEaXNwbGF5VHlwZTogJ2RlZmF1bHQnIHwgJ21vZGVybicgfCAnc2hvcnQnID0gJ2RlZmF1bHQnO1xyXG5cclxuICBkYXlEaXNwbGF5VHlwZTogJ2RlZmF1bHQnIHwgJ3Nob3J0JyA9ICdzaG9ydCc7XHJcblxyXG4gIGRhdGVGb3JtYXR0ZXI6IERhdGVGb3JtYXR0ZXIgPSAoc2VsZWN0ZWREYXRlOiBOZXBhbGlEYXRlKSA9PiB7XHJcbiAgICBjb25zdCBkZCA9XHJcbiAgICAgIHNlbGVjdGVkRGF0ZS5kYXkgPCAxMCA/ICcwJyArIHNlbGVjdGVkRGF0ZS5kYXkgOiBzZWxlY3RlZERhdGUuZGF5O1xyXG4gICAgY29uc3QgbW0gPVxyXG4gICAgICBzZWxlY3RlZERhdGUubW9udGggKyAxIDwgMTBcclxuICAgICAgICA/ICcwJyArIChzZWxlY3RlZERhdGUubW9udGggKyAxKVxyXG4gICAgICAgIDogc2VsZWN0ZWREYXRlLm1vbnRoICsgMTtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMuZm9ybWF0KSB7XHJcbiAgICAgIGNhc2UgJ2RkLW1tLXl5JzpcclxuICAgICAgICByZXR1cm4gYCR7ZGR9LyR7bW19LyR7dGhpcy5zZWxlY3RlZERhdGUueWVhcn1gO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLnNlbGVjdGVkRGF0ZS55ZWFyfS8ke21tfS8ke2RkfWA7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIGNsaWNrb3V0KGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICghdGhpcy5lUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBfbmVwYWxpRGF0ZTogTnBEYXRlUGlja2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgZVJlZjogRWxlbWVudFJlZlxyXG4gICkge1xyXG4gICAgdGhpcy5jdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICB0aGlzLm5lcGFsaURhdGVUb2RheSA9IF9uZXBhbGlEYXRlLmVuZ1RvTmVwRGF0ZShcclxuICAgICAgdGhpcy5jdXJyZW50RGF0ZS5nZXREYXRlKCksXHJcbiAgICAgIHRoaXMuY3VycmVudERhdGUuZ2V0TW9udGgoKSxcclxuICAgICAgdGhpcy5jdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnNldEN1cnJlbnREYXRlKCk7XHJcbiAgICAvL3RoaXMuc2VsZWN0RGF0ZSh0aGlzLmN1cnJlbnROZXBhbGlEYXRlLmRheSk7XHJcbiAgICB0aGlzLnBvcHVsYXRlWWVhcnMoKTtcclxuICAgIHRoaXMuc2V0Q3VycmVudE1vbnRoRGF0YSgpO1xyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy5jdXJyZW50TW9udGhEYXRhKTtcclxuICB9XHJcblxyXG4gIHBvcHVsYXRlWWVhcnMoKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMjAwMTsgaSA8PSAyMDk5OyBpKyspIHtcclxuICAgICAgdGhpcy55ZWFycy5wdXNoKGkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0WWVhcihlOiBhbnkpIHtcclxuICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUueWVhciA9IHBhcnNlSW50KGUudGFyZ2V0LnZhbHVlKTtcclxuXHJcbiAgICBjb25zdCBuZXdEYXRlID0ge1xyXG4gICAgICBkYXk6IHRoaXMuY3VycmVudE5lcGFsaURhdGUuZGF5LFxyXG4gICAgICBtb250aDogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCxcclxuICAgICAgeWVhcjogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS55ZWFyLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmN1cnJlbnREYXRlID0gdGhpcy5fbmVwYWxpRGF0ZS5uZXBUb0VuZ0RhdGUoXHJcbiAgICAgIG5ld0RhdGUuZGF5LFxyXG4gICAgICBuZXdEYXRlLm1vbnRoLFxyXG4gICAgICBuZXdEYXRlLnllYXJcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zZXRDdXJyZW50TW9udGhEYXRhKCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RNb250aChlOiBhbnkpIHtcclxuICAgIGxldCBtb250aCA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgbGV0IG5lcF9tb250aF9pbmRleCA9XHJcbiAgICAgIHRoaXMubW9udGhzTWFwcGluZ1t0aGlzLmxhbmd1YWdlXVt0aGlzLm1vbnRoRGlzcGxheVR5cGVdPy5pbmRleE9mKFxyXG4gICAgICAgIG1vbnRoXHJcbiAgICAgICkgPz8gMDtcclxuXHJcbiAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoID0gbmVwX21vbnRoX2luZGV4O1xyXG5cclxuICAgIGNvbnN0IG5ld05lcGFsaURhdGUgPSB7XHJcbiAgICAgIGRheTogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5kYXksXHJcbiAgICAgIG1vbnRoOiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoLFxyXG4gICAgICB5ZWFyOiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLnllYXIsXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuY3VycmVudERhdGUgPSB0aGlzLl9uZXBhbGlEYXRlLm5lcFRvRW5nRGF0ZShcclxuICAgICAgbmV3TmVwYWxpRGF0ZS5kYXksXHJcbiAgICAgIG5ld05lcGFsaURhdGUubW9udGgsXHJcbiAgICAgIG5ld05lcGFsaURhdGUueWVhclxyXG4gICAgKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY3VycmVudERhdGUpO1xyXG4gICAgdGhpcy5zZXRDdXJyZW50TW9udGhEYXRhKCk7XHJcbiAgfVxyXG5cclxuICByZXNldEN1cnJlbnRNb250aERhdGEoKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRNb250aERhdGEgPSB7XHJcbiAgICAgIDA6IFtdLFxyXG4gICAgICAxOiBbXSxcclxuICAgICAgMjogW10sXHJcbiAgICAgIDM6IFtdLFxyXG4gICAgICA0OiBbXSxcclxuICAgICAgNTogW10sXHJcbiAgICAgIDY6IFtdLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGZvcm1hdFZhbHVlKCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlKSB7XHJcbiAgICAgIHRoaXMuZm9ybWF0dGVkRGF0ZSA9IHRoaXMuZGF0ZUZvcm1hdHRlcih0aGlzLnNlbGVjdGVkRGF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xyXG4gIHByb3BhZ2F0ZVRvdWNoID0gKF86IGFueSkgPT4ge307XHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnNlbGVjdGVkRGF0ZSk7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSB2YWx1ZTtcclxuICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZSA9IHZhbHVlO1xyXG4gICAgICB0aGlzLmZvcm1hdFZhbHVlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKCkge31cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXRDdXJyZW50RGF0ZSgpIHtcclxuICAgIGlmICghdGhpcy5zZWxlY3RlZERhdGUpIHtcclxuICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZSA9IHRoaXMuX25lcGFsaURhdGUuZW5nVG9OZXBEYXRlKFxyXG4gICAgICAgIHRoaXMuY3VycmVudERhdGUuZ2V0RGF0ZSgpLFxyXG4gICAgICAgIHRoaXMuY3VycmVudERhdGUuZ2V0TW9udGgoKSxcclxuICAgICAgICB0aGlzLmN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKClcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHsgZGF5LCBtb250aCwgeWVhciB9ID0gdGhpcy5zZWxlY3RlZERhdGU7XHJcbiAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUgPSB0aGlzLl9uZXBhbGlEYXRlLmVuZ1RvTmVwRGF0ZShkYXksIG1vbnRoLCB5ZWFyKTtcclxuICAgICAgdGhpcy5jdXJyZW50RGF0ZSA9IHRoaXMuX25lcGFsaURhdGUubmVwVG9FbmdEYXRlKFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLnllYXIsXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUubW9udGgsXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUuZGF5XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRDdXJyZW50TW9udGhEYXRhKCkge1xyXG4gICAgdGhpcy5yZXNldEN1cnJlbnRNb250aERhdGEoKTtcclxuXHJcbiAgICAvLyBmaWxsIHRoZSBjdXJyZW50TW9udGhEYXRhIHdpdGggY3VycmVudCBkYXRlXHJcbiAgICBsZXQgZGF5ID0gdGhpcy5jdXJyZW50RGF0ZS5nZXREYXkoKTtcclxuXHJcbiAgICB0aGlzLmN1cnJlbnRNb250aERhdGFbZGF5XSA9IFt0aGlzLmN1cnJlbnROZXBhbGlEYXRlLmRheV07XHJcblxyXG4gICAgLy8gZmlsbCB0aGUgY3VycmVudE1vbnRoRGF0YSB3aXRoIGRheSBiZWZvcmUgdGhlIGN1cnJlbnQgZGF0ZVxyXG4gICAgdGhpcy5zZXRNb250aERhdGFCZWZvcmUoZGF5IC0gMSwgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5kYXkgLSAxKTtcclxuXHJcbiAgICB2YXIgY3VycmVudE1vbnRoTWF4VmFsdWUgPVxyXG4gICAgICB0aGlzLl9uZXBhbGlEYXRlLm5lcGFsaU1vbnRoc1t0aGlzLmN1cnJlbnROZXBhbGlEYXRlLnllYXIgLSAyMDAwXVtcclxuICAgICAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoXHJcbiAgICAgIF07XHJcblxyXG4gICAgLy8gZmlsbCB0aGUgY3VycmVudE1vbnRoRGF0YSB3aXRoIGRheSBhZnRlciB0aGUgY3VycmVudCBkYXRlXHJcbiAgICB0aGlzLnNldE1vbnRoRGF0YUFmdGVyKFxyXG4gICAgICBkYXkgKyAxLFxyXG4gICAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLmRheSArIDEsXHJcbiAgICAgIGN1cnJlbnRNb250aE1heFZhbHVlXHJcbiAgICApO1xyXG5cclxuICAgIC8vIHdlIG5lZWQgc29tZSBlbXB0eSBzcGFjZXMgaW4gcGxhY2Ugc28gdGhhdCB0aGUgZGF0ZXMgYXJlIHNob3duIGluIGNvcnJlY3Qgb3JkZXJcclxuICAgIC8vIGVnIGlmIHRoZSAxc3QgZGF5IHN0YXJ0cyBvbiBtb25kYXkgdGhlbiB3ZSBuZWVkIDEgZW1wdHkgc3BhY2UgZm9yIG5vbiBleGlzdGluZ24gZGF0ZSBvbiBTdW5kYXlcclxuICAgIHRoaXMuY3JlYXRlRW1wdHlTcGFjZXMoKTtcclxuICB9XHJcblxyXG4gIHNldE1vbnRoRGF0YUJlZm9yZShkYXk6IGFueSwgZGF0ZTogYW55KSB7XHJcbiAgICBpZiAoZGF0ZSA+PSAxKSB7XHJcbiAgICAgIGlmIChkYXkgPCAwKSB7XHJcbiAgICAgICAgZGF5ID0gNjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aERhdGFbZGF5XSA9IFtkYXRlLCAuLi50aGlzLmN1cnJlbnRNb250aERhdGFbZGF5XV07XHJcbiAgICAgIHRoaXMuc2V0TW9udGhEYXRhQmVmb3JlKC0tZGF5LCAtLWRhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0TW9udGhEYXRhQWZ0ZXIoZGF5OiBhbnksIGRhdGU6IGFueSwgY3VycmVudE1vbnRoTWF4VmFsdWU6IGFueSkge1xyXG4gICAgY29uc3QgbmVwYWxpRGF0ZSA9IHtcclxuICAgICAgZGF5OiBkYXRlLFxyXG4gICAgICBtb250aDogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCxcclxuICAgICAgeWVhcjogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS55ZWFyLFxyXG4gICAgfTtcclxuXHJcbiAgICAvLyAgb25seSBhZGQgdGhlIGRhdGEgaWYgdGhlIGN1cnJlbnQgbW9udGggbWF0Y2hlc1xyXG4gICAgaWYgKGRhdGUgPD0gY3VycmVudE1vbnRoTWF4VmFsdWUpIHtcclxuICAgICAgaWYgKGRheSA+IDYpIHtcclxuICAgICAgICBkYXkgPSAwO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoRGF0YVtkYXldID0gWy4uLnRoaXMuY3VycmVudE1vbnRoRGF0YVtkYXldLCBkYXRlXTtcclxuICAgICAgdGhpcy5zZXRNb250aERhdGFBZnRlcigrK2RheSwgKytkYXRlLCBjdXJyZW50TW9udGhNYXhWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVFbXB0eVNwYWNlcygpIHtcclxuICAgIC8vIGZpcnN0IGZpbmQgb3V0IHdoaWNoIGRheSBoYXMgdGhlIDFzdFxyXG4gICAgLy8gIGlmIGl0cyBhIFN1bmRheSwgdGhlbiBkb24ndCBkbyBhbnl0aGluZyBlbHNlIGFkZCAxIHNwYWNlIG9uIGVhY2ggcHJldmlvdXMgZGF5XHJcbiAgICBsZXQgZGF5SW5kZXggPSAwO1xyXG4gICAgbGV0IHZhbHVlOiBhbnk7XHJcbiAgICBPYmplY3QudmFsdWVzKHRoaXMuY3VycmVudE1vbnRoRGF0YSkubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICB2YWx1ZSA9IGl0ZW07XHJcbiAgICAgIGlmICh2YWx1ZS5pbmNsdWRlcygxKSkge1xyXG4gICAgICAgIGRheUluZGV4ID0gaW5kZXg7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHZhbHVlLmluY2x1ZGVzKDEpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKGRheUluZGV4KSB7XHJcbiAgICAgIGZvciAoZGF5SW5kZXg7IGRheUluZGV4ID4gMDsgZGF5SW5kZXgtLSkge1xyXG4gICAgICAgIGNvbnN0IG1vbnRoRGF0YSA9IHRoaXMuY3VycmVudE1vbnRoRGF0YVtkYXlJbmRleCAtIDFdO1xyXG4gICAgICAgIHRoaXMuY3VycmVudE1vbnRoRGF0YVtkYXlJbmRleCAtIDFdID0gW251bGwsIC4uLm1vbnRoRGF0YV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdFRvZGF5KCkge1xyXG4gICAgY29uc3QgRW5nbGlzdERhdGVUb2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlID0gdGhpcy5fbmVwYWxpRGF0ZS5lbmdUb05lcERhdGUoXHJcbiAgICAgIEVuZ2xpc3REYXRlVG9kYXkuZ2V0RGF0ZSgpLFxyXG4gICAgICBFbmdsaXN0RGF0ZVRvZGF5LmdldE1vbnRoKCksXHJcbiAgICAgIEVuZ2xpc3REYXRlVG9kYXkuZ2V0RnVsbFllYXIoKVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHsgLi4udGhpcy5jdXJyZW50TmVwYWxpRGF0ZSB9O1xyXG4gICAgdGhpcy5mb3JtYXRWYWx1ZSgpO1xyXG4gICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZERhdGUpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0RGF0ZShkYXk6IG51bWJlcikge1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSB7IC4uLnRoaXMuY3VycmVudE5lcGFsaURhdGUsIGRheSB9O1xyXG4gICAgdGhpcy5mb3JtYXRWYWx1ZSgpO1xyXG4gICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZERhdGUpO1xyXG4gIH1cclxuXHJcbiAgcHJldk1vbnRoKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudE5lcGFsaURhdGUubW9udGggPD0gMCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoID0gMTE7XHJcbiAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUueWVhci0tO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aC0tO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG5ld05lcGFsaURhdGUgPSB7XHJcbiAgICAgIGRheTogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5kYXksXHJcbiAgICAgIG1vbnRoOiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoLFxyXG4gICAgICB5ZWFyOiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLnllYXIsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jdXJyZW50RGF0ZSA9IHRoaXMuX25lcGFsaURhdGUubmVwVG9FbmdEYXRlKFxyXG4gICAgICBuZXdOZXBhbGlEYXRlLmRheSxcclxuICAgICAgbmV3TmVwYWxpRGF0ZS5tb250aCxcclxuICAgICAgbmV3TmVwYWxpRGF0ZS55ZWFyXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuc2V0Q3VycmVudE1vbnRoRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgbmV4dE1vbnRoKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudE5lcGFsaURhdGUubW9udGggPj0gMTEpIHtcclxuICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCA9IDA7XHJcbiAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUueWVhcisrO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCsrO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG5ld0RhdGUgPSB7XHJcbiAgICAgIGRheTogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5kYXksXHJcbiAgICAgIG1vbnRoOiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoLFxyXG4gICAgICB5ZWFyOiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLnllYXIsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jdXJyZW50RGF0ZSA9IHRoaXMuX25lcGFsaURhdGUubmVwVG9FbmdEYXRlKFxyXG4gICAgICBuZXdEYXRlLmRheSxcclxuICAgICAgbmV3RGF0ZS5tb250aCxcclxuICAgICAgbmV3RGF0ZS55ZWFyXHJcbiAgICApO1xyXG4gICAgdGhpcy5zZXRDdXJyZW50TW9udGhEYXRhKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVPcGVuKCkge1xyXG4gICAgaWYgKCF0aGlzLmFsd2F5c1Zpc2libGUpIHtcclxuICAgICAgdGhpcy5pc09wZW4gPSAhdGhpcy5pc09wZW47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuKCkge1xyXG4gICAgdGhpcy5pc09wZW4gPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKSB7XHJcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xyXG4gICAgLy90aGlzLnNldEN1cnJlbnREYXRlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJuZXBhbGktZGF0ZS1waWNrZXJcIiBbbmdDbGFzc109XCJ0aGVtZVwiPlxyXG4gIDxpbnB1dFxyXG4gICAgY2xhc3M9XCJuZ3hfbnBfZGF0ZXBpY2tlcl9pbnB1dFwiXHJcbiAgICB0eXBlPVwidGV4dFwiXHJcbiAgICBbdmFsdWVdPVwiZm9ybWF0dGVkRGF0ZVwiXHJcbiAgICAoZm9jdXMpPVwib3BlbigpXCJcclxuICAgIChrZXlkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICBwbGFjZWhvbGRlcj1cInl5eXkvbW0vZGRcIlxyXG4gIC8+XHJcbiAgPGFcclxuICAgIGNsYXNzPVwiZm9ybS1pY29uXCJcclxuICAgIChjbGljayk9XCJ0b2dnbGVPcGVuKClcIlxyXG4gICAgW25nQ2xhc3NdPVwiaXNPcGVuID8gJ2FjdGl2ZScgOiAnJ1wiXHJcbiAgPlxyXG4gICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA0NDggNTEyXCI+XHJcbiAgICAgIDxwYXRoXHJcbiAgICAgICAgZD1cIk0xNTIgNjRIMjk2VjI0QzI5NiAxMC43NSAzMDYuNyAwIDMyMCAwQzMzMy4zIDAgMzQ0IDEwLjc1IDM0NCAyNFY2NEgzODRDNDE5LjMgNjQgNDQ4IDkyLjY1IDQ0OCAxMjhWNDQ4QzQ0OCA0ODMuMyA0MTkuMyA1MTIgMzg0IDUxMkg2NEMyOC42NSA1MTIgMCA0ODMuMyAwIDQ0OFYxMjhDMCA5Mi42NSAyOC42NSA2NCA2NCA2NEgxMDRWMjRDMTA0IDEwLjc1IDExNC43IDAgMTI4IDBDMTQxLjMgMCAxNTIgMTAuNzUgMTUyIDI0VjY0ek00OCA0NDhDNDggNDU2LjggNTUuMTYgNDY0IDY0IDQ2NEgzODRDMzkyLjggNDY0IDQwMCA0NTYuOCA0MDAgNDQ4VjE5Mkg0OFY0NDh6XCJcclxuICAgICAgLz5cclxuICAgIDwvc3ZnPlxyXG4gIDwvYT5cclxuICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5wZHBcIiAqbmdJZj1cImlzT3BlblwiPjwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuPG5nLXRlbXBsYXRlICNucGRwPlxyXG4gIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyX19jb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyX19vcHRpb25zLWNvbnRhaW5lclwiPlxyXG4gICAgICA8YSBjbGFzcz1cInByZXYtbW9udGhcIiAoY2xpY2spPVwicHJldk1vbnRoKClcIj5cclxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDMyMCA1MTJcIj5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGQ9XCJNMjI0IDQ4MGMtOC4xODggMC0xNi4zOC0zLjEyNS0yMi42Mi05LjM3NWwtMTkyLTE5MmMtMTIuNS0xMi41LTEyLjUtMzIuNzUgMC00NS4yNWwxOTItMTkyYzEyLjUtMTIuNSAzMi43NS0xMi41IDQ1LjI1IDBzMTIuNSAzMi43NSAwIDQ1LjI1TDc3LjI1IDI1NmwxNjkuNCAxNjkuNGMxMi41IDEyLjUgMTIuNSAzMi43NSAwIDQ1LjI1QzI0MC40IDQ3Ni45IDIzMi4yIDQ4MCAyMjQgNDgwelwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2E+XHJcbiAgICAgIDxhIGNsYXNzPVwic2VsZWN0LXRvZGF5XCIgKGNsaWNrKT1cInNlbGVjdFRvZGF5KClcIj5cclxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgY2xhc3M9XCJmZWF0aGVyIGZlYXRoZXItaG9tZVwiPjxwYXRoIGQ9XCJNMyA5bDktNyA5IDd2MTFhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJ6XCI+PC9wYXRoPjxwb2x5bGluZSBwb2ludHM9XCI5IDIyIDkgMTIgMTUgMTIgMTUgMjJcIj48L3BvbHlsaW5lPjwvc3ZnPlxyXG4gICAgICA8L2E+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZXBpY2tlcl9fb3B0aW9ucy1tb250aC1jb250YWluZXJcIj5cclxuICAgICAgICBcclxuICAgICAgICA8c2VsZWN0IChjaGFuZ2UpPVwic2VsZWN0TW9udGgoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPG9wdGlvblxyXG4gICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICBsZXQgbW9udGggb2YgbW9udGhzTWFwcGluZ1tsYW5ndWFnZV1bbW9udGhEaXNwbGF5VHlwZV07XHJcbiAgICAgICAgICAgICAgaW5kZXggYXMgaVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBbdmFsdWVdPVwibW9udGhcIlxyXG4gICAgICAgICAgICBbc2VsZWN0ZWRdPVwiaSA9PT0gY3VycmVudE5lcGFsaURhdGU/Lm1vbnRoXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgbW9udGggfX1cclxuICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZXBpY2tlcl9fb3B0aW9ucy15ZWFyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIFxyXG4gICAgICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJzZWxlY3RZZWFyKCRldmVudClcIj5cclxuICAgICAgICAgIDxvcHRpb25cclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHllYXIgb2YgeWVhcnM7IGluZGV4IGFzIGlcIlxyXG4gICAgICAgICAgICBbdmFsdWVdPVwieWVhclwiXHJcbiAgICAgICAgICAgIFtzZWxlY3RlZF09XCJ5ZWFyID09IGN1cnJlbnROZXBhbGlEYXRlPy55ZWFyXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgeWVhciB8IHRvTnA6IGxhbmd1YWdlOlwibnVtYmVyXCIgfX1cclxuICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIFxyXG4gICAgICA8YSBjbGFzcz1cIm5leHQtbW9udGhcIiAoY2xpY2spPVwibmV4dE1vbnRoKClcIj5cclxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDMyMCA1MTJcIj5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGQ9XCJNOTYgNDgwYy04LjE4OCAwLTE2LjM4LTMuMTI1LTIyLjYyLTkuMzc1Yy0xMi41LTEyLjUtMTIuNS0zMi43NSAwLTQ1LjI1TDI0Mi44IDI1Nkw3My4zOCA4Ni42M2MtMTIuNS0xMi41LTEyLjUtMzIuNzUgMC00NS4yNXMzMi43NS0xMi41IDQ1LjI1IDBsMTkyIDE5MmMxMi41IDEyLjUgMTIuNSAzMi43NSAwIDQ1LjI1bC0xOTIgMTkyQzExMi40IDQ3Ni45IDEwNC4yIDQ4MCA5NiA0ODB6XCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvYT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXJfX2RheXMtY29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImRhdGVwaWNrZXJfX2RheXNcIlxyXG4gICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2YgZGF5c01hcHBpbmdbbGFuZ3VhZ2VdW2RheURpc3BsYXlUeXBlXTsgaW5kZXggYXMgaVwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlcl9fd2Vla2RheVwiPnt7IGRheSB9fTwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiZGF0ZXBpY2tlcl9fZGF0ZS1jb250YWluZXJcIlxyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGUgb2YgY3VycmVudE1vbnRoRGF0YVtpXVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImhhc0Z1dHVyZTsgZWxzZSBub0Z1dHVyZURhdGVcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiZGF0ZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRlcGlja2VyX19kYXRlXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuZGF0ZXBpY2tlcl9fZGF0ZS0tYWN0aXZlXT1cIlxyXG4gICAgICAgICAgICAgICAgZGF0ZSA9PT0gc2VsZWN0ZWREYXRlPy5kYXkgJiZcclxuICAgICAgICAgICAgICAgIGN1cnJlbnROZXBhbGlEYXRlLm1vbnRoID09PSBzZWxlY3RlZERhdGU/Lm1vbnRoICYmXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50TmVwYWxpRGF0ZS55ZWFyID09PSBzZWxlY3RlZERhdGU/LnllYXJcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5kYXRlcGlja2VyX19kYXRlLS1jdXJyZW50LWRheV09XCJcclxuICAgICAgICAgICAgICAgIGRhdGUgPT09IG5lcGFsaURhdGVUb2RheS5kYXkgJiZcclxuICAgICAgICAgICAgICAgIGN1cnJlbnROZXBhbGlEYXRlLm1vbnRoID09PSBuZXBhbGlEYXRlVG9kYXkubW9udGggJiZcclxuICAgICAgICAgICAgICAgIGN1cnJlbnROZXBhbGlEYXRlLnllYXIgPT09IG5lcGFsaURhdGVUb2RheS55ZWFyXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF0ZShkYXRlKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7eyBkYXRlIHwgdG9OcDogbGFuZ3VhZ2U6XCJudW1iZXJcIiB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFkYXRlXCIgY2xhc3M9XCJkYXRlcGlja2VyX19kYXRlLS1kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuPiZuYnNwOzwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI25vRnV0dXJlRGF0ZT5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICBkYXRlICYmXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUueWVhciAqIDM2NSArXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCAqIDMwICtcclxuICAgICAgICAgICAgICAgICAgICBkYXRlIDw9XHJcbiAgICAgICAgICAgICAgICAgICAgbmVwYWxpRGF0ZVRvZGF5LmRheSArXHJcbiAgICAgICAgICAgICAgICAgICAgICBuZXBhbGlEYXRlVG9kYXkubW9udGggKiAzMCArXHJcbiAgICAgICAgICAgICAgICAgICAgICBuZXBhbGlEYXRlVG9kYXkueWVhciAqIDM2NTtcclxuICAgICAgICAgICAgICAgIGVsc2UgZGlzYWJsZWREYXRlc1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRlcGlja2VyX19kYXRlXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuZGF0ZXBpY2tlcl9fZGF0ZS0tYWN0aXZlXT1cIlxyXG4gICAgICAgICAgICAgICAgZGF0ZSA9PT0gc2VsZWN0ZWREYXRlPy5kYXkgJiZcclxuICAgICAgICAgICAgICAgIGN1cnJlbnROZXBhbGlEYXRlLm1vbnRoID09PSBzZWxlY3RlZERhdGU/Lm1vbnRoICYmXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50TmVwYWxpRGF0ZS55ZWFyID09PSBzZWxlY3RlZERhdGU/LnllYXJcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5kYXRlcGlja2VyX19kYXRlLS1jdXJyZW50LWRheV09XCJcclxuICAgICAgICAgICAgICAgIGRhdGUgPT09IG5lcGFsaURhdGVUb2RheS5kYXkgJiZcclxuICAgICAgICAgICAgICAgIGN1cnJlbnROZXBhbGlEYXRlLm1vbnRoID09PSBuZXBhbGlEYXRlVG9kYXkubW9udGggJiZcclxuICAgICAgICAgICAgICAgIGN1cnJlbnROZXBhbGlEYXRlLnllYXIgPT09IG5lcGFsaURhdGVUb2RheS55ZWFyXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF0ZShkYXRlKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7eyBkYXRlIHwgdG9OcDogbGFuZ3VhZ2U6XCJudW1iZXJcIiB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGlzYWJsZWREYXRlcz5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlcl9fZGF0ZSBkYXRlcGlja2VyX19kYXRlLS1kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAge3sgZGF0ZSB8IHRvTnA6IGxhbmd1YWdlOlwibnVtYmVyXCIgfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZGF0ZVwiIGNsYXNzPVwiZGF0ZXBpY2tlcl9fZGF0ZS0tZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICA8c3Bhbj4mbmJzcDs8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tLmRhdGVwaWNrZXJfX2RhdGUtY29udGFpbmVyIGVuZHMtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS0uZGF0ZXBpY2tlcl9fZGF5cyBlbmRzLS0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0uZGF0ZXBpY2tlcl9fZGF5cy1jb250YWluZXIgZW5kcy0tPlxyXG4gIDwvZGl2PlxyXG4gIDwhLS0uZGF0ZXBpY2tlcl9fY29udGFpbmVyIGVuZHMtLT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
|
268
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnAtZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ucHgtbnAtZGF0ZXBpY2tlci9zcmMvbGliL25wLWRhdGVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbnB4LW5wLWRhdGVwaWNrZXIvc3JjL2xpYi9ucC1kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFHWixLQUFLLEVBQ0wsVUFBVSxFQUNWLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFTekUsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7OztBQWV2RCxNQUFNLE9BQU8scUJBQXFCO0lBMkRoQyxZQUNTLFdBQWdDLEVBQy9CLElBQWdCO1FBRGpCLGdCQUFXLEdBQVgsV0FBVyxDQUFxQjtRQUMvQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBNUQxQixvQkFBZSxHQUFlLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUM1RCxzQkFBaUIsR0FBZSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFFOUQsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFLbkIsVUFBSyxHQUFhLEVBQUUsQ0FBQztRQUlyQixnQkFBVyxHQUFnQixXQUFXLENBQUM7UUFFdkMsa0JBQWEsR0FBaUIsYUFBYSxDQUFDO1FBRTVDLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFZixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGtCQUFhLEdBQUcs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QyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgT25Jbml0LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgZm9yd2FyZFJlZixcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTnBEYXRlUGlja2VyU2VydmljZSB9IGZyb20gJy4vbnAtZGF0ZXBpY2tlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHtcclxuICBOZXBhbGlEYXRlLFxyXG4gIE1vbnRoRGF0YSxcclxuICBEYXlzTWFwcGluZyxcclxuICBNb250aE1hcHBpbmcsXHJcbiAgRGF0ZUZvcm1hdHRlcixcclxufSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHsgZGF5c01hcHBpbmcsIG1vbnRoc01hcHBpbmcgfSBmcm9tICcuL21hcHBpbmcnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICducC1kYXRlcGlja2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbnAtZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25wLWRhdGUtcGlja2VyLmNvbXBvbmVudC5jc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE5wRGF0ZVBpY2tlckNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOcERhdGVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBuZXBhbGlEYXRlVG9kYXk6IE5lcGFsaURhdGUgPSB7IGRheTogMCwgbW9udGg6IDAsIHllYXI6IDAgfTtcclxuICBjdXJyZW50TmVwYWxpRGF0ZTogTmVwYWxpRGF0ZSA9IHsgZGF5OiAwLCBtb250aDogMCwgeWVhcjogMCB9O1xyXG4gIHNlbGVjdGVkRGF0ZSE6IE5lcGFsaURhdGU7XHJcbiAgZm9ybWF0dGVkRGF0ZSA9ICcnO1xyXG4gIGN1cnJlbnREYXRlOiBhbnk7XHJcblxyXG4gIGRpc3BsYXlEYXRlITogc3RyaW5nO1xyXG5cclxuICB5ZWFyczogbnVtYmVyW10gPSBbXTtcclxuXHJcbiAgY3VycmVudE1vbnRoRGF0YSE6IGFueTtcclxuXHJcbiAgZGF5c01hcHBpbmc6IERheXNNYXBwaW5nID0gZGF5c01hcHBpbmc7XHJcblxyXG4gIG1vbnRoc01hcHBpbmc6IE1vbnRoTWFwcGluZyA9IG1vbnRoc01hcHBpbmc7XHJcblxyXG4gIGlzT3BlbiA9IGZhbHNlO1xyXG5cclxuICBoaWRlSW5wdXQgPSBmYWxzZTtcclxuXHJcbiAgYWx3YXlzVmlzaWJsZSA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHRoZW1lITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgbGFuZ3VhZ2U6ICdlbicgfCAnbmUnID0gJ25lJztcclxuICBASW5wdXQoKSBoYXNGdXR1cmU6IEJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGZvcm1hdDogc3RyaW5nID0gJ3l5LW1tLWRkJztcclxuXHJcbiAgbW9udGhEaXNwbGF5VHlwZTogJ2RlZmF1bHQnIHwgJ21vZGVybicgfCAnc2hvcnQnID0gJ2RlZmF1bHQnO1xyXG5cclxuICBkYXlEaXNwbGF5VHlwZTogJ2RlZmF1bHQnIHwgJ3Nob3J0JyA9ICdzaG9ydCc7XHJcblxyXG4gIGRhdGVGb3JtYXR0ZXI6IERhdGVGb3JtYXR0ZXIgPSAoc2VsZWN0ZWREYXRlOiBOZXBhbGlEYXRlKSA9PiB7XHJcbiAgICBjb25zdCBkZCA9XHJcbiAgICAgIHNlbGVjdGVkRGF0ZS5kYXkgPCAxMCA/ICcwJyArIHNlbGVjdGVkRGF0ZS5kYXkgOiBzZWxlY3RlZERhdGUuZGF5O1xyXG4gICAgY29uc3QgbW0gPVxyXG4gICAgICBzZWxlY3RlZERhdGUubW9udGggKyAxIDwgMTBcclxuICAgICAgICA/ICcwJyArIChzZWxlY3RlZERhdGUubW9udGggKyAxKVxyXG4gICAgICAgIDogc2VsZWN0ZWREYXRlLm1vbnRoICsgMTtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMuZm9ybWF0KSB7XHJcbiAgICAgIGNhc2UgJ2RkLW1tLXl5JzpcclxuICAgICAgICByZXR1cm4gYCR7ZGR9LyR7bW19LyR7dGhpcy5zZWxlY3RlZERhdGUueWVhcn1gO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLnNlbGVjdGVkRGF0ZS55ZWFyfS8ke21tfS8ke2RkfWA7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIGNsaWNrb3V0KGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICghdGhpcy5lUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBfbmVwYWxpRGF0ZTogTnBEYXRlUGlja2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgZVJlZjogRWxlbWVudFJlZlxyXG4gICkge1xyXG4gICAgdGhpcy5jdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICB0aGlzLm5lcGFsaURhdGVUb2RheSA9IF9uZXBhbGlEYXRlLmVuZ1RvTmVwRGF0ZShcclxuICAgICAgdGhpcy5jdXJyZW50RGF0ZS5nZXREYXRlKCksXHJcbiAgICAgIHRoaXMuY3VycmVudERhdGUuZ2V0TW9udGgoKSxcclxuICAgICAgdGhpcy5jdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnNldEN1cnJlbnREYXRlKCk7XHJcbiAgICAvL3RoaXMuc2VsZWN0RGF0ZSh0aGlzLmN1cnJlbnROZXBhbGlEYXRlLmRheSk7XHJcbiAgICB0aGlzLnBvcHVsYXRlWWVhcnMoKTtcclxuICAgIHRoaXMuc2V0Q3VycmVudE1vbnRoRGF0YSgpO1xyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy5jdXJyZW50TW9udGhEYXRhKTtcclxuICB9XHJcblxyXG4gIHBvcHVsYXRlWWVhcnMoKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMjAwMTsgaSA8PSAyMDk5OyBpKyspIHtcclxuICAgICAgdGhpcy55ZWFycy5wdXNoKGkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0WWVhcihlOiBhbnkpIHtcclxuICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUueWVhciA9IHBhcnNlSW50KGUudGFyZ2V0LnZhbHVlKTtcclxuXHJcbiAgICBjb25zdCBuZXdEYXRlID0ge1xyXG4gICAgICBkYXk6IHRoaXMuY3VycmVudE5lcGFsaURhdGUuZGF5LFxyXG4gICAgICBtb250aDogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCxcclxuICAgICAgeWVhcjogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS55ZWFyLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmN1cnJlbnREYXRlID0gdGhpcy5fbmVwYWxpRGF0ZS5uZXBUb0VuZ0RhdGUoXHJcbiAgICAgIG5ld0RhdGUuZGF5LFxyXG4gICAgICBuZXdEYXRlLm1vbnRoLFxyXG4gICAgICBuZXdEYXRlLnllYXJcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zZXRDdXJyZW50TW9udGhEYXRhKCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RNb250aChlOiBhbnkpIHtcclxuICAgIGxldCBtb250aCA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgbGV0IG5lcF9tb250aF9pbmRleCA9XHJcbiAgICAgIHRoaXMubW9udGhzTWFwcGluZ1t0aGlzLmxhbmd1YWdlXVt0aGlzLm1vbnRoRGlzcGxheVR5cGVdPy5pbmRleE9mKFxyXG4gICAgICAgIG1vbnRoXHJcbiAgICAgICkgPz8gMDtcclxuXHJcbiAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoID0gbmVwX21vbnRoX2luZGV4O1xyXG5cclxuICAgIGNvbnN0IG5ld05lcGFsaURhdGUgPSB7XHJcbiAgICAgIGRheTogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5kYXksXHJcbiAgICAgIG1vbnRoOiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoLFxyXG4gICAgICB5ZWFyOiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLnllYXIsXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuY3VycmVudERhdGUgPSB0aGlzLl9uZXBhbGlEYXRlLm5lcFRvRW5nRGF0ZShcclxuICAgICAgbmV3TmVwYWxpRGF0ZS5kYXksXHJcbiAgICAgIG5ld05lcGFsaURhdGUubW9udGgsXHJcbiAgICAgIG5ld05lcGFsaURhdGUueWVhclxyXG4gICAgKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY3VycmVudERhdGUpO1xyXG4gICAgdGhpcy5zZXRDdXJyZW50TW9udGhEYXRhKCk7XHJcbiAgfVxyXG5cclxuICByZXNldEN1cnJlbnRNb250aERhdGEoKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRNb250aERhdGEgPSB7XHJcbiAgICAgIDA6IFtdLFxyXG4gICAgICAxOiBbXSxcclxuICAgICAgMjogW10sXHJcbiAgICAgIDM6IFtdLFxyXG4gICAgICA0OiBbXSxcclxuICAgICAgNTogW10sXHJcbiAgICAgIDY6IFtdLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGZvcm1hdFZhbHVlKCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlKSB7XHJcbiAgICAgIHRoaXMuZm9ybWF0dGVkRGF0ZSA9IHRoaXMuZGF0ZUZvcm1hdHRlcih0aGlzLnNlbGVjdGVkRGF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xyXG4gIHByb3BhZ2F0ZVRvdWNoID0gKF86IGFueSkgPT4ge307XHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnNlbGVjdGVkRGF0ZSk7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSB2YWx1ZTtcclxuICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZSA9IHZhbHVlO1xyXG4gICAgICB0aGlzLmZvcm1hdFZhbHVlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKCkge31cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXRDdXJyZW50RGF0ZSgpIHtcclxuICAgIGlmICghdGhpcy5zZWxlY3RlZERhdGUpIHtcclxuICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZSA9IHRoaXMuX25lcGFsaURhdGUuZW5nVG9OZXBEYXRlKFxyXG4gICAgICAgIHRoaXMuY3VycmVudERhdGUuZ2V0RGF0ZSgpLFxyXG4gICAgICAgIHRoaXMuY3VycmVudERhdGUuZ2V0TW9udGgoKSxcclxuICAgICAgICB0aGlzLmN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKClcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHsgZGF5LCBtb250aCwgeWVhciB9ID0gdGhpcy5zZWxlY3RlZERhdGU7XHJcbiAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUgPSB0aGlzLl9uZXBhbGlEYXRlLmVuZ1RvTmVwRGF0ZShkYXksIG1vbnRoLCB5ZWFyKTtcclxuICAgICAgdGhpcy5jdXJyZW50RGF0ZSA9IHRoaXMuX25lcGFsaURhdGUubmVwVG9FbmdEYXRlKFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLnllYXIsXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUubW9udGgsXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUuZGF5XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRDdXJyZW50TW9udGhEYXRhKCkge1xyXG4gICAgdGhpcy5yZXNldEN1cnJlbnRNb250aERhdGEoKTtcclxuXHJcbiAgICAvLyBmaWxsIHRoZSBjdXJyZW50TW9udGhEYXRhIHdpdGggY3VycmVudCBkYXRlXHJcbiAgICBsZXQgZGF5ID0gdGhpcy5jdXJyZW50RGF0ZS5nZXREYXkoKTtcclxuXHJcbiAgICB0aGlzLmN1cnJlbnRNb250aERhdGFbZGF5XSA9IFt0aGlzLmN1cnJlbnROZXBhbGlEYXRlLmRheV07XHJcblxyXG4gICAgLy8gZmlsbCB0aGUgY3VycmVudE1vbnRoRGF0YSB3aXRoIGRheSBiZWZvcmUgdGhlIGN1cnJlbnQgZGF0ZVxyXG4gICAgdGhpcy5zZXRNb250aERhdGFCZWZvcmUoZGF5IC0gMSwgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5kYXkgLSAxKTtcclxuXHJcbiAgICB2YXIgY3VycmVudE1vbnRoTWF4VmFsdWUgPVxyXG4gICAgICB0aGlzLl9uZXBhbGlEYXRlLm5lcGFsaU1vbnRoc1t0aGlzLmN1cnJlbnROZXBhbGlEYXRlLnllYXIgLSAyMDAwXVtcclxuICAgICAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoXHJcbiAgICAgIF07XHJcblxyXG4gICAgLy8gZmlsbCB0aGUgY3VycmVudE1vbnRoRGF0YSB3aXRoIGRheSBhZnRlciB0aGUgY3VycmVudCBkYXRlXHJcbiAgICB0aGlzLnNldE1vbnRoRGF0YUFmdGVyKFxyXG4gICAgICBkYXkgKyAxLFxyXG4gICAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLmRheSArIDEsXHJcbiAgICAgIGN1cnJlbnRNb250aE1heFZhbHVlXHJcbiAgICApO1xyXG5cclxuICAgIC8vIHdlIG5lZWQgc29tZSBlbXB0eSBzcGFjZXMgaW4gcGxhY2Ugc28gdGhhdCB0aGUgZGF0ZXMgYXJlIHNob3duIGluIGNvcnJlY3Qgb3JkZXJcclxuICAgIC8vIGVnIGlmIHRoZSAxc3QgZGF5IHN0YXJ0cyBvbiBtb25kYXkgdGhlbiB3ZSBuZWVkIDEgZW1wdHkgc3BhY2UgZm9yIG5vbiBleGlzdGluZ24gZGF0ZSBvbiBTdW5kYXlcclxuICAgIHRoaXMuY3JlYXRlRW1wdHlTcGFjZXMoKTtcclxuICB9XHJcblxyXG4gIHNldE1vbnRoRGF0YUJlZm9yZShkYXk6IGFueSwgZGF0ZTogYW55KSB7XHJcbiAgICBpZiAoZGF0ZSA+PSAxKSB7XHJcbiAgICAgIGlmIChkYXkgPCAwKSB7XHJcbiAgICAgICAgZGF5ID0gNjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aERhdGFbZGF5XSA9IFtkYXRlLCAuLi50aGlzLmN1cnJlbnRNb250aERhdGFbZGF5XV07XHJcbiAgICAgIHRoaXMuc2V0TW9udGhEYXRhQmVmb3JlKC0tZGF5LCAtLWRhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0TW9udGhEYXRhQWZ0ZXIoZGF5OiBhbnksIGRhdGU6IGFueSwgY3VycmVudE1vbnRoTWF4VmFsdWU6IGFueSkge1xyXG4gICAgY29uc3QgbmVwYWxpRGF0ZSA9IHtcclxuICAgICAgZGF5OiBkYXRlLFxyXG4gICAgICBtb250aDogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCxcclxuICAgICAgeWVhcjogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS55ZWFyLFxyXG4gICAgfTtcclxuXHJcbiAgICAvLyAgb25seSBhZGQgdGhlIGRhdGEgaWYgdGhlIGN1cnJlbnQgbW9udGggbWF0Y2hlc1xyXG4gICAgaWYgKGRhdGUgPD0gY3VycmVudE1vbnRoTWF4VmFsdWUpIHtcclxuICAgICAgaWYgKGRheSA+IDYpIHtcclxuICAgICAgICBkYXkgPSAwO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoRGF0YVtkYXldID0gWy4uLnRoaXMuY3VycmVudE1vbnRoRGF0YVtkYXldLCBkYXRlXTtcclxuICAgICAgdGhpcy5zZXRNb250aERhdGFBZnRlcigrK2RheSwgKytkYXRlLCBjdXJyZW50TW9udGhNYXhWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVFbXB0eVNwYWNlcygpIHtcclxuICAgIC8vIGZpcnN0IGZpbmQgb3V0IHdoaWNoIGRheSBoYXMgdGhlIDFzdFxyXG4gICAgLy8gIGlmIGl0cyBhIFN1bmRheSwgdGhlbiBkb24ndCBkbyBhbnl0aGluZyBlbHNlIGFkZCAxIHNwYWNlIG9uIGVhY2ggcHJldmlvdXMgZGF5XHJcbiAgICBsZXQgZGF5SW5kZXggPSAwO1xyXG4gICAgbGV0IHZhbHVlOiBhbnk7XHJcbiAgICBPYmplY3QudmFsdWVzKHRoaXMuY3VycmVudE1vbnRoRGF0YSkubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICB2YWx1ZSA9IGl0ZW07XHJcbiAgICAgIGlmICh2YWx1ZS5pbmNsdWRlcygxKSkge1xyXG4gICAgICAgIGRheUluZGV4ID0gaW5kZXg7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHZhbHVlLmluY2x1ZGVzKDEpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKGRheUluZGV4KSB7XHJcbiAgICAgIGZvciAoZGF5SW5kZXg7IGRheUluZGV4ID4gMDsgZGF5SW5kZXgtLSkge1xyXG4gICAgICAgIGNvbnN0IG1vbnRoRGF0YSA9IHRoaXMuY3VycmVudE1vbnRoRGF0YVtkYXlJbmRleCAtIDFdO1xyXG4gICAgICAgIHRoaXMuY3VycmVudE1vbnRoRGF0YVtkYXlJbmRleCAtIDFdID0gW251bGwsIC4uLm1vbnRoRGF0YV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdFRvZGF5KCkge1xyXG4gICAgY29uc3QgRW5nbGlzdERhdGVUb2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlID0gdGhpcy5fbmVwYWxpRGF0ZS5lbmdUb05lcERhdGUoXHJcbiAgICAgIEVuZ2xpc3REYXRlVG9kYXkuZ2V0RGF0ZSgpLFxyXG4gICAgICBFbmdsaXN0RGF0ZVRvZGF5LmdldE1vbnRoKCksXHJcbiAgICAgIEVuZ2xpc3REYXRlVG9kYXkuZ2V0RnVsbFllYXIoKVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHsgLi4udGhpcy5jdXJyZW50TmVwYWxpRGF0ZSB9O1xyXG4gICAgdGhpcy5mb3JtYXRWYWx1ZSgpO1xyXG4gICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZERhdGUpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0RGF0ZShkYXk6IG51bWJlcikge1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSB7IC4uLnRoaXMuY3VycmVudE5lcGFsaURhdGUsIGRheSB9O1xyXG4gICAgdGhpcy5mb3JtYXRWYWx1ZSgpO1xyXG4gICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZERhdGUpO1xyXG4gIH1cclxuXHJcbiAgcHJldk1vbnRoKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudE5lcGFsaURhdGUubW9udGggPD0gMCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoID0gMTE7XHJcbiAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUueWVhci0tO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aC0tO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG5ld05lcGFsaURhdGUgPSB7XHJcbiAgICAgIGRheTogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5kYXksXHJcbiAgICAgIG1vbnRoOiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoLFxyXG4gICAgICB5ZWFyOiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLnllYXIsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jdXJyZW50RGF0ZSA9IHRoaXMuX25lcGFsaURhdGUubmVwVG9FbmdEYXRlKFxyXG4gICAgICBuZXdOZXBhbGlEYXRlLmRheSxcclxuICAgICAgbmV3TmVwYWxpRGF0ZS5tb250aCxcclxuICAgICAgbmV3TmVwYWxpRGF0ZS55ZWFyXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuc2V0Q3VycmVudE1vbnRoRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgbmV4dE1vbnRoKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudE5lcGFsaURhdGUubW9udGggPj0gMTEpIHtcclxuICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCA9IDA7XHJcbiAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUueWVhcisrO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCsrO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG5ld0RhdGUgPSB7XHJcbiAgICAgIGRheTogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5kYXksXHJcbiAgICAgIG1vbnRoOiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoLFxyXG4gICAgICB5ZWFyOiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLnllYXIsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jdXJyZW50RGF0ZSA9IHRoaXMuX25lcGFsaURhdGUubmVwVG9FbmdEYXRlKFxyXG4gICAgICBuZXdEYXRlLmRheSxcclxuICAgICAgbmV3RGF0ZS5tb250aCxcclxuICAgICAgbmV3RGF0ZS55ZWFyXHJcbiAgICApO1xyXG4gICAgdGhpcy5zZXRDdXJyZW50TW9udGhEYXRhKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVPcGVuKCkge1xyXG4gICAgaWYgKCF0aGlzLmFsd2F5c1Zpc2libGUpIHtcclxuICAgICAgdGhpcy5pc09wZW4gPSAhdGhpcy5pc09wZW47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuKCkge1xyXG4gICAgdGhpcy5pc09wZW4gPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKSB7XHJcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xyXG4gICAgLy90aGlzLnNldEN1cnJlbnREYXRlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJuZXBhbGktZGF0ZS1waWNrZXJcIiBbbmdDbGFzc109XCJ0aGVtZVwiPlxyXG4gIDxpbnB1dFxyXG4gICAgY2xhc3M9XCJuZ3hfbnBfZGF0ZXBpY2tlcl9pbnB1dFwiXHJcbiAgICB0eXBlPVwidGV4dFwiXHJcbiAgICBbdmFsdWVdPVwiZm9ybWF0dGVkRGF0ZVwiXHJcbiAgICAoZm9jdXMpPVwib3BlbigpXCJcclxuICAgIChrZXlkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgIHBsYWNlaG9sZGVyPVwieXl5eS9tbS9kZFwiXHJcbiAgLz5cclxuICA8YVxyXG4gICAgY2xhc3M9XCJmb3JtLWljb25cIlxyXG4gICAgKGNsaWNrKT1cInRvZ2dsZU9wZW4oKVwiXHJcbiAgICBbbmdDbGFzc109XCJpc09wZW4gPyAnYWN0aXZlJyA6ICcnXCJcclxuICA+XHJcbiAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDQ0OCA1MTJcIj5cclxuICAgICAgPHBhdGhcclxuICAgICAgICBkPVwiTTE1MiA2NEgyOTZWMjRDMjk2IDEwLjc1IDMwNi43IDAgMzIwIDBDMzMzLjMgMCAzNDQgMTAuNzUgMzQ0IDI0VjY0SDM4NEM0MTkuMyA2NCA0NDggOTIuNjUgNDQ4IDEyOFY0NDhDNDQ4IDQ4My4zIDQxOS4zIDUxMiAzODQgNTEySDY0QzI4LjY1IDUxMiAwIDQ4My4zIDAgNDQ4VjEyOEMwIDkyLjY1IDI4LjY1IDY0IDY0IDY0SDEwNFYyNEMxMDQgMTAuNzUgMTE0LjcgMCAxMjggMEMxNDEuMyAwIDE1MiAxMC43NSAxNTIgMjRWNjR6TTQ4IDQ0OEM0OCA0NTYuOCA1NS4xNiA0NjQgNjQgNDY0SDM4NEMzOTIuOCA0NjQgNDAwIDQ1Ni44IDQwMCA0NDhWMTkySDQ4VjQ0OHpcIlxyXG4gICAgICAvPlxyXG4gICAgPC9zdmc+XHJcbiAgPC9hPlxyXG4gIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibnBkcFwiICpuZ0lmPVwiaXNPcGVuXCI+PC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG48bmctdGVtcGxhdGUgI25wZHA+XHJcbiAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXJfX2NvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXJfX29wdGlvbnMtY29udGFpbmVyXCI+XHJcbiAgICAgIDxhIGNsYXNzPVwicHJldi1tb250aFwiIChjbGljayk9XCJwcmV2TW9udGgoKVwiPlxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMzIwIDUxMlwiPlxyXG4gICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgZD1cIk0yMjQgNDgwYy04LjE4OCAwLTE2LjM4LTMuMTI1LTIyLjYyLTkuMzc1bC0xOTItMTkyYy0xMi41LTEyLjUtMTIuNS0zMi43NSAwLTQ1LjI1bDE5Mi0xOTJjMTIuNS0xMi41IDMyLjc1LTEyLjUgNDUuMjUgMHMxMi41IDMyLjc1IDAgNDUuMjVMNzcuMjUgMjU2bDE2OS40IDE2OS40YzEyLjUgMTIuNSAxMi41IDMyLjc1IDAgNDUuMjVDMjQwLjQgNDc2LjkgMjMyLjIgNDgwIDIyNCA0ODB6XCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvYT5cclxuICAgICAgPGEgY2xhc3M9XCJzZWxlY3QtdG9kYXlcIiAoY2xpY2spPVwic2VsZWN0VG9kYXkoKVwiPlxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBjbGFzcz1cImZlYXRoZXIgZmVhdGhlci1ob21lXCI+PHBhdGggZD1cIk0zIDlsOS03IDkgN3YxMWEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnpcIj48L3BhdGg+PHBvbHlsaW5lIHBvaW50cz1cIjkgMjIgOSAxMiAxNSAxMiAxNSAyMlwiPjwvcG9seWxpbmU+PC9zdmc+XHJcbiAgICAgIDwvYT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlcGlja2VyX19vcHRpb25zLW1vbnRoLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIFxyXG4gICAgICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJzZWxlY3RNb250aCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgIGxldCBtb250aCBvZiBtb250aHNNYXBwaW5nW2xhbmd1YWdlXVttb250aERpc3BsYXlUeXBlXTtcclxuICAgICAgICAgICAgICBpbmRleCBhcyBpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJtb250aFwiXHJcbiAgICAgICAgICAgIFtzZWxlY3RlZF09XCJpID09PSBjdXJyZW50TmVwYWxpRGF0ZT8ubW9udGhcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBtb250aCB9fVxyXG4gICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlcGlja2VyX19vcHRpb25zLXllYXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPHNlbGVjdCAoY2hhbmdlKT1cInNlbGVjdFllYXIoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPG9wdGlvblxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgeWVhciBvZiB5ZWFyczsgaW5kZXggYXMgaVwiXHJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ5ZWFyXCJcclxuICAgICAgICAgICAgW3NlbGVjdGVkXT1cInllYXIgPT0gY3VycmVudE5lcGFsaURhdGU/LnllYXJcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyB5ZWFyIHwgdG9OcDogbGFuZ3VhZ2U6XCJudW1iZXJcIiB9fVxyXG4gICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgXHJcbiAgICAgIDxhIGNsYXNzPVwibmV4dC1tb250aFwiIChjbGljayk9XCJuZXh0TW9udGgoKVwiPlxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMzIwIDUxMlwiPlxyXG4gICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgZD1cIk05NiA0ODBjLTguMTg4IDAtMTYuMzgtMy4xMjUtMjIuNjItOS4zNzVjLTEyLjUtMTIuNS0xMi41LTMyLjc1IDAtNDUuMjVMMjQyLjggMjU2TDczLjM4IDg2LjYzYy0xMi41LTEyLjUtMTIuNS0zMi43NSAwLTQ1LjI1czMyLjc1LTEyLjUgNDUuMjUgMGwxOTIgMTkyYzEyLjUgMTIuNSAxMi41IDMyLjc1IDAgNDUuMjVsLTE5MiAxOTJDMTEyLjQgNDc2LjkgMTA0LjIgNDgwIDk2IDQ4MHpcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9hPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlcl9fZGF5cy1jb250YWluZXJcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZGF0ZXBpY2tlcl9fZGF5c1wiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiBkYXlzTWFwcGluZ1tsYW5ndWFnZV1bZGF5RGlzcGxheVR5cGVdOyBpbmRleCBhcyBpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyX193ZWVrZGF5XCI+e3sgZGF5IH19PC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRlcGlja2VyX19kYXRlLWNvbnRhaW5lclwiXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0ZSBvZiBjdXJyZW50TW9udGhEYXRhW2ldXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaGFzRnV0dXJlOyBlbHNlIG5vRnV0dXJlRGF0ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJkYXRlXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGVwaWNrZXJfX2RhdGVcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5kYXRlcGlja2VyX19kYXRlLS1hY3RpdmVdPVwiXHJcbiAgICAgICAgICAgICAgICBkYXRlID09PSBzZWxlY3RlZERhdGU/LmRheSAmJlxyXG4gICAgICAgICAgICAgICAgY3VycmVudE5lcGFsaURhdGUubW9udGggPT09IHNlbGVjdGVkRGF0ZT8ubW9udGggJiZcclxuICAgICAgICAgICAgICAgIGN1cnJlbnROZXBhbGlEYXRlLnllYXIgPT09IHNlbGVjdGVkRGF0ZT8ueWVhclxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmRhdGVwaWNrZXJfX2RhdGUtLWN1cnJlbnQtZGF5XT1cIlxyXG4gICAgICAgICAgICAgICAgZGF0ZSA9PT0gbmVwYWxpRGF0ZVRvZGF5LmRheSAmJlxyXG4gICAgICAgICAgICAgICAgY3VycmVudE5lcGFsaURhdGUubW9udGggPT09IG5lcGFsaURhdGVUb2RheS5tb250aCAmJlxyXG4gICAgICAgICAgICAgICAgY3VycmVudE5lcGFsaURhdGUueWVhciA9PT0gbmVwYWxpRGF0ZVRvZGF5LnllYXJcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXRlKGRhdGUpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IGRhdGUgfCB0b05wOiBsYW5ndWFnZTpcIm51bWJlclwiIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWRhdGVcIiBjbGFzcz1cImRhdGVwaWNrZXJfX2RhdGUtLWRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4+Jm5ic3A7PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9GdXR1cmVEYXRlPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIGRhdGUgJiZcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS55ZWFyICogMzY1ICtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoICogMzAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGUgPD1cclxuICAgICAgICAgICAgICAgICAgICBuZXBhbGlEYXRlVG9kYXkuZGF5ICtcclxuICAgICAgICAgICAgICAgICAgICAgIG5lcGFsaURhdGVUb2RheS5tb250aCAqIDMwICtcclxuICAgICAgICAgICAgICAgICAgICAgIG5lcGFsaURhdGVUb2RheS55ZWFyICogMzY1O1xyXG4gICAgICAgICAgICAgICAgZWxzZSBkaXNhYmxlZERhdGVzXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGVwaWNrZXJfX2RhdGVcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5kYXRlcGlja2VyX19kYXRlLS1hY3RpdmVdPVwiXHJcbiAgICAgICAgICAgICAgICBkYXRlID09PSBzZWxlY3RlZERhdGU/LmRheSAmJlxyXG4gICAgICAgICAgICAgICAgY3VycmVudE5lcGFsaURhdGUubW9udGggPT09IHNlbGVjdGVkRGF0ZT8ubW9udGggJiZcclxuICAgICAgICAgICAgICAgIGN1cnJlbnROZXBhbGlEYXRlLnllYXIgPT09IHNlbGVjdGVkRGF0ZT8ueWVhclxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmRhdGVwaWNrZXJfX2RhdGUtLWN1cnJlbnQtZGF5XT1cIlxyXG4gICAgICAgICAgICAgICAgZGF0ZSA9PT0gbmVwYWxpRGF0ZVRvZGF5LmRheSAmJlxyXG4gICAgICAgICAgICAgICAgY3VycmVudE5lcGFsaURhdGUubW9udGggPT09IG5lcGFsaURhdGVUb2RheS5tb250aCAmJlxyXG4gICAgICAgICAgICAgICAgY3VycmVudE5lcGFsaURhdGUueWVhciA9PT0gbmVwYWxpRGF0ZVRvZGF5LnllYXJcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXRlKGRhdGUpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IGRhdGUgfCB0b05wOiBsYW5ndWFnZTpcIm51bWJlclwiIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkaXNhYmxlZERhdGVzPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyX19kYXRlIGRhdGVwaWNrZXJfX2RhdGUtLWRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBkYXRlIHwgdG9OcDogbGFuZ3VhZ2U6XCJudW1iZXJcIiB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFkYXRlXCIgY2xhc3M9XCJkYXRlcGlja2VyX19kYXRlLS1kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuPiZuYnNwOzwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS0uZGF0ZXBpY2tlcl9fZGF0ZS1jb250YWluZXIgZW5kcy0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLS5kYXRlcGlja2VyX19kYXlzIGVuZHMtLT5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLS5kYXRlcGlja2VyX19kYXlzLWNvbnRhaW5lciBlbmRzLS0+XHJcbiAgPC9kaXY+XHJcbiAgPCEtLS5kYXRlcGlja2VyX19jb250YWluZXIgZW5kcy0tPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
|
@@ -674,7 +674,7 @@ NpDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
674
674
|
useExisting: forwardRef(() => NpDatePickerComponent),
|
|
675
675
|
multi: true,
|
|
676
676
|
},
|
|
677
|
-
], ngImport: i0, template: "<div class=\"nepali-date-picker\" [ngClass]=\"theme\">\r\n <input\r\n class=\"ngx_np_datepicker_input\"\r\n type=\"text\"\r\n [value]=\"formattedDate\"\r\n (focus)=\"open()\"\r\n (keydown)=\"$event.preventDefault()\"\r\n aria-hidden=\"true\"\r\n placeholder=\"yyyy/mm/dd\"\r\n />\r\n <a\r\n class=\"form-icon\"\r\n (click)=\"toggleOpen()\"\r\n [ngClass]=\"isOpen ? 'active' : ''\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path\r\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\r\n />\r\n </svg>\r\n </a>\r\n <ng-container [ngTemplateOutlet]=\"npdp\" *ngIf=\"isOpen\"></ng-container>\r\n</div>\r\n<ng-template #npdp>\r\n <div class=\"datepicker__container\">\r\n <div class=\"datepicker__options-container\">\r\n <a class=\"prev-month\" (click)=\"prevMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\"\r\n />\r\n </svg>\r\n </a>\r\n <a class=\"select-today\" (click)=\"selectToday()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-home\"><path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"></path><polyline points=\"9 22 9 12 15 12 15 22\"></polyline></svg>\r\n </a>\r\n <span class=\"datepicker__options-month-container\">\r\n \r\n <select (change)=\"selectMonth($event)\">\r\n <option\r\n *ngFor=\"\r\n let month of monthsMapping[language][monthDisplayType];\r\n index as i\r\n \"\r\n [value]=\"month\"\r\n [selected]=\"i === currentNepaliDate?.month\"\r\n >\r\n {{ month }}\r\n </option>\r\n </select>\r\n </span>\r\n <span class=\"datepicker__options-year-container\">\r\n \r\n <select (change)=\"selectYear($event)\">\r\n <option\r\n *ngFor=\"let year of years; index as i\"\r\n [value]=\"year\"\r\n [selected]=\"year == currentNepaliDate?.year\"\r\n >\r\n {{ year | toNp: language:\"number\" }}\r\n </option>\r\n </select>\r\n </span>\r\n \r\n <a class=\"next-month\" (click)=\"nextMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\"\r\n />\r\n </svg>\r\n </a>\r\n </div>\r\n <div class=\"datepicker__days-container\">\r\n <div\r\n class=\"datepicker__days\"\r\n *ngFor=\"let day of daysMapping[language][dayDisplayType]; index as i\"\r\n >\r\n <div class=\"datepicker__weekday\">{{ day }}</div>\r\n <div\r\n class=\"datepicker__date-container\"\r\n *ngFor=\"let date of currentMonthData[i]\"\r\n >\r\n <div *ngIf=\"hasFuture; else noFutureDate\">\r\n <div\r\n *ngIf=\"date\"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === selectedDate?.day &&\r\n currentNepaliDate.month === selectedDate?.month &&\r\n currentNepaliDate.year === selectedDate?.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language:\"number\" }}\r\n </div>\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span> </span>\r\n </div>\r\n </div>\r\n\r\n <ng-template #noFutureDate>\r\n <div\r\n *ngIf=\"\r\n date &&\r\n this.currentNepaliDate.year * 365 +\r\n this.currentNepaliDate.month * 30 +\r\n date <=\r\n nepaliDateToday.day +\r\n nepaliDateToday.month * 30 +\r\n nepaliDateToday.year * 365;\r\n else disabledDates\r\n \"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === selectedDate?.day &&\r\n currentNepaliDate.month === selectedDate?.month &&\r\n currentNepaliDate.year === selectedDate?.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language:\"number\" }}\r\n </div>\r\n\r\n <ng-template #disabledDates>\r\n <div class=\"datepicker__date datepicker__date--disabled\">\r\n {{ date | toNp: language:\"number\" }}\r\n </div>\r\n </ng-template>\r\n\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span> </span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <!--.datepicker__date-container ends-->\r\n </div>\r\n <!--.datepicker__days ends-->\r\n </div>\r\n <!--.datepicker__days-container ends-->\r\n </div>\r\n <!--.datepicker__container ends-->\r\n</ng-template>\r\n", styles: [".nepali-date-picker.nepali-date-picker{position:relative;display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:1em}.nepali-date-picker a.active svg{fill:#337ab7;opacity:.9}.nepali-date-picker .form-icon svg{width:14px;opacity:.3;position:absolute;right:8px;top:12px;cursor:pointer}.datepicker__container{border:1px solid #eee;background:#fff;width:294px;box-shadow:#0a0a0f33 0 7px 29px;position:absolute;z-index:99999}.datepicker__options-container{padding:12px 5px;border-bottom:1px solid #eee;display:flex;justify-content:space-evenly;background-color:#337ab7;color:#fff;line-height:25px;font-size:1em}.datepicker__days-container{display:flex;justify-content:center;color:#777}.datepicker__days{text-align:center;padding-bottom:10px}.datepicker__weekday{padding:8px;font-weight:700;border-bottom:1px solid #eee;margin-bottom:14px}.datepicker__date-container{width:40px;height:40px;line-height:40px;margin:8px 0}.datepicker__date-container>div{height:100%}.datepicker__date{cursor:pointer;border-radius:4px}.datepicker__date:hover{background-color:#eee}.datepicker__date.datepicker__date--disabled{background:#f3f3f3;border-radius:0}.datepicker__date.datepicker__date--disabled:hover{background:#f3f3f3}.datepicker__date--active.datepicker__date--active{background-color:#337ab7;color:#fff}select:focus,select:focus-visible{outline:1px solid #fff}.datepicker__container select{border:none;color:#fff;background:none;font-size:inherit}select option{color:#333}.ngx_np_datepicker_input{border:1px solid #eee;padding:10px;font-size:16px;color:#777}.ngx_np_datepicker_input:focus-visible{outline:2px solid #337ab7}.prev-month,.next-month{padding:0;width:25px;height:25px;display:block;opacity:.5;border-radius:50%;background:#f3f3f3;cursor:pointer;text-align:center;line-height:23px}.next-month:hover,.prev-month:hover{background:#ccc}.prev-month svg,.next-month svg{max-width:8px;height:auto}.select-today{padding:0;width:22px;height:22px;display:block;cursor:pointer;color:#ffffffe6;text-align:center;line-height:23px}.select-today:hover{color:#ffffff80}.select-today svg{max-width:100%}.dark.nepali-date-picker a.active svg{fill:#000}.dark .datepicker__options-container{border-bottom:1px solid #000;background-color:#000;color:#fff}.dark .datepicker__container{background:#333}.dark select{color:#fff}.datepicker__date--current-day{background-color:#f3f3f3;border:2px dashed rgba(0,0,0,.2);position:relative;z-index:999;height:100%}.dark .datepicker__date--active.datepicker__date--active{background-color:#000;color:#fff}.dark .ngx_np_datepicker_input:focus-visible{outline:2px solid #000}.dark .datepicker__days{background-color:#333}.dark .datepicker__date:hover{background-color:#222;color:#fff}.dark .datepicker__days-container{color:#aaa}.dark .datepicker__weekday{border-bottom:1px solid #555}.dark .datepicker__date--current-day{background:#555;border:none}.light.nepali-date-picker a.active svg{fill:#777}.light .datepicker__options-container{border-bottom:none;background-color:#fff;color:#777}.light select{color:#777}.light .datepicker__date--active.datepicker__date--active{background-color:#aaa;color:#fff}.light .ngx_np_datepicker_input:focus-visible{outline:1px solid #ddd}.lightblue.nepali-date-picker a.active svg{fill:#38c5f0da}.lightblue .datepicker__options-container{background-color:#38c5f0da;color:#fff}.lightblue select{color:#fff}.lightblue .datepicker__date--active.datepicker__date--active{background-color:#38c5f0da;color:#fff}.lightblue .ngx_np_datepicker_input:focus-visible{outline:2px solid #38c5f0da}.lightblue .ngx_np_datepicker_input:focus-visible{outline:1px solid #38c5f0da}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], pipes: { "toNp": ToNpPipe }, encapsulation: i0.ViewEncapsulation.None });
|
|
677
|
+
], ngImport: i0, template: "<div class=\"nepali-date-picker\" [ngClass]=\"theme\">\r\n <input\r\n class=\"ngx_np_datepicker_input\"\r\n type=\"text\"\r\n [value]=\"formattedDate\"\r\n (focus)=\"open()\"\r\n (keydown)=\"$event.preventDefault()\"\r\n placeholder=\"yyyy/mm/dd\"\r\n />\r\n <a\r\n class=\"form-icon\"\r\n (click)=\"toggleOpen()\"\r\n [ngClass]=\"isOpen ? 'active' : ''\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path\r\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\r\n />\r\n </svg>\r\n </a>\r\n <ng-container [ngTemplateOutlet]=\"npdp\" *ngIf=\"isOpen\"></ng-container>\r\n</div>\r\n<ng-template #npdp>\r\n <div class=\"datepicker__container\">\r\n <div class=\"datepicker__options-container\">\r\n <a class=\"prev-month\" (click)=\"prevMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\"\r\n />\r\n </svg>\r\n </a>\r\n <a class=\"select-today\" (click)=\"selectToday()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-home\"><path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"></path><polyline points=\"9 22 9 12 15 12 15 22\"></polyline></svg>\r\n </a>\r\n <span class=\"datepicker__options-month-container\">\r\n \r\n <select (change)=\"selectMonth($event)\">\r\n <option\r\n *ngFor=\"\r\n let month of monthsMapping[language][monthDisplayType];\r\n index as i\r\n \"\r\n [value]=\"month\"\r\n [selected]=\"i === currentNepaliDate?.month\"\r\n >\r\n {{ month }}\r\n </option>\r\n </select>\r\n </span>\r\n <span class=\"datepicker__options-year-container\">\r\n \r\n <select (change)=\"selectYear($event)\">\r\n <option\r\n *ngFor=\"let year of years; index as i\"\r\n [value]=\"year\"\r\n [selected]=\"year == currentNepaliDate?.year\"\r\n >\r\n {{ year | toNp: language:\"number\" }}\r\n </option>\r\n </select>\r\n </span>\r\n \r\n <a class=\"next-month\" (click)=\"nextMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\"\r\n />\r\n </svg>\r\n </a>\r\n </div>\r\n <div class=\"datepicker__days-container\">\r\n <div\r\n class=\"datepicker__days\"\r\n *ngFor=\"let day of daysMapping[language][dayDisplayType]; index as i\"\r\n >\r\n <div class=\"datepicker__weekday\">{{ day }}</div>\r\n <div\r\n class=\"datepicker__date-container\"\r\n *ngFor=\"let date of currentMonthData[i]\"\r\n >\r\n <div *ngIf=\"hasFuture; else noFutureDate\">\r\n <div\r\n *ngIf=\"date\"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === selectedDate?.day &&\r\n currentNepaliDate.month === selectedDate?.month &&\r\n currentNepaliDate.year === selectedDate?.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language:\"number\" }}\r\n </div>\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span> </span>\r\n </div>\r\n </div>\r\n\r\n <ng-template #noFutureDate>\r\n <div\r\n *ngIf=\"\r\n date &&\r\n this.currentNepaliDate.year * 365 +\r\n this.currentNepaliDate.month * 30 +\r\n date <=\r\n nepaliDateToday.day +\r\n nepaliDateToday.month * 30 +\r\n nepaliDateToday.year * 365;\r\n else disabledDates\r\n \"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === selectedDate?.day &&\r\n currentNepaliDate.month === selectedDate?.month &&\r\n currentNepaliDate.year === selectedDate?.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language:\"number\" }}\r\n </div>\r\n\r\n <ng-template #disabledDates>\r\n <div class=\"datepicker__date datepicker__date--disabled\">\r\n {{ date | toNp: language:\"number\" }}\r\n </div>\r\n </ng-template>\r\n\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span> </span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <!--.datepicker__date-container ends-->\r\n </div>\r\n <!--.datepicker__days ends-->\r\n </div>\r\n <!--.datepicker__days-container ends-->\r\n </div>\r\n <!--.datepicker__container ends-->\r\n</ng-template>\r\n", styles: [".nepali-date-picker.nepali-date-picker{position:relative;display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:1em}.nepali-date-picker a.active svg{fill:#337ab7;opacity:.9}.nepali-date-picker .form-icon svg{width:14px;opacity:.3;position:absolute;right:8px;top:12px;cursor:pointer}.datepicker__container{border:1px solid #eee;background:#fff;width:294px;box-shadow:#0a0a0f33 0 7px 29px;position:absolute;z-index:99999}.datepicker__options-container{padding:12px 5px;border-bottom:1px solid #eee;display:flex;justify-content:space-evenly;background-color:#337ab7;color:#fff;line-height:25px;font-size:1em}.datepicker__days-container{display:flex;justify-content:center;color:#777}.datepicker__days{text-align:center;padding-bottom:10px}.datepicker__weekday{padding:8px;font-weight:700;border-bottom:1px solid #eee;margin-bottom:0}.datepicker__date-container{width:40px;height:40px;line-height:40px;margin:0}.datepicker__date-container>div{height:100%}.datepicker__date{cursor:pointer;border-radius:4px}.datepicker__date:hover{background-color:#eee}.datepicker__date.datepicker__date--disabled{background:#f3f3f3;border-radius:0}.datepicker__date.datepicker__date--disabled:hover{background:#f3f3f3}.datepicker__date--active.datepicker__date--active{background-color:#337ab7;color:#fff}select:focus,select:focus-visible{outline:1px solid #fff}.datepicker__container select{border:none;color:#fff;background:none;font-size:inherit}select option{color:#333}.ngx_np_datepicker_input{border:1px solid #eee;padding:10px;font-size:16px;color:#777}.ngx_np_datepicker_input:focus-visible{outline:2px solid #337ab7}.prev-month,.next-month{padding:0;width:25px;height:25px;display:block;opacity:.5;border-radius:50%;background:#f3f3f3;cursor:pointer;text-align:center;line-height:23px}.next-month:hover,.prev-month:hover{background:#ccc}.prev-month svg,.next-month svg{max-width:8px;height:auto}.select-today{padding:0;width:22px;height:22px;display:block;cursor:pointer;color:#ffffffe6;text-align:center;line-height:23px}.select-today:hover{color:#ffffff80}.select-today svg{max-width:100%}.dark.nepali-date-picker a.active svg{fill:#000}.dark .datepicker__options-container{border-bottom:1px solid #000;background-color:#000;color:#fff}.dark .datepicker__container{background:#333}.dark select{color:#fff}.datepicker__date--current-day{background-color:#f3f3f3;border:2px dashed rgba(0,0,0,.2);position:relative;z-index:999;height:100%}.dark .datepicker__date--active.datepicker__date--active{background-color:#000;color:#fff}.dark .ngx_np_datepicker_input:focus-visible{outline:2px solid #000}.dark .datepicker__days{background-color:#333}.dark .datepicker__date:hover{background-color:#222;color:#fff}.dark .datepicker__days-container{color:#aaa}.dark .datepicker__weekday{border-bottom:1px solid #555}.dark .datepicker__date--current-day{background:#555;border:none}.light.nepali-date-picker a.active svg{fill:#777}.light .datepicker__options-container{border-bottom:none;background-color:#fff;color:#777}.light select{color:#777}.light .datepicker__date--active.datepicker__date--active{background-color:#aaa;color:#fff}.light .ngx_np_datepicker_input:focus-visible{outline:1px solid #ddd}.lightblue.nepali-date-picker a.active svg{fill:#38c5f0da}.lightblue .datepicker__options-container{background-color:#38c5f0da;color:#fff}.lightblue select{color:#fff}.lightblue .datepicker__date--active.datepicker__date--active{background-color:#38c5f0da;color:#fff}.lightblue .ngx_np_datepicker_input:focus-visible{outline:2px solid #38c5f0da}.lightblue .ngx_np_datepicker_input:focus-visible{outline:1px solid #38c5f0da}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], pipes: { "toNp": ToNpPipe }, encapsulation: i0.ViewEncapsulation.None });
|
|
678
678
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: NpDatePickerComponent, decorators: [{
|
|
679
679
|
type: Component,
|
|
680
680
|
args: [{ selector: 'np-datepicker', providers: [
|
|
@@ -683,7 +683,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
|
|
|
683
683
|
useExisting: forwardRef(() => NpDatePickerComponent),
|
|
684
684
|
multi: true,
|
|
685
685
|
},
|
|
686
|
-
], encapsulation: ViewEncapsulation.None, template: "<div class=\"nepali-date-picker\" [ngClass]=\"theme\">\r\n <input\r\n class=\"ngx_np_datepicker_input\"\r\n type=\"text\"\r\n [value]=\"formattedDate\"\r\n (focus)=\"open()\"\r\n (keydown)=\"$event.preventDefault()\"\r\n aria-hidden=\"true\"\r\n placeholder=\"yyyy/mm/dd\"\r\n />\r\n <a\r\n class=\"form-icon\"\r\n (click)=\"toggleOpen()\"\r\n [ngClass]=\"isOpen ? 'active' : ''\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path\r\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\r\n />\r\n </svg>\r\n </a>\r\n <ng-container [ngTemplateOutlet]=\"npdp\" *ngIf=\"isOpen\"></ng-container>\r\n</div>\r\n<ng-template #npdp>\r\n <div class=\"datepicker__container\">\r\n <div class=\"datepicker__options-container\">\r\n <a class=\"prev-month\" (click)=\"prevMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\"\r\n />\r\n </svg>\r\n </a>\r\n <a class=\"select-today\" (click)=\"selectToday()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-home\"><path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"></path><polyline points=\"9 22 9 12 15 12 15 22\"></polyline></svg>\r\n </a>\r\n <span class=\"datepicker__options-month-container\">\r\n \r\n <select (change)=\"selectMonth($event)\">\r\n <option\r\n *ngFor=\"\r\n let month of monthsMapping[language][monthDisplayType];\r\n index as i\r\n \"\r\n [value]=\"month\"\r\n [selected]=\"i === currentNepaliDate?.month\"\r\n >\r\n {{ month }}\r\n </option>\r\n </select>\r\n </span>\r\n <span class=\"datepicker__options-year-container\">\r\n \r\n <select (change)=\"selectYear($event)\">\r\n <option\r\n *ngFor=\"let year of years; index as i\"\r\n [value]=\"year\"\r\n [selected]=\"year == currentNepaliDate?.year\"\r\n >\r\n {{ year | toNp: language:\"number\" }}\r\n </option>\r\n </select>\r\n </span>\r\n \r\n <a class=\"next-month\" (click)=\"nextMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\"\r\n />\r\n </svg>\r\n </a>\r\n </div>\r\n <div class=\"datepicker__days-container\">\r\n <div\r\n class=\"datepicker__days\"\r\n *ngFor=\"let day of daysMapping[language][dayDisplayType]; index as i\"\r\n >\r\n <div class=\"datepicker__weekday\">{{ day }}</div>\r\n <div\r\n class=\"datepicker__date-container\"\r\n *ngFor=\"let date of currentMonthData[i]\"\r\n >\r\n <div *ngIf=\"hasFuture; else noFutureDate\">\r\n <div\r\n *ngIf=\"date\"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === selectedDate?.day &&\r\n currentNepaliDate.month === selectedDate?.month &&\r\n currentNepaliDate.year === selectedDate?.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language:\"number\" }}\r\n </div>\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span> </span>\r\n </div>\r\n </div>\r\n\r\n <ng-template #noFutureDate>\r\n <div\r\n *ngIf=\"\r\n date &&\r\n this.currentNepaliDate.year * 365 +\r\n this.currentNepaliDate.month * 30 +\r\n date <=\r\n nepaliDateToday.day +\r\n nepaliDateToday.month * 30 +\r\n nepaliDateToday.year * 365;\r\n else disabledDates\r\n \"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === selectedDate?.day &&\r\n currentNepaliDate.month === selectedDate?.month &&\r\n currentNepaliDate.year === selectedDate?.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language:\"number\" }}\r\n </div>\r\n\r\n <ng-template #disabledDates>\r\n <div class=\"datepicker__date datepicker__date--disabled\">\r\n {{ date | toNp: language:\"number\" }}\r\n </div>\r\n </ng-template>\r\n\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span> </span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <!--.datepicker__date-container ends-->\r\n </div>\r\n <!--.datepicker__days ends-->\r\n </div>\r\n <!--.datepicker__days-container ends-->\r\n </div>\r\n <!--.datepicker__container ends-->\r\n</ng-template>\r\n", styles: [".nepali-date-picker.nepali-date-picker{position:relative;display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:1em}.nepali-date-picker a.active svg{fill:#337ab7;opacity:.9}.nepali-date-picker .form-icon svg{width:14px;opacity:.3;position:absolute;right:8px;top:12px;cursor:pointer}.datepicker__container{border:1px solid #eee;background:#fff;width:294px;box-shadow:#0a0a0f33 0 7px 29px;position:absolute;z-index:99999}.datepicker__options-container{padding:12px 5px;border-bottom:1px solid #eee;display:flex;justify-content:space-evenly;background-color:#337ab7;color:#fff;line-height:25px;font-size:1em}.datepicker__days-container{display:flex;justify-content:center;color:#777}.datepicker__days{text-align:center;padding-bottom:10px}.datepicker__weekday{padding:8px;font-weight:700;border-bottom:1px solid #eee;margin-bottom:14px}.datepicker__date-container{width:40px;height:40px;line-height:40px;margin:8px 0}.datepicker__date-container>div{height:100%}.datepicker__date{cursor:pointer;border-radius:4px}.datepicker__date:hover{background-color:#eee}.datepicker__date.datepicker__date--disabled{background:#f3f3f3;border-radius:0}.datepicker__date.datepicker__date--disabled:hover{background:#f3f3f3}.datepicker__date--active.datepicker__date--active{background-color:#337ab7;color:#fff}select:focus,select:focus-visible{outline:1px solid #fff}.datepicker__container select{border:none;color:#fff;background:none;font-size:inherit}select option{color:#333}.ngx_np_datepicker_input{border:1px solid #eee;padding:10px;font-size:16px;color:#777}.ngx_np_datepicker_input:focus-visible{outline:2px solid #337ab7}.prev-month,.next-month{padding:0;width:25px;height:25px;display:block;opacity:.5;border-radius:50%;background:#f3f3f3;cursor:pointer;text-align:center;line-height:23px}.next-month:hover,.prev-month:hover{background:#ccc}.prev-month svg,.next-month svg{max-width:8px;height:auto}.select-today{padding:0;width:22px;height:22px;display:block;cursor:pointer;color:#ffffffe6;text-align:center;line-height:23px}.select-today:hover{color:#ffffff80}.select-today svg{max-width:100%}.dark.nepali-date-picker a.active svg{fill:#000}.dark .datepicker__options-container{border-bottom:1px solid #000;background-color:#000;color:#fff}.dark .datepicker__container{background:#333}.dark select{color:#fff}.datepicker__date--current-day{background-color:#f3f3f3;border:2px dashed rgba(0,0,0,.2);position:relative;z-index:999;height:100%}.dark .datepicker__date--active.datepicker__date--active{background-color:#000;color:#fff}.dark .ngx_np_datepicker_input:focus-visible{outline:2px solid #000}.dark .datepicker__days{background-color:#333}.dark .datepicker__date:hover{background-color:#222;color:#fff}.dark .datepicker__days-container{color:#aaa}.dark .datepicker__weekday{border-bottom:1px solid #555}.dark .datepicker__date--current-day{background:#555;border:none}.light.nepali-date-picker a.active svg{fill:#777}.light .datepicker__options-container{border-bottom:none;background-color:#fff;color:#777}.light select{color:#777}.light .datepicker__date--active.datepicker__date--active{background-color:#aaa;color:#fff}.light .ngx_np_datepicker_input:focus-visible{outline:1px solid #ddd}.lightblue.nepali-date-picker a.active svg{fill:#38c5f0da}.lightblue .datepicker__options-container{background-color:#38c5f0da;color:#fff}.lightblue select{color:#fff}.lightblue .datepicker__date--active.datepicker__date--active{background-color:#38c5f0da;color:#fff}.lightblue .ngx_np_datepicker_input:focus-visible{outline:2px solid #38c5f0da}.lightblue .ngx_np_datepicker_input:focus-visible{outline:1px solid #38c5f0da}\n"] }]
|
|
686
|
+
], encapsulation: ViewEncapsulation.None, template: "<div class=\"nepali-date-picker\" [ngClass]=\"theme\">\r\n <input\r\n class=\"ngx_np_datepicker_input\"\r\n type=\"text\"\r\n [value]=\"formattedDate\"\r\n (focus)=\"open()\"\r\n (keydown)=\"$event.preventDefault()\"\r\n placeholder=\"yyyy/mm/dd\"\r\n />\r\n <a\r\n class=\"form-icon\"\r\n (click)=\"toggleOpen()\"\r\n [ngClass]=\"isOpen ? 'active' : ''\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path\r\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\r\n />\r\n </svg>\r\n </a>\r\n <ng-container [ngTemplateOutlet]=\"npdp\" *ngIf=\"isOpen\"></ng-container>\r\n</div>\r\n<ng-template #npdp>\r\n <div class=\"datepicker__container\">\r\n <div class=\"datepicker__options-container\">\r\n <a class=\"prev-month\" (click)=\"prevMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\"\r\n />\r\n </svg>\r\n </a>\r\n <a class=\"select-today\" (click)=\"selectToday()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-home\"><path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"></path><polyline points=\"9 22 9 12 15 12 15 22\"></polyline></svg>\r\n </a>\r\n <span class=\"datepicker__options-month-container\">\r\n \r\n <select (change)=\"selectMonth($event)\">\r\n <option\r\n *ngFor=\"\r\n let month of monthsMapping[language][monthDisplayType];\r\n index as i\r\n \"\r\n [value]=\"month\"\r\n [selected]=\"i === currentNepaliDate?.month\"\r\n >\r\n {{ month }}\r\n </option>\r\n </select>\r\n </span>\r\n <span class=\"datepicker__options-year-container\">\r\n \r\n <select (change)=\"selectYear($event)\">\r\n <option\r\n *ngFor=\"let year of years; index as i\"\r\n [value]=\"year\"\r\n [selected]=\"year == currentNepaliDate?.year\"\r\n >\r\n {{ year | toNp: language:\"number\" }}\r\n </option>\r\n </select>\r\n </span>\r\n \r\n <a class=\"next-month\" (click)=\"nextMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\"\r\n />\r\n </svg>\r\n </a>\r\n </div>\r\n <div class=\"datepicker__days-container\">\r\n <div\r\n class=\"datepicker__days\"\r\n *ngFor=\"let day of daysMapping[language][dayDisplayType]; index as i\"\r\n >\r\n <div class=\"datepicker__weekday\">{{ day }}</div>\r\n <div\r\n class=\"datepicker__date-container\"\r\n *ngFor=\"let date of currentMonthData[i]\"\r\n >\r\n <div *ngIf=\"hasFuture; else noFutureDate\">\r\n <div\r\n *ngIf=\"date\"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === selectedDate?.day &&\r\n currentNepaliDate.month === selectedDate?.month &&\r\n currentNepaliDate.year === selectedDate?.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language:\"number\" }}\r\n </div>\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span> </span>\r\n </div>\r\n </div>\r\n\r\n <ng-template #noFutureDate>\r\n <div\r\n *ngIf=\"\r\n date &&\r\n this.currentNepaliDate.year * 365 +\r\n this.currentNepaliDate.month * 30 +\r\n date <=\r\n nepaliDateToday.day +\r\n nepaliDateToday.month * 30 +\r\n nepaliDateToday.year * 365;\r\n else disabledDates\r\n \"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n date === selectedDate?.day &&\r\n currentNepaliDate.month === selectedDate?.month &&\r\n currentNepaliDate.year === selectedDate?.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp: language:\"number\" }}\r\n </div>\r\n\r\n <ng-template #disabledDates>\r\n <div class=\"datepicker__date datepicker__date--disabled\">\r\n {{ date | toNp: language:\"number\" }}\r\n </div>\r\n </ng-template>\r\n\r\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\r\n <span> </span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <!--.datepicker__date-container ends-->\r\n </div>\r\n <!--.datepicker__days ends-->\r\n </div>\r\n <!--.datepicker__days-container ends-->\r\n </div>\r\n <!--.datepicker__container ends-->\r\n</ng-template>\r\n", styles: [".nepali-date-picker.nepali-date-picker{position:relative;display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:1em}.nepali-date-picker a.active svg{fill:#337ab7;opacity:.9}.nepali-date-picker .form-icon svg{width:14px;opacity:.3;position:absolute;right:8px;top:12px;cursor:pointer}.datepicker__container{border:1px solid #eee;background:#fff;width:294px;box-shadow:#0a0a0f33 0 7px 29px;position:absolute;z-index:99999}.datepicker__options-container{padding:12px 5px;border-bottom:1px solid #eee;display:flex;justify-content:space-evenly;background-color:#337ab7;color:#fff;line-height:25px;font-size:1em}.datepicker__days-container{display:flex;justify-content:center;color:#777}.datepicker__days{text-align:center;padding-bottom:10px}.datepicker__weekday{padding:8px;font-weight:700;border-bottom:1px solid #eee;margin-bottom:0}.datepicker__date-container{width:40px;height:40px;line-height:40px;margin:0}.datepicker__date-container>div{height:100%}.datepicker__date{cursor:pointer;border-radius:4px}.datepicker__date:hover{background-color:#eee}.datepicker__date.datepicker__date--disabled{background:#f3f3f3;border-radius:0}.datepicker__date.datepicker__date--disabled:hover{background:#f3f3f3}.datepicker__date--active.datepicker__date--active{background-color:#337ab7;color:#fff}select:focus,select:focus-visible{outline:1px solid #fff}.datepicker__container select{border:none;color:#fff;background:none;font-size:inherit}select option{color:#333}.ngx_np_datepicker_input{border:1px solid #eee;padding:10px;font-size:16px;color:#777}.ngx_np_datepicker_input:focus-visible{outline:2px solid #337ab7}.prev-month,.next-month{padding:0;width:25px;height:25px;display:block;opacity:.5;border-radius:50%;background:#f3f3f3;cursor:pointer;text-align:center;line-height:23px}.next-month:hover,.prev-month:hover{background:#ccc}.prev-month svg,.next-month svg{max-width:8px;height:auto}.select-today{padding:0;width:22px;height:22px;display:block;cursor:pointer;color:#ffffffe6;text-align:center;line-height:23px}.select-today:hover{color:#ffffff80}.select-today svg{max-width:100%}.dark.nepali-date-picker a.active svg{fill:#000}.dark .datepicker__options-container{border-bottom:1px solid #000;background-color:#000;color:#fff}.dark .datepicker__container{background:#333}.dark select{color:#fff}.datepicker__date--current-day{background-color:#f3f3f3;border:2px dashed rgba(0,0,0,.2);position:relative;z-index:999;height:100%}.dark .datepicker__date--active.datepicker__date--active{background-color:#000;color:#fff}.dark .ngx_np_datepicker_input:focus-visible{outline:2px solid #000}.dark .datepicker__days{background-color:#333}.dark .datepicker__date:hover{background-color:#222;color:#fff}.dark .datepicker__days-container{color:#aaa}.dark .datepicker__weekday{border-bottom:1px solid #555}.dark .datepicker__date--current-day{background:#555;border:none}.light.nepali-date-picker a.active svg{fill:#777}.light .datepicker__options-container{border-bottom:none;background-color:#fff;color:#777}.light select{color:#777}.light .datepicker__date--active.datepicker__date--active{background-color:#aaa;color:#fff}.light .ngx_np_datepicker_input:focus-visible{outline:1px solid #ddd}.lightblue.nepali-date-picker a.active svg{fill:#38c5f0da}.lightblue .datepicker__options-container{background-color:#38c5f0da;color:#fff}.lightblue select{color:#fff}.lightblue .datepicker__date--active.datepicker__date--active{background-color:#38c5f0da;color:#fff}.lightblue .ngx_np_datepicker_input:focus-visible{outline:2px solid #38c5f0da}.lightblue .ngx_np_datepicker_input:focus-visible{outline:1px solid #38c5f0da}\n"] }]
|
|
687
687
|
}], ctorParameters: function () { return [{ type: NpDatePickerService }, { type: i0.ElementRef }]; }, propDecorators: { theme: [{
|
|
688
688
|
type: Input
|
|
689
689
|
}], language: [{
|