UNPKG

@yoyoboot/l-52abp-ng-form-generator

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.2.0.

191 lines 20.8 kB
import { Component, EventEmitter, forwardRef, Input, Output } from '@angular/core'; import { DatePickerBase } from '../date-picker-base'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import * as moment from 'moment'; import * as i0 from "@angular/core"; import * as i1 from "ng-zorro-antd/time-picker"; import * as i2 from "@angular/forms"; export class TimePickerComponent extends DatePickerBase { constructor() { super(); /** * 展示的日期格式,见nzFormat特别说明 */ this.nzFormat = 'HH:mm:ss'; /** * 自动获取焦点 */ this.nzAutoFocus = false; /** * 隐藏禁止选择的选项 */ this.nzHideDisabledOptions = false; /** * 小时选项间隔 */ this.nzHourStep = 1; /** * 分钟选项间隔 */ this.nzMinuteStep = 1; /** * 秒选项间隔 */ this.nzSecondStep = 1; /** * 面板是否打开,可双向绑定 */ this.nzOpen = false; /** * 弹出层类名 */ this.nzPopupClassName = ''; /** * 当 [ngModel] 不存在时,可以设置面板打开时默认选中的值 */ this.nzDefaultOpenValue = new Date(); /** * 使用12小时制,为true时format默认为h:mm:ss a */ this.nzUse12Hours = false; /** * 点击确定按钮的回调 */ this.nzOnOk = new EventEmitter(); /** * 时间发生变化的回调 */ this.ngModelChange = new EventEmitter(); /** * 待选日期发生变化的回调 */ this.nzOnCalendarChange = new EventEmitter(); } /** * 点击确定按钮的回调 * @param event 数据 */ onNzOk(event) { if (event && moment.isDate(event[0] && moment.isDate(event[1]))) { this.nzOnOk.emit(event.map(o => { return moment(o); })); } else { this.nzOnOk.emit(undefined); } } /** * 时间发生变化的回调 * @param event 数据 */ onNgModelChangeChange(event) { if (event && moment.isDate(event[0] && moment.isDate(event[1]))) { this.ngModelChange.emit(event.map(o => { return moment(o); })); } else { this.ngModelChange.emit(undefined); } } /** * 待选日期发生变化的回调 * @param event 数据 */ onNzOnCalendarChange(event) { if (event && moment.isDate(event[0] && moment.isDate(event[1]))) { this.nzOnCalendarChange.emit(event.map(o => { return moment(o); })); } else { this.nzOnCalendarChange.emit(undefined); } } registerOnChange(fn) { this.ngModelChange.emit = fn; } registerOnTouched(fn) { } setDisabledState(isDisabled) { this.nzDisabled = isDisabled; } writeValue(obj) { if (obj && moment.isMoment(obj)) { this.value = obj.toDate(); } else { this.value = obj; } } } TimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TimePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); TimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: TimePickerComponent, selector: "d-time-picker", inputs: { ngModel: "ngModel", nzDisabledTime: "nzDisabledTime", nzFormat: "nzFormat", nzRanges: "nzRanges", nzRenderExtraFooter: "nzRenderExtraFooter", nzShowTime: "nzShowTime", nzPlaceHolder: "nzPlaceHolder", nzAddOn: "nzAddOn", nzAutoFocus: "nzAutoFocus", nzDisabledHours: "nzDisabledHours", nzDisabledMinutes: "nzDisabledMinutes", nzDisabledSeconds: "nzDisabledSeconds", nzHideDisabledOptions: "nzHideDisabledOptions", nzHourStep: "nzHourStep", nzMinuteStep: "nzMinuteStep", nzSecondStep: "nzSecondStep", nzOpen: "nzOpen", nzPopupClassName: "nzPopupClassName", nzDefaultOpenValue: "nzDefaultOpenValue", nzUse12Hours: "nzUse12Hours" }, outputs: { nzOnOk: "nzOnOk", ngModelChange: "ngModelChange", nzOnCalendarChange: "nzOnCalendarChange" }, providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TimePickerComponent), multi: true } ], usesInheritance: true, ngImport: i0, template: "<nz-time-picker [nzAutoFocus]='nzAutoFocus' [nzDisabled]='nzDisabled' [nzSize]='nzSize' [nzFormat]='nzFormat'\r\n [nzAddOn]='nzAddOn' [nzDisabledHours]='nzDisabledHours' [nzDisabledMinutes]='nzDisabledMinutes'\r\n [nzDefaultOpenValue]='nzDefaultOpenValue' [nzDisabledSeconds]='nzDisabledSeconds'\r\n [nzHideDisabledOptions]='nzHideDisabledOptions' [nzHourStep]='nzHourStep' [nzMinuteStep]='nzMinuteStep'\r\n [nzSecondStep]='nzSecondStep' [nzOpen]='nzOpen' [nzPopupClassName]='nzPopupClassName'\r\n [nzUse12Hours]='nzUse12Hours'\r\n [nzPlaceHolder]='nzPlaceHolder' [(ngModel)]='value'\r\n (ngModelChange)='onNgModelChangeChange($event)'\r\n (nzOpenChange)='onNzOnOpenChange($event)'>\r\n</nz-time-picker>\r\n", components: [{ type: i1.NzTimePickerComponent, selector: "nz-time-picker", inputs: ["nzId", "nzSize", "nzHourStep", "nzMinuteStep", "nzSecondStep", "nzClearText", "nzNowText", "nzOkText", "nzPopupClassName", "nzPlaceHolder", "nzFormat", "nzOpen", "nzUse12Hours", "nzSuffixIcon", "nzHideDisabledOptions", "nzAllowEmpty", "nzDisabled", "nzAutoFocus", "nzBackdrop", "nzAddOn", "nzDefaultOpenValue", "nzDisabledHours", "nzDisabledMinutes", "nzDisabledSeconds"], outputs: ["nzOpenChange"], exportAs: ["nzTimePicker"] }], directives: [{ type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TimePickerComponent, decorators: [{ type: Component, args: [{ selector: 'd-time-picker', templateUrl: './time-picker.component.html', styles: [], providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TimePickerComponent), multi: true } ] }] }], ctorParameters: function () { return []; }, propDecorators: { ngModel: [{ type: Input }], nzDisabledTime: [{ type: Input }], nzFormat: [{ type: Input }], nzRanges: [{ type: Input }], nzRenderExtraFooter: [{ type: Input }], nzShowTime: [{ type: Input }], nzPlaceHolder: [{ type: Input }], nzAddOn: [{ type: Input }], nzAutoFocus: [{ type: Input }], nzDisabledHours: [{ type: Input }], nzDisabledMinutes: [{ type: Input }], nzDisabledSeconds: [{ type: Input }], nzHideDisabledOptions: [{ type: Input }], nzHourStep: [{ type: Input }], nzMinuteStep: [{ type: Input }], nzSecondStep: [{ type: Input }], nzOpen: [{ type: Input }], nzPopupClassName: [{ type: Input }], nzDefaultOpenValue: [{ type: Input }], nzUse12Hours: [{ type: Input }], nzOnOk: [{ type: Output }], ngModelChange: [{ type: Output }], nzOnCalendarChange: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbC01MmFicC1uZy1mb3JtLWdlbmVyYXRvci9zcmMvc2hhcmVkL2RhdGUtcGlja2VyL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2wtNTJhYnAtbmctZm9ybS1nZW5lcmF0b3Ivc3JjL3NoYXJlZC9kYXRlLXBpY2tlci90aW1lLXBpY2tlci90aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDOzs7O0FBY2pDLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxjQUFjO0lBOEdyRDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBL0ZWOztXQUVHO1FBQ00sYUFBUSxHQUFHLFVBQVUsQ0FBQztRQTBCL0I7O1dBRUc7UUFDTSxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQWE3Qjs7V0FFRztRQUNNLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUN2Qzs7V0FFRztRQUNNLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDeEI7O1dBRUc7UUFDTSxpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUMxQjs7V0FFRztRQUNNLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQzFCOztXQUVHO1FBQ00sV0FBTSxHQUFHLEtBQUssQ0FBQztRQUN4Qjs7V0FFRztRQUNNLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUMvQjs7V0FFRztRQUNNLHVCQUFrQixHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFFekM7O1dBRUc7UUFDTSxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUU5Qjs7V0FFRztRQUNPLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUV2RDs7V0FFRztRQUNPLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFFOUQ7O1dBRUc7UUFDTyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztJQUluRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEtBQWE7UUFDbEIsSUFBSSxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQy9ELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNkLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ1osT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztTQUNIO2FBQU07WUFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxxQkFBcUIsQ0FBQyxLQUFhO1FBQ2pDLElBQUksS0FBSyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMvRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDWixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQixDQUFDLENBQUMsQ0FDSCxDQUFDO1NBQ0g7YUFBTTtZQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILG9CQUFvQixDQUFDLEtBQWE7UUFDaEMsSUFBSSxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQy9ELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQzFCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ1osT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztTQUNIO2FBQU07WUFDTCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPLElBQVMsQ0FBQztJQUVuQyxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVE7UUFDakIsSUFBSSxHQUFHLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUMzQjthQUFNO1lBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7U0FDbEI7SUFDSCxDQUFDOztpSEFsTFUsbUJBQW1CO3FHQUFuQixtQkFBbUIsK3dCQVJuQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO1lBQ2xELEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRixpRENmSCw2ekJBVUE7NEZET2EsbUJBQW1CO2tCQVovQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixXQUFXLEVBQUUsOEJBQThCO29CQUMzQyxNQUFNLEVBQUUsRUFBRTtvQkFDVixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUM7NEJBQ2xELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGOzBFQVVVLE9BQU87c0JBQWYsS0FBSztnQkFLRyxjQUFjO3NCQUF0QixLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0csUUFBUTtzQkFBaEIsS0FBSztnQkFLRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBS0csVUFBVTtzQkFBbEIsS0FBSztnQkFLRyxhQUFhO3NCQUFyQixLQUFLO2dCQUtHLE9BQU87c0JBQWYsS0FBSztnQkFJRyxXQUFXO3NCQUFuQixLQUFLO2dCQUlHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBSUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUlHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFJRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBSUcsVUFBVTtzQkFBbEIsS0FBSztnQkFJRyxZQUFZO3NCQUFwQixLQUFLO2dCQUlHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUcsTUFBTTtzQkFBZCxLQUFLO2dCQUlHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFJRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBS0csWUFBWTtzQkFBcEIsS0FBSztnQkFLSSxNQUFNO3NCQUFmLE1BQU07Z0JBS0csYUFBYTtzQkFBdEIsTUFBTTtnQkFLRyxrQkFBa0I7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0ZVBpY2tlckJhc2UgfSBmcm9tICcuLi9kYXRlLXBpY2tlci1iYXNlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZC10aW1lLXBpY2tlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZXM6IFtdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGltZVBpY2tlckNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGltZVBpY2tlckNvbXBvbmVudCBleHRlbmRzIERhdGVQaWNrZXJCYXNlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIC8qKlxyXG4gICAqIOWGhemDqOeUqOeahOWAvFxyXG4gICAqL1xyXG4gIHZhbHVlOiBEYXRlO1xyXG5cclxuICAvKipcclxuICAgKiDml6XmnJ8gTW9tZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgbmdNb2RlbDogbW9tZW50Lk1vbWVudDtcclxuXHJcbiAgLyoqXHJcbiAgICog5LiN5Y+v6YCJ5oup55qE5pe26Ze0XHJcbiAgICovXHJcbiAgQElucHV0KCkgbnpEaXNhYmxlZFRpbWU6IChjdXJyZW50OiBEYXRlKSA9PiB7IG56RGlzYWJsZWRIb3VyczsgbnpEaXNhYmxlZE1pbnV0ZXM7IG56RGlzYWJsZWRTZWNvbmRzIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIOWxleekuueahOaXpeacn+agvOW8j++8jOingW56Rm9ybWF054m55Yir6K+05piOXHJcbiAgICovXHJcbiAgQElucHV0KCkgbnpGb3JtYXQgPSAnSEg6bW06c3MnO1xyXG5cclxuICAvKipcclxuICAgKiDpooTorr7ml7bpl7TojIPlm7Tlv6vmjbfpgInmi6lcclxuICAgKi9cclxuICBASW5wdXQoKSBuelJhbmdlczogeyBba2V5OiBzdHJpbmddOiBEYXRlW10gfSB8IHsgW2tleTogc3RyaW5nXTogKCkgPT4gRGF0ZVtdIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIOWcqOmdouadv+S4rea3u+WKoOmineWklueahOmhteiEmlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG56UmVuZGVyRXh0cmFGb290ZXI6IFRlbXBsYXRlUmVmPGFueT4gfCBzdHJpbmcgfCAoKCkgPT4gVGVtcGxhdGVSZWY8YW55PiB8IHN0cmluZyk7XHJcblxyXG4gIC8qKlxyXG4gICAqIOWinuWKoOaXtumXtOmAieaLqeWKn+iDvVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG56U2hvd1RpbWU6IG9iamVjdCB8IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIOi+k+WFpeahhuaPkOekuuaWh+Wtl1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG56UGxhY2VIb2xkZXI6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICog6YCJ5oup5qGG5bqV6YOo5pi+56S66Ieq5a6a5LmJ55qE5YaF5a65XHJcbiAgICovXHJcbiAgQElucHV0KCkgbnpBZGRPbjogVGVtcGxhdGVSZWY8dm9pZD47XHJcbiAgLyoqXHJcbiAgICog6Ieq5Yqo6I635Y+W54Sm54K5XHJcbiAgICovXHJcbiAgQElucHV0KCkgbnpBdXRvRm9jdXMgPSBmYWxzZTtcclxuICAvKipcclxuICAgKiDnpoHmraLpgInmi6npg6jliIblsI/ml7bpgInpoblcclxuICAgKi9cclxuICBASW5wdXQoKSBuekRpc2FibGVkSG91cnM6ICgpID0+IG51bWJlcltdO1xyXG4gIC8qKlxyXG4gICAqIOemgeatoumAieaLqemDqOWIhuWIhumSn+mAiemhuVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG56RGlzYWJsZWRNaW51dGVzOiAoaG91cjogbnVtYmVyKSA9PiBudW1iZXJbXTtcclxuICAvKipcclxuICAgKiDnpoHmraLpgInmi6npg6jliIbnp5LpgInpoblcclxuICAgKi9cclxuICBASW5wdXQoKSBuekRpc2FibGVkU2Vjb25kczogKGhvdXI6IG51bWJlciwgbWludXRlOiBudW1iZXIpID0+IG51bWJlcltdO1xyXG4gIC8qKlxyXG4gICAqIOmakOiXj+emgeatoumAieaLqeeahOmAiemhuVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG56SGlkZURpc2FibGVkT3B0aW9ucyA9IGZhbHNlO1xyXG4gIC8qKlxyXG4gICAqIOWwj+aXtumAiemhuemXtOmalFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG56SG91clN0ZXAgPSAxO1xyXG4gIC8qKlxyXG4gICAqIOWIhumSn+mAiemhuemXtOmalFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG56TWludXRlU3RlcCA9IDE7XHJcbiAgLyoqXHJcbiAgICogXHTnp5LpgInpobnpl7TpmpRcclxuICAgKi9cclxuICBASW5wdXQoKSBuelNlY29uZFN0ZXAgPSAxO1xyXG4gIC8qKlxyXG4gICAqIOmdouadv+aYr+WQpuaJk+W8gO+8jOWPr+WPjOWQkee7keWumlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG56T3BlbiA9IGZhbHNlO1xyXG4gIC8qKlxyXG4gICAqIOW8ueWHuuWxguexu+WQjVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG56UG9wdXBDbGFzc05hbWUgPSAnJztcclxuICAvKipcclxuICAgKiDlvZMgW25nTW9kZWxdIOS4jeWtmOWcqOaXtu+8jOWPr+S7peiuvue9rumdouadv+aJk+W8gOaXtum7mOiupOmAieS4reeahOWAvFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG56RGVmYXVsdE9wZW5WYWx1ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIOS9v+eUqDEy5bCP5pe25Yi277yM5Li6dHJ1ZeaXtmZvcm1hdOm7mOiupOS4umg6bW06c3MgYVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG56VXNlMTJIb3VycyA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiDngrnlh7vnoa7lrprmjInpkq7nmoTlm57osINcclxuICAgKi9cclxuICBAT3V0cHV0KCkgbnpPbk9rID0gbmV3IEV2ZW50RW1pdHRlcjxtb21lbnQuTW9tZW50W10+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIOaXtumXtOWPkeeUn+WPmOWMlueahOWbnuiwg1xyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBuZ01vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxtb21lbnQuTW9tZW50W10+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIOW+hemAieaXpeacn+WPkeeUn+WPmOWMlueahOWbnuiwg1xyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBuek9uQ2FsZW5kYXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG1vbWVudC5Nb21lbnRbXT4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog54K55Ye756Gu5a6a5oyJ6ZKu55qE5Zue6LCDXHJcbiAgICogQHBhcmFtIGV2ZW50IOaVsOaNrlxyXG4gICAqL1xyXG4gIG9uTnpPayhldmVudDogRGF0ZVtdKSB7XHJcbiAgICBpZiAoZXZlbnQgJiYgbW9tZW50LmlzRGF0ZShldmVudFswXSAmJiBtb21lbnQuaXNEYXRlKGV2ZW50WzFdKSkpIHtcclxuICAgICAgdGhpcy5uek9uT2suZW1pdChcclxuICAgICAgICBldmVudC5tYXAobyA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gbW9tZW50KG8pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm56T25Pay5lbWl0KHVuZGVmaW5lZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDml7bpl7Tlj5HnlJ/lj5jljJbnmoTlm57osINcclxuICAgKiBAcGFyYW0gZXZlbnQg5pWw5o2uXHJcbiAgICovXHJcbiAgb25OZ01vZGVsQ2hhbmdlQ2hhbmdlKGV2ZW50OiBEYXRlW10pIHtcclxuICAgIGlmIChldmVudCAmJiBtb21lbnQuaXNEYXRlKGV2ZW50WzBdICYmIG1vbWVudC5pc0RhdGUoZXZlbnRbMV0pKSkge1xyXG4gICAgICB0aGlzLm5nTW9kZWxDaGFuZ2UuZW1pdChcclxuICAgICAgICBldmVudC5tYXAobyA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gbW9tZW50KG8pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm5nTW9kZWxDaGFuZ2UuZW1pdCh1bmRlZmluZWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5b6F6YCJ5pel5pyf5Y+R55Sf5Y+Y5YyW55qE5Zue6LCDXHJcbiAgICogQHBhcmFtIGV2ZW50IOaVsOaNrlxyXG4gICAqL1xyXG4gIG9uTnpPbkNhbGVuZGFyQ2hhbmdlKGV2ZW50OiBEYXRlW10pIHtcclxuICAgIGlmIChldmVudCAmJiBtb21lbnQuaXNEYXRlKGV2ZW50WzBdICYmIG1vbWVudC5pc0RhdGUoZXZlbnRbMV0pKSkge1xyXG4gICAgICB0aGlzLm56T25DYWxlbmRhckNoYW5nZS5lbWl0KFxyXG4gICAgICAgIGV2ZW50Lm1hcChvID0+IHtcclxuICAgICAgICAgIHJldHVybiBtb21lbnQobyk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubnpPbkNhbGVuZGFyQ2hhbmdlLmVtaXQodW5kZWZpbmVkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5uZ01vZGVsQ2hhbmdlLmVtaXQgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHt9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5uekRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChvYmogJiYgbW9tZW50LmlzTW9tZW50KG9iaikpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IG9iai50b0RhdGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSBvYmo7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxuei10aW1lLXBpY2tlciBbbnpBdXRvRm9jdXNdPSduekF1dG9Gb2N1cycgW256RGlzYWJsZWRdPSduekRpc2FibGVkJyBbbnpTaXplXT0nbnpTaXplJyBbbnpGb3JtYXRdPSduekZvcm1hdCdcclxuICAgICAgICAgICAgICAgIFtuekFkZE9uXT0nbnpBZGRPbicgW256RGlzYWJsZWRIb3Vyc109J256RGlzYWJsZWRIb3VycycgW256RGlzYWJsZWRNaW51dGVzXT0nbnpEaXNhYmxlZE1pbnV0ZXMnXHJcbiAgICAgICAgICAgICAgICBbbnpEZWZhdWx0T3BlblZhbHVlXT0nbnpEZWZhdWx0T3BlblZhbHVlJyBbbnpEaXNhYmxlZFNlY29uZHNdPSduekRpc2FibGVkU2Vjb25kcydcclxuICAgICAgICAgICAgICAgIFtuekhpZGVEaXNhYmxlZE9wdGlvbnNdPSduekhpZGVEaXNhYmxlZE9wdGlvbnMnIFtuekhvdXJTdGVwXT0nbnpIb3VyU3RlcCcgW256TWludXRlU3RlcF09J256TWludXRlU3RlcCdcclxuICAgICAgICAgICAgICAgIFtuelNlY29uZFN0ZXBdPSduelNlY29uZFN0ZXAnIFtuek9wZW5dPSduek9wZW4nIFtuelBvcHVwQ2xhc3NOYW1lXT0nbnpQb3B1cENsYXNzTmFtZSdcclxuICAgICAgICAgICAgICAgIFtuelVzZTEySG91cnNdPSduelVzZTEySG91cnMnXHJcbiAgICAgICAgICAgICAgICBbbnpQbGFjZUhvbGRlcl09J256UGxhY2VIb2xkZXInIFsobmdNb2RlbCldPSd2YWx1ZSdcclxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT0nb25OZ01vZGVsQ2hhbmdlQ2hhbmdlKCRldmVudCknXHJcbiAgICAgICAgICAgICAgICAobnpPcGVuQ2hhbmdlKT0nb25Oek9uT3BlbkNoYW5nZSgkZXZlbnQpJz5cclxuPC9uei10aW1lLXBpY2tlcj5cclxuIl19