@idea-ionic/agenda 7.1.3 → 7.2.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/esm2022/src/agenda.component.mjs +5 -5
- package/esm2022/src/agenda.module.mjs +4 -4
- package/esm2022/src/calendar.component.mjs +5 -5
- package/esm2022/src/calendarCreation.component.mjs +5 -5
- package/esm2022/src/calendarItem.component.mjs +5 -5
- package/esm2022/src/calendars.service.mjs +5 -5
- package/esm2022/src/dateFormatter.provider.mjs +3 -3
- package/fesm2022/idea-ionic-agenda.mjs +29 -29
- package/fesm2022/idea-ionic-agenda.mjs.map +1 -1
- package/package.json +16 -15
- package/src/calendarCreation.component.d.ts +1 -1
|
@@ -282,13 +282,13 @@ export class IDEAAgendaComponent {
|
|
|
282
282
|
fixedEnd.setMinutes(agendaBooking.start.getMinutes() + segmentSizeInMinutes);
|
|
283
283
|
return fixedEnd;
|
|
284
284
|
}
|
|
285
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
286
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.8", type: IDEAAgendaComponent, selector: "idea-agenda", inputs: { events: "events", excludeDays: "excludeDays", dayStartHour: "dayStartHour", dayEndHour: "dayEndHour", hourSegments: "hourSegments", activeDayIsOpen: "activeDayIsOpen", view: "view", allowedViews: "allowedViews", onlyFuture: "onlyFuture", titleNotes: "titleNotes", newEventTemplate: "newEventTemplate", allowDragToCreate: "allowDragToCreate", parentContent: "parentContent" }, outputs: { selectEvent: "selectEvent", selectDay: "selectDay", selectSlot: "selectSlot", newEventByDrag: "newEventByDrag", changeEvent: "changeEvent", changeDate: "changeDate", beforeWeekOrDayViewRenderEmitter: "beforeWeekOrDayViewRenderEmitter", beforeMonthViewRenderEmitter: "beforeMonthViewRenderEmitter" }, ngImport: i0, template: "<div class=\"agenda\">\n <!-- TOOLBAR -->\n <ion-row class=\"ion-align-items-center\">\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"5\"\n [sizeSm]=\"3\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-item lines=\"none\" class=\"calendarViewSelector\" *ngIf=\"allowedViews.length > 1\">\n <ion-select\n interface=\"popover\"\n [value]=\"view\"\n (ionChange)=\"$event?.detail ? setView($event.detail.value) : null\"\n >\n <ion-select-option *ngFor=\"let view of allowedViews\" [value]=\"view\">\n {{ 'IDEA_AGENDA.' + view | uppercase | translate }}\n </ion-select-option>\n </ion-select>\n </ion-item>\n </ion-col>\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"7\"\n [sizeSm]=\"4\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarPreviousView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-back-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarToday\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"today-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarNextView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-forward-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-align-self-center titleCol\" [size]=\"12\" [sizeSm]=\"5\" [pullSm]=\"7\" [sizeLg]=\"8\" [pullLg]=\"4\">\n <h2>{{ viewDate | calendarDate : view + 'ViewTitle' : locale }}</h2>\n <p *ngIf=\"titleNotes\">{{ titleNotes }}</p>\n </ion-col>\n </ion-row>\n <!-- TEMPLATES (touch only what's necessary and leave everything else as it is) -->\n <ng-template #eventTitleTemplate let-event=\"event\" let-view=\"view\">\n <span\n class=\"cal-event-title\"\n [class.noWrap]=\"event.allDay\"\n [attr.aria-hidden]=\"{} | calendarA11y : 'hideEventTitle'\"\n >\n {{ event.title | calendarEventTitle : view : event }}\n <p *ngIf=\"!event.allDay\">{{ getPreviewDescription(event.description) }}</p>\n </span>\n </ng-template>\n <ng-template\n #eventTemplate\n let-weekEvent=\"weekEvent\"\n let-tooltipPlacement=\"tooltipPlacement\"\n let-eventClicked=\"eventClicked\"\n let-tooltipTemplate=\"tooltipTemplate\"\n let-tooltipAppendToBody=\"tooltipAppendToBody\"\n let-tooltipDisabled=\"tooltipDisabled\"\n let-tooltipDelay=\"tooltipDelay\"\n let-column=\"column\"\n let-daysInWeek=\"daysInWeek\"\n >\n <div\n class=\"cal-event\"\n [class.external]=\"weekEvent.event.external\"\n [class.needsAction]=\"Attendance.NEEDS_ACTION === weekEvent.event.attendance\"\n [class.declined]=\"Attendance.DECLINED === weekEvent.event.attendance\"\n [class.tentative]=\"Attendance.TENTATIVE === weekEvent.event.attendance\"\n [style.border-left-color]=\"weekEvent.event.color?.primary\"\n [style.color]=\"getAlternateColor(weekEvent.event.color?.primary, darkMode ? 80 : -40)\"\n [style.background-color]=\"getAlternateColor(weekEvent.event.color?.primary, darkMode ? 60 : 80, 0.2)\"\n [mwlCalendarTooltip]=\"!tooltipDisabled && !isMobile() ? getTooltipContent(weekEvent.event) : ''\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipEvent]=\"weekEvent.tempEvent || weekEvent.event\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n (mwlClick)=\"eventClicked.emit({ sourceEvent: $event })\"\n (mwlKeydownEnter)=\"eventClicked.emit({ sourceEvent: $event })\"\n tabindex=\"0\"\n role=\"application\"\n [attr.aria-label]=\"\n { event: weekEvent.tempEvent || weekEvent.event, locale: locale } | calendarA11y : 'eventDescription'\n \"\n >\n <mwl-calendar-event-actions [event]=\"weekEvent.tempEvent || weekEvent.event\"></mwl-calendar-event-actions>\n &ngsp;\n <mwl-calendar-event-title\n [event]=\"weekEvent.tempEvent || weekEvent.event\"\n [customTemplate]=\"eventTitleTemplate\"\n [view]=\"daysInWeek === 1 ? 'day' : 'week'\"\n >\n </mwl-calendar-event-title>\n <div class=\"eventGadgets\" *ngIf=\"!weekEvent.event.allDay\">\n <ion-icon *ngFor=\"let icon of weekEvent.event.icons\" [name]=\"icon.name\" [title]=\"icon.title\"></ion-icon>\n <idea-user-avatar\n size=\"mini\"\n *ngFor=\"let avatar of weekEvent.event.avatars\"\n [src]=\"avatar.url\"\n [name]=\"avatar.title\"\n ></idea-user-avatar>\n </div>\n </div>\n </ng-template>\n <ng-template\n #hourSegmentTemplate\n let-segment=\"segment\"\n let-locale=\"locale\"\n let-segmentHeight=\"segmentHeight\"\n let-isTimeLabel=\"isTimeLabel\"\n >\n <div\n #segmentElement\n class=\"cal-hour-segment\"\n [style.height.px]=\"segmentHeight\"\n [class.cal-hour-start]=\"segment.isStart\"\n [class.cal-after-hour-start]=\"!segment.isStart\"\n [ngClass]=\"segment.cssClass\"\n (mousedown)=\"allowDragToCreate ? startDragToCreate($event, segment.date, segmentElement) : null\"\n (touchstart)=\"allowDragToCreate ? startDragToCreate($event, segment.date, segmentElement) : null\"\n >\n <div class=\"cal-time\" *ngIf=\"isTimeLabel\">\n {{ segment.date | calendarDate : 'weekViewHour' : locale }}\n </div>\n </div>\n </ng-template>\n <!-- VIEWS -->\n <div [ngSwitch]=\"view\">\n <mwl-calendar-month-view\n *ngSwitchCase=\"CalendarView.Month\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [activeDayIsOpen]=\"activeDayIsOpen\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayClicked)=\"changeDay($event.day)\"\n (beforeViewRender)=\"beforeMonthViewRender($event)\"\n >\n </mwl-calendar-month-view>\n <mwl-calendar-week-view\n *ngSwitchCase=\"CalendarView.Week\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n [hourSegmentTemplate]=\"hourSegmentTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayHeaderClicked)=\"dateIsValid($event.day.date) ? selectDay.emit($event.day.date) : null\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-week-view>\n <mwl-calendar-day-view\n *ngSwitchCase=\"CalendarView.Day\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n [hourSegmentTemplate]=\"hourSegmentTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-day-view>\n </div>\n</div>\n", styles: [".agenda{margin-top:15px}.agenda ion-col.titleCol{padding-left:8px}.agenda ion-col.titleCol h2,.agenda ion-col.titleCol p{margin:0}.agenda ion-col.titleCol h2{font-size:1.2em}.agenda ion-col.titleCol p{font-size:.8em;font-style:italic}.agenda .calendarViewSelector{background-color:transparent;--ion-background-color: transparent;--background: transparent}.agenda .calendarViewSelector ion-select{max-width:100%;width:100%;padding-left:0;font-weight:500}.agenda .eventGadgets{margin-top:4px;margin-left:5px;text-align:right}.agenda .eventGadgets idea-user-avatar{display:block;float:left;margin:2px 1px}.agenda .eventGadgets ion-icon{padding-right:2px;opacity:.7;font-size:1.15em}@media only screen and (max-width: 575px){.agenda ion-col.titleCol{padding:0 8px 12px;text-align:center}}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "component", type: i1.IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "expandedIcon", "fill", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "legacy", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: i1.IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { kind: "directive", type: i1.SelectValueAccessor, selector: "ion-range, ion-select, ion-radio-group, ion-segment, ion-datetime" }, { kind: "component", type: i2.IDEAUserAvatarComponent, selector: "idea-user-avatar", inputs: ["src", "name", "size", "color"] }, { kind: "component", type: i4.ɵCalendarEventActionsComponent, selector: "mwl-calendar-event-actions", inputs: ["event", "customTemplate"] }, { kind: "component", type: i4.ɵCalendarEventTitleComponent, selector: "mwl-calendar-event-title", inputs: ["event", "customTemplate", "view"] }, { kind: "directive", type: i4.ɵCalendarTooltipDirective, selector: "[mwlCalendarTooltip]", inputs: ["mwlCalendarTooltip", "tooltipPlacement", "tooltipTemplate", "tooltipEvent", "tooltipAppendToBody", "tooltipDelay"] }, { kind: "directive", type: i4.ɵCalendarPreviousViewDirective, selector: "[mwlCalendarPreviousView]", inputs: ["view", "viewDate", "excludeDays", "daysInWeek"], outputs: ["viewDateChange"] }, { kind: "directive", type: i4.ɵCalendarNextViewDirective, selector: "[mwlCalendarNextView]", inputs: ["view", "viewDate", "excludeDays", "daysInWeek"], outputs: ["viewDateChange"] }, { kind: "directive", type: i4.ɵCalendarTodayDirective, selector: "[mwlCalendarToday]", inputs: ["viewDate"], outputs: ["viewDateChange"] }, { kind: "directive", type: i4.ɵClickDirective, selector: "[mwlClick]", inputs: ["clickListenerDisabled"], outputs: ["mwlClick"] }, { kind: "directive", type: i4.ɵKeydownEnterDirective, selector: "[mwlKeydownEnter]", outputs: ["mwlKeydownEnter"] }, { kind: "component", type: i4.CalendarMonthViewComponent, selector: "mwl-calendar-month-view", inputs: ["viewDate", "events", "excludeDays", "activeDayIsOpen", "activeDay", "refresh", "locale", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "weekStartsOn", "headerTemplate", "cellTemplate", "openDayEventsTemplate", "eventTitleTemplate", "eventActionsTemplate", "weekendDays"], outputs: ["beforeViewRender", "dayClicked", "eventClicked", "columnHeaderClicked", "eventTimesChanged"] }, { kind: "component", type: i4.CalendarWeekViewComponent, selector: "mwl-calendar-week-view", inputs: ["viewDate", "events", "excludeDays", "refresh", "locale", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "weekStartsOn", "headerTemplate", "eventTemplate", "eventTitleTemplate", "eventActionsTemplate", "precision", "weekendDays", "snapDraggedEvents", "hourSegments", "hourDuration", "hourSegmentHeight", "minimumEventHeight", "dayStartHour", "dayStartMinute", "dayEndHour", "dayEndMinute", "hourSegmentTemplate", "eventSnapSize", "allDayEventsLabelTemplate", "daysInWeek", "currentTimeMarkerTemplate", "validateEventTimesChanged"], outputs: ["dayHeaderClicked", "eventClicked", "eventTimesChanged", "beforeViewRender", "hourSegmentClicked"] }, { kind: "component", type: i4.CalendarDayViewComponent, selector: "mwl-calendar-day-view", inputs: ["viewDate", "events", "hourSegments", "hourSegmentHeight", "hourDuration", "minimumEventHeight", "dayStartHour", "dayStartMinute", "dayEndHour", "dayEndMinute", "refresh", "locale", "eventSnapSize", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "hourSegmentTemplate", "eventTemplate", "eventTitleTemplate", "eventActionsTemplate", "snapDraggedEvents", "allDayEventsLabelTemplate", "currentTimeMarkerTemplate", "validateEventTimesChanged"], outputs: ["eventClicked", "hourSegmentClicked", "eventTimesChanged", "beforeViewRender"] }, { kind: "pipe", type: i3.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i2.IDEATranslatePipe, name: "translate" }, { kind: "pipe", type: i4.ɵCalendarDatePipe, name: "calendarDate" }, { kind: "pipe", type: i4.ɵCalendarEventTitlePipe, name: "calendarEventTitle" }, { kind: "pipe", type: i4.ɵCalendarA11yPipe, name: "calendarA11y" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
285
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: IDEAAgendaComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.Platform }, { token: i2.IDEATranslationsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
286
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: IDEAAgendaComponent, selector: "idea-agenda", inputs: { events: "events", excludeDays: "excludeDays", dayStartHour: "dayStartHour", dayEndHour: "dayEndHour", hourSegments: "hourSegments", activeDayIsOpen: "activeDayIsOpen", view: "view", allowedViews: "allowedViews", onlyFuture: "onlyFuture", titleNotes: "titleNotes", newEventTemplate: "newEventTemplate", allowDragToCreate: "allowDragToCreate", parentContent: "parentContent" }, outputs: { selectEvent: "selectEvent", selectDay: "selectDay", selectSlot: "selectSlot", newEventByDrag: "newEventByDrag", changeEvent: "changeEvent", changeDate: "changeDate", beforeWeekOrDayViewRenderEmitter: "beforeWeekOrDayViewRenderEmitter", beforeMonthViewRenderEmitter: "beforeMonthViewRenderEmitter" }, ngImport: i0, template: "<div class=\"agenda\">\n <!-- TOOLBAR -->\n <ion-row class=\"ion-align-items-center\">\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"5\"\n [sizeSm]=\"3\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-item lines=\"none\" class=\"calendarViewSelector\" *ngIf=\"allowedViews.length > 1\">\n <ion-select\n interface=\"popover\"\n [value]=\"view\"\n (ionChange)=\"$event?.detail ? setView($event.detail.value) : null\"\n >\n <ion-select-option *ngFor=\"let view of allowedViews\" [value]=\"view\">\n {{ 'IDEA_AGENDA.' + view | uppercase | translate }}\n </ion-select-option>\n </ion-select>\n </ion-item>\n </ion-col>\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"7\"\n [sizeSm]=\"4\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarPreviousView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-back-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarToday\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"today-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarNextView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-forward-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-align-self-center titleCol\" [size]=\"12\" [sizeSm]=\"5\" [pullSm]=\"7\" [sizeLg]=\"8\" [pullLg]=\"4\">\n <h2>{{ viewDate | calendarDate : view + 'ViewTitle' : locale }}</h2>\n <p *ngIf=\"titleNotes\">{{ titleNotes }}</p>\n </ion-col>\n </ion-row>\n <!-- TEMPLATES (touch only what's necessary and leave everything else as it is) -->\n <ng-template #eventTitleTemplate let-event=\"event\" let-view=\"view\">\n <span\n class=\"cal-event-title\"\n [class.noWrap]=\"event.allDay\"\n [attr.aria-hidden]=\"{} | calendarA11y : 'hideEventTitle'\"\n >\n {{ event.title | calendarEventTitle : view : event }}\n <p *ngIf=\"!event.allDay\">{{ getPreviewDescription(event.description) }}</p>\n </span>\n </ng-template>\n <ng-template\n #eventTemplate\n let-weekEvent=\"weekEvent\"\n let-tooltipPlacement=\"tooltipPlacement\"\n let-eventClicked=\"eventClicked\"\n let-tooltipTemplate=\"tooltipTemplate\"\n let-tooltipAppendToBody=\"tooltipAppendToBody\"\n let-tooltipDisabled=\"tooltipDisabled\"\n let-tooltipDelay=\"tooltipDelay\"\n let-column=\"column\"\n let-daysInWeek=\"daysInWeek\"\n >\n <div\n class=\"cal-event\"\n [class.external]=\"weekEvent.event.external\"\n [class.needsAction]=\"Attendance.NEEDS_ACTION === weekEvent.event.attendance\"\n [class.declined]=\"Attendance.DECLINED === weekEvent.event.attendance\"\n [class.tentative]=\"Attendance.TENTATIVE === weekEvent.event.attendance\"\n [style.border-left-color]=\"weekEvent.event.color?.primary\"\n [style.color]=\"getAlternateColor(weekEvent.event.color?.primary, darkMode ? 80 : -40)\"\n [style.background-color]=\"getAlternateColor(weekEvent.event.color?.primary, darkMode ? 60 : 80, 0.2)\"\n [mwlCalendarTooltip]=\"!tooltipDisabled && !isMobile() ? getTooltipContent(weekEvent.event) : ''\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipEvent]=\"weekEvent.tempEvent || weekEvent.event\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n (mwlClick)=\"eventClicked.emit({ sourceEvent: $event })\"\n (mwlKeydownEnter)=\"eventClicked.emit({ sourceEvent: $event })\"\n tabindex=\"0\"\n role=\"application\"\n [attr.aria-label]=\"\n { event: weekEvent.tempEvent || weekEvent.event, locale: locale } | calendarA11y : 'eventDescription'\n \"\n >\n <mwl-calendar-event-actions [event]=\"weekEvent.tempEvent || weekEvent.event\"></mwl-calendar-event-actions>\n &ngsp;\n <mwl-calendar-event-title\n [event]=\"weekEvent.tempEvent || weekEvent.event\"\n [customTemplate]=\"eventTitleTemplate\"\n [view]=\"daysInWeek === 1 ? 'day' : 'week'\"\n >\n </mwl-calendar-event-title>\n <div class=\"eventGadgets\" *ngIf=\"!weekEvent.event.allDay\">\n <ion-icon *ngFor=\"let icon of weekEvent.event.icons\" [name]=\"icon.name\" [title]=\"icon.title\"></ion-icon>\n <idea-user-avatar\n size=\"mini\"\n *ngFor=\"let avatar of weekEvent.event.avatars\"\n [src]=\"avatar.url\"\n [name]=\"avatar.title\"\n ></idea-user-avatar>\n </div>\n </div>\n </ng-template>\n <ng-template\n #hourSegmentTemplate\n let-segment=\"segment\"\n let-locale=\"locale\"\n let-segmentHeight=\"segmentHeight\"\n let-isTimeLabel=\"isTimeLabel\"\n >\n <div\n #segmentElement\n class=\"cal-hour-segment\"\n [style.height.px]=\"segmentHeight\"\n [class.cal-hour-start]=\"segment.isStart\"\n [class.cal-after-hour-start]=\"!segment.isStart\"\n [ngClass]=\"segment.cssClass\"\n (mousedown)=\"allowDragToCreate ? startDragToCreate($event, segment.date, segmentElement) : null\"\n (touchstart)=\"allowDragToCreate ? startDragToCreate($event, segment.date, segmentElement) : null\"\n >\n <div class=\"cal-time\" *ngIf=\"isTimeLabel\">\n {{ segment.date | calendarDate : 'weekViewHour' : locale }}\n </div>\n </div>\n </ng-template>\n <!-- VIEWS -->\n <div [ngSwitch]=\"view\">\n <mwl-calendar-month-view\n *ngSwitchCase=\"CalendarView.Month\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [activeDayIsOpen]=\"activeDayIsOpen\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayClicked)=\"changeDay($event.day)\"\n (beforeViewRender)=\"beforeMonthViewRender($event)\"\n >\n </mwl-calendar-month-view>\n <mwl-calendar-week-view\n *ngSwitchCase=\"CalendarView.Week\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n [hourSegmentTemplate]=\"hourSegmentTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayHeaderClicked)=\"dateIsValid($event.day.date) ? selectDay.emit($event.day.date) : null\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-week-view>\n <mwl-calendar-day-view\n *ngSwitchCase=\"CalendarView.Day\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n [hourSegmentTemplate]=\"hourSegmentTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-day-view>\n </div>\n</div>\n", styles: [".agenda{margin-top:15px}.agenda ion-col.titleCol{padding-left:8px}.agenda ion-col.titleCol h2,.agenda ion-col.titleCol p{margin:0}.agenda ion-col.titleCol h2{font-size:1.2em}.agenda ion-col.titleCol p{font-size:.8em;font-style:italic}.agenda .calendarViewSelector{background-color:transparent;--ion-background-color: transparent;--background: transparent}.agenda .calendarViewSelector ion-select{max-width:100%;width:100%;padding-left:0;font-weight:500}.agenda .eventGadgets{margin-top:4px;margin-left:5px;text-align:right}.agenda .eventGadgets idea-user-avatar{display:block;float:left;margin:2px 1px}.agenda .eventGadgets ion-icon{padding-right:2px;opacity:.7;font-size:1.15em}@media only screen and (max-width: 575px){.agenda ion-col.titleCol{padding:0 8px 12px;text-align:center}}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "component", type: i1.IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "expandedIcon", "fill", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "legacy", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: i1.IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { kind: "directive", type: i1.SelectValueAccessor, selector: "ion-select, ion-radio-group, ion-segment, ion-datetime" }, { kind: "component", type: i2.IDEAUserAvatarComponent, selector: "idea-user-avatar", inputs: ["src", "name", "size", "color"] }, { kind: "component", type: i4.ɵCalendarEventActionsComponent, selector: "mwl-calendar-event-actions", inputs: ["event", "customTemplate"] }, { kind: "component", type: i4.ɵCalendarEventTitleComponent, selector: "mwl-calendar-event-title", inputs: ["event", "customTemplate", "view"] }, { kind: "directive", type: i4.ɵCalendarTooltipDirective, selector: "[mwlCalendarTooltip]", inputs: ["mwlCalendarTooltip", "tooltipPlacement", "tooltipTemplate", "tooltipEvent", "tooltipAppendToBody", "tooltipDelay"] }, { kind: "directive", type: i4.ɵCalendarPreviousViewDirective, selector: "[mwlCalendarPreviousView]", inputs: ["view", "viewDate", "excludeDays", "daysInWeek"], outputs: ["viewDateChange"] }, { kind: "directive", type: i4.ɵCalendarNextViewDirective, selector: "[mwlCalendarNextView]", inputs: ["view", "viewDate", "excludeDays", "daysInWeek"], outputs: ["viewDateChange"] }, { kind: "directive", type: i4.ɵCalendarTodayDirective, selector: "[mwlCalendarToday]", inputs: ["viewDate"], outputs: ["viewDateChange"] }, { kind: "directive", type: i4.ɵClickDirective, selector: "[mwlClick]", inputs: ["clickListenerDisabled"], outputs: ["mwlClick"] }, { kind: "directive", type: i4.ɵKeydownEnterDirective, selector: "[mwlKeydownEnter]", outputs: ["mwlKeydownEnter"] }, { kind: "component", type: i4.CalendarMonthViewComponent, selector: "mwl-calendar-month-view", inputs: ["viewDate", "events", "excludeDays", "activeDayIsOpen", "activeDay", "refresh", "locale", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "weekStartsOn", "headerTemplate", "cellTemplate", "openDayEventsTemplate", "eventTitleTemplate", "eventActionsTemplate", "weekendDays"], outputs: ["beforeViewRender", "dayClicked", "eventClicked", "columnHeaderClicked", "eventTimesChanged"] }, { kind: "component", type: i4.CalendarWeekViewComponent, selector: "mwl-calendar-week-view", inputs: ["viewDate", "events", "excludeDays", "refresh", "locale", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "weekStartsOn", "headerTemplate", "eventTemplate", "eventTitleTemplate", "eventActionsTemplate", "precision", "weekendDays", "snapDraggedEvents", "hourSegments", "hourDuration", "hourSegmentHeight", "minimumEventHeight", "dayStartHour", "dayStartMinute", "dayEndHour", "dayEndMinute", "hourSegmentTemplate", "eventSnapSize", "allDayEventsLabelTemplate", "daysInWeek", "currentTimeMarkerTemplate", "validateEventTimesChanged", "resizeCursors"], outputs: ["dayHeaderClicked", "eventClicked", "eventTimesChanged", "beforeViewRender", "hourSegmentClicked"] }, { kind: "component", type: i4.CalendarDayViewComponent, selector: "mwl-calendar-day-view", inputs: ["viewDate", "events", "hourSegments", "hourSegmentHeight", "hourDuration", "minimumEventHeight", "dayStartHour", "dayStartMinute", "dayEndHour", "dayEndMinute", "refresh", "locale", "eventSnapSize", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "hourSegmentTemplate", "eventTemplate", "eventTitleTemplate", "eventActionsTemplate", "snapDraggedEvents", "allDayEventsLabelTemplate", "currentTimeMarkerTemplate", "validateEventTimesChanged", "resizeCursors"], outputs: ["eventClicked", "hourSegmentClicked", "eventTimesChanged", "beforeViewRender"] }, { kind: "pipe", type: i3.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i2.IDEATranslatePipe, name: "translate" }, { kind: "pipe", type: i4.ɵCalendarDatePipe, name: "calendarDate" }, { kind: "pipe", type: i4.ɵCalendarEventTitlePipe, name: "calendarEventTitle" }, { kind: "pipe", type: i4.ɵCalendarA11yPipe, name: "calendarA11y" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
287
287
|
}
|
|
288
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
288
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: IDEAAgendaComponent, decorators: [{
|
|
289
289
|
type: Component,
|
|
290
290
|
args: [{ selector: 'idea-agenda', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"agenda\">\n <!-- TOOLBAR -->\n <ion-row class=\"ion-align-items-center\">\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"5\"\n [sizeSm]=\"3\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-item lines=\"none\" class=\"calendarViewSelector\" *ngIf=\"allowedViews.length > 1\">\n <ion-select\n interface=\"popover\"\n [value]=\"view\"\n (ionChange)=\"$event?.detail ? setView($event.detail.value) : null\"\n >\n <ion-select-option *ngFor=\"let view of allowedViews\" [value]=\"view\">\n {{ 'IDEA_AGENDA.' + view | uppercase | translate }}\n </ion-select-option>\n </ion-select>\n </ion-item>\n </ion-col>\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"7\"\n [sizeSm]=\"4\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarPreviousView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-back-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarToday\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"today-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarNextView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-forward-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-align-self-center titleCol\" [size]=\"12\" [sizeSm]=\"5\" [pullSm]=\"7\" [sizeLg]=\"8\" [pullLg]=\"4\">\n <h2>{{ viewDate | calendarDate : view + 'ViewTitle' : locale }}</h2>\n <p *ngIf=\"titleNotes\">{{ titleNotes }}</p>\n </ion-col>\n </ion-row>\n <!-- TEMPLATES (touch only what's necessary and leave everything else as it is) -->\n <ng-template #eventTitleTemplate let-event=\"event\" let-view=\"view\">\n <span\n class=\"cal-event-title\"\n [class.noWrap]=\"event.allDay\"\n [attr.aria-hidden]=\"{} | calendarA11y : 'hideEventTitle'\"\n >\n {{ event.title | calendarEventTitle : view : event }}\n <p *ngIf=\"!event.allDay\">{{ getPreviewDescription(event.description) }}</p>\n </span>\n </ng-template>\n <ng-template\n #eventTemplate\n let-weekEvent=\"weekEvent\"\n let-tooltipPlacement=\"tooltipPlacement\"\n let-eventClicked=\"eventClicked\"\n let-tooltipTemplate=\"tooltipTemplate\"\n let-tooltipAppendToBody=\"tooltipAppendToBody\"\n let-tooltipDisabled=\"tooltipDisabled\"\n let-tooltipDelay=\"tooltipDelay\"\n let-column=\"column\"\n let-daysInWeek=\"daysInWeek\"\n >\n <div\n class=\"cal-event\"\n [class.external]=\"weekEvent.event.external\"\n [class.needsAction]=\"Attendance.NEEDS_ACTION === weekEvent.event.attendance\"\n [class.declined]=\"Attendance.DECLINED === weekEvent.event.attendance\"\n [class.tentative]=\"Attendance.TENTATIVE === weekEvent.event.attendance\"\n [style.border-left-color]=\"weekEvent.event.color?.primary\"\n [style.color]=\"getAlternateColor(weekEvent.event.color?.primary, darkMode ? 80 : -40)\"\n [style.background-color]=\"getAlternateColor(weekEvent.event.color?.primary, darkMode ? 60 : 80, 0.2)\"\n [mwlCalendarTooltip]=\"!tooltipDisabled && !isMobile() ? getTooltipContent(weekEvent.event) : ''\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipEvent]=\"weekEvent.tempEvent || weekEvent.event\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n (mwlClick)=\"eventClicked.emit({ sourceEvent: $event })\"\n (mwlKeydownEnter)=\"eventClicked.emit({ sourceEvent: $event })\"\n tabindex=\"0\"\n role=\"application\"\n [attr.aria-label]=\"\n { event: weekEvent.tempEvent || weekEvent.event, locale: locale } | calendarA11y : 'eventDescription'\n \"\n >\n <mwl-calendar-event-actions [event]=\"weekEvent.tempEvent || weekEvent.event\"></mwl-calendar-event-actions>\n &ngsp;\n <mwl-calendar-event-title\n [event]=\"weekEvent.tempEvent || weekEvent.event\"\n [customTemplate]=\"eventTitleTemplate\"\n [view]=\"daysInWeek === 1 ? 'day' : 'week'\"\n >\n </mwl-calendar-event-title>\n <div class=\"eventGadgets\" *ngIf=\"!weekEvent.event.allDay\">\n <ion-icon *ngFor=\"let icon of weekEvent.event.icons\" [name]=\"icon.name\" [title]=\"icon.title\"></ion-icon>\n <idea-user-avatar\n size=\"mini\"\n *ngFor=\"let avatar of weekEvent.event.avatars\"\n [src]=\"avatar.url\"\n [name]=\"avatar.title\"\n ></idea-user-avatar>\n </div>\n </div>\n </ng-template>\n <ng-template\n #hourSegmentTemplate\n let-segment=\"segment\"\n let-locale=\"locale\"\n let-segmentHeight=\"segmentHeight\"\n let-isTimeLabel=\"isTimeLabel\"\n >\n <div\n #segmentElement\n class=\"cal-hour-segment\"\n [style.height.px]=\"segmentHeight\"\n [class.cal-hour-start]=\"segment.isStart\"\n [class.cal-after-hour-start]=\"!segment.isStart\"\n [ngClass]=\"segment.cssClass\"\n (mousedown)=\"allowDragToCreate ? startDragToCreate($event, segment.date, segmentElement) : null\"\n (touchstart)=\"allowDragToCreate ? startDragToCreate($event, segment.date, segmentElement) : null\"\n >\n <div class=\"cal-time\" *ngIf=\"isTimeLabel\">\n {{ segment.date | calendarDate : 'weekViewHour' : locale }}\n </div>\n </div>\n </ng-template>\n <!-- VIEWS -->\n <div [ngSwitch]=\"view\">\n <mwl-calendar-month-view\n *ngSwitchCase=\"CalendarView.Month\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [activeDayIsOpen]=\"activeDayIsOpen\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayClicked)=\"changeDay($event.day)\"\n (beforeViewRender)=\"beforeMonthViewRender($event)\"\n >\n </mwl-calendar-month-view>\n <mwl-calendar-week-view\n *ngSwitchCase=\"CalendarView.Week\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n [hourSegmentTemplate]=\"hourSegmentTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayHeaderClicked)=\"dateIsValid($event.day.date) ? selectDay.emit($event.day.date) : null\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-week-view>\n <mwl-calendar-day-view\n *ngSwitchCase=\"CalendarView.Day\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n [hourSegmentTemplate]=\"hourSegmentTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-day-view>\n </div>\n</div>\n", styles: [".agenda{margin-top:15px}.agenda ion-col.titleCol{padding-left:8px}.agenda ion-col.titleCol h2,.agenda ion-col.titleCol p{margin:0}.agenda ion-col.titleCol h2{font-size:1.2em}.agenda ion-col.titleCol p{font-size:.8em;font-style:italic}.agenda .calendarViewSelector{background-color:transparent;--ion-background-color: transparent;--background: transparent}.agenda .calendarViewSelector ion-select{max-width:100%;width:100%;padding-left:0;font-weight:500}.agenda .eventGadgets{margin-top:4px;margin-left:5px;text-align:right}.agenda .eventGadgets idea-user-avatar{display:block;float:left;margin:2px 1px}.agenda .eventGadgets ion-icon{padding-right:2px;opacity:.7;font-size:1.15em}@media only screen and (max-width: 575px){.agenda ion-col.titleCol{padding:0 8px 12px;text-align:center}}\n"] }]
|
|
291
|
-
}], ctorParameters:
|
|
291
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.Platform }, { type: i2.IDEATranslationsService }], propDecorators: { events: [{
|
|
292
292
|
type: Input
|
|
293
293
|
}], excludeDays: [{
|
|
294
294
|
type: Input
|
|
@@ -352,4 +352,4 @@ export var DragToCreateOptions;
|
|
|
352
352
|
})(DragToCreateOptions || (DragToCreateOptions = {}));
|
|
353
353
|
const floorToNearest = (amount, precision) => Math.floor(amount / precision) * precision;
|
|
354
354
|
const ceilToNearest = (amount, precision) => Math.ceil(amount / precision) * precision;
|
|
355
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbmRhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21vZHVsZXMvYWdlbmRhL3NyYy9hZ2VuZGEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vbW9kdWxlcy9hZ2VuZGEvc3JjL2FnZW5kYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULHVCQUF1QixFQUN2QixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFHYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFJTCxZQUFZLEVBRWIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEYsYUFBYTtBQUNiLE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQzs7Ozs7O0FBU3JDLE1BQU0sT0FBTyxtQkFBbUI7SUFpSDlCLFlBQW9CLEdBQXNCLEVBQVUsUUFBa0IsRUFBUyxDQUEwQjtRQUFyRixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVU7UUFBUyxNQUFDLEdBQUQsQ0FBQyxDQUF5QjtRQWhIekc7O1dBRUc7UUFDTSxXQUFNLEdBQWtCLEVBQUUsQ0FBQztRQUNwQzs7V0FFRztRQUNNLGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBQ3BDOztXQUVHO1FBQ00saUJBQVksR0FBRyxDQUFDLENBQUM7UUFDMUI7O1dBRUc7UUFDTSxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3pCOztXQUVHO1FBQ00saUJBQVksR0FBRyxDQUFDLENBQUM7UUFDMUI7O1dBRUc7UUFDTSxvQkFBZSxHQUFHLEtBQUss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NkRBQVEsQ0FBQTtBQUNWLENBQUMsRUFKVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBSTlCO0FBRUQsTUFBTSxjQUFjLEdBQUcsQ0FBQyxNQUFjLEVBQUUsU0FBaUIsRUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQ2pILE1BQU0sYUFBYSxHQUFHLENBQUMsTUFBYyxFQUFFLFNBQWlCLEVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25Jbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkNvbnRlbnQsIFBsYXRmb3JtIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgZmluYWxpemUsIGZyb21FdmVudCwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBDYWxlbmRhckV2ZW50LFxuICBDYWxlbmRhckV2ZW50VGltZXNDaGFuZ2VkRXZlbnQsXG4gIENhbGVuZGFyTW9udGhWaWV3QmVmb3JlUmVuZGVyRXZlbnQsXG4gIENhbGVuZGFyVmlldyxcbiAgQ2FsZW5kYXJXZWVrVmlld0JlZm9yZVJlbmRlckV2ZW50XG59IGZyb20gJ2FuZ3VsYXItY2FsZW5kYXInO1xuaW1wb3J0IHsgaXNGdXR1cmUsIGlzVG9kYXksIGlzU2FtZURheSwgZW5kT2ZXZWVrLCBhZGREYXlzLCBhZGRNaW51dGVzIH0gZnJvbSAnZGF0ZS1mbnMnO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IENvbG9yUGFyc2UgZnJvbSAnY29sb3ItcGFyc2UnO1xuaW1wb3J0IHsgSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UgfSBmcm9tICdAaWRlYS1pb25pYy9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZGVhLWFnZW5kYScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZVVybDogJ2FnZW5kYS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydhZ2VuZGEuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJREVBQWdlbmRhQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIFRoZSBldmVudHMgdG8gZGlzcGxheSBpbiB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBASW5wdXQoKSBldmVudHM6IEFnZW5kYUV2ZW50W10gPSBbXTtcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIGRheSBpbmRleGVzICgwID0gc3VuZGF5LCAxID0gbW9uZGF5LCBldGMuKSB0aGF0IHdpbGwgYmUgaGlkZGVuIG9uIHRoZSB2aWV3LlxuICAgKi9cbiAgQElucHV0KCkgZXhjbHVkZURheXM6IG51bWJlcltdID0gW107XG4gIC8qKlxuICAgKiBUaGUgZGF5IHN0YXJ0IGhvdXJzIGluIDI0IGhvdXIgdGltZS4gTXVzdCBiZSAwLTIzXG4gICAqL1xuICBASW5wdXQoKSBkYXlTdGFydEhvdXIgPSAwO1xuICAvKipcbiAgICogVGhlIGRheSBzdGFydCBob3VycyBpbiAyNCBob3VyIHRpbWUuIE11c3QgYmUgMC0yM1xuICAgKi9cbiAgQElucHV0KCkgZGF5RW5kSG91ciA9IDIzO1xuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBzZWdtZW50cyBpbiBhbiBob3VyLiBNdXN0IGRpdmlkZSBlcXVhbGx5IGludG8gNjAuXG4gICAqL1xuICBASW5wdXQoKSBob3VyU2VnbWVudHMgPSAyO1xuICAvKipcbiAgICogV2hldGhlciB0byBvcGVuIHRoZSBjdXJyZW50IGRheSdzIGRldGFpbHMgcmlnaHQgYXdheSBpbiBtb250aCB2aWV3LlxuICAgKi9cbiAgQElucHV0KCkgYWN0aXZlRGF5SXNPcGVuID0gZmFsc2U7XG4gIC8qKlxuICAgKiBUaGUgdmlldyBtb2RlIGZvciB0aGUgYWdlbmRhLlxuICAgKi9cbiAgQElucHV0KCkgdmlldzogQ2FsZW5kYXJWaWV3ID0gQ2FsZW5kYXJWaWV3LldlZWs7XG4gIC8qKlxuICAgKiBUaGUgYWxsb3dlZCB2aWV3IG1vZGUgZm9yIHRoZSBhZ2VuZGEuXG4gICAqL1xuICBASW5wdXQoKSBhbGxvd2VkVmlld3MgPSBbQ2FsZW5kYXJWaWV3LkRheSwgQ2FsZW5kYXJWaWV3LldlZWssIENhbGVuZGFyVmlldy5Nb250aF07XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGJsb2NrIGFueSBkYXkvc2xvdCBpbiB0aGUgcGFzdC5cbiAgICovXG4gIEBJbnB1dCgpIG9ubHlGdXR1cmUgPSBmYWxzZTtcbiAgLyoqXG4gICAqIFNvbWUgbm90ZXMgdG8gc2hvdyB1bmRlcm5lYXRoIHRoZSBjYWxlbmRhcidzIGhlYWRlci5cbiAgICovXG4gIEBJbnB1dCgpIHRpdGxlTm90ZXM6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB0ZW1wbGF0ZSBmb3IgbmV3IGV2ZW50cyBjcmVhdGVkIGJ5IGRyYWcmZHJvcC5cbiAgICovXG4gIEBJbnB1dCgpIG5ld0V2ZW50VGVtcGxhdGU6IEFnZW5kYUV2ZW50ID0geyB0aXRsZTogJ05ldycsIHN0YXJ0OiBudWxsLCBtZXRhOiB7fSB9O1xuICAvKipcbiAgICogV2hldGhlciAoYW5kIGhvdykgdG8gYWxsb3cgdGhlIGNyZWF0aW9uIG9mIGV2ZW50cyBieSBkcmFnJmRyb3AuXG4gICAqIElmIGVuYWJsZWQsIG9uIG1vYmlsZSBpdCByZXF1aXJlcyB0aGUgYHBhcmVudENvbnRlbnRgIHRvIGJlIHNldCBmb3IgYSBjb3JyZWN0IGV4ZWN1dGlvbi5cbiAgICovXG4gIEBJbnB1dCgpIGFsbG93RHJhZ1RvQ3JlYXRlOiBEcmFnVG9DcmVhdGVPcHRpb25zID0gRHJhZ1RvQ3JlYXRlT3B0aW9ucy5ESVNBQkxFRDtcbiAgLyoqXG4gICAqIFRoZSBwYXJlbnQgaW9uLWNvbnRlbnQsIGluIGNhc2Ugd2Ugd2FudCB0byBjb250cm9sIGl0cyBzY3JvbGxhYmlsaXR5IGZvciBkcmFnJmRyb3AgZmVhdHVyZXMuXG4gICAqL1xuICBASW5wdXQoKSBwYXJlbnRDb250ZW50OiBJb25Db250ZW50O1xuICAvKipcbiAgICogVHJpZ2dlciB3aGVuIGFuIGV2ZW50IGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgQE91dHB1dCgpIHNlbGVjdEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxBZ2VuZGFFdmVudD4oKTtcbiAgLyoqXG4gICAqIFRyaWdnZXIgd2hlbiBhIGRheSBpcyBzZWxlY3RlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBzZWxlY3REYXkgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG4gIC8qKlxuICAgKiBUcmlnZ2VyIHdoZW4gYSB0aW1lIHNsb3QgaXMgc2VsZWN0ZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgc2VsZWN0U2xvdCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgLyoqXG4gICAqIFRyaWdnZXIgd2hlbiBhIG5ldyBldmVudCBpcyBhZGRlZCBieSBkcmFnIGFuZCBkcm9wLlxuICAgKi9cbiAgQE91dHB1dCgpIG5ld0V2ZW50QnlEcmFnID0gbmV3IEV2ZW50RW1pdHRlcjxBZ2VuZGFFdmVudD4oKTtcbiAgLyoqXG4gICAqIFRyaWdnZXIgd2hlbiBhbiBldmVudCBjaGFuZ2VkIGRhdGUgKGRyYWcmZHJvcCBvciByZXNpemUpLlxuICAgKi9cbiAgQE91dHB1dCgpIGNoYW5nZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxBZ2VuZGFFdmVudD4oKTtcbiAgLyoqXG4gICAqIFRyaWdnZXIgd2hlbiB0aGUgdmlldyBkYXRlIG9mIHJlZmVyZW5jZSBjaGFuZ2VkIChiZWNhdXNlIHdlIG1vdmVkIGluc2lkZSB0aGUgY2FsZW5kYXIpLlxuICAgKi9cbiAgQE91dHB1dCgpIGNoYW5nZURhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG4gIC8qKlxuICAgKiBUcmlnZ2VyIGJlZm9yZSB0aGUgcmVuZGVyaW5nIG9mIHRoZSB3ZWVrIG9yIGRheSB2aWV3LlxuICAgKi9cbiAgQE91dHB1dCgpIGJlZm9yZVdlZWtPckRheVZpZXdSZW5kZXJFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxDYWxlbmRhcldlZWtWaWV3QmVmb3JlUmVuZGVyRXZlbnQ+KCk7XG4gIC8qKlxuICAgKiBUcmlnZ2VyIGJlZm9yZSB0aGUgcmVuZGVyaW5nIG9mIHRoZSBtb250aCB2aWV3LlxuICAgKi9cbiAgQE91dHB1dCgpIGJlZm9yZU1vbnRoVmlld1JlbmRlckVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPENhbGVuZGFyTW9udGhWaWV3QmVmb3JlUmVuZGVyRXZlbnQ+KCk7XG4gIC8qKlxuICAgKiBIZWxwZXIgdG8gdXNlIHRoZSBlbnVtIGluIHRoZSBVWC5cbiAgICovXG4gIENhbGVuZGFyVmlldyA9IENhbGVuZGFyVmlldztcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZGF0ZS5cbiAgICovXG4gIHZpZXdEYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgLyoqXG4gICAqIEEgY29udHJvbGxlciB0byByZWZyZXNoIHRoZSBjdXJyZW50IHZpZXcuXG4gICAqL1xuICByZWZyZXNoOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgLyoqXG4gICAqIFRoZSBsb2NhbGUgdXNlZCB0byBmb3JtYXQgZGF0ZXMuXG4gICAqIEBoaWRlXG4gICAqL1xuICBsb2NhbGU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzdGFydGluZyBkYXkgZm9yIHRoZSB3ZWVrLCBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsZSAoMCA9IHN1bmRheSkuXG4gICAqIEBoaWRlXG4gICAqL1xuICB3ZWVrU3RhcnRzT246IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG5cbiAgQXR0ZW5kYW5jZSA9IEV2ZW50QXR0ZW5kYW5jZTtcblxuICBkYXJrTW9kZSA9IHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJykubWF0Y2hlcztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgcGxhdGZvcm06IFBsYXRmb3JtLCBwdWJsaWMgdDogSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UpIHt9XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9jYWxlID0gdGhpcy50LmdldEN1cnJlbnRMYW5nKCk7XG4gICAgLy8gaW4gY2FzZSBvZiBJdGFsaWFuIGxvY2FsZSB0aGUgc3RhcnRpbmcgZGF5IGZvciB0aGUgd2VlayBpcyBtb25kYXkgKDEpLCBvdGhlcndpc2Ugc3VuZGF5ICgwKVxuICAgIHRoaXMud2Vla1N0YXJ0c09uID0gdGhpcy5sb2NhbGUgPT09ICdpdCcgPyAxIDogMDtcbiAgfVxuICBpc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybS5pcygnbW9iaWxlJyk7XG4gIH1cblxuICAvKipcbiAgICogUnVuIHNvbWUgY2hlY2tzIGJlZm9yZSB0aGUgbW9udGggdmlldyBpcyByZW5kZXJlZCAoZS5nLiBkaXNhYmxlIGludmFsaWQgZGF5cykuXG4gICAqL1xuICBiZWZvcmVNb250aFZpZXdSZW5kZXIoZXZlbnQ6IENhbGVuZGFyTW9udGhWaWV3QmVmb3JlUmVuZGVyRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmJlZm9yZU1vbnRoVmlld1JlbmRlckVtaXR0ZXIuZW1pdChldmVudCk7XG4gICAgY29uc3QgeyBib2R5IH0gPSBldmVudDtcbiAgICBib2R5LmZvckVhY2goZGF5ID0+IHtcbiAgICAgIGlmICghdGhpcy5kYXRlSXNWYWxpZChkYXkuZGF0ZSkpIGRheS5jc3NDbGFzcyA9ICdjYWwtZGlzYWJsZWQnO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBSdW4gc29tZSBjaGVja3MgYmVmb3JlIHRoZSB3ZWVrL2RheSB2aWV3IGlzIHJlbmRlcmVkIChlLmcuIGRpc2FibGUgaW52YWxpZCBkYXlzKS5cbiAgICovXG4gIGJlZm9yZVdlZWtPckRheVZpZXdSZW5kZXIoZXZlbnQ6IENhbGVuZGFyV2Vla1ZpZXdCZWZvcmVSZW5kZXJFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuYmVmb3JlV2Vla09yRGF5Vmlld1JlbmRlckVtaXR0ZXIuZW1pdChldmVudCk7XG4gICAgY29uc3QgeyBoZWFkZXIsIGhvdXJDb2x1bW5zIH0gPSBldmVudDtcbiAgICBoZWFkZXIuZm9yRWFjaChkYXkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmRhdGVJc1ZhbGlkKGRheS5kYXRlKSkgZGF5LmNzc0NsYXNzID0gJ2NhbC1kaXNhYmxlZCc7XG4gICAgfSk7XG4gICAgaG91ckNvbHVtbnMuZm9yRWFjaChob3VyQ29sID0+IHtcbiAgICAgIGhvdXJDb2wuaG91cnMuZm9yRWFjaChob3VyID0+IHtcbiAgICAgICAgaG91ci5zZWdtZW50cy5mb3JFYWNoKHNlZ21lbnQgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5kYXRlSXNWYWxpZChzZWdtZW50LmRhdGUpKSBzZWdtZW50LmNzc0NsYXNzID0gJ2NhbC1kaXNhYmxlZCc7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciBhIGRhdGUgaXMgdmFsaWQgYmFzZWQgb24gdGhlIGNvbmZpZ3VyZWQgcGFyYW1ldGVycy5cbiAgICovXG4gIGRhdGVJc1ZhbGlkKGRhdGU6IGFueSwgc2FtZURheUlzVmFsaWQ/OiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLm9ubHlGdXR1cmUpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBpc0Z1dHVyZShkYXRlKSB8fCAoc2FtZURheUlzVmFsaWQgPyBpc1RvZGF5KGRhdGUpIDogZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoYW5nZSB0aGUgY3VycmVudCB2aWV3IGZvciB0aGUgYWdlbmRhLlxuICAgKi9cbiAgc2V0Vmlldyh2aWV3OiBDYWxlbmRhclZpZXcpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXcgPSB2aWV3O1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXQgdGhlIGNoYW5nZSBvZiB0aGUgdmlldyBkYXRlIGFuZCBjbG9zZSB0aGUgZGV0YWlsIGNvbXBvbmVudCBvZiB0aGUgbW9udGggdmlldywgaWYgbmVlZGVkLlxuICAgKi9cbiAgdmlld0RhdGVDaGFuZ2VkKG5ld0RhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52aWV3ID09PSBDYWxlbmRhclZpZXcuTW9udGgpIHRoaXMuYWN0aXZlRGF5SXNPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5jaGFuZ2VEYXRlLmVtaXQobmV3RGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogQSBkYXkgd2FzIHNlbGVjdGVkOiBtYW5hZ2UgdGhlIGRldGFpbGVkIHZpZXcuXG4gICAqL1xuICBjaGFuZ2VEYXkoeyBkYXRlLCBldmVudHMgfTogeyBkYXRlOiBEYXRlOyBldmVudHM6IEFnZW5kYUV2ZW50W10gfSk6IHZvaWQge1xuICAgIC8vIHNraXAgaWYgdGhlIGRhdGUgaXNuJ3QgdmFsaWRcbiAgICBpZiAoIXRoaXMuZGF0ZUlzVmFsaWQoZGF0ZSwgdHJ1ZSkpIHJldHVybjtcbiAgICAvLyBpZiB0aGUgc2VsZWN0ZWQgZGF5IGNoYW5nZWQsIGlmIHRoZSBuZXcgZGF5IGhhcyBldmVudHMsIG9wZW4gdGhlIGRldGFpbHMgaW4gbW9udGggdmlldyAob3RoZXJ3aXNlIGNsb3NlIHRoZW0pXG4gICAgaWYgKChpc1NhbWVEYXkodGhpcy52aWV3RGF0ZSwgZGF0ZSkgJiYgdGhpcy5hY3RpdmVEYXlJc09wZW4gPT09IHRydWUpIHx8ICFldmVudHMgfHwgZXZlbnRzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRoaXMuYWN0aXZlRGF5SXNPcGVuID0gZmFsc2U7XG4gICAgZWxzZSB0aGlzLmFjdGl2ZURheUlzT3BlbiA9IHRydWU7XG4gICAgLy8gdXBkYXRlIHRoZSBjdXJyZW50IGRhdGUgaW4gdGhlIGFnZW5kYVxuICAgIHRoaXMudmlld0RhdGUgPSBkYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIG9mIGFuIGV2ZW50IHdhcyBjaGFuZ2VkLlxuICAgKi9cbiAgZXZlbnRUaW1lc0NoYW5nZWQoeyBldmVudCwgbmV3U3RhcnQsIG5ld0VuZCB9OiBDYWxlbmRhckV2ZW50VGltZXNDaGFuZ2VkRXZlbnQpOiB2b2lkIHtcbiAgICAvLyB1cGRhdGUgdGhlIGV2ZW50XG4gICAgZXZlbnQuc3RhcnQgPSBuZXdTdGFydDtcbiAgICBldmVudC5lbmQgPSBuZXdFbmQ7XG4gICAgLy8gcmUtbWFwIHRoZSBhcnJheSB0byB0cmlnZ2VyIHRoZSBVSSByZWZyZXNoXG4gICAgdGhpcy5ldmVudHMgPSB0aGlzLmV2ZW50cy5zbGljZSgpO1xuICAgIC8vIHRyaWdnZXIgdGhlIGV2ZW50IHRvIHRoZSBwYXJlbnQgY29tcG9uZW50XG4gICAgdGhpcy5jaGFuZ2VFdmVudC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHaXZlbiBhIGNvbG9yLCBpdCByZXR1cm5zIGFuIG9wYXF1ZSB2ZXJzaW9uIG9mIGl0LlxuICAgKi9cbiAgZ2V0QWx0ZXJuYXRlQ29sb3IoY29sb3I6IHN0cmluZywgYW1vdW50OiBudW1iZXIsIG9wYWNpdHk/OiBudW1iZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICghY29sb3I/LnRyaW0oKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBhbHQgPSBDb2xvclBhcnNlKGNvbG9yLnRyaW0oKSk7XG4gICAgY29uc3QgciA9IE1hdGgubWF4KE1hdGgubWluKDI1NSwgTnVtYmVyKGFsdC52YWx1ZXNbMF0pICsgYW1vdW50KSwgMCk7XG4gICAgY29uc3QgZyA9IE1hdGgubWF4KE1hdGgubWluKDI1NSwgTnVtYmVyKGFsdC52YWx1ZXNbMV0pICsgYW1vdW50KSwgMCk7XG4gICAgY29uc3QgYiA9IE1hdGgubWF4KE1hdGgubWluKDI1NSwgTnVtYmVyKGFsdC52YWx1ZXNbMl0pICsgYW1vdW50KSwgMCk7XG4gICAgcmV0dXJuIGByZ2JhKCR7cn0sICR7Z30sICR7Yn0sICR7b3BhY2l0eSB8fCAxfSlgO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY29udGVudCBvZiB0aGUgdG9vbHRpcCBiYXNlZCBvbiB0aGUgZXZlbnQuXG4gICAqL1xuICBnZXRUb29sdGlwQ29udGVudChldmVudDogQWdlbmRhRXZlbnQpOiBzdHJpbmcge1xuICAgIGlmICghZXZlbnQpIHJldHVybiAnJztcbiAgICBsZXQgc3RyID0gZXZlbnQudGl0bGUgPyAnPGI+JyArIGV2ZW50LnRpdGxlICsgJzwvYj4nIDogJyc7XG4gICAgaWYgKGV2ZW50LmRlc2NyaXB0aW9uKSBzdHIgPSBzdHIuY29uY2F0KCc8YnI+JywgZXZlbnQuZGVzY3JpcHRpb24pO1xuICAgIGlmIChldmVudC5pY29ucykgZXZlbnQuaWNvbnMuZm9yRWFjaCh4ID0+IChzdHIgPSBzdHIuY29uY2F0KCc8YnI+JywgJzxpPicsIHgudGl0bGUsICc8L2k+JykpKTtcbiAgICBpZiAoZXZlbnQuYXZhdGFycyAmJiBldmVudC5hdmF0YXJzLmxlbmd0aCkge1xuICAgICAgc3RyID0gc3RyLmNvbmNhdCgnPGJyPjxicj5+Jyk7XG4gICAgICBldmVudC5hdmF0YXJzLmZvckVhY2goeCA9PiAoc3RyID0gc3RyLmNvbmNhdCgnPGJyPicsIHgudGl0bGUpKSk7XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgc2hvcnRlbmVkIHZlcnNpb24gb2YgdGhlIGRlc2NyaXB0aW9uIGFzIHByZXZpZXcuXG4gICAqL1xuICBnZXRQcmV2aWV3RGVzY3JpcHRpb24oZGVzY3JpcHRpb246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRlc2NyaXB0aW9uICYmIGRlc2NyaXB0aW9uLmxlbmd0aCA+IDEwMCA/IGRlc2NyaXB0aW9uLnNsaWNlKDAsIDEwMCkuY29uY2F0KCcuLi4nKSA6IGRlc2NyaXB0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB0aGUgZHJhZyZkcm9wIHRvIGNyZWF0ZSBhIG5ldyBldmVudC5cbiAgICovXG4gIHN0YXJ0RHJhZ1RvQ3JlYXRlKGV2ZW50OiBFdmVudCwgc2VnbWVudERhdGU6IERhdGUsIHNlZ21lbnRFbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hbGxvd0RyYWdUb0NyZWF0ZSkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMucGFyZW50Q29udGVudCkgdGhpcy5wYXJlbnRDb250ZW50LnNjcm9sbFkgPSBmYWxzZTtcblxuICAgIGNvbnN0IGV2ZW50QnlEcmFnQW5kRHJvcDogQWdlbmRhRXZlbnQgPSB7IC4uLnRoaXMubmV3RXZlbnRUZW1wbGF0ZSwgc3RhcnQ6IHNlZ21lbnREYXRlIH07XG4gICAgdGhpcy5ldmVudHMgPSBbLi4udGhpcy5ldmVudHMsIGV2ZW50QnlEcmFnQW5kRHJvcF07XG5cbiAgICBjb25zdCBzZWdtZW50UG9zaXRpb24gPSBzZWdtZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBlbmRPZlZpZXcgPSBlbmRPZldlZWsodGhpcy52aWV3RGF0ZSwgeyB3ZWVrU3RhcnRzT246IHRoaXMud2Vla1N0YXJ0c09uIH0pO1xuXG4gICAgY29uc3Qgd2hpbGVEcmFnZ2luZyA9IChkcmFnZ2luZ0V2ZW50OiBFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgY29uc3QgeyBjbGllbnRZLCBjbGllbnRYIH0gPVxuICAgICAgICBkcmFnZ2luZ0V2ZW50LnR5cGUgPT09ICd0b3VjaG1vdmUnID8gKGRyYWdnaW5nRXZlbnQgYXMgVG91Y2hFdmVudCkudG91Y2hlc1swXSA6IChkcmFnZ2luZ0V2ZW50IGFzIE1vdXNlRXZlbnQpO1xuXG4gICAgICBjb25zdCBtaW51dGVzRGlmZiA9IGNlaWxUb05lYXJlc3QoY2xpZW50WSAtIHNlZ21lbnRQb3NpdGlvbi50b3AsIDMwKTtcbiAgICAgIGNvbnN0IGRheXNEaWZmID0gZmxvb3JUb05lYXJlc3QoY2xpZW50WCAtIHNlZ21lbnRQb3NpdGlvbi5sZWZ0LCBzZWdtZW50UG9zaXRpb24ud2lkdGgpIC8gc2VnbWVudFBvc2l0aW9uLndpZHRoO1xuXG4gICAgICBsZXQgbmV3RW5kOiBEYXRlO1xuICAgICAgaWYgKHRoaXMuYWxsb3dEcmFnVG9DcmVhdGUgPT09IERyYWdUb0NyZWF0ZU9wdGlvbnMuT05MWV9TQU1FX0RBWSkgbmV3RW5kID0gYWRkTWludXRlcyhzZWdtZW50RGF0ZSwgbWludXRlc0RpZmYpO1xuICAgICAgZWxzZSBuZXdFbmQgPSBhZGREYXlzKGFkZE1pbnV0ZXMoc2VnbWVudERhdGUsIG1pbnV0ZXNEaWZmKSwgZGF5c0RpZmYpO1xuXG4gICAgICBpZiAobmV3RW5kID4gc2VnbWVudERhdGUgJiYgbmV3RW5kIDwgZW5kT2ZWaWV3KSBldmVudEJ5RHJhZ0FuZERyb3AuZW5kID0gbmV3RW5kO1xuICAgICAgcmVmcmVzaFZpZXcoKTtcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kT2ZEcmFnID0gKCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKHRoaXMucGFyZW50Q29udGVudCkgdGhpcy5wYXJlbnRDb250ZW50LnNjcm9sbFkgPSB0cnVlO1xuICAgICAgZXZlbnRCeURyYWdBbmREcm9wLmVuZCA9IHRoaXMuZ2V0Rml4ZWRFbmREYXRlV2l0aE1pbmltdW1TZWdtZW50RHVyYXRpb24oZXZlbnRCeURyYWdBbmREcm9wKTtcbiAgICAgIHJlZnJlc2hWaWV3KCk7XG4gICAgICB0aGlzLm5ld0V2ZW50QnlEcmFnLmVtaXQoZXZlbnRCeURyYWdBbmREcm9wKTtcbiAgICB9O1xuXG4gICAgY29uc3QgcmVmcmVzaFZpZXcgPSAoKTogdm9pZCA9PiB7XG4gICAgICB0aGlzLmV2ZW50cyA9IFsuLi50aGlzLmV2ZW50c107XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfTtcblxuICAgIGlmIChldmVudC50eXBlID09PSAndG91Y2hzdGFydCcpIHtcbiAgICAgIGZyb21FdmVudChkb2N1bWVudCwgJ3RvdWNobW92ZScpXG4gICAgICAgIC5waXBlKGZpbmFsaXplKGVuZE9mRHJhZyksIHRha2VVbnRpbChmcm9tRXZlbnQoZG9jdW1lbnQsICd0b3VjaGVuZCcpKSlcbiAgICAgICAgLnN1YnNjcmliZSh3aGlsZURyYWdnaW5nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZnJvbUV2ZW50KGRvY3VtZW50LCAnbW91c2Vtb3ZlJylcbiAgICAgICAgLnBpcGUoZmluYWxpemUoZW5kT2ZEcmFnKSwgdGFrZVVudGlsKGZyb21FdmVudChkb2N1bWVudCwgJ21vdXNldXAnKSkpXG4gICAgICAgIC5zdWJzY3JpYmUod2hpbGVEcmFnZ2luZyk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgZ2V0Rml4ZWRFbmREYXRlV2l0aE1pbmltdW1TZWdtZW50RHVyYXRpb24oYWdlbmRhQm9va2luZzogQWdlbmRhRXZlbnQpOiBEYXRlIHtcbiAgICBjb25zdCBmaXhlZEVuZCA9IG5ldyBEYXRlKGFnZW5kYUJvb2tpbmcuZW5kID8/IGFnZW5kYUJvb2tpbmcuc3RhcnQpO1xuICAgIGNvbnN0IHNlZ21lbnRTaXplSW5NaW51dGVzID0gNjAgLyB0aGlzLmhvdXJTZWdtZW50cztcbiAgICBpZiAoZml4ZWRFbmQuZ2V0VGltZSgpIDw9IGFnZW5kYUJvb2tpbmcuc3RhcnQuZ2V0VGltZSgpICsgc2VnbWVudFNpemVJbk1pbnV0ZXMgKiA2MCAqIDEwMDApXG4gICAgICBmaXhlZEVuZC5zZXRNaW51dGVzKGFnZW5kYUJvb2tpbmcuc3RhcnQuZ2V0TWludXRlcygpICsgc2VnbWVudFNpemVJbk1pbnV0ZXMpO1xuICAgIHJldHVybiBmaXhlZEVuZDtcbiAgfVxufVxuXG4vKipcbiAqIEEgcmljaGVyIHZlcnNpb24gb2YgdGhlIGNsYXNzaWMgQ2FsZW5kYXJFdmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZ2VuZGFFdmVudCBleHRlbmRzIENhbGVuZGFyRXZlbnQge1xuICAvKipcbiAgICogQSBicmllZiBkZXNjcmlwdGlvbiBmb3IgdGhlIGV2ZW50IChlLmcuIGN1c3RvbWVyLCBhZGRyZXNzLCBldGMuKS5cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIG9mIHRoZSBldmVudC5cbiAgICovXG4gIGxvY2F0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogQSBsaXN0IG9mIFVSTHMgb2YgaW1hZ2VzIHRvIHNob3cgYXMgc21hbGwgYXZhdGFycy5cbiAgICovXG4gIGF2YXRhcnM/OiB7IGlkOiBzdHJpbmc7IHVybDogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH1bXTtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBpb24taWNvbnMgdG8gc2hvdy5cbiAgICovXG4gIGljb25zPzogeyBuYW1lOiBzdHJpbmc7IHRpdGxlOiBzdHJpbmcgfVtdO1xuICAvKipcbiAgICogVGhlIGNvbG9ycyBvZiB0aGUgZXZlbnQgZGlzcGxheWVkLlxuICAgKi9cbiAgY29sb3I/OiB7IHByaW1hcnk6IHN0cmluZzsgc2Vjb25kYXJ5Pzogc3RyaW5nIH0gfCBhbnk7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBldmVudCBpcyBleHRlcm5hbDsgZXh0ZXJuYWwgZXZlbnRzIGFyZSBsZXNzIGltcG9ydGFudCBVSS13aXNlLlxuICAgKi9cbiAgZXh0ZXJuYWw/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIGF0dGVuZGFuY2Ugc3RhdHVzIHRvIHRoaXMgZXZlbnQsIGlmIGFueS5cbiAgICovXG4gIGF0dGVuZGFuY2U/OiBFdmVudEF0dGVuZGFuY2U7XG4gIC8qKlxuICAgKiBBIHN0YW5kYXJkIGFuZCB1bmlxdWUgaWQgZm9yIHRoZSBldmVudCwgdmFsaWQgYWNyb3NzIG11bHRpcGxlIHNvdXJjZXMuXG4gICAqL1xuICBpQ2FsVUlEPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBvc3NpYmxlIGF0dGVuZGFuY2Ugc3RhdHVzZXMgZm9yIHRoZSBldmVudC5cbiAqL1xuZXhwb3J0IGVudW0gRXZlbnRBdHRlbmRhbmNlIHtcbiAgREVDTElORUQgPSAtMSxcbiAgTkVFRFNfQUNUSU9OID0gMCxcbiAgVEVOVEFUSVZFLFxuICBBQ0NFUFRFRFxufVxuXG4vKipcbiAqIFRoZSBvcHRpb25zIHRvIGFsbG93IChvciBub3QpIGRyYWcmZHJvcCB0byBjcmVhdGUgYSBuZXcgZXZlbnQuXG4gKi9cbmV4cG9ydCBlbnVtIERyYWdUb0NyZWF0ZU9wdGlvbnMge1xuICBESVNBQkxFRCA9IDAsXG4gIE9OTFlfU0FNRV9EQVkgPSAxLFxuICBGUkVFID0gMlxufVxuXG5jb25zdCBmbG9vclRvTmVhcmVzdCA9IChhbW91bnQ6IG51bWJlciwgcHJlY2lzaW9uOiBudW1iZXIpOiBudW1iZXIgPT4gTWF0aC5mbG9vcihhbW91bnQgLyBwcmVjaXNpb24pICogcHJlY2lzaW9uO1xuY29uc3QgY2VpbFRvTmVhcmVzdCA9IChhbW91bnQ6IG51bWJlciwgcHJlY2lzaW9uOiBudW1iZXIpOiBudW1iZXIgPT4gTWF0aC5jZWlsKGFtb3VudCAvIHByZWNpc2lvbikgKiBwcmVjaXNpb247XG4iLCI8ZGl2IGNsYXNzPVwiYWdlbmRhXCI+XG4gIDwhLS0gVE9PTEJBUiAtLT5cbiAgPGlvbi1yb3cgY2xhc3M9XCJpb24tYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgPGlvbi1jb2xcbiAgICAgIGNsYXNzPVwiaW9uLWFsaWduLXNlbGYtY2VudGVyIGlvbi10ZXh0LXJpZ2h0XCJcbiAgICAgIFtzaXplXT1cIjVcIlxuICAgICAgW3NpemVTbV09XCIzXCJcbiAgICAgIFtwdXNoU21dPVwiNVwiXG4gICAgICBbc2l6ZUxnXT1cIjJcIlxuICAgICAgW3B1c2hMZ109XCI4XCJcbiAgICA+XG4gICAgICA8aW9uLWl0ZW0gbGluZXM9XCJub25lXCIgY2xhc3M9XCJjYWxlbmRhclZpZXdTZWxlY3RvclwiICpuZ0lmPVwiYWxsb3dlZFZpZXdzLmxlbmd0aCA+IDFcIj5cbiAgICAgICAgPGlvbi1zZWxlY3RcbiAgICAgICAgICBpbnRlcmZhY2U9XCJwb3BvdmVyXCJcbiAgICAgICAgICBbdmFsdWVdPVwidmlld1wiXG4gICAgICAgICAgKGlvbkNoYW5nZSk9XCIkZXZlbnQ/LmRldGFpbCA/IHNldFZpZXcoJGV2ZW50LmRldGFpbC52YWx1ZSkgOiBudWxsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdmlldyBvZiBhbGxvd2VkVmlld3NcIiBbdmFsdWVdPVwidmlld1wiPlxuICAgICAgICAgICAge3sgJ0lERUFfQUdFTkRBLicgKyB2aWV3IHwgdXBwZXJjYXNlIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgPC9pb24tc2VsZWN0PlxuICAgICAgPC9pb24taXRlbT5cbiAgICA8L2lvbi1jb2w+XG4gICAgPGlvbi1jb2xcbiAgICAgIGNsYXNzPVwiaW9uLWFsaWduLXNlbGYtY2VudGVyIGlvbi10ZXh0LXJpZ2h0XCJcbiAgICAgIFtzaXplXT1cIjdcIlxuICAgICAgW3NpemVTbV09XCI0XCJcbiAgICAgIFtwdXNoU21dPVwiNVwiXG4gICAgICBbc2l6ZUxnXT1cIjJcIlxuICAgICAgW3B1c2hMZ109XCI4XCJcbiAgICA+XG4gICAgICA8aW9uLWJ1dHRvblxuICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICBtd2xDYWxlbmRhclByZXZpb3VzVmlld1xuICAgICAgICBbdmlld109XCJ2aWV3XCJcbiAgICAgICAgWyh2aWV3RGF0ZSldPVwidmlld0RhdGVcIlxuICAgICAgICAodmlld0RhdGVDaGFuZ2UpPVwidmlld0RhdGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZXZyb24tYmFjay1vdXRsaW5lXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8aW9uLWJ1dHRvblxuICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICBtd2xDYWxlbmRhclRvZGF5XG4gICAgICAgIFsodmlld0RhdGUpXT1cInZpZXdEYXRlXCJcbiAgICAgICAgKHZpZXdEYXRlQ2hhbmdlKT1cInZpZXdEYXRlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJ0b2RheS1vdXRsaW5lXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8aW9uLWJ1dHRvblxuICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICBtd2xDYWxlbmRhck5leHRWaWV3XG4gICAgICAgIFt2aWV3XT1cInZpZXdcIlxuICAgICAgICBbKHZpZXdEYXRlKV09XCJ2aWV3RGF0ZVwiXG4gICAgICAgICh2aWV3RGF0ZUNoYW5nZSk9XCJ2aWV3RGF0ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hldnJvbi1mb3J3YXJkLW91dGxpbmVcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1jb2w+XG4gICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tYWxpZ24tc2VsZi1jZW50ZXIgdGl0bGVDb2xcIiBbc2l6ZV09XCIxMlwiIFtzaXplU21dPVwiNVwiIFtwdWxsU21dPVwiN1wiIFtzaXplTGddPVwiOFwiIFtwdWxsTGddPVwiNFwiPlxuICAgICAgPGgyPnt7IHZpZXdEYXRlIHwgY2FsZW5kYXJEYXRlIDogdmlldyArICdWaWV3VGl0bGUnIDogbG9jYWxlIH19PC9oMj5cbiAgICAgIDxwICpuZ0lmPVwidGl0bGVOb3Rlc1wiPnt7IHRpdGxlTm90ZXMgfX08L3A+XG4gICAgPC9pb24tY29sPlxuICA8L2lvbi1yb3c+XG4gIDwhLS0gVEVNUExBVEVTICh0b3VjaCBvbmx5IHdoYXQncyBuZWNlc3NhcnkgYW5kIGxlYXZlIGV2ZXJ5dGhpbmcgZWxzZSBhcyBpdCBpcykgLS0+XG4gIDxuZy10ZW1wbGF0ZSAjZXZlbnRUaXRsZVRlbXBsYXRlIGxldC1ldmVudD1cImV2ZW50XCIgbGV0LXZpZXc9XCJ2aWV3XCI+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwiY2FsLWV2ZW50LXRpdGxlXCJcbiAgICAgIFtjbGFzcy5ub1dyYXBdPVwiZXZlbnQuYWxsRGF5XCJcbiAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cInt9IHwgY2FsZW5kYXJBMTF5IDogJ2hpZGVFdmVudFRpdGxlJ1wiXG4gICAgPlxuICAgICAge3sgZXZlbnQudGl0bGUgfCBjYWxlbmRhckV2ZW50VGl0bGUgOiB2aWV3IDogZXZlbnQgfX1cbiAgICAgIDxwICpuZ0lmPVwiIWV2ZW50LmFsbERheVwiPnt7IGdldFByZXZpZXdEZXNjcmlwdGlvbihldmVudC5kZXNjcmlwdGlvbikgfX08L3A+XG4gICAgPC9zcGFuPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGVcbiAgICAjZXZlbnRUZW1wbGF0ZVxuICAgIGxldC13ZWVrRXZlbnQ9XCJ3ZWVrRXZlbnRcIlxuICAgIGxldC10b29sdGlwUGxhY2VtZW50PVwidG9vbHRpcFBsYWNlbWVudFwiXG4gICAgbGV0LWV2ZW50Q2xpY2tlZD1cImV2ZW50Q2xpY2tlZFwiXG4gICAgbGV0LXRvb2x0aXBUZW1wbGF0ZT1cInRvb2x0aXBUZW1wbGF0ZVwiXG4gICAgbGV0LXRvb2x0aXBBcHBlbmRUb0JvZHk9XCJ0b29sdGlwQXBwZW5kVG9Cb2R5XCJcbiAgICBsZXQtdG9vbHRpcERpc2FibGVkPVwidG9vbHRpcERpc2FibGVkXCJcbiAgICBsZXQtdG9vbHRpcERlbGF5PVwidG9vbHRpcERlbGF5XCJcbiAgICBsZXQtY29sdW1uPVwiY29sdW1uXCJcbiAgICBsZXQtZGF5c0luV2Vlaz1cImRheXNJbldlZWtcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjYWwtZXZlbnRcIlxuICAgICAgW2NsYXNzLmV4dGVybmFsXT1cIndlZWtFdmVudC5ldmVudC5leHRlcm5hbFwiXG4gICAgICBbY2xhc3MubmVlZHNBY3Rpb25dPVwiQXR0ZW5kYW5jZS5ORUVEU19BQ1RJT04gPT09IHdlZWtFdmVudC5ldmVudC5hdHRlbmRhbmNlXCJcbiAgICAgIFtjbGFzcy5kZWNsaW5lZF09XCJBdHRlbmRhbmNlLkRFQ0xJTkVEID09PSB3ZWVrRXZlbnQuZXZlbnQuYXR0ZW5kYW5jZVwiXG4gICAgICBbY2xhc3MudGVudGF0aXZlXT1cIkF0dGVuZGFuY2UuVEVOVEFUSVZFID09PSB3ZWVrRXZlbnQuZXZlbnQuYXR0ZW5kYW5jZVwiXG4gICAgICBbc3R5bGUuYm9yZGVyLWxlZnQtY29sb3JdPVwid2Vla0V2ZW50LmV2ZW50LmNvbG9yPy5wcmltYXJ5XCJcbiAgICAgIFtzdHlsZS5jb2xvcl09XCJnZXRBbHRlcm5hdGVDb2xvcih3ZWVrRXZlbnQuZXZlbnQuY29sb3I/LnByaW1hcnksIGRhcmtNb2RlID8gODAgOiAtNDApXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImdldEFsdGVybmF0ZUNvbG9yKHdlZWtFdmVudC5ldmVudC5jb2xvcj8ucHJpbWFyeSwgZGFya01vZGUgPyA2MCA6IDgwLCAwLjIpXCJcbiAgICAgIFttd2xDYWxlbmRhclRvb2x0aXBdPVwiIXRvb2x0aXBEaXNhYmxlZCAmJiAhaXNNb2JpbGUoKSA/IGdldFRvb2x0aXBDb250ZW50KHdlZWtFdmVudC5ldmVudCkgOiAnJ1wiXG4gICAgICBbdG9vbHRpcFBsYWNlbWVudF09XCJ0b29sdGlwUGxhY2VtZW50XCJcbiAgICAgIFt0b29sdGlwRXZlbnRdPVwid2Vla0V2ZW50LnRlbXBFdmVudCB8fCB3ZWVrRXZlbnQuZXZlbnRcIlxuICAgICAgW3Rvb2x0aXBUZW1wbGF0ZV09XCJ0b29sdGlwVGVtcGxhdGVcIlxuICAgICAgW3Rvb2x0aXBBcHBlbmRUb0JvZHldPVwidG9vbHRpcEFwcGVuZFRvQm9keVwiXG4gICAgICBbdG9vbHRpcERlbGF5XT1cInRvb2x0aXBEZWxheVwiXG4gICAgICAobXdsQ2xpY2spPVwiZXZlbnRDbGlja2VkLmVtaXQoeyBzb3VyY2VFdmVudDogJGV2ZW50IH0pXCJcbiAgICAgIChtd2xLZXlkb3duRW50ZXIpPVwiZXZlbnRDbGlja2VkLmVtaXQoeyBzb3VyY2VFdmVudDogJGV2ZW50IH0pXCJcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICByb2xlPVwiYXBwbGljYXRpb25cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgeyBldmVudDogd2Vla0V2ZW50LnRlbXBFdmVudCB8fCB3ZWVrRXZlbnQuZXZlbnQsIGxvY2FsZTogbG9jYWxlIH0gfCBjYWxlbmRhckExMXkgOiAnZXZlbnREZXNjcmlwdGlvbidcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPG13bC1jYWxlbmRhci1ldmVudC1hY3Rpb25zIFtldmVudF09XCJ3ZWVrRXZlbnQudGVtcEV2ZW50IHx8IHdlZWtFdmVudC5ldmVudFwiPjwvbXdsLWNhbGVuZGFyLWV2ZW50LWFjdGlvbnM+XG4gICAgICAmbmdzcDtcbiAgICAgIDxtd2wtY2FsZW5kYXItZXZlbnQtdGl0bGVcbiAgICAgICAgW2V2ZW50XT1cIndlZWtFdmVudC50ZW1wRXZlbnQgfHwgd2Vla0V2ZW50LmV2ZW50XCJcbiAgICAgICAgW2N1c3RvbVRlbXBsYXRlXT1cImV2ZW50VGl0bGVUZW1wbGF0ZVwiXG4gICAgICAgIFt2aWV3XT1cImRheXNJbldlZWsgPT09IDEgPyAnZGF5JyA6ICd3ZWVrJ1wiXG4gICAgICA+XG4gICAgICA8L213bC1jYWxlbmRhci1ldmVudC10aXRsZT5cbiAgICAgIDxkaXYgY2xhc3M9XCJldmVudEdhZGdldHNcIiAqbmdJZj1cIiF3ZWVrRXZlbnQuZXZlbnQuYWxsRGF5XCI+XG4gICAgICAgIDxpb24taWNvbiAqbmdGb3I9XCJsZXQgaWNvbiBvZiB3ZWVrRXZlbnQuZXZlbnQuaWNvbnNcIiBbbmFtZV09XCJpY29uLm5hbWVcIiBbdGl0bGVdPVwiaWNvbi50aXRsZVwiPjwvaW9uLWljb24+XG4gICAgICAgIDxpZGVhLXVzZXItYXZhdGFyXG4gICAgICAgICAgc2l6ZT1cIm1pbmlcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBhdmF0YXIgb2Ygd2Vla0V2ZW50LmV2ZW50LmF2YXRhcnNcIlxuICAgICAgICAgIFtzcmNdPVwiYXZhdGFyLnVybFwiXG4gICAgICAgICAgW25hbWVdPVwiYXZhdGFyLnRpdGxlXCJcbiAgICAgICAgPjwvaWRlYS11c2VyLWF2YXRhcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGVcbiAgICAjaG91clNlZ21lbnRUZW1wbGF0ZVxuICAgIGxldC1zZWdtZW50PVwic2VnbWVudFwiXG4gICAgbGV0LWxvY2FsZT1cImxvY2FsZVwiXG4gICAgbGV0LXNlZ21lbnRIZWlnaHQ9XCJzZWdtZW50SGVpZ2h0XCJcbiAgICBsZXQtaXNUaW1lTGFiZWw9XCJpc1RpbWVMYWJlbFwiXG4gID5cbiAgICA8ZGl2XG4gICAgICAjc2VnbWVudEVsZW1lbnRcbiAgICAgIGNsYXNzPVwiY2FsLWhvdXItc2VnbWVudFwiXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInNlZ21lbnRIZWlnaHRcIlxuICAgICAgW2NsYXNzLmNhbC1ob3VyLXN0YXJ0XT1cInNlZ21lbnQuaXNTdGFydFwiXG4gICAgICBbY2xhc3MuY2FsLWFmdGVyLWhvdXItc3RhcnRdPVwiIXNlZ21lbnQuaXNTdGFydFwiXG4gICAgICBbbmdDbGFzc109XCJzZWdtZW50LmNzc0NsYXNzXCJcbiAgICAgIChtb3VzZWRvd24pPVwiYWxsb3dEcmFnVG9DcmVhdGUgPyBzdGFydERyYWdUb0NyZWF0ZSgkZXZlbnQsIHNlZ21lbnQuZGF0ZSwgc2VnbWVudEVsZW1lbnQpIDogbnVsbFwiXG4gICAgICAodG91Y2hzdGFydCk9XCJhbGxvd0RyYWdUb0NyZWF0ZSA/IHN0YXJ0RHJhZ1RvQ3JlYXRlKCRldmVudCwgc2VnbWVudC5kYXRlLCBzZWdtZW50RWxlbWVudCkgOiBudWxsXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FsLXRpbWVcIiAqbmdJZj1cImlzVGltZUxhYmVsXCI+XG4gICAgICAgIHt7IHNlZ21lbnQuZGF0ZSB8IGNhbGVuZGFyRGF0ZSA6ICd3ZWVrVmlld0hvdXInIDogbG9jYWxlIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPCEtLSBWSUVXUyAtLT5cbiAgPGRpdiBbbmdTd2l0Y2hdPVwidmlld1wiPlxuICAgIDxtd2wtY2FsZW5kYXItbW9udGgtdmlld1xuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkNhbGVuZGFyVmlldy5Nb250aFwiXG4gICAgICBbdmlld0RhdGVdPVwidmlld0RhdGVcIlxuICAgICAgW2V2ZW50c109XCJldmVudHNcIlxuICAgICAgW3JlZnJlc2hdPVwicmVmcmVzaFwiXG4gICAgICBbYWN0aXZlRGF5SXNPcGVuXT1cImFjdGl2ZURheUlzT3BlblwiXG4gICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICBbZXhjbHVkZURheXNdPVwiZXhjbHVkZURheXNcIlxuICAgICAgW3dlZWtTdGFydHNPbl09XCJ3ZWVrU3RhcnRzT25cIlxuICAgICAgW2V2ZW50VGl0bGVUZW1wbGF0ZV09XCJldmVudFRpdGxlVGVtcGxhdGVcIlxuICAgICAgKGV2ZW50Q2xpY2tlZCk9XCJzZWxlY3RFdmVudC5lbWl0KCRldmVudC5ldmVudClcIlxuICAgICAgKGV2ZW50VGltZXNDaGFuZ2VkKT1cImV2ZW50VGltZXNDaGFuZ2VkKCRldmVudClcIlxuICAgICAgKGRheUNsaWNrZWQpPVwiY2hhbmdlRGF5KCRldmVudC5kYXkpXCJcbiAgICAgIChiZWZvcmVWaWV3UmVuZGVyKT1cImJlZm9yZU1vbnRoVmlld1JlbmRlcigkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9td2wtY2FsZW5kYXItbW9udGgtdmlldz5cbiAgICA8bXdsLWNhbGVuZGFyLXdlZWstdmlld1xuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkNhbGVuZGFyVmlldy5XZWVrXCJcbiAgICAgIFt2aWV3RGF0ZV09XCJ2aWV3RGF0ZVwiXG4gICAgICBbZXZlbnRzXT1cImV2ZW50c1wiXG4gICAgICBbcmVmcmVzaF09XCJyZWZyZXNoXCJcbiAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgIFtleGNsdWRlRGF5c109XCJleGNsdWRlRGF5c1wiXG4gICAgICBbd2Vla1N0YXJ0c09uXT1cIndlZWtTdGFydHNPblwiXG4gICAgICBbZGF5U3RhcnRIb3VyXT1cImRheVN0YXJ0SG91clwiXG4gICAgICBbZGF5RW5kSG91cl09XCJkYXlFbmRIb3VyXCJcbiAgICAgIFtob3VyU2VnbWVudHNdPVwiaG91clNlZ21lbnRzXCJcbiAgICAgIFtldmVudFRlbXBsYXRlXT1cImV2ZW50VGVtcGxhdGVcIlxuICAgICAgW2hvdXJTZWdtZW50VGVtcGxhdGVdPVwiaG91clNlZ21lbnRUZW1wbGF0ZVwiXG4gICAgICAoZXZlbnRDbGlja2VkKT1cInNlbGVjdEV2ZW50LmVtaXQoJGV2ZW50LmV2ZW50KVwiXG4gICAgICAoZXZlbnRUaW1lc0NoYW5nZWQpPVwiZXZlbnRUaW1lc0NoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAoZGF5SGVhZGVyQ2xpY2tlZCk9XCJkYXRlSXNWYWxpZCgkZXZlbnQuZGF5LmRhdGUpID8gc2VsZWN0RGF5LmVtaXQoJGV2ZW50LmRheS5kYXRlKSA6IG51bGxcIlxuICAgICAgKGhvdXJTZWdtZW50Q2xpY2tlZCk9XCJkYXRlSXNWYWxpZCgkZXZlbnQuZGF0ZSkgPyBzZWxlY3RTbG90LmVtaXQoJGV2ZW50LmRhdGUpIDogbnVsbFwiXG4gICAgICAoYmVmb3JlVmlld1JlbmRlcik9XCJiZWZvcmVXZWVrT3JEYXlWaWV3UmVuZGVyKCRldmVudClcIlxuICAgID5cbiAgICA8L213bC1jYWxlbmRhci13ZWVrLXZpZXc+XG4gICAgPG13bC1jYWxlbmRhci1kYXktdmlld1xuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkNhbGVuZGFyVmlldy5EYXlcIlxuICAgICAgW3ZpZXdEYXRlXT1cInZpZXdEYXRlXCJcbiAgICAgIFtldmVudHNdPVwiZXZlbnRzXCJcbiAgICAgIFtyZWZyZXNoXT1cInJlZnJlc2hcIlxuICAgICAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgW2RheVN0YXJ0SG91cl09XCJkYXlTdGFydEhvdXJcIlxuICAgICAgW2RheUVuZEhvdXJdPVwiZGF5RW5kSG91clwiXG4gICAgICBbaG91clNlZ21lbnRzXT1cImhvdXJTZWdtZW50c1wiXG4gICAgICBbZXZlbnRUZW1wbGF0ZV09XCJldmVudFRlbXBsYXRlXCJcbiAgICAgIFtob3VyU2VnbWVudFRlbXBsYXRlXT1cImhvdXJTZWdtZW50VGVtcGxhdGVcIlxuICAgICAgKGV2ZW50Q2xpY2tlZCk9XCJzZWxlY3RFdmVudC5lbWl0KCRldmVudC5ldmVudClcIlxuICAgICAgKGV2ZW50VGltZXNDaGFuZ2VkKT1cImV2ZW50VGltZXNDaGFuZ2VkKCRldmVudClcIlxuICAgICAgKGhvdXJTZWdtZW50Q2xpY2tlZCk9XCJkYXRlSXNWYWxpZCgkZXZlbnQuZGF0ZSkgPyBzZWxlY3RTbG90LmVtaXQoJGV2ZW50LmRhdGUpIDogbnVsbFwiXG4gICAgICAoYmVmb3JlVmlld1JlbmRlcik9XCJiZWZvcmVXZWVrT3JEYXlWaWV3UmVuZGVyKCRldmVudClcIlxuICAgID5cbiAgICA8L213bC1jYWxlbmRhci1kYXktdmlldz5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
355
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbmRhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21vZHVsZXMvYWdlbmRhL3NyYy9hZ2VuZGEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vbW9kdWxlcy9hZ2VuZGEvc3JjL2FnZW5kYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULHVCQUF1QixFQUN2QixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFHYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFJTCxZQUFZLEVBRWIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEYsYUFBYTtBQUNiLE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQzs7Ozs7O0FBU3JDLE1BQU0sT0FBTyxtQkFBbUI7SUFpSDlCLFlBQW9CLEdBQXNCLEVBQVUsUUFBa0IsRUFBUyxDQUEwQjtRQUFyRixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVU7UUFBUyxNQUFDLEdBQUQsQ0FBQyxDQUF5QjtRQWhIekc7O1dBRUc7UUFDTSxXQUFNLEdBQWtCLEVBQUUsQ0FBQztRQUNwQzs7V0FFRztRQUNNLGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBQ3BDOztXQUVHO1FBQ00saUJBQVksR0FBRyxDQUFDLENBQUM7UUFDMUI7O1dBRUc7UUFDTSxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3pCOztXQUVHO1FBQ00saUJBQVksR0FBRyxDQUFDLENBQUM7UUFDMUI7O1dBRUc7UUFDTSxvQkFBZSxHQUFHLEtBQUss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WSxDQUFBO0lBQ1osK0VBQWlCLENBQUE7SUFDakIsNkRBQVEsQ0FBQTtBQUNWLENBQUMsRUFKVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBSTlCO0FBRUQsTUFBTSxjQUFjLEdBQUcsQ0FBQyxNQUFjLEVBQUUsU0FBaUIsRUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQ2pILE1BQU0sYUFBYSxHQUFHLENBQUMsTUFBYyxFQUFFLFNBQWlCLEVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25Jbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkNvbnRlbnQsIFBsYXRmb3JtIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgZmluYWxpemUsIGZyb21FdmVudCwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBDYWxlbmRhckV2ZW50LFxuICBDYWxlbmRhckV2ZW50VGltZXNDaGFuZ2VkRXZlbnQsXG4gIENhbGVuZGFyTW9udGhWaWV3QmVmb3JlUmVuZGVyRXZlbnQsXG4gIENhbGVuZGFyVmlldyxcbiAgQ2FsZW5kYXJXZWVrVmlld0JlZm9yZVJlbmRlckV2ZW50XG59IGZyb20gJ2FuZ3VsYXItY2FsZW5kYXInO1xuaW1wb3J0IHsgaXNGdXR1cmUsIGlzVG9kYXksIGlzU2FtZURheSwgZW5kT2ZXZWVrLCBhZGREYXlzLCBhZGRNaW51dGVzIH0gZnJvbSAnZGF0ZS1mbnMnO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IENvbG9yUGFyc2UgZnJvbSAnY29sb3ItcGFyc2UnO1xuaW1wb3J0IHsgSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UgfSBmcm9tICdAaWRlYS1pb25pYy9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZGVhLWFnZW5kYScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZVVybDogJ2FnZW5kYS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydhZ2VuZGEuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJREVBQWdlbmRhQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIFRoZSBldmVudHMgdG8gZGlzcGxheSBpbiB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBASW5wdXQoKSBldmVudHM6IEFnZW5kYUV2ZW50W10gPSBbXTtcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIGRheSBpbmRleGVzICgwID0gc3VuZGF5LCAxID0gbW9uZGF5LCBldGMuKSB0aGF0IHdpbGwgYmUgaGlkZGVuIG9uIHRoZSB2aWV3LlxuICAgKi9cbiAgQElucHV0KCkgZXhjbHVkZURheXM6IG51bWJlcltdID0gW107XG4gIC8qKlxuICAgKiBUaGUgZGF5IHN0YXJ0IGhvdXJzIGluIDI0IGhvdXIgdGltZS4gTXVzdCBiZSAwLTIzXG4gICAqL1xuICBASW5wdXQoKSBkYXlTdGFydEhvdXIgPSAwO1xuICAvKipcbiAgICogVGhlIGRheSBzdGFydCBob3VycyBpbiAyNCBob3VyIHRpbWUuIE11c3QgYmUgMC0yM1xuICAgKi9cbiAgQElucHV0KCkgZGF5RW5kSG91ciA9IDIzO1xuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBzZWdtZW50cyBpbiBhbiBob3VyLiBNdXN0IGRpdmlkZSBlcXVhbGx5IGludG8gNjAuXG4gICAqL1xuICBASW5wdXQoKSBob3VyU2VnbWVudHMgPSAyO1xuICAvKipcbiAgICogV2hldGhlciB0byBvcGVuIHRoZSBjdXJyZW50IGRheSdzIGRldGFpbHMgcmlnaHQgYXdheSBpbiBtb250aCB2aWV3LlxuICAgKi9cbiAgQElucHV0KCkgYWN0aXZlRGF5SXNPcGVuID0gZmFsc2U7XG4gIC8qKlxuICAgKiBUaGUgdmlldyBtb2RlIGZvciB0aGUgYWdlbmRhLlxuICAgKi9cbiAgQElucHV0KCkgdmlldzogQ2FsZW5kYXJWaWV3ID0gQ2FsZW5kYXJWaWV3LldlZWs7XG4gIC8qKlxuICAgKiBUaGUgYWxsb3dlZCB2aWV3IG1vZGUgZm9yIHRoZSBhZ2VuZGEuXG4gICAqL1xuICBASW5wdXQoKSBhbGxvd2VkVmlld3MgPSBbQ2FsZW5kYXJWaWV3LkRheSwgQ2FsZW5kYXJWaWV3LldlZWssIENhbGVuZGFyVmlldy5Nb250aF07XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGJsb2NrIGFueSBkYXkvc2xvdCBpbiB0aGUgcGFzdC5cbiAgICovXG4gIEBJbnB1dCgpIG9ubHlGdXR1cmUgPSBmYWxzZTtcbiAgLyoqXG4gICAqIFNvbWUgbm90ZXMgdG8gc2hvdyB1bmRlcm5lYXRoIHRoZSBjYWxlbmRhcidzIGhlYWRlci5cbiAgICovXG4gIEBJbnB1dCgpIHRpdGxlTm90ZXM6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB0ZW1wbGF0ZSBmb3IgbmV3IGV2ZW50cyBjcmVhdGVkIGJ5IGRyYWcmZHJvcC5cbiAgICovXG4gIEBJbnB1dCgpIG5ld0V2ZW50VGVtcGxhdGU6IEFnZW5kYUV2ZW50ID0geyB0aXRsZTogJ05ldycsIHN0YXJ0OiBudWxsLCBtZXRhOiB7fSB9O1xuICAvKipcbiAgICogV2hldGhlciAoYW5kIGhvdykgdG8gYWxsb3cgdGhlIGNyZWF0aW9uIG9mIGV2ZW50cyBieSBkcmFnJmRyb3AuXG4gICAqIElmIGVuYWJsZWQsIG9uIG1vYmlsZSBpdCByZXF1aXJlcyB0aGUgYHBhcmVudENvbnRlbnRgIHRvIGJlIHNldCBmb3IgYSBjb3JyZWN0IGV4ZWN1dGlvbi5cbiAgICovXG4gIEBJbnB1dCgpIGFsbG93RHJhZ1RvQ3JlYXRlOiBEcmFnVG9DcmVhdGVPcHRpb25zID0gRHJhZ1RvQ3JlYXRlT3B0aW9ucy5ESVNBQkxFRDtcbiAgLyoqXG4gICAqIFRoZSBwYXJlbnQgaW9uLWNvbnRlbnQsIGluIGNhc2Ugd2Ugd2FudCB0byBjb250cm9sIGl0cyBzY3JvbGxhYmlsaXR5IGZvciBkcmFnJmRyb3AgZmVhdHVyZXMuXG4gICAqL1xuICBASW5wdXQoKSBwYXJlbnRDb250ZW50OiBJb25Db250ZW50O1xuICAvKipcbiAgICogVHJpZ2dlciB3aGVuIGFuIGV2ZW50IGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgQE91dHB1dCgpIHNlbGVjdEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxBZ2VuZGFFdmVudD4oKTtcbiAgLyoqXG4gICAqIFRyaWdnZXIgd2hlbiBhIGRheSBpcyBzZWxlY3RlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBzZWxlY3REYXkgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG4gIC8qKlxuICAgKiBUcmlnZ2VyIHdoZW4gYSB0aW1lIHNsb3QgaXMgc2VsZWN0ZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgc2VsZWN0U2xvdCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgLyoqXG4gICAqIFRyaWdnZXIgd2hlbiBhIG5ldyBldmVudCBpcyBhZGRlZCBieSBkcmFnIGFuZCBkcm9wLlxuICAgKi9cbiAgQE91dHB1dCgpIG5ld0V2ZW50QnlEcmFnID0gbmV3IEV2ZW50RW1pdHRlcjxBZ2VuZGFFdmVudD4oKTtcbiAgLyoqXG4gICAqIFRyaWdnZXIgd2hlbiBhbiBldmVudCBjaGFuZ2VkIGRhdGUgKGRyYWcmZHJvcCBvciByZXNpemUpLlxuICAgKi9cbiAgQE91dHB1dCgpIGNoYW5nZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxBZ2VuZGFFdmVudD4oKTtcbiAgLyoqXG4gICAqIFRyaWdnZXIgd2hlbiB0aGUgdmlldyBkYXRlIG9mIHJlZmVyZW5jZSBjaGFuZ2VkIChiZWNhdXNlIHdlIG1vdmVkIGluc2lkZSB0aGUgY2FsZW5kYXIpLlxuICAgKi9cbiAgQE91dHB1dCgpIGNoYW5nZURhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG4gIC8qKlxuICAgKiBUcmlnZ2VyIGJlZm9yZSB0aGUgcmVuZGVyaW5nIG9mIHRoZSB3ZWVrIG9yIGRheSB2aWV3LlxuICAgKi9cbiAgQE91dHB1dCgpIGJlZm9yZVdlZWtPckRheVZpZXdSZW5kZXJFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxDYWxlbmRhcldlZWtWaWV3QmVmb3JlUmVuZGVyRXZlbnQ+KCk7XG4gIC8qKlxuICAgKiBUcmlnZ2VyIGJlZm9yZSB0aGUgcmVuZGVyaW5nIG9mIHRoZSBtb250aCB2aWV3LlxuICAgKi9cbiAgQE91dHB1dCgpIGJlZm9yZU1vbnRoVmlld1JlbmRlckVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPENhbGVuZGFyTW9udGhWaWV3QmVmb3JlUmVuZGVyRXZlbnQ+KCk7XG4gIC8qKlxuICAgKiBIZWxwZXIgdG8gdXNlIHRoZSBlbnVtIGluIHRoZSBVWC5cbiAgICovXG4gIENhbGVuZGFyVmlldyA9IENhbGVuZGFyVmlldztcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZGF0ZS5cbiAgICovXG4gIHZpZXdEYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgLyoqXG4gICAqIEEgY29udHJvbGxlciB0byByZWZyZXNoIHRoZSBjdXJyZW50IHZpZXcuXG4gICAqL1xuICByZWZyZXNoOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgLyoqXG4gICAqIFRoZSBsb2NhbGUgdXNlZCB0byBmb3JtYXQgZGF0ZXMuXG4gICAqIEBoaWRlXG4gICAqL1xuICBsb2NhbGU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzdGFydGluZyBkYXkgZm9yIHRoZSB3ZWVrLCBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsZSAoMCA9IHN1bmRheSkuXG4gICAqIEBoaWRlXG4gICAqL1xuICB3ZWVrU3RhcnRzT246IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG5cbiAgQXR0ZW5kYW5jZSA9IEV2ZW50QXR0ZW5kYW5jZTtcblxuICBkYXJrTW9kZSA9IHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJykubWF0Y2hlcztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgcGxhdGZvcm06IFBsYXRmb3JtLCBwdWJsaWMgdDogSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UpIHt9XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9jYWxlID0gdGhpcy50LmdldEN1cnJlbnRMYW5nKCk7XG4gICAgLy8gaW4gY2FzZSBvZiBJdGFsaWFuIGxvY2FsZSB0aGUgc3RhcnRpbmcgZGF5IGZvciB0aGUgd2VlayBpcyBtb25kYXkgKDEpLCBvdGhlcndpc2Ugc3VuZGF5ICgwKVxuICAgIHRoaXMud2Vla1N0YXJ0c09uID0gdGhpcy5sb2NhbGUgPT09ICdpdCcgPyAxIDogMDtcbiAgfVxuICBpc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybS5pcygnbW9iaWxlJyk7XG4gIH1cblxuICAvKipcbiAgICogUnVuIHNvbWUgY2hlY2tzIGJlZm9yZSB0aGUgbW9udGggdmlldyBpcyByZW5kZXJlZCAoZS5nLiBkaXNhYmxlIGludmFsaWQgZGF5cykuXG4gICAqL1xuICBiZWZvcmVNb250aFZpZXdSZW5kZXIoZXZlbnQ6IENhbGVuZGFyTW9udGhWaWV3QmVmb3JlUmVuZGVyRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmJlZm9yZU1vbnRoVmlld1JlbmRlckVtaXR0ZXIuZW1pdChldmVudCk7XG4gICAgY29uc3QgeyBib2R5IH0gPSBldmVudDtcbiAgICBib2R5LmZvckVhY2goZGF5ID0+IHtcbiAgICAgIGlmICghdGhpcy5kYXRlSXNWYWxpZChkYXkuZGF0ZSkpIGRheS5jc3NDbGFzcyA9ICdjYWwtZGlzYWJsZWQnO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBSdW4gc29tZSBjaGVja3MgYmVmb3JlIHRoZSB3ZWVrL2RheSB2aWV3IGlzIHJlbmRlcmVkIChlLmcuIGRpc2FibGUgaW52YWxpZCBkYXlzKS5cbiAgICovXG4gIGJlZm9yZVdlZWtPckRheVZpZXdSZW5kZXIoZXZlbnQ6IENhbGVuZGFyV2Vla1ZpZXdCZWZvcmVSZW5kZXJFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuYmVmb3JlV2Vla09yRGF5Vmlld1JlbmRlckVtaXR0ZXIuZW1pdChldmVudCk7XG4gICAgY29uc3QgeyBoZWFkZXIsIGhvdXJDb2x1bW5zIH0gPSBldmVudDtcbiAgICBoZWFkZXIuZm9yRWFjaChkYXkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmRhdGVJc1ZhbGlkKGRheS5kYXRlKSkgZGF5LmNzc0NsYXNzID0gJ2NhbC1kaXNhYmxlZCc7XG4gICAgfSk7XG4gICAgaG91ckNvbHVtbnMuZm9yRWFjaChob3VyQ29sID0+IHtcbiAgICAgIGhvdXJDb2wuaG91cnMuZm9yRWFjaChob3VyID0+IHtcbiAgICAgICAgaG91ci5zZWdtZW50cy5mb3JFYWNoKHNlZ21lbnQgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5kYXRlSXNWYWxpZChzZWdtZW50LmRhdGUpKSBzZWdtZW50LmNzc0NsYXNzID0gJ2NhbC1kaXNhYmxlZCc7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciBhIGRhdGUgaXMgdmFsaWQgYmFzZWQgb24gdGhlIGNvbmZpZ3VyZWQgcGFyYW1ldGVycy5cbiAgICovXG4gIGRhdGVJc1ZhbGlkKGRhdGU6IGFueSwgc2FtZURheUlzVmFsaWQ/OiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLm9ubHlGdXR1cmUpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBpc0Z1dHVyZShkYXRlKSB8fCAoc2FtZURheUlzVmFsaWQgPyBpc1RvZGF5KGRhdGUpIDogZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoYW5nZSB0aGUgY3VycmVudCB2aWV3IGZvciB0aGUgYWdlbmRhLlxuICAgKi9cbiAgc2V0Vmlldyh2aWV3OiBDYWxlbmRhclZpZXcpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXcgPSB2aWV3O1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXQgdGhlIGNoYW5nZSBvZiB0aGUgdmlldyBkYXRlIGFuZCBjbG9zZSB0aGUgZGV0YWlsIGNvbXBvbmVudCBvZiB0aGUgbW9udGggdmlldywgaWYgbmVlZGVkLlxuICAgKi9cbiAgdmlld0RhdGVDaGFuZ2VkKG5ld0RhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52aWV3ID09PSBDYWxlbmRhclZpZXcuTW9udGgpIHRoaXMuYWN0aXZlRGF5SXNPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5jaGFuZ2VEYXRlLmVtaXQobmV3RGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogQSBkYXkgd2FzIHNlbGVjdGVkOiBtYW5hZ2UgdGhlIGRldGFpbGVkIHZpZXcuXG4gICAqL1xuICBjaGFuZ2VEYXkoeyBkYXRlLCBldmVudHMgfTogeyBkYXRlOiBEYXRlOyBldmVudHM6IEFnZW5kYUV2ZW50W10gfSk6IHZvaWQge1xuICAgIC8vIHNraXAgaWYgdGhlIGRhdGUgaXNuJ3QgdmFsaWRcbiAgICBpZiAoIXRoaXMuZGF0ZUlzVmFsaWQoZGF0ZSwgdHJ1ZSkpIHJldHVybjtcbiAgICAvLyBpZiB0aGUgc2VsZWN0ZWQgZGF5IGNoYW5nZWQsIGlmIHRoZSBuZXcgZGF5IGhhcyBldmVudHMsIG9wZW4gdGhlIGRldGFpbHMgaW4gbW9udGggdmlldyAob3RoZXJ3aXNlIGNsb3NlIHRoZW0pXG4gICAgaWYgKChpc1NhbWVEYXkodGhpcy52aWV3RGF0ZSwgZGF0ZSkgJiYgdGhpcy5hY3RpdmVEYXlJc09wZW4gPT09IHRydWUpIHx8ICFldmVudHMgfHwgZXZlbnRzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRoaXMuYWN0aXZlRGF5SXNPcGVuID0gZmFsc2U7XG4gICAgZWxzZSB0aGlzLmFjdGl2ZURheUlzT3BlbiA9IHRydWU7XG4gICAgLy8gdXBkYXRlIHRoZSBjdXJyZW50IGRhdGUgaW4gdGhlIGFnZW5kYVxuICAgIHRoaXMudmlld0RhdGUgPSBkYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIG9mIGFuIGV2ZW50IHdhcyBjaGFuZ2VkLlxuICAgKi9cbiAgZXZlbnRUaW1lc0NoYW5nZWQoeyBldmVudCwgbmV3U3RhcnQsIG5ld0VuZCB9OiBDYWxlbmRhckV2ZW50VGltZXNDaGFuZ2VkRXZlbnQpOiB2b2lkIHtcbiAgICAvLyB1cGRhdGUgdGhlIGV2ZW50XG4gICAgZXZlbnQuc3RhcnQgPSBuZXdTdGFydDtcbiAgICBldmVudC5lbmQgPSBuZXdFbmQ7XG4gICAgLy8gcmUtbWFwIHRoZSBhcnJheSB0byB0cmlnZ2VyIHRoZSBVSSByZWZyZXNoXG4gICAgdGhpcy5ldmVudHMgPSB0aGlzLmV2ZW50cy5zbGljZSgpO1xuICAgIC8vIHRyaWdnZXIgdGhlIGV2ZW50IHRvIHRoZSBwYXJlbnQgY29tcG9uZW50XG4gICAgdGhpcy5jaGFuZ2VFdmVudC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHaXZlbiBhIGNvbG9yLCBpdCByZXR1cm5zIGFuIG9wYXF1ZSB2ZXJzaW9uIG9mIGl0LlxuICAgKi9cbiAgZ2V0QWx0ZXJuYXRlQ29sb3IoY29sb3I6IHN0cmluZywgYW1vdW50OiBudW1iZXIsIG9wYWNpdHk/OiBudW1iZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICghY29sb3I/LnRyaW0oKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBhbHQgPSBDb2xvclBhcnNlKGNvbG9yLnRyaW0oKSk7XG4gICAgY29uc3QgciA9IE1hdGgubWF4KE1hdGgubWluKDI1NSwgTnVtYmVyKGFsdC52YWx1ZXNbMF0pICsgYW1vdW50KSwgMCk7XG4gICAgY29uc3QgZyA9IE1hdGgubWF4KE1hdGgubWluKDI1NSwgTnVtYmVyKGFsdC52YWx1ZXNbMV0pICsgYW1vdW50KSwgMCk7XG4gICAgY29uc3QgYiA9IE1hdGgubWF4KE1hdGgubWluKDI1NSwgTnVtYmVyKGFsdC52YWx1ZXNbMl0pICsgYW1vdW50KSwgMCk7XG4gICAgcmV0dXJuIGByZ2JhKCR7cn0sICR7Z30sICR7Yn0sICR7b3BhY2l0eSB8fCAxfSlgO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY29udGVudCBvZiB0aGUgdG9vbHRpcCBiYXNlZCBvbiB0aGUgZXZlbnQuXG4gICAqL1xuICBnZXRUb29sdGlwQ29udGVudChldmVudDogQWdlbmRhRXZlbnQpOiBzdHJpbmcge1xuICAgIGlmICghZXZlbnQpIHJldHVybiAnJztcbiAgICBsZXQgc3RyID0gZXZlbnQudGl0bGUgPyAnPGI+JyArIGV2ZW50LnRpdGxlICsgJzwvYj4nIDogJyc7XG4gICAgaWYgKGV2ZW50LmRlc2NyaXB0aW9uKSBzdHIgPSBzdHIuY29uY2F0KCc8YnI+JywgZXZlbnQuZGVzY3JpcHRpb24pO1xuICAgIGlmIChldmVudC5pY29ucykgZXZlbnQuaWNvbnMuZm9yRWFjaCh4ID0+IChzdHIgPSBzdHIuY29uY2F0KCc8YnI+JywgJzxpPicsIHgudGl0bGUsICc8L2k+JykpKTtcbiAgICBpZiAoZXZlbnQuYXZhdGFycyAmJiBldmVudC5hdmF0YXJzLmxlbmd0aCkge1xuICAgICAgc3RyID0gc3RyLmNvbmNhdCgnPGJyPjxicj5+Jyk7XG4gICAgICBldmVudC5hdmF0YXJzLmZvckVhY2goeCA9PiAoc3RyID0gc3RyLmNvbmNhdCgnPGJyPicsIHgudGl0bGUpKSk7XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgc2hvcnRlbmVkIHZlcnNpb24gb2YgdGhlIGRlc2NyaXB0aW9uIGFzIHByZXZpZXcuXG4gICAqL1xuICBnZXRQcmV2aWV3RGVzY3JpcHRpb24oZGVzY3JpcHRpb246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRlc2NyaXB0aW9uICYmIGRlc2NyaXB0aW9uLmxlbmd0aCA+IDEwMCA/IGRlc2NyaXB0aW9uLnNsaWNlKDAsIDEwMCkuY29uY2F0KCcuLi4nKSA6IGRlc2NyaXB0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB0aGUgZHJhZyZkcm9wIHRvIGNyZWF0ZSBhIG5ldyBldmVudC5cbiAgICovXG4gIHN0YXJ0RHJhZ1RvQ3JlYXRlKGV2ZW50OiBFdmVudCwgc2VnbWVudERhdGU6IERhdGUsIHNlZ21lbnRFbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hbGxvd0RyYWdUb0NyZWF0ZSkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMucGFyZW50Q29udGVudCkgdGhpcy5wYXJlbnRDb250ZW50LnNjcm9sbFkgPSBmYWxzZTtcblxuICAgIGNvbnN0IGV2ZW50QnlEcmFnQW5kRHJvcDogQWdlbmRhRXZlbnQgPSB7IC4uLnRoaXMubmV3RXZlbnRUZW1wbGF0ZSwgc3RhcnQ6IHNlZ21lbnREYXRlIH07XG4gICAgdGhpcy5ldmVudHMgPSBbLi4udGhpcy5ldmVudHMsIGV2ZW50QnlEcmFnQW5kRHJvcF07XG5cbiAgICBjb25zdCBzZWdtZW50UG9zaXRpb24gPSBzZWdtZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBlbmRPZlZpZXcgPSBlbmRPZldlZWsodGhpcy52aWV3RGF0ZSwgeyB3ZWVrU3RhcnRzT246IHRoaXMud2Vla1N0YXJ0c09uIH0pO1xuXG4gICAgY29uc3Qgd2hpbGVEcmFnZ2luZyA9IChkcmFnZ2luZ0V2ZW50OiBFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgY29uc3QgeyBjbGllbnRZLCBjbGllbnRYIH0gPVxuICAgICAgICBkcmFnZ2luZ0V2ZW50LnR5cGUgPT09ICd0b3VjaG1vdmUnID8gKGRyYWdnaW5nRXZlbnQgYXMgVG91Y2hFdmVudCkudG91Y2hlc1swXSA6IChkcmFnZ2luZ0V2ZW50IGFzIE1vdXNlRXZlbnQpO1xuXG4gICAgICBjb25zdCBtaW51dGVzRGlmZiA9IGNlaWxUb05lYXJlc3QoY2xpZW50WSAtIHNlZ21lbnRQb3NpdGlvbi50b3AsIDMwKTtcbiAgICAgIGNvbnN0IGRheXNEaWZmID0gZmxvb3JUb05lYXJlc3QoY2xpZW50WCAtIHNlZ21lbnRQb3NpdGlvbi5sZWZ0LCBzZWdtZW50UG9zaXRpb24ud2lkdGgpIC8gc2VnbWVudFBvc2l0aW9uLndpZHRoO1xuXG4gICAgICBsZXQgbmV3RW5kOiBEYXRlO1xuICAgICAgaWYgKHRoaXMuYWxsb3dEcmFnVG9DcmVhdGUgPT09IERyYWdUb0NyZWF0ZU9wdGlvbnMuT05MWV9TQU1FX0RBWSkgbmV3RW5kID0gYWRkTWludXRlcyhzZWdtZW50RGF0ZSwgbWludXRlc0RpZmYpO1xuICAgICAgZWxzZSBuZXdFbmQgPSBhZGREYXlzKGFkZE1pbnV0ZXMoc2VnbWVudERhdGUsIG1pbnV0ZXNEaWZmKSwgZGF5c0RpZmYpO1xuXG4gICAgICBpZiAobmV3RW5kID4gc2VnbWVudERhdGUgJiYgbmV3RW5kIDwgZW5kT2ZWaWV3KSBldmVudEJ5RHJhZ0FuZERyb3AuZW5kID0gbmV3RW5kO1xuICAgICAgcmVmcmVzaFZpZXcoKTtcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kT2ZEcmFnID0gKCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKHRoaXMucGFyZW50Q29udGVudCkgdGhpcy5wYXJlbnRDb250ZW50LnNjcm9sbFkgPSB0cnVlO1xuICAgICAgZXZlbnRCeURyYWdBbmREcm9wLmVuZCA9IHRoaXMuZ2V0Rml4ZWRFbmREYXRlV2l0aE1pbmltdW1TZWdtZW50RHVyYXRpb24oZXZlbnRCeURyYWdBbmREcm9wKTtcbiAgICAgIHJlZnJlc2hWaWV3KCk7XG4gICAgICB0aGlzLm5ld0V2ZW50QnlEcmFnLmVtaXQoZXZlbnRCeURyYWdBbmREcm9wKTtcbiAgICB9O1xuXG4gICAgY29uc3QgcmVmcmVzaFZpZXcgPSAoKTogdm9pZCA9PiB7XG4gICAgICB0aGlzLmV2ZW50cyA9IFsuLi50aGlzLmV2ZW50c107XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfTtcblxuICAgIGlmIChldmVudC50eXBlID09PSAndG91Y2hzdGFydCcpIHtcbiAgICAgIGZyb21FdmVudChkb2N1bWVudCwgJ3RvdWNobW92ZScpXG4gICAgICAgIC5waXBlKGZpbmFsaXplKGVuZE9mRHJhZyksIHRha2VVbnRpbChmcm9tRXZlbnQoZG9jdW1lbnQsICd0b3VjaGVuZCcpKSlcbiAgICAgICAgLnN1YnNjcmliZSh3aGlsZURyYWdnaW5nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZnJvbUV2ZW50KGRvY3VtZW50LCAnbW91c2Vtb3ZlJylcbiAgICAgICAgLnBpcGUoZmluYWxpemUoZW5kT2ZEcmFnKSwgdGFrZVVudGlsKGZyb21FdmVudChkb2N1bWVudCwgJ21vdXNldXAnKSkpXG4gICAgICAgIC5zdWJzY3JpYmUod2hpbGVEcmFnZ2luZyk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgZ2V0Rml4ZWRFbmREYXRlV2l0aE1pbmltdW1TZWdtZW50RHVyYXRpb24oYWdlbmRhQm9va2luZzogQWdlbmRhRXZlbnQpOiBEYXRlIHtcbiAgICBjb25zdCBmaXhlZEVuZCA9IG5ldyBEYXRlKGFnZW5kYUJvb2tpbmcuZW5kID8/IGFnZW5kYUJvb2tpbmcuc3RhcnQpO1xuICAgIGNvbnN0IHNlZ21lbnRTaXplSW5NaW51dGVzID0gNjAgLyB0aGlzLmhvdXJTZWdtZW50cztcbiAgICBpZiAoZml4ZWRFbmQuZ2V0VGltZSgpIDw9IGFnZW5kYUJvb2tpbmcuc3RhcnQuZ2V0VGltZSgpICsgc2VnbWVudFNpemVJbk1pbnV0ZXMgKiA2MCAqIDEwMDApXG4gICAgICBmaXhlZEVuZC5zZXRNaW51dGVzKGFnZW5kYUJvb2tpbmcuc3RhcnQuZ2V0TWludXRlcygpICsgc2VnbWVudFNpemVJbk1pbnV0ZXMpO1xuICAgIHJldHVybiBmaXhlZEVuZDtcbiAgfVxufVxuXG4vKipcbiAqIEEgcmljaGVyIHZlcnNpb24gb2YgdGhlIGNsYXNzaWMgQ2FsZW5kYXJFdmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZ2VuZGFFdmVudCBleHRlbmRzIENhbGVuZGFyRXZlbnQge1xuICAvKipcbiAgICogQSBicmllZiBkZXNjcmlwdGlvbiBmb3IgdGhlIGV2ZW50IChlLmcuIGN1c3RvbWVyLCBhZGRyZXNzLCBldGMuKS5cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIG9mIHRoZSBldmVudC5cbiAgICovXG4gIGxvY2F0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogQSBsaXN0IG9mIFVSTHMgb2YgaW1hZ2VzIHRvIHNob3cgYXMgc21hbGwgYXZhdGFycy5cbiAgICovXG4gIGF2YXRhcnM/OiB7IGlkOiBzdHJpbmc7IHVybDogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH1bXTtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBpb24taWNvbnMgdG8gc2hvdy5cbiAgICovXG4gIGljb25zPzogeyBuYW1lOiBzdHJpbmc7IHRpdGxlOiBzdHJpbmcgfVtdO1xuICAvKipcbiAgICogVGhlIGNvbG9ycyBvZiB0aGUgZXZlbnQgZGlzcGxheWVkLlxuICAgKi9cbiAgY29sb3I/OiB7IHByaW1hcnk6IHN0cmluZzsgc2Vjb25kYXJ5Pzogc3RyaW5nIH0gfCBhbnk7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBldmVudCBpcyBleHRlcm5hbDsgZXh0ZXJuYWwgZXZlbnRzIGFyZSBsZXNzIGltcG9ydGFudCBVSS13aXNlLlxuICAgKi9cbiAgZXh0ZXJuYWw/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIGF0dGVuZGFuY2Ugc3RhdHVzIHRvIHRoaXMgZXZlbnQsIGlmIGFueS5cbiAgICovXG4gIGF0dGVuZGFuY2U/OiBFdmVudEF0dGVuZGFuY2U7XG4gIC8qKlxuICAgKiBBIHN0YW5kYXJkIGFuZCB1bmlxdWUgaWQgZm9yIHRoZSBldmVudCwgdmFsaWQgYWNyb3NzIG11bHRpcGxlIHNvdXJjZXMuXG4gICAqL1xuICBpQ2FsVUlEPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBvc3NpYmxlIGF0dGVuZGFuY2Ugc3RhdHVzZXMgZm9yIHRoZSBldmVudC5cbiAqL1xuZXhwb3J0IGVudW0gRXZlbnRBdHRlbmRhbmNlIHtcbiAgREVDTElORUQgPSAtMSxcbiAgTkVFRFNfQUNUSU9OID0gMCxcbiAgVEVOVEFUSVZFLFxuICBBQ0NFUFRFRFxufVxuXG4vKipcbiAqIFRoZSBvcHRpb25zIHRvIGFsbG93IChvciBub3QpIGRyYWcmZHJvcCB0byBjcmVhdGUgYSBuZXcgZXZlbnQuXG4gKi9cbmV4cG9ydCBlbnVtIERyYWdUb0NyZWF0ZU9wdGlvbnMge1xuICBESVNBQkxFRCA9IDAsXG4gIE9OTFlfU0FNRV9EQVkgPSAxLFxuICBGUkVFID0gMlxufVxuXG5jb25zdCBmbG9vclRvTmVhcmVzdCA9IChhbW91bnQ6IG51bWJlciwgcHJlY2lzaW9uOiBudW1iZXIpOiBudW1iZXIgPT4gTWF0aC5mbG9vcihhbW91bnQgLyBwcmVjaXNpb24pICogcHJlY2lzaW9uO1xuY29uc3QgY2VpbFRvTmVhcmVzdCA9IChhbW91bnQ6IG51bWJlciwgcHJlY2lzaW9uOiBudW1iZXIpOiBudW1iZXIgPT4gTWF0aC5jZWlsKGFtb3VudCAvIHByZWNpc2lvbikgKiBwcmVjaXNpb247XG4iLCI8ZGl2IGNsYXNzPVwiYWdlbmRhXCI+XG4gIDwhLS0gVE9PTEJBUiAtLT5cbiAgPGlvbi1yb3cgY2xhc3M9XCJpb24tYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgPGlvbi1jb2xcbiAgICAgIGNsYXNzPVwiaW9uLWFsaWduLXNlbGYtY2VudGVyIGlvbi10ZXh0LXJpZ2h0XCJcbiAgICAgIFtzaXplXT1cIjVcIlxuICAgICAgW3NpemVTbV09XCIzXCJcbiAgICAgIFtwdXNoU21dPVwiNVwiXG4gICAgICBbc2l6ZUxnXT1cIjJcIlxuICAgICAgW3B1c2hMZ109XCI4XCJcbiAgICA+XG4gICAgICA8aW9uLWl0ZW0gbGluZXM9XCJub25lXCIgY2xhc3M9XCJjYWxlbmRhclZpZXdTZWxlY3RvclwiICpuZ0lmPVwiYWxsb3dlZFZpZXdzLmxlbmd0aCA+IDFcIj5cbiAgICAgICAgPGlvbi1zZWxlY3RcbiAgICAgICAgICBpbnRlcmZhY2U9XCJwb3BvdmVyXCJcbiAgICAgICAgICBbdmFsdWVdPVwidmlld1wiXG4gICAgICAgICAgKGlvbkNoYW5nZSk9XCIkZXZlbnQ/LmRldGFpbCA/IHNldFZpZXcoJGV2ZW50LmRldGFpbC52YWx1ZSkgOiBudWxsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdmlldyBvZiBhbGxvd2VkVmlld3NcIiBbdmFsdWVdPVwidmlld1wiPlxuICAgICAgICAgICAge3sgJ0lERUFfQUdFTkRBLicgKyB2aWV3IHwgdXBwZXJjYXNlIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgPC9pb24tc2VsZWN0PlxuICAgICAgPC9pb24taXRlbT5cbiAgICA8L2lvbi1jb2w+XG4gICAgPGlvbi1jb2xcbiAgICAgIGNsYXNzPVwiaW9uLWFsaWduLXNlbGYtY2VudGVyIGlvbi10ZXh0LXJpZ2h0XCJcbiAgICAgIFtzaXplXT1cIjdcIlxuICAgICAgW3NpemVTbV09XCI0XCJcbiAgICAgIFtwdXNoU21dPVwiNVwiXG4gICAgICBbc2l6ZUxnXT1cIjJcIlxuICAgICAgW3B1c2hMZ109XCI4XCJcbiAgICA+XG4gICAgICA8aW9uLWJ1dHRvblxuICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICBtd2xDYWxlbmRhclByZXZpb3VzVmlld1xuICAgICAgICBbdmlld109XCJ2aWV3XCJcbiAgICAgICAgWyh2aWV3RGF0ZSldPVwidmlld0RhdGVcIlxuICAgICAgICAodmlld0RhdGVDaGFuZ2UpPVwidmlld0RhdGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZXZyb24tYmFjay1vdXRsaW5lXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8aW9uLWJ1dHRvblxuICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICBtd2xDYWxlbmRhclRvZGF5XG4gICAgICAgIFsodmlld0RhdGUpXT1cInZpZXdEYXRlXCJcbiAgICAgICAgKHZpZXdEYXRlQ2hhbmdlKT1cInZpZXdEYXRlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJ0b2RheS1vdXRsaW5lXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8aW9uLWJ1dHRvblxuICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICBtd2xDYWxlbmRhck5leHRWaWV3XG4gICAgICAgIFt2aWV3XT1cInZpZXdcIlxuICAgICAgICBbKHZpZXdEYXRlKV09XCJ2aWV3RGF0ZVwiXG4gICAgICAgICh2aWV3RGF0ZUNoYW5nZSk9XCJ2aWV3RGF0ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hldnJvbi1mb3J3YXJkLW91dGxpbmVcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1jb2w+XG4gICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tYWxpZ24tc2VsZi1jZW50ZXIgdGl0bGVDb2xcIiBbc2l6ZV09XCIxMlwiIFtzaXplU21dPVwiNVwiIFtwdWxsU21dPVwiN1wiIFtzaXplTGddPVwiOFwiIFtwdWxsTGddPVwiNFwiPlxuICAgICAgPGgyPnt7IHZpZXdEYXRlIHwgY2FsZW5kYXJEYXRlIDogdmlldyArICdWaWV3VGl0bGUnIDogbG9jYWxlIH19PC9oMj5cbiAgICAgIDxwICpuZ0lmPVwidGl0bGVOb3Rlc1wiPnt7IHRpdGxlTm90ZXMgfX08L3A+XG4gICAgPC9pb24tY29sPlxuICA8L2lvbi1yb3c+XG4gIDwhLS0gVEVNUExBVEVTICh0b3VjaCBvbmx5IHdoYXQncyBuZWNlc3NhcnkgYW5kIGxlYXZlIGV2ZXJ5dGhpbmcgZWxzZSBhcyBpdCBpcykgLS0+XG4gIDxuZy10ZW1wbGF0ZSAjZXZlbnRUaXRsZVRlbXBsYXRlIGxldC1ldmVudD1cImV2ZW50XCIgbGV0LXZpZXc9XCJ2aWV3XCI+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwiY2FsLWV2ZW50LXRpdGxlXCJcbiAgICAgIFtjbGFzcy5ub1dyYXBdPVwiZXZlbnQuYWxsRGF5XCJcbiAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cInt9IHwgY2FsZW5kYXJBMTF5IDogJ2hpZGVFdmVudFRpdGxlJ1wiXG4gICAgPlxuICAgICAge3sgZXZlbnQudGl0bGUgfCBjYWxlbmRhckV2ZW50VGl0bGUgOiB2aWV3IDogZXZlbnQgfX1cbiAgICAgIDxwICpuZ0lmPVwiIWV2ZW50LmFsbERheVwiPnt7IGdldFByZXZpZXdEZXNjcmlwdGlvbihldmVudC5kZXNjcmlwdGlvbikgfX08L3A+XG4gICAgPC9zcGFuPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGVcbiAgICAjZXZlbnRUZW1wbGF0ZVxuICAgIGxldC13ZWVrRXZlbnQ9XCJ3ZWVrRXZlbnRcIlxuICAgIGxldC10b29sdGlwUGxhY2VtZW50PVwidG9vbHRpcFBsYWNlbWVudFwiXG4gICAgbGV0LWV2ZW50Q2xpY2tlZD1cImV2ZW50Q2xpY2tlZFwiXG4gICAgbGV0LXRvb2x0aXBUZW1wbGF0ZT1cInRvb2x0aXBUZW1wbGF0ZVwiXG4gICAgbGV0LXRvb2x0aXBBcHBlbmRUb0JvZHk9XCJ0b29sdGlwQXBwZW5kVG9Cb2R5XCJcbiAgICBsZXQtdG9vbHRpcERpc2FibGVkPVwidG9vbHRpcERpc2FibGVkXCJcbiAgICBsZXQtdG9vbHRpcERlbGF5PVwidG9vbHRpcERlbGF5XCJcbiAgICBsZXQtY29sdW1uPVwiY29sdW1uXCJcbiAgICBsZXQtZGF5c0luV2Vlaz1cImRheXNJbldlZWtcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjYWwtZXZlbnRcIlxuICAgICAgW2NsYXNzLmV4dGVybmFsXT1cIndlZWtFdmVudC5ldmVudC5leHRlcm5hbFwiXG4gICAgICBbY2xhc3MubmVlZHNBY3Rpb25dPVwiQXR0ZW5kYW5jZS5ORUVEU19BQ1RJT04gPT09IHdlZWtFdmVudC5ldmVudC5hdHRlbmRhbmNlXCJcbiAgICAgIFtjbGFzcy5kZWNsaW5lZF09XCJBdHRlbmRhbmNlLkRFQ0xJTkVEID09PSB3ZWVrRXZlbnQuZXZlbnQuYXR0ZW5kYW5jZVwiXG4gICAgICBbY2xhc3MudGVudGF0aXZlXT1cIkF0dGVuZGFuY2UuVEVOVEFUSVZFID09PSB3ZWVrRXZlbnQuZXZlbnQuYXR0ZW5kYW5jZVwiXG4gICAgICBbc3R5bGUuYm9yZGVyLWxlZnQtY29sb3JdPVwid2Vla0V2ZW50LmV2ZW50LmNvbG9yPy5wcmltYXJ5XCJcbiAgICAgIFtzdHlsZS5jb2xvcl09XCJnZXRBbHRlcm5hdGVDb2xvcih3ZWVrRXZlbnQuZXZlbnQuY29sb3I/LnByaW1hcnksIGRhcmtNb2RlID8gODAgOiAtNDApXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImdldEFsdGVybmF0ZUNvbG9yKHdlZWtFdmVudC5ldmVudC5jb2xvcj8ucHJpbWFyeSwgZGFya01vZGUgPyA2MCA6IDgwLCAwLjIpXCJcbiAgICAgIFttd2xDYWxlbmRhclRvb2x0aXBdPVwiIXRvb2x0aXBEaXNhYmxlZCAmJiAhaXNNb2JpbGUoKSA/IGdldFRvb2x0aXBDb250ZW50KHdlZWtFdmVudC5ldmVudCkgOiAnJ1wiXG4gICAgICBbdG9vbHRpcFBsYWNlbWVudF09XCJ0b29sdGlwUGxhY2VtZW50XCJcbiAgICAgIFt0b29sdGlwRXZlbnRdPVwid2Vla0V2ZW50LnRlbXBFdmVudCB8fCB3ZWVrRXZlbnQuZXZlbnRcIlxuICAgICAgW3Rvb2x0aXBUZW1wbGF0ZV09XCJ0b29sdGlwVGVtcGxhdGVcIlxuICAgICAgW3Rvb2x0aXBBcHBlbmRUb0JvZHldPVwidG9vbHRpcEFwcGVuZFRvQm9keVwiXG4gICAgICBbdG9vbHRpcERlbGF5XT1cInRvb2x0aXBEZWxheVwiXG4gICAgICAobXdsQ2xpY2spPVwiZXZlbnRDbGlja2VkLmVtaXQoeyBzb3VyY2VFdmVudDogJGV2ZW50IH0pXCJcbiAgICAgIChtd2xLZXlkb3duRW50ZXIpPVwiZXZlbnRDbGlja2VkLmVtaXQoeyBzb3VyY2VFdmVudDogJGV2ZW50IH0pXCJcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICByb2xlPVwiYXBwbGljYXRpb25cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgeyBldmVudDogd2Vla0V2ZW50LnRlbXBFdmVudCB8fCB3ZWVrRXZlbnQuZXZlbnQsIGxvY2FsZTogbG9jYWxlIH0gfCBjYWxlbmRhckExMXkgOiAnZXZlbnREZXNjcmlwdGlvbidcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPG13bC1jYWxlbmRhci1ldmVudC1hY3Rpb25zIFtldmVudF09XCJ3ZWVrRXZlbnQudGVtcEV2ZW50IHx8IHdlZWtFdmVudC5ldmVudFwiPjwvbXdsLWNhbGVuZGFyLWV2ZW50LWFjdGlvbnM+XG4gICAgICAmbmdzcDtcbiAgICAgIDxtd2wtY2FsZW5kYXItZXZlbnQtdGl0bGVcbiAgICAgICAgW2V2ZW50XT1cIndlZWtFdmVudC50ZW1wRXZlbnQgfHwgd2Vla0V2ZW50LmV2ZW50XCJcbiAgICAgICAgW2N1c3RvbVRlbXBsYXRlXT1cImV2ZW50VGl0bGVUZW1wbGF0ZVwiXG4gICAgICAgIFt2aWV3XT1cImRheXNJbldlZWsgPT09IDEgPyAnZGF5JyA6ICd3ZWVrJ1wiXG4gICAgICA+XG4gICAgICA8L213bC1jYWxlbmRhci1ldmVudC10aXRsZT5cbiAgICAgIDxkaXYgY2xhc3M9XCJldmVudEdhZGdldHNcIiAqbmdJZj1cIiF3ZWVrRXZlbnQuZXZlbnQuYWxsRGF5XCI+XG4gICAgICAgIDxpb24taWNvbiAqbmdGb3I9XCJsZXQgaWNvbiBvZiB3ZWVrRXZlbnQuZXZlbnQuaWNvbnNcIiBbbmFtZV09XCJpY29uLm5hbWVcIiBbdGl0bGVdPVwiaWNvbi50aXRsZVwiPjwvaW9uLWljb24+XG4gICAgICAgIDxpZGVhLXVzZXItYXZhdGFyXG4gICAgICAgICAgc2l6ZT1cIm1pbmlcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBhdmF0YXIgb2Ygd2Vla0V2ZW50LmV2ZW50LmF2YXRhcnNcIlxuICAgICAgICAgIFtzcmNdPVwiYXZhdGFyLnVybFwiXG4gICAgICAgICAgW25hbWVdPVwiYXZhdGFyLnRpdGxlXCJcbiAgICAgICAgPjwvaWRlYS11c2VyLWF2YXRhcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGVcbiAgICAjaG91clNlZ21lbnRUZW1wbGF0ZVxuICAgIGxldC1zZWdtZW50PVwic2VnbWVudFwiXG4gICAgbGV0LWxvY2FsZT1cImxvY2FsZVwiXG4gICAgbGV0LXNlZ21lbnRIZWlnaHQ9XCJzZWdtZW50SGVpZ2h0XCJcbiAgICBsZXQtaXNUaW1lTGFiZWw9XCJpc1RpbWVMYWJlbFwiXG4gID5cbiAgICA8ZGl2XG4gICAgICAjc2VnbWVudEVsZW1lbnRcbiAgICAgIGNsYXNzPVwiY2FsLWhvdXItc2VnbWVudFwiXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInNlZ21lbnRIZWlnaHRcIlxuICAgICAgW2NsYXNzLmNhbC1ob3VyLXN0YXJ0XT1cInNlZ21lbnQuaXNTdGFydFwiXG4gICAgICBbY2xhc3MuY2FsLWFmdGVyLWhvdXItc3RhcnRdPVwiIXNlZ21lbnQuaXNTdGFydFwiXG4gICAgICBbbmdDbGFzc109XCJzZWdtZW50LmNzc0NsYXNzXCJcbiAgICAgIChtb3VzZWRvd24pPVwiYWxsb3dEcmFnVG9DcmVhdGUgPyBzdGFydERyYWdUb0NyZWF0ZSgkZXZlbnQsIHNlZ21lbnQuZGF0ZSwgc2VnbWVudEVsZW1lbnQpIDogbnVsbFwiXG4gICAgICAodG91Y2hzdGFydCk9XCJhbGxvd0RyYWdUb0NyZWF0ZSA/IHN0YXJ0RHJhZ1RvQ3JlYXRlKCRldmVudCwgc2VnbWVudC5kYXRlLCBzZWdtZW50RWxlbWVudCkgOiBudWxsXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FsLXRpbWVcIiAqbmdJZj1cImlzVGltZUxhYmVsXCI+XG4gICAgICAgIHt7IHNlZ21lbnQuZGF0ZSB8IGNhbGVuZGFyRGF0ZSA6ICd3ZWVrVmlld0hvdXInIDogbG9jYWxlIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPCEtLSBWSUVXUyAtLT5cbiAgPGRpdiBbbmdTd2l0Y2hdPVwidmlld1wiPlxuICAgIDxtd2wtY2FsZW5kYXItbW9udGgtdmlld1xuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkNhbGVuZGFyVmlldy5Nb250aFwiXG4gICAgICBbdmlld0RhdGVdPVwidmlld0RhdGVcIlxuICAgICAgW2V2ZW50c109XCJldmVudHNcIlxuICAgICAgW3JlZnJlc2hdPVwicmVmcmVzaFwiXG4gICAgICBbYWN0aXZlRGF5SXNPcGVuXT1cImFjdGl2ZURheUlzT3BlblwiXG4gICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICBbZXhjbHVkZURheXNdPVwiZXhjbHVkZURheXNcIlxuICAgICAgW3dlZWtTdGFydHNPbl09XCJ3ZWVrU3RhcnRzT25cIlxuICAgICAgW2V2ZW50VGl0bGVUZW1wbGF0ZV09XCJldmVudFRpdGxlVGVtcGxhdGVcIlxuICAgICAgKGV2ZW50Q2xpY2tlZCk9XCJzZWxlY3RFdmVudC5lbWl0KCRldmVudC5ldmVudClcIlxuICAgICAgKGV2ZW50VGltZXNDaGFuZ2VkKT1cImV2ZW50VGltZXNDaGFuZ2VkKCRldmVudClcIlxuICAgICAgKGRheUNsaWNrZWQpPVwiY2hhbmdlRGF5KCRldmVudC5kYXkpXCJcbiAgICAgIChiZWZvcmVWaWV3UmVuZGVyKT1cImJlZm9yZU1vbnRoVmlld1JlbmRlcigkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9td2wtY2FsZW5kYXItbW9udGgtdmlldz5cbiAgICA8bXdsLWNhbGVuZGFyLXdlZWstdmlld1xuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkNhbGVuZGFyVmlldy5XZWVrXCJcbiAgICAgIFt2aWV3RGF0ZV09XCJ2aWV3RGF0ZVwiXG4gICAgICBbZXZlbnRzXT1cImV2ZW50c1wiXG4gICAgICBbcmVmcmVzaF09XCJyZWZyZXNoXCJcbiAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgIFtleGNsdWRlRGF5c109XCJleGNsdWRlRGF5c1wiXG4gICAgICBbd2Vla1N0YXJ0c09uXT1cIndlZWtTdGFydHNPblwiXG4gICAgICBbZGF5U3RhcnRIb3VyXT1cImRheVN0YXJ0SG91clwiXG4gICAgICBbZGF5RW5kSG91cl09XCJkYXlFbmRIb3VyXCJcbiAgICAgIFtob3VyU2VnbWVudHNdPVwiaG91clNlZ21lbnRzXCJcbiAgICAgIFtldmVudFRlbXBsYXRlXT1cImV2ZW50VGVtcGxhdGVcIlxuICAgICAgW2hvdXJTZWdtZW50VGVtcGxhdGVdPVwiaG91clNlZ21lbnRUZW1wbGF0ZVwiXG4gICAgICAoZXZlbnRDbGlja2VkKT1cInNlbGVjdEV2ZW50LmVtaXQoJGV2ZW50LmV2ZW50KVwiXG4gICAgICAoZXZlbnRUaW1lc0NoYW5nZWQpPVwiZXZlbnRUaW1lc0NoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAoZGF5SGVhZGVyQ2xpY2tlZCk9XCJkYXRlSXNWYWxpZCgkZXZlbnQuZGF5LmRhdGUpID8gc2VsZWN0RGF5LmVtaXQoJGV2ZW50LmRheS5kYXRlKSA6IG51bGxcIlxuICAgICAgKGhvdXJTZWdtZW50Q2xpY2tlZCk9XCJkYXRlSXNWYWxpZCgkZXZlbnQuZGF0ZSkgPyBzZWxlY3RTbG90LmVtaXQoJGV2ZW50LmRhdGUpIDogbnVsbFwiXG4gICAgICAoYmVmb3JlVmlld1JlbmRlcik9XCJiZWZvcmVXZWVrT3JEYXlWaWV3UmVuZGVyKCRldmVudClcIlxuICAgID5cbiAgICA8L213bC1jYWxlbmRhci13ZWVrLXZpZXc+XG4gICAgPG13bC1jYWxlbmRhci1kYXktdmlld1xuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkNhbGVuZGFyVmlldy5EYXlcIlxuICAgICAgW3ZpZXdEYXRlXT1cInZpZXdEYXRlXCJcbiAgICAgIFtldmVudHNdPVwiZXZlbnRzXCJcbiAgICAgIFtyZWZyZXNoXT1cInJlZnJlc2hcIlxuICAgICAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgW2RheVN0YXJ0SG91cl09XCJkYXlTdGFydEhvdXJcIlxuICAgICAgW2RheUVuZEhvdXJdPVwiZGF5RW5kSG91clwiXG4gICAgICBbaG91clNlZ21lbnRzXT1cImhvdXJTZWdtZW50c1wiXG4gICAgICBbZXZlbnRUZW1wbGF0ZV09XCJldmVudFRlbXBsYXRlXCJcbiAgICAgIFtob3VyU2VnbWVudFRlbXBsYXRlXT1cImhvdXJTZWdtZW50VGVtcGxhdGVcIlxuICAgICAgKGV2ZW50Q2xpY2tlZCk9XCJzZWxlY3RFdmVudC5lbWl0KCRldmVudC5ldmVudClcIlxuICAgICAgKGV2ZW50VGltZXNDaGFuZ2VkKT1cImV2ZW50VGltZXNDaGFuZ2VkKCRldmVudClcIlxuICAgICAgKGhvdXJTZWdtZW50Q2xpY2tlZCk9XCJkYXRlSXNWYWxpZCgkZXZlbnQuZGF0ZSkgPyBzZWxlY3RTbG90LmVtaXQoJGV2ZW50LmRhdGUpIDogbnVsbFwiXG4gICAgICAoYmVmb3JlVmlld1JlbmRlcik9XCJiZWZvcmVXZWVrT3JEYXlWaWV3UmVuZGVyKCRldmVudClcIlxuICAgID5cbiAgICA8L213bC1jYWxlbmRhci1kYXktdmlldz5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -14,15 +14,15 @@ import { IDEACalendarsService } from './calendars.service';
|
|
|
14
14
|
import * as i0 from "@angular/core";
|
|
15
15
|
import * as i1 from "angular-calendar";
|
|
16
16
|
export class IDEAAgendaModule {
|
|
17
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
18
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: IDEAAgendaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
18
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.0", ngImport: i0, type: IDEAAgendaModule, declarations: [IDEAAgendaComponent, IDEACalendarComponent, IDEACalendarItemComponent, IDEACalendarCreationComponent], imports: [CommonModule,
|
|
19
19
|
FormsModule,
|
|
20
20
|
IonicModule,
|
|
21
21
|
IDEATranslationsModule,
|
|
22
22
|
IDEAColorPickerModule,
|
|
23
23
|
IDEACheckerModule,
|
|
24
24
|
IDEAUserAvatarModule, i1.CalendarModule], exports: [IDEAAgendaComponent, IDEACalendarComponent, IDEACalendarItemComponent, IDEACalendarCreationComponent] }); }
|
|
25
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
25
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: IDEAAgendaModule, providers: [{ provide: CalendarDateFormatter, useClass: CustomDateFormatter }, IDEACalendarsService], imports: [CommonModule,
|
|
26
26
|
FormsModule,
|
|
27
27
|
IonicModule,
|
|
28
28
|
IDEATranslationsModule,
|
|
@@ -31,7 +31,7 @@ export class IDEAAgendaModule {
|
|
|
31
31
|
IDEAUserAvatarModule,
|
|
32
32
|
CalendarModule.forRoot({ provide: DateAdapter, useFactory: adapterFactory })] }); }
|
|
33
33
|
}
|
|
34
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: IDEAAgendaModule, decorators: [{
|
|
35
35
|
type: NgModule,
|
|
36
36
|
args: [{
|
|
37
37
|
imports: [
|
|
@@ -109,17 +109,17 @@ export class IDEACalendarComponent {
|
|
|
109
109
|
close() {
|
|
110
110
|
this.modalCtrl.dismiss();
|
|
111
111
|
}
|
|
112
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
113
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
112
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: IDEACalendarComponent, deps: [{ token: i1.IDEACalendarsService }, { token: i2.ModalController }, { token: i2.AlertController }, { token: i3.IDEATinCanService }, { token: i3.IDEALoadingService }, { token: i3.IDEAMessageService }, { token: i3.IDEAAWSAPIService }, { token: i3.IDEATranslationsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
113
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: IDEACalendarComponent, selector: "idea-calendar", inputs: { calendar: "calendar", advancedPermissions: "advancedPermissions", hideColor: "hideColor" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"t._('COMMON.CLOSE')\" (click)=\"close()\">\n <ion-icon name=\"close-circle\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>{{ 'IDEA_AGENDA.CALENDARS.EDIT_CALENDAR' | translate }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"t._('COMMON.SAVE')\" (click)=\"save()\">\n <ion-icon name=\"checkmark-circle\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <div class=\"maxWidthContainer\" *ngIf=\"_calendar\">\n <ion-list class=\"aList\">\n <ion-item\n lines=\"inset\"\n [class.fieldHasError]=\"hasFieldAnError('name')\"\n [title]=\"t._('IDEA_AGENDA.CALENDARS.NAME_HINT')\"\n >\n <ion-label position=\"stacked\">{{ 'IDEA_AGENDA.CALENDARS.NAME' | translate }} </ion-label>\n <ion-input [placeholder]=\"t._('IDEA_AGENDA.CALENDARS.NAME_HINT')\" [(ngModel)]=\"_calendar.name\"></ion-input>\n </ion-item>\n <ion-item\n lines=\"inset\"\n [class.fieldHasError]=\"hasFieldAnError('description')\"\n [title]=\"t._('IDEA_AGENDA.CALENDARS.DESCRIPTION_HINT')\"\n >\n <ion-label position=\"stacked\">{{ 'IDEA_AGENDA.CALENDARS.DESCRIPTION' | translate }} </ion-label>\n <ion-input\n [placeholder]=\"t._('IDEA_AGENDA.CALENDARS.DESCRIPTION_HINT')\"\n [(ngModel)]=\"_calendar.description\"\n ></ion-input>\n </ion-item>\n <idea-color-picker\n *ngIf=\"!hideColor\"\n [lines]=\"'inset'\"\n [current]=\"_calendar.color\"\n [label]=\"t._('IDEA_AGENDA.CALENDARS.COLOR')\"\n [class.fieldHasError]=\"hasFieldAnError('color')\"\n (select)=\"$event ? (_calendar.color = $event) : null\"\n ></idea-color-picker>\n <idea-checker\n *ngIf=\"membershipsChecks && _calendar.isShared() && advancedPermissions\"\n [data]=\"membershipsChecks\"\n [label]=\"t._('IDEA_AGENDA.CALENDARS.USERS_ALLOWED_TO_MANAGE_APPOINTMENTS')\"\n [searchPlaceholder]=\"t._('IDEA_AGENDA.CALENDARS.WHO_CAN_MANAGE_APPOINTMENTS')\"\n [noneText]=\"t._('IDEA_AGENDA.CALENDARS.NOBODY')\"\n [allText]=\"t._('IDEA_AGENDA.CALENDARS.EVERYONE')\"\n [allowSelectDeselectAll]=\"true\"\n [lines]=\"'inset'\"\n ></idea-checker>\n </ion-list>\n <ion-list class=\"aList\" *ngIf=\"_calendar.external?.service\">\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_AGENDA.CALENDARS.INFO_ON_CALENDAR' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n <ion-item lines=\"inset\" *ngIf=\"calendar.userId\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.PRIVATE_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.PRIVATE_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"person\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\" *ngIf=\"calendar.teamId\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"people\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.LINKED_TO' | translate }}\n {{ 'IDEA_AGENDA.CALENDARS.SERVICES.' + _calendar.external.service | translate }}\n <p>{{ _calendar.external.name }} ({{ _calendar.external.email }})</p>\n </ion-label>\n <ion-icon slot=\"end\" [name]=\"calendars.getServiceIcon(_calendar.external.service)\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.ACCESS_LEVELS.' + _calendar.external.userAccess | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.BASED_ON_EXTERNAL_SERVICE_SHARING_PERMISSION' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"shield\"></ion-icon>\n </ion-item>\n </ion-list>\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label color=\"danger\">\n <h2>{{ 'IDEA_AGENDA.CALENDARS.DANGEROUS_ZONE' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n <ion-item lines=\"inset\">\n <ion-label class=\"ion-text-wrap\">\n {{ 'IDEA_AGENDA.CALENDARS.DELETE_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.DELETE_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-button color=\"danger\" [title]=\"t._('IDEA_AGENDA.CALENDARS.DELETE_CALENDAR_HINT')\" (click)=\"delete()\">\n {{ 'COMMON.DELETE' | translate }}\n </ion-button>\n </ion-item>\n </ion-list>\n </div>\n</ion-content>\n", styles: [".maxWidthContainer{max-width:500px;padding-top:20px}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "legacy", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i2.IonListHeader, selector: "ion-list-header", inputs: ["color", "lines", "mode"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i2.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar,ion-range" }, { kind: "component", type: i3.IDEAColorPickerComponent, selector: "idea-color-picker", inputs: ["colors", "current", "label", "placeholder", "icon", "iconColor", "disabled", "obligatory", "lines", "color"], outputs: ["select", "iconSelect"] }, { kind: "component", type: i3.IDEACheckerComponent, selector: "idea-checker", inputs: ["data", "dataProvider", "label", "icon", "iconColor", "searchPlaceholder", "noPreviewText", "noElementsFoundText", "noneEqualsAll", "noneText", "allText", "lines", "color", "disabled", "tappableWhenDisabled", "obligatory", "sortData", "numMaxElementsInPreview", "showAvatars", "limitSelectionToNum", "allowSelectDeselectAll", "category1", "category2", "showCategoriesFilters"], outputs: ["change", "iconSelect"] }, { kind: "pipe", type: i3.IDEATranslatePipe, name: "translate" }] }); }
|
|
114
114
|
}
|
|
115
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
115
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: IDEACalendarComponent, decorators: [{
|
|
116
116
|
type: Component,
|
|
117
117
|
args: [{ selector: 'idea-calendar', template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"t._('COMMON.CLOSE')\" (click)=\"close()\">\n <ion-icon name=\"close-circle\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>{{ 'IDEA_AGENDA.CALENDARS.EDIT_CALENDAR' | translate }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"t._('COMMON.SAVE')\" (click)=\"save()\">\n <ion-icon name=\"checkmark-circle\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <div class=\"maxWidthContainer\" *ngIf=\"_calendar\">\n <ion-list class=\"aList\">\n <ion-item\n lines=\"inset\"\n [class.fieldHasError]=\"hasFieldAnError('name')\"\n [title]=\"t._('IDEA_AGENDA.CALENDARS.NAME_HINT')\"\n >\n <ion-label position=\"stacked\">{{ 'IDEA_AGENDA.CALENDARS.NAME' | translate }} </ion-label>\n <ion-input [placeholder]=\"t._('IDEA_AGENDA.CALENDARS.NAME_HINT')\" [(ngModel)]=\"_calendar.name\"></ion-input>\n </ion-item>\n <ion-item\n lines=\"inset\"\n [class.fieldHasError]=\"hasFieldAnError('description')\"\n [title]=\"t._('IDEA_AGENDA.CALENDARS.DESCRIPTION_HINT')\"\n >\n <ion-label position=\"stacked\">{{ 'IDEA_AGENDA.CALENDARS.DESCRIPTION' | translate }} </ion-label>\n <ion-input\n [placeholder]=\"t._('IDEA_AGENDA.CALENDARS.DESCRIPTION_HINT')\"\n [(ngModel)]=\"_calendar.description\"\n ></ion-input>\n </ion-item>\n <idea-color-picker\n *ngIf=\"!hideColor\"\n [lines]=\"'inset'\"\n [current]=\"_calendar.color\"\n [label]=\"t._('IDEA_AGENDA.CALENDARS.COLOR')\"\n [class.fieldHasError]=\"hasFieldAnError('color')\"\n (select)=\"$event ? (_calendar.color = $event) : null\"\n ></idea-color-picker>\n <idea-checker\n *ngIf=\"membershipsChecks && _calendar.isShared() && advancedPermissions\"\n [data]=\"membershipsChecks\"\n [label]=\"t._('IDEA_AGENDA.CALENDARS.USERS_ALLOWED_TO_MANAGE_APPOINTMENTS')\"\n [searchPlaceholder]=\"t._('IDEA_AGENDA.CALENDARS.WHO_CAN_MANAGE_APPOINTMENTS')\"\n [noneText]=\"t._('IDEA_AGENDA.CALENDARS.NOBODY')\"\n [allText]=\"t._('IDEA_AGENDA.CALENDARS.EVERYONE')\"\n [allowSelectDeselectAll]=\"true\"\n [lines]=\"'inset'\"\n ></idea-checker>\n </ion-list>\n <ion-list class=\"aList\" *ngIf=\"_calendar.external?.service\">\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_AGENDA.CALENDARS.INFO_ON_CALENDAR' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n <ion-item lines=\"inset\" *ngIf=\"calendar.userId\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.PRIVATE_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.PRIVATE_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"person\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\" *ngIf=\"calendar.teamId\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"people\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.LINKED_TO' | translate }}\n {{ 'IDEA_AGENDA.CALENDARS.SERVICES.' + _calendar.external.service | translate }}\n <p>{{ _calendar.external.name }} ({{ _calendar.external.email }})</p>\n </ion-label>\n <ion-icon slot=\"end\" [name]=\"calendars.getServiceIcon(_calendar.external.service)\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.ACCESS_LEVELS.' + _calendar.external.userAccess | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.BASED_ON_EXTERNAL_SERVICE_SHARING_PERMISSION' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"shield\"></ion-icon>\n </ion-item>\n </ion-list>\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label color=\"danger\">\n <h2>{{ 'IDEA_AGENDA.CALENDARS.DANGEROUS_ZONE' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n <ion-item lines=\"inset\">\n <ion-label class=\"ion-text-wrap\">\n {{ 'IDEA_AGENDA.CALENDARS.DELETE_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.DELETE_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-button color=\"danger\" [title]=\"t._('IDEA_AGENDA.CALENDARS.DELETE_CALENDAR_HINT')\" (click)=\"delete()\">\n {{ 'COMMON.DELETE' | translate }}\n </ion-button>\n </ion-item>\n </ion-list>\n </div>\n</ion-content>\n", styles: [".maxWidthContainer{max-width:500px;padding-top:20px}\n"] }]
|
|
118
|
-
}], ctorParameters:
|
|
118
|
+
}], ctorParameters: () => [{ type: i1.IDEACalendarsService }, { type: i2.ModalController }, { type: i2.AlertController }, { type: i3.IDEATinCanService }, { type: i3.IDEALoadingService }, { type: i3.IDEAMessageService }, { type: i3.IDEAAWSAPIService }, { type: i3.IDEATranslationsService }], propDecorators: { calendar: [{
|
|
119
119
|
type: Input
|
|
120
120
|
}], advancedPermissions: [{
|
|
121
121
|
type: Input
|
|
122
122
|
}], hideColor: [{
|
|
123
123
|
type: Input
|
|
124
124
|
}] } });
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbW9kdWxlcy9hZ2VuZGEvc3JjL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL21vZHVsZXMvYWdlbmRhL3NyYy9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBYyxNQUFNLGNBQWMsQ0FBQzs7Ozs7OztBQWdCM0QsTUFBTSxPQUFPLHFCQUFxQjtJQW1DaEMsWUFDUyxTQUErQixFQUMvQixTQUEwQixFQUMxQixTQUEwQixFQUMxQixFQUFxQixFQUNyQixPQUEyQixFQUMzQixPQUEyQixFQUMzQixHQUFzQixFQUN0QixDQUEwQjtRQVAxQixjQUFTLEdBQVQsU0FBUyxDQUFzQjtRQUMvQixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUMxQixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUMxQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixNQUFDLEdBQUQsQ0FBQyxDQUF5QjtRQWpCbkM7O1dBRUc7UUFDSSxXQUFNLEdBQWdCLElBQUksR0FBRyxFQUFVLENBQUM7UUFDL0M7O1dBRUc7UUFDSSxrQkFBYSxHQUFHLE1BQU0sQ0FBQztJQVczQixDQUFDO0lBQ0csUUFBUTtRQUNiLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDNUMsaUJBQWlCO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFFB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QUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQzs4R0F2SVUscUJBQXFCO2tHQUFyQixxQkFBcUIsMkpDbEJsQyx5MEpBOEdBOzsyRkQ1RmEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLGVBQWU7K1VBUVQsUUFBUTtzQkFBdkIsS0FBSztnQkFJVSxtQkFBbUI7c0JBQWxDLEtBQUs7Z0JBSVUsU0FBUztzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kYWxDb250cm9sbGVyLCBBbGVydENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBDYWxlbmRhciwgQ2hlY2ssIE1lbWJlcnNoaXAgfSBmcm9tICdpZGVhLXRvb2xib3gnO1xuaW1wb3J0IHtcbiAgSURFQUxvYWRpbmdTZXJ2aWNlLFxuICBJREVBQVdTQVBJU2VydmljZSxcbiAgSURFQVRpbkNhblNlcnZpY2UsXG4gIElERUFNZXNzYWdlU2VydmljZSxcbiAgSURFQVRyYW5zbGF0aW9uc1NlcnZpY2Vcbn0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcblxuaW1wb3J0IHsgSURFQUNhbGVuZGFyc1NlcnZpY2UgfSBmcm9tICcuL2NhbGVuZGFycy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWRlYS1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnY2FsZW5kYXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJREVBQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogVGhlIGNhbGVuZGFyIHRvIG1hbmFnZS5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBjYWxlbmRhcjogQ2FsZW5kYXI7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHdlIHdhbnQgdG8gZW5hYmxlIGFkdmFuY2VkIHBlcm1pc3Npb25zIChiYXNlZCBvbiB0aGUgbWVtYmVyc2hpcHMpIG9uIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBhZHZhbmNlZFBlcm1pc3Npb25zOiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciB0aGUgY2FsZW5kYXIgY29sb3IgaXMgYW4gaW1wb3J0YW50IGRldGFpbCBvciBpdCBzaG91bGRuJ3QgYmUgc2hvd24uXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgaGlkZUNvbG9yOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXb3JraW5nIGNvcHkgb2YgdGhlIGNhbGVuZGFyLCB0byB1cGRhdGUgb25seSB3aGVuIGNvbmZpcm1lZC5cbiAgICovXG4gIHB1YmxpYyBfY2FsZW5kYXI6IENhbGVuZGFyO1xuICAvKipcbiAgICogSGVscGVyIHRvIGFsbG93IHNlbGVjdGluZyBtZW1iZXJzaGlwcy5cbiAgICovXG4gIHB1YmxpYyBtZW1iZXJzaGlwc0NoZWNrczogQ2hlY2tbXTtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IG1lbWJlcnNoaXAuXG4gICAqL1xuICBwdWJsaWMgbWVtYmVyc2hpcDogTWVtYmVyc2hpcDtcbiAgLyoqXG4gICAqIEVycm9ycyB3aGlsZSB2YWxpZGF0aW5nIHRoZSBlbnRpdHkuXG4gICAqL1xuICBwdWJsaWMgZXJyb3JzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAvKipcbiAgICogVGhlIGRlZmF1bHQgY29sb3IgZm9yIGEgY2FsZW5kYXIuXG4gICAqL1xuICBwdWJsaWMgREVGQVVMVF9DT0xPUiA9ICcjNTU1JztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2FsZW5kYXJzOiBJREVBQ2FsZW5kYXJzU2VydmljZSxcbiAgICBwdWJsaWMgbW9kYWxDdHJsOiBNb2RhbENvbnRyb2xsZXIsXG4gICAgcHVibGljIGFsZXJ0Q3RybDogQWxlcnRDb250cm9sbGVyLFxuICAgIHB1YmxpYyB0YzogSURFQVRpbkNhblNlcnZpY2UsXG4gICAgcHVibGljIGxvYWRpbmc6IElERUFMb2FkaW5nU2VydmljZSxcbiAgICBwdWJsaWMgbWVzc2FnZTogSURFQU1lc3NhZ2VTZXJ2aWNlLFxuICAgIHB1YmxpYyBBUEk6IElERUFBV1NBUElTZXJ2aWNlLFxuICAgIHB1YmxpYyB0OiBJREVBVHJhbnNsYXRpb25zU2VydmljZVxuICApIHt9XG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm1lbWJlcnNoaXAgPSB0aGlzLnRjLmdldCgnbWVtYmVyc2hpcCcpO1xuICAgIC8vIHdvcmsgb24gYSBjb3B5XG4gICAgdGhpcy5fY2FsZW5kYXIgPSBuZXcgQ2FsZW5kYXIodGhpcy5jYWxlbmRhcik7XG4gICAgLy8gbG9hZCB0aGUgdGVhbW1hdGVzIHRvIHVzZSBmb3Igc2hhcmVkIGNhbGVuZGFycyBwZXJtaXNzaW9uc1xuICAgIHRoaXMuQVBJLmdldFJlc291cmNlKGB0ZWFtcy8ke3RoaXMubWVtYmVyc2hpcC50ZWFtSWR9L21lbWJlcnNoaXBzYClcbiAgICAgIC50aGVuKFxuICAgICAgICAobWVtYmVyc2hpcHM6IE1lbWJlcnNoaXBbXSkgPT5cbiAgICAgICAgICAodGhpcy5tZW1iZXJzaGlwc0NoZWNrcyA9IG1lbWJlcnNoaXBzLm1hcChcbiAgICAgICAgICAgIG0gPT5cbiAgICAgICAgICAgICAgbmV3IENoZWNrKHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogbS51c2VySWQsXG4gICAgICAgICAgICAgICAgbmFtZTogbS5uYW1lLFxuICAgICAgICAgICAgICAgIGNoZWNrZWQ6ICh0aGlzLl9jYWxlbmRhci51c2Vyc0Nhbk1hbmFnZUFwcG9pbnRtZW50cyB8fCBbXSkuc29tZSh4ID0+IHggPT09IG0udXNlcklkKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICkpXG4gICAgICApXG4gICAgICAuY2F0Y2goKCkgPT4ge30pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc3VwcG9ydCBhcnJheSB0byBkaXNwbGF5IGVycm9ycyBpbiB0aGUgVUkuXG4gICAqL1xuICBwdWJsaWMgaGFzRmllbGRBbkVycm9yKGZpZWxkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lcnJvcnMuaGFzKGZpZWxkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIGEgY2FsZW5kYXIgd2l0aCB0aGUgbmV3IGluZm8uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2F2ZSgpIHtcbiAgICAvLyBzZXQgdGhlIGRlZmF1bHQgY29sb3IsIGluIGNhc2Ugbm9uZSB3YXMgc2VsZWN0ZWRcbiAgICBpZiAoIXRoaXMuX2NhbGVuZGFyLmNvbG9yKSB0aGlzLl9jYWxlbmRhci5jb2xvciA9IHRoaXMuREVGQVVMVF9DT0xPUjtcbiAgICAvLyBtYXAgdGhlIG1lbWJlcnNoaXBzIGFibGUgdG8gbWFuYWdlIGFwcG9pbnRtZW50c1xuICAgIGlmICh0aGlzLl9jYWxlbmRhci5pc1NoYXJlZCgpICYmIHRoaXMuYWR2YW5jZWRQZXJtaXNzaW9ucylcbiAgICAgIHRoaXMuX2NhbGVuZGFyLnVzZXJzQ2FuTWFuYWdlQXBwb2ludG1lbnRzID0gdGhpcy5tZW1iZXJzaGlwc0NoZWNrc1xuICAgICAgICAuZmlsdGVyKHggPT4geC5jaGVja2VkKVxuICAgICAgICAubWFwKHggPT4gU3RyaW5nKHgudmFsdWUpKTtcbiAgICBlbHNlIGRlbGV0ZSB0aGlzLl9jYWxlbmRhci51c2Vyc0Nhbk1hbmFnZUFwcG9pbnRtZW50cztcbiAgICAvLyBjaGVja2luZ3NcbiAgICB0aGlzLmVycm9ycyA9IG5ldyBTZXQodGhpcy5fY2FsZW5kYXIudmFsaWRhdGUoKSk7XG4gICAgaWYgKHRoaXMuZXJyb3JzLnNpemUpIHJldHVybiB0aGlzLm1lc3NhZ2UuZXJyb3IoJ0NPTU1PTi5GT1JNX0hBU19FUlJPUl9UT19DSEVDSycpO1xuICAgIC8vIHNlbmQgYSBwdXQgcmVxdWVzdFxuICAgIGF3YWl0IHRoaXMubG9hZGluZy5zaG93KCk7XG4gICAgdGhpcy5jYWxlbmRhcnNcbiAgICAgIC5wdXRDYWxlbmRhcih0aGlzLl9jYWxlbmRhcilcbiAgICAgIC50aGVuKChyZXM6IENhbGVuZGFyKSA9PiB7XG4gICAgICAgIHRoaXMuY2FsZW5kYXIubG9hZChyZXMpO1xuICAgICAgICB0aGlzLm1lc3NhZ2Uuc3VjY2VzcygnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkNBTEVOREFSX1NBVkVEJyk7XG4gICAgICAgIHRoaXMubW9kYWxDdHJsLmRpc21pc3ModGhpcy5jYWxlbmRhcik7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHRoaXMubWVzc2FnZS5lcnJvcignQ09NTU9OLk9QRVJBVElPTl9GQUlMRUQnKSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHRoaXMubG9hZGluZy5oaWRlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBwdWJsaWMgZGVsZXRlKCkge1xuICAgIHRoaXMuYWxlcnRDdHJsXG4gICAgICAuY3JlYXRlKHtcbiAgICAgICAgaGVhZGVyOiB0aGlzLnQuXygnQ09NTU9OLkFSRV9ZT1VfU1VSRScpLFxuICAgICAgICBzdWJIZWFkZXI6IHRoaXMudC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuREVMRVRFX0NBTEVOREFSJyksXG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuREVMRVRFX0NBTEVOREFSX0hJTlQnKSxcbiAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgIHsgdGV4dDogdGhpcy50Ll8oJ0NPTU1PTi5DQU5DRUwnKSwgcm9sZTogJ2NhbmNlbCcgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0ZXh0OiB0aGlzLnQuXygnQ09NTU9OLkRFTEVURScpLFxuICAgICAgICAgICAgaGFuZGxlcjogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICBhd2FpdCB0aGlzLmxvYWRpbmcuc2hvdygpO1xuICAgICAgICAgICAgICB0aGlzLmNhbGVuZGFyc1xuICAgICAgICAgICAgICAgIC5kZWxldGVDYWxlbmRhcih0aGlzLl9jYWxlbmRhcilcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2Uuc3VjY2VzcygnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkNBTEVOREFSX0RFTEVURUQnKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMubW9kYWxDdHJsLmRpc21pc3ModHJ1ZSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKCkgPT4gdGhpcy5tZXNzYWdlLmVycm9yKCdDT01NT04uT1BFUkFUSU9OX0ZBSUxFRCcpKVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KCgpID0+IHRoaXMubG9hZGluZy5oaWRlKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSlcbiAgICAgIC50aGVuKGFsZXJ0ID0+IGFsZXJ0LnByZXNlbnQoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2UgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBjbG9zZSgpIHtcbiAgICB0aGlzLm1vZGFsQ3RybC5kaXNtaXNzKCk7XG4gIH1cbn1cbiIsIjxpb24taGVhZGVyPlxuICA8aW9uLXRvb2xiYXIgY29sb3I9XCJpZGVhVG9vbGJhclwiPlxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIj5cbiAgICAgIDxpb24tYnV0dG9uIFt0aXRsZV09XCJ0Ll8oJ0NPTU1PTi5DTE9TRScpXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZS1jaXJjbGVcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuICAgIDxpb24tdGl0bGU+e3sgJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5FRElUX0NBTEVOREFSJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLXRpdGxlPlxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICA8aW9uLWJ1dHRvbiBbdGl0bGVdPVwidC5fKCdDT01NT04uU0FWRScpXCIgKGNsaWNrKT1cInNhdmUoKVwiPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZWNrbWFyay1jaXJjbGVcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuPGlvbi1jb250ZW50PlxuICA8ZGl2IGNsYXNzPVwibWF4V2lkdGhDb250YWluZXJcIiAqbmdJZj1cIl9jYWxlbmRhclwiPlxuICAgIDxpb24tbGlzdCBjbGFzcz1cImFMaXN0XCI+XG4gICAgICA8aW9uLWl0ZW1cbiAgICAgICAgbGluZXM9XCJpbnNldFwiXG4gICAgICAgIFtjbGFzcy5maWVsZEhhc0Vycm9yXT1cImhhc0ZpZWxkQW5FcnJvcignbmFtZScpXCJcbiAgICAgICAgW3RpdGxlXT1cInQuXygnSURFQV9BR0VOREEuQ0FMRU5EQVJTLk5BTUVfSElOVCcpXCJcbiAgICAgID5cbiAgICAgICAgPGlvbi1sYWJlbCBwb3NpdGlvbj1cInN0YWNrZWRcIj57eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLk5BTUUnIHwgdHJhbnNsYXRlIH19IDwvaW9uLWxhYmVsPlxuICAgICAgICA8aW9uLWlucHV0IFtwbGFjZWhvbGRlcl09XCJ0Ll8oJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5OQU1FX0hJTlQnKVwiIFsobmdNb2RlbCldPVwiX2NhbGVuZGFyLm5hbWVcIj48L2lvbi1pbnB1dD5cbiAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICA8aW9uLWl0ZW1cbiAgICAgICAgbGluZXM9XCJpbnNldFwiXG4gICAgICAgIFtjbGFzcy5maWVsZEhhc0Vycm9yXT1cImhhc0ZpZWxkQW5FcnJvcignZGVzY3JpcHRpb24nKVwiXG4gICAgICAgIFt0aXRsZV09XCJ0Ll8oJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5ERVNDUklQVElPTl9ISU5UJylcIlxuICAgICAgPlxuICAgICAgICA8aW9uLWxhYmVsIHBvc2l0aW9uPVwic3RhY2tlZFwiPnt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlIH19IDwvaW9uLWxhYmVsPlxuICAgICAgICA8aW9uLWlucHV0XG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInQuXygnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkRFU0NSSVBUSU9OX0hJTlQnKVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJfY2FsZW5kYXIuZGVzY3JpcHRpb25cIlxuICAgICAgICA+PC9pb24taW5wdXQ+XG4gICAgICA8L2lvbi1pdGVtPlxuICAgICAgPGlkZWEtY29sb3ItcGlja2VyXG4gICAgICAgICpuZ0lmPVwiIWhpZGVDb2xvclwiXG4gICAgICAgIFtsaW5lc109XCInaW5zZXQnXCJcbiAgICAgICAgW2N1cnJlbnRdPVwiX2NhbGVuZGFyLmNvbG9yXCJcbiAgICAgICAgW2xhYmVsXT1cInQuXygnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkNPTE9SJylcIlxuICAgICAgICBbY2xhc3MuZmllbGRIYXNFcnJvcl09XCJoYXNGaWVsZEFuRXJyb3IoJ2NvbG9yJylcIlxuICAgICAgICAoc2VsZWN0KT1cIiRldmVudCA/IChfY2FsZW5kYXIuY29sb3IgPSAkZXZlbnQpIDogbnVsbFwiXG4gICAgICA+PC9pZGVhLWNvbG9yLXBpY2tlcj5cbiAgICAgIDxpZGVhLWNoZWNrZXJcbiAgICAgICAgKm5nSWY9XCJtZW1iZXJzaGlwc0NoZWNrcyAmJiBfY2FsZW5kYXIuaXNTaGFyZWQoKSAmJiBhZHZhbmNlZFBlcm1pc3Npb25zXCJcbiAgICAgICAgW2RhdGFdPVwibWVtYmVyc2hpcHNDaGVja3NcIlxuICAgICAgICBbbGFiZWxdPVwidC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuVVNFUlNfQUxMT1dFRF9UT19NQU5BR0VfQVBQT0lOVE1FTlRTJylcIlxuICAgICAgICBbc2VhcmNoUGxhY2Vob2xkZXJdPVwidC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuV0hPX0NBTl9NQU5BR0VfQVBQT0lOVE1FTlRTJylcIlxuICAgICAgICBbbm9uZVRleHRdPVwidC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuTk9CT0RZJylcIlxuICAgICAgICBbYWxsVGV4dF09XCJ0Ll8oJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5FVkVSWU9ORScpXCJcbiAgICAgICAgW2FsbG93U2VsZWN0RGVzZWxlY3RBbGxdPVwidHJ1ZVwiXG4gICAgICAgIFtsaW5lc109XCInaW5zZXQnXCJcbiAgICAgID48L2lkZWEtY2hlY2tlcj5cbiAgICA8L2lvbi1saXN0PlxuICAgIDxpb24tbGlzdCBjbGFzcz1cImFMaXN0XCIgKm5nSWY9XCJfY2FsZW5kYXIuZXh0ZXJuYWw/LnNlcnZpY2VcIj5cbiAgICAgIDxpb24tbGlzdC1oZWFkZXI+XG4gICAgICAgIDxpb24tbGFiZWw+XG4gICAgICAgICAgPGgyPnt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuSU5GT19PTl9DQUxFTkRBUicgfCB0cmFuc2xhdGUgfX08L2gyPlxuICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgIDwvaW9uLWxpc3QtaGVhZGVyPlxuICAgICAgPGlvbi1pdGVtIGxpbmVzPVwiaW5zZXRcIiAqbmdJZj1cImNhbGVuZGFyLnVzZXJJZFwiPlxuICAgICAgICA8aW9uLWxhYmVsPlxuICAgICAgICAgIHt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuUFJJVkFURV9DQUxFTkRBUicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8cD57eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLlBSSVZBVEVfQ0FMRU5EQVJfSElOVCcgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cImVuZFwiIG5hbWU9XCJwZXJzb25cIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24taXRlbT5cbiAgICAgIDxpb24taXRlbSBsaW5lcz1cImluc2V0XCIgKm5nSWY9XCJjYWxlbmRhci50ZWFtSWRcIj5cbiAgICAgICAgPGlvbi1sYWJlbD5cbiAgICAgICAgICB7eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLlRFQU1fQ0FMRU5EQVInIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPHA+e3sgJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5URUFNX0NBTEVOREFSX0hJTlQnIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJlbmRcIiBuYW1lPVwicGVvcGxlXCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICA8aW9uLWl0ZW0gbGluZXM9XCJpbnNldFwiPlxuICAgICAgICA8aW9uLWxhYmVsPlxuICAgICAgICAgIHt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuTElOS0VEX1RPJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIHt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuU0VSVklDRVMuJyArIF9jYWxlbmRhci5leHRlcm5hbC5zZXJ2aWNlIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPHA+e3sgX2NhbGVuZGFyLmV4dGVybmFsLm5hbWUgfX0gKHt7IF9jYWxlbmRhci5leHRlcm5hbC5lbWFpbCB9fSk8L3A+XG4gICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cImVuZFwiIFtuYW1lXT1cImNhbGVuZGFycy5nZXRTZXJ2aWNlSWNvbihfY2FsZW5kYXIuZXh0ZXJuYWwuc2VydmljZSlcIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24taXRlbT5cbiAgICAgIDxpb24taXRlbSBsaW5lcz1cImluc2V0XCI+XG4gICAgICAgIDxpb24tbGFiZWw+XG4gICAgICAgICAge3sgJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5BQ0NFU1NfTEVWRUxTLicgKyBfY2FsZW5kYXIuZXh0ZXJuYWwudXNlckFjY2VzcyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDxwPnt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuQkFTRURfT05fRVhURVJOQUxfU0VSVklDRV9TSEFSSU5HX1BFUk1JU1NJT04nIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJlbmRcIiBuYW1lPVwic2hpZWxkXCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWl0ZW0+XG4gICAgPC9pb24tbGlzdD5cbiAgICA8aW9uLWxpc3QgY2xhc3M9XCJhTGlzdFwiPlxuICAgICAgPGlvbi1saXN0LWhlYWRlcj5cbiAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cImRhbmdlclwiPlxuICAgICAgICAgIDxoMj57eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkRBTkdFUk9VU19aT05FJyB8IHRyYW5zbGF0ZSB9fTwvaDI+XG4gICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgPC9pb24tbGlzdC1oZWFkZXI+XG4gICAgICA8aW9uLWl0ZW0gbGluZXM9XCJpbnNldFwiPlxuICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwiaW9uLXRleHQtd3JhcFwiPlxuICAgICAgICAgIHt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuREVMRVRFX0NBTEVOREFSJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDxwPnt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuREVMRVRFX0NBTEVOREFSX0hJTlQnIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgPGlvbi1idXR0b24gY29sb3I9XCJkYW5nZXJcIiBbdGl0bGVdPVwidC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuREVMRVRFX0NBTEVOREFSX0hJTlQnKVwiIChjbGljayk9XCJkZWxldGUoKVwiPlxuICAgICAgICAgIHt7ICdDT01NT04uREVMRVRFJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1pdGVtPlxuICAgIDwvaW9uLWxpc3Q+XG4gIDwvZGl2PlxuPC9pb24tY29udGVudD5cbiJdfQ==
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbW9kdWxlcy9hZ2VuZGEvc3JjL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL21vZHVsZXMvYWdlbmRhL3NyYy9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBYyxNQUFNLGNBQWMsQ0FBQzs7Ozs7OztBQWdCM0QsTUFBTSxPQUFPLHFCQUFxQjtJQW1DaEMsWUFDUyxTQUErQixFQUMvQixTQUEwQixFQUMxQixTQUEwQixFQUMxQixFQUFxQixFQUNyQixPQUEyQixFQUMzQixPQUEyQixFQUMzQixHQUFzQixFQUN0QixDQUEwQjtRQVAxQixjQUFTLEdBQVQsU0FBUyxDQUFzQjtRQUMvQixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUMxQixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUMxQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixNQUFDLEdBQUQsQ0FBQyxDQUF5QjtRQWpCbkM7O1dBRUc7UUFDSSxXQUFNLEdBQWdCLElBQUksR0FBRyxFQUFVLENBQUM7UUFDL0M7O1dBRUc7UUFDSSxrQkFBYSxHQUFHLE1BQU0sQ0FBQztJQVczQixDQUFDO0lBQ0csUUFBUTtRQUNiLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDNUMsaUJBQWlCO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFFB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QUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQzs4R0F2SVUscUJBQXFCO2tHQUFyQixxQkFBcUIsMkpDbEJsQyx5MEpBOEdBOzsyRkQ1RmEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLGVBQWU7NlRBUVQsUUFBUTtzQkFBdkIsS0FBSztnQkFJVSxtQkFBbUI7c0JBQWxDLEtBQUs7Z0JBSVUsU0FBUztzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kYWxDb250cm9sbGVyLCBBbGVydENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBDYWxlbmRhciwgQ2hlY2ssIE1lbWJlcnNoaXAgfSBmcm9tICdpZGVhLXRvb2xib3gnO1xuaW1wb3J0IHtcbiAgSURFQUxvYWRpbmdTZXJ2aWNlLFxuICBJREVBQVdTQVBJU2VydmljZSxcbiAgSURFQVRpbkNhblNlcnZpY2UsXG4gIElERUFNZXNzYWdlU2VydmljZSxcbiAgSURFQVRyYW5zbGF0aW9uc1NlcnZpY2Vcbn0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcblxuaW1wb3J0IHsgSURFQUNhbGVuZGFyc1NlcnZpY2UgfSBmcm9tICcuL2NhbGVuZGFycy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWRlYS1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnY2FsZW5kYXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJREVBQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogVGhlIGNhbGVuZGFyIHRvIG1hbmFnZS5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBjYWxlbmRhcjogQ2FsZW5kYXI7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHdlIHdhbnQgdG8gZW5hYmxlIGFkdmFuY2VkIHBlcm1pc3Npb25zIChiYXNlZCBvbiB0aGUgbWVtYmVyc2hpcHMpIG9uIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBhZHZhbmNlZFBlcm1pc3Npb25zOiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciB0aGUgY2FsZW5kYXIgY29sb3IgaXMgYW4gaW1wb3J0YW50IGRldGFpbCBvciBpdCBzaG91bGRuJ3QgYmUgc2hvd24uXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgaGlkZUNvbG9yOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXb3JraW5nIGNvcHkgb2YgdGhlIGNhbGVuZGFyLCB0byB1cGRhdGUgb25seSB3aGVuIGNvbmZpcm1lZC5cbiAgICovXG4gIHB1YmxpYyBfY2FsZW5kYXI6IENhbGVuZGFyO1xuICAvKipcbiAgICogSGVscGVyIHRvIGFsbG93IHNlbGVjdGluZyBtZW1iZXJzaGlwcy5cbiAgICovXG4gIHB1YmxpYyBtZW1iZXJzaGlwc0NoZWNrczogQ2hlY2tbXTtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IG1lbWJlcnNoaXAuXG4gICAqL1xuICBwdWJsaWMgbWVtYmVyc2hpcDogTWVtYmVyc2hpcDtcbiAgLyoqXG4gICAqIEVycm9ycyB3aGlsZSB2YWxpZGF0aW5nIHRoZSBlbnRpdHkuXG4gICAqL1xuICBwdWJsaWMgZXJyb3JzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAvKipcbiAgICogVGhlIGRlZmF1bHQgY29sb3IgZm9yIGEgY2FsZW5kYXIuXG4gICAqL1xuICBwdWJsaWMgREVGQVVMVF9DT0xPUiA9ICcjNTU1JztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2FsZW5kYXJzOiBJREVBQ2FsZW5kYXJzU2VydmljZSxcbiAgICBwdWJsaWMgbW9kYWxDdHJsOiBNb2RhbENvbnRyb2xsZXIsXG4gICAgcHVibGljIGFsZXJ0Q3RybDogQWxlcnRDb250cm9sbGVyLFxuICAgIHB1YmxpYyB0YzogSURFQVRpbkNhblNlcnZpY2UsXG4gICAgcHVibGljIGxvYWRpbmc6IElERUFMb2FkaW5nU2VydmljZSxcbiAgICBwdWJsaWMgbWVzc2FnZTogSURFQU1lc3NhZ2VTZXJ2aWNlLFxuICAgIHB1YmxpYyBBUEk6IElERUFBV1NBUElTZXJ2aWNlLFxuICAgIHB1YmxpYyB0OiBJREVBVHJhbnNsYXRpb25zU2VydmljZVxuICApIHt9XG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm1lbWJlcnNoaXAgPSB0aGlzLnRjLmdldCgnbWVtYmVyc2hpcCcpO1xuICAgIC8vIHdvcmsgb24gYSBjb3B5XG4gICAgdGhpcy5fY2FsZW5kYXIgPSBuZXcgQ2FsZW5kYXIodGhpcy5jYWxlbmRhcik7XG4gICAgLy8gbG9hZCB0aGUgdGVhbW1hdGVzIHRvIHVzZSBmb3Igc2hhcmVkIGNhbGVuZGFycyBwZXJtaXNzaW9uc1xuICAgIHRoaXMuQVBJLmdldFJlc291cmNlKGB0ZWFtcy8ke3RoaXMubWVtYmVyc2hpcC50ZWFtSWR9L21lbWJlcnNoaXBzYClcbiAgICAgIC50aGVuKFxuICAgICAgICAobWVtYmVyc2hpcHM6IE1lbWJlcnNoaXBbXSkgPT5cbiAgICAgICAgICAodGhpcy5tZW1iZXJzaGlwc0NoZWNrcyA9IG1lbWJlcnNoaXBzLm1hcChcbiAgICAgICAgICAgIG0gPT5cbiAgICAgICAgICAgICAgbmV3IENoZWNrKHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogbS51c2VySWQsXG4gICAgICAgICAgICAgICAgbmFtZTogbS5uYW1lLFxuICAgICAgICAgICAgICAgIGNoZWNrZWQ6ICh0aGlzLl9jYWxlbmRhci51c2Vyc0Nhbk1hbmFnZUFwcG9pbnRtZW50cyB8fCBbXSkuc29tZSh4ID0+IHggPT09IG0udXNlcklkKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICkpXG4gICAgICApXG4gICAgICAuY2F0Y2goKCkgPT4ge30pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc3VwcG9ydCBhcnJheSB0byBkaXNwbGF5IGVycm9ycyBpbiB0aGUgVUkuXG4gICAqL1xuICBwdWJsaWMgaGFzRmllbGRBbkVycm9yKGZpZWxkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lcnJvcnMuaGFzKGZpZWxkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIGEgY2FsZW5kYXIgd2l0aCB0aGUgbmV3IGluZm8uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2F2ZSgpIHtcbiAgICAvLyBzZXQgdGhlIGRlZmF1bHQgY29sb3IsIGluIGNhc2Ugbm9uZSB3YXMgc2VsZWN0ZWRcbiAgICBpZiAoIXRoaXMuX2NhbGVuZGFyLmNvbG9yKSB0aGlzLl9jYWxlbmRhci5jb2xvciA9IHRoaXMuREVGQVVMVF9DT0xPUjtcbiAgICAvLyBtYXAgdGhlIG1lbWJlcnNoaXBzIGFibGUgdG8gbWFuYWdlIGFwcG9pbnRtZW50c1xuICAgIGlmICh0aGlzLl9jYWxlbmRhci5pc1NoYXJlZCgpICYmIHRoaXMuYWR2YW5jZWRQZXJtaXNzaW9ucylcbiAgICAgIHRoaXMuX2NhbGVuZGFyLnVzZXJzQ2FuTWFuYWdlQXBwb2ludG1lbnRzID0gdGhpcy5tZW1iZXJzaGlwc0NoZWNrc1xuICAgICAgICAuZmlsdGVyKHggPT4geC5jaGVja2VkKVxuICAgICAgICAubWFwKHggPT4gU3RyaW5nKHgudmFsdWUpKTtcbiAgICBlbHNlIGRlbGV0ZSB0aGlzLl9jYWxlbmRhci51c2Vyc0Nhbk1hbmFnZUFwcG9pbnRtZW50cztcbiAgICAvLyBjaGVja2luZ3NcbiAgICB0aGlzLmVycm9ycyA9IG5ldyBTZXQodGhpcy5fY2FsZW5kYXIudmFsaWRhdGUoKSk7XG4gICAgaWYgKHRoaXMuZXJyb3JzLnNpemUpIHJldHVybiB0aGlzLm1lc3NhZ2UuZXJyb3IoJ0NPTU1PTi5GT1JNX0hBU19FUlJPUl9UT19DSEVDSycpO1xuICAgIC8vIHNlbmQgYSBwdXQgcmVxdWVzdFxuICAgIGF3YWl0IHRoaXMubG9hZGluZy5zaG93KCk7XG4gICAgdGhpcy5jYWxlbmRhcnNcbiAgICAgIC5wdXRDYWxlbmRhcih0aGlzLl9jYWxlbmRhcilcbiAgICAgIC50aGVuKChyZXM6IENhbGVuZGFyKSA9PiB7XG4gICAgICAgIHRoaXMuY2FsZW5kYXIubG9hZChyZXMpO1xuICAgICAgICB0aGlzLm1lc3NhZ2Uuc3VjY2VzcygnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkNBTEVOREFSX1NBVkVEJyk7XG4gICAgICAgIHRoaXMubW9kYWxDdHJsLmRpc21pc3ModGhpcy5jYWxlbmRhcik7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHRoaXMubWVzc2FnZS5lcnJvcignQ09NTU9OLk9QRVJBVElPTl9GQUlMRUQnKSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHRoaXMubG9hZGluZy5oaWRlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBwdWJsaWMgZGVsZXRlKCkge1xuICAgIHRoaXMuYWxlcnRDdHJsXG4gICAgICAuY3JlYXRlKHtcbiAgICAgICAgaGVhZGVyOiB0aGlzLnQuXygnQ09NTU9OLkFSRV9ZT1VfU1VSRScpLFxuICAgICAgICBzdWJIZWFkZXI6IHRoaXMudC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuREVMRVRFX0NBTEVOREFSJyksXG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuREVMRVRFX0NBTEVOREFSX0hJTlQnKSxcbiAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgIHsgdGV4dDogdGhpcy50Ll8oJ0NPTU1PTi5DQU5DRUwnKSwgcm9sZTogJ2NhbmNlbCcgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0ZXh0OiB0aGlzLnQuXygnQ09NTU9OLkRFTEVURScpLFxuICAgICAgICAgICAgaGFuZGxlcjogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICBhd2FpdCB0aGlzLmxvYWRpbmcuc2hvdygpO1xuICAgICAgICAgICAgICB0aGlzLmNhbGVuZGFyc1xuICAgICAgICAgICAgICAgIC5kZWxldGVDYWxlbmRhcih0aGlzLl9jYWxlbmRhcilcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2Uuc3VjY2VzcygnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkNBTEVOREFSX0RFTEVURUQnKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMubW9kYWxDdHJsLmRpc21pc3ModHJ1ZSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKCkgPT4gdGhpcy5tZXNzYWdlLmVycm9yKCdDT01NT04uT1BFUkFUSU9OX0ZBSUxFRCcpKVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KCgpID0+IHRoaXMubG9hZGluZy5oaWRlKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSlcbiAgICAgIC50aGVuKGFsZXJ0ID0+IGFsZXJ0LnByZXNlbnQoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2UgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBjbG9zZSgpIHtcbiAgICB0aGlzLm1vZGFsQ3RybC5kaXNtaXNzKCk7XG4gIH1cbn1cbiIsIjxpb24taGVhZGVyPlxuICA8aW9uLXRvb2xiYXIgY29sb3I9XCJpZGVhVG9vbGJhclwiPlxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIj5cbiAgICAgIDxpb24tYnV0dG9uIFt0aXRsZV09XCJ0Ll8oJ0NPTU1PTi5DTE9TRScpXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZS1jaXJjbGVcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuICAgIDxpb24tdGl0bGU+e3sgJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5FRElUX0NBTEVOREFSJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLXRpdGxlPlxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICA8aW9uLWJ1dHRvbiBbdGl0bGVdPVwidC5fKCdDT01NT04uU0FWRScpXCIgKGNsaWNrKT1cInNhdmUoKVwiPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZWNrbWFyay1jaXJjbGVcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuPGlvbi1jb250ZW50PlxuICA8ZGl2IGNsYXNzPVwibWF4V2lkdGhDb250YWluZXJcIiAqbmdJZj1cIl9jYWxlbmRhclwiPlxuICAgIDxpb24tbGlzdCBjbGFzcz1cImFMaXN0XCI+XG4gICAgICA8aW9uLWl0ZW1cbiAgICAgICAgbGluZXM9XCJpbnNldFwiXG4gICAgICAgIFtjbGFzcy5maWVsZEhhc0Vycm9yXT1cImhhc0ZpZWxkQW5FcnJvcignbmFtZScpXCJcbiAgICAgICAgW3RpdGxlXT1cInQuXygnSURFQV9BR0VOREEuQ0FMRU5EQVJTLk5BTUVfSElOVCcpXCJcbiAgICAgID5cbiAgICAgICAgPGlvbi1sYWJlbCBwb3NpdGlvbj1cInN0YWNrZWRcIj57eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLk5BTUUnIHwgdHJhbnNsYXRlIH19IDwvaW9uLWxhYmVsPlxuICAgICAgICA8aW9uLWlucHV0IFtwbGFjZWhvbGRlcl09XCJ0Ll8oJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5OQU1FX0hJTlQnKVwiIFsobmdNb2RlbCldPVwiX2NhbGVuZGFyLm5hbWVcIj48L2lvbi1pbnB1dD5cbiAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICA8aW9uLWl0ZW1cbiAgICAgICAgbGluZXM9XCJpbnNldFwiXG4gICAgICAgIFtjbGFzcy5maWVsZEhhc0Vycm9yXT1cImhhc0ZpZWxkQW5FcnJvcignZGVzY3JpcHRpb24nKVwiXG4gICAgICAgIFt0aXRsZV09XCJ0Ll8oJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5ERVNDUklQVElPTl9ISU5UJylcIlxuICAgICAgPlxuICAgICAgICA8aW9uLWxhYmVsIHBvc2l0aW9uPVwic3RhY2tlZFwiPnt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlIH19IDwvaW9uLWxhYmVsPlxuICAgICAgICA8aW9uLWlucHV0XG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInQuXygnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkRFU0NSSVBUSU9OX0hJTlQnKVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJfY2FsZW5kYXIuZGVzY3JpcHRpb25cIlxuICAgICAgICA+PC9pb24taW5wdXQ+XG4gICAgICA8L2lvbi1pdGVtPlxuICAgICAgPGlkZWEtY29sb3ItcGlja2VyXG4gICAgICAgICpuZ0lmPVwiIWhpZGVDb2xvclwiXG4gICAgICAgIFtsaW5lc109XCInaW5zZXQnXCJcbiAgICAgICAgW2N1cnJlbnRdPVwiX2NhbGVuZGFyLmNvbG9yXCJcbiAgICAgICAgW2xhYmVsXT1cInQuXygnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkNPTE9SJylcIlxuICAgICAgICBbY2xhc3MuZmllbGRIYXNFcnJvcl09XCJoYXNGaWVsZEFuRXJyb3IoJ2NvbG9yJylcIlxuICAgICAgICAoc2VsZWN0KT1cIiRldmVudCA/IChfY2FsZW5kYXIuY29sb3IgPSAkZXZlbnQpIDogbnVsbFwiXG4gICAgICA+PC9pZGVhLWNvbG9yLXBpY2tlcj5cbiAgICAgIDxpZGVhLWNoZWNrZXJcbiAgICAgICAgKm5nSWY9XCJtZW1iZXJzaGlwc0NoZWNrcyAmJiBfY2FsZW5kYXIuaXNTaGFyZWQoKSAmJiBhZHZhbmNlZFBlcm1pc3Npb25zXCJcbiAgICAgICAgW2RhdGFdPVwibWVtYmVyc2hpcHNDaGVja3NcIlxuICAgICAgICBbbGFiZWxdPVwidC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuVVNFUlNfQUxMT1dFRF9UT19NQU5BR0VfQVBQT0lOVE1FTlRTJylcIlxuICAgICAgICBbc2VhcmNoUGxhY2Vob2xkZXJdPVwidC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuV0hPX0NBTl9NQU5BR0VfQVBQT0lOVE1FTlRTJylcIlxuICAgICAgICBbbm9uZVRleHRdPVwidC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuTk9CT0RZJylcIlxuICAgICAgICBbYWxsVGV4dF09XCJ0Ll8oJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5FVkVSWU9ORScpXCJcbiAgICAgICAgW2FsbG93U2VsZWN0RGVzZWxlY3RBbGxdPVwidHJ1ZVwiXG4gICAgICAgIFtsaW5lc109XCInaW5zZXQnXCJcbiAgICAgID48L2lkZWEtY2hlY2tlcj5cbiAgICA8L2lvbi1saXN0PlxuICAgIDxpb24tbGlzdCBjbGFzcz1cImFMaXN0XCIgKm5nSWY9XCJfY2FsZW5kYXIuZXh0ZXJuYWw/LnNlcnZpY2VcIj5cbiAgICAgIDxpb24tbGlzdC1oZWFkZXI+XG4gICAgICAgIDxpb24tbGFiZWw+XG4gICAgICAgICAgPGgyPnt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuSU5GT19PTl9DQUxFTkRBUicgfCB0cmFuc2xhdGUgfX08L2gyPlxuICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgIDwvaW9uLWxpc3QtaGVhZGVyPlxuICAgICAgPGlvbi1pdGVtIGxpbmVzPVwiaW5zZXRcIiAqbmdJZj1cImNhbGVuZGFyLnVzZXJJZFwiPlxuICAgICAgICA8aW9uLWxhYmVsPlxuICAgICAgICAgIHt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuUFJJVkFURV9DQUxFTkRBUicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8cD57eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLlBSSVZBVEVfQ0FMRU5EQVJfSElOVCcgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cImVuZFwiIG5hbWU9XCJwZXJzb25cIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24taXRlbT5cbiAgICAgIDxpb24taXRlbSBsaW5lcz1cImluc2V0XCIgKm5nSWY9XCJjYWxlbmRhci50ZWFtSWRcIj5cbiAgICAgICAgPGlvbi1sYWJlbD5cbiAgICAgICAgICB7eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLlRFQU1fQ0FMRU5EQVInIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPHA+e3sgJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5URUFNX0NBTEVOREFSX0hJTlQnIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJlbmRcIiBuYW1lPVwicGVvcGxlXCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICA8aW9uLWl0ZW0gbGluZXM9XCJpbnNldFwiPlxuICAgICAgICA8aW9uLWxhYmVsPlxuICAgICAgICAgIHt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuTElOS0VEX1RPJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIHt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuU0VSVklDRVMuJyArIF9jYWxlbmRhci5leHRlcm5hbC5zZXJ2aWNlIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPHA+e3sgX2NhbGVuZGFyLmV4dGVybmFsLm5hbWUgfX0gKHt7IF9jYWxlbmRhci5leHRlcm5hbC5lbWFpbCB9fSk8L3A+XG4gICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cImVuZFwiIFtuYW1lXT1cImNhbGVuZGFycy5nZXRTZXJ2aWNlSWNvbihfY2FsZW5kYXIuZXh0ZXJuYWwuc2VydmljZSlcIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24taXRlbT5cbiAgICAgIDxpb24taXRlbSBsaW5lcz1cImluc2V0XCI+XG4gICAgICAgIDxpb24tbGFiZWw+XG4gICAgICAgICAge3sgJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5BQ0NFU1NfTEVWRUxTLicgKyBfY2FsZW5kYXIuZXh0ZXJuYWwudXNlckFjY2VzcyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDxwPnt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuQkFTRURfT05fRVhURVJOQUxfU0VSVklDRV9TSEFSSU5HX1BFUk1JU1NJT04nIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJlbmRcIiBuYW1lPVwic2hpZWxkXCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWl0ZW0+XG4gICAgPC9pb24tbGlzdD5cbiAgICA8aW9uLWxpc3QgY2xhc3M9XCJhTGlzdFwiPlxuICAgICAgPGlvbi1saXN0LWhlYWRlcj5cbiAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cImRhbmdlclwiPlxuICAgICAgICAgIDxoMj57eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkRBTkdFUk9VU19aT05FJyB8IHRyYW5zbGF0ZSB9fTwvaDI+XG4gICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgPC9pb24tbGlzdC1oZWFkZXI+XG4gICAgICA8aW9uLWl0ZW0gbGluZXM9XCJpbnNldFwiPlxuICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwiaW9uLXRleHQtd3JhcFwiPlxuICAgICAgICAgIHt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuREVMRVRFX0NBTEVOREFSJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDxwPnt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuREVMRVRFX0NBTEVOREFSX0hJTlQnIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgPGlvbi1idXR0b24gY29sb3I9XCJkYW5nZXJcIiBbdGl0bGVdPVwidC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuREVMRVRFX0NBTEVOREFSX0hJTlQnKVwiIChjbGljayk9XCJkZWxldGUoKVwiPlxuICAgICAgICAgIHt7ICdDT01NT04uREVMRVRFJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1pdGVtPlxuICAgIDwvaW9uLWxpc3Q+XG4gIDwvZGl2PlxuPC9pb24tY29udGVudD5cbiJdfQ==
|