@acorex/components 16.0.20 → 16.0.22
Sign up to get free protection for your applications and to get access to all the features.
- package/esm2022/lib/calendar/calendar-box/calendar-box.component.mjs +74 -31
- package/esm2022/lib/property-editor/editors/selectbox-editor/selectbox.editor.mjs +4 -4
- package/esm2022/lib/tooltip/tooltip.directive.mjs +16 -5
- package/esm2022/lib/upload-file/upload-file.component.mjs +9 -5
- package/fesm2022/acorex-components.mjs +94 -35
- package/fesm2022/acorex-components.mjs.map +1 -1
- package/lib/calendar/calendar-box/calendar-box.component.d.ts +8 -4
- package/lib/property-editor/editors/selectbox-editor/selectbox.editor.d.ts +2 -2
- package/lib/tooltip/tooltip.directive.d.ts +1 -0
- package/package.json +1 -1
@@ -1,6 +1,5 @@
|
|
1
|
-
import {
|
2
|
-
import {
|
3
|
-
import { AXConfig } from '@acorex/core';
|
1
|
+
import { AXConfig, AXDateTime, AXDateTimeRange, AXTranslator, } from '@acorex/core';
|
2
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewEncapsulation, } from '@angular/core';
|
4
3
|
import * as i0 from "@angular/core";
|
5
4
|
import * as i1 from "@angular/common";
|
6
5
|
import * as i2 from "../../button/button.component";
|
@@ -13,21 +12,43 @@ export class AXCalendarBoxComponent {
|
|
13
12
|
jalali: {
|
14
13
|
locale: AXConfig.get('dateTime.jalali.locale') || 'fa',
|
15
14
|
dir: 'rtl',
|
16
|
-
number: 1
|
15
|
+
number: 1,
|
17
16
|
},
|
18
17
|
gregorian: {
|
19
18
|
locale: AXConfig.get('dateTime.gregorian.locale') || 'en',
|
20
19
|
dir: 'ltr',
|
21
|
-
number: 0
|
22
|
-
}
|
20
|
+
number: 0,
|
21
|
+
},
|
23
22
|
};
|
24
23
|
numRotate;
|
25
24
|
size = 'md';
|
26
25
|
type;
|
27
26
|
locale;
|
28
27
|
dir;
|
29
|
-
|
30
|
-
|
28
|
+
_min;
|
29
|
+
set min(v) {
|
30
|
+
if (v) {
|
31
|
+
this._min = v;
|
32
|
+
this.focusedValue = this.today;
|
33
|
+
this.viewRange = this.today.month.range;
|
34
|
+
this.navigate(0);
|
35
|
+
}
|
36
|
+
}
|
37
|
+
get min() {
|
38
|
+
return this._min;
|
39
|
+
}
|
40
|
+
_max;
|
41
|
+
set max(v) {
|
42
|
+
if (v) {
|
43
|
+
this._max = v;
|
44
|
+
this.focusedValue = this.today;
|
45
|
+
this.viewRange = this.today.month.range;
|
46
|
+
this.navigate(0);
|
47
|
+
}
|
48
|
+
}
|
49
|
+
get max() {
|
50
|
+
return this._max;
|
51
|
+
}
|
31
52
|
selectableHoliday = true;
|
32
53
|
dayStyle = [];
|
33
54
|
dayMinMaxResoan = '';
|
@@ -68,7 +89,7 @@ export class AXCalendarBoxComponent {
|
|
68
89
|
vv = AXDateTime.convert(v);
|
69
90
|
}
|
70
91
|
let unValidDate = false;
|
71
|
-
if (this.
|
92
|
+
if (this._max || this._min) {
|
72
93
|
unValidDate = this.isInMInMaxRange(vv);
|
73
94
|
}
|
74
95
|
if (!unValidDate) {
|
@@ -80,7 +101,7 @@ export class AXCalendarBoxComponent {
|
|
80
101
|
this.onValueChanged.emit({
|
81
102
|
component: this,
|
82
103
|
value: this._value?.date,
|
83
|
-
htmlElement: this.ref.nativeElement
|
104
|
+
htmlElement: this.ref.nativeElement,
|
84
105
|
});
|
85
106
|
}
|
86
107
|
if (v == undefined) {
|
@@ -92,7 +113,7 @@ export class AXCalendarBoxComponent {
|
|
92
113
|
this.onClick.emit({
|
93
114
|
component: this,
|
94
115
|
value: this._value?.date,
|
95
|
-
htmlElement: this.ref.nativeElement
|
116
|
+
htmlElement: this.ref.nativeElement,
|
96
117
|
});
|
97
118
|
}
|
98
119
|
}
|
@@ -128,8 +149,10 @@ export class AXCalendarBoxComponent {
|
|
128
149
|
return this.dayStyle.find((c) => c.date.split('T')[0] == date.toISOString().split('T')[0]).text;
|
129
150
|
}
|
130
151
|
else {
|
131
|
-
if ((this.
|
132
|
-
|
152
|
+
if ((this._min &&
|
153
|
+
this._max &&
|
154
|
+
date.compaireNew(new AXDateTime(this._min, this.type), 'YMD', this.type) === -1) ||
|
155
|
+
date.compaireNew(new AXDateTime(this._max, this.type), 'YMD', this.type) === 1) {
|
133
156
|
return this.dayMinMaxResoan;
|
134
157
|
}
|
135
158
|
else {
|
@@ -183,7 +206,7 @@ export class AXCalendarBoxComponent {
|
|
183
206
|
AXTranslator.get(`${path}.wed`, this.locale),
|
184
207
|
AXTranslator.get(`${path}.thu`, this.locale),
|
185
208
|
AXTranslator.get(`${path}.fri`, this.locale),
|
186
|
-
AXTranslator.get(`${path}.sat`, this.locale)
|
209
|
+
AXTranslator.get(`${path}.sat`, this.locale),
|
187
210
|
];
|
188
211
|
}
|
189
212
|
getTodayName() {
|
@@ -197,7 +220,11 @@ export class AXCalendarBoxComponent {
|
|
197
220
|
}
|
198
221
|
rotate(array, n) {
|
199
222
|
const len = array.length;
|
200
|
-
return !(n % len)
|
223
|
+
return !(n % len)
|
224
|
+
? array
|
225
|
+
: n > 0
|
226
|
+
? array.map((e, i, a) => a[(i + n) % len])
|
227
|
+
: array.map((e, i, a) => a[(len - ((len - i - n) % len)) % len]);
|
201
228
|
}
|
202
229
|
navigate(value) {
|
203
230
|
let start;
|
@@ -208,7 +235,10 @@ export class AXCalendarBoxComponent {
|
|
208
235
|
fd = value.startOf('month');
|
209
236
|
}
|
210
237
|
else {
|
211
|
-
fd = this.viewRange.startTime
|
238
|
+
fd = this.viewRange.startTime
|
239
|
+
.add('day', 15)
|
240
|
+
.add('month', value)
|
241
|
+
.startOf('month');
|
212
242
|
}
|
213
243
|
start = fd.firstDayOfWeek;
|
214
244
|
end = fd.endOf('month').endDayOfWeek;
|
@@ -231,7 +261,10 @@ export class AXCalendarBoxComponent {
|
|
231
261
|
fd = value.startOf('year');
|
232
262
|
}
|
233
263
|
else {
|
234
|
-
fd = this.viewRange.startTime
|
264
|
+
fd = this.viewRange.startTime
|
265
|
+
.add('day', 15)
|
266
|
+
.add('year', value)
|
267
|
+
.startOf('year');
|
235
268
|
}
|
236
269
|
start = fd;
|
237
270
|
end = fd.endOf('year');
|
@@ -261,7 +294,8 @@ export class AXCalendarBoxComponent {
|
|
261
294
|
//
|
262
295
|
if (this.view === 'day') {
|
263
296
|
this.matrix = this.matrixify(this.applyStyle(this.viewRange.enumurate('day', this.type)), 7);
|
264
|
-
if (this.matrix.length > 0 &&
|
297
|
+
if (this.matrix.length > 0 &&
|
298
|
+
this.matrix[0].find((c) => c.nextMonth === false) === undefined) {
|
265
299
|
this.matrix.splice(0, 1);
|
266
300
|
}
|
267
301
|
if (this.matrix[this.matrix.length - 1].find((c) => c.nextMonth === false) === undefined) {
|
@@ -281,12 +315,17 @@ export class AXCalendarBoxComponent {
|
|
281
315
|
dates.forEach((d, i, j) => {
|
282
316
|
const item = {};
|
283
317
|
item.date = d;
|
284
|
-
item.selected =
|
285
|
-
|
286
|
-
item.
|
318
|
+
item.selected =
|
319
|
+
d.compaireNew(new AXDateTime(this.value, this.type), this.getViewCompaire(this.view), this.type) === 0;
|
320
|
+
item.focused =
|
321
|
+
d.compaireNew(this.focusedValue, this.getViewCompaire(this.view), this.type) === 0;
|
322
|
+
item.today =
|
323
|
+
this.today &&
|
324
|
+
d.compaireNew(this.today, this.getViewCompaire(this.view), this.type) === 0;
|
287
325
|
if (this.view === 'day') {
|
288
326
|
// item.nextMonth = d.compaireNew(this.viewRange.startTime.add('day', 10), 'YM') !== 0;
|
289
|
-
item.nextMonth =
|
327
|
+
item.nextMonth =
|
328
|
+
d.compaireNew(this.viewRange.startTime.add('day', 10), 'YM', this.type) !== 0;
|
290
329
|
item.unselect = this.isInMInMaxRange(d);
|
291
330
|
this.holidays.forEach((h) => {
|
292
331
|
const comp = d.compaireNew(new AXDateTime(h.date, this.type), 'YMD', this.type);
|
@@ -338,16 +377,18 @@ export class AXCalendarBoxComponent {
|
|
338
377
|
isInMInMaxRange(d) {
|
339
378
|
let r = false;
|
340
379
|
if (d !== undefined) {
|
341
|
-
if (this.
|
342
|
-
r =
|
380
|
+
if (this._min && !this._max) {
|
381
|
+
r =
|
382
|
+
d.compaireNew(new AXDateTime(this._min, this.type), this.getViewCompaire(this.view), this.type) === -1;
|
343
383
|
}
|
344
|
-
if (this.
|
345
|
-
r =
|
384
|
+
if (this._max && !this._min) {
|
385
|
+
r =
|
386
|
+
d.compaireNew(new AXDateTime(this._max, this.type), this.getViewCompaire(this.view), this.type) === 1;
|
346
387
|
}
|
347
|
-
if (this.
|
388
|
+
if (this._min && this._max) {
|
348
389
|
r =
|
349
|
-
d.compaireNew(new AXDateTime(this.
|
350
|
-
d.compaireNew(new AXDateTime(this.
|
390
|
+
d.compaireNew(new AXDateTime(this._min, this.type), this.getViewCompaire(this.view), this.type) === -1 ||
|
391
|
+
d.compaireNew(new AXDateTime(this._max, this.type), this.getViewCompaire(this.view), this.type) === 1;
|
351
392
|
}
|
352
393
|
}
|
353
394
|
return r;
|
@@ -358,7 +399,9 @@ export class AXCalendarBoxComponent {
|
|
358
399
|
}
|
359
400
|
else {
|
360
401
|
this.view = 'day';
|
361
|
-
this.setFocus(new AXDateTime(this.value, this.type)
|
402
|
+
this.setFocus(new AXDateTime(this.value, this.type)
|
403
|
+
.set('year', date.year)
|
404
|
+
.set('month', date.monthOfYear));
|
362
405
|
}
|
363
406
|
event.stopPropagation();
|
364
407
|
}
|
@@ -423,4 +466,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
423
466
|
}], value: [{
|
424
467
|
type: Input
|
425
468
|
}] } });
|
426
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLWJveC9jYWxlbmRhci1ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXItYm94L2NhbGVuZGFyLWJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSixPQUFPLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBa0IsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBR3pGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7O0FBeUJ4QyxNQUFNLE9BQU8sc0JBQXNCO0lBcUliO0lBQWdDO0lBcElwRCxRQUFRLEdBQWEsRUFBRSxDQUFDO0lBRWhCLENBQUMsR0FBRztRQUNWLE1BQU0sRUFBRTtZQUNOLE1BQU0sRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLElBQUksSUFBSTtZQUN0RCxHQUFHLEVBQUUsS0FBSztZQUNWLE1BQU0sRUFBRSxDQUFDO1NBQ1Y7UUFDRCxTQUFTLEVBQUU7WUFDVCxNQUFNLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLElBQUk7WUFDekQsR0FBRyxFQUFFLEtBQUs7WUFDVixNQUFNLEVBQUUsQ0FBQztTQUNWO0tBQ0YsQ0FBQztJQUVGLFNBQVMsQ0FBUztJQUdsQixJQUFJLEdBQWtCLElBQUksQ0FBQztJQUczQixJQUFJLENBQWlCO0lB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LE1BQU0sQ0FBQyxDQUFDO2FBQ3BCO1lBQ0QsS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0IsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMxQztRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2pELEVBQUU7UUFDRixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFBRTtZQUM1RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNsRTtRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxPQUFPLElBQUksQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFO1lBQzVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2xFO1FBRUQsRUFBRTtRQUNGLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUU7WUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdGLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFD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LElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xDLENBQUM7d0dBOWFVLHNCQUFzQjs0RkFBdEIsc0JBQXNCLHdhQzdCbkMsazZHQW1FTTs7NEZEdENPLHNCQUFzQjtrQkFObEMsU0FBUzsrQkFDRSxpQkFBaUIsaUJBRVosaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTTtpSUFxQi9DLElBQUk7c0JBREgsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO2dCQUlOLEdBQUc7c0JBREYsS0FBSztnQkFJTixHQUFHO3NCQURGLEtBQUs7Z0JBSU4sR0FBRztzQkFERixLQUFLO2dCQUlOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLO2dCQVFDLGVBQWU7c0JBRHJCLEtBQUs7dUJBQUMsaUJBQWlCO2dCQU9iLElBQUk7c0JBRGQsS0FBSztnQkFZSyxLQUFLO3NCQURmLEtBQUs7Z0JBY04sY0FBYztzQkFEYixNQUFNO2dCQUlQLE9BQU87c0JBRE4sTUFBTTtnQkFJUCxXQUFXO3NCQURWLE1BQU07Z0JBS0ksS0FBSztzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgVmlld0VuY2Fwc3VsYXRpb24sIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYRGF0ZVRpbWUsIEFYRGF0ZVRpbWVSYW5nZSwgQVhDYWxlbmRhclR5cGUsIEFYVHJhbnNsYXRvciB9IGZyb20gJ0BhY29yZXgvY29yZSc7XG5pbXBvcnQgeyBBWEJhc2VTaXphYmxlQ29tcG9uZW50LCBBWEVsZW1lbnRTaXplIH0gZnJvbSAnLi4vLi4vYmFzZS9lbGVtZW50LmNsYXNzJztcbmltcG9ydCB7IEFYVmFsdWVFdmVudCB9IGZyb20gJy4uLy4uL2Jhc2UvZXZlbnRzLmNsYXNzJztcbmltcG9ydCB7IEFYQ29uZmlnIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcblxuZXhwb3J0IHR5cGUgQVhDYWxlbmRhclZpZXdUeXBlID0gJ3llYXInIHwgJ21vbnRoJyB8ICdkYXknO1xuXG5leHBvcnQgdHlwZSBBWENhbGVuZGFySG9saWRheXMgPSBBWENhbGVuZGFySG9saWRheVtdO1xuZXhwb3J0IHR5cGUgQVhDYWxlbmRhckhvbGlkYXlzRnVuYyA9IChzdGFydDogRGF0ZSwgZW5kOiBEYXRlLCB0eXBlOiBBWENhbGVuZGFyVHlwZSkgPT4gQVhDYWxlbmRhckhvbGlkYXlbXTtcbmV4cG9ydCBpbnRlcmZhY2UgQVhDYWxlbmRhckhvbGlkYXkge1xuICBkYXRlOiBEYXRlO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQVhDYWxlbmRhcldlZWtlbmRzID0gQVhDYWxlbmRhcldlZWtlbmRbXTtcbmV4cG9ydCB0eXBlIEFYQ2FsZW5kYXJXZWVrZW5kc0Z1bmMgPSAoc3RhcnQ6IERhdGUsIGVuZDogRGF0ZSwgdHlwZTogQVhDYWxlbmRhclR5cGUpID0+IEFYQ2FsZW5kYXJXZWVrZW5kW107XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhDYWxlbmRhcldlZWtlbmQge1xuICBpbmRleERheTogbnVtYmVyO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1jYWxlbmRhci1ib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXItYm94LmNvbXBvbmVudC5odG1sJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQVhDYWxlbmRhckJveENvbXBvbmVudCBpbXBsZW1lbnRzIEFYQmFzZVNpemFibGVDb21wb25lbnQge1xuICB3ZWVrZGF5czogc3RyaW5nW10gPSBbXTtcblxuICBwcml2YXRlIGQgPSB7XG4gICAgamFsYWxpOiB7XG4gICAgICBsb2NhbGU6IEFYQ29uZmlnLmdldCgnZGF0ZVRpbWUuamFsYWxpLmxvY2FsZScpIHx8ICdmYScsXG4gICAgICBkaXI6ICdydGwnLFxuICAgICAgbnVtYmVyOiAxXG4gICAgfSxcbiAgICBncmVnb3JpYW46IHtcbiAgICAgIGxvY2FsZTogQVhDb25maWcuZ2V0KCdkYXRlVGltZS5ncmVnb3JpYW4ubG9jYWxlJykgfHwgJ2VuJyxcbiAgICAgIGRpcjogJ2x0cicsXG4gICAgICBudW1iZXI6IDBcbiAgICB9XG4gIH07XG5cbiAgbnVtUm90YXRlOiBudW1iZXI7XG5cbiAgQElucHV0KClcbiAgc2l6ZTogQVhFbGVtZW50U2l6ZSA9ICdtZCc7XG5cbiAgQElucHV0KClcbiAgdHlwZTogQVhDYWxlbmRhclR5cGU7XG5cbiAgQElucHV0KClcbiAgbG9jYWxlOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgZGlyOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgbWluOiBEYXRlO1xuXG4gIEBJbnB1dCgpXG4gIG1heDogRGF0ZTtcblxuICBASW5wdXQoKVxuICBzZWxlY3RhYmxlSG9saWRheTogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgZGF5U3R5bGUgPSBbXTtcblxuICBASW5wdXQoKVxuICBkYXlNaW5NYXhSZXNvYW4gPSAnJztcblxuICBwcml2YXRlIGdldEhvbGlkYXk6IEFYQ2FsZW5kYXJIb2xpZGF5cyB8IEFYQ2FsZW5kYXJIb2xpZGF5c0Z1bmM7XG5cbiAgcHJpdmF0ZSBnZXRXZWVrZW5kOiBBWENhbGVuZGFyV2Vla2VuZHMgfCBBWENhbGVuZGFyV2Vla2VuZHNGdW5jO1xuXG4gIEBJbnB1dCgnc2hvd1RvZGF5QnV0dG9uJylcbiAgcHVibGljIHNob3dUb2RheUJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIG1hdHJpeDogYW55W10gPSBbXTtcbiAgcm90YXRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF92aWV3OiBBWENhbGVuZGFyVmlld1R5cGUgPSAnZGF5JztcbiAgQElucHV0KClcbiAgcHVibGljIGdldCB2aWV3KCk6IEFYQ2FsZW5kYXJWaWV3VHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXc7XG4gIH1cbiAgcHVibGljIHNldCB2aWV3KHY6IEFYQ2FsZW5kYXJWaWV3VHlwZSkge1xuICAgIHRoaXMuX3ZpZXcgPSB2O1xuICAgIHRoaXMubmF2aWdhdGUoMCk7XG4gIH1cblxuICBwcml2YXRlIF9kZXB0aDogQVhDYWxlbmRhclZpZXdUeXBlID0gJ2RheSc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBkZXB0aCgpOiBBWENhbGVuZGFyVmlld1R5cGUge1xuICAgIHJldHVybiB0aGlzLl9kZXB0aDtcbiAgfVxuICBwdWJsaWMgc2V0IGRlcHRoKHY6IEFYQ2FsZW5kYXJWaWV3VHlwZSkge1xuICAgIHRoaXMuX2RlcHRoID0gdjtcbiAgICB0aGlzLnZpZXcgPSB2O1xuICB9XG5cbiAgdmlld1JhbmdlOiBBWERhdGVUaW1lUmFuZ2U7XG4gIHByaXZhdGUgaG9saWRheXM6IEFYQ2FsZW5kYXJIb2xpZGF5W10gPSBbXTtcbiAgcHJpdmF0ZSB3ZWVrZW5kczogQVhDYWxlbmRhcldlZWtlbmRbXSA9IFtdO1xuXG4gIEBPdXRwdXQoKVxuICBvblZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYVmFsdWVFdmVudDxEYXRlPj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYVmFsdWVFdmVudDxEYXRlPj4oKTtcblxuICBAT3V0cHV0KClcbiAgb25DbGljazogRXZlbnRFbWl0dGVyPEFYVmFsdWVFdmVudDxEYXRlPj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYVmFsdWVFdmVudDxEYXRlPj4oKTtcblxuICBAT3V0cHV0KClcbiAgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcblxuICBwcml2YXRlIF92YWx1ZTogQVhEYXRlVGltZTtcbiAgQElucHV0KClcbiAgcHVibGljIGdldCB2YWx1ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU/LmRhdGU7XG4gIH1cbiAgcHVibGljIHNldCB2YWx1ZSh2OiBEYXRlKSB7XG4gICAgbGV0IHZ2OiBBWERhdGVUaW1lO1xuICAgIGlmICh2KSB7XG4gICAgICB2diA9IEFYRGF0ZVRpbWUuY29udmVydCh2KTtcbiAgICB9XG4gICAgbGV0IHVuVmFsaWREYXRlID0gZmFsc2U7XG4gICAgaWYgKHRoaXMubWF4IHx8IHRoaXMubWluKSB7XG4gICAgICB1blZhbGlkRGF0ZSA9IHRoaXMuaXNJbk1Jbk1heFJhbmdlKHZ2KTtcbiAgICB9XG4gICAgaWYgKCF1blZhbGlkRGF0ZSkge1xuICAgICAgaWYgKHZ2ICYmICF2di5lcXVhbCh0aGlzLl92YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2djtcbiAgICAgICAgdGhpcy5fdmFsdWUudHlwZSA9IHRoaXMudHlwZTtcbiAgICAgICAgdGhpcy5zZXRGb2N1cyh0aGlzLl92YWx1ZS5jbG9uZSgpKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZ2LmRhdGUpO1xuICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkLmVtaXQoe1xuICAgICAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5fdmFsdWU/LmRhdGUsXG4gICAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAodiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSBudWxsO1xuICAgICAgICB0aGlzLmZvY3VzZWRWYWx1ZSA9IHRoaXMudG9kYXk7XG4gICAgICAgIHRoaXMudmlld1JhbmdlID0gdGhpcy50b2RheS5tb250aC5yYW5nZTtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZSgwKTtcbiAgICAgIH1cbiAgICAgIHRoaXMub25DbGljay5lbWl0KHtcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgICB2YWx1ZTogdGhpcy5fdmFsdWU/LmRhdGUsXG4gICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBmb2N1c2VkVmFsdWU6IEFYRGF0ZVRpbWU7XG4gIGdldCB0b2RheSgpOiBBWERhdGVUaW1lIHtcbiAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUobmV3IERhdGUoKSwgdGhpcy50eXBlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSByZWY6IEVsZW1lbnRSZWYpIHtcbiAgICAvLyBzZXQgZGVmYXVsdHNcbiAgICB0aGlzLmdldEhvbGlkYXkgPSBBWENvbmZpZy5nZXQoJ2RhdGVUaW1lLmhvbGlkYXlzJyk7XG4gICAgdGhpcy5nZXRXZWVrZW5kID0gQVhDb25maWcuZ2V0KCdkYXRlVGltZS53ZWVrZW5kcycpO1xuICB9XG4gIGZpbmREYXkoZGF0ZTogQVhEYXRlVGltZSkge1xuICAgIGlmICh0aGlzLmRheVN0eWxlLmZpbmQoKGMpID0+IGMuZGF0ZS5zcGxpdCgnVCcpWzBdID09IGRhdGUudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgZ2V0U3R5bGUoZGF0ZTogQVhEYXRlVGltZSkge1xuICAgIGlmICh0aGlzLmRheVN0eWxlLmZpbmQoKGMpID0+IGMuZGF0ZS5zcGxpdCgnVCcpWzBdID09IGRhdGUudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZGF5U3R5bGUuZmluZCgoYykgPT4gYy5kYXRlLnNwbGl0KCdUJylbMF0gPT0gZGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF0pLnN0eWxlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgZ2V0VGl0bGUoZGF0ZTogQVhEYXRlVGltZSkge1xuICAgIGlmICh0aGlzLmRheVN0eWxlLmZpbmQoKGMpID0+IGMuZGF0ZS5zcGxpdCgnVCcpWzBdID09IGRhdGUudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZGF5U3R5bGUuZmluZCgoYykgPT4gYy5kYXRlLnNwbGl0KCdUJylbMF0gPT0gZGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF0pLnRleHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChcbiAgICAgICAgKHRoaXMubWluICYmIHRoaXMubWF4ICYmIGRhdGUuY29tcGFpcmVOZXcobmV3IEFYRGF0ZVRpbWUodGhpcy5taW4sIHRoaXMudHlwZSksICdZTUQnLCB0aGlzLnR5cGUpID09PSAtMSkgfHxcbiAgICAgICAgZGF0ZS5jb21wYWlyZU5ldyhuZXcgQVhEYXRlVGltZSh0aGlzLm1heCwgdGhpcy50eXBlKSwgJ1lNRCcsIHRoaXMudHlwZSkgPT09IDFcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXlNaW5NYXhSZXNvYW47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb2N1c2VkVmFsdWUgPSBuZXcgQVhEYXRlVGltZShuZXcgRGF0ZSgpLCB0aGlzLnR5cGUpO1xuICAgIC8vXG4gICAgdGhpcy5pbml0TGF5b3V0KCk7XG4gICAgLy9cbiAgICB0aGlzLnZpZXdSYW5nZSA9IHRoaXMudG9kYXkubW9udGgucmFuZ2U7XG4gICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0Rm9jdXMobmV3IEFYRGF0ZVRpbWUodGhpcy52YWx1ZSwgdGhpcy50eXBlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0Rm9jdXModGhpcy50b2RheSk7XG4gICAgfVxuXG4gICAgdGhpcy52aWV3ID0gJ2RheSc7XG4gIH1cblxuICBnZXRWaWV3Q29tcGFpcmUodmlldzogQVhDYWxlbmRhclZpZXdUeXBlKSB7XG4gICAgc3dpdGNoICh2aWV3KSB7XG4gICAgICBjYXNlICdkYXknOlxuICAgICAgICByZXR1cm4gJ1lNRCc7XG4gICAgICBjYXNlICdtb250aCc6XG4gICAgICAgIHJldHVybiAnWU0nO1xuICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgIHJldHVybiAnWSc7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMubmF2aWdhdGUoMCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRMYXlvdXQoKSB7XG4gICAgaWYgKCF0aGlzLnR5cGUpIHtcbiAgICAgIHRoaXMudHlwZSA9IEFYQ29uZmlnLmdldCgnZGF0ZVRpbWUudHlwZScpIHx8ICdncmVnb3JpYW4nO1xuICAgIH1cbiAgICBpZiAoIXRoaXMubG9jYWxlKSB7XG4gICAgICB0aGlzLmxvY2FsZSA9IHRoaXMuZFt0aGlzLnR5cGVdPy5sb2NhbGUgfHwgdGhpcy5sb2NhbGU7XG4gICAgfVxuICAgIGlmICghdGhpcy5kaXIpIHtcbiAgICAgIHRoaXMuZGlyID0gdGhpcy5kW3RoaXMudHlwZV0/LmRpciB8fCAnbHRyJztcbiAgICB9XG4gICAgdGhpcy5udW1Sb3RhdGUgPSB0aGlzLmRbdGhpcy50eXBlXT8ubnVtYmVyIHx8IDA7XG4gICAgY29uc3QgcGF0aCA9ICdkYXRlVGltZS53ZWVrZGF5c1Nob3J0JztcbiAgICB0aGlzLndlZWtkYXlzID0gW1xuICAgICAgQVhUcmFuc2xhdG9yLmdldChgJHtwYXRofS5zdW5gLCB0aGlzLmxvY2FsZSksXG4gICAgICBBWFRyYW5zbGF0b3IuZ2V0KGAke3BhdGh9Lm1vbmAsIHRoaXMubG9jYWxlKSxcbiAgICAgIEFYVHJhbnNsYXRvci5nZXQoYCR7cGF0aH0udHVlYCwgdGhpcy5sb2NhbGUpLFxuICAgICAgQVhUcmFuc2xhdG9yLmdldChgJHtwYXRofS53ZWRgLCB0aGlzLmxvY2FsZSksXG4gICAgICBBWFRyYW5zbGF0b3IuZ2V0KGAke3BhdGh9LnRodWAsIHRoaXMubG9jYWxlKSxcbiAgICAgIEFYVHJhbnNsYXRvci5nZXQoYCR7cGF0aH0uZnJpYCwgdGhpcy5sb2NhbGUpLFxuICAgICAgQVhUcmFuc2xhdG9yLmdldChgJHtwYXRofS5zYXRgLCB0aGlzLmxvY2FsZSlcbiAgICBdO1xuICB9XG5cbiAgZ2V0VG9kYXlOYW1lKCkge1xuICAgIHJldHVybiBBWFRyYW5zbGF0b3IuZ2V0KCdkYXRlVGltZS50b2RheScsIHRoaXMubG9jYWxlKTtcbiAgfVxuXG4gIHByZXYoKSB7XG4gICAgdGhpcy5uYXZpZ2F0ZSgtMSk7XG4gIH1cblxuICBuZXh0KCkge1xuICAgIHRoaXMubmF2aWdhdGUoMSk7XG4gIH1cblxuICByb3RhdGUoYXJyYXksIG4pIHtcbiAgICBjb25zdCBsZW4gPSBhcnJheS5sZW5ndGg7XG4gICAgcmV0dXJuICEobiAlIGxlbikgPyBhcnJheSA6IG4gPiAwID8gYXJyYXkubWFwKChlLCBpLCBhKSA9PiBhWyhpICsgbikgJSBsZW5dKSA6IGFycmF5Lm1hcCgoZSwgaSwgYSkgPT4gYVsobGVuIC0gKChsZW4gLSBpIC0gbikgJSBsZW4pKSAlIGxlbl0pO1xuICB9XG5cbiAgbmF2aWdhdGUodmFsdWU6IG51bWJlciB8IEFYRGF0ZVRpbWUpIHtcbiAgICBsZXQgc3RhcnQ6IEFYRGF0ZVRpbWU7XG4gICAgbGV0IGVuZDogQVhEYXRlVGltZTtcbiAgICBpZiAodGhpcy52aWV3ID09PSAnZGF5Jykge1xuICAgICAgbGV0IGZkOiBBWERhdGVUaW1lO1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQVhEYXRlVGltZSkge1xuICAgICAgICBmZCA9IHZhbHVlLnN0YXJ0T2YoJ21vbnRoJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmZCA9IHRoaXMudmlld1JhbmdlLnN0YXJ0VGltZS5hZGQoJ2RheScsIDE1KS5hZGQoJ21vbnRoJywgdmFsdWUpLnN0YXJ0T2YoJ21vbnRoJyk7XG4gICAgICB9XG5cbiAgICAgIHN0YXJ0ID0gZmQuZmlyc3REYXlPZldlZWs7XG4gICAgICBlbmQgPSBmZC5lbmRPZignbW9udGgnKS5lbmREYXlPZldlZWs7XG5cbiAgICAgIHN0YXJ0ID0gc3RhcnQuYWRkKCdkYXknLCAtdGhpcy5udW1Sb3RhdGUpO1xuICAgICAgZW5kID0gZW5kLmFkZCgnZGF5JywgNykuYWRkKCdkYXknLCAtdGhpcy5udW1Sb3RhdGUpO1xuXG4gICAgICAvLyBUT0RPOiBhcHBseSBzdGFydCBvZiB3ZWVrXG4gICAgICBpZiAoIXRoaXMucm90YXRlZCAmJiB0aGlzLndlZWtkYXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2phbGFsaScpIHtcbiAgICAgICAgICB0aGlzLndlZWtkYXlzID0gdGhpcy5yb3RhdGUodGhpcy53ZWVrZGF5cywgLXRoaXMubnVtUm90YXRlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLndlZWtkYXlzID0gdGhpcy5yb3RhdGUodGhpcy53ZWVrZGF5cywgdGhpcy5udW1Sb3RhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yb3RhdGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMudmlldyA9PT0gJ21vbnRoJykge1xuICAgICAgbGV0IGZkOiBBWERhdGVUaW1lO1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQVhEYXRlVGltZSkge1xuICAgICAgICBmZCA9IHZhbHVlLnN0YXJ0T2YoJ3llYXInKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZkID0gdGhpcy52aWV3UmFuZ2Uuc3RhcnRUaW1lLmFkZCgnZGF5JywgMTUpLmFkZCgneWVhcicsIHZhbHVlKS5zdGFydE9mKCd5ZWFyJyk7XG4gICAgICB9XG4gICAgICBzdGFydCA9IGZkO1xuICAgICAgZW5kID0gZmQuZW5kT2YoJ3llYXInKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudmlldyA9PT0gJ3llYXInKSB7XG4gICAgICBsZXQgZmQ6IEFYRGF0ZVRpbWU7XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBWERhdGVUaW1lKSB7XG4gICAgICAgIGZkID0gdmFsdWUuc3RhcnRPZigneWVhcicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmQgPSB0aGlzLnZpZXdSYW5nZS5zdGFydFRpbWVcbiAgICAgICAgICAuYWRkKCdkYXknLCAxNSlcbiAgICAgICAgICAuYWRkKCd5ZWFyJywgdmFsdWUgKiAxMClcbiAgICAgICAgICAuc3RhcnRPZigneWVhcicpO1xuICAgICAgfVxuICAgICAgc3RhcnQgPSBmZC5hZGQoJ3llYXInLCAtNCk7XG4gICAgICBlbmQgPSBzdGFydC5hZGQoJ3llYXInLCA4KS5lbmRPZigneWVhcicpO1xuICAgIH1cbiAgICB0aGlzLnZpZXdSYW5nZSA9IG5ldyBBWERhdGVUaW1lUmFuZ2Uoc3RhcnQsIGVuZCk7XG4gICAgLy9cbiAgICBpZiAodGhpcy5nZXRIb2xpZGF5ICYmIHR5cGVvZiB0aGlzLmdldEhvbGlkYXkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuaG9saWRheXMgPSB0aGlzLmdldEhvbGlkYXkoc3RhcnQuZGF0ZSwgZW5kLmRhdGUsIHRoaXMudHlwZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZ2V0V2Vla2VuZCAmJiB0eXBlb2YgdGhpcy5nZXRXZWVrZW5kID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLndlZWtlbmRzID0gdGhpcy5nZXRXZWVrZW5kKHN0YXJ0LmRhdGUsIGVuZC5kYXRlLCB0aGlzLnR5cGUpO1xuICAgIH1cblxuICAgIC8vXG4gICAgaWYgKHRoaXMudmlldyA9PT0gJ2RheScpIHtcbiAgICAgIHRoaXMubWF0cml4ID0gdGhpcy5tYXRyaXhpZnkodGhpcy5hcHBseVN0eWxlKHRoaXMudmlld1JhbmdlLmVudW11cmF0ZSgnZGF5JywgdGhpcy50eXBlKSksIDcpO1xuICAgICAgaWYgKHRoaXMubWF0cml4Lmxlbmd0aCA+IDAgJiYgdGhpcy5tYXRyaXhbMF0uZmluZCgoYykgPT4gYy5uZXh0TW9udGggPT09IGZhbHNlKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMubWF0cml4LnNwbGljZSgwLCAxKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm1hdHJpeFt0aGlzLm1hdHJpeC5sZW5ndGggLSAxXS5maW5kKChjKSA9PiBjLm5leHRNb250aCA9PT0gZmFsc2UpID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5tYXRyaXguc3BsaWNlKHRoaXMubWF0cml4Lmxlbmd0aCAtIDEsIDEpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy52aWV3ID09PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLm1hdHJpeCA9IHRoaXMubWF0cml4aWZ5KHRoaXMuYXBwbHlTdHlsZSh0aGlzLnZpZXdSYW5nZS5lbnVtdXJhdGUoJ21vbnRoJywgdGhpcy50eXBlKSksIDMpO1xuICAgIH0gZWxzZSBpZiAodGhpcy52aWV3ID09PSAneWVhcicpIHtcbiAgICAgIHRoaXMubWF0cml4ID0gdGhpcy5tYXRyaXhpZnkodGhpcy5hcHBseVN0eWxlKHRoaXMudmlld1JhbmdlLmVudW11cmF0ZSgneWVhcicsIHRoaXMudHlwZSkpLCAzKTtcbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVN0eWxlKGRhdGVzOiBBWERhdGVUaW1lW10pOiBhbnlbXSB7XG4gICAgY29uc3QgaXRlbXM6IGFueVtdID0gW107XG4gICAgZGF0ZXMuZm9yRWFjaCgoZCwgaSwgaikgPT4ge1xuICAgICAgY29uc3QgaXRlbTogYW55ID0ge307XG4gICAgICBpdGVtLmRhdGUgPSBkO1xuXG4gICAgICBpdGVtLnNlbGVjdGVkID0gZC5jb21wYWlyZU5ldyhuZXcgQVhEYXRlVGltZSh0aGlzLnZhbHVlLCB0aGlzLnR5cGUpLCB0aGlzLmdldFZpZXdDb21wYWlyZSh0aGlzLnZpZXcpLCB0aGlzLnR5cGUpID09PSAwO1xuICAgICAgaXRlbS5mb2N1c2VkID0gZC5jb21wYWlyZU5ldyh0aGlzLmZvY3VzZWRWYWx1ZSwgdGhpcy5nZXRWaWV3Q29tcGFpcmUodGhpcy52aWV3KSwgdGhpcy50eXBlKSA9PT0gMDtcbiAgICAgIGl0ZW0udG9kYXkgPSB0aGlzLnRvZGF5ICYmIGQuY29tcGFpcmVOZXcodGhpcy50b2RheSwgdGhpcy5nZXRWaWV3Q29tcGFpcmUodGhpcy52aWV3KSwgdGhpcy50eXBlKSA9PT0gMDtcbiAgICAgIGlmICh0aGlzLnZpZXcgPT09ICdkYXknKSB7XG4gICAgICAgIC8vICBpdGVtLm5leHRNb250aCA9IGQuY29tcGFpcmVOZXcodGhpcy52aWV3UmFuZ2Uuc3RhcnRUaW1lLmFkZCgnZGF5JywgMTApLCAnWU0nKSAhPT0gMDtcbiAgICAgICAgaXRlbS5uZXh0TW9udGggPSBkLmNvbXBhaXJlTmV3KHRoaXMudmlld1JhbmdlLnN0YXJ0VGltZS5hZGQoJ2RheScsIDEwKSwgJ1lNJywgdGhpcy50eXBlKSAhPT0gMDtcblxuICAgICAgICBpdGVtLnVuc2VsZWN0ID0gdGhpcy5pc0luTUluTWF4UmFuZ2UoZCk7XG4gICAgICAgIHRoaXMuaG9saWRheXMuZm9yRWFjaCgoaCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbXAgPSBkLmNvbXBhaXJlTmV3KG5ldyBBWERhdGVUaW1lKGguZGF0ZSwgdGhpcy50eXBlKSwgJ1lNRCcsIHRoaXMudHlwZSk7XG4gICAgICAgICAgaWYgKGNvbXAgPT09IDApIHtcbiAgICAgICAgICAgIGl0ZW0uaG9saWRheSA9IHRydWU7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RhYmxlSG9saWRheSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgaXRlbS51bnNlbGVjdCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBpbmRleERheSA9IGkgLSBNYXRoLmZsb29yKGkgLyA3KSAqIDc7XG4gICAgICAgIHRoaXMud2Vla2VuZHMuZm9yRWFjaCgoY2MpID0+IHtcbiAgICAgICAgICBpZiAoTnVtYmVyKGNjKSA9PT0gaW5kZXhEYXkpIHtcbiAgICAgICAgICAgIGl0ZW0uaG9saWRheSA9IHRydWU7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RhYmxlSG9saWRheSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgaXRlbS51bnNlbGVjdCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgY2hhbmdlVmlldygpIHtcbiAgICBpZiAodGhpcy52aWV3ID09PSAnZGF5Jykge1xuICAgICAgdGhpcy52aWV3ID0gJ21vbnRoJztcbiAgICB9IGVsc2UgaWYgKHRoaXMudmlldyA9PT0gJ21vbnRoJykge1xuICAgICAgdGhpcy52aWV3ID0gJ3llYXInO1xuICAgIH1cbiAgfVxuXG4gIG1hdHJpeGlmeShhcnI6IGFueVtdLCBjb2xzKSB7XG4gICAgY29uc3Qgcm93cyA9IE1hdGguY2VpbChhcnIubGVuZ3RoIC8gY29scyk7XG4gICAgY29uc3QgbWF0cml4ID0gW107XG4gICAgaWYgKHJvd3MgKiBjb2xzID09PSBhcnIubGVuZ3RoKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkgKz0gY29scykge1xuICAgICAgICBtYXRyaXgucHVzaChhcnIuc2xpY2UoaSwgY29scyArIGkpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hdHJpeDtcbiAgfVxuXG4gIHNldERheUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtKSB7XG4gICAgaWYgKGl0ZW0udW5zZWxlY3QgIT09IHRydWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBpdGVtLmRhdGUuZGF0ZTtcbiAgICB9XG5cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIGlzSW5NSW5NYXhSYW5nZShkKSB7XG4gICAgbGV0IHIgPSBmYWxzZTtcbiAgICBpZiAoZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodGhpcy5taW4gJiYgIXRoaXMubWF4KSB7XG4gICAgICAgIHIgPSBkLmNvbXBhaXJlTmV3KG5ldyBBWERhdGVUaW1lKHRoaXMubWluLCB0aGlzLnR5cGUpLCB0aGlzLmdldFZpZXdDb21wYWlyZSh0aGlzLnZpZXcpLCB0aGlzLnR5cGUpID09PSAtMTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm1heCAmJiAhdGhpcy5taW4pIHtcbiAgICAgICAgciA9IGQuY29tcGFpcmVOZXcobmV3IEFYRGF0ZVRpbWUodGhpcy5tYXgsIHRoaXMudHlwZSksIHRoaXMuZ2V0Vmlld0NvbXBhaXJlKHRoaXMudmlldyksIHRoaXMudHlwZSkgPT09IDE7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5taW4gJiYgdGhpcy5tYXgpIHtcbiAgICAgICAgciA9XG4gICAgICAgICAgZC5jb21wYWlyZU5ldyhuZXcgQVhEYXRlVGltZSh0aGlzLm1pbiwgdGhpcy50eXBlKSwgdGhpcy5nZXRWaWV3Q29tcGFpcmUodGhpcy52aWV3KSwgdGhpcy50eXBlKSA9PT0gLTEgfHxcbiAgICAgICAgICBkLmNvbXBhaXJlTmV3KG5ldyBBWERhdGVUaW1lKHRoaXMubWF4LCB0aGlzLnR5cGUpLCB0aGlzLmdldFZpZXdDb21wYWlyZSh0aGlzLnZpZXcpLCB0aGlzLnR5cGUpID09PSAxO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIHNldE1vbnRoQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGRhdGU6IEFYRGF0ZVRpbWUpIHtcbiAgICBpZiAodGhpcy5kZXB0aCA9PT0gJ21vbnRoJykge1xuICAgICAgdGhpcy52YWx1ZSA9IGRhdGUuZGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52aWV3ID0gJ2RheSc7XG4gICAgICB0aGlzLnNldEZvY3VzKG5ldyBBWERhdGVUaW1lKHRoaXMudmFsdWUsIHRoaXMudHlwZSkuc2V0KCd5ZWFyJywgZGF0ZS55ZWFyKS5zZXQoJ21vbnRoJywgZGF0ZS5tb250aE9mWWVhcikpO1xuICAgIH1cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIHNldFllYXJDbGljayhldmVudDogTW91c2VFdmVudCwgZGF0ZTogQVhEYXRlVGltZSkge1xuICAgIGlmICh0aGlzLmRlcHRoID09PSAneWVhcicpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBkYXRlLmRhdGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmlldyA9ICdtb250aCc7XG4gICAgICB0aGlzLnNldEZvY3VzKG5ldyBBWERhdGVUaW1lKHRoaXMudmFsdWUsIHRoaXMudHlwZSkuc2V0KCd5ZWFyJywgZGF0ZS55ZWFyKSk7XG4gICAgfVxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgc2V0Rm9jdXMoZGF0ZTogQVhEYXRlVGltZSkge1xuICAgIHRoaXMuZm9jdXNlZFZhbHVlID0gZGF0ZTtcbiAgICB0aGlzLm5hdmlnYXRlKHRoaXMuZm9jdXNlZFZhbHVlKTtcbiAgfVxuXG4gIHNldFRvZGF5KCkge1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLnRvZGF5LmRhdGU7XG4gICAgdGhpcy52aWV3ID0gJ2RheSc7XG4gIH1cblxuICB0cmFja0J5Rm4oaW5kZXgsIGl0ZW06IGFueSkge1xuICAgIHJldHVybiBpdGVtLmRhdGUuZGF0ZS5nZXRUaW1lKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1jb250YWluZXIge3tzaXplfX1cIiBbbmdDbGFzc109XCJ0eXBlXCI+XG4gICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY29udHJvbGwtYnV0dG9uXCI+XG4gICAgICAgICAgICA8YXgtYnV0dG9uIHR5cGU9XCJsaWdodCBibGFua1wiIChjbGljayk9XCJuZXh0KClcIj5cbiAgICAgICAgICAgICAgICB7eydjb21tb24ubmV4dCcgfCB0cmFuc319XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1uYXYtYnV0dG9uXCIgW25nU3dpdGNoXT1cInZpZXdcIj5cbiAgICAgICAgICAgIDxheC1idXR0b24gdHlwZT1cImxpZ2h0IGJsYW5rXCIgKGNsaWNrKT1cImNoYW5nZVZpZXcoKVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkYXknXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7dmlld1JhbmdlLnN0YXJ0VGltZS5hZGQoJ2RheScsMTApIHwgZHQ6XCJNTU0gWVlZWVwifX1cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbW9udGgnXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7dmlld1JhbmdlLnN0YXJ0VGltZSB8IGR0OlwiWVlZWVwifX1cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgICAgICAgICAgICAgICAgIHt7dmlld1JhbmdlLnN0YXJ0VGltZSB8IGR0OlwiWVlZWVwifX0gLSB7e3ZpZXdSYW5nZS5lbmRUaW1lIHwgZHQ6XCJZWVlZXCJ9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY29udHJvbGwtYnV0dG9uXCI+XG4gICAgICAgICAgICA8YXgtYnV0dG9uIHR5cGU9XCJsaWdodCBibGFua1wiIChjbGljayk9XCJwcmV2KClcIj5cbiAgICAgICAgICAgICAgICB7eydjb21tb24ucHJldicgfCB0cmFuc319XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWJvZHlcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidmlld1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RheSdcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtbW9udGgtaXRlbXNcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9J2xldCB3IG9mIHdlZWtkYXlzJz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1tb250aC1pdGVtXCI+e3t3fX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWRheS1pdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByIG9mIG1hdHJpeFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWRheS1pdGVtIGF4LXN0YXRlLWV2ZW50XCIgKm5nRm9yPVwibGV0IGQgb2Ygcjt0cmFja0J5OnRyYWNrQnlGblwiIFt0aXRsZV09XCJnZXRUaXRsZShkLmRhdGUpXCIgW25nQ2xhc3NdPVwieydzZWxlY3RlZCc6IGQuc2VsZWN0ZWQsJ2ZvY3VzZWQnOmQuZm9jdXNlZCwndG9kYXknOmQudG9kYXksJ25leHQtbW9udGgnOmQubmV4dE1vbnRoICwgJ2hvbGlkYXknOmQuaG9saWRheSAsICd1bnNlbGVjdCc6ZC51bnNlbGVjdH1cIiBbbmdTdHlsZV09XCIoZmluZERheShkLmRhdGUpKSA/IGdldFN0eWxlKGQuZGF0ZSk6JydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXREYXlDbGljaygkZXZlbnQsZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2QuZGF0ZS5kYXlJbk1vbnRofX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LW1vbnRoLWNvbnRhaW5lclwiICpuZ1N3aXRjaENhc2U9XCInbW9udGgnXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgciBvZiBtYXRyaXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LW1vbnRoLWl0ZW1cIiAqbmdGb3I9XCJsZXQgZCBvZiByO3RyYWNrQnk6dHJhY2tCeUZuXCIgW25nQ2xhc3NdPVwieydzZWxlY3RlZCc6IGQuc2VsZWN0ZWQsJ2ZvY3VzZWQnOmQuZm9jdXNlZCwndG9kYXknOmQudG9kYXl9XCIgKGNsaWNrKT1cInNldE1vbnRoQ2xpY2soJGV2ZW50LGQuZGF0ZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkLmRhdGV8IGR0OlwiTU1NXCJ9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgteWVhci1jb250YWluZXJcIiAqbmdTd2l0Y2hDYXNlPVwiJ3llYXInXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBjbGFzcz1cImNhbGVuZGFyLXJvd1wiICpuZ0Zvcj1cImxldCByIG9mIG1hdHJpeFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgteWVhci1pdGVtXCIgKm5nRm9yPVwibGV0IGQgb2Ygcjt0cmFja0J5OnRyYWNrQnlGblwiIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWQnOiBkLnNlbGVjdGVkLCdmb2N1c2VkJzpkLmZvY3VzZWQsJ3RvZGF5JzpkLnRvZGF5fVwiIChjbGljayk9XCJzZXRZZWFyQ2xpY2soJGV2ZW50LGQuZGF0ZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3tkLmRhdGUgfCBkdDpcIllZWVlcIn19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWZvb3RlclwiPlxuICAgICAgICA8YXgtYnV0dG9uIChjbGljayk9XCJzZXRUb2RheSgpXCIgKm5nSWY9XCJzaG93VG9kYXlCdXR0b25cIiB0eXBlPVwiZGFya1wiPlxuICAgICAgICAgICAge3tnZXRUb2RheU5hbWUoKX19XG4gICAgICAgIDwvYXgtYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
|
469
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLWJveC9jYWxlbmRhci1ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXItYm94L2NhbGVuZGFyLWJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsUUFBUSxFQUNSLFVBQVUsRUFDVixlQUFlLEVBQ2YsWUFBWSxHQUNiLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDOzs7OztBQXNDdkIsTUFBTSxPQUFPLHNCQUFzQjtJQW1LYjtJQUFnQztJQWxLcEQsUUFBUSxHQUFhLEVBQUUsQ0FBQztJQUVoQixDQUFDLEdBQUc7UUFDVixNQUFNLEVBQUU7WUFDTixNQUFNLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLElBQUk7WUFDdEQsR0FBRyxFQUFFLEtBQUs7WUFDVixNQUFNLEVBQUUsQ0FBQztTQUNWO1FBQ0QsU0FBUyxFQUFFO1lBQ1QsTUFBTSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsSUFBSSxJQUFJO1lBQ3pELEdBQUcsRUFBRSxLQUFLO1lBQ1YsTUFBTSxFQUFFLENBQUM7U0FDVjtLQUNGLENBQUM7SUFFRixTQUFTLENBQVM7SUFHbEIsSUFBSSxHQUFrQixJQUFJLENBQUM7SUFHM0IsSUFBSSxDQUFpQjtJQUdyQixNQUFNLENBQVM7SUFHZixHQUFHLENBQVM7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QUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUN4RDtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ2IsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksS0FBSyxDQUFDO1NBQzVDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDO1FBQ2hELE1BQU0sSUFBSSxHQUFHLHdCQUF3QixDQUFDO1FBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDZCxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUM1QyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUM1QyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUM1QyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUM1QyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUM1QyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUM1QyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUM3QyxDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsZ0JB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O2dCQU1LLEdBQUc7c0JBRGIsS0FBSztnQkFpQkssR0FBRztzQkFEYixLQUFLO2dCQWVOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLO2dCQVFDLGVBQWU7c0JBRHJCLEtBQUs7dUJBQUMsaUJBQWlCO2dCQU9iLElBQUk7c0JBRGQsS0FBSztnQkFZSyxLQUFLO3NCQURmLEtBQUs7Z0JBY04sY0FBYztzQkFEYixNQUFNO2dCQU1QLE9BQU87c0JBRE4sTUFBTTtnQkFNUCxXQUFXO3NCQURWLE1BQU07Z0JBS0ksS0FBSztzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQVhDYWxlbmRhclR5cGUsXG4gIEFYQ29uZmlnLFxuICBBWERhdGVUaW1lLFxuICBBWERhdGVUaW1lUmFuZ2UsXG4gIEFYVHJhbnNsYXRvcixcbn0gZnJvbSAnQGFjb3JleC9jb3JlJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFYQmFzZVNpemFibGVDb21wb25lbnQsXG4gIEFYRWxlbWVudFNpemUsXG59IGZyb20gJy4uLy4uL2Jhc2UvZWxlbWVudC5jbGFzcyc7XG5pbXBvcnQgeyBBWFZhbHVlRXZlbnQgfSBmcm9tICcuLi8uLi9iYXNlL2V2ZW50cy5jbGFzcyc7XG5cbmV4cG9ydCB0eXBlIEFYQ2FsZW5kYXJWaWV3VHlwZSA9ICd5ZWFyJyB8ICdtb250aCcgfCAnZGF5JztcblxuZXhwb3J0IHR5cGUgQVhDYWxlbmRhckhvbGlkYXlzID0gQVhDYWxlbmRhckhvbGlkYXlbXTtcbmV4cG9ydCB0eXBlIEFYQ2FsZW5kYXJIb2xpZGF5c0Z1bmMgPSAoXG4gIHN0YXJ0OiBEYXRlLFxuICBlbmQ6IERhdGUsXG4gIHR5cGU6IEFYQ2FsZW5kYXJUeXBlXG4pID0+IEFYQ2FsZW5kYXJIb2xpZGF5W107XG5leHBvcnQgaW50ZXJmYWNlIEFYQ2FsZW5kYXJIb2xpZGF5IHtcbiAgZGF0ZTogRGF0ZTtcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEFYQ2FsZW5kYXJXZWVrZW5kcyA9IEFYQ2FsZW5kYXJXZWVrZW5kW107XG5leHBvcnQgdHlwZSBBWENhbGVuZGFyV2Vla2VuZHNGdW5jID0gKFxuICBzdGFydDogRGF0ZSxcbiAgZW5kOiBEYXRlLFxuICB0eXBlOiBBWENhbGVuZGFyVHlwZVxuKSA9PiBBWENhbGVuZGFyV2Vla2VuZFtdO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYQ2FsZW5kYXJXZWVrZW5kIHtcbiAgaW5kZXhEYXk6IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtY2FsZW5kYXItYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLWJveC5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBWENhbGVuZGFyQm94Q29tcG9uZW50IGltcGxlbWVudHMgQVhCYXNlU2l6YWJsZUNvbXBvbmVudCB7XG4gIHdlZWtkYXlzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHByaXZhdGUgZCA9IHtcbiAgICBqYWxhbGk6IHtcbiAgICAgIGxvY2FsZTogQVhDb25maWcuZ2V0KCdkYXRlVGltZS5qYWxhbGkubG9jYWxlJykgfHwgJ2ZhJyxcbiAgICAgIGRpcjogJ3J0bCcsXG4gICAgICBudW1iZXI6IDEsXG4gICAgfSxcbiAgICBncmVnb3JpYW46IHtcbiAgICAgIGxvY2FsZTogQVhDb25maWcuZ2V0KCdkYXRlVGltZS5ncmVnb3JpYW4ubG9jYWxlJykgfHwgJ2VuJyxcbiAgICAgIGRpcjogJ2x0cicsXG4gICAgICBudW1iZXI6IDAsXG4gICAgfSxcbiAgfTtcblxuICBudW1Sb3RhdGU6IG51bWJlcjtcblxuICBASW5wdXQoKVxuICBzaXplOiBBWEVsZW1lbnRTaXplID0gJ21kJztcblxuICBASW5wdXQoKVxuICB0eXBlOiBBWENhbGVuZGFyVHlwZTtcblxuICBASW5wdXQoKVxuICBsb2NhbGU6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBkaXI6IHN0cmluZztcblxuICBwcml2YXRlIF9taW46IERhdGU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtaW4odikge1xuICAgIGlmICh2KSB7XG4gICAgICB0aGlzLl9taW4gPSB2O1xuICAgICAgdGhpcy5mb2N1c2VkVmFsdWUgPSB0aGlzLnRvZGF5O1xuICAgICAgdGhpcy52aWV3UmFuZ2UgPSB0aGlzLnRvZGF5Lm1vbnRoLnJhbmdlO1xuICAgICAgdGhpcy5uYXZpZ2F0ZSgwKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1pbigpIHtcbiAgICByZXR1cm4gdGhpcy5fbWluO1xuICB9XG5cbiAgcHJpdmF0ZSBfbWF4OiBEYXRlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWF4KHYpIHtcbiAgICBpZiAodikge1xuICAgICAgdGhpcy5fbWF4ID0gdjtcbiAgICAgIHRoaXMuZm9jdXNlZFZhbHVlID0gdGhpcy50b2RheTtcbiAgICAgIHRoaXMudmlld1JhbmdlID0gdGhpcy50b2RheS5tb250aC5yYW5nZTtcbiAgICAgIHRoaXMubmF2aWdhdGUoMCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBtYXgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21heDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdGFibGVIb2xpZGF5OiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBkYXlTdHlsZSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGRheU1pbk1heFJlc29hbiA9ICcnO1xuXG4gIHByaXZhdGUgZ2V0SG9saWRheTogQVhDYWxlbmRhckhvbGlkYXlzIHwgQVhDYWxlbmRhckhvbGlkYXlzRnVuYztcblxuICBwcml2YXRlIGdldFdlZWtlbmQ6IEFYQ2FsZW5kYXJXZWVrZW5kcyB8IEFYQ2FsZW5kYXJXZWVrZW5kc0Z1bmM7XG5cbiAgQElucHV0KCdzaG93VG9kYXlCdXR0b24nKVxuICBwdWJsaWMgc2hvd1RvZGF5QnV0dG9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgbWF0cml4OiBhbnlbXSA9IFtdO1xuICByb3RhdGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3ZpZXc6IEFYQ2FsZW5kYXJWaWV3VHlwZSA9ICdkYXknO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHZpZXcoKTogQVhDYWxlbmRhclZpZXdUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fdmlldztcbiAgfVxuICBwdWJsaWMgc2V0IHZpZXcodjogQVhDYWxlbmRhclZpZXdUeXBlKSB7XG4gICAgdGhpcy5fdmlldyA9IHY7XG4gICAgdGhpcy5uYXZpZ2F0ZSgwKTtcbiAgfVxuXG4gIHByaXZhdGUgX2RlcHRoOiBBWENhbGVuZGFyVmlld1R5cGUgPSAnZGF5JztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGRlcHRoKCk6IEFYQ2FsZW5kYXJWaWV3VHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlcHRoO1xuICB9XG4gIHB1YmxpYyBzZXQgZGVwdGgodjogQVhDYWxlbmRhclZpZXdUeXBlKSB7XG4gICAgdGhpcy5fZGVwdGggPSB2O1xuICAgIHRoaXMudmlldyA9IHY7XG4gIH1cblxuICB2aWV3UmFuZ2U6IEFYRGF0ZVRpbWVSYW5nZTtcbiAgcHJpdmF0ZSBob2xpZGF5czogQVhDYWxlbmRhckhvbGlkYXlbXSA9IFtdO1xuICBwcml2YXRlIHdlZWtlbmRzOiBBWENhbGVuZGFyV2Vla2VuZFtdID0gW107XG5cbiAgQE91dHB1dCgpXG4gIG9uVmFsdWVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QVhWYWx1ZUV2ZW50PERhdGU+PiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgQVhWYWx1ZUV2ZW50PERhdGU+XG4gID4oKTtcblxuICBAT3V0cHV0KClcbiAgb25DbGljazogRXZlbnRFbWl0dGVyPEFYVmFsdWVFdmVudDxEYXRlPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEFYVmFsdWVFdmVudDxEYXRlPlxuICA+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG5cbiAgcHJpdmF0ZSBfdmFsdWU6IEFYRGF0ZVRpbWU7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlPy5kYXRlO1xuICB9XG4gIHB1YmxpYyBzZXQgdmFsdWUodjogRGF0ZSkge1xuICAgIGxldCB2djogQVhEYXRlVGltZTtcbiAgICBpZiAodikge1xuICAgICAgdnYgPSBBWERhdGVUaW1lLmNvbnZlcnQodik7XG4gICAgfVxuICAgIGxldCB1blZhbGlkRGF0ZSA9IGZhbHNlO1xuICAgIGlmICh0aGlzLl9tYXggfHwgdGhpcy5fbWluKSB7XG4gICAgICB1blZhbGlkRGF0ZSA9IHRoaXMuaXNJbk1Jbk1heFJhbmdlKHZ2KTtcbiAgICB9XG4gICAgaWYgKCF1blZhbGlkRGF0ZSkge1xuICAgICAgaWYgKHZ2ICYmICF2di5lcXVhbCh0aGlzLl92YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2djtcbiAgICAgICAgdGhpcy5fdmFsdWUudHlwZSA9IHRoaXMudHlwZTtcbiAgICAgICAgdGhpcy5zZXRGb2N1cyh0aGlzLl92YWx1ZS5jbG9uZSgpKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZ2LmRhdGUpO1xuICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkLmVtaXQoe1xuICAgICAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5fdmFsdWU/LmRhdGUsXG4gICAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHYgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcbiAgICAgICAgdGhpcy5mb2N1c2VkVmFsdWUgPSB0aGlzLnRvZGF5O1xuICAgICAgICB0aGlzLnZpZXdSYW5nZSA9IHRoaXMudG9kYXkubW9udGgucmFuZ2U7XG4gICAgICAgIHRoaXMubmF2aWdhdGUoMCk7XG4gICAgICB9XG4gICAgICB0aGlzLm9uQ2xpY2suZW1pdCh7XG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgdmFsdWU6IHRoaXMuX3ZhbHVlPy5kYXRlLFxuICAgICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZvY3VzZWRWYWx1ZTogQVhEYXRlVGltZTtcbiAgZ2V0IHRvZGF5KCk6IEFYRGF0ZVRpbWUge1xuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShuZXcgRGF0ZSgpLCB0aGlzLnR5cGUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHJlZjogRWxlbWVudFJlZikge1xuICAgIC8vIHNldCBkZWZhdWx0c1xuICAgIHRoaXMuZ2V0SG9saWRheSA9IEFYQ29uZmlnLmdldCgnZGF0ZVRpbWUuaG9saWRheXMnKTtcbiAgICB0aGlzLmdldFdlZWtlbmQgPSBBWENvbmZpZy5nZXQoJ2RhdGVUaW1lLndlZWtlbmRzJyk7XG4gIH1cbiAgZmluZERheShkYXRlOiBBWERhdGVUaW1lKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5kYXlTdHlsZS5maW5kKFxuICAgICAgICAoYykgPT4gYy5kYXRlLnNwbGl0KCdUJylbMF0gPT0gZGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF1cbiAgICAgIClcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIGdldFN0eWxlKGRhdGU6IEFYRGF0ZVRpbWUpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmRheVN0eWxlLmZpbmQoXG4gICAgICAgIChjKSA9PiBjLmRhdGUuc3BsaXQoJ1QnKVswXSA9PSBkYXRlLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXVxuICAgICAgKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRoaXMuZGF5U3R5bGUuZmluZChcbiAgICAgICAgKGMpID0+IGMuZGF0ZS5zcGxpdCgnVCcpWzBdID09IGRhdGUudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdXG4gICAgICApLnN0eWxlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgZ2V0VGl0bGUoZGF0ZTogQVhEYXRlVGltZSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMuZGF5U3R5bGUuZmluZChcbiAgICAgICAgKGMpID0+IGMuZGF0ZS5zcGxpdCgnVCcpWzBdID09IGRhdGUudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdXG4gICAgICApXG4gICAgKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXlTdHlsZS5maW5kKFxuICAgICAgICAoYykgPT4gYy5kYXRlLnNwbGl0KCdUJylbMF0gPT0gZGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF1cbiAgICAgICkudGV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKFxuICAgICAgICAodGhpcy5fbWluICYmXG4gICAgICAgICAgdGhpcy5fbWF4ICYmXG4gICAgICAgICAgZGF0ZS5jb21wYWlyZU5ldyhcbiAgICAgICAgICAgIG5ldyBBWERhdGVUaW1lKHRoaXMuX21pbiwgdGhpcy50eXBlKSxcbiAgICAgICAgICAgICdZTUQnLFxuICAgICAgICAgICAgdGhpcy50eXBlXG4gICAgICAgICAgKSA9PT0gLTEpIHx8XG4gICAgICAgIGRhdGUuY29tcGFpcmVOZXcoXG4gICAgICAgICAgbmV3IEFYRGF0ZVRpbWUodGhpcy5fbWF4LCB0aGlzLnR5cGUpLFxuICAgICAgICAgICdZTUQnLFxuICAgICAgICAgIHRoaXMudHlwZVxuICAgICAgICApID09PSAxXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF5TWluTWF4UmVzb2FuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZm9jdXNlZFZhbHVlID0gbmV3IEFYRGF0ZVRpbWUobmV3IERhdGUoKSwgdGhpcy50eXBlKTtcbiAgICAvL1xuICAgIHRoaXMuaW5pdExheW91dCgpO1xuICAgIC8vXG4gICAgdGhpcy52aWV3UmFuZ2UgPSB0aGlzLnRvZGF5Lm1vbnRoLnJhbmdlO1xuICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLnNldEZvY3VzKG5ldyBBWERhdGVUaW1lKHRoaXMudmFsdWUsIHRoaXMudHlwZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldEZvY3VzKHRoaXMudG9kYXkpO1xuICAgIH1cblxuICAgIHRoaXMudmlldyA9ICdkYXknO1xuICB9XG5cbiAgZ2V0Vmlld0NvbXBhaXJlKHZpZXc6IEFYQ2FsZW5kYXJWaWV3VHlwZSkge1xuICAgIHN3aXRjaCAodmlldykge1xuICAgICAgY2FzZSAnZGF5JzpcbiAgICAgICAgcmV0dXJuICdZTUQnO1xuICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICByZXR1cm4gJ1lNJztcbiAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICByZXR1cm4gJ1knO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm5hdmlnYXRlKDApO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0TGF5b3V0KCkge1xuICAgIGlmICghdGhpcy50eXBlKSB7XG4gICAgICB0aGlzLnR5cGUgPSBBWENvbmZpZy5nZXQoJ2RhdGVUaW1lLnR5cGUnKSB8fCAnZ3JlZ29yaWFuJztcbiAgICB9XG4gICAgaWYgKCF0aGlzLmxvY2FsZSkge1xuICAgICAgdGhpcy5sb2NhbGUgPSB0aGlzLmRbdGhpcy50eXBlXT8ubG9jYWxlIHx8IHRoaXMubG9jYWxlO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZGlyKSB7XG4gICAgICB0aGlzLmRpciA9IHRoaXMuZFt0aGlzLnR5cGVdPy5kaXIgfHwgJ2x0cic7XG4gICAgfVxuICAgIHRoaXMubnVtUm90YXRlID0gdGhpcy5kW3RoaXMudHlwZV0/Lm51bWJlciB8fCAwO1xuICAgIGNvbnN0IHBhdGggPSAnZGF0ZVRpbWUud2Vla2RheXNTaG9ydCc7XG4gICAgdGhpcy53ZWVrZGF5cyA9IFtcbiAgICAgIEFYVHJhbnNsYXRvci5nZXQoYCR7cGF0aH0uc3VuYCwgdGhpcy5sb2NhbGUpLFxuICAgICAgQVhUcmFuc2xhdG9yLmdldChgJHtwYXRofS5tb25gLCB0aGlzLmxvY2FsZSksXG4gICAgICBBWFRyYW5zbGF0b3IuZ2V0KGAke3BhdGh9LnR1ZWAsIHRoaXMubG9jYWxlKSxcbiAgICAgIEFYVHJhbnNsYXRvci5nZXQoYCR7cGF0aH0ud2VkYCwgdGhpcy5sb2NhbGUpLFxuICAgICAgQVhUcmFuc2xhdG9yLmdldChgJHtwYXRofS50aHVgLCB0aGlzLmxvY2FsZSksXG4gICAgICBBWFRyYW5zbGF0b3IuZ2V0KGAke3BhdGh9LmZyaWAsIHRoaXMubG9jYWxlKSxcbiAgICAgIEFYVHJhbnNsYXRvci5nZXQoYCR7cGF0aH0uc2F0YCwgdGhpcy5sb2NhbGUpLFxuICAgIF07XG4gIH1cblxuICBnZXRUb2RheU5hbWUoKSB7XG4gICAgcmV0dXJuIEFYVHJhbnNsYXRvci5nZXQoJ2RhdGVUaW1lLnRvZGF5JywgdGhpcy5sb2NhbGUpO1xuICB9XG5cbiAgcHJldigpIHtcbiAgICB0aGlzLm5hdmlnYXRlKC0xKTtcbiAgfVxuXG4gIG5leHQoKSB7XG4gICAgdGhpcy5uYXZpZ2F0ZSgxKTtcbiAgfVxuXG4gIHJvdGF0ZShhcnJheSwgbikge1xuICAgIGNvbnN0IGxlbiA9IGFycmF5Lmxlbmd0aDtcbiAgICByZXR1cm4gIShuICUgbGVuKVxuICAgICAgPyBhcnJheVxuICAgICAgOiBuID4gMFxuICAgICAgPyBhcnJheS5tYXAoKGUsIGksIGEpID0+IGFbKGkgKyBuKSAlIGxlbl0pXG4gICAgICA6IGFycmF5Lm1hcCgoZSwgaSwgYSkgPT4gYVsobGVuIC0gKChsZW4gLSBpIC0gbikgJSBsZW4pKSAlIGxlbl0pO1xuICB9XG5cbiAgbmF2aWdhdGUodmFsdWU6IG51bWJlciB8IEFYRGF0ZVRpbWUpIHtcbiAgICBsZXQgc3RhcnQ6IEFYRGF0ZVRpbWU7XG4gICAgbGV0IGVuZDogQVhEYXRlVGltZTtcbiAgICBpZiAodGhpcy52aWV3ID09PSAnZGF5Jykge1xuICAgICAgbGV0IGZkOiBBWERhdGVUaW1lO1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQVhEYXRlVGltZSkge1xuICAgICAgICBmZCA9IHZhbHVlLnN0YXJ0T2YoJ21vbnRoJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmZCA9IHRoaXMudmlld1JhbmdlLnN0YXJ0VGltZVxuICAgICAgICAgIC5hZGQoJ2RheScsIDE1KVxuICAgICAgICAgIC5hZGQoJ21vbnRoJywgdmFsdWUpXG4gICAgICAgICAgLnN0YXJ0T2YoJ21vbnRoJyk7XG4gICAgICB9XG5cbiAgICAgIHN0YXJ0ID0gZmQuZmlyc3REYXlPZldlZWs7XG4gICAgICBlbmQgPSBmZC5lbmRPZignbW9udGgnKS5lbmREYXlPZldlZWs7XG5cbiAgICAgIHN0YXJ0ID0gc3RhcnQuYWRkKCdkYXknLCAtdGhpcy5udW1Sb3RhdGUpO1xuICAgICAgZW5kID0gZW5kLmFkZCgnZGF5JywgNykuYWRkKCdkYXknLCAtdGhpcy5udW1Sb3RhdGUpO1xuXG4gICAgICAvLyBUT0RPOiBhcHBseSBzdGFydCBvZiB3ZWVrXG4gICAgICBpZiAoIXRoaXMucm90YXRlZCAmJiB0aGlzLndlZWtkYXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2phbGFsaScpIHtcbiAgICAgICAgICB0aGlzLndlZWtkYXlzID0gdGhpcy5yb3RhdGUodGhpcy53ZWVrZGF5cywgLXRoaXMubnVtUm90YXRlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLndlZWtkYXlzID0gdGhpcy5yb3RhdGUodGhpcy53ZWVrZGF5cywgdGhpcy5udW1Sb3RhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yb3RhdGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMudmlldyA9PT0gJ21vbnRoJykge1xuICAgICAgbGV0IGZkOiBBWERhdGVUaW1lO1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQVhEYXRlVGltZSkge1xuICAgICAgICBmZCA9IHZhbHVlLnN0YXJ0T2YoJ3llYXInKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZkID0gdGhpcy52aWV3UmFuZ2Uuc3RhcnRUaW1lXG4gICAgICAgICAgLmFkZCgnZGF5JywgMTUpXG4gICAgICAgICAgLmFkZCgneWVhcicsIHZhbHVlKVxuICAgICAgICAgIC5zdGFydE9mKCd5ZWFyJyk7XG4gICAgICB9XG4gICAgICBzdGFydCA9IGZkO1xuICAgICAgZW5kID0gZmQuZW5kT2YoJ3llYXInKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudmlldyA9PT0gJ3llYXInKSB7XG4gICAgICBsZXQgZmQ6IEFYRGF0ZVRpbWU7XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBWERhdGVUaW1lKSB7XG4gICAgICAgIGZkID0gdmFsdWUuc3RhcnRPZigneWVhcicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmQgPSB0aGlzLnZpZXdSYW5nZS5zdGFydFRpbWVcbiAgICAgICAgICAuYWRkKCdkYXknLCAxNSlcbiAgICAgICAgICAuYWRkKCd5ZWFyJywgdmFsdWUgKiAxMClcbiAgICAgICAgICAuc3RhcnRPZigneWVhcicpO1xuICAgICAgfVxuICAgICAgc3RhcnQgPSBmZC5hZGQoJ3llYXInLCAtNCk7XG4gICAgICBlbmQgPSBzdGFydC5hZGQoJ3llYXInLCA4KS5lbmRPZigneWVhcicpO1xuICAgIH1cbiAgICB0aGlzLnZpZXdSYW5nZSA9IG5ldyBBWERhdGVUaW1lUmFuZ2Uoc3RhcnQsIGVuZCk7XG4gICAgLy9cbiAgICBpZiAodGhpcy5nZXRIb2xpZGF5ICYmIHR5cGVvZiB0aGlzLmdldEhvbGlkYXkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuaG9saWRheXMgPSB0aGlzLmdldEhvbGlkYXkoc3RhcnQuZGF0ZSwgZW5kLmRhdGUsIHRoaXMudHlwZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZ2V0V2Vla2VuZCAmJiB0eXBlb2YgdGhpcy5nZXRXZWVrZW5kID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLndlZWtlbmRzID0gdGhpcy5nZXRXZWVrZW5kKHN0YXJ0LmRhdGUsIGVuZC5kYXRlLCB0aGlzLnR5cGUpO1xuICAgIH1cblxuICAgIC8vXG4gICAgaWYgKHRoaXMudmlldyA9PT0gJ2RheScpIHtcbiAgICAgIHRoaXMubWF0cml4ID0gdGhpcy5tYXRyaXhpZnkoXG4gICAgICAgIHRoaXMuYXBwbHlTdHlsZSh0aGlzLnZpZXdSYW5nZS5lbnVtdXJhdGUoJ2RheScsIHRoaXMudHlwZSkpLFxuICAgICAgICA3XG4gICAgICApO1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLm1hdHJpeC5sZW5ndGggPiAwICYmXG4gICAgICAgIHRoaXMubWF0cml4WzBdLmZpbmQoKGMpID0+IGMubmV4dE1vbnRoID09PSBmYWxzZSkgPT09IHVuZGVmaW5lZFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubWF0cml4LnNwbGljZSgwLCAxKTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5tYXRyaXhbdGhpcy5tYXRyaXgubGVuZ3RoIC0gMV0uZmluZChcbiAgICAgICAgICAoYykgPT4gYy5uZXh0TW9udGggPT09IGZhbHNlXG4gICAgICAgICkgPT09IHVuZGVmaW5lZFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubWF0cml4LnNwbGljZSh0aGlzLm1hdHJpeC5sZW5ndGggLSAxLCAxKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMudmlldyA9PT0gJ21vbnRoJykge1xuICAgICAgdGhpcy5tYXRyaXggPSB0aGlzLm1hdHJpeGlmeShcbiAgICAgICAgdGhpcy5hcHBseVN0eWxlKHRoaXMudmlld1JhbmdlLmVudW11cmF0ZSgnbW9udGgnLCB0aGlzLnR5cGUpKSxcbiAgICAgICAgM1xuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudmlldyA9PT0gJ3llYXInKSB7XG4gICAgICB0aGlzLm1hdHJpeCA9IHRoaXMubWF0cml4aWZ5KFxuICAgICAgICB0aGlzLmFwcGx5U3R5bGUodGhpcy52aWV3UmFuZ2UuZW51bXVyYXRlKCd5ZWFyJywgdGhpcy50eXBlKSksXG4gICAgICAgIDNcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlTdHlsZShkYXRlczogQVhEYXRlVGltZVtdKTogYW55W10ge1xuICAgIGNvbnN0IGl0ZW1zOiBhbnlbXSA9IFtdO1xuICAgIGRhdGVzLmZvckVhY2goKGQsIGksIGopID0+IHtcbiAgICAgIGNvbnN0IGl0ZW06IGFueSA9IHt9O1xuICAgICAgaXRlbS5kYXRlID0gZDtcblxuICAgICAgaXRlbS5zZWxlY3RlZCA9XG4gICAgICAgIGQuY29tcGFpcmVOZXcoXG4gICAgICAgICAgbmV3IEFYRGF0ZVRpbWUodGhpcy52YWx1ZSwgdGhpcy50eXBlKSxcbiAgICAgICAgICB0aGlzLmdldFZpZXdDb21wYWlyZSh0aGlzLnZpZXcpLFxuICAgICAgICAgIHRoaXMudHlwZVxuICAgICAgICApID09PSAwO1xuICAgICAgaXRlbS5mb2N1c2VkID1cbiAgICAgICAgZC5jb21wYWlyZU5ldyhcbiAgICAgICAgICB0aGlzLmZvY3VzZWRWYWx1ZSxcbiAgICAgICAgICB0aGlzLmdldFZpZXdDb21wYWlyZSh0aGlzLnZpZXcpLFxuICAgICAgICAgIHRoaXMudHlwZVxuICAgICAgICApID09PSAwO1xuICAgICAgaXRlbS50b2RheSA9XG4gICAgICAgIHRoaXMudG9kYXkgJiZcbiAgICAgICAgZC5jb21wYWlyZU5ldyhcbiAgICAgICAgICB0aGlzLnRvZGF5LFxuICAgICAgICAgIHRoaXMuZ2V0Vmlld0NvbXBhaXJlKHRoaXMudmlldyksXG4gICAgICAgICAgdGhpcy50eXBlXG4gICAgICAgICkgPT09IDA7XG4gICAgICBpZiAodGhpcy52aWV3ID09PSAnZGF5Jykge1xuICAgICAgICAvLyAgaXRlbS5uZXh0TW9udGggPSBkLmNvbXBhaXJlTmV3KHRoaXMudmlld1JhbmdlLnN0YXJ0VGltZS5hZGQoJ2RheScsIDEwKSwgJ1lNJykgIT09IDA7XG4gICAgICAgIGl0ZW0ubmV4dE1vbnRoID1cbiAgICAgICAgICBkLmNvbXBhaXJlTmV3KFxuICAgICAgICAgICAgdGhpcy52aWV3UmFuZ2Uuc3RhcnRUaW1lLmFkZCgnZGF5JywgMTApLFxuICAgICAgICAgICAgJ1lNJyxcbiAgICAgICAgICAgIHRoaXMudHlwZVxuICAgICAgICAgICkgIT09IDA7XG5cbiAgICAgICAgaXRlbS51bnNlbGVjdCA9IHRoaXMuaXNJbk1Jbk1heFJhbmdlKGQpO1xuICAgICAgICB0aGlzLmhvbGlkYXlzLmZvckVhY2goKGgpID0+IHtcbiAgICAgICAgICBjb25zdCBjb21wID0gZC5jb21wYWlyZU5ldyhcbiAgICAgICAgICAgIG5ldyBBWERhdGVUaW1lKGguZGF0ZSwgdGhpcy50eXBlKSxcbiAgICAgICAgICAgICdZTUQnLFxuICAgICAgICAgICAgdGhpcy50eXBlXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoY29tcCA9PT0gMCkge1xuICAgICAgICAgICAgaXRlbS5ob2xpZGF5ID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGFibGVIb2xpZGF5ID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICBpdGVtLnVuc2VsZWN0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGluZGV4RGF5ID0gaSAtIE1hdGguZmxvb3IoaSAvIDcpICogNztcbiAgICAgICAgdGhpcy53ZWVrZW5kcy5mb3JFYWNoKChjYykgPT4ge1xuICAgICAgICAgIGlmIChOdW1iZXIoY2MpID09PSBpbmRleERheSkge1xuICAgICAgICAgICAgaXRlbS5ob2xpZGF5ID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGFibGVIb2xpZGF5ID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICBpdGVtLnVuc2VsZWN0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICB9KTtcbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cblxuICBjaGFuZ2VWaWV3KCkge1xuICAgIGlmICh0aGlzLnZpZXcgPT09ICdkYXknKSB7XG4gICAgICB0aGlzLnZpZXcgPSAnbW9udGgnO1xuICAgIH0gZWxzZSBpZiAodGhpcy52aWV3ID09PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLnZpZXcgPSAneWVhcic7XG4gICAgfVxuICB9XG5cbiAgbWF0cml4aWZ5KGFycjogYW55W10sIGNvbHMpIHtcbiAgICBjb25zdCByb3dzID0gTWF0aC5jZWlsKGFyci5sZW5ndGggLyBjb2xzKTtcbiAgICBjb25zdCBtYXRyaXggPSBbXTtcbiAgICBpZiAocm93cyAqIGNvbHMgPT09IGFyci5sZW5ndGgpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSArPSBjb2xzKSB7XG4gICAgICAgIG1hdHJpeC5wdXNoKGFyci5zbGljZShpLCBjb2xzICsgaSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xuICB9XG5cbiAgc2V0RGF5Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW0pIHtcbiAgICBpZiAoaXRlbS51bnNlbGVjdCAhPT0gdHJ1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IGl0ZW0uZGF0ZS5kYXRlO1xuICAgIH1cblxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgaXNJbk1Jbk1heFJhbmdlKGQpIHtcbiAgICBsZXQgciA9IGZhbHNlO1xuICAgIGlmIChkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLl9taW4gJiYgIXRoaXMuX21heCkge1xuICAgICAgICByID1cbiAgICAgICAgICBkLmNvbXBhaXJlTmV3KFxuICAgICAgICAgICAgbmV3IEFYRGF0ZVRpbWUodGhpcy5fbWluLCB0aGlzLnR5cGUpLFxuICAgICAgICAgICAgdGhpcy5nZXRWaWV3Q29tcGFpcmUodGhpcy52aWV3KSxcbiAgICAgICAgICAgIHRoaXMudHlwZVxuICAgICAgICAgICkgPT09IC0xO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX21heCAmJiAhdGhpcy5fbWluKSB7XG4gICAgICAgIHIgPVxuICAgICAgICAgIGQuY29tcGFpcmVOZXcoXG4gICAgICAgICAgICBuZXcgQVhEYXRlVGltZSh0aGlzLl9tYXgsIHRoaXMudHlwZSksXG4gICAgICAgICAgICB0aGlzLmdldFZpZXdDb21wYWlyZSh0aGlzLnZpZXcpLFxuICAgICAgICAgICAgdGhpcy50eXBlXG4gICAgICAgICAgKSA9PT0gMTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl9taW4gJiYgdGhpcy5fbWF4KSB7XG4gICAgICAgIHIgPVxuICAgICAgICAgIGQuY29tcGFpcmVOZXcoXG4gICAgICAgICAgICBuZXcgQVhEYXRlVGltZSh0aGlzLl9taW4sIHRoaXMudHlwZSksXG4gICAgICAgICAgICB0aGlzLmdldFZpZXdDb21wYWlyZSh0aGlzLnZpZXcpLFxuICAgICAgICAgICAgdGhpcy50eXBlXG4gICAgICAgICAgKSA9PT0gLTEgfHxcbiAgICAgICAgICBkLmNvbXBhaXJlTmV3KFxuICAgICAgICAgICAgbmV3IEFYRGF0ZVRpbWUodGhpcy5fbWF4LCB0aGlzLnR5cGUpLFxuICAgICAgICAgICAgdGhpcy5nZXRWaWV3Q29tcGFpcmUodGhpcy52aWV3KSxcbiAgICAgICAgICAgIHRoaXMudHlwZVxuICAgICAgICAgICkgPT09IDE7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgc2V0TW9udGhDbGljayhldmVudDogTW91c2VFdmVudCwgZGF0ZTogQVhEYXRlVGltZSkge1xuICAgIGlmICh0aGlzLmRlcHRoID09PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLnZhbHVlID0gZGF0ZS5kYXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZpZXcgPSAnZGF5JztcbiAgICAgIHRoaXMuc2V0Rm9jdXMoXG4gICAgICAgIG5ldyBBWERhdGVUaW1lKHRoaXMudmFsdWUsIHRoaXMudHlwZSlcbiAgICAgICAgICAuc2V0KCd5ZWFyJywgZGF0ZS55ZWFyKVxuICAgICAgICAgIC5zZXQoJ21vbnRoJywgZGF0ZS5tb250aE9mWWVhcilcbiAgICAgICk7XG4gICAgfVxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgc2V0WWVhckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBkYXRlOiBBWERhdGVUaW1lKSB7XG4gICAgaWYgKHRoaXMuZGVwdGggPT09ICd5ZWFyJykge1xuICAgICAgdGhpcy52YWx1ZSA9IGRhdGUuZGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52aWV3ID0gJ21vbnRoJztcbiAgICAgIHRoaXMuc2V0Rm9jdXMoXG4gICAgICAgIG5ldyBBWERhdGVUaW1lKHRoaXMudmFsdWUsIHRoaXMudHlwZSkuc2V0KCd5ZWFyJywgZGF0ZS55ZWFyKVxuICAgICAgKTtcbiAgICB9XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBzZXRGb2N1cyhkYXRlOiBBWERhdGVUaW1lKSB7XG4gICAgdGhpcy5mb2N1c2VkVmFsdWUgPSBkYXRlO1xuICAgIHRoaXMubmF2aWdhdGUodGhpcy5mb2N1c2VkVmFsdWUpO1xuICB9XG5cbiAgc2V0VG9kYXkoKSB7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudG9kYXkuZGF0ZTtcbiAgICB0aGlzLnZpZXcgPSAnZGF5JztcbiAgfVxuXG4gIHRyYWNrQnlGbihpbmRleCwgaXRlbTogYW55KSB7XG4gICAgcmV0dXJuIGl0ZW0uZGF0ZS5kYXRlLmdldFRpbWUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWNvbnRhaW5lciB7e3NpemV9fVwiIFtuZ0NsYXNzXT1cInR5cGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1jb250cm9sbC1idXR0b25cIj5cbiAgICAgICAgICAgIDxheC1idXR0b24gdHlwZT1cImxpZ2h0IGJsYW5rXCIgKGNsaWNrKT1cIm5leHQoKVwiPlxuICAgICAgICAgICAgICAgIHt7J2NvbW1vbi5uZXh0JyB8IHRyYW5zfX1cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LW5hdi1idXR0b25cIiBbbmdTd2l0Y2hdPVwidmlld1wiPlxuICAgICAgICAgICAgPGF4LWJ1dHRvbiB0eXBlPVwibGlnaHQgYmxhbmtcIiAoY2xpY2spPVwiY2hhbmdlVmlldygpXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RheSdcIj5cbiAgICAgICAgICAgICAgICAgICAge3t2aWV3UmFuZ2Uuc3RhcnRUaW1lLmFkZCgnZGF5JywxMCkgfCBkdDpcIk1NTSBZWVlZXCJ9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtb250aCdcIj5cbiAgICAgICAgICAgICAgICAgICAge3t2aWV3UmFuZ2Uuc3RhcnRUaW1lIHwgZHQ6XCJZWVlZXCJ9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgICAgICAgICAgICAge3t2aWV3UmFuZ2Uuc3RhcnRUaW1lIHwgZHQ6XCJZWVlZXCJ9fSAtIHt7dmlld1JhbmdlLmVuZFRpbWUgfCBkdDpcIllZWVlcIn19XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1jb250cm9sbC1idXR0b25cIj5cbiAgICAgICAgICAgIDxheC1idXR0b24gdHlwZT1cImxpZ2h0IGJsYW5rXCIgKGNsaWNrKT1cInByZXYoKVwiPlxuICAgICAgICAgICAgICAgIHt7J2NvbW1vbi5wcmV2JyB8IHRyYW5zfX1cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItYm9keVwiPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ2aWV3XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGF5J1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1tb250aC1pdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj0nbGV0IHcgb2Ygd2Vla2RheXMnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LW1vbnRoLWl0ZW1cIj57e3d9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZGF5LWl0ZW1zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHIgb2YgbWF0cml4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZGF5LWl0ZW0gYXgtc3RhdGUtZXZlbnRcIiAqbmdGb3I9XCJsZXQgZCBvZiByO3RyYWNrQnk6dHJhY2tCeUZuXCIgW3RpdGxlXT1cImdldFRpdGxlKGQuZGF0ZSlcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkJzogZC5zZWxlY3RlZCwnZm9jdXNlZCc6ZC5mb2N1c2VkLCd0b2RheSc6ZC50b2RheSwnbmV4dC1tb250aCc6ZC5uZXh0TW9udGggLCAnaG9saWRheSc6ZC5ob2xpZGF5ICwgJ3Vuc2VsZWN0JzpkLnVuc2VsZWN0fVwiIFtuZ1N0eWxlXT1cIihmaW5kRGF5KGQuZGF0ZSkpID8gZ2V0U3R5bGUoZC5kYXRlKTonJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldERheUNsaWNrKCRldmVudCxkKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZC5kYXRlLmRheUluTW9udGh9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtbW9udGgtY29udGFpbmVyXCIgKm5nU3dpdGNoQ2FzZT1cIidtb250aCdcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByIG9mIG1hdHJpeFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtbW9udGgtaXRlbVwiICpuZ0Zvcj1cImxldCBkIG9mIHI7dHJhY2tCeTp0cmFja0J5Rm5cIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkJzogZC5zZWxlY3RlZCwnZm9jdXNlZCc6ZC5mb2N1c2VkLCd0b2RheSc6ZC50b2RheX1cIiAoY2xpY2spPVwic2V0TW9udGhDbGljaygkZXZlbnQsZC5kYXRlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2QuZGF0ZXwgZHQ6XCJNTU1cIn19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC15ZWFyLWNvbnRhaW5lclwiICpuZ1N3aXRjaENhc2U9XCIneWVhcidcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGNsYXNzPVwiY2FsZW5kYXItcm93XCIgKm5nRm9yPVwibGV0IHIgb2YgbWF0cml4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC15ZWFyLWl0ZW1cIiAqbmdGb3I9XCJsZXQgZCBvZiByO3RyYWNrQnk6dHJhY2tCeUZuXCIgW25nQ2xhc3NdPVwieydzZWxlY3RlZCc6IGQuc2VsZWN0ZWQsJ2ZvY3VzZWQnOmQuZm9jdXNlZCwndG9kYXknOmQudG9kYXl9XCIgKGNsaWNrKT1cInNldFllYXJDbGljaygkZXZlbnQsZC5kYXRlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57e2QuZGF0ZSB8IGR0OlwiWVlZWVwifX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItZm9vdGVyXCI+XG4gICAgICAgIDxheC1idXR0b24gKGNsaWNrKT1cInNldFRvZGF5KClcIiAqbmdJZj1cInNob3dUb2RheUJ1dHRvblwiIHR5cGU9XCJkYXJrXCI+XG4gICAgICAgICAgICB7e2dldFRvZGF5TmFtZSgpfX1cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
|
@@ -1,6 +1,6 @@
|
|
1
|
-
import {
|
2
|
-
import { AXProperyEditorComponent } from '../../property-editor.class';
|
1
|
+
import { ChangeDetectorRef, Component, ViewChild } from '@angular/core';
|
3
2
|
import { AXSelectBoxComponent } from '../../../selectbox/selectbox.component';
|
3
|
+
import { AXProperyEditorComponent } from '../../property-editor.class';
|
4
4
|
import * as i0 from "@angular/core";
|
5
5
|
import * as i1 from "../../../selectbox/selectbox.component";
|
6
6
|
import * as i2 from "../../../data-source/datasource.component";
|
@@ -12,7 +12,7 @@ export class AXSelectBoxPropertyEditorComponent extends AXProperyEditorComponent
|
|
12
12
|
selectionMode = 'single';
|
13
13
|
selectionDataMode = 'value';
|
14
14
|
allowSearch = true;
|
15
|
-
allowNull =
|
15
|
+
allowNull = true;
|
16
16
|
disabled = false;
|
17
17
|
items = [];
|
18
18
|
remoteOperation = false;
|
@@ -72,4 +72,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
72
72
|
type: ViewChild,
|
73
73
|
args: [AXSelectBoxComponent, { static: true }]
|
74
74
|
}] } });
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0Ym94LmVkaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL3Byb3BlcnR5LWVkaXRvci9lZGl0b3JzL3NlbGVjdGJveC1lZGl0b3Ivc2VsZWN0Ym94LmVkaXRvci50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL3Byb3BlcnR5LWVkaXRvci9lZGl0b3JzL3NlbGVjdGJveC1lZGl0b3Ivc2VsZWN0Ym94LmVkaXRvci5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTlFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7OztBQUt2RSxNQUFNLE9BQU8sa0NBQW1DLFNBQVEsd0JBQTZCO0lBNEI3RDtJQTNCdEIsVUFBVSxHQUFXLElBQUksQ0FBQztJQUMxQixTQUFTLEdBQVcsTUFBTSxDQUFDO0lBQzNCLGFBQWEsR0FBVyxRQUFRLENBQUM7SUFDakMsaUJBQWlCLEdBQVcsT0FBTyxDQUFDO0lBQ3BDLFdBQVcsR0FBWSxJQUFJLENBQUM7SUFDNUIsU0FBUyxHQUFZLElBQUksQ0FBQztJQUMxQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLEtBQUssR0FBUSxFQUFFLENBQUM7SUFDaEIsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUV4QixVQUFVLENBQWU7SUFHekIsU0FBUyxDQUF1QjtJQUV4QixPQUFPLENBQU07SUFDckIsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxJQUFXLE1BQU0sQ0FBQyxDQUFNO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRUQsWUFBc0IsR0FBc0I7UUFDMUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRFMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7SUFFNUMsQ0FBQztJQUVELGlCQUFpQixDQUFDLENBQU07UUFDdEIsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxXQUFXLEdBQUcsQ0FBQyxDQUFDLEVBQWdCLEVBQUU7UUFDaEMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzdCLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRTtnQkFDaEIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDN0IsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztpQkFDN0I7cUJBQU0sSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssVUFBVSxFQUFFO29CQUMzQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUM3QyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUN4QjtxQkFBTTtvQkFDTCxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ2I7WUFDSCxDQUFDLENBQUM7WUFDRixNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO2dCQUM5QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7b0JBQ2xCLElBQUksRUFBRSxDQUFDO29CQUNQLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDdkI7WUFDSCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQzt3R0E1RFMsa0NBQWtDOzRGQUFsQyxrQ0FBa0MsK0ZBYWxDLG9CQUFvQixxRkNyQmpDLDBlQU9nQjs7NEZEQ0gsa0NBQWtDO2tCQUg5QyxTQUFTOzt3R0FpQlIsU0FBUztzQkFEUixTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhTZWxlY3RCb3hDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9zZWxlY3Rib3gvc2VsZWN0Ym94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFZhbGlkYXRpb24gfSBmcm9tICcuLi8uLi8uLi92YWxpZGF0aW9uL3ZhbGlkYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEFYUHJvcGVyeUVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3Byb3BlcnR5LWVkaXRvci5jbGFzcyc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0Ym94LmVkaXRvci5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgQVhTZWxlY3RCb3hQcm9wZXJ0eUVkaXRvckNvbXBvbmVudCBleHRlbmRzIEFYUHJvcGVyeUVkaXRvckNvbXBvbmVudDxhbnk+IHtcbiAgdmFsdWVGaWVsZDogc3RyaW5nID0gJ2lkJztcbiAgdGV4dEZpZWxkOiBzdHJpbmcgPSAndGV4dCc7XG4gIHNlbGVjdGlvbk1vZGU6IHN0cmluZyA9ICdzaW5nbGUnO1xuICBzZWxlY3Rpb25EYXRhTW9kZTogc3RyaW5nID0gJ3ZhbHVlJztcbiAgYWxsb3dTZWFyY2g6IGJvb2xlYW4gPSB0cnVlO1xuICBhbGxvd051bGw6IGJvb2xlYW4gPSB0cnVlO1xuICBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBpdGVtczogYW55ID0gW107XG4gIHJlbW90ZU9wZXJhdGlvbiA9IGZhbHNlO1xuXG4gIHZhbGlkYXRpb246IEFYVmFsaWRhdGlvbjtcblxuICBAVmlld0NoaWxkKEFYU2VsZWN0Qm94Q29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBzZWxlY3RCb3g6IEFYU2VsZWN0Qm94Q29tcG9uZW50O1xuXG4gIHByaXZhdGUgX2ZpbHRlcjogYW55O1xuICBwdWJsaWMgZ2V0IGZpbHRlcigpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXI7XG4gIH1cbiAgcHVibGljIHNldCBmaWx0ZXIodjogYW55KSB7XG4gICAgdGhpcy5fZmlsdGVyID0gdjtcbiAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLmluaXRpYXRlZCkge1xuICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdEJveD8ucmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoY2RyKTtcbiAgfVxuXG4gIGhhbmRsZVZhbHVlQ2hhbmdlKGU6IGFueSkge1xuICAgIHN1cGVyLmhhbmRsZVZhbHVlQ2hhbmdlKGUuc2VsZWN0ZWRWYWx1ZXMpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMucmVnaXN0ZXJGb3JWYWxpZGF0aW9uRm9ybSh0aGlzLnNlbGVjdEJveCk7XG4gICAgdGhpcy5vblJlbmRlckNvbXBsZXRlZC5lbWl0KCk7XG4gIH1cblxuICBwcm92aWRlRGF0YSA9IChlKTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGNvbnN0IGZ1bmMgPSAoKSA9PiB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuaXRlbXMpKSB7XG4gICAgICAgICAgcmVzb2x2ZSh0aGlzLml0ZW1zLnNsaWNlKCkpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLml0ZW1zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgY29uc3QgYSA9IE9iamVjdC5hc3NpZ24oZSwgeyBzZW5kZXI6IHRoaXMgfSk7XG4gICAgICAgICAgcmVzb2x2ZSh0aGlzLml0ZW1zKGEpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKFtdKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGNvbnN0IGludFZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhdGVkKSB7XG4gICAgICAgICAgZnVuYygpO1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50VmFsKTtcbiAgICAgICAgfVxuICAgICAgfSwgNTApO1xuICAgIH0pO1xuICB9O1xufVxuIiwiPGF4LXNlbGVjdC1ib3ggW21vZGVdPVwic2VsZWN0aW9uTW9kZVwiIFt0ZXh0RmllbGRdPVwidGV4dEZpZWxkXCIgW3ZhbHVlRmllbGRdPVwidmFsdWVGaWVsZFwiIFtzZWxlY3RlZFZhbHVlc109XCJ2YWx1ZVwiXG4gICAgW3JlbW90ZU9wZXJhdGlvbl09XCJyZW1vdGVPcGVyYXRpb25cIiBbYWxsb3dTZWFyY2hdPVwiYWxsb3dTZWFyY2hcIiBbYWxsb3dOdWxsXT1cImFsbG93TnVsbFwiIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgKHNlbGVjdGlvbkNoYW5nZWQpPVwiaGFuZGxlVmFsdWVDaGFuZ2UoJGV2ZW50KVwiPlxuICAgIDxheC1kYXRhLXNvdXJjZSBbcHJvdmlkZURhdGFdPVwicHJvdmlkZURhdGFcIj5cbiAgICA8L2F4LWRhdGEtc291cmNlPlxuICAgIDxheC12YWxpZGF0aW9uIFtydWxlc109XCJ2YWxpZGF0aW9uPy5ydWxlc1wiPlxuICAgIDwvYXgtdmFsaWRhdGlvbj5cbjwvYXgtc2VsZWN0LWJveD4iXX0=
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { Directive,
|
1
|
+
import { Directive, ElementRef, HostListener, Input, Renderer2, } from '@angular/core';
|
2
2
|
import * as i0 from "@angular/core";
|
3
3
|
export class AXTooltipDirective {
|
4
4
|
el;
|
@@ -22,6 +22,11 @@ export class AXTooltipDirective {
|
|
22
22
|
this.hide();
|
23
23
|
}
|
24
24
|
}
|
25
|
+
onMouseClick() {
|
26
|
+
if (this.tooltip && this.tooltipTitle) {
|
27
|
+
this.hide();
|
28
|
+
}
|
29
|
+
}
|
25
30
|
show() {
|
26
31
|
this.create();
|
27
32
|
this.setPosition();
|
@@ -57,7 +62,10 @@ export class AXTooltipDirective {
|
|
57
62
|
setPosition() {
|
58
63
|
const hostPos = this.el.nativeElement.getBoundingClientRect();
|
59
64
|
const tooltipPos = this.tooltip.getBoundingClientRect();
|
60
|
-
const scrollPos = window.pageYOffset ||
|
65
|
+
const scrollPos = window.pageYOffset ||
|
66
|
+
document.documentElement.scrollTop ||
|
67
|
+
document.body.scrollTop ||
|
68
|
+
0;
|
61
69
|
let top;
|
62
70
|
let left;
|
63
71
|
if (this.placement === 'top') {
|
@@ -80,12 +88,12 @@ export class AXTooltipDirective {
|
|
80
88
|
this.renderer.setStyle(this.tooltip, 'left', `${left}px`);
|
81
89
|
}
|
82
90
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXTooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
83
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: AXTooltipDirective, selector: "[axTooltip]", inputs: { tooltipTitle: ["tooltip", "tooltipTitle"], placement: "placement", delay: "delay" }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()" } }, ngImport: i0 });
|
91
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: AXTooltipDirective, selector: "[axTooltip]", inputs: { tooltipTitle: ["tooltip", "tooltipTitle"], placement: "placement", delay: "delay" }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "click": "onMouseClick()" } }, ngImport: i0 });
|
84
92
|
}
|
85
93
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXTooltipDirective, decorators: [{
|
86
94
|
type: Directive,
|
87
95
|
args: [{
|
88
|
-
selector: '[axTooltip]'
|
96
|
+
selector: '[axTooltip]',
|
89
97
|
}]
|
90
98
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { tooltipTitle: [{
|
91
99
|
type: Input,
|
@@ -100,5 +108,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
100
108
|
}], onMouseLeave: [{
|
101
109
|
type: HostListener,
|
102
110
|
args: ['mouseleave']
|
111
|
+
}], onMouseClick: [{
|
112
|
+
type: HostListener,
|
113
|
+
args: ['click']
|
103
114
|
}] } });
|
104
|
-
//# sourceMappingURL=data:application/json;base64,
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDOztBQUt2QixNQUFNLE9BQU8sa0JBQWtCO0lBT1Q7SUFBd0I7SUFOMUIsWUFBWSxDQUFTO0lBQzlCLFNBQVMsR0FBVyxLQUFLLENBQUM7SUFDMUIsS0FBSyxHQUFXLEdBQUcsQ0FBQztJQUM3QixPQUFPLENBQWM7SUFDckIsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUVaLFlBQW9CLEVBQWMsRUFBVSxRQUFtQjtRQUEzQyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztJQUFHLENBQUM7SUFFdkMsWUFBWTtRQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3RDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUUyQixZQUFZO1FBQ3RDLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUVzQixZQUFZO1FBQ2pDLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUNELElBQUk7UUFDRixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDZCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEs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QUNULFFBQVEsRUFBRSxhQUFhO2lCQUN4Qjt5SEFFbUIsWUFBWTtzQkFBN0IsS0FBSzt1QkFBQyxTQUFTO2dCQUNQLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQU1zQixZQUFZO3NCQUF2QyxZQUFZO3VCQUFDLFlBQVk7Z0JBTUUsWUFBWTtzQkFBdkMsWUFBWTt1QkFBQyxZQUFZO2dCQU1ILFlBQVk7c0JBQWxDLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgUmVuZGVyZXIyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2F4VG9vbHRpcF0nLFxufSlcbmV4cG9ydCBjbGFzcyBBWFRvb2x0aXBEaXJlY3RpdmUge1xuICBASW5wdXQoJ3Rvb2x0aXAnKSB0b29sdGlwVGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgcGxhY2VtZW50OiBzdHJpbmcgPSAndG9wJztcbiAgQElucHV0KCkgZGVsYXk6IG51bWJlciA9IDUwMDtcbiAgdG9vbHRpcDogSFRNTEVsZW1lbnQ7XG4gIG9mZnNldCA9IDE3O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge31cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJykgb25Nb3VzZUVudGVyKCkge1xuICAgIGlmICghdGhpcy50b29sdGlwICYmIHRoaXMudG9vbHRpcFRpdGxlKSB7XG4gICAgICB0aGlzLnNob3coKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJykgb25Nb3VzZUxlYXZlKCkge1xuICAgIGlmICh0aGlzLnRvb2x0aXAgJiYgdGhpcy50b29sdGlwVGl0bGUpIHtcbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJykgb25Nb3VzZUNsaWNrKCkge1xuICAgIGlmICh0aGlzLnRvb2x0aXAgJiYgdGhpcy50b29sdGlwVGl0bGUpIHtcbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cbiAgfVxuICBzaG93KCkge1xuICAgIHRoaXMuY3JlYXRlKCk7XG4gICAgdGhpcy5zZXRQb3NpdGlvbigpO1xuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy50b29sdGlwLCAnYXgtdG9vbHRpcC1zaG93Jyk7XG4gIH1cblxuICBoaWRlKCkge1xuICAgIGlmICh0aGlzLnRvb2x0aXApIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy50b29sdGlwLCAnYXgtdG9vbHRpcC1zaG93Jyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuYm9keSwgdGhpcy50b29sdGlwKTtcbiAgICAgICAgdGhpcy50b29sdGlwID0gbnVsbDtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZSgpIHtcbiAgICBpZiAodGhpcy50b29sdGlwVGl0bGUpIHtcbiAgICAgIHRoaXMudG9vbHRpcCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuXG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKFxuICAgICAgICB0aGlzLnRvb2x0aXAsXG4gICAgICAgIHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dCh0aGlzLnRvb2x0aXBUaXRsZSkgLy8gdGV4dE5vZGVcbiAgICAgICk7XG5cbiAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuYm9keSwgdGhpcy50b29sdGlwKTtcblxuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnRvb2x0aXAsICdheC10b29sdGlwJyk7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudG9vbHRpcCwgYGF4LXRvb2x0aXAtJHt0aGlzLnBsYWNlbWVudH1gKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMudG9vbHRpcCxcbiAgICAgICAgJy13ZWJraXQtdHJhbnNpdGlvbicsXG4gICAgICAgIGBvcGFjaXR5ICR7dGhpcy5kZWxheX1tc2BcbiAgICAgICk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLnRvb2x0aXAsXG4gICAgICAgICctbW96LXRyYW5zaXRpb24nLFxuICAgICAgICBgb3BhY2l0eSAke3RoaXMuZGVsYXl9bXNgXG4gICAgICApO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy50b29sdGlwLFxuICAgICAgICAnLW8tdHJhbnNpdGlvbicsXG4gICAgICAgIGBvcGFjaXR5ICR7dGhpcy5kZWxheX1tc2BcbiAgICAgICk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLnRvb2x0aXAsXG4gICAgICAgICd0cmFuc2l0aW9uJyxcbiAgICAgICAgYG9wYWNpdHkgJHt0aGlzLmRlbGF5fW1zYFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmhpZGUoKTtcbiAgfVxuXG4gIHNldFBvc2l0aW9uKCkge1xuICAgIGNvbnN0IGhvc3RQb3MgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgdG9vbHRpcFBvcyA9IHRoaXMudG9vbHRpcC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBzY3JvbGxQb3MgPVxuICAgICAgd2luZG93LnBhZ2VZT2Zmc2V0IHx8XG4gICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIHx8XG4gICAgICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCB8fFxuICAgICAgMDtcblxuICAgIGxldCB0b3A7XG4gICAgbGV0IGxlZnQ7XG5cbiAgICBpZiAodGhpcy5wbGFjZW1lbnQgPT09ICd0b3AnKSB7XG4gICAgICB0b3AgPSBob3N0UG9zLnRvcCAtIHRvb2x0aXBQb3MuaGVpZ2h0IC0gdGhpcy5vZmZzZXQ7XG4gICAgICBsZWZ0ID0gaG9zdFBvcy5sZWZ0ICsgKGhvc3RQb3Mud2lkdGggLSB0b29sdGlwUG9zLndpZHRoKSAvIDI7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGxhY2VtZW50ID09PSAnYm90dG9tJykge1xuICAgICAgdG9wID0gaG9zdFBvcy5ib3R0b20gKyB0aGlzLm9mZnNldDtcbiAgICAgIGxlZnQgPSBob3N0UG9zLmxlZnQgKyAoaG9zdFBvcy53aWR0aCAtIHRvb2x0aXBQb3Mud2lkdGgpIC8gMjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wbGFjZW1lbnQgPT09ICdsZWZ0Jykge1xuICAgICAgdG9wID0gaG9zdFBvcy50b3AgKyAoaG9zdFBvcy5oZWlnaHQgLSB0b29sdGlwUG9zLmhlaWdodCkgLyAyO1xuICAgICAgbGVmdCA9IGhvc3RQb3MubGVmdCAtIHRvb2x0aXBQb3Mud2lkdGggLSB0aGlzLm9mZnNldDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wbGFjZW1lbnQgPT09ICdyaWdodCcpIHtcbiAgICAgIHRvcCA9IGhvc3RQb3MudG9wICsgKGhvc3RQb3MuaGVpZ2h0IC0gdG9vbHRpcFBvcy5oZWlnaHQpIC8gMjtcbiAgICAgIGxlZnQgPSBob3N0UG9zLnJpZ2h0ICsgdGhpcy5vZmZzZXQ7XG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXAsICd0b3AnLCBgJHt0b3AgKyBzY3JvbGxQb3N9cHhgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcCwgJ2xlZnQnLCBgJHtsZWZ0fXB4YCk7XG4gIH1cbn1cbiJdfQ==
|