@netwin/angular-datetime-picker 1.0.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +225 -0
- package/assets/style/picker.min.css +1 -0
- package/esm2022/lib/date-time/adapter/date-time-adapter.class.mjs +120 -0
- package/esm2022/lib/date-time/adapter/date-time-format.class.mjs +7 -0
- package/esm2022/lib/date-time/adapter/native-date-time-adapter.class.mjs +253 -0
- package/esm2022/lib/date-time/adapter/native-date-time-format.class.mjs +16 -0
- package/esm2022/lib/date-time/adapter/native-date-time.module.mjs +45 -0
- package/esm2022/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-adapter.class.mjs +228 -0
- package/esm2022/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-format.class.mjs +16 -0
- package/esm2022/lib/date-time/calendar-body.component.mjs +146 -0
- package/esm2022/lib/date-time/calendar-month-view.component.mjs +436 -0
- package/esm2022/lib/date-time/calendar-multi-year-view.component.mjs +366 -0
- package/esm2022/lib/date-time/calendar-year-view.component.mjs +362 -0
- package/esm2022/lib/date-time/calendar.component.mjs +368 -0
- package/esm2022/lib/date-time/date-time-inline.component.mjs +293 -0
- package/esm2022/lib/date-time/date-time-picker-container.component.mjs +405 -0
- package/esm2022/lib/date-time/date-time-picker-input.directive.mjs +598 -0
- package/esm2022/lib/date-time/date-time-picker-intl.service.mjs +62 -0
- package/esm2022/lib/date-time/date-time-picker-trigger.directive.mjs +64 -0
- package/esm2022/lib/date-time/date-time-picker.animations.mjs +21 -0
- package/esm2022/lib/date-time/date-time-picker.component.mjs +564 -0
- package/esm2022/lib/date-time/date-time.class.mjs +176 -0
- package/esm2022/lib/date-time/date-time.module.mjs +83 -0
- package/esm2022/lib/date-time/numberedFixLen.pipe.mjs +28 -0
- package/esm2022/lib/date-time/options-provider.mjs +34 -0
- package/esm2022/lib/date-time/timer-box.component.mjs +140 -0
- package/esm2022/lib/date-time/timer.component.mjs +279 -0
- package/esm2022/lib/dialog/dialog-config.class.mjs +59 -0
- package/esm2022/lib/dialog/dialog-container.component.mjs +232 -0
- package/esm2022/lib/dialog/dialog-ref.class.mjs +134 -0
- package/esm2022/lib/dialog/dialog.module.mjs +26 -0
- package/esm2022/lib/dialog/dialog.service.mjs +228 -0
- package/esm2022/lib/utils/array.utils.mjs +12 -0
- package/esm2022/lib/utils/constants.mjs +34 -0
- package/esm2022/lib/utils/date.utils.mjs +49 -0
- package/esm2022/lib/utils/index.mjs +5 -0
- package/esm2022/lib/utils/object.utils.mjs +26 -0
- package/esm2022/netwin-angular-datetime-picker.mjs +5 -0
- package/esm2022/public_api.mjs +25 -0
- package/fesm2022/netwin-angular-datetime-picker.mjs +5751 -0
- package/fesm2022/netwin-angular-datetime-picker.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/date-time/adapter/date-time-adapter.class.d.ts +193 -0
- package/lib/date-time/adapter/date-time-format.class.d.ts +15 -0
- package/lib/date-time/adapter/native-date-time-adapter.class.d.ts +72 -0
- package/lib/date-time/adapter/native-date-time-format.class.d.ts +5 -0
- package/lib/date-time/adapter/native-date-time.module.d.ts +12 -0
- package/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-adapter.class.d.ts +67 -0
- package/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-format.class.d.ts +5 -0
- package/lib/date-time/calendar-body.component.d.ts +79 -0
- package/lib/date-time/calendar-month-view.component.d.ts +141 -0
- package/lib/date-time/calendar-multi-year-view.component.d.ts +107 -0
- package/lib/date-time/calendar-year-view.component.d.ts +120 -0
- package/lib/date-time/calendar.component.d.ts +154 -0
- package/lib/date-time/date-time-inline.component.d.ts +102 -0
- package/lib/date-time/date-time-picker-container.component.d.ts +130 -0
- package/lib/date-time/date-time-picker-input.directive.d.ts +164 -0
- package/lib/date-time/date-time-picker-intl.service.d.ts +51 -0
- package/lib/date-time/date-time-picker-trigger.directive.d.ts +23 -0
- package/lib/date-time/date-time-picker.animations.d.ts +8 -0
- package/lib/date-time/date-time-picker.component.d.ts +173 -0
- package/lib/date-time/date-time.class.d.ts +103 -0
- package/lib/date-time/date-time.module.d.ts +23 -0
- package/lib/date-time/numberedFixLen.pipe.d.ts +10 -0
- package/lib/date-time/options-provider.d.ts +23 -0
- package/lib/date-time/timer-box.component.d.ts +42 -0
- package/lib/date-time/timer.component.d.ts +131 -0
- package/lib/dialog/dialog-config.class.d.ts +169 -0
- package/lib/dialog/dialog-container.component.d.ts +58 -0
- package/lib/dialog/dialog-ref.class.d.ts +51 -0
- package/lib/dialog/dialog.module.d.ts +11 -0
- package/lib/dialog/dialog.service.d.ts +76 -0
- package/lib/utils/array.utils.d.ts +5 -0
- package/lib/utils/constants.d.ts +19 -0
- package/lib/utils/date.utils.d.ts +12 -0
- package/lib/utils/index.d.ts +4 -0
- package/lib/utils/object.utils.d.ts +11 -0
- package/package.json +51 -0
- package/public_api.d.ts +24 -0
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { Inject, Injectable, Optional } from '@angular/core';
|
|
2
|
+
import { range } from '../../utils/array.utils';
|
|
3
|
+
import { DEFAULT_DATE_NAMES, DEFAULT_DAY_OF_WEEK_NAMES, DEFAULT_MONTH_NAMES, SUPPORTS_INTL_API } from '../../utils/constants';
|
|
4
|
+
import { createDate, getNumDaysInMonth } from '../../utils/date.utils';
|
|
5
|
+
import { DateTimeAdapter, OWL_DATE_TIME_LOCALE } from './date-time-adapter.class';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/cdk/platform";
|
|
8
|
+
/**
|
|
9
|
+
* Matches strings that have the form of a valid RFC 3339 string
|
|
10
|
+
* (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date
|
|
11
|
+
* because the regex will match strings an with out of bounds month, date, etc.
|
|
12
|
+
*/
|
|
13
|
+
const ISO_8601_REGEX = /^\d{4}-\d{2}-\d{2}(?:T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|(?:[+-]\d{2}:\d{2}))?)?$/;
|
|
14
|
+
export class NativeDateTimeAdapter extends DateTimeAdapter {
|
|
15
|
+
constructor(owlDateTimeLocale, platform) {
|
|
16
|
+
super();
|
|
17
|
+
this.owlDateTimeLocale = owlDateTimeLocale;
|
|
18
|
+
super.setLocale(owlDateTimeLocale);
|
|
19
|
+
// IE does its own time zone correction, so we disable this on IE.
|
|
20
|
+
this.useUtcForDisplay = !platform.TRIDENT;
|
|
21
|
+
this._clampDate = platform.TRIDENT || platform.EDGE;
|
|
22
|
+
}
|
|
23
|
+
getYear(date) {
|
|
24
|
+
return date.getFullYear();
|
|
25
|
+
}
|
|
26
|
+
getMonth(date) {
|
|
27
|
+
return date.getMonth();
|
|
28
|
+
}
|
|
29
|
+
getDay(date) {
|
|
30
|
+
return date.getDay();
|
|
31
|
+
}
|
|
32
|
+
getDate(date) {
|
|
33
|
+
return date.getDate();
|
|
34
|
+
}
|
|
35
|
+
getHours(date) {
|
|
36
|
+
return date.getHours();
|
|
37
|
+
}
|
|
38
|
+
getMinutes(date) {
|
|
39
|
+
return date.getMinutes();
|
|
40
|
+
}
|
|
41
|
+
getSeconds(date) {
|
|
42
|
+
return date.getSeconds();
|
|
43
|
+
}
|
|
44
|
+
getTime(date) {
|
|
45
|
+
return date.getTime();
|
|
46
|
+
}
|
|
47
|
+
getNumDaysInMonth(date) {
|
|
48
|
+
return getNumDaysInMonth(date);
|
|
49
|
+
}
|
|
50
|
+
differenceInCalendarDays(dateLeft, dateRight) {
|
|
51
|
+
if (this.isValid(dateLeft) && this.isValid(dateRight)) {
|
|
52
|
+
const dateLeftStartOfDay = this.createDate(this.getYear(dateLeft), this.getMonth(dateLeft), this.getDate(dateLeft));
|
|
53
|
+
const dateRightStartOfDay = this.createDate(this.getYear(dateRight), this.getMonth(dateRight), this.getDate(dateRight));
|
|
54
|
+
const timeStampLeft = this.getTime(dateLeftStartOfDay) - dateLeftStartOfDay.getTimezoneOffset() * this.milliseondsInMinute;
|
|
55
|
+
const timeStampRight = this.getTime(dateRightStartOfDay) - dateRightStartOfDay.getTimezoneOffset() * this.milliseondsInMinute;
|
|
56
|
+
return Math.round((timeStampLeft - timeStampRight) / this.millisecondsInDay);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
getYearName(date) {
|
|
63
|
+
if (SUPPORTS_INTL_API) {
|
|
64
|
+
const dtf = new Intl.DateTimeFormat(this.getLocale(), {
|
|
65
|
+
year: 'numeric',
|
|
66
|
+
timeZone: 'utc'
|
|
67
|
+
});
|
|
68
|
+
return this.stripDirectionalityCharacters(this._format(dtf, date));
|
|
69
|
+
}
|
|
70
|
+
return String(this.getYear(date));
|
|
71
|
+
}
|
|
72
|
+
getMonthNames(style) {
|
|
73
|
+
if (SUPPORTS_INTL_API) {
|
|
74
|
+
const dtf = new Intl.DateTimeFormat(this.getLocale(), {
|
|
75
|
+
month: style,
|
|
76
|
+
timeZone: 'utc'
|
|
77
|
+
});
|
|
78
|
+
return range(12, (i) => this.stripDirectionalityCharacters(this._format(dtf, new Date(2017, i, 1))));
|
|
79
|
+
}
|
|
80
|
+
return DEFAULT_MONTH_NAMES[style];
|
|
81
|
+
}
|
|
82
|
+
getDayOfWeekNames(style) {
|
|
83
|
+
if (SUPPORTS_INTL_API) {
|
|
84
|
+
const dtf = new Intl.DateTimeFormat(this.getLocale(), {
|
|
85
|
+
weekday: style,
|
|
86
|
+
timeZone: 'utc'
|
|
87
|
+
});
|
|
88
|
+
return range(7, (i) => this.stripDirectionalityCharacters(this._format(dtf, new Date(2017, 0, i + 1))));
|
|
89
|
+
}
|
|
90
|
+
return DEFAULT_DAY_OF_WEEK_NAMES[style];
|
|
91
|
+
}
|
|
92
|
+
getDateNames() {
|
|
93
|
+
if (SUPPORTS_INTL_API) {
|
|
94
|
+
const dtf = new Intl.DateTimeFormat(this.getLocale(), {
|
|
95
|
+
day: 'numeric',
|
|
96
|
+
timeZone: 'utc'
|
|
97
|
+
});
|
|
98
|
+
return range(31, (i) => this.stripDirectionalityCharacters(this._format(dtf, new Date(2017, 0, i + 1))));
|
|
99
|
+
}
|
|
100
|
+
return DEFAULT_DATE_NAMES;
|
|
101
|
+
}
|
|
102
|
+
toIso8601(date) {
|
|
103
|
+
return date.toISOString();
|
|
104
|
+
}
|
|
105
|
+
isEqual(dateLeft, dateRight) {
|
|
106
|
+
if (this.isValid(dateLeft) && this.isValid(dateRight)) {
|
|
107
|
+
return dateLeft.getTime() === dateRight.getTime();
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
isSameDay(dateLeft, dateRight) {
|
|
114
|
+
if (this.isValid(dateLeft) && this.isValid(dateRight)) {
|
|
115
|
+
const dateLeftStartOfDay = this.clone(dateLeft);
|
|
116
|
+
const dateRightStartOfDay = this.clone(dateRight);
|
|
117
|
+
dateLeftStartOfDay.setHours(0, 0, 0, 0);
|
|
118
|
+
dateRightStartOfDay.setHours(0, 0, 0, 0);
|
|
119
|
+
return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
isValid(date) {
|
|
126
|
+
return date && !isNaN(date.getTime());
|
|
127
|
+
}
|
|
128
|
+
invalid() {
|
|
129
|
+
return new Date(NaN);
|
|
130
|
+
}
|
|
131
|
+
isDateInstance(obj) {
|
|
132
|
+
return obj instanceof Date;
|
|
133
|
+
}
|
|
134
|
+
addCalendarYears(date, amount) {
|
|
135
|
+
return this.addCalendarMonths(date, amount * 12);
|
|
136
|
+
}
|
|
137
|
+
addCalendarMonths(date, amount) {
|
|
138
|
+
const result = this.clone(date);
|
|
139
|
+
amount = Number(amount);
|
|
140
|
+
const desiredMonth = result.getMonth() + amount;
|
|
141
|
+
const dateWithDesiredMonth = new Date(0);
|
|
142
|
+
dateWithDesiredMonth.setFullYear(result.getFullYear(), desiredMonth, 1);
|
|
143
|
+
dateWithDesiredMonth.setHours(0, 0, 0, 0);
|
|
144
|
+
const daysInMonth = this.getNumDaysInMonth(dateWithDesiredMonth);
|
|
145
|
+
// Set the last day of the new month
|
|
146
|
+
// if the original date was the last day of the longer month
|
|
147
|
+
result.setMonth(desiredMonth, Math.min(daysInMonth, result.getDate()));
|
|
148
|
+
return result;
|
|
149
|
+
}
|
|
150
|
+
addCalendarDays(date, amount) {
|
|
151
|
+
const result = this.clone(date);
|
|
152
|
+
amount = Number(amount);
|
|
153
|
+
result.setDate(result.getDate() + amount);
|
|
154
|
+
return result;
|
|
155
|
+
}
|
|
156
|
+
setHours(date, amount) {
|
|
157
|
+
const result = this.clone(date);
|
|
158
|
+
result.setHours(amount);
|
|
159
|
+
return result;
|
|
160
|
+
}
|
|
161
|
+
setMinutes(date, amount) {
|
|
162
|
+
const result = this.clone(date);
|
|
163
|
+
result.setMinutes(amount);
|
|
164
|
+
return result;
|
|
165
|
+
}
|
|
166
|
+
setSeconds(date, amount) {
|
|
167
|
+
const result = this.clone(date);
|
|
168
|
+
result.setSeconds(amount);
|
|
169
|
+
return result;
|
|
170
|
+
}
|
|
171
|
+
createDate(year, month, date, hours = 0, minutes = 0, seconds = 0) {
|
|
172
|
+
return createDate(year, month, date, hours, minutes, seconds);
|
|
173
|
+
}
|
|
174
|
+
clone(date) {
|
|
175
|
+
return this.createDate(this.getYear(date), this.getMonth(date), this.getDate(date), this.getHours(date), this.getMinutes(date), this.getSeconds(date));
|
|
176
|
+
}
|
|
177
|
+
now() {
|
|
178
|
+
return new Date();
|
|
179
|
+
}
|
|
180
|
+
format(date, displayFormat) {
|
|
181
|
+
if (!this.isValid(date)) {
|
|
182
|
+
throw Error('JSNativeDate: Cannot format invalid date.');
|
|
183
|
+
}
|
|
184
|
+
if (SUPPORTS_INTL_API) {
|
|
185
|
+
if (this._clampDate && (date.getFullYear() < 1 || date.getFullYear() > 9999)) {
|
|
186
|
+
date = this.clone(date);
|
|
187
|
+
date.setFullYear(Math.max(1, Math.min(9999, date.getFullYear())));
|
|
188
|
+
}
|
|
189
|
+
displayFormat = { ...displayFormat, timeZone: 'utc' };
|
|
190
|
+
const dtf = new Intl.DateTimeFormat(this.getLocale(), displayFormat);
|
|
191
|
+
return this.stripDirectionalityCharacters(this._format(dtf, date));
|
|
192
|
+
}
|
|
193
|
+
return this.stripDirectionalityCharacters(date.toDateString());
|
|
194
|
+
}
|
|
195
|
+
parse(value, parseFormat) {
|
|
196
|
+
// There is no way using the native JS Date to set the parse format or locale
|
|
197
|
+
if (typeof value === 'number') {
|
|
198
|
+
return new Date(value);
|
|
199
|
+
}
|
|
200
|
+
return value ? new Date(Date.parse(value)) : null;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings
|
|
204
|
+
* (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an
|
|
205
|
+
* invalid date for all other values.
|
|
206
|
+
*/
|
|
207
|
+
deserialize(value) {
|
|
208
|
+
if (typeof value === 'string') {
|
|
209
|
+
if (!value) {
|
|
210
|
+
return null;
|
|
211
|
+
}
|
|
212
|
+
// The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the
|
|
213
|
+
// string is the right format first.
|
|
214
|
+
if (ISO_8601_REGEX.test(value)) {
|
|
215
|
+
const date = new Date(value);
|
|
216
|
+
if (this.isValid(date)) {
|
|
217
|
+
return date;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return super.deserialize(value);
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while
|
|
225
|
+
* other browsers do not. We remove them to make output consistent and because they interfere with
|
|
226
|
+
* date parsing.
|
|
227
|
+
*/
|
|
228
|
+
stripDirectionalityCharacters(str) {
|
|
229
|
+
return str.replace(/[\u200e\u200f]/g, '');
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* When converting Date object to string, javascript built-in functions may return wrong
|
|
233
|
+
* results because it applies its internal DST rules. The DST rules around the world change
|
|
234
|
+
* very frequently, and the current valid rule is not always valid in previous years though.
|
|
235
|
+
* We work around this problem building a new Date object which has its internal UTC
|
|
236
|
+
* representation with the local date and time.
|
|
237
|
+
*/
|
|
238
|
+
_format(dtf, date) {
|
|
239
|
+
const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));
|
|
240
|
+
return dtf.format(d);
|
|
241
|
+
}
|
|
242
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: NativeDateTimeAdapter, deps: [{ token: OWL_DATE_TIME_LOCALE, optional: true }, { token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
243
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: NativeDateTimeAdapter }); }
|
|
244
|
+
}
|
|
245
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: NativeDateTimeAdapter, decorators: [{
|
|
246
|
+
type: Injectable
|
|
247
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
248
|
+
type: Optional
|
|
249
|
+
}, {
|
|
250
|
+
type: Inject,
|
|
251
|
+
args: [OWL_DATE_TIME_LOCALE]
|
|
252
|
+
}] }, { type: i1.Platform }] });
|
|
253
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLWRhdGUtdGltZS1hZGFwdGVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGlja2VyL3NyYy9saWIvZGF0ZS10aW1lL2FkYXB0ZXIvbmF0aXZlLWRhdGUtdGltZS1hZGFwdGVyLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEQsT0FBTyxFQUNMLGtCQUFrQixFQUNsQix5QkFBeUIsRUFDekIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNsQixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQUVsRjs7OztHQUlHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsZ0ZBQWdGLENBQUM7QUFHeEcsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGVBQXFCO0lBWTlELFlBR1UsaUJBQXlCLEVBQ2pDLFFBQWtCO1FBRWxCLEtBQUssRUFBRSxDQUFDO1FBSEEsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFRO1FBSWpDLEtBQUssQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUVuQyxrRUFBa0U7UUFDbEUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUMxQyxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQztJQUN0RCxDQUFDO0lBRU0sT0FBTyxDQUFDLElBQVU7UUFDdkIsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFF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LElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUN2QixPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyw2QkFBNkIsQ0FBQyxHQUFXO1FBQy9DLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssT0FBTyxDQUFDLEdBQXdCLEVBQUUsSUFBVTtRQUNsRCxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FDaEIsSUFBSSxDQUFDLEdBQUcsQ0FDTixJQUFJLENBQUMsV0FBVyxFQUFFLEVBQ2xCLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFDZixJQUFJLENBQUMsT0FBTyxFQUFFLEVBQ2QsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUNmLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFDakIsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUNqQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQ3ZCLENBQ0YsQ0FBQztRQUNGLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixDQUFDOzhHQTNUVSxxQkFBcUIsa0JBY3RCLG9CQUFvQjtrSEFkbkIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVOzswQkFjTixRQUFROzswQkFDUixNQUFNOzJCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogbmF0aXZlLWRhdGUtdGltZS1hZGFwdGVyLmNsYXNzXG4gKi9cblxuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcmFuZ2UgfSBmcm9tICcuLi8uLi91dGlscy9hcnJheS51dGlscyc7XG5pbXBvcnQge1xuICBERUZBVUxUX0RBVEVfTkFNRVMsXG4gIERFRkFVTFRfREFZX09GX1dFRUtfTkFNRVMsXG4gIERFRkFVTFRfTU9OVEhfTkFNRVMsXG4gIFNVUFBPUlRTX0lOVExfQVBJXG59IGZyb20gJy4uLy4uL3V0aWxzL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBjcmVhdGVEYXRlLCBnZXROdW1EYXlzSW5Nb250aCB9IGZyb20gJy4uLy4uL3V0aWxzL2RhdGUudXRpbHMnO1xuaW1wb3J0IHsgRGF0ZVRpbWVBZGFwdGVyLCBPV0xfREFURV9USU1FX0xPQ0FMRSB9IGZyb20gJy4vZGF0ZS10aW1lLWFkYXB0ZXIuY2xhc3MnO1xuXG4vKipcbiAqIE1hdGNoZXMgc3RyaW5ncyB0aGF0IGhhdmUgdGhlIGZvcm0gb2YgYSB2YWxpZCBSRkMgMzMzOSBzdHJpbmdcbiAqIChodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzMzOSkuIE5vdGUgdGhhdCB0aGUgc3RyaW5nIG1heSBub3QgYWN0dWFsbHkgYmUgYSB2YWxpZCBkYXRlXG4gKiBiZWNhdXNlIHRoZSByZWdleCB3aWxsIG1hdGNoIHN0cmluZ3MgYW4gd2l0aCBvdXQgb2YgYm91bmRzIG1vbnRoLCBkYXRlLCBldGMuXG4gKi9cbmNvbnN0IElTT184NjAxX1JFR0VYID0gL15cXGR7NH0tXFxkezJ9LVxcZHsyfSg/OlRcXGR7Mn06XFxkezJ9OlxcZHsyfSg/OlxcLlxcZCspPyg/Olp8KD86WystXVxcZHsyfTpcXGR7Mn0pKT8pPyQvO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmF0aXZlRGF0ZVRpbWVBZGFwdGVyIGV4dGVuZHMgRGF0ZVRpbWVBZGFwdGVyPERhdGU+IHtcbiAgLyoqIFdoZXRoZXIgdG8gY2xhbXAgdGhlIGRhdGUgYmV0d2VlbiAxIGFuZCA5OTk5IHRvIGF2b2lkIElFIGFuZCBFZGdlIGVycm9ycy4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfY2xhbXBEYXRlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHVzZSBgdGltZVpvbmU6ICd1dGMnYCB3aXRoIGBJbnRsLkRhdGVUaW1lRm9ybWF0YCB3aGVuIGZvcm1hdHRpbmcgZGF0ZXMuXG4gICAqIFdpdGhvdXQgdGhpcyBgSW50bC5EYXRlVGltZUZvcm1hdGAgc29tZXRpbWVzIGNob29zZXMgdGhlIHdyb25nIHRpbWVab25lLCB3aGljaCBjYW4gdGhyb3cgb2ZmXG4gICAqIHRoZSByZXN1bHQuIChlLmcuIGluIHRoZSBlbi1VUyBsb2NhbGUgYG5ldyBEYXRlKDE4MDAsIDcsIDE0KS50b0xvY2FsZURhdGVTdHJpbmcoKWBcbiAgICogd2lsbCBwcm9kdWNlIGAnOC8xMy8xODAwJ2AuXG4gICAqL1xuICBwdWJsaWMgdXNlVXRjRm9yRGlzcGxheTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoT1dMX0RBVEVfVElNRV9MT0NBTEUpXG4gICAgcHJpdmF0ZSBvd2xEYXRlVGltZUxvY2FsZTogc3RyaW5nLFxuICAgIHBsYXRmb3JtOiBQbGF0Zm9ybVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHN1cGVyLnNldExvY2FsZShvd2xEYXRlVGltZUxvY2FsZSk7XG5cbiAgICAvLyBJRSBkb2VzIGl0cyBvd24gdGltZSB6b25lIGNvcnJlY3Rpb24sIHNvIHdlIGRpc2FibGUgdGhpcyBvbiBJRS5cbiAgICB0aGlzLnVzZVV0Y0ZvckRpc3BsYXkgPSAhcGxhdGZvcm0uVFJJREVOVDtcbiAgICB0aGlzLl9jbGFtcERhdGUgPSBwbGF0Zm9ybS5UUklERU5UIHx8IHBsYXRmb3JtLkVER0U7XG4gIH1cblxuICBwdWJsaWMgZ2V0WWVhcihkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICB9XG5cbiAgcHVibGljIGdldE1vbnRoKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLmdldE1vbnRoKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF5KGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLmdldERheSgpO1xuICB9XG5cbiAgcHVibGljIGdldERhdGUoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRhdGUuZ2V0RGF0ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldEhvdXJzKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLmdldEhvdXJzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TWludXRlcyhkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5nZXRNaW51dGVzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2Vjb25kcyhkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5nZXRTZWNvbmRzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VGltZShkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5nZXRUaW1lKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TnVtRGF5c0luTW9udGgoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGdldE51bURheXNJbk1vbnRoKGRhdGUpO1xuICB9XG5cbiAgcHVibGljIGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhkYXRlTGVmdDogRGF0ZSwgZGF0ZVJpZ2h0OiBEYXRlKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5pc1ZhbGlkKGRhdGVMZWZ0KSAmJiB0aGlzLmlzVmFsaWQoZGF0ZVJpZ2h0KSkge1xuICAgICAgY29uc3QgZGF0ZUxlZnRTdGFydE9mRGF5ID0gdGhpcy5jcmVhdGVEYXRlKFxuICAgICAgICB0aGlzLmdldFllYXIoZGF0ZUxlZnQpLFxuICAgICAgICB0aGlzLmdldE1vbnRoKGRhdGVMZWZ0KSxcbiAgICAgICAgdGhpcy5nZXREYXRlKGRhdGVMZWZ0KVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGRhdGVSaWdodFN0YXJ0T2ZEYXkgPSB0aGlzLmNyZWF0ZURhdGUoXG4gICAgICAgIHRoaXMuZ2V0WWVhcihkYXRlUmlnaHQpLFxuICAgICAgICB0aGlzLmdldE1vbnRoKGRhdGVSaWdodCksXG4gICAgICAgIHRoaXMuZ2V0RGF0ZShkYXRlUmlnaHQpXG4gICAgICApO1xuXG4gICAgICBjb25zdCB0aW1lU3RhbXBMZWZ0ID1cbiAgICAgICAgdGhpcy5nZXRUaW1lKGRhdGVMZWZ0U3RhcnRPZkRheSkgLSBkYXRlTGVmdFN0YXJ0T2ZEYXkuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIHRoaXMubWlsbGlzZW9uZHNJbk1pbnV0ZTtcbiAgICAgIGNvbnN0IHRpbWVTdGFtcFJpZ2h0ID1cbiAgICAgICAgdGhpcy5nZXRUaW1lKGRhdGVSaWdodFN0YXJ0T2ZEYXkpIC0gZGF0ZVJpZ2h0U3RhcnRPZkRheS5nZXRUaW1lem9uZU9mZnNldCgpICogdGhpcy5taWxsaXNlb25kc0luTWludXRlO1xuICAgICAgcmV0dXJuIE1hdGgucm91bmQoKHRpbWVTdGFtcExlZnQgLSB0aW1lU3RhbXBSaWdodCkgLyB0aGlzLm1pbGxpc2Vjb25kc0luRGF5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFllYXJOYW1lKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIGlmIChTVVBQT1JUU19JTlRMX0FQSSkge1xuICAgICAgY29uc3QgZHRmID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodGhpcy5nZXRMb2NhbGUoKSwge1xuICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICAgIHRpbWVab25lOiAndXRjJ1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gdGhpcy5zdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyh0aGlzLl9mb3JtYXQoZHRmLCBkYXRlKSk7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcodGhpcy5nZXRZZWFyKGRhdGUpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNb250aE5hbWVzKHN0eWxlOiAnbG9uZycgfCAnc2hvcnQnIHwgJ25hcnJvdycpOiBBcnJheTxzdHJpbmc+IHtcbiAgICBpZiAoU1VQUE9SVFNfSU5UTF9BUEkpIHtcbiAgICAgIGNvbnN0IGR0ZiA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMuZ2V0TG9jYWxlKCksIHtcbiAgICAgICAgbW9udGg6IHN0eWxlLFxuICAgICAgICB0aW1lWm9uZTogJ3V0YydcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJhbmdlKDEyLCAoaSkgPT4gdGhpcy5zdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyh0aGlzLl9mb3JtYXQoZHRmLCBuZXcgRGF0ZSgyMDE3LCBpLCAxKSkpKTtcbiAgICB9XG4gICAgcmV0dXJuIERFRkFVTFRfTU9OVEhfTkFNRVNbc3R5bGVdO1xuICB9XG5cbiAgcHVibGljIGdldERheU9mV2Vla05hbWVzKHN0eWxlOiAnbG9uZycgfCAnc2hvcnQnIHwgJ25hcnJvdycpOiBBcnJheTxzdHJpbmc+IHtcbiAgICBpZiAoU1VQUE9SVFNfSU5UTF9BUEkpIHtcbiAgICAgIGNvbnN0IGR0ZiA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMuZ2V0TG9jYWxlKCksIHtcbiAgICAgICAgd2Vla2RheTogc3R5bGUsXG4gICAgICAgIHRpbWVab25lOiAndXRjJ1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmFuZ2UoNywgKGkpID0+IHRoaXMuc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnModGhpcy5fZm9ybWF0KGR0ZiwgbmV3IERhdGUoMjAxNywgMCwgaSArIDEpKSkpO1xuICAgIH1cblxuICAgIHJldHVybiBERUZBVUxUX0RBWV9PRl9XRUVLX05BTUVTW3N0eWxlXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREYXRlTmFtZXMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgaWYgKFNVUFBPUlRTX0lOVExfQVBJKSB7XG4gICAgICBjb25zdCBkdGYgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmdldExvY2FsZSgpLCB7XG4gICAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgICB0aW1lWm9uZTogJ3V0YydcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJhbmdlKDMxLCAoaSkgPT4gdGhpcy5zdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyh0aGlzLl9mb3JtYXQoZHRmLCBuZXcgRGF0ZSgyMDE3LCAwLCBpICsgMSkpKSk7XG4gICAgfVxuICAgIHJldHVybiBERUZBVUxUX0RBVEVfTkFNRVM7XG4gIH1cblxuICBwdWJsaWMgdG9Jc284NjAxKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXRlLnRvSVNPU3RyaW5nKCk7XG4gIH1cblxuICBwdWJsaWMgaXNFcXVhbChkYXRlTGVmdDogRGF0ZSwgZGF0ZVJpZ2h0OiBEYXRlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuaXNWYWxpZChkYXRlTGVmdCkgJiYgdGhpcy5pc1ZhbGlkKGRhdGVSaWdodCkpIHtcbiAgICAgIHJldHVybiBkYXRlTGVmdC5nZXRUaW1lKCkgPT09IGRhdGVSaWdodC5nZXRUaW1lKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNTYW1lRGF5KGRhdGVMZWZ0OiBEYXRlLCBkYXRlUmlnaHQ6IERhdGUpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5pc1ZhbGlkKGRhdGVMZWZ0KSAmJiB0aGlzLmlzVmFsaWQoZGF0ZVJpZ2h0KSkge1xuICAgICAgY29uc3QgZGF0ZUxlZnRTdGFydE9mRGF5ID0gdGhpcy5jbG9uZShkYXRlTGVmdCk7XG4gICAgICBjb25zdCBkYXRlUmlnaHRTdGFydE9mRGF5ID0gdGhpcy5jbG9uZShkYXRlUmlnaHQpO1xuICAgICAgZGF0ZUxlZnRTdGFydE9mRGF5LnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgZGF0ZVJpZ2h0U3RhcnRPZkRheS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlTGVmdFN0YXJ0T2ZEYXkuZ2V0VGltZSgpID09PSBkYXRlUmlnaHRTdGFydE9mRGF5LmdldFRpbWUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc1ZhbGlkKGRhdGU6IERhdGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZGF0ZSAmJiAhaXNOYU4oZGF0ZS5nZXRUaW1lKCkpO1xuICB9XG5cbiAgcHVibGljIGludmFsaWQoKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cblxuICBwdWJsaWMgaXNEYXRlSW5zdGFuY2Uob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgRGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRDYWxlbmRhclllYXJzKGRhdGU6IERhdGUsIGFtb3VudDogbnVtYmVyKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ2FsZW5kYXJNb250aHMoZGF0ZSwgYW1vdW50ICogMTIpO1xuICB9XG5cbiAgcHVibGljIGFkZENhbGVuZGFyTW9udGhzKGRhdGU6IERhdGUsIGFtb3VudDogbnVtYmVyKTogRGF0ZSB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jbG9uZShkYXRlKTtcbiAgICBhbW91bnQgPSBOdW1iZXIoYW1vdW50KTtcblxuICAgIGNvbnN0IGRlc2lyZWRNb250aCA9IHJlc3VsdC5nZXRNb250aCgpICsgYW1vdW50O1xuICAgIGNvbnN0IGRhdGVXaXRoRGVzaXJlZE1vbnRoID0gbmV3IERhdGUoMCk7XG4gICAgZGF0ZVdpdGhEZXNpcmVkTW9udGguc2V0RnVsbFllYXIocmVzdWx0LmdldEZ1bGxZZWFyKCksIGRlc2lyZWRNb250aCwgMSk7XG4gICAgZGF0ZVdpdGhEZXNpcmVkTW9udGguc2V0SG91cnMoMCwgMCwgMCwgMCk7XG5cbiAgICBjb25zdCBkYXlzSW5Nb250aCA9IHRoaXMuZ2V0TnVtRGF5c0luTW9udGgoZGF0ZVdpdGhEZXNpcmVkTW9udGgpO1xuICAgIC8vIFNldCB0aGUgbGFzdCBkYXkgb2YgdGhlIG5ldyBtb250aFxuICAgIC8vIGlmIHRoZSBvcmlnaW5hbCBkYXRlIHdhcyB0aGUgbGFzdCBkYXkgb2YgdGhlIGxvbmdlciBtb250aFxuICAgIHJlc3VsdC5zZXRNb250aChkZXNpcmVkTW9udGgsIE1hdGgubWluKGRheXNJbk1vbnRoLCByZXN1bHQuZ2V0RGF0ZSgpKSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRDYWxlbmRhckRheXMoZGF0ZTogRGF0ZSwgYW1vdW50OiBudW1iZXIpOiBEYXRlIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNsb25lKGRhdGUpO1xuICAgIGFtb3VudCA9IE51bWJlcihhbW91bnQpO1xuICAgIHJlc3VsdC5zZXREYXRlKHJlc3VsdC5nZXREYXRlKCkgKyBhbW91bnQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgc2V0SG91cnMoZGF0ZTogRGF0ZSwgYW1vdW50OiBudW1iZXIpOiBEYXRlIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNsb25lKGRhdGUpO1xuICAgIHJlc3VsdC5zZXRIb3VycyhhbW91bnQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgc2V0TWludXRlcyhkYXRlOiBEYXRlLCBhbW91bnQ6IG51bWJlcik6IERhdGUge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY2xvbmUoZGF0ZSk7XG4gICAgcmVzdWx0LnNldE1pbnV0ZXMoYW1vdW50KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIHNldFNlY29uZHMoZGF0ZTogRGF0ZSwgYW1vdW50OiBudW1iZXIpOiBEYXRlIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNsb25lKGRhdGUpO1xuICAgIHJlc3VsdC5zZXRTZWNvbmRzKGFtb3VudCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVEYXRlKFxuICAgIHllYXI6IG51bWJlcixcbiAgICBtb250aDogbnVtYmVyLFxuICAgIGRhdGU6IG51bWJlcixcbiAgICBob3VyczogbnVtYmVyID0gMCxcbiAgICBtaW51dGVzOiBudW1iZXIgPSAwLFxuICAgIHNlY29uZHM6IG51bWJlciA9IDBcbiAgKTogRGF0ZSB7XG4gICAgcmV0dXJuIGNyZWF0ZURhdGUoeWVhciwgbW9udGgsIGRhdGUsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9uZShkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlRGF0ZShcbiAgICAgIHRoaXMuZ2V0WWVhcihkYXRlKSxcbiAgICAgIHRoaXMuZ2V0TW9udGgoZGF0ZSksXG4gICAgICB0aGlzLmdldERhdGUoZGF0ZSksXG4gICAgICB0aGlzLmdldEhvdXJzKGRhdGUpLFxuICAgICAgdGhpcy5nZXRNaW51dGVzKGRhdGUpLFxuICAgICAgdGhpcy5nZXRTZWNvbmRzKGRhdGUpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBub3coKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKCk7XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0KGRhdGU6IERhdGUsIGRpc3BsYXlGb3JtYXQ6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQoZGF0ZSkpIHtcbiAgICAgIHRocm93IEVycm9yKCdKU05hdGl2ZURhdGU6IENhbm5vdCBmb3JtYXQgaW52YWxpZCBkYXRlLicpO1xuICAgIH1cblxuICAgIGlmIChTVVBQT1JUU19JTlRMX0FQSSkge1xuICAgICAgaWYgKHRoaXMuX2NsYW1wRGF0ZSAmJiAoZGF0ZS5nZXRGdWxsWWVhcigpIDwgMSB8fCBkYXRlLmdldEZ1bGxZZWFyKCkgPiA5OTk5KSkge1xuICAgICAgICBkYXRlID0gdGhpcy5jbG9uZShkYXRlKTtcbiAgICAgICAgZGF0ZS5zZXRGdWxsWWVhcihNYXRoLm1heCgxLCBNYXRoLm1pbig5OTk5LCBkYXRlLmdldEZ1bGxZZWFyKCkpKSk7XG4gICAgICB9XG5cbiAgICAgIGRpc3BsYXlGb3JtYXQgPSB7IC4uLmRpc3BsYXlGb3JtYXQsIHRpbWVab25lOiAndXRjJyB9O1xuICAgICAgY29uc3QgZHRmID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodGhpcy5nZXRMb2NhbGUoKSwgZGlzcGxheUZvcm1hdCk7XG4gICAgICByZXR1cm4gdGhpcy5zdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyh0aGlzLl9mb3JtYXQoZHRmLCBkYXRlKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnMoZGF0ZS50b0RhdGVTdHJpbmcoKSk7XG4gIH1cblxuICBwdWJsaWMgcGFyc2UodmFsdWU6IGFueSwgcGFyc2VGb3JtYXQ6IGFueSk6IERhdGUgfCBudWxsIHtcbiAgICAvLyBUaGVyZSBpcyBubyB3YXkgdXNpbmcgdGhlIG5hdGl2ZSBKUyBEYXRlIHRvIHNldCB0aGUgcGFyc2UgZm9ybWF0IG9yIGxvY2FsZVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWUgPyBuZXcgRGF0ZShEYXRlLnBhcnNlKHZhbHVlKSkgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGdpdmVuIHZhbHVlIGlmIGdpdmVuIGEgdmFsaWQgRGF0ZSBvciBudWxsLiBEZXNlcmlhbGl6ZXMgdmFsaWQgSVNPIDg2MDEgc3RyaW5nc1xuICAgKiAoaHR0cHM6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzMzMzkudHh0KSBpbnRvIHZhbGlkIERhdGVzIGFuZCBlbXB0eSBzdHJpbmcgaW50byBudWxsLiBSZXR1cm5zIGFuXG4gICAqIGludmFsaWQgZGF0ZSBmb3IgYWxsIG90aGVyIHZhbHVlcy5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBkZXNlcmlhbGl6ZSh2YWx1ZTogYW55KTogRGF0ZSB8IG51bGwge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgLy8gVGhlIGBEYXRlYCBjb25zdHJ1Y3RvciBhY2NlcHRzIGZvcm1hdHMgb3RoZXIgdGhhbiBJU08gODYwMSwgc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlXG4gICAgICAvLyBzdHJpbmcgaXMgdGhlIHJpZ2h0IGZvcm1hdCBmaXJzdC5cbiAgICAgIGlmIChJU09fODYwMV9SRUdFWC50ZXN0KHZhbHVlKSkge1xuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKGRhdGUpKSB7XG4gICAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLmRlc2VyaWFsaXplKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdHJpcCBvdXQgdW5pY29kZSBMVFIgYW5kIFJUTCBjaGFyYWN0ZXJzLiBFZGdlIGFuZCBJRSBpbnNlcnQgdGhlc2UgaW50byBmb3JtYXR0ZWQgZGF0ZXMgd2hpbGVcbiAgICogb3RoZXIgYnJvd3NlcnMgZG8gbm90LiBXZSByZW1vdmUgdGhlbSB0byBtYWtlIG91dHB1dCBjb25zaXN0ZW50IGFuZCBiZWNhdXNlIHRoZXkgaW50ZXJmZXJlIHdpdGhcbiAgICogZGF0ZSBwYXJzaW5nLlxuICAgKi9cbiAgcHJpdmF0ZSBzdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bXFx1MjAwZVxcdTIwMGZdL2csICcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIGNvbnZlcnRpbmcgRGF0ZSBvYmplY3QgdG8gc3RyaW5nLCBqYXZhc2NyaXB0IGJ1aWx0LWluIGZ1bmN0aW9ucyBtYXkgcmV0dXJuIHdyb25nXG4gICAqIHJlc3VsdHMgYmVjYXVzZSBpdCBhcHBsaWVzIGl0cyBpbnRlcm5hbCBEU1QgcnVsZXMuIFRoZSBEU1QgcnVsZXMgYXJvdW5kIHRoZSB3b3JsZCBjaGFuZ2VcbiAgICogdmVyeSBmcmVxdWVudGx5LCBhbmQgdGhlIGN1cnJlbnQgdmFsaWQgcnVsZSBpcyBub3QgYWx3YXlzIHZhbGlkIGluIHByZXZpb3VzIHllYXJzIHRob3VnaC5cbiAgICogV2Ugd29yayBhcm91bmQgdGhpcyBwcm9ibGVtIGJ1aWxkaW5nIGEgbmV3IERhdGUgb2JqZWN0IHdoaWNoIGhhcyBpdHMgaW50ZXJuYWwgVVRDXG4gICAqIHJlcHJlc2VudGF0aW9uIHdpdGggdGhlIGxvY2FsIGRhdGUgYW5kIHRpbWUuXG4gICAqL1xuICBwcml2YXRlIF9mb3JtYXQoZHRmOiBJbnRsLkRhdGVUaW1lRm9ybWF0LCBkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICBjb25zdCBkID0gbmV3IERhdGUoXG4gICAgICBEYXRlLlVUQyhcbiAgICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICBkYXRlLmdldE1vbnRoKCksXG4gICAgICAgIGRhdGUuZ2V0RGF0ZSgpLFxuICAgICAgICBkYXRlLmdldEhvdXJzKCksXG4gICAgICAgIGRhdGUuZ2V0TWludXRlcygpLFxuICAgICAgICBkYXRlLmdldFNlY29uZHMoKSxcbiAgICAgICAgZGF0ZS5nZXRNaWxsaXNlY29uZHMoKVxuICAgICAgKVxuICAgICk7XG4gICAgcmV0dXJuIGR0Zi5mb3JtYXQoZCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export const OWL_NATIVE_DATE_TIME_FORMATS = {
|
|
2
|
+
parseInput: null,
|
|
3
|
+
fullPickerInput: {
|
|
4
|
+
year: 'numeric',
|
|
5
|
+
month: 'numeric',
|
|
6
|
+
day: 'numeric',
|
|
7
|
+
hour: 'numeric',
|
|
8
|
+
minute: 'numeric'
|
|
9
|
+
},
|
|
10
|
+
datePickerInput: { year: 'numeric', month: 'numeric', day: 'numeric' },
|
|
11
|
+
timePickerInput: { hour: 'numeric', minute: 'numeric' },
|
|
12
|
+
monthYearLabel: { year: 'numeric', month: 'short' },
|
|
13
|
+
dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },
|
|
14
|
+
monthYearA11yLabel: { year: 'numeric', month: 'long' }
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLWRhdGUtdGltZS1mb3JtYXQuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9waWNrZXIvc3JjL2xpYi9kYXRlLXRpbWUvYWRhcHRlci9uYXRpdmUtZGF0ZS10aW1lLWZvcm1hdC5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBdUI7SUFDOUQsVUFBVSxFQUFFLElBQUk7SUFDaEIsZUFBZSxFQUFFO1FBQ2YsSUFBSSxFQUFFLFNBQVM7UUFDZixLQUFLLEVBQUUsU0FBUztRQUNoQixHQUFHLEVBQUUsU0FBUztRQUNkLElBQUksRUFBRSxTQUFTO1FBQ2YsTUFBTSxFQUFFLFNBQVM7S0FDbEI7SUFDRCxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRTtJQUN0RSxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUU7SUFDdkQsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0lBQ25ELGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFO0lBQ2pFLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0NBQ3ZELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIG5hdGl2ZS1kYXRlLXRpbWUtZm9ybWF0LmNsYXNzXG4gKi9cbmltcG9ydCB7IE93bERhdGVUaW1lRm9ybWF0cyB9IGZyb20gJy4vZGF0ZS10aW1lLWZvcm1hdC5jbGFzcyc7XG5cbmV4cG9ydCBjb25zdCBPV0xfTkFUSVZFX0RBVEVfVElNRV9GT1JNQVRTOiBPd2xEYXRlVGltZUZvcm1hdHMgPSB7XG4gIHBhcnNlSW5wdXQ6IG51bGwsXG4gIGZ1bGxQaWNrZXJJbnB1dDoge1xuICAgIHllYXI6ICdudW1lcmljJyxcbiAgICBtb250aDogJ251bWVyaWMnLFxuICAgIGRheTogJ251bWVyaWMnLFxuICAgIGhvdXI6ICdudW1lcmljJyxcbiAgICBtaW51dGU6ICdudW1lcmljJ1xuICB9LFxuICBkYXRlUGlja2VySW5wdXQ6IHsgeWVhcjogJ251bWVyaWMnLCBtb250aDogJ251bWVyaWMnLCBkYXk6ICdudW1lcmljJyB9LFxuICB0aW1lUGlja2VySW5wdXQ6IHsgaG91cjogJ251bWVyaWMnLCBtaW51dGU6ICdudW1lcmljJyB9LFxuICBtb250aFllYXJMYWJlbDogeyB5ZWFyOiAnbnVtZXJpYycsIG1vbnRoOiAnc2hvcnQnIH0sXG4gIGRhdGVBMTF5TGFiZWw6IHsgeWVhcjogJ251bWVyaWMnLCBtb250aDogJ2xvbmcnLCBkYXk6ICdudW1lcmljJyB9LFxuICBtb250aFllYXJBMTF5TGFiZWw6IHsgeWVhcjogJ251bWVyaWMnLCBtb250aDogJ2xvbmcnIH1cbn07XG4iXX0=
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* native-date-time.module
|
|
3
|
+
*/
|
|
4
|
+
import { PlatformModule } from '@angular/cdk/platform';
|
|
5
|
+
import { NgModule } from '@angular/core';
|
|
6
|
+
import { DateTimeAdapter } from './date-time-adapter.class';
|
|
7
|
+
import { OWL_DATE_TIME_FORMATS } from './date-time-format.class';
|
|
8
|
+
import { NativeDateTimeAdapter } from './native-date-time-adapter.class';
|
|
9
|
+
import { OWL_NATIVE_DATE_TIME_FORMATS } from './native-date-time-format.class';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
export class NativeDateTimeModule {
|
|
12
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: NativeDateTimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
13
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: NativeDateTimeModule, imports: [PlatformModule] }); }
|
|
14
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: NativeDateTimeModule, providers: [{ provide: DateTimeAdapter, useClass: NativeDateTimeAdapter }], imports: [PlatformModule] }); }
|
|
15
|
+
}
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: NativeDateTimeModule, decorators: [{
|
|
17
|
+
type: NgModule,
|
|
18
|
+
args: [{
|
|
19
|
+
imports: [PlatformModule],
|
|
20
|
+
providers: [{ provide: DateTimeAdapter, useClass: NativeDateTimeAdapter }]
|
|
21
|
+
}]
|
|
22
|
+
}] });
|
|
23
|
+
export class OwlNativeDateTimeModule {
|
|
24
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: OwlNativeDateTimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
25
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: OwlNativeDateTimeModule, imports: [NativeDateTimeModule] }); }
|
|
26
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: OwlNativeDateTimeModule, providers: [
|
|
27
|
+
{
|
|
28
|
+
provide: OWL_DATE_TIME_FORMATS,
|
|
29
|
+
useValue: OWL_NATIVE_DATE_TIME_FORMATS
|
|
30
|
+
}
|
|
31
|
+
], imports: [NativeDateTimeModule] }); }
|
|
32
|
+
}
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: OwlNativeDateTimeModule, decorators: [{
|
|
34
|
+
type: NgModule,
|
|
35
|
+
args: [{
|
|
36
|
+
imports: [NativeDateTimeModule],
|
|
37
|
+
providers: [
|
|
38
|
+
{
|
|
39
|
+
provide: OWL_DATE_TIME_FORMATS,
|
|
40
|
+
useValue: OWL_NATIVE_DATE_TIME_FORMATS
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
}]
|
|
44
|
+
}] });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLWRhdGUtdGltZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9waWNrZXIvc3JjL2xpYi9kYXRlLXRpbWUvYWRhcHRlci9uYXRpdmUtZGF0ZS10aW1lLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFNL0UsTUFBTSxPQUFPLG9CQUFvQjs4R0FBcEIsb0JBQW9COytHQUFwQixvQkFBb0IsWUFIckIsY0FBYzsrR0FHYixvQkFBb0IsYUFGcEIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFLENBQUMsWUFEaEUsY0FBYzs7MkZBR2Isb0JBQW9CO2tCQUpoQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQztvQkFDekIsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSxDQUFDO2lCQUMzRTs7QUFZRCxNQUFNLE9BQU8sdUJBQXVCOzhHQUF2Qix1QkFBdUI7K0dBQXZCLHVCQUF1QixZQVh2QixvQkFBb0I7K0dBV3BCLHVCQUF1QixhQVB2QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxxQkFBcUI7Z0JBQzlCLFFBQVEsRUFBRSw0QkFBNEI7YUFDdkM7U0FDRixZQU5TLG9CQUFvQjs7MkZBUW5CLHVCQUF1QjtrQkFUbkMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztvQkFDL0IsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxxQkFBcUI7NEJBQzlCLFFBQVEsRUFBRSw0QkFBNEI7eUJBQ3ZDO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBuYXRpdmUtZGF0ZS10aW1lLm1vZHVsZVxuICovXG5cbmltcG9ydCB7IFBsYXRmb3JtTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRlVGltZUFkYXB0ZXIgfSBmcm9tICcuL2RhdGUtdGltZS1hZGFwdGVyLmNsYXNzJztcbmltcG9ydCB7IE9XTF9EQVRFX1RJTUVfRk9STUFUUyB9IGZyb20gJy4vZGF0ZS10aW1lLWZvcm1hdC5jbGFzcyc7XG5pbXBvcnQgeyBOYXRpdmVEYXRlVGltZUFkYXB0ZXIgfSBmcm9tICcuL25hdGl2ZS1kYXRlLXRpbWUtYWRhcHRlci5jbGFzcyc7XG5pbXBvcnQgeyBPV0xfTkFUSVZFX0RBVEVfVElNRV9GT1JNQVRTIH0gZnJvbSAnLi9uYXRpdmUtZGF0ZS10aW1lLWZvcm1hdC5jbGFzcyc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtQbGF0Zm9ybU1vZHVsZV0sXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogRGF0ZVRpbWVBZGFwdGVyLCB1c2VDbGFzczogTmF0aXZlRGF0ZVRpbWVBZGFwdGVyIH1dXG59KVxuZXhwb3J0IGNsYXNzIE5hdGl2ZURhdGVUaW1lTW9kdWxlIHt9XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtOYXRpdmVEYXRlVGltZU1vZHVsZV0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE9XTF9EQVRFX1RJTUVfRk9STUFUUyxcbiAgICAgIHVzZVZhbHVlOiBPV0xfTkFUSVZFX0RBVEVfVElNRV9GT1JNQVRTXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE93bE5hdGl2ZURhdGVUaW1lTW9kdWxlIHt9XG4iXX0=
|