mmhglobal-dynamicform 1.3.13 → 2.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/animations/component-animations.mjs +12 -0
- package/esm2020/lib/components/buttonfieldbase.component.mjs +62 -0
- package/esm2020/lib/components/containerfieldbase.component.mjs +42 -0
- package/esm2020/lib/components/datalistingfieldbase.component.mjs +138 -0
- package/esm2020/lib/components/fieldbase.component.mjs +90 -0
- package/esm2020/lib/components/inputfieldbase.component.mjs +78 -0
- package/esm2020/lib/directives/scrollbar.theme.directive.mjs +13 -11
- package/esm2020/lib/embed-components/input-field-addons/input-field-addons.component.mjs +69 -0
- package/esm2020/lib/input-error-message/input-error-message.component.mjs +33 -0
- package/esm2020/lib/kcard/kcard.component.mjs +84 -0
- package/esm2020/lib/mmhglobal-dynamicform.module.mjs +53 -12
- package/esm2020/lib/pipe/htmlSanitize.pipe.mjs +18 -0
- package/esm2020/lib/services/component-error-handler.service.mjs +84 -0
- package/esm2020/lib/services/main.service.mjs +173 -73
- package/esm2020/lib/services/zcomponent.debug.service.mjs +17 -8
- package/esm2020/lib/services/zcomponent.service.mjs +133 -9
- package/esm2020/lib/uiappmenucontent/uiappmenucontent.component.mjs +15 -23
- package/esm2020/lib/uicontainer/uicontainer.component.mjs +2 -2
- package/esm2020/lib/uicontent/uicontent.component.mjs +21 -9
- package/esm2020/lib/uiheader/uiheader.component.mjs +61 -28
- package/esm2020/lib/uimenucontent/uimenucontent.component.mjs +3 -3
- package/esm2020/lib/uipage/uipage.component.mjs +41 -26
- package/esm2020/lib/uivalidationmessage/uivalidationmessage.component.mjs +2 -2
- package/esm2020/lib/zbullet/zbullet.component.mjs +3 -2
- package/esm2020/lib/zbuttons/zbuttons.component.mjs +45 -91
- package/esm2020/lib/zcard/zcard.component.mjs +13 -60
- package/esm2020/lib/zcheckbox/zcheckbox.component.mjs +14 -159
- package/esm2020/lib/zchip/zchip.component.mjs +34 -64
- package/esm2020/lib/zcodeeditor/zcodeeditor.component.mjs +4 -3
- package/esm2020/lib/zdaterange/zdaterange.component.mjs +3 -3
- package/esm2020/lib/zdatetime/zdatetime.component.mjs +22 -74
- package/esm2020/lib/zdiv/zdiv.component.mjs +63 -40
- package/esm2020/lib/zdiv/zdiv.pipe.mjs +2 -2
- package/esm2020/lib/zform/zform.component.mjs +9 -7
- package/esm2020/lib/zformcontrol/zformcontrol.component.mjs +5 -3
- package/esm2020/lib/zgauge/zgauge.component.mjs +34 -70
- package/esm2020/lib/zgrid/zgrid.binding.directive.mjs +32 -30
- package/esm2020/lib/zgrid/zgrid.component.mjs +246 -135
- package/esm2020/lib/zimg/zimg.component.mjs +44 -108
- package/esm2020/lib/zinput-container/zinput-container.component.mjs +63 -0
- package/esm2020/lib/zinput-container/zinput-container.pipe.mjs +120 -0
- package/esm2020/lib/zkcard/zkcard.component.mjs +2 -2
- package/esm2020/lib/zlabel/zlabel.component.mjs +18 -94
- package/esm2020/lib/zmfb/zmfb.component.mjs +70 -91
- package/esm2020/lib/zmodal/zmodal-mobile.component.mjs +15 -11
- package/esm2020/lib/zmodal/zmodal.component.mjs +14 -10
- package/esm2020/lib/znumeric/znumeric.component.mjs +18 -94
- package/esm2020/lib/zpostselectinput/zpostselectinput.component.mjs +35 -87
- package/esm2020/lib/zprogressbar/zprogressbar.component.mjs +59 -0
- package/esm2020/lib/zreport/zreport.component.mjs +25 -27
- package/esm2020/lib/zselectmultiple/zselectmultiple.component.mjs +39 -194
- package/esm2020/lib/ztab/ztab.component.mjs +17 -45
- package/esm2020/lib/ztab/ztab.pipe.mjs +6 -4
- package/esm2020/lib/ztext/ztext.component.mjs +20 -180
- package/esm2020/lib/ztextarea/ztextarea.component.mjs +23 -101
- package/esm2020/lib/ztexteditor/ztexteditor.component.mjs +3 -2
- package/esm2020/lib/ztree/ztree.component.mjs +25 -41
- package/esm2020/lib/ztreelist/ztreelist.component.mjs +104 -143
- package/esm2020/lib/zudf/zudf.component.mjs +12 -8
- package/esm2020/lib/zupload/zupload.component.mjs +18 -39
- package/esm2020/lib/zworkflowbuttons/zworkflowbuttons.component.mjs +45 -77
- package/esm2020/public-api.mjs +15 -2
- package/fesm2015/mmhglobal-dynamicform.mjs +4529 -4392
- package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -1
- package/fesm2020/mmhglobal-dynamicform.mjs +4496 -4367
- package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -1
- package/lib/animations/component-animations.d.ts +1 -0
- package/lib/components/buttonfieldbase.component.d.ts +18 -0
- package/lib/components/containerfieldbase.component.d.ts +19 -0
- package/lib/components/datalistingfieldbase.component.d.ts +30 -0
- package/lib/components/fieldbase.component.d.ts +30 -0
- package/lib/components/inputfieldbase.component.d.ts +19 -0
- package/lib/embed-components/input-field-addons/input-field-addons.component.d.ts +16 -0
- package/lib/input-error-message/input-error-message.component.d.ts +15 -0
- package/lib/kcard/kcard.component.d.ts +21 -0
- package/lib/mmhglobal-dynamicform.module.d.ts +40 -32
- package/lib/pipe/htmlSanitize.pipe.d.ts +10 -0
- package/lib/services/component-error-handler.service.d.ts +14 -0
- package/lib/services/main.service.d.ts +23 -5
- package/lib/services/zcomponent.debug.service.d.ts +4 -1
- package/lib/services/zcomponent.service.d.ts +20 -4
- package/lib/uiappmenucontent/uiappmenucontent.component.d.ts +4 -3
- package/lib/uicontent/uicontent.component.d.ts +6 -2
- package/lib/uiheader/uiheader.component.d.ts +13 -9
- package/lib/zbuttons/zbuttons.component.d.ts +11 -20
- package/lib/zcard/zcard.component.d.ts +6 -20
- package/lib/zcheckbox/zcheckbox.component.d.ts +6 -36
- package/lib/zchip/zchip.component.d.ts +7 -16
- package/lib/zdatetime/zdatetime.component.d.ts +6 -14
- package/lib/zdiv/zdiv.component.d.ts +11 -18
- package/lib/zformcontrol/zformcontrol.component.d.ts +2 -1
- package/lib/zgauge/zgauge.component.d.ts +11 -14
- package/lib/zgrid/zgrid.binding.directive.d.ts +4 -2
- package/lib/zgrid/zgrid.component.d.ts +26 -27
- package/lib/zimg/zimg.component.d.ts +12 -31
- package/lib/zinput-container/zinput-container.component.d.ts +26 -0
- package/lib/zinput-container/zinput-container.pipe.d.ts +20 -0
- package/lib/zlabel/zlabel.component.d.ts +6 -25
- package/lib/zmfb/zmfb.component.d.ts +12 -20
- package/lib/zmodal/zmodal-mobile.component.d.ts +4 -1
- package/lib/zmodal/zmodal.component.d.ts +4 -1
- package/lib/znumeric/znumeric.component.d.ts +7 -29
- package/lib/zpostselectinput/zpostselectinput.component.d.ts +9 -19
- package/lib/zprogressbar/zprogressbar.component.d.ts +28 -0
- package/lib/zreport/zreport.component.d.ts +8 -11
- package/lib/zselectmultiple/zselectmultiple.component.d.ts +10 -35
- package/lib/ztab/ztab.component.d.ts +6 -19
- package/lib/ztext/ztext.component.d.ts +7 -35
- package/lib/ztextarea/ztextarea.component.d.ts +9 -27
- package/lib/ztree/ztree.component.d.ts +6 -12
- package/lib/ztreelist/ztreelist.component.d.ts +17 -27
- package/lib/zupload/zupload.component.d.ts +6 -13
- package/lib/zworkflowbuttons/zworkflowbuttons.component.d.ts +6 -20
- package/package.json +1 -1
- package/public-api.d.ts +14 -1
|
@@ -53,10 +53,10 @@ export class ZdaterangeComponent {
|
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
ZdaterangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ZdaterangeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
56
|
-
ZdaterangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ZdaterangeComponent, selector: "app-zdaterange", inputs: { data: "data", group: "group", form: "form" }, viewQueries: [{ propertyName: "zdaterange", first: true, predicate: ["zdaterange"], descendants: true }], ngImport: i0, template: "<ion-item [formGroup]=\"form\" *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <ion-label [attr.for]=\"data.Value\" *ngIf=\"data.ShowLabel === undefined || data.ShowLabel\" position=\"stacked\">\r\n {{data.Label}} <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\" color=\"danger\">*</ion-text>\r\n </ion-label>\r\n <div class=\"ion-row\" style=\"justify-content: space-between; width: 100%\">\r\n <span style=\"flex: 1;\">\r\n <kendo-daterange #zdaterange class=\"ion-row\">\r\n <!-- <label style=\"flex: 1;\"> -->\r\n <!-- <span class=\"label\">Start</span> -->\r\n <kendo-dateinput style=\"flex: 1;\" kendoDateRangeStartInput [(value)]=\"range.start\"
|
|
56
|
+
ZdaterangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ZdaterangeComponent, selector: "app-zdaterange", inputs: { data: "data", group: "group", form: "form" }, viewQueries: [{ propertyName: "zdaterange", first: true, predicate: ["zdaterange"], descendants: true }], ngImport: i0, template: "<ion-item [formGroup]=\"form\" *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <ion-label [attr.for]=\"data.Value\" *ngIf=\"data.ShowLabel === undefined || data.ShowLabel\" position=\"stacked\">\r\n {{data.Label}} <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\" color=\"danger\">*</ion-text>\r\n </ion-label>\r\n <div class=\"ion-row\" style=\"justify-content: space-between; width: 100%\">\r\n <span style=\"flex: 1;\">\r\n <kendo-daterange #zdaterange class=\"ion-row\">\r\n <!-- <label style=\"flex: 1;\"> -->\r\n <!-- <span class=\"label\">Start</span> -->\r\n <kendo-dateinput style=\"flex: 1;\" kendoDateRangeStartInput [(value)]=\"range.start\"\r\n class=\"notmobile-input-field\"\r\n [attr.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"></kendo-dateinput>\r\n <!-- </label> -->\r\n <!-- <label style=\"flex: 1;\"> -->\r\n <!-- <span class=\"label\">End</span> -->\r\n <!-- <kendo-dateinput style=\"flex: 1;\" kendoDateRangeEndInput [(value)]=\"range.end\"></kendo-dateinput> -->\r\n <!-- </label> -->\r\n\r\n <kendo-daterange-popup [animate]=\"false\"></kendo-daterange-popup>\r\n </kendo-daterange>\r\n </span>\r\n <app-uivalidationmessage [group]=\"group\" [data]=\"data\" [form]=\"form\"></app-uivalidationmessage>\r\n </div>\r\n</ion-item>\r\n", styles: [":host ::ng-deep kendo-daterange{font-size:var(--content-font-size)}:host ::ng-deep kendo-daterange .k-picker-wrap .k-dateinput .k-dateinput-wrap{margin:auto}:host ::ng-deep kendo-daterange:focus-within{box-shadow:0 0 3px 1px var(--ion-color-primary)}.item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}.k-dateinput{color:var(--z-text-color)}:host ::ng-deep kendo-dateinput{padding-top:5px;font-size:14px}\n"], components: [{ 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"] }, { type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { type: i2.DateRangeComponent, selector: "kendo-daterange" }, { type: i2.DateInputComponent, selector: "kendo-dateinput", inputs: ["focusableId", "disabled", "readonly", "title", "tabindex", "role", "ariaReadOnly", "format", "placeholder", "steps", "rangeValidation", "autoCorrect", "incompleteDateValidation", "twoDigitYearMax", "spinners", "isPopupOpen", "hasPopup", "tabIndex", "value", "size", "rounded", "fillMode", "formatPlaceholder", "max", "min"], outputs: ["valueChange", "valueUpdate", "focus", "blur"], exportAs: ["kendo-dateinput"] }, { type: i2.DateRangePopupComponent, selector: "kendo-daterange-popup", inputs: ["animate", "collision", "anchor", "anchorAlign", "appendTo", "popupAlign", "margin"], outputs: ["open", "close", "blur", "focus", "cancel"], exportAs: ["kendo-daterange-popup"] }, { type: i3.UivalidationmessageComponent, selector: "app-uivalidationmessage", inputs: ["group", "data", "form"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.DateRangeStartInputDirective, selector: "[kendoDateRangeStartInput]", inputs: ["navigateCalendarOnFocus", "autoCorrectOn"] }] });
|
|
57
57
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ZdaterangeComponent, decorators: [{
|
|
58
58
|
type: Component,
|
|
59
|
-
args: [{ selector: 'app-zdaterange', template: "<ion-item [formGroup]=\"form\" *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <ion-label [attr.for]=\"data.Value\" *ngIf=\"data.ShowLabel === undefined || data.ShowLabel\" position=\"stacked\">\r\n {{data.Label}} <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\" color=\"danger\">*</ion-text>\r\n </ion-label>\r\n <div class=\"ion-row\" style=\"justify-content: space-between; width: 100%\">\r\n <span style=\"flex: 1;\">\r\n <kendo-daterange #zdaterange class=\"ion-row\">\r\n <!-- <label style=\"flex: 1;\"> -->\r\n <!-- <span class=\"label\">Start</span> -->\r\n <kendo-dateinput style=\"flex: 1;\" kendoDateRangeStartInput [(value)]=\"range.start\"
|
|
59
|
+
args: [{ selector: 'app-zdaterange', template: "<ion-item [formGroup]=\"form\" *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <ion-label [attr.for]=\"data.Value\" *ngIf=\"data.ShowLabel === undefined || data.ShowLabel\" position=\"stacked\">\r\n {{data.Label}} <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\" color=\"danger\">*</ion-text>\r\n </ion-label>\r\n <div class=\"ion-row\" style=\"justify-content: space-between; width: 100%\">\r\n <span style=\"flex: 1;\">\r\n <kendo-daterange #zdaterange class=\"ion-row\">\r\n <!-- <label style=\"flex: 1;\"> -->\r\n <!-- <span class=\"label\">Start</span> -->\r\n <kendo-dateinput style=\"flex: 1;\" kendoDateRangeStartInput [(value)]=\"range.start\"\r\n class=\"notmobile-input-field\"\r\n [attr.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"></kendo-dateinput>\r\n <!-- </label> -->\r\n <!-- <label style=\"flex: 1;\"> -->\r\n <!-- <span class=\"label\">End</span> -->\r\n <!-- <kendo-dateinput style=\"flex: 1;\" kendoDateRangeEndInput [(value)]=\"range.end\"></kendo-dateinput> -->\r\n <!-- </label> -->\r\n\r\n <kendo-daterange-popup [animate]=\"false\"></kendo-daterange-popup>\r\n </kendo-daterange>\r\n </span>\r\n <app-uivalidationmessage [group]=\"group\" [data]=\"data\" [form]=\"form\"></app-uivalidationmessage>\r\n </div>\r\n</ion-item>\r\n", styles: [":host ::ng-deep kendo-daterange{font-size:var(--content-font-size)}:host ::ng-deep kendo-daterange .k-picker-wrap .k-dateinput .k-dateinput-wrap{margin:auto}:host ::ng-deep kendo-daterange:focus-within{box-shadow:0 0 3px 1px var(--ion-color-primary)}.item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}.k-dateinput{color:var(--z-text-color)}:host ::ng-deep kendo-dateinput{padding-top:5px;font-size:14px}\n"] }]
|
|
60
60
|
}], ctorParameters: function () { return []; }, propDecorators: { data: [{
|
|
61
61
|
type: Input
|
|
62
62
|
}], group: [{
|
|
@@ -67,4 +67,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
67
67
|
type: ViewChild,
|
|
68
68
|
args: ['zdaterange']
|
|
69
69
|
}] } });
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemRhdGVyYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96ZGF0ZXJhbmdlL3pkYXRlcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemRhdGVyYW5nZS96ZGF0ZXJhbmdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBT3ZELDJDQUEyQztBQUMzQyxPQUFPLEVBQ1csb0JBQW9CLEVBQ3hCLGdCQUFnQixFQUM3QixNQUFNLGlCQUFpQixDQUFDOzs7Ozs7O0FBUXpCLE1BQU0sT0FBTyxtQkFBbUI7SUFTOUI7UUFKQSw0RUFBNEU7UUFDNUUsVUFBSyxHQUE4QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBQyxDQUFDO1FBQzdELHdCQUFtQixHQUFHLElBQUksb0JBQW9CLEVBQUUsQ0FBQztRQW9DMUMsY0FBUyxHQUFHLENBQUMsTUFBZSxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUNoRCxDQUFDLENBQUE7UUFFTSxlQUFVLEdBQUcsQ0FBQyxNQUFlLEVBQUUsRUFBRTtZQUN0QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztZQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDN0IsQ0FBQyxDQUFBO1FBRU0sZUFBVSxHQUFHLENBQUMsTUFBZSxFQUFFLEVBQUU7WUFDdEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7WUFDN0MsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkgsQ0FBQyxDQUFBO0lBOUNlLENBQUM7SUFFakIsUUFBUTtRQUNOLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXpDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsRCxNQUFNLGNBQWMsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEQsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRTlDLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDL0UsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztRQUMzRSxpQkFBaUI7UUFDakIscUJBQXFCO1FBQ3JCLGdCQUFnQjtRQUNoQixJQUFJO1FBR0osTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pGLElBQUksT0FBTyxFQUFFO1lBQ1gsSUFBSSxPQUFPLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ2hFO1NBQ0Y7SUFFSCxDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQVMsRUFBRSxHQUFTO1FBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ3ZCLEtBQUssRUFBRSxHQUFHO1lBQ1YsR0FBRyxFQUFFLEdBQUc7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDOztpSEF6Q1UsbUJBQW1CO3FHQUFuQixtQkFBbUIsd05DckJoQyxpbERBd0JBOzRGREhhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxnQkFBZ0I7MEVBS2pCLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUMwQixVQUFVO3NCQUF6QyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbi8qKioqKioqKioqIElvbmljICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBQbHVnaW4gKioqKioqKioqKi9cclxuaW1wb3J0IHsgRGF0ZVJhbmdlU2VydmljZSB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWRhdGVpbnB1dHMnO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBcclxuICBaRmllbGQsIFpHcm91cCwgWkNvbXBvbmVudFByb3BlcnRpZXMsXHJcbiAgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciBcclxufSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXpkYXRlcmFuZ2UnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi96ZGF0ZXJhbmdlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi96ZGF0ZXJhbmdlLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBaZGF0ZXJhbmdlQ29tcG9uZW50IGltcGxlbWVudHMgWkNvbXBvbmVudCwgT25Jbml0IHtcclxuICBASW5wdXQoKSBkYXRhOiBaRmllbGQ7XHJcbiAgQElucHV0KCkgZ3JvdXA6IFpHcm91cDtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgQFZpZXdDaGlsZCgnemRhdGVyYW5nZScpIHB1YmxpYyB6ZGF0ZXJhbmdlOiBEYXRlUmFuZ2VTZXJ2aWNlO1xyXG4gIC8vIEBWaWV3Q2hpbGQoJ2VuZERhdGVJbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBlbmRJbnB1dDogRWxlbWVudFJlZjtcclxuICByYW5nZTogeyBzdGFydDogRGF0ZSwgZW5kOiBEYXRlfSA9IHsgc3RhcnQ6IG51bGwsIGVuZDogbnVsbH07XHJcbiAgY29tcG9uZW50UHJvcGVydGllcyA9IG5ldyBaQ29tcG9uZW50UHJvcGVydGllcygpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIFpDb21wb25lbnRIZWxwZXIuc2V0Q29tcG9uZW50UHJvcGVydGllcyh0aGlzKTtcclxuICAgIFpDb21wb25lbnRIZWxwZXIucmVnaXN0ZXJDb21wb25lbnQodGhpcyk7XHJcblxyXG4gICAgY29uc3QgcmFuZ2VEYXRlQXJyYXkgPSB0aGlzLmRhdGEuVmFsdWUuc3BsaXQoJywnKTtcclxuICAgIGNvbnN0IGZyb21EYXRlU3RyaW5nID0gcmFuZ2VEYXRlQXJyYXlbMF0udHJpbSgpO1xyXG4gICAgY29uc3QgdG9EYXRlU3RyaW5nID0gcmFuZ2VEYXRlQXJyYXlbMV0udHJpbSgpO1xyXG4gIFxyXG4gICAgY29uc3QgZnJvbURhdGUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZnJvbURhdGVTdHJpbmcpO1xyXG4gICAgY29uc3QgdG9EYXRlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIHRvRGF0ZVN0cmluZyk7XHJcbiAgICAvLyB0aGlzLnJhbmdlID0ge1xyXG4gICAgLy8gICBzdGFydDogZnJvbURhdGUsXHJcbiAgICAvLyAgIGVuZDogdG9EYXRlXHJcbiAgICAvLyB9XHJcblxyXG5cclxuICAgIGNvbnN0IG9wdGlvbnMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgdGhpcy5kYXRhLk9wdGlvbnMpO1xyXG4gICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgaWYgKG9wdGlvbnMubWluICYmIG9wdGlvbnMubWF4KSB7XHJcbiAgICAgICAgdGhpcy5zZXROZXdSYW5nZShuZXcgRGF0ZShvcHRpb25zLm1pbiksIG5ldyBEYXRlKG9wdGlvbnMubWF4KSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBzZXROZXdSYW5nZShtaW46IERhdGUsIG1heDogRGF0ZSkge1xyXG4gICAgdGhpcy56ZGF0ZXJhbmdlLnNldFJhbmdlKHtcclxuICAgICAgc3RhcnQ6IG1pbixcclxuICAgICAgZW5kOiBtYXhcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldEVuYWJsZSA9IChzdGF0dXM6IGJvb2xlYW4pID0+IHtcclxuICAgIHRoaXMuY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5ID0gIXN0YXR1cztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRWaXNpYmxlID0gKHN0YXR1czogYm9vbGVhbikgPT4ge1xyXG4gICAgdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZSA9IHN0YXR1cztcclxuICAgIHRoaXMuZGF0YS5WaXNpYmxlID0gc3RhdHVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFJlcXVpcmUgPSAoc3RhdHVzOiBib29sZWFuKSA9PiB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZCA9IHN0YXR1cztcclxuICAgIFpDb21wb25lbnRIZWxwZXIuY2hhbmdlVmFsaWRhdG9yKHN0YXR1cywgdGhpcy5ncm91cCwgdGhpcy5kYXRhLlZhbHVlLCB0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMsIFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGlvbi1pdGVtIFtmb3JtR3JvdXBdPVwiZm9ybVwiICpuZ0lmPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGUpXCI+XHJcbiAgPGlvbi1sYWJlbCBbYXR0ci5mb3JdPVwiZGF0YS5WYWx1ZVwiICpuZ0lmPVwiZGF0YS5TaG93TGFiZWwgPT09IHVuZGVmaW5lZCB8fCBkYXRhLlNob3dMYWJlbFwiIHBvc2l0aW9uPVwic3RhY2tlZFwiPlxyXG4gICAge3tkYXRhLkxhYmVsfX0gPGlvbi10ZXh0ICpuZ0lmPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlcXVpcmVkRmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVxdWlyZWRGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVxdWlyZWQpXCIgY29sb3I9XCJkYW5nZXJcIj4qPC9pb24tdGV4dD5cclxuICA8L2lvbi1sYWJlbD5cclxuICA8ZGl2IGNsYXNzPVwiaW9uLXJvd1wiIHN0eWxlPVwianVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB3aWR0aDogMTAwJVwiPlxyXG4gICAgPHNwYW4gc3R5bGU9XCJmbGV4OiAxO1wiPlxyXG4gICAgICA8a2VuZG8tZGF0ZXJhbmdlICN6ZGF0ZXJhbmdlIGNsYXNzPVwiaW9uLXJvd1wiPlxyXG4gICAgICAgIDwhLS0gPGxhYmVsIHN0eWxlPVwiZmxleDogMTtcIj4gLS0+XHJcbiAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cImxhYmVsXCI+U3RhcnQ8L3NwYW4+IC0tPlxyXG4gICAgICAgIDxrZW5kby1kYXRlaW5wdXQgc3R5bGU9XCJmbGV4OiAxO1wiIGtlbmRvRGF0ZVJhbmdlU3RhcnRJbnB1dCBbKHZhbHVlKV09XCJyYW5nZS5zdGFydFwiXHJcbiAgICAgICAgY2xhc3M9XCJub3Rtb2JpbGUtaW5wdXQtZmllbGRcIlxyXG4gICAgICAgIFthdHRyLmRpc2FibGVkXT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiPjwva2VuZG8tZGF0ZWlucHV0PlxyXG4gICAgICAgIDwhLS0gPC9sYWJlbD4gLS0+XHJcbiAgICAgICAgPCEtLSA8bGFiZWwgc3R5bGU9XCJmbGV4OiAxO1wiPiAtLT5cclxuICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5FbmQ8L3NwYW4+IC0tPlxyXG4gICAgICAgIDwhLS0gPGtlbmRvLWRhdGVpbnB1dCBzdHlsZT1cImZsZXg6IDE7XCIga2VuZG9EYXRlUmFuZ2VFbmRJbnB1dCBbKHZhbHVlKV09XCJyYW5nZS5lbmRcIj48L2tlbmRvLWRhdGVpbnB1dD4gLS0+XHJcbiAgICAgICAgPCEtLSA8L2xhYmVsPiAtLT5cclxuXHJcbiAgICAgICAgPGtlbmRvLWRhdGVyYW5nZS1wb3B1cCBbYW5pbWF0ZV09XCJmYWxzZVwiPjwva2VuZG8tZGF0ZXJhbmdlLXBvcHVwPlxyXG4gICAgICA8L2tlbmRvLWRhdGVyYW5nZT5cclxuICAgIDwvc3Bhbj5cclxuICAgIDxhcHAtdWl2YWxpZGF0aW9ubWVzc2FnZSBbZ3JvdXBdPVwiZ3JvdXBcIiBbZGF0YV09XCJkYXRhXCIgW2Zvcm1dPVwiZm9ybVwiPjwvYXBwLXVpdmFsaWRhdGlvbm1lc3NhZ2U+XHJcbiAgPC9kaXY+XHJcbjwvaW9uLWl0ZW0+XHJcbiJdfQ==
|
|
@@ -1,33 +1,19 @@
|
|
|
1
1
|
/********** Angular **********/
|
|
2
|
-
import { Component
|
|
3
|
-
import { Validators } from "@angular/forms";
|
|
2
|
+
import { Component } from "@angular/core";
|
|
4
3
|
/********** Component & Service **********/
|
|
5
|
-
import { ZComponentHelper
|
|
4
|
+
import { ZComponentHelper } from "mmhglobal-zcore";
|
|
5
|
+
import { InputFieldBase } from "../components/inputfieldbase.component";
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "
|
|
8
|
-
import * as i2 from "@
|
|
9
|
-
import * as i3 from "
|
|
10
|
-
import * as i4 from "@angular/
|
|
11
|
-
import * as i5 from "@angular/
|
|
7
|
+
import * as i1 from "../services/zcomponent.service";
|
|
8
|
+
import * as i2 from "@ionic/angular";
|
|
9
|
+
import * as i3 from "@progress/kendo-angular-dateinputs";
|
|
10
|
+
import * as i4 from "@angular/forms";
|
|
11
|
+
import * as i5 from "@angular/common";
|
|
12
12
|
import * as i6 from "./dateParser.pipe";
|
|
13
|
-
export class ZdatetimeComponent {
|
|
14
|
-
constructor() {
|
|
13
|
+
export class ZdatetimeComponent extends InputFieldBase {
|
|
14
|
+
constructor(compService) {
|
|
15
|
+
super(compService);
|
|
15
16
|
this.dateFormat = "DD-MMM-YYYY";
|
|
16
|
-
// dateValue = null;
|
|
17
|
-
this.componentProperties = new ZComponentProperties();
|
|
18
|
-
this.setEnable = (status) => {
|
|
19
|
-
const fc = this.group.form.controls[this.data.Value];
|
|
20
|
-
status ? fc.enable() : fc.disable();
|
|
21
|
-
this.componentProperties.isReadOnly = !status;
|
|
22
|
-
};
|
|
23
|
-
this.setVisible = (status) => {
|
|
24
|
-
this.componentProperties.isVisible = status;
|
|
25
|
-
this.data.Visible = status;
|
|
26
|
-
};
|
|
27
|
-
this.setRequire = (status) => {
|
|
28
|
-
this.componentProperties.isRequired = status;
|
|
29
|
-
ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);
|
|
30
|
-
};
|
|
31
17
|
this.SetDateRange = (MinDate, MaxDate) => {
|
|
32
18
|
var thisComponent = this;
|
|
33
19
|
if (!isNaN(Date.parse(MinDate))) {
|
|
@@ -39,18 +25,17 @@ export class ZdatetimeComponent {
|
|
|
39
25
|
};
|
|
40
26
|
}
|
|
41
27
|
ngOnInit() {
|
|
42
|
-
|
|
43
|
-
ZComponentHelper.registerComponent(this);
|
|
28
|
+
super.setupInnerField();
|
|
44
29
|
if (this.data.Type === "ztime") {
|
|
45
30
|
this.dateFormat = "HH:mm";
|
|
46
31
|
}
|
|
47
|
-
if (this.data.Type === "zuidatetime") {
|
|
32
|
+
else if (this.data.Type === "zuidatetime") {
|
|
48
33
|
this.dateFormat = "DD-MMM-YYYY h:mm A";
|
|
49
34
|
}
|
|
50
|
-
if (this.data.Type === "zuitime") {
|
|
35
|
+
else if (this.data.Type === "zuitime") {
|
|
51
36
|
this.dateFormat = "HH:mm:ss";
|
|
52
37
|
}
|
|
53
|
-
if (this.data.Type === "zshortdate") {
|
|
38
|
+
else if (this.data.Type === "zshortdate") {
|
|
54
39
|
this.dateFormat = "MMM-YYYY";
|
|
55
40
|
}
|
|
56
41
|
// if (this.group.zModel[this.data.Value]) {
|
|
@@ -64,17 +49,6 @@ export class ZdatetimeComponent {
|
|
|
64
49
|
.replace("h", "H")
|
|
65
50
|
.replace("A", "a");
|
|
66
51
|
}
|
|
67
|
-
getReadOnlyValue() {
|
|
68
|
-
const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.ReadOnly, this.group);
|
|
69
|
-
if (typeof readOnlyValue === "function") {
|
|
70
|
-
return readOnlyValue();
|
|
71
|
-
}
|
|
72
|
-
return readOnlyValue;
|
|
73
|
-
}
|
|
74
|
-
isMobileScreen() {
|
|
75
|
-
const v = ZComponentHelper.isMobileScreen();
|
|
76
|
-
return v;
|
|
77
|
-
}
|
|
78
52
|
getDateValue() {
|
|
79
53
|
const value = this.form.controls[this.data.Value].value;
|
|
80
54
|
if (value) {
|
|
@@ -91,29 +65,9 @@ export class ZdatetimeComponent {
|
|
|
91
65
|
ZComponentHelper.setModelValue(this.data.Value, myDate, this.group);
|
|
92
66
|
}
|
|
93
67
|
onChange(value) {
|
|
94
|
-
|
|
95
|
-
// "date change ",
|
|
96
|
-
// value.toISOString(),
|
|
97
|
-
// " date value: ",
|
|
98
|
-
// new Date(value.toISOString())
|
|
99
|
-
// );
|
|
100
|
-
// // this.group.zModel[this.data.Value] = value.toISOString();
|
|
101
|
-
// const v = value.toISOString();
|
|
102
|
-
// this.dateValue = new Date(value.toISOString());
|
|
103
|
-
if (value === null) {
|
|
104
|
-
ZComponentHelper.setModelValue(this.data.Value, value, this.group);
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
ZComponentHelper.setModelValue(this.data.Value, value.toISOString(), this.group);
|
|
108
|
-
const fc = this.form.controls[this.data.Value];
|
|
109
|
-
fc.setValue(value.toISOString());
|
|
110
|
-
}
|
|
111
|
-
this.group.subject.next({
|
|
112
|
-
type: "onChange",
|
|
113
|
-
target: this.data.OnChange,
|
|
114
|
-
data: value,
|
|
115
|
-
});
|
|
68
|
+
super.onChange(null, value?.toISOString());
|
|
116
69
|
}
|
|
70
|
+
//#region Date picker handlePreventableEvent
|
|
117
71
|
handlePreventableEvent(event, eventName, preventDefault) {
|
|
118
72
|
// keep "this" to use in binding.
|
|
119
73
|
var thisComponent = this;
|
|
@@ -270,16 +224,10 @@ export class ZdatetimeComponent {
|
|
|
270
224
|
}, 500);
|
|
271
225
|
}
|
|
272
226
|
}
|
|
273
|
-
ZdatetimeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ZdatetimeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
274
|
-
ZdatetimeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ZdatetimeComponent, selector: "app-zdatetime",
|
|
227
|
+
ZdatetimeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ZdatetimeComponent, deps: [{ token: i1.ZComponentService }], target: i0.ɵɵFactoryTarget.Component });
|
|
228
|
+
ZdatetimeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ZdatetimeComponent, selector: "app-zdatetime", usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"form\" class=\"zdate-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <ion-datetime *ngIf=\"isMobileScreen()\" style=\"padding: 8px 0px;\"\r\n [required]=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\"\r\n [placeholder]=\"data.PlaceHolder\" [id]=\"data.Value\" [displayFormat]=\"dateFormat\" [pickerFormat]=\"dateFormat\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [formControlName]=\"data.Value\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [style]=\"componentProperties.style.style1\" class=\"e1tag-style1\">\r\n </ion-datetime>\r\n <kendo-datepicker *ngIf=\"!isMobileScreen() && dateFormat==='MMM-YYYY'\" [id]=\"data.Value\"\r\n [value]=\"form.get(data.Value).value | dateParser\" (valueChange)=\"onChange($event)\" [min]=\"data.MinDate\"\r\n [max]=\"data.MaxDate\" [activeView]=\"'year'\" [bottomView]=\"'year'\" class=\"input-field e1tag-style1\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [format]=\"toKendoDateFormat()\" [placeholder]=\"data.PlaceHolder\" [style]=\"componentProperties.style.style1\">\r\n </kendo-datepicker>\r\n <kendo-datepicker *ngIf=\"!isMobileScreen() && dateFormat==='DD-MMM-YYYY'\" [id]=\"data.Value\"\r\n [value]=\"form.get(data.Value).value | dateParser\" (valueChange)=\"onChange($event)\" [min]=\"data.MinDate\"\r\n [max]=\"data.MaxDate\" class=\"input-field e1tag-style1\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [format]=\"toKendoDateFormat()\" [placeholder]=\"data.PlaceHolder\" [style]=\"componentProperties.style.style1\"></kendo-datepicker>\r\n <kendo-datetimepicker *ngIf=\"!isMobileScreen() && dateFormat==='DD-MMM-YYYY h:mm A'\" [id]=\"data.Value\"\r\n [value]=\"form.get(data.Value).value | dateParser\" (valueChange)=\"onChange($event)\"\r\n (open)=\"handlePreventableEvent($event, 'open', false)\" class=\"input-field e1tag-style1\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [format]=\"toKendoDateFormat()\" [placeholder]=\"data.PlaceHolder\" [style]=\"componentProperties.style.style1\">\r\n <ng-template kendoCalendarMonthCellTemplate let-date>\r\n <span (click)=\"GetDate(date)\">{{date.getDate()}}</span>\r\n </ng-template>\r\n </kendo-datetimepicker>\r\n <kendo-timepicker *ngIf=\"!isMobileScreen() && (dateFormat==='HH:mm:ss' || dateFormat==='HH:mm')\" [id]=\"data.Value\"\r\n [value]=\"form.get(data.Value).value | dateParser\" (valueChange)=\"onChange($event)\" class=\"input-field e1tag-style1\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [format]=\"toKendoDateFormat()\" [placeholder]=\"data.PlaceHolder\" [style]=\"componentProperties.style.style1\"></kendo-timepicker>\r\n</div>\r\n", styles: [".gridInlineEdit{--background: transparent}.item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}.k-datepicker{color:var(--z-text-color)}:host ::ng-deep kendo-dateinput{font-size:var(--content-font-size)}:host ::ng-deep kendo-dateinput .k-picker-wrap .k-dateinput .k-dateinput-wrap{margin:auto}:host ::ng-deep kendo-datetimepicker .k-picker-wrap .k-dateinput .k-dateinput-wrap,:host ::ng-deep kendo-datepicker .k-picker-wrap .k-dateinput .k-dateinput-wrap,:host ::ng-deep kendo-timepicker .k-picker-wrap .k-dateinput .k-dateinput-wrap{margin:auto}:host ::ng-deep kendo-datetimepicker.disabled .k-picker-wrap,:host ::ng-deep kendo-datetimepicker.disabled .k-dateinput .k-dateinput-wrap,:host ::ng-deep kendo-datepicker.disabled .k-picker-wrap,:host ::ng-deep kendo-datepicker.disabled .k-dateinput .k-dateinput-wrap,:host ::ng-deep kendo-timepicker.disabled .k-picker-wrap,:host ::ng-deep kendo-timepicker.disabled .k-dateinput .k-dateinput-wrap{background:transparent!important}:host ::ng-deep kendo-datetimepicker:focus-within,:host ::ng-deep kendo-datepicker:focus-within,:host ::ng-deep kendo-timepicker:focus-within{box-shadow:0 0 3px 1px var(--ion-color-primary)}\n"], components: [{ type: i2.IonDatetime, selector: "ion-datetime", inputs: ["cancelText", "clearText", "color", "dayValues", "disabled", "doneText", "firstDayOfWeek", "hourCycle", "hourValues", "isDateEnabled", "locale", "max", "min", "minuteValues", "mode", "monthValues", "name", "presentation", "readonly", "showClearButton", "showDefaultButtons", "showDefaultTimeLabel", "showDefaultTitle", "size", "value", "yearValues"] }, { type: i3.DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "navigation", "min", "max", "incompleteDateValidation", "focusedDate", "format", "twoDigitYearMax", "placeholder", "tabindex", "title", "rangeValidation", "disabledDatesValidation", "weekNumber", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "popupSettings", "value", "tabIndex", "disabledDates", "size", "rounded", "fillMode", "formatPlaceholder"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-datepicker"] }, { type: i3.DateTimePickerComponent, selector: "kendo-datetimepicker", inputs: ["twoDigitYearMax", "focusableId", "title", "disabled", "readonly", "readOnlyInput", "cancelButton", "steps", "calendarType", "animateCalendarNavigation", "weekNumber", "rangeValidation", "disabledDatesValidation", "incompleteDateValidation", "value", "format", "tabindex", "disabledDates", "popupSettings", "min", "max", "defaultTab", "size", "rounded", "fillMode", "formatPlaceholder", "placeholder", "focusedDate"], outputs: ["valueChange", "open", "close", "focus", "blur"], exportAs: ["kendo-datetimepicker"] }, { type: i3.TimePickerComponent, selector: "kendo-timepicker", inputs: ["focusableId", "disabled", "readonly", "readOnlyInput", "format", "placeholder", "incompleteDateValidation", "cancelButton", "nowButton", "tabindex", "title", "rangeValidation", "min", "max", "steps", "popupSettings", "tabIndex", "value", "size", "rounded", "fillMode", "formatPlaceholder"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-timepicker"] }], directives: [{ type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.SelectValueAccessor, selector: "ion-range, ion-select, ion-radio-group, ion-segment, ion-datetime" }, { type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i3.MonthCellTemplateDirective, selector: "[kendoCalendarMonthCellTemplate]" }], pipes: { "dateParser": i6.DateParserFilter } });
|
|
275
229
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ZdatetimeComponent, decorators: [{
|
|
276
230
|
type: Component,
|
|
277
|
-
args: [{ selector: "app-zdatetime", template: "<
|
|
278
|
-
}], ctorParameters: function () { return []; }
|
|
279
|
-
type: Input
|
|
280
|
-
}], group: [{
|
|
281
|
-
type: Input
|
|
282
|
-
}], form: [{
|
|
283
|
-
type: Input
|
|
284
|
-
}] } });
|
|
285
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemRhdGV0aW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pkYXRldGltZS96ZGF0ZXRpbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemRhdGV0aW1lL3pkYXRldGltZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBT3ZELDJDQUEyQztBQUMzQyxPQUFPLEVBQ08sZ0JBQWdCLEVBQ1osb0JBQW9CLEVBQ3JDLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7O0FBV3pCLE1BQU0sT0FBTyxrQkFBa0I7SUFTN0I7UUFMQSxlQUFVLEdBQUcsYUFBYSxDQUFDO1FBQzNCLG9CQUFvQjtRQUVwQix3QkFBbUIsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFtRzFDLGNBQVMsR0FBRyxDQUFDLE1BQWUsRUFBRSxFQUFFO1lBQ3JDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JELE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUNoRCxDQUFDLENBQUE7UUFFTSxlQUFVLEdBQUcsQ0FBQyxNQUFlLEVBQUUsRUFBRTtZQUN0QyxJQUFJ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QWEsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDekMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMxQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDOztnSEFuVVUsa0JBQWtCO29HQUFsQixrQkFBa0IsNkdDeEIvQix3M0tBdUVBOzRGRC9DYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZUFBZTswRUFLaEIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBQcmV2ZW50YWJsZUV2ZW50IH0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItZGF0ZWlucHV0cyc7XHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7XHJcbiAgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciwgWkNvbXBvbmVudE91dHB1dEV2ZW50LFxyXG4gIFpGaWVsZCwgWkdyb3VwLCBaQ29tcG9uZW50UHJvcGVydGllc1xyXG59IGZyb20gXCJtbWhnbG9iYWwtemNvcmVcIjtcclxuXHJcblxyXG4vLyBpbXBvcnQgKiBhcyAkIGZyb20gJ2pxdWVyeSc7XHJcbmRlY2xhcmUgdmFyICQ6IGFueTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImFwcC16ZGF0ZXRpbWVcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3pkYXRldGltZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi96ZGF0ZXRpbWUuY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBaZGF0ZXRpbWVDb21wb25lbnQgaW1wbGVtZW50cyBaQ29tcG9uZW50LCBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGRhdGE6IFpGaWVsZDtcclxuICBASW5wdXQoKSBncm91cDogWkdyb3VwO1xyXG4gIEBJbnB1dCgpIGZvcm06IEZvcm1Hcm91cDtcclxuICBkYXRlRm9ybWF0ID0gXCJERC1NTU0tWVlZWVwiO1xyXG4gIC8vIGRhdGVWYWx1ZSA9IG51bGw7XHJcblxyXG4gIGNvbXBvbmVudFByb3BlcnRpZXMgPSBuZXcgWkNvbXBvbmVudFByb3BlcnRpZXMoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnNldENvbXBvbmVudFByb3BlcnRpZXModGhpcyk7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnJlZ2lzdGVyQ29tcG9uZW50KHRoaXMpO1xyXG5cclxuICAgIGlmICh0aGlzLmRhdGEuVHlwZSA9PT0gXCJ6dGltZVwiKSB7XHJcbiAgICAgIHRoaXMuZGF0ZUZvcm1hdCA9IFwiSEg6bW1cIjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmRhdGEuVHlwZSA9PT0gXCJ6dWlkYXRldGltZVwiKSB7XHJcbiAgICAgIHRoaXMuZGF0ZUZvcm1hdCA9IFwiREQtTU1NLVlZWVkgaDptbSBBXCI7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5kYXRhLlR5cGUgPT09IFwienVpdGltZVwiKSB7XHJcbiAgICAgIHRoaXMuZGF0ZUZvcm1hdCA9IFwiSEg6bW06c3NcIjtcclxuICAgIH1cclxuXHRpZiAodGhpcy5kYXRhLlR5cGUgPT09IFwienNob3J0ZGF0ZVwiKSB7XHJcbiAgICAgIHRoaXMuZGF0ZUZvcm1hdCA9IFwiTU1NLVlZWVlcIjtcclxuICAgIH1cclxuICAgIC8vIGlmICh0aGlzLmdyb3VwLnpNb2RlbFt0aGlzLmRhdGEuVmFsdWVdKSB7XHJcbiAgICAvLyAgIHRoaXMuZGF0ZVZhbHVlID0gbmV3IERhdGUodGhpcy5ncm91cC56TW9kZWxbdGhpcy5kYXRhLlZhbHVlXSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICB0b0tlbmRvRGF0ZUZvcm1hdCgpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGVGb3JtYXRcclxuICAgICAgLnJlcGxhY2UoXCJERFwiLCBcImRkXCIpXHJcbiAgICAgIC5yZXBsYWNlKFwiWVlZWVwiLCBcInl5eXlcIilcclxuICAgICAgLnJlcGxhY2UoXCJoXCIsIFwiSFwiKVxyXG4gICAgICAucmVwbGFjZShcIkFcIiwgXCJhXCIpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmVhZE9ubHlWYWx1ZSgpIHtcclxuICAgIGNvbnN0IHJlYWRPbmx5VmFsdWUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwoXHJcbiAgICAgIHRoaXMsXHJcbiAgICAgIHRoaXMuZGF0YS5SZWFkT25seSxcclxuICAgICAgdGhpcy5ncm91cFxyXG4gICAgKTtcclxuICAgIGlmICh0eXBlb2YgcmVhZE9ubHlWYWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgIHJldHVybiByZWFkT25seVZhbHVlKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVhZE9ubHlWYWx1ZTtcclxuICB9XHJcblxyXG4gIGlzTW9iaWxlU2NyZWVuKCkge1xyXG4gICAgY29uc3QgdiA9IFpDb21wb25lbnRIZWxwZXIuaXNNb2JpbGVTY3JlZW4oKTtcclxuICAgIHJldHVybiB2O1xyXG4gIH1cclxuXHJcbiAgZ2V0RGF0ZVZhbHVlKCkge1xyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5kYXRhLlZhbHVlXS52YWx1ZTtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0RGF0ZShkYXRlOiBEYXRlKSB7XHJcbiAgICAvLyBjb252ZXJ0IHRoZSBkYXRlIHRvIElTT1N0cmluZ1xyXG4gICAgY29uc3QgbXlEYXRlID0gbmV3IERhdGUoZGF0ZSkudG9JU09TdHJpbmcoKTtcclxuICAgIC8vIGFzc2lnbiB0byB0aGUgek1vZGVsXHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnNldE1vZGVsVmFsdWUodGhpcy5kYXRhLlZhbHVlLCBteURhdGUsIHRoaXMuZ3JvdXApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2hhbmdlKHZhbHVlOiBEYXRlKTogdm9pZCB7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhcclxuICAgIC8vICAgXCJkYXRlIGNoYW5nZSBcIixcclxuICAgIC8vICAgdmFsdWUudG9JU09TdHJpbmcoKSxcclxuICAgIC8vICAgXCIgZGF0ZSB2YWx1ZTogXCIsXHJcbiAgICAvLyAgIG5ldyBEYXRlKHZhbHVlLnRvSVNPU3RyaW5nKCkpXHJcbiAgICAvLyApO1xyXG4gICAgLy8gLy8gdGhpcy5ncm91cC56TW9kZWxbdGhpcy5kYXRhLlZhbHVlXSA9IHZhbHVlLnRvSVNPU3RyaW5nKCk7XHJcbiAgICAvLyBjb25zdCB2ID0gdmFsdWUudG9JU09TdHJpbmcoKTtcclxuICAgIC8vIHRoaXMuZGF0ZVZhbHVlID0gbmV3IERhdGUodmFsdWUudG9JU09TdHJpbmcoKSk7XHJcbiAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcclxuICAgICAgWkNvbXBvbmVudEhlbHBlci5zZXRNb2RlbFZhbHVlKFxyXG4gICAgICAgIHRoaXMuZGF0YS5WYWx1ZSxcclxuICAgICAgICB2YWx1ZSxcclxuICAgICAgICB0aGlzLmdyb3VwXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBaQ29tcG9uZW50SGVscGVyLnNldE1vZGVsVmFsdWUoXHJcbiAgICAgICAgdGhpcy5kYXRhLlZhbHVlLFxyXG4gICAgICAgIHZhbHVlLnRvSVNPU3RyaW5nKCksXHJcbiAgICAgICAgdGhpcy5ncm91cFxyXG4gICAgICApO1xyXG5cclxuICAgICAgY29uc3QgZmMgPSB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5kYXRhLlZhbHVlXTtcclxuICAgICAgZmMuc2V0VmFsdWUodmFsdWUudG9JU09TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdyb3VwLnN1YmplY3QubmV4dCh7XHJcbiAgICAgIHR5cGU6IFwib25DaGFuZ2VcIixcclxuICAgICAgdGFyZ2V0OiB0aGlzLmRhdGEuT25DaGFuZ2UsXHJcbiAgICAgIGRhdGE6IHZhbHVlLFxyXG4gICAgfSBhcyBaQ29tcG9uZW50T3V0cHV0RXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldEVuYWJsZSA9IChzdGF0dXM6IGJvb2xlYW4pID0+IHtcclxuICAgIGNvbnN0IGZjID0gdGhpcy5ncm91cC5mb3JtLmNvbnRyb2xzW3RoaXMuZGF0YS5WYWx1ZV07XHJcbiAgICBzdGF0dXMgPyBmYy5lbmFibGUoKSA6IGZjLmRpc2FibGUoKTtcclxuICAgIHRoaXMuY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5ID0gIXN0YXR1cztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRWaXNpYmxlID0gKHN0YXR1czogYm9vbGVhbikgPT4ge1xyXG4gICAgdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZSA9IHN0YXR1cztcclxuICAgIHRoaXMuZGF0YS5WaXNpYmxlID0gc3RhdHVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFJlcXVpcmUgPSAoc3RhdHVzOiBib29sZWFuKSA9PiB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZCA9IHN0YXR1cztcclxuICAgIFpDb21wb25lbnRIZWxwZXIuY2hhbmdlVmFsaWRhdG9yKHN0YXR1cywgdGhpcy5ncm91cCwgdGhpcy5kYXRhLlZhbHVlLCB0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMsIFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNldERhdGVSYW5nZSA9IChNaW5EYXRlOiBzdHJpbmcsTWF4RGF0ZTogc3RyaW5nKTogYW55ID0+XHJcbiAge1xyXG4gICAgdmFyIHRoaXNDb21wb25lbnQgPSB0aGlzO1xyXG5cclxuICAgIGlmICghaXNOYU4oRGF0ZS5wYXJzZShNaW5EYXRlKSkpXHJcbiAgICB7XHJcbiAgICAgIHRoaXMuZGF0YS5NaW5EYXRlID0gbmV3IERhdGUoTWluRGF0ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzTmFOKERhdGUucGFyc2UoTWF4RGF0ZSkpKVxyXG4gICAge1xyXG4gICAgICB0aGlzLmRhdGEuTWF4RGF0ZSA9IG5ldyBEYXRlKE1heERhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVByZXZlbnRhYmxlRXZlbnQoZXZlbnQ6IFByZXZlbnRhYmxlRXZlbnQsIGV2ZW50TmFtZTogc3RyaW5nLCBwcmV2ZW50RGVmYXVsdDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgLy8ga2VlcCBcInRoaXNcIiB0byB1c2UgaW4gYmluZGluZy5cclxuICAgIHZhciB0aGlzQ29tcG9uZW50ID0gdGhpcztcclxuXHJcbiAgICAvLyBuZWVkIGEgdGltZW91dCBmb3IgdWkgdG8gZGlzcGxheSB0aGUgY2FsZW5kZXIgcG9wdXBcclxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xyXG4gICAgICAvLyBvbmx5IGF2YWlsYWJsZSB3aGVuIHBvcHVwIGlzIHNob3duLCBnZXQgdGhlIGVsZW1lbnQgYnkgY2xhc3NcclxuICAgICAgLy8gZm9yIGRhdGVcclxuICAgICAgdGhpc0NvbXBvbmVudC5kYXRlQXBwZW5kRXZlbnQodGhpc0NvbXBvbmVudCk7XHJcblxyXG4gICAgICAvLyBmb3IgdGltZVxyXG4gICAgICB0aGlzQ29tcG9uZW50LnRpbWVBcHBlbmRFdmVudCh0aGlzQ29tcG9uZW50KTtcclxuICAgIH0sIDUwMCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRhdGVBcHBlbmRFdmVudCh0aGlzQ29tcG9uZW50OiBhbnkpIHtcclxuICAgIGxldCBkYXRlQ2VsbCA9ICQoXCJ0Ym9keS5rLWNhbGVuZGFyLXRib2R5XCIpLmZpbmQoXCJ0ZC5rLWNhbGVuZGFyLXRkXCIpO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRlQ2VsbC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBub2RlID0gZGF0ZUNlbGxbaV07XHJcblxyXG4gICAgICBpZiAobm9kZS50aXRsZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgLy8gd2hlbiBkYXRlIGNsaWNrZWRcclxuICAgICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICBpZiAoIWlzTmFOKERhdGUucGFyc2Uobm9kZS50aXRsZSkpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vZGVEYXRlID0gbmV3IERhdGUobm9kZS50aXRsZSkudG9JU09TdHJpbmcoKTtcclxuICAgICAgICAgICAgLy8gYXNzaWduIHRvIHRoZSB6TW9kZWxcclxuICAgICAgICAgICAgWkNvbXBvbmVudEhlbHBlci5zZXRNb2RlbFZhbHVlKHRoaXNDb21wb25lbnQuZGF0YS5WYWx1ZSwgbm9kZURhdGUsIHRoaXNDb21wb25lbnQuZ3JvdXApO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIHRpbWVvdXQgYXBwZW5kIHRpbWUgY2xpY2sgZXZlbnRcclxuICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB0aGlzQ29tcG9uZW50LmhvdXJzT25DbGljayh0aGlzQ29tcG9uZW50KTtcclxuICAgICAgICAgICAgdGhpc0NvbXBvbmVudC5taW51dGVzT25DbGljayh0aGlzQ29tcG9uZW50KTtcclxuICAgICAgICAgICAgdGhpc0NvbXBvbmVudC5hbXBtT25DbGljayh0aGlzQ29tcG9uZW50KTtcclxuICAgICAgICAgICAgdGhpc0NvbXBvbmVudC5ub3dPbkNsaWNrKHRoaXNDb21wb25lbnQpO1xyXG4gICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFRvZGF5IGNsaWNrZWRcclxuICAgIGNvbnN0IHRvZGF5RGF0ZSA9ICQoXCJzcGFuLmstdG9kYXlcIilbMF07XHJcbiAgICB0b2RheURhdGUuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgY29uc3QgZGF0ZU5vdyA9IG5ldyBEYXRlKCkudG9KU09OKCkuc2xpY2UoMCwgMTApLnJlcGxhY2UoLy0vZywgJy8nKTtcclxuICAgICAgLy8gc2V0IHRvIE1vZGVsXHJcbiAgICAgIHRoaXNDb21wb25lbnQuc2V0RGF0ZVRpbWVUb01vZGVsKHRoaXNDb21wb25lbnQsIGRhdGVOb3cpO1xyXG5cclxuICAgICAgdGhpc0NvbXBvbmVudC5ob3Vyc09uQ2xpY2sodGhpc0NvbXBvbmVudCk7XHJcbiAgICAgIHRoaXNDb21wb25lbnQubWludXRlc09uQ2xpY2sodGhpc0NvbXBvbmVudCk7XHJcbiAgICAgIHRoaXNDb21wb25lbnQuYW1wbU9uQ2xpY2sodGhpc0NvbXBvbmVudCk7XHJcbiAgICAgIHRoaXNDb21wb25lbnQubm93T25DbGljayh0aGlzQ29tcG9uZW50KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0aW1lQXBwZW5kRXZlbnQodGhpc0NvbXBvbmVudDogYW55KSB7XHJcbiAgICB2YXIgdGltZVRhYiA9ICQoXCJidXR0b24uay1idXR0b24uay10aW1lLXRhYlwiKVswXTtcclxuICAgIHRpbWVUYWIuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgdGhpc0NvbXBvbmVudC5ob3Vyc09uQ2xpY2sodGhpc0NvbXBvbmVudCk7XHJcbiAgICAgIHRoaXNDb21wb25lbnQubWludXRlc09uQ2xpY2sodGhpc0NvbXBvbmVudCk7XHJcbiAgICAgIHRoaXNDb21wb25lbnQuYW1wbU9uQ2xpY2sodGhpc0NvbXBvbmVudCk7XHJcbiAgICAgIHRoaXNDb21wb25lbnQubm93T25DbGljayh0aGlzQ29tcG9uZW50KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBub3dPbkNsaWNrKHRoaXNDb21wb25lbnQ6IGFueSkge1xyXG4gICAgY29uc3Qgbm93VGltZSA9ICQoXCJidXR0b24uay1idXR0b24uay1iYXJlLmstdGltZS1ub3dcIilbMF07XHJcbiAgICBpZiAobm93VGltZSkge1xyXG4gICAgICBub3dUaW1lLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIC8vIGdldCBtb2RlbCBjdXJyZW50IHZhbHVlXHJcbiAgICAgICAgbGV0IHZhbHVlRGF0ZVRpbWUgPSB0aGlzQ29tcG9uZW50LmN1cnJlbnREYXRlVGltZVZhbHVlKHRoaXNDb21wb25lbnQpO1xyXG4gICAgICAgIGNvbnN0IGRhdGVUaW1lTm93ID0gbmV3IERhdGUoKTtcclxuXHJcbiAgICAgICAgLy8gY29udmVydCBjdXJyZW50IHZhbHVlIHRvIGRhdGV0aW1lXHJcbiAgICAgICAgdmFsdWVEYXRlVGltZS5zZXRIb3VycyhkYXRlVGltZU5vdy5nZXRIb3VycygpKTtcclxuICAgICAgICB2YWx1ZURhdGVUaW1lLnNldE1pbnV0ZXMoZGF0ZVRpbWVOb3cuZ2V0TWludXRlcygpKTtcclxuICAgICAgICB2YWx1ZURhdGVUaW1lLnNldFNlY29uZHMoZGF0ZVRpbWVOb3cuZ2V0U2Vjb25kcygpKTtcclxuXHJcbiAgICAgICAgLy8gc2V0IHRvIE1vZGVsXHJcbiAgICAgICAgdGhpc0NvbXBvbmVudC5zZXREYXRlVGltZVRvTW9kZWwodGhpc0NvbXBvbmVudCwgdmFsdWVEYXRlVGltZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBob3Vyc09uQ2xpY2sodGhpc0NvbXBvbmVudDogYW55KSB7XHJcbiAgICBjb25zdCB0aW1lV3JhcHBlciA9ICQoXCJkaXYuay10aW1lLWxpc3Qtd3JhcHBlclwiKS5maW5kKFwidWxcIik7XHJcbiAgICBpZiAodGltZVdyYXBwZXIubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBob3VyID0gdGltZVdyYXBwZXJbMF0uY2hpbGRyZW47XHJcblxyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhvdXIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBob3VyW2ldLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgLy8gZ2V0IGNsaWNrZWQgbm9kZSB2YWx1ZVxyXG4gICAgICAgICAgY29uc3Qgbm9kZVZhbHVlID0gZS5jdXJyZW50VGFyZ2V0LnRleHRDb250ZW50O1xyXG5cclxuICAgICAgICAgIC8vIGdldCBtb2RlbCBjdXJyZW50IHZhbHVlXHJcbiAgICAgICAgICBsZXQgdmFsdWVEYXRlVGltZSA9IHRoaXNDb21wb25lbnQuY3VycmVudERhdGVUaW1lVmFsdWUodGhpc0NvbXBvbmVudCk7XHJcblxyXG4gICAgICAgICAgLy8gc2V0IG5ldyBob3VyXHJcbiAgICAgICAgICB2YWx1ZURhdGVUaW1lLnNldEhvdXJzKG5vZGVWYWx1ZSk7XHJcblxyXG4gICAgICAgICAgLy8gc2V0IHRvIE1vZGVsXHJcbiAgICAgICAgICB0aGlzQ29tcG9uZW50LnNldERhdGVUaW1lVG9Nb2RlbCh0aGlzQ29tcG9uZW50LCB2YWx1ZURhdGVUaW1lKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtaW51dGVzT25DbGljayh0aGlzQ29tcG9uZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IHRpbWVXcmFwcGVyID0gJChcImRpdi5rLXRpbWUtbGlzdC13cmFwcGVyXCIpLmZpbmQoXCJ1bFwiKTtcclxuICAgIGlmICh0aW1lV3JhcHBlci5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IG1pbnV0ZXMgPSB0aW1lV3JhcHBlclsxXS5jaGlsZHJlbjtcclxuXHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWludXRlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIG1pbnV0ZXNbaV0uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAvLyBnZXQgY2xpY2tlZCBub2RlIHZhbHVlXHJcbiAgICAgICAgICBjb25zdCBub2RlVmFsdWUgPSBlLmN1cnJlbnRUYXJnZXQudGV4dENvbnRlbnQ7XHJcblxyXG4gICAgICAgICAgLy8gZ2V0IG1vZGVsIGN1cnJlbnQgdmFsdWVcclxuICAgICAgICAgIGNvbnN0IHZhbHVlRGF0ZVRpbWUgPSB0aGlzQ29tcG9uZW50LmN1cnJlbnREYXRlVGltZVZhbHVlKHRoaXNDb21wb25lbnQpO1xyXG5cclxuICAgICAgICAgIC8vIHNldCBuZXcgbWludXRlXHJcbiAgICAgICAgICB2YWx1ZURhdGVUaW1lLnNldE1pbnV0ZXMobm9kZVZhbHVlKTtcclxuXHJcbiAgICAgICAgICAvLyBzZXQgdG8gTW9kZWxcclxuICAgICAgICAgIHRoaXNDb21wb25lbnQuc2V0RGF0ZVRpbWVUb01vZGVsKHRoaXNDb21wb25lbnQsIHZhbHVlRGF0ZVRpbWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFtcG1PbkNsaWNrKHRoaXNDb21wb25lbnQ6IGFueSkge1xyXG4gICAgY29uc3QgdGltZVdyYXBwZXIgPSAkKFwiZGl2LmstdGltZS1saXN0LXdyYXBwZXJcIikuZmluZChcInVsXCIpO1xyXG4gICAgaWYgKHRpbWVXcmFwcGVyLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgYW1wbSA9IHRpbWVXcmFwcGVyWzJdLmNoaWxkcmVuO1xyXG5cclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbXBtLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgYW1wbVtpXS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgIC8vIGdldCBjbGlja2VkIG5vZGUgdmFsdWVcclxuICAgICAgICAgIGNvbnN0IG5vZGVWYWx1ZSA9IGUuY3VycmVudFRhcmdldC50ZXh0Q29udGVudDtcclxuXHJcbiAgICAgICAgICAvLyBnZXQgbW9kZWwgY3VycmVudCB2YWx1ZVxyXG4gICAgICAgICAgY29uc3QgdmFsdWVEYXRlVGltZSA9IHRoaXNDb21wb25lbnQuY3VycmVudERhdGVUaW1lVmFsdWUodGhpc0NvbXBvbmVudCk7XHJcblxyXG4gICAgICAgICAgLy8gc2V0IG5ldyBtaW51dGVzXHJcbiAgICAgICAgICB2YXIgX2hvdXIgPSB2YWx1ZURhdGVUaW1lLmdldEhvdXJzKCk7XHJcbiAgICAgICAgICBpZiAobm9kZVZhbHVlLnRvTG93ZXJDYXNlKCkgPT0gXCJhbVwiKSB7XHJcbiAgICAgICAgICAgIF9ob3VyIC09IDEyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIF9ob3VyICs9IDEyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdmFsdWVEYXRlVGltZS5zZXRIb3VycyhfaG91cik7XHJcblxyXG4gICAgICAgICAgLy8gc2V0IHRvIE1vZGVsXHJcbiAgICAgICAgICB0aGlzQ29tcG9uZW50LnNldERhdGVUaW1lVG9Nb2RlbCh0aGlzQ29tcG9uZW50LCB2YWx1ZURhdGVUaW1lKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjdXJyZW50RGF0ZVRpbWVWYWx1ZSh0aGlzQ29tcG9uZW50OiBhbnkpIHtcclxuICAgIC8vIGdldCBjdXJyZW50IHZhbHVlXHJcbiAgICBjb25zdCB6TW9kZWxWYWx1ZSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0Wk1vZGVsVmFsdWUodGhpc0NvbXBvbmVudC5kYXRhLlZhbHVlLCB0aGlzQ29tcG9uZW50Lmdyb3VwLCB0aGlzQ29tcG9uZW50Lmdyb3VwLnpNb2RlbCk7XHJcblxyXG4gICAgbGV0IHZhbHVlRGF0ZVRpbWUgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAgIGlmICh6TW9kZWxWYWx1ZSAhPSBcIlwiICYmIHpNb2RlbFZhbHVlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAvLyBjb252ZXJ0IGN1cnJlbnQgdmFsdWUgdG8gZGF0ZXRpbWVcclxuICAgICAgdmFsdWVEYXRlVGltZSA9IG5ldyBEYXRlKHpNb2RlbFZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdmFsdWVEYXRlVGltZVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREYXRlVGltZVRvTW9kZWwodGhpc0NvbXBvbmVudDogYW55LCB2YWx1ZURhdGVUaW1lOiBhbnkpIHtcclxuICAgIC8vIGNvbnZlcnQgdGhlIGRhdGUgdG8gSVNPU3RyaW5nXHJcbiAgICBjb25zdCBuZXdEYXRlVGltZSA9IG5ldyBEYXRlKHZhbHVlRGF0ZVRpbWUpLnRvSVNPU3RyaW5nKCk7XHJcblxyXG4gICAgLy8gYXNzaWduIHRvIHRoZSB6TW9kZWxcclxuICAgIFpDb21wb25lbnRIZWxwZXIuc2V0TW9kZWxWYWx1ZSh0aGlzQ29tcG9uZW50LmRhdGEuVmFsdWUsIG5ld0RhdGVUaW1lLCB0aGlzQ29tcG9uZW50Lmdyb3VwKTtcclxuXHJcbiAgICAvLyBzZXQgdGltZW91dCBkbyBhZGQgZXZlbnQgYWdhaW4gYWZ0ZXIgbm9kZSBjbGlja2VkLiBpZiBub3QgaXQgb25seSB3b3JrIDEgdGltZS5cclxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xyXG4gICAgICB0aGlzQ29tcG9uZW50LmhvdXJzT25DbGljayh0aGlzQ29tcG9uZW50KTtcclxuICAgICAgdGhpc0NvbXBvbmVudC5taW51dGVzT25DbGljayh0aGlzQ29tcG9uZW50KTtcclxuICAgICAgdGhpc0NvbXBvbmVudC5hbXBtT25DbGljayh0aGlzQ29tcG9uZW50KTtcclxuICAgICAgdGhpc0NvbXBvbmVudC5ub3dPbkNsaWNrKHRoaXNDb21wb25lbnQpO1xyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcbn1cclxuIiwiPGlvbi1pdGVtIFtuZ0NsYXNzXT1cImRhdGEuQ2xhc3NcIiBbZm9ybUdyb3VwXT1cImZvcm1cIiAqbmdJZj1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlKVwiPlxyXG4gIDxpb24tbGFiZWwgW2F0dHIuZm9yXT1cImRhdGEuVmFsdWVcIiAqbmdJZj1cImRhdGEuU2hvd0xhYmVsID09PSB1bmRlZmluZWQgfHwgZGF0YS5TaG93TGFiZWxcIiBwb3NpdGlvbj1cInN0YWNrZWRcIj5cclxuICAgIHt7ZGF0YS5MYWJlbH19IDxpb24tdGV4dCAqbmdJZj1cImNvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZFwiIGNvbG9yPVwiZGFuZ2VyXCI+KjwvaW9uLXRleHQ+XHJcbiAgPC9pb24tbGFiZWw+XHJcbiAgPGRpdiBjbGFzcz1cImlvbi1yb3dcIiBzdHlsZT1cImp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjsgd2lkdGg6IDEwMCVcIj5cclxuICAgIDxzcGFuIHN0eWxlPVwiZmxleDogMTtcIj5cclxuICAgICAgPGlvbi1kYXRldGltZSAqbmdJZj1cImlzTW9iaWxlU2NyZWVuKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZzogOHB4IDBweDtcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVxdWlyZWRGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZEZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJkYXRhLlBsYWNlSG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlGb3JtYXRdPVwiZGF0ZUZvcm1hdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BpY2tlckZvcm1hdF09XCJkYXRlRm9ybWF0XCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImRhdGEuVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIj5cclxuICAgICAgPC9pb24tZGF0ZXRpbWU+XHJcbiAgICAgIDxrZW5kby1kYXRlcGlja2VyICpuZ0lmPVwiIWlzTW9iaWxlU2NyZWVuKCkgJiYgZGF0ZUZvcm1hdD09PSdNTU0tWVlZWSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJmb3JtLmdldChkYXRhLlZhbHVlKS52YWx1ZSB8IGRhdGVQYXJzZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwiZGF0YS5NaW5EYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW21heF09XCJkYXRhLk1heERhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlVmlld109XCIneWVhcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYm90dG9tVmlld109XCIneWVhcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi10b3A6IDdweDsgd2lkdGg6IDEwMCU7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZm9ybWF0XT1cInRvS2VuZG9EYXRlRm9ybWF0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGF0YS5QbGFjZUhvbGRlclwiPlxyXG4gICAgICA8L2tlbmRvLWRhdGVwaWNrZXI+XHJcbiAgICAgIDxrZW5kby1kYXRlcGlja2VyICpuZ0lmPVwiIWlzTW9iaWxlU2NyZWVuKCkgJiYgZGF0ZUZvcm1hdD09PSdERC1NTU0tWVlZWSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJmb3JtLmdldChkYXRhLlZhbHVlKS52YWx1ZSB8IGRhdGVQYXJzZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwiZGF0YS5NaW5EYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW21heF09XCJkYXRhLk1heERhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi10b3A6IDdweDsgd2lkdGg6IDEwMCU7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZm9ybWF0XT1cInRvS2VuZG9EYXRlRm9ybWF0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGF0YS5QbGFjZUhvbGRlclwiPjwva2VuZG8tZGF0ZXBpY2tlcj5cclxuICAgICAgPGtlbmRvLWRhdGV0aW1lcGlja2VyICpuZ0lmPVwiIWlzTW9iaWxlU2NyZWVuKCkgJiYgZGF0ZUZvcm1hdD09PSdERC1NTU0tWVlZWSBoOm1tIEEnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJkYXRhLlZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJmb3JtLmdldChkYXRhLlZhbHVlKS52YWx1ZSB8IGRhdGVQYXJzZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wZW4pPVwiaGFuZGxlUHJldmVudGFibGVFdmVudCgkZXZlbnQsICdvcGVuJywgZmFsc2UpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDogN3B4OyB3aWR0aDogMTAwJTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtYXRdPVwidG9LZW5kb0RhdGVGb3JtYXQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGF0YS5QbGFjZUhvbGRlclwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBrZW5kb0NhbGVuZGFyTW9udGhDZWxsVGVtcGxhdGUgbGV0LWRhdGU+XHJcbiAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiR2V0RGF0ZShkYXRlKVwiPnt7ZGF0ZS5nZXREYXRlKCl9fTwvc3Bhbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L2tlbmRvLWRhdGV0aW1lcGlja2VyPlxyXG4gICAgICA8a2VuZG8tdGltZXBpY2tlciAqbmdJZj1cIiFpc01vYmlsZVNjcmVlbigpICYmIChkYXRlRm9ybWF0PT09J0hIOm1tOnNzJyB8fCBkYXRlRm9ybWF0PT09J0hIOm1tJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJmb3JtLmdldChkYXRhLlZhbHVlKS52YWx1ZSB8IGRhdGVQYXJzZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDogN3B4OyB3aWR0aDogMTAwJTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtYXRdPVwidG9LZW5kb0RhdGVGb3JtYXQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJkYXRhLlBsYWNlSG9sZGVyXCI+PC9rZW5kby10aW1lcGlja2VyPlxyXG4gICAgPC9zcGFuPlxyXG4gICAgPGFwcC11aXZhbGlkYXRpb25tZXNzYWdlIFtncm91cF09XCJncm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1dPVwiZm9ybVwiPjwvYXBwLXVpdmFsaWRhdGlvbm1lc3NhZ2U+XHJcbiAgPC9kaXY+XHJcbjwvaW9uLWl0ZW0+XHJcbiJdfQ==
|
|
231
|
+
args: [{ selector: "app-zdatetime", template: "<div [formGroup]=\"form\" class=\"zdate-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <ion-datetime *ngIf=\"isMobileScreen()\" style=\"padding: 8px 0px;\"\r\n [required]=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\"\r\n [placeholder]=\"data.PlaceHolder\" [id]=\"data.Value\" [displayFormat]=\"dateFormat\" [pickerFormat]=\"dateFormat\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [formControlName]=\"data.Value\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [style]=\"componentProperties.style.style1\" class=\"e1tag-style1\">\r\n </ion-datetime>\r\n <kendo-datepicker *ngIf=\"!isMobileScreen() && dateFormat==='MMM-YYYY'\" [id]=\"data.Value\"\r\n [value]=\"form.get(data.Value).value | dateParser\" (valueChange)=\"onChange($event)\" [min]=\"data.MinDate\"\r\n [max]=\"data.MaxDate\" [activeView]=\"'year'\" [bottomView]=\"'year'\" class=\"input-field e1tag-style1\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [format]=\"toKendoDateFormat()\" [placeholder]=\"data.PlaceHolder\" [style]=\"componentProperties.style.style1\">\r\n </kendo-datepicker>\r\n <kendo-datepicker *ngIf=\"!isMobileScreen() && dateFormat==='DD-MMM-YYYY'\" [id]=\"data.Value\"\r\n [value]=\"form.get(data.Value).value | dateParser\" (valueChange)=\"onChange($event)\" [min]=\"data.MinDate\"\r\n [max]=\"data.MaxDate\" class=\"input-field e1tag-style1\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [format]=\"toKendoDateFormat()\" [placeholder]=\"data.PlaceHolder\" [style]=\"componentProperties.style.style1\"></kendo-datepicker>\r\n <kendo-datetimepicker *ngIf=\"!isMobileScreen() && dateFormat==='DD-MMM-YYYY h:mm A'\" [id]=\"data.Value\"\r\n [value]=\"form.get(data.Value).value | dateParser\" (valueChange)=\"onChange($event)\"\r\n (open)=\"handlePreventableEvent($event, 'open', false)\" class=\"input-field e1tag-style1\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [format]=\"toKendoDateFormat()\" [placeholder]=\"data.PlaceHolder\" [style]=\"componentProperties.style.style1\">\r\n <ng-template kendoCalendarMonthCellTemplate let-date>\r\n <span (click)=\"GetDate(date)\">{{date.getDate()}}</span>\r\n </ng-template>\r\n </kendo-datetimepicker>\r\n <kendo-timepicker *ngIf=\"!isMobileScreen() && (dateFormat==='HH:mm:ss' || dateFormat==='HH:mm')\" [id]=\"data.Value\"\r\n [value]=\"form.get(data.Value).value | dateParser\" (valueChange)=\"onChange($event)\" class=\"input-field e1tag-style1\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [format]=\"toKendoDateFormat()\" [placeholder]=\"data.PlaceHolder\" [style]=\"componentProperties.style.style1\"></kendo-timepicker>\r\n</div>\r\n", styles: [".gridInlineEdit{--background: transparent}.item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}.k-datepicker{color:var(--z-text-color)}:host ::ng-deep kendo-dateinput{font-size:var(--content-font-size)}:host ::ng-deep kendo-dateinput .k-picker-wrap .k-dateinput .k-dateinput-wrap{margin:auto}:host ::ng-deep kendo-datetimepicker .k-picker-wrap .k-dateinput .k-dateinput-wrap,:host ::ng-deep kendo-datepicker .k-picker-wrap .k-dateinput .k-dateinput-wrap,:host ::ng-deep kendo-timepicker .k-picker-wrap .k-dateinput .k-dateinput-wrap{margin:auto}:host ::ng-deep kendo-datetimepicker.disabled .k-picker-wrap,:host ::ng-deep kendo-datetimepicker.disabled .k-dateinput .k-dateinput-wrap,:host ::ng-deep kendo-datepicker.disabled .k-picker-wrap,:host ::ng-deep kendo-datepicker.disabled .k-dateinput .k-dateinput-wrap,:host ::ng-deep kendo-timepicker.disabled .k-picker-wrap,:host ::ng-deep kendo-timepicker.disabled .k-dateinput .k-dateinput-wrap{background:transparent!important}:host ::ng-deep kendo-datetimepicker:focus-within,:host ::ng-deep kendo-datepicker:focus-within,:host ::ng-deep kendo-timepicker:focus-within{box-shadow:0 0 3px 1px var(--ion-color-primary)}\n"] }]
|
|
232
|
+
}], ctorParameters: function () { return [{ type: i1.ZComponentService }]; } });
|
|
233
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemRhdGV0aW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pkYXRldGltZS96ZGF0ZXRpbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemRhdGV0aW1lL3pkYXRldGltZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQU9sRCwyQ0FBMkM7QUFDM0MsT0FBTyxFQUFjLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7OztBQVl4RSxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsY0FBYztJQUdwRCxZQUFZLFdBQThCO1FBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBRmhFLGVBQVUsR0FBRyxhQUFhLENBQUM7UUFtRHBCLGlCQUFZLEdBQUcsQ0FBQyxPQUFlLEVBQUUsT0FBZSxFQUFPLEVBQUU7WUFDOUQsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBRXpCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFO2dCQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN2QztZQUNELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFO2dCQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN2QztR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QUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTNGLGlGQUFpRjtRQUNqRixVQUFVLENBQUM7WUFDVCxhQUFhLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDNUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN6QyxhQUFhLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7O2dIQTNQVSxrQkFBa0I7b0dBQWxCLGtCQUFrQiw0RUN0Qi9CLG0xSEFzQ0E7NEZEaEJhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IFByZXZlbnRhYmxlRXZlbnQgfSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1kYXRlaW5wdXRzJztcclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHsgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciB9IGZyb20gXCJtbWhnbG9iYWwtemNvcmVcIjtcclxuaW1wb3J0IHsgSW5wdXRGaWVsZEJhc2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9pbnB1dGZpZWxkYmFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgWkNvbXBvbmVudFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlXCI7XHJcblxyXG5cclxuLy8gaW1wb3J0ICogYXMgJCBmcm9tICdqcXVlcnknO1xyXG5kZWNsYXJlIHZhciAkOiBhbnk7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtemRhdGV0aW1lXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi96ZGF0ZXRpbWUuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vemRhdGV0aW1lLmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWmRhdGV0aW1lQ29tcG9uZW50IGV4dGVuZHMgSW5wdXRGaWVsZEJhc2UgaW1wbGVtZW50cyBaQ29tcG9uZW50LCBPbkluaXQge1xyXG4gIGRhdGVGb3JtYXQgPSBcIkRELU1NTS1ZWVlZXCI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNvbXBTZXJ2aWNlOiBaQ29tcG9uZW50U2VydmljZSkgeyBzdXBlcihjb21wU2VydmljZSkgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHN1cGVyLnNldHVwSW5uZXJGaWVsZCgpO1xyXG4gICAgaWYgKHRoaXMuZGF0YS5UeXBlID09PSBcInp0aW1lXCIpIHtcclxuICAgICAgdGhpcy5kYXRlRm9ybWF0ID0gXCJISDptbVwiO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5kYXRhLlR5cGUgPT09IFwienVpZGF0ZXRpbWVcIikge1xyXG4gICAgICB0aGlzLmRhdGVGb3JtYXQgPSBcIkRELU1NTS1ZWVlZIGg6bW0gQVwiO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5kYXRhLlR5cGUgPT09IFwienVpdGltZVwiKSB7XHJcbiAgICAgIHRoaXMuZGF0ZUZvcm1hdCA9IFwiSEg6bW06c3NcIjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuZGF0YS5UeXBlID09PSBcInpzaG9ydGRhdGVcIikge1xyXG4gICAgICB0aGlzLmRhdGVGb3JtYXQgPSBcIk1NTS1ZWVlZXCI7XHJcbiAgICB9XHJcbiAgICAvLyBpZiAodGhpcy5ncm91cC56TW9kZWxbdGhpcy5kYXRhLlZhbHVlXSkge1xyXG4gICAgLy8gICB0aGlzLmRhdGVWYWx1ZSA9IG5ldyBEYXRlKHRoaXMuZ3JvdXAuek1vZGVsW3RoaXMuZGF0YS5WYWx1ZV0pO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgdG9LZW5kb0RhdGVGb3JtYXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRlRm9ybWF0XHJcbiAgICAgIC5yZXBsYWNlKFwiRERcIiwgXCJkZFwiKVxyXG4gICAgICAucmVwbGFjZShcIllZWVlcIiwgXCJ5eXl5XCIpXHJcbiAgICAgIC5yZXBsYWNlKFwiaFwiLCBcIkhcIilcclxuICAgICAgLnJlcGxhY2UoXCJBXCIsIFwiYVwiKTtcclxuICB9XHJcblxyXG4gIGdldERhdGVWYWx1ZSgpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMuZGF0YS5WYWx1ZV0udmFsdWU7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldERhdGUoZGF0ZTogRGF0ZSkge1xyXG4gICAgLy8gY29udmVydCB0aGUgZGF0ZSB0byBJU09TdHJpbmdcclxuICAgIGNvbnN0IG15RGF0ZSA9IG5ldyBEYXRlKGRhdGUpLnRvSVNPU3RyaW5nKCk7XHJcbiAgICAvLyBhc3NpZ24gdG8gdGhlIHpNb2RlbFxyXG4gICAgWkNvbXBvbmVudEhlbHBlci5zZXRNb2RlbFZhbHVlKHRoaXMuZGF0YS5WYWx1ZSwgbXlEYXRlLCB0aGlzLmdyb3VwKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNoYW5nZSh2YWx1ZTogRGF0ZSk6IHZvaWQge1xyXG4gICAgc3VwZXIub25DaGFuZ2UobnVsbCwgdmFsdWU/LnRvSVNPU3RyaW5nKCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNldERhdGVSYW5nZSA9IChNaW5EYXRlOiBzdHJpbmcsIE1heERhdGU6IHN0cmluZyk6IGFueSA9PiB7XHJcbiAgICB2YXIgdGhpc0NvbXBvbmVudCA9IHRoaXM7XHJcblxyXG4gICAgaWYgKCFpc05hTihEYXRlLnBhcnNlKE1pbkRhdGUpKSkge1xyXG4gICAgICB0aGlzLmRhdGEuTWluRGF0ZSA9IG5ldyBEYXRlKE1pbkRhdGUpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpc05hTihEYXRlLnBhcnNlKE1heERhdGUpKSkge1xyXG4gICAgICB0aGlzLmRhdGEuTWF4RGF0ZSA9IG5ldyBEYXRlKE1heERhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIERhdGUgcGlja2VyIGhhbmRsZVByZXZlbnRhYmxlRXZlbnRcclxuICBwdWJsaWMgaGFuZGxlUHJldmVudGFibGVFdmVudChldmVudDogUHJldmVudGFibGVFdmVudCwgZXZlbnROYW1lOiBzdHJpbmcsIHByZXZlbnREZWZhdWx0OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAvLyBrZWVwIFwidGhpc1wiIHRvIHVzZSBpbiBiaW5kaW5nLlxyXG4gICAgdmFyIHRoaXNDb21wb25lbnQgPSB0aGlzO1xyXG5cclxuICAgIC8vIG5lZWQgYSB0aW1lb3V0IGZvciB1aSB0byBkaXNwbGF5IHRoZSBjYWxlbmRlciBwb3B1cFxyXG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XHJcbiAgICAgIC8vIG9ubHkgYXZhaWxhYmxlIHdoZW4gcG9wdXAgaXMgc2hvd24sIGdldCB0aGUgZWxlbWVudCBieSBjbGFzc1xyXG4gICAgICAvLyBmb3IgZGF0ZVxyXG4gICAgICB0aGlzQ29tcG9uZW50LmRhdGVBcHBlbmRFdmVudCh0aGlzQ29tcG9uZW50KTtcclxuXHJcbiAgICAgIC8vIGZvciB0aW1lXHJcbiAgICAgIHRoaXNDb21wb25lbnQudGltZUFwcGVuZEV2ZW50KHRoaXNDb21wb25lbnQpO1xyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGF0ZUFwcGVuZEV2ZW50KHRoaXNDb21wb25lbnQ6IGFueSkge1xyXG4gICAgbGV0IGRhdGVDZWxsID0gJChcInRib2R5LmstY2FsZW5kYXItdGJvZHlcIikuZmluZChcInRkLmstY2FsZW5kYXItdGRcIik7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGVDZWxsLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IG5vZGUgPSBkYXRlQ2VsbFtpXTtcclxuXHJcbiAgICAgIGlmIChub2RlLnRpdGxlICE9IFwiXCIpIHtcclxuICAgICAgICAvLyB3aGVuIGRhdGUgY2xpY2tlZFxyXG4gICAgICAgIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIGlmICghaXNOYU4oRGF0ZS5wYXJzZShub2RlLnRpdGxlKSkpIHtcclxuICAgICAgICAgICAgY29uc3Qgbm9kZURhdGUgPSBuZXcgRGF0ZShub2RlLnRpdGxlKS50b0lTT1N0cmluZygpO1xyXG4gICAgICAgICAgICAvLyBhc3NpZ24gdG8gdGhlIHpNb2RlbFxyXG4gICAgICAgICAgICBaQ29tcG9uZW50SGVscGVyLnNldE1vZGVsVmFsdWUodGhpc0NvbXBvbmVudC5kYXRhLlZhbHVlLCBub2RlRGF0ZSwgdGhpc0NvbXBvbmVudC5ncm91cCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gdGltZW91dCBhcHBlbmQgdGltZSBjbGljayBldmVudFxyXG4gICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHRoaXNDb21wb25lbnQuaG91cnNPbkNsaWNrKHRoaXNDb21wb25lbnQpO1xyXG4gICAgICAgICAgICB0aGlzQ29tcG9uZW50Lm1pbnV0ZXNPbkNsaWNrKHRoaXNDb21wb25lbnQpO1xyXG4gICAgICAgICAgICB0aGlzQ29tcG9uZW50LmFtcG1PbkNsaWNrKHRoaXNDb21wb25lbnQpO1xyXG4gICAgICAgICAgICB0aGlzQ29tcG9uZW50Lm5vd09uQ2xpY2sodGhpc0NvbXBvbmVudCk7XHJcbiAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVG9kYXkgY2xpY2tlZFxyXG4gICAgY29uc3QgdG9kYXlEYXRlID0gJChcInNwYW4uay10b2RheVwiKVswXTtcclxuICAgIHRvZGF5RGF0ZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24gKCkge1xyXG4gICAgICBjb25zdCBkYXRlTm93ID0gbmV3IERhdGUoKS50b0pTT04oKS5zbGljZSgwLCAxMCkucmVwbGFjZSgvLS9nLCAnLycpO1xyXG4gICAgICAvLyBzZXQgdG8gTW9kZWxcclxuICAgICAgdGhpc0NvbXBvbmVudC5zZXREYXRlVGltZVRvTW9kZWwodGhpc0NvbXBvbmVudCwgZGF0ZU5vdyk7XHJcblxyXG4gICAgICB0aGlzQ29tcG9uZW50LmhvdXJzT25DbGljayh0aGlzQ29tcG9uZW50KTtcclxuICAgICAgdGhpc0NvbXBvbmVudC5taW51dGVzT25DbGljayh0aGlzQ29tcG9uZW50KTtcclxuICAgICAgdGhpc0NvbXBvbmVudC5hbXBtT25DbGljayh0aGlzQ29tcG9uZW50KTtcclxuICAgICAgdGhpc0NvbXBvbmVudC5ub3dPbkNsaWNrKHRoaXNDb21wb25lbnQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRpbWVBcHBlbmRFdmVudCh0aGlzQ29tcG9uZW50OiBhbnkpIHtcclxuICAgIHZhciB0aW1lVGFiID0gJChcImJ1dHRvbi5rLWJ1dHRvbi5rLXRpbWUtdGFiXCIpWzBdO1xyXG4gICAgdGltZVRhYi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24gKCkge1xyXG4gICAgICB0aGlzQ29tcG9uZW50LmhvdXJzT25DbGljayh0aGlzQ29tcG9uZW50KTtcclxuICAgICAgdGhpc0NvbXBvbmVudC5taW51dGVzT25DbGljayh0aGlzQ29tcG9uZW50KTtcclxuICAgICAgdGhpc0NvbXBvbmVudC5hbXBtT25DbGljayh0aGlzQ29tcG9uZW50KTtcclxuICAgICAgdGhpc0NvbXBvbmVudC5ub3dPbkNsaWNrKHRoaXNDb21wb25lbnQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG5vd09uQ2xpY2sodGhpc0NvbXBvbmVudDogYW55KSB7XHJcbiAgICBjb25zdCBub3dUaW1lID0gJChcImJ1dHRvbi5rLWJ1dHRvbi5rLWJhcmUuay10aW1lLW5vd1wiKVswXTtcclxuICAgIGlmIChub3dUaW1lKSB7XHJcbiAgICAgIG5vd1RpbWUuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgLy8gZ2V0IG1vZGVsIGN1cnJlbnQgdmFsdWVcclxuICAgICAgICBsZXQgdmFsdWVEYXRlVGltZSA9IHRoaXNDb21wb25lbnQuY3VycmVudERhdGVUaW1lVmFsdWUodGhpc0NvbXBvbmVudCk7XHJcbiAgICAgICAgY29uc3QgZGF0ZVRpbWVOb3cgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAgICAgICAvLyBjb252ZXJ0IGN1cnJlbnQgdmFsdWUgdG8gZGF0ZXRpbWVcclxuICAgICAgICB2YWx1ZURhdGVUaW1lLnNldEhvdXJzKGRhdGVUaW1lTm93LmdldEhvdXJzKCkpO1xyXG4gICAgICAgIHZhbHVlRGF0ZVRpbWUuc2V0TWludXRlcyhkYXRlVGltZU5vdy5nZXRNaW51dGVzKCkpO1xyXG4gICAgICAgIHZhbHVlRGF0ZVRpbWUuc2V0U2Vjb25kcyhkYXRlVGltZU5vdy5nZXRTZWNvbmRzKCkpO1xyXG5cclxuICAgICAgICAvLyBzZXQgdG8gTW9kZWxcclxuICAgICAgICB0aGlzQ29tcG9uZW50LnNldERhdGVUaW1lVG9Nb2RlbCh0aGlzQ29tcG9uZW50LCB2YWx1ZURhdGVUaW1lKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhvdXJzT25DbGljayh0aGlzQ29tcG9uZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IHRpbWVXcmFwcGVyID0gJChcImRpdi5rLXRpbWUtbGlzdC13cmFwcGVyXCIpLmZpbmQoXCJ1bFwiKTtcclxuICAgIGlmICh0aW1lV3JhcHBlci5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGhvdXIgPSB0aW1lV3JhcHBlclswXS5jaGlsZHJlbjtcclxuXHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaG91ci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGhvdXJbaV0uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAvLyBnZXQgY2xpY2tlZCBub2RlIHZhbHVlXHJcbiAgICAgICAgICBjb25zdCBub2RlVmFsdWUgPSBlLmN1cnJlbnRUYXJnZXQudGV4dENvbnRlbnQ7XHJcblxyXG4gICAgICAgICAgLy8gZ2V0IG1vZGVsIGN1cnJlbnQgdmFsdWVcclxuICAgICAgICAgIGxldCB2YWx1ZURhdGVUaW1lID0gdGhpc0NvbXBvbmVudC5jdXJyZW50RGF0ZVRpbWVWYWx1ZSh0aGlzQ29tcG9uZW50KTtcclxuXHJcbiAgICAgICAgICAvLyBzZXQgbmV3IGhvdXJcclxuICAgICAgICAgIHZhbHVlRGF0ZVRpbWUuc2V0SG91cnMobm9kZVZhbHVlKTtcclxuXHJcbiAgICAgICAgICAvLyBzZXQgdG8gTW9kZWxcclxuICAgICAgICAgIHRoaXNDb21wb25lbnQuc2V0RGF0ZVRpbWVUb01vZGVsKHRoaXNDb21wb25lbnQsIHZhbHVlRGF0ZVRpbWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1pbnV0ZXNPbkNsaWNrKHRoaXNDb21wb25lbnQ6IGFueSkge1xyXG4gICAgY29uc3QgdGltZVdyYXBwZXIgPSAkKFwiZGl2LmstdGltZS1saXN0LXdyYXBwZXJcIikuZmluZChcInVsXCIpO1xyXG4gICAgaWYgKHRpbWVXcmFwcGVyLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgbWludXRlcyA9IHRpbWVXcmFwcGVyWzFdLmNoaWxkcmVuO1xyXG5cclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtaW51dGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbWludXRlc1tpXS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgIC8vIGdldCBjbGlja2VkIG5vZGUgdmFsdWVcclxuICAgICAgICAgIGNvbnN0IG5vZGVWYWx1ZSA9IGUuY3VycmVudFRhcmdldC50ZXh0Q29udGVudDtcclxuXHJcbiAgICAgICAgICAvLyBnZXQgbW9kZWwgY3VycmVudCB2YWx1ZVxyXG4gICAgICAgICAgY29uc3QgdmFsdWVEYXRlVGltZSA9IHRoaXNDb21wb25lbnQuY3VycmVudERhdGVUaW1lVmFsdWUodGhpc0NvbXBvbmVudCk7XHJcblxyXG4gICAgICAgICAgLy8gc2V0IG5ldyBtaW51dGVcclxuICAgICAgICAgIHZhbHVlRGF0ZVRpbWUuc2V0TWludXRlcyhub2RlVmFsdWUpO1xyXG5cclxuICAgICAgICAgIC8vIHNldCB0byBNb2RlbFxyXG4gICAgICAgICAgdGhpc0NvbXBvbmVudC5zZXREYXRlVGltZVRvTW9kZWwodGhpc0NvbXBvbmVudCwgdmFsdWVEYXRlVGltZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYW1wbU9uQ2xpY2sodGhpc0NvbXBvbmVudDogYW55KSB7XHJcbiAgICBjb25zdCB0aW1lV3JhcHBlciA9ICQoXCJkaXYuay10aW1lLWxpc3Qtd3JhcHBlclwiKS5maW5kKFwidWxcIik7XHJcbiAgICBpZiAodGltZVdyYXBwZXIubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBhbXBtID0gdGltZVdyYXBwZXJbMl0uY2hpbGRyZW47XHJcblxyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFtcG0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBhbXBtW2ldLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgLy8gZ2V0IGNsaWNrZWQgbm9kZSB2YWx1ZVxyXG4gICAgICAgICAgY29uc3Qgbm9kZVZhbHVlID0gZS5jdXJyZW50VGFyZ2V0LnRleHRDb250ZW50O1xyXG5cclxuICAgICAgICAgIC8vIGdldCBtb2RlbCBjdXJyZW50IHZhbHVlXHJcbiAgICAgICAgICBjb25zdCB2YWx1ZURhdGVUaW1lID0gdGhpc0NvbXBvbmVudC5jdXJyZW50RGF0ZVRpbWVWYWx1ZSh0aGlzQ29tcG9uZW50KTtcclxuXHJcbiAgICAgICAgICAvLyBzZXQgbmV3IG1pbnV0ZXNcclxuICAgICAgICAgIHZhciBfaG91ciA9IHZhbHVlRGF0ZVRpbWUuZ2V0SG91cnMoKTtcclxuICAgICAgICAgIGlmIChub2RlVmFsdWUudG9Mb3dlckNhc2UoKSA9PSBcImFtXCIpIHtcclxuICAgICAgICAgICAgX2hvdXIgLT0gMTI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgX2hvdXIgKz0gMTI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB2YWx1ZURhdGVUaW1lLnNldEhvdXJzKF9ob3VyKTtcclxuXHJcbiAgICAgICAgICAvLyBzZXQgdG8gTW9kZWxcclxuICAgICAgICAgIHRoaXNDb21wb25lbnQuc2V0RGF0ZVRpbWVUb01vZGVsKHRoaXNDb21wb25lbnQsIHZhbHVlRGF0ZVRpbWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGN1cnJlbnREYXRlVGltZVZhbHVlKHRoaXNDb21wb25lbnQ6IGFueSkge1xyXG4gICAgLy8gZ2V0IGN1cnJlbnQgdmFsdWVcclxuICAgIGNvbnN0IHpNb2RlbFZhbHVlID0gWkNvbXBvbmVudEhlbHBlci5nZXRaTW9kZWxWYWx1ZSh0aGlzQ29tcG9uZW50LmRhdGEuVmFsdWUsIHRoaXNDb21wb25lbnQuZ3JvdXAsIHRoaXNDb21wb25lbnQuZ3JvdXAuek1vZGVsKTtcclxuXHJcbiAgICBsZXQgdmFsdWVEYXRlVGltZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgaWYgKHpNb2RlbFZhbHVlICE9IFwiXCIgJiYgek1vZGVsVmFsdWUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIC8vIGNvbnZlcnQgY3VycmVudCB2YWx1ZSB0byBkYXRldGltZVxyXG4gICAgICB2YWx1ZURhdGVUaW1lID0gbmV3IERhdGUoek1vZGVsVmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB2YWx1ZURhdGVUaW1lXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldERhdGVUaW1lVG9Nb2RlbCh0aGlzQ29tcG9uZW50OiBhbnksIHZhbHVlRGF0ZVRpbWU6IGFueSkge1xyXG4gICAgLy8gY29udmVydCB0aGUgZGF0ZSB0byBJU09TdHJpbmdcclxuICAgIGNvbnN0IG5ld0RhdGVUaW1lID0gbmV3IERhdGUodmFsdWVEYXRlVGltZSkudG9JU09TdHJpbmcoKTtcclxuXHJcbiAgICAvLyBhc3NpZ24gdG8gdGhlIHpNb2RlbFxyXG4gICAgWkNvbXBvbmVudEhlbHBlci5zZXRNb2RlbFZhbHVlKHRoaXNDb21wb25lbnQuZGF0YS5WYWx1ZSwgbmV3RGF0ZVRpbWUsIHRoaXNDb21wb25lbnQuZ3JvdXApO1xyXG5cclxuICAgIC8vIHNldCB0aW1lb3V0IGRvIGFkZCBldmVudCBhZ2FpbiBhZnRlciBub2RlIGNsaWNrZWQuIGlmIG5vdCBpdCBvbmx5IHdvcmsgMSB0aW1lLlxyXG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHRoaXNDb21wb25lbnQuaG91cnNPbkNsaWNrKHRoaXNDb21wb25lbnQpO1xyXG4gICAgICB0aGlzQ29tcG9uZW50Lm1pbnV0ZXNPbkNsaWNrKHRoaXNDb21wb25lbnQpO1xyXG4gICAgICB0aGlzQ29tcG9uZW50LmFtcG1PbkNsaWNrKHRoaXNDb21wb25lbnQpO1xyXG4gICAgICB0aGlzQ29tcG9uZW50Lm5vd09uQ2xpY2sodGhpc0NvbXBvbmVudCk7XHJcbiAgICB9LCA1MDApO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxufVxyXG4iLCI8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwiemRhdGUtY29udGFpbmVyIGUxdGFnLXN0eWxlXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGVcIj5cclxuICA8aW9uLWRhdGV0aW1lICpuZ0lmPVwiaXNNb2JpbGVTY3JlZW4oKVwiIHN0eWxlPVwicGFkZGluZzogOHB4IDBweDtcIlxyXG4gICAgW3JlcXVpcmVkXT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZEZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlcXVpcmVkRmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlcXVpcmVkKVwiXHJcbiAgICBbcGxhY2Vob2xkZXJdPVwiZGF0YS5QbGFjZUhvbGRlclwiIFtpZF09XCJkYXRhLlZhbHVlXCIgW2Rpc3BsYXlGb3JtYXRdPVwiZGF0ZUZvcm1hdFwiIFtwaWNrZXJGb3JtYXRdPVwiZGF0ZUZvcm1hdFwiXHJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICBbcmVhZG9ubHldPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMVwiIGNsYXNzPVwiZTF0YWctc3R5bGUxXCI+XHJcbiAgPC9pb24tZGF0ZXRpbWU+XHJcbiAgPGtlbmRvLWRhdGVwaWNrZXIgKm5nSWY9XCIhaXNNb2JpbGVTY3JlZW4oKSAmJiBkYXRlRm9ybWF0PT09J01NTS1ZWVlZJ1wiIFtpZF09XCJkYXRhLlZhbHVlXCJcclxuICAgIFt2YWx1ZV09XCJmb3JtLmdldChkYXRhLlZhbHVlKS52YWx1ZSB8IGRhdGVQYXJzZXJcIiAodmFsdWVDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiIFttaW5dPVwiZGF0YS5NaW5EYXRlXCJcclxuICAgIFttYXhdPVwiZGF0YS5NYXhEYXRlXCIgW2FjdGl2ZVZpZXddPVwiJ3llYXInXCIgW2JvdHRvbVZpZXddPVwiJ3llYXInXCIgY2xhc3M9XCJpbnB1dC1maWVsZCBlMXRhZy1zdHlsZTFcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICBbcmVhZG9ubHldPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgIFtmb3JtYXRdPVwidG9LZW5kb0RhdGVGb3JtYXQoKVwiIFtwbGFjZWhvbGRlcl09XCJkYXRhLlBsYWNlSG9sZGVyXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCI+XHJcbiAgPC9rZW5kby1kYXRlcGlja2VyPlxyXG4gIDxrZW5kby1kYXRlcGlja2VyICpuZ0lmPVwiIWlzTW9iaWxlU2NyZWVuKCkgJiYgZGF0ZUZvcm1hdD09PSdERC1NTU0tWVlZWSdcIiBbaWRdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICBbdmFsdWVdPVwiZm9ybS5nZXQoZGF0YS5WYWx1ZSkudmFsdWUgfCBkYXRlUGFyc2VyXCIgKHZhbHVlQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIiBbbWluXT1cImRhdGEuTWluRGF0ZVwiXHJcbiAgICBbbWF4XT1cImRhdGEuTWF4RGF0ZVwiIGNsYXNzPVwiaW5wdXQtZmllbGQgZTF0YWctc3R5bGUxXCJcclxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgW3JlYWRvbmx5XT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICBbZm9ybWF0XT1cInRvS2VuZG9EYXRlRm9ybWF0KClcIiBbcGxhY2Vob2xkZXJdPVwiZGF0YS5QbGFjZUhvbGRlclwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMVwiPjwva2VuZG8tZGF0ZXBpY2tlcj5cclxuICA8a2VuZG8tZGF0ZXRpbWVwaWNrZXIgKm5nSWY9XCIhaXNNb2JpbGVTY3JlZW4oKSAmJiBkYXRlRm9ybWF0PT09J0RELU1NTS1ZWVlZIGg6bW0gQSdcIiBbaWRdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICBbdmFsdWVdPVwiZm9ybS5nZXQoZGF0YS5WYWx1ZSkudmFsdWUgfCBkYXRlUGFyc2VyXCIgKHZhbHVlQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIlxyXG4gICAgKG9wZW4pPVwiaGFuZGxlUHJldmVudGFibGVFdmVudCgkZXZlbnQsICdvcGVuJywgZmFsc2UpXCIgY2xhc3M9XCJpbnB1dC1maWVsZCBlMXRhZy1zdHlsZTFcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICBbcmVhZG9ubHldPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgIFtmb3JtYXRdPVwidG9LZW5kb0RhdGVGb3JtYXQoKVwiIFtwbGFjZWhvbGRlcl09XCJkYXRhLlBsYWNlSG9sZGVyXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCI+XHJcbiAgICA8bmctdGVtcGxhdGUga2VuZG9DYWxlbmRhck1vbnRoQ2VsbFRlbXBsYXRlIGxldC1kYXRlPlxyXG4gICAgICA8c3BhbiAoY2xpY2spPVwiR2V0RGF0ZShkYXRlKVwiPnt7ZGF0ZS5nZXREYXRlKCl9fTwvc3Bhbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9rZW5kby1kYXRldGltZXBpY2tlcj5cclxuICA8a2VuZG8tdGltZXBpY2tlciAqbmdJZj1cIiFpc01vYmlsZVNjcmVlbigpICYmIChkYXRlRm9ybWF0PT09J0hIOm1tOnNzJyB8fCBkYXRlRm9ybWF0PT09J0hIOm1tJylcIiBbaWRdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICBbdmFsdWVdPVwiZm9ybS5nZXQoZGF0YS5WYWx1ZSkudmFsdWUgfCBkYXRlUGFyc2VyXCIgKHZhbHVlQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIiBjbGFzcz1cImlucHV0LWZpZWxkIGUxdGFnLXN0eWxlMVwiXHJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgIFtyZWFkb25seV09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgW2Zvcm1hdF09XCJ0b0tlbmRvRGF0ZUZvcm1hdCgpXCIgW3BsYWNlaG9sZGVyXT1cImRhdGEuUGxhY2VIb2xkZXJcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIj48L2tlbmRvLXRpbWVwaWNrZXI+XHJcbjwvZGl2PlxyXG4iXX0=
|