@wavemaker/app-ng-runtime 11.5.3-next.26259 → 11.5.3-next.51003
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.
- app-ng-runtime/components/base/bundles/index.umd.js +10 -39
- app-ng-runtime/components/base/esm2020/pipes/custom-pipes.mjs +11 -24
- app-ng-runtime/components/base/fesm2015/index.mjs +10 -39
- app-ng-runtime/components/base/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/components/base/fesm2020/index.mjs +10 -39
- app-ng-runtime/components/base/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/components/base/pipes/custom-pipes.d.ts +2 -5
- app-ng-runtime/components/chart/bundles/index.umd.js +34 -46
- app-ng-runtime/components/chart/esm2020/chart.component.mjs +5 -5
- app-ng-runtime/components/chart/esm2020/chart.utils.mjs +13 -45
- app-ng-runtime/components/chart/fesm2015/index.mjs +16 -48
- app-ng-runtime/components/chart/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/components/chart/fesm2020/index.mjs +16 -48
- app-ng-runtime/components/chart/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/components/containers/wizard/bundles/index.umd.js +3 -14
- app-ng-runtime/components/containers/wizard/esm2020/wizard.component.mjs +4 -13
- app-ng-runtime/components/containers/wizard/esm2020/wizard.props.mjs +1 -2
- app-ng-runtime/components/containers/wizard/fesm2015/index.mjs +3 -14
- app-ng-runtime/components/containers/wizard/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/components/containers/wizard/fesm2020/index.mjs +3 -13
- app-ng-runtime/components/containers/wizard/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/components/containers/wizard/wizard.component.d.ts +0 -2
- app-ng-runtime/components/input/default/bundles/index.umd.js +162 -176
- app-ng-runtime/components/input/default/esm2020/number/number.component.mjs +6 -7
- app-ng-runtime/components/input/default/esm2020/number/number.props.mjs +2 -4
- app-ng-runtime/components/input/default/esm2020/text/calendar/input-calendar.component.mjs +6 -7
- app-ng-runtime/components/input/default/esm2020/text/calendar/input-calendar.props.mjs +2 -4
- app-ng-runtime/components/input/default/esm2020/text/color/input-color.component.mjs +6 -7
- app-ng-runtime/components/input/default/esm2020/text/color/input-color.props.mjs +2 -4
- app-ng-runtime/components/input/default/esm2020/text/email/input-email.component.mjs +6 -7
- app-ng-runtime/components/input/default/esm2020/text/email/input-email.props.mjs +2 -4
- app-ng-runtime/components/input/default/esm2020/text/number/input-number.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2020/text/number/input-number.props.mjs +2 -4
- app-ng-runtime/components/input/default/esm2020/text/text/input-text.component.mjs +7 -8
- app-ng-runtime/components/input/default/esm2020/text/text/input-text.props.mjs +2 -4
- app-ng-runtime/components/input/default/esm2020/textarea/textarea.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2020/textarea/textarea.props.mjs +1 -3
- app-ng-runtime/components/input/default/fesm2015/index.mjs +43 -57
- app-ng-runtime/components/input/default/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/fesm2020/index.mjs +43 -57
- app-ng-runtime/components/input/default/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/number/number.component.d.ts +0 -2
- app-ng-runtime/components/input/default/text/calendar/input-calendar.component.d.ts +0 -2
- app-ng-runtime/components/input/default/text/color/input-color.component.d.ts +0 -2
- app-ng-runtime/components/input/default/text/email/input-email.component.d.ts +0 -2
- app-ng-runtime/components/input/default/text/number/input-number.component.d.ts +0 -2
- app-ng-runtime/components/input/default/text/text/input-text.component.d.ts +0 -2
- app-ng-runtime/components/input/default/textarea/textarea.component.d.ts +0 -2
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/runtime/base/bundles/index.umd.js +1 -26
- app-ng-runtime/runtime/base/components/base-page.component.d.ts +0 -1
- app-ng-runtime/runtime/base/esm2020/components/base-page.component.mjs +1 -26
- app-ng-runtime/runtime/base/esm2020/services/pipe-provider.service.mjs +2 -2
- app-ng-runtime/runtime/base/fesm2015/index.mjs +1 -26
- app-ng-runtime/runtime/base/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/runtime/base/fesm2020/index.mjs +1 -26
- app-ng-runtime/runtime/base/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/scripts/@wavemaker.com/nvd3/build/nv.d3.min.js +13 -0
- app-ng-runtime/scripts/d3/d3.min.js +5 -2
- app-ng-runtime/components/base/esm2020/pipes/wm-pipe.mjs +0 -17
- app-ng-runtime/components/base/pipes/wm-pipe.d.ts +0 -9
- app-ng-runtime/scripts/@wavemaker/nvd3/build/nv.d3.min.js +0 -1
|
@@ -2389,23 +2389,6 @@
|
|
|
2389
2389
|
}] });
|
|
2390
2390
|
})();
|
|
2391
2391
|
|
|
2392
|
-
class WmPipe {
|
|
2393
|
-
constructor(pipeName, customPipeManager) {
|
|
2394
|
-
this.pipeName = pipeName;
|
|
2395
|
-
this.customPipeManager = customPipeManager;
|
|
2396
|
-
this.pipeRef = this.customPipeManager ? this.customPipeManager.getCustomPipe(pipeName) : null;
|
|
2397
|
-
this.isCustomPipe = this.pipeRef && _.isFunction(this.pipeRef.formatter);
|
|
2398
|
-
}
|
|
2399
|
-
customFormatter(data, args) {
|
|
2400
|
-
try {
|
|
2401
|
-
return this.pipeRef.formatter(...args);
|
|
2402
|
-
}
|
|
2403
|
-
catch (error) {
|
|
2404
|
-
return data;
|
|
2405
|
-
}
|
|
2406
|
-
}
|
|
2407
|
-
}
|
|
2408
|
-
|
|
2409
2392
|
const getEpochValue = data => {
|
|
2410
2393
|
let epoch;
|
|
2411
2394
|
// For data in form of string number ('123'), convert to number (123). And don't parse date objects.
|
|
@@ -2436,33 +2419,23 @@
|
|
|
2436
2419
|
}]
|
|
2437
2420
|
}], function () { return [{ type: i1$1__namespace.DecimalPipe }]; }, null);
|
|
2438
2421
|
})();
|
|
2439
|
-
class ToDatePipe
|
|
2440
|
-
// This method calls the custom formatter fn after applying the exisitng date pattern
|
|
2441
|
-
returnFn(data, args) {
|
|
2442
|
-
if (this.isCustomPipe) {
|
|
2443
|
-
if (args) {
|
|
2444
|
-
args[0] = data;
|
|
2445
|
-
}
|
|
2446
|
-
return this.customFormatter(data, args);
|
|
2447
|
-
}
|
|
2448
|
-
return data;
|
|
2449
|
-
}
|
|
2422
|
+
class ToDatePipe {
|
|
2450
2423
|
transform(data, format, timezone, compInstance) {
|
|
2451
2424
|
let timestamp;
|
|
2452
2425
|
// 'null' is to be treated as a special case, If user wants to enter null value, empty string will be passed to the backend
|
|
2453
2426
|
if (data === 'null' || data === '') {
|
|
2454
|
-
return
|
|
2427
|
+
return '';
|
|
2455
2428
|
}
|
|
2456
2429
|
if (!i1.isDefined(data)) {
|
|
2457
|
-
return
|
|
2430
|
+
return '';
|
|
2458
2431
|
}
|
|
2459
2432
|
timestamp = getEpochValue(data);
|
|
2460
2433
|
if (timestamp) {
|
|
2461
2434
|
if (format === 'timestamp') {
|
|
2462
|
-
return
|
|
2435
|
+
return timestamp;
|
|
2463
2436
|
}
|
|
2464
2437
|
if (format === 'UTC') {
|
|
2465
|
-
return
|
|
2438
|
+
return new Date(timestamp).toISOString();
|
|
2466
2439
|
}
|
|
2467
2440
|
let formattedVal;
|
|
2468
2441
|
const timeZone = this.i18nService ? this.i18nService.getTimezone(compInstance) : timezone;
|
|
@@ -2472,18 +2445,16 @@
|
|
|
2472
2445
|
else {
|
|
2473
2446
|
formattedVal = this.datePipe.transform(timestamp, format);
|
|
2474
2447
|
}
|
|
2475
|
-
return
|
|
2448
|
+
return formattedVal;
|
|
2476
2449
|
}
|
|
2477
|
-
return
|
|
2450
|
+
return '';
|
|
2478
2451
|
}
|
|
2479
|
-
constructor(datePipe, i18nService
|
|
2480
|
-
super('toDate', customPipeManager);
|
|
2452
|
+
constructor(datePipe, i18nService) {
|
|
2481
2453
|
this.datePipe = datePipe;
|
|
2482
2454
|
this.i18nService = i18nService;
|
|
2483
|
-
this.customPipeManager = customPipeManager;
|
|
2484
2455
|
}
|
|
2485
2456
|
}
|
|
2486
|
-
ToDatePipe.ɵfac = function ToDatePipe_Factory(t) { return new (t || ToDatePipe)(i0__namespace.ɵɵdirectiveInject(i1$1__namespace.DatePipe, 16), i0__namespace.ɵɵdirectiveInject(i1__namespace.AbstractI18nService, 16)
|
|
2457
|
+
ToDatePipe.ɵfac = function ToDatePipe_Factory(t) { return new (t || ToDatePipe)(i0__namespace.ɵɵdirectiveInject(i1$1__namespace.DatePipe, 16), i0__namespace.ɵɵdirectiveInject(i1__namespace.AbstractI18nService, 16)); };
|
|
2487
2458
|
ToDatePipe.ɵpipe = /*@__PURE__*/ i0__namespace.ɵɵdefinePipe({ name: "toDate", type: ToDatePipe, pure: true });
|
|
2488
2459
|
(function () {
|
|
2489
2460
|
(typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(ToDatePipe, [{
|
|
@@ -2491,7 +2462,7 @@
|
|
|
2491
2462
|
args: [{
|
|
2492
2463
|
name: 'toDate'
|
|
2493
2464
|
}]
|
|
2494
|
-
}], function () { return [{ type: i1$1__namespace.DatePipe }, { type: i1__namespace.AbstractI18nService }
|
|
2465
|
+
}], function () { return [{ type: i1$1__namespace.DatePipe }, { type: i1__namespace.AbstractI18nService }]; }, null);
|
|
2495
2466
|
})();
|
|
2496
2467
|
class ToNumberPipe {
|
|
2497
2468
|
transform(data, fracSize) {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Inject, Pipe } from '@angular/core';
|
|
2
2
|
import { DatePipe, DecimalPipe } from '@angular/common';
|
|
3
3
|
import { CURRENCY_INFO, isDefined, CustomPipeManager, AbstractI18nService, hasOffsetStr } from '@wm/core';
|
|
4
|
-
import { WmPipe } from "./wm-pipe";
|
|
5
4
|
import * as i0 from "@angular/core";
|
|
6
5
|
import * as i1 from "@angular/common";
|
|
7
6
|
import * as i2 from "@wm/core";
|
|
@@ -33,33 +32,23 @@ TrailingZeroDecimalPipe.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "traili
|
|
|
33
32
|
name: 'trailingZeroDecimalPipe'
|
|
34
33
|
}]
|
|
35
34
|
}], function () { return [{ type: i1.DecimalPipe }]; }, null); })();
|
|
36
|
-
export class ToDatePipe
|
|
37
|
-
// This method calls the custom formatter fn after applying the exisitng date pattern
|
|
38
|
-
returnFn(data, args) {
|
|
39
|
-
if (this.isCustomPipe) {
|
|
40
|
-
if (args) {
|
|
41
|
-
args[0] = data;
|
|
42
|
-
}
|
|
43
|
-
return this.customFormatter(data, args);
|
|
44
|
-
}
|
|
45
|
-
return data;
|
|
46
|
-
}
|
|
35
|
+
export class ToDatePipe {
|
|
47
36
|
transform(data, format, timezone, compInstance) {
|
|
48
37
|
let timestamp;
|
|
49
38
|
// 'null' is to be treated as a special case, If user wants to enter null value, empty string will be passed to the backend
|
|
50
39
|
if (data === 'null' || data === '') {
|
|
51
|
-
return
|
|
40
|
+
return '';
|
|
52
41
|
}
|
|
53
42
|
if (!isDefined(data)) {
|
|
54
|
-
return
|
|
43
|
+
return '';
|
|
55
44
|
}
|
|
56
45
|
timestamp = getEpochValue(data);
|
|
57
46
|
if (timestamp) {
|
|
58
47
|
if (format === 'timestamp') {
|
|
59
|
-
return
|
|
48
|
+
return timestamp;
|
|
60
49
|
}
|
|
61
50
|
if (format === 'UTC') {
|
|
62
|
-
return
|
|
51
|
+
return new Date(timestamp).toISOString();
|
|
63
52
|
}
|
|
64
53
|
let formattedVal;
|
|
65
54
|
const timeZone = this.i18nService ? this.i18nService.getTimezone(compInstance) : timezone;
|
|
@@ -69,25 +58,23 @@ export class ToDatePipe extends WmPipe {
|
|
|
69
58
|
else {
|
|
70
59
|
formattedVal = this.datePipe.transform(timestamp, format);
|
|
71
60
|
}
|
|
72
|
-
return
|
|
61
|
+
return formattedVal;
|
|
73
62
|
}
|
|
74
|
-
return
|
|
63
|
+
return '';
|
|
75
64
|
}
|
|
76
|
-
constructor(datePipe, i18nService
|
|
77
|
-
super('toDate', customPipeManager);
|
|
65
|
+
constructor(datePipe, i18nService) {
|
|
78
66
|
this.datePipe = datePipe;
|
|
79
67
|
this.i18nService = i18nService;
|
|
80
|
-
this.customPipeManager = customPipeManager;
|
|
81
68
|
}
|
|
82
69
|
}
|
|
83
|
-
ToDatePipe.ɵfac = function ToDatePipe_Factory(t) { return new (t || ToDatePipe)(i0.ɵɵdirectiveInject(i1.DatePipe, 16), i0.ɵɵdirectiveInject(i2.AbstractI18nService, 16)
|
|
70
|
+
ToDatePipe.ɵfac = function ToDatePipe_Factory(t) { return new (t || ToDatePipe)(i0.ɵɵdirectiveInject(i1.DatePipe, 16), i0.ɵɵdirectiveInject(i2.AbstractI18nService, 16)); };
|
|
84
71
|
ToDatePipe.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "toDate", type: ToDatePipe, pure: true });
|
|
85
72
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ToDatePipe, [{
|
|
86
73
|
type: Pipe,
|
|
87
74
|
args: [{
|
|
88
75
|
name: 'toDate'
|
|
89
76
|
}]
|
|
90
|
-
}], function () { return [{ type: i1.DatePipe }, { type: i2.AbstractI18nService }
|
|
77
|
+
}], function () { return [{ type: i1.DatePipe }, { type: i2.AbstractI18nService }]; }, null); })();
|
|
91
78
|
export class ToNumberPipe {
|
|
92
79
|
transform(data, fracSize) {
|
|
93
80
|
if (fracSize && !String(fracSize).match(/^(\d+)?\.((\d+)(-(\d+))?)?$/)) {
|
|
@@ -436,4 +423,4 @@ FileExtensionFromMimePipe.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "file
|
|
|
436
423
|
name: 'fileExtensionFromMime'
|
|
437
424
|
}]
|
|
438
425
|
}], null, null); })();
|
|
439
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXBpcGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9iYXNlL3NyYy9waXBlcy9jdXN0b20tcGlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQU8saUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7QUFJbkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEVBQUU7SUFDekIsSUFBSSxLQUFLLENBQUM7SUFDVixvR0FBb0c7SUFDcEcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDakMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDN0I7SUFDRCx3RkFBd0Y7SUFDeEYsS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxZQUFZLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0YsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBS0YsTUFBTSxPQUFPLHVCQUF1QjtJQUNoQyxTQUFTLENBQUMsS0FBVSxFQUFFLGNBQXNCLEVBQUUsWUFBb0IsRUFBRSxZQUFpQixFQUFFLFlBQXFCLEVBQUUsWUFBb0IsRUFBRSxxQkFBK0IsRUFB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TUFBTTtZQUNsQixZQUFZLEVBQUUsTUFBTTtZQUNwQix1QkFBdUIsRUFBRSxNQUFNO1lBQy9CLFdBQVcsRUFBRSxNQUFNO1lBQ25CLFlBQVksRUFBRSxPQUFPO1lBQ3JCLFlBQVksRUFBRSxPQUFPO1lBQ3JCLFlBQVksRUFBRSxPQUFPO1lBQ3JCLFdBQVcsRUFBRSxPQUFPO1lBQ3BCLFlBQVksRUFBRSxRQUFRO1lBQ3RCLHVCQUF1QixFQUFFLFFBQVE7WUFDakMsMEJBQTBCLEVBQUUsTUFBTTtZQUNsQyxtRUFBbUUsRUFBRSxPQUFPO1lBQzVFLGlCQUFpQixFQUFFLE1BQU07WUFDekIsaUNBQWlDLEVBQUUsTUFBTTtZQUN6QyxpQkFBaUIsRUFBRSxNQUFNO1lBQ3pCLFlBQVksRUFBRSxNQUFNO1lBQ3BCLFlBQVksRUFBRSxNQUFNO1lBQ3BCLGFBQWEsRUFBRSxNQUFNO1lBQ3JCLGFBQWEsRUFBRSxNQUFNO1lBQ3JCLDZCQUE2QixFQUFFLEtBQUs7U0FDdkMsQ0FBQztRQUVGLE9BQU8sV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7O2tHQTFFUSx5QkFBeUI7dUdBQXpCLHlCQUF5Qjt1RkFBekIseUJBQXlCO2NBSHJDLElBQUk7ZUFBQztnQkFDRixJQUFJLEVBQUUsdUJBQXVCO2FBQ2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRlUGlwZSwgRGVjaW1hbFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ1VSUkVOQ1lfSU5GTywgaXNEZWZpbmVkLCBBcHAsIEN1c3RvbVBpcGVNYW5hZ2VyLCBBYnN0cmFjdEkxOG5TZXJ2aWNlLCBoYXNPZmZzZXRTdHIgfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBXbVBpcGUgfSBmcm9tIFwiLi93bS1waXBlXCI7XG5cbmRlY2xhcmUgY29uc3QgbW9tZW50LCBfLCAkO1xuXG5jb25zdCBnZXRFcG9jaFZhbHVlID0gZGF0YSA9PiB7XG4gICAgbGV0IGVwb2NoO1xuICAgIC8vIEZvciBkYXRhIGluIGZvcm0gb2Ygc3RyaW5nIG51bWJlciAoJzEyMycpLCBjb252ZXJ0IHRvIG51bWJlciAoMTIzKS4gQW5kIGRvbid0IHBhcnNlIGRhdGUgb2JqZWN0cy5cbiAgICBpZiAoIV8uaXNEYXRlKGRhdGEpICYmICFpc05hTihkYXRhKSkge1xuICAgICAgICBkYXRhID0gcGFyc2VJbnQoZGF0YSwgMTApO1xuICAgIH1cbiAgICAvLyBnZXQgdGhlIHRpbWVzdGFtcCB2YWx1ZS4gSWYgZGF0YSBpcyB0aW1lIHN0cmluZywgYXBwZW5kIGRhdGUgc3RyaW5nIHRvIHRoZSB0aW1lIHZhbHVlXG4gICAgZXBvY2ggPSBtb21lbnQoZGF0YSkudmFsdWVPZigpIHx8IG1vbWVudChuZXcgRGF0ZSgpLnRvRGF0ZVN0cmluZygpICsgJyAnICsgZGF0YSkudmFsdWVPZigpO1xuICAgIHJldHVybiBlcG9jaDtcbn07XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAndHJhaWxpbmdaZXJvRGVjaW1hbFBpcGUnXG59KVxuZXhwb3J0IGNsYXNzIFRyYWlsaW5nWmVyb0RlY2ltYWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIHNlbGVjdGVkTG9jYWxlOiBzdHJpbmcsIG51bWJlcmZpbHRlcjogc3RyaW5nLCBsb2NhbGVmaWx0ZXI6IGFueSwgdHJhaWxpbmd6ZXJvOiBib29sZWFuLCBkZWNpbWFsVmFsdWU6IHN0cmluZywgc2tpcFRyYWlsaW5nWmVyb0NoZWNrPzogYm9vbGVhbiwgZm9ybWF0dGVkTG9jYWxlPyk6IGFueSB7XG4gICAgICAgIG51bWJlcmZpbHRlciA9IHRyYWlsaW5nemVybyAmJiAhc2tpcFRyYWlsaW5nWmVyb0NoZWNrID8gYDEuJHtkZWNpbWFsVmFsdWUubGVuZ3RofS0xNmA6IG51bWJlcmZpbHRlcjtcbiAgICAgICAgY29uc3QgbG9jYWxlID0gZm9ybWF0dGVkTG9jYWxlID8gZm9ybWF0dGVkTG9jYWxlWydudW1iZXInXSA6IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKHZhbHVlLCBudW1iZXJmaWx0ZXIsIGxvY2FsZWZpbHRlciB8fCBsb2NhbGUgfHwgc2VsZWN0ZWRMb2NhbGUpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlKSB7IH1cblxufVxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ3RvRGF0ZSdcbn0pXG5leHBvcnQgY2xhc3MgVG9EYXRlUGlwZSBleHRlbmRzIFdtUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIC8vIFRoaXMgbWV0aG9kIGNhbGxzIHRoZSBjdXN0b20gZm9ybWF0dGVyIGZuIGFmdGVyIGFwcGx5aW5nIHRoZSBleGlzaXRuZyBkYXRlIHBhdHRlcm5cbiAgICByZXR1cm5GbihkYXRhLCBhcmdzKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQ3VzdG9tUGlwZSkge1xuICAgICAgICAgICAgaWYgKGFyZ3MpIHtcbiAgICAgICAgICAgICAgICBhcmdzWzBdID0gZGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmN1c3RvbUZvcm1hdHRlcihkYXRhLCBhcmdzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgdHJhbnNmb3JtKGRhdGE6IGFueSwgZm9ybWF0OiBhbnksIHRpbWV6b25lPywgY29tcEluc3RhbmNlPykge1xuICAgICAgICBsZXQgdGltZXN0YW1wO1xuICAgICAgICAvLyAnbnVsbCcgaXMgdG8gYmUgdHJlYXRlZCBhcyBhIHNwZWNpYWwgY2FzZSwgSWYgdXNlciB3YW50cyB0byBlbnRlciBudWxsIHZhbHVlLCBlbXB0eSBzdHJpbmcgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGJhY2tlbmRcbiAgICAgICAgaWYgKGRhdGEgPT09ICdudWxsJyB8fCBkYXRhID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuRm4oJycsIGFyZ3VtZW50cyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0RlZmluZWQoZGF0YSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVybkZuKCcnLGFyZ3VtZW50cyk7XG4gICAgICAgIH1cbiAgICAgICAgdGltZXN0YW1wID0gZ2V0RXBvY2hWYWx1ZShkYXRhKTtcbiAgICAgICAgaWYgKHRpbWVzdGFtcCkge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ3RpbWVzdGFtcCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5Gbih0aW1lc3RhbXAsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnVVRDJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVybkZuKG5ldyBEYXRlKHRpbWVzdGFtcCkudG9JU09TdHJpbmcoKSwgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBmb3JtYXR0ZWRWYWw7XG4gICAgICAgICAgICBjb25zdCB0aW1lWm9uZSA9IHRoaXMuaTE4blNlcnZpY2UgPyB0aGlzLmkxOG5TZXJ2aWNlLmdldFRpbWV6b25lKGNvbXBJbnN0YW5jZSkgOiB0aW1lem9uZTtcbiAgICAgICAgICAgIGlmICh0aW1lWm9uZSAmJiAoZGF0YSA9PT0gdGltZXN0YW1wIHx8IGhhc09mZnNldFN0cihkYXRhKSkpIHtcbiAgICAgICAgICAgICAgICBmb3JtYXR0ZWRWYWwgPSBtb21lbnQodGltZXN0YW1wKS50eih0aW1lWm9uZSkuZm9ybWF0KGZvcm1hdC5yZXBsYWNlQWxsKCd5JywgJ1knKS5yZXBsYWNlQWxsKCdkJywgJ0QnKS5yZXBsYWNlKCdhJywgJ0EnKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZvcm1hdHRlZFZhbCA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRpbWVzdGFtcCwgZm9ybWF0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVybkZuKGZvcm1hdHRlZFZhbCwgYXJndW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5GbignJywgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSwgcHJpdmF0ZSBpMThuU2VydmljZTogQWJzdHJhY3RJMThuU2VydmljZSwgcHJvdGVjdGVkIGN1c3RvbVBpcGVNYW5hZ2VyOiBDdXN0b21QaXBlTWFuYWdlcikge1xuICAgICAgICBzdXBlcigndG9EYXRlJywgY3VzdG9tUGlwZU1hbmFnZXIpO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIG5hbWU6ICd0b051bWJlcidcbn0pXG5leHBvcnQgY2xhc3MgVG9OdW1iZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKGRhdGEsIGZyYWNTaXplKSB7XG4gICAgICAgIGlmIChmcmFjU2l6ZSAmJiAhU3RyaW5nKGZyYWNTaXplKS5tYXRjaCgvXihcXGQrKT9cXC4oKFxcZCspKC0oXFxkKykpPyk/JC8pKSB7XG4gICAgICAgICAgICBmcmFjU2l6ZSA9ICcxLicgKyBmcmFjU2l6ZSArICctJyArIGZyYWNTaXplO1xuICAgICAgICB9XG4gICAgICAgIGlmICghXy5pc05hTigrZGF0YSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGxvY2FsZSA9IHRoaXMuaTE4blNlcnZpY2UgJiYgdGhpcy5pMThuU2VydmljZS5nZXR3aWRnZXRMb2NhbGUoKSA/IHRoaXMuaTE4blNlcnZpY2UuZ2V0d2lkZ2V0TG9jYWxlKCkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRMb2NhbGUgPSBsb2NhbGUgPyBsb2NhbGVbJ251bWJlciddIDogbnVsbDtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybShkYXRhLCBmcmFjU2l6ZSwgZm9ybWF0dGVkTG9jYWxlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRlY2ltYWxQaXBlOiBEZWNpbWFsUGlwZSwgIEBJbmplY3QoQWJzdHJhY3RJMThuU2VydmljZSkgcHJpdmF0ZSBpMThuU2VydmljZTogQWJzdHJhY3RJMThuU2VydmljZSkge1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIG5hbWU6ICd0b0N1cnJlbmN5J1xufSlcbmV4cG9ydCBjbGFzcyBUb0N1cnJlbmN5UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShkYXRhLCBjdXJyZW5jeVN5bWJvbCwgZnJhY1NpemUpIHtcbiAgICAgICAgY29uc3QgX2N1cnJlbmN5U3ltYm9sID0gKENVUlJFTkNZX0lORk9bY3VycmVuY3lTeW1ib2xdIHx8IHt9KS5zeW1ib2wgfHwgY3VycmVuY3lTeW1ib2wgfHwgJyc7XG4gICAgICAgIGxldCBfdmFsID0gbmV3IFRvTnVtYmVyUGlwZSh0aGlzLmRlY2ltYWxQaXBlLCB0aGlzLmkxOG5TZXJ2aWNlKS50cmFuc2Zvcm0oZGF0YSwgZnJhY1NpemUpO1xuICAgICAgICBjb25zdCBpc05lZ2F0aXZlTnVtYmVyID0gXy5zdGFydHNXaXRoKF92YWwsICctJyk7XG4gICAgICAgIGlmIChpc05lZ2F0aXZlTnVtYmVyKSB7XG4gICAgICAgICAgICBfdmFsID0gX3ZhbC5yZXBsYWNlKCctJywnJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF92YWwgPyBpc05lZ2F0aXZlTnVtYmVyID8gJy0nKyBfY3VycmVuY3lTeW1ib2wgK192YWwgOl9jdXJyZW5jeVN5bWJvbCArIF92YWwgOiAnJztcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRlY2ltYWxQaXBlOiBEZWNpbWFsUGlwZSwgQEluamVjdChBYnN0cmFjdEkxOG5TZXJ2aWNlKSBwcml2YXRlIGkxOG5TZXJ2aWNlOiBBYnN0cmFjdEkxOG5TZXJ2aWNlKSB7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ3ByZWZpeCdcbn0pXG5leHBvcnQgY2xhc3MgUHJlZml4UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShkYXRhLCBwYWRkaW5nKSB7XG4gICAgICAgIHJldHVybiAoXy5pc1VuZGVmaW5lZChkYXRhKSB8fCBkYXRhID09PSBudWxsIHx8IGRhdGEgPT09ICcnKSA/IGRhdGEgOiAoKHBhZGRpbmcgfHwgJycpICsgZGF0YSk7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ3N1ZmZpeCdcbn0pXG5leHBvcnQgY2xhc3MgU3VmZml4UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShkYXRhLCBwYWRkaW5nKSB7XG4gICAgICAgIHJldHVybiAoXy5pc1VuZGVmaW5lZChkYXRhKSB8fCBkYXRhID09PSBudWxsIHx8IGRhdGEgPT09ICcnKSA/IGRhdGEgOiAoZGF0YSArIChwYWRkaW5nIHx8ICcnKSk7XG4gICAgfVxufVxuXG5cbi8qKlxuICogQ3VzdG9tIHBpcGU6IEl0IGlzIHdvcmsgYXMgaW50ZXJjZXB0b3IgYmV0d2VlbiB0aGUgdXNlciBjdXN0b20gcGlwZSBmdW5jdGlvbiBhbmQgYW5ndWxhciBwaXBlXG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAnY3VzdG9tJ1xufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjdXN0bWVVc2VyUGlwZTogQ3VzdG9tUGlwZU1hbmFnZXIpIHtcblxuICAgIH1cbiAgICB0cmFuc2Zvcm0oZGF0YSwgcGlwZW5hbWUpIHtcbiAgICAgICBsZXQgYXJndW1lbnRBcnIgPSBbXTtcbiAgICAgICBmb3IobGV0IGkgPTIgOyBpPGFyZ3VtZW50cy5sZW5ndGg7IGkrKyApe1xuICAgICAgICBhcmd1bWVudEFyci5wdXNoKGFyZ3VtZW50c1tpXSk7XG4gICAgICAgfVxuXG4gICAgICAgIGxldCBwaXBlUmVmID0gdGhpcy5jdXN0bWVVc2VyUGlwZS5nZXRDdXN0b21QaXBlKHBpcGVuYW1lKTtcbiAgICAgICAgaWYoIXBpcGVSZWYgfHwgIV8uaXNGdW5jdGlvbihwaXBlUmVmLmZvcm1hdHRlcikpe1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdmb3JtYXR0ZXIgaXMgbm90IGRlZmluZWQsIHBsZWFzZSBjaGVjayB0aGUgY3VzdG9tIHBpcGVzIGRvY3VtZW50YXRpb24nKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5e1xuICAgICAgICAgICAgcmV0dXJuIHBpcGVSZWYuZm9ybWF0dGVyKGRhdGEsIC4uLmFyZ3VtZW50QXJyKTtcbiAgICAgICAgfSBjYXRjaChlcnJvcil7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdQaXBlIG5hbWU6ICcrcGlwZW5hbWUsIGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICAgfVxuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIG5hbWU6ICd0aW1lRnJvbU5vdydcbn0pXG5leHBvcnQgY2xhc3MgVGltZUZyb21Ob3dQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKGRhdGEpIHtcbiAgICAgICAgbGV0IHRpbWVzdGFtcDtcbiAgICAgICAgaWYgKCFpc0RlZmluZWQoZGF0YSkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgdGltZXN0YW1wID0gZ2V0RXBvY2hWYWx1ZShkYXRhKTtcbiAgICAgICAgcmV0dXJuIHRpbWVzdGFtcCA/IG1vbWVudCh0aW1lc3RhbXApLmZyb21Ob3coKSA6IHVuZGVmaW5lZDtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnbnVtYmVyVG9TdHJpbmcnXG59KVxuZXhwb3J0IGNsYXNzIE51bWJlclRvU3RyaW5nUGlwZSBleHRlbmRzIFRvTnVtYmVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0geyB9XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnc3RyaW5nVG9OdW1iZXInXG59KVxuZXhwb3J0IGNsYXNzIFN0cmluZ1RvTnVtYmVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShkYXRhKSB7XG4gICAgICAgIHJldHVybiBOdW1iZXIoZGF0YSkgfHwgdW5kZWZpbmVkO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIG5hbWU6ICdmaWx0ZXInXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oZGF0YTogYW55W10sIGZpZWxkOiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgb2JqZWN0IGlzIHBhc3NlZCBhcyBmaXJzdCBwYXJhbXRlclxuICAgICAgICBpZiAoXy5pc09iamVjdChmaWVsZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBfLmZpbHRlcihkYXRhLCBmaWVsZCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYga2V5IHZhbHVlIHBhaXIgaXMgcHJvdmlkZWRcbiAgICAgICAgcmV0dXJuIF8uZmlsdGVyKGRhdGEsIGl0ZW0gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIF8uaW5jbHVkZXMoaXRlbVtmaWVsZF0sIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2ZpbGVzaXplJ1xufSlcbmV4cG9ydCBjbGFzcyBGaWxlU2l6ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oYnl0ZXM6IG51bWJlciwgcHJlY2lzaW9uOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgdW5pdHMgPSBbXG4gICAgICAgICAgICAnYnl0ZXMnLFxuICAgICAgICAgICAgJ0tCJyxcbiAgICAgICAgICAgICdNQicsXG4gICAgICAgICAgICAnR0InLFxuICAgICAgICAgICAgJ1RCJyxcbiAgICAgICAgICAgICdQQidcbiAgICAgICAgXTtcblxuICAgICAgICAvKlRvZG9bc2h1YmhhbV1cbiAgICAgICAgaWYgKGlzTmFOKHBhcnNlRmxvYXQoYnl0ZXMpKSB8fCAhaXNGaW5pdGUoYnl0ZXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNNb2JpbGUoKSA/ICcnIDogJz8nO1xuICAgICAgICB9Ki9cbiAgICAgICAgbGV0IHVuaXQgPSAwO1xuICAgICAgICB3aGlsZSAoYnl0ZXMgPj0gMTAyNCkge1xuICAgICAgICAgICAgYnl0ZXMgLz0gMTAyNDtcbiAgICAgICAgICAgIHVuaXQrKztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYnl0ZXMudG9GaXhlZCgrcHJlY2lzaW9uKSArICcgJyArIHVuaXRzW3VuaXRdO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIG5hbWU6ICdmaWxlSWNvbkNsYXNzJ1xufSlcbmV4cG9ydCBjbGFzcyBGaWxlSWNvbkNsYXNzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShmaWxlRXh0ZW5zaW9uOiBhbnkpIHtcbiAgICAgICAgY29uc3QgZmlsZUNsYXNzTWFwcGluZyA9IHtcbiAgICAgICAgICAgICd6aXAnICAgICAgIDogICAnZmEtZmlsZS16aXAtbycsXG4gICAgICAgICAgICAncGRmJyAgICAgICA6ICAgJ2ZhLWZpbGUtcGRmLW8nLFxuICAgICAgICAgICAgJ3JhcicgICAgICAgOiAgICdmYS1maWxlLWFyY2hpdmUtbycsXG4gICAgICAgICAgICAndHh0JyAgICAgICA6ICAgJ2ZhLWZpbGUtdGV4dC1vJyxcbiAgICAgICAgICAgICdwcHQnICAgICAgIDogICAnZmEtZmlsZS1wb3dlcnBvaW50LW8nLFxuICAgICAgICAgICAgJ3BvdCcgICAgICAgOiAgICdmYS1maWxlLXBvd2VycG9pbnQtbycsXG4gICAgICAgICAgICAncHBzJyAgICAgICA6ICAgJ2ZhLWZpbGUtcG93ZXJwb2ludC1vJyxcbiAgICAgICAgICAgICdwcHR4JyAgICAgIDogICAnZmEtZmlsZS1wb3dlcnBvaW50LW8nLFxuICAgICAgICAgICAgJ3BvdHgnICAgICAgOiAgICdmYS1maWxlLXBvd2VycG9pbnQtbycsXG4gICAgICAgICAgICAncHBzeCcgICAgICA6ICAgJ2ZhLWZpbGUtcG93ZXJwb2ludC1vJyxcbiAgICAgICAgICAgICdtcGcnICAgICAgIDogICAnZmEtZmlsZS1tb3ZpZS1vJyxcbiAgICAgICAgICAgICdtcDQnICAgICAgIDogICAnZmEtZmlsZS1tb3ZpZS1vJyxcbiAgICAgICAgICAgICdtb3YnICAgICAgIDogICAnZmEtZmlsZS1tb3ZpZS1vJyxcbiAgICAgICAgICAgICdhdmknICAgICAgIDogICAnZmEtZmlsZS1tb3ZpZS1vJyxcbiAgICAgICAgICAgICdtcDMnICAgICAgIDogICAnZmEtZmlsZS1hdWRpby1vJyxcbiAgICAgICAgICAgICdkb2N4JyAgICAgIDogICAnZmEtZmlsZS13b3JkLW8nLFxuICAgICAgICAgICAgJ2pzJyAgICAgICAgOiAgICdmYS1maWxlLWNvZGUtbycsXG4gICAgICAgICAgICAnbWQnICAgICAgICA6ICAgJ2ZhLWZpbGUtY29kZS1vJyxcbiAgICAgICAgICAgICdodG1sJyAgICAgIDogICAnZmEtZmlsZS1jb2RlLW8nLFxuICAgICAgICAgICAgJ2NzcycgICAgICAgOiAgICdmYS1maWxlLWNvZGUtbycsXG4gICAgICAgICAgICAneGxzeCcgICAgICA6ICAgJ2ZhLWZpbGUtZXhjZWwtbycsXG4gICAgICAgICAgICAncG5nJyAgICAgICA6ICAgJ2ZhLWZpbGUtaW1hZ2UtbycsXG4gICAgICAgICAgICAnanBnJyAgICAgICA6ICAgJ2ZhLWZpbGUtaW1hZ2UtbycsXG4gICAgICAgICAgICAnanBlZycgICAgICA6ICAgJ2ZhLWZpbGUtaW1hZ2UtbycsXG4gICAgICAgICAgICAnZmlsZScgICAgICA6ICAgJ2ZhLWZpbGUtbycsXG4gICAgICAgICAgICAnZGVmYXVsdCcgICA6ICAgJ2ZhLWZpbGUtbydcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gJ2ZhICcgKyAoZmlsZUNsYXNzTWFwcGluZ1tmaWxlRXh0ZW5zaW9uXSB8fCAnZmEtZmlsZS1vJyk7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ3N0YXRlQ2xhc3MnXG59KVxuZXhwb3J0IGNsYXNzIFN0YXRlQ2xhc3NQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKHN0YXRlKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlQ2xhc3NNYXAgPSB7XG4gICAgICAgICAgICAnc3VjY2VzcycgICA6ICd3aSB3aS1kb25lIHRleHQtc3VjY2VzcycsXG4gICAgICAgICAgICAnZXJyb3InICAgICA6ICd3aSB3aS1lcnJvciB0ZXh0LWRhbmdlcidcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHN0YXRlQ2xhc3NNYXBbc3RhdGUudG9Mb3dlckNhc2UoKV07XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2ZpbGVFeHRlbnNpb25Gcm9tTWltZSdcbn0pXG5leHBvcnQgY2xhc3MgRmlsZUV4dGVuc2lvbkZyb21NaW1lUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShtaW1lVHlwZTogYW55KSB7XG4gICAgICAgIGNvbnN0IHR5cGVNYXBwaW5nID0ge1xuICAgICAgICAgICAgJ2F1ZGlvL2FhYyc6ICcuYWFjJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWFiaXdvcmQnOiAnLmFidycsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLmFuZHJvaWQucGFja2FnZS1hcmNoaXZlJzogJy5hcGsnLFxuICAgICAgICAgICAgJ3ZpZGVvL3gtbXN2aWRlbyc6ICcuYXZpJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQuYW1hem9uLmVib29rJzogJy5hencnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc6ICcuYmluJyxcbiAgICAgICAgICAgICdpbWFnZS9ibXAnOiAnLmJtcCcsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24veC1iemlwJzogJy5ieicsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24veC1iemlwMic6ICcuYnoyJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWNzaCc6ICcuY3NoJyxcbiAgICAgICAgICAgICd0ZXh0L2Nzcyc6ICcuY3NzJyxcbiAgICAgICAgICAgICd0ZXh0L2Nzdic6ICcuY3N2JyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9tc3dvcmQnOiAnLmRvYycsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnOiAnLmRvY3gnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1mb250b2JqZWN0JzogJy5lb3QnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2VwdWIremlwJzogJy5lcHViJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9lY21hc2NyaXB0JzogJy5lcycsXG4gICAgICAgICAgICAnaW1hZ2UvZ2lmJzogJy5naWYnLFxuICAgICAgICAgICAgJ3RleHQvaHRtbCc6ICcuaHRtbCcsXG4gICAgICAgICAgICAnaW1hZ2UveC1pY29uJzogJy5pY28nLFxuICAgICAgICAgICAgJ3RleHQvY2FsZW5kYXInOiAnLmljcycsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vamF2YS1hcmNoaXZlJzogJy5qYXInLFxuICAgICAgICAgICAgJ2ltYWdlL2pwZWcnOiBbJy5qcGVnJywgJy5qcGcnXSxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qYXZhc2NyaXB0JzogJy5qcycsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbic6ICcuanNvbicsXG4gICAgICAgICAgICAnYXVkaW8vbWlkaSc6ICcubWlkJyxcbiAgICAgICAgICAgICdhdWRpby94LW1pZGknOiAnLm1pZGknLFxuICAgICAgICAgICAgJ3ZpZGVvL21wZWcnOiAnLm1wZWcnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5hcHBsZS5pbnN0YWxsZXIreG1sJzogJ21wa2cnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uJzogJy5vZHAnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3ByZWFkc2hlZXQnOiAnLm9kcycsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0JzogJy5vZHQnLFxuICAgICAgICAgICAgJ2F1ZGlvL29nZyc6ICcub2dhJyxcbiAgICAgICAgICAgICd2aWRlby9vZ2cnOiAnLm9ndicsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vb2dnJzogJy5vZ3gnLFxuICAgICAgICAgICAgJ2ZvbnQvb3RmJzogJy5vdGYnLFxuICAgICAgICAgICAgJ2ltYWdlL3BuZyc6ICcucG5nJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9wZGYnOiAnLnBkZicsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQnOiAnLnBwdCcsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvbic6ICcucHB0eCcsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24veC1yYXItY29tcHJlc3NlZCc6ICcucmFyJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9ydGYnOiAnLnJ0ZicsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24veC1zaCc6ICcuc2gnLFxuICAgICAgICAgICAgJ2ltYWdlL3N2Zyt4bWwnOiAnLnN2ZycsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2gnOiAnLnN3ZicsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24veC10YXInOiAnLnRhcicsXG4gICAgICAgICAgICAnaW1hZ2UvdGlmZic6ICcudGlmZicsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdHlwZXNjcmlwdCc6ICcudHMnLFxuICAgICAgICAgICAgJ2ZvbnQvdHRmJzogJy50dGYnLFxuICAgICAgICAgICAgJ3RleHQvcGxhaW4nOiAnLnR4dCcsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLnZpc2lvJzogJy52c2QnLFxuICAgICAgICAgICAgJ2F1ZGlvL3dhdic6ICcud2F2JyxcbiAgICAgICAgICAgICdhdWRpby93ZWJtJzogJy53ZWJhJyxcbiAgICAgICAgICAgICd2aWRlby93ZWJtJzogJy53ZWJtJyxcbiAgICAgICAgICAgICdpbWFnZS93ZWJwJzogJy53ZWJwJyxcbiAgICAgICAgICAgICdmb250L3dvZmYnOiAnLndvZmYnLFxuICAgICAgICAgICAgJ2ZvbnQvd29mZjInOiAnLndvZmYyJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94aHRtbCt4bWwnOiAnLnhodG1sJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnOiAnLnhscycsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnOiAnLnhsc3gnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3htbCc6ICcueG1sJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQubW96aWxsYS54dWwreG1sJzogJy54dWwnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ppcCc6ICcuemlwJyxcbiAgICAgICAgICAgICd2aWRlby8zZ3BwJzogJy4zZ3AnLFxuICAgICAgICAgICAgJ2F1ZGlvLzNncHAnOiAnLjNncCcsXG4gICAgICAgICAgICAndmlkZW8vM2dwcDInOiAnLjNnMicsXG4gICAgICAgICAgICAnYXVkaW8vM2dwcDInOiAnLjNnMicsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24veC03ei1jb21wcmVzc2VkJzogJy43eidcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdHlwZU1hcHBpbmdbbWltZVR5cGVdO1xuICAgIH1cbn1cblxuXG4iXX0=
|
|
426
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXBpcGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9iYXNlL3NyYy9waXBlcy9jdXN0b20tcGlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQU8saUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDOzs7O0FBSy9HLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxFQUFFO0lBQ3pCLElBQUksS0FBSyxDQUFDO0lBQ1Ysb0dBQW9HO0lBQ3BHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2pDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0tBQzdCO0lBQ0Qsd0ZBQXdGO0lBQ3hGLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsWUFBWSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNGLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUtGLE1BQU0sT0FBTyx1QkFBdUI7SUFDaEMsU0FBUyxDQUFDLEtBQVUsRUFBRSxjQUFzQixFQUFFLFlBQW9CLEVBQUUsWUFBaUIsRUFBRSxZQUFxQixFQUFFLFlBQW9CLEVBQUUscUJBQStCLEVBQUUsZUFBZ0I7UUFDakwsWUFBWSxHQUFHLFlBQVksSUFBSSxDQUFDLHFC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WyJpbXBvcnQgeyBJbmplY3QsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGVQaXBlLCBEZWNpbWFsUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDVVJSRU5DWV9JTkZPLCBpc0RlZmluZWQsIEFwcCwgQ3VzdG9tUGlwZU1hbmFnZXIsIEFic3RyYWN0STE4blNlcnZpY2UsIGhhc09mZnNldFN0ciB9IGZyb20gJ0B3bS9jb3JlJztcblxuXG5kZWNsYXJlIGNvbnN0IG1vbWVudCwgXywgJDtcblxuY29uc3QgZ2V0RXBvY2hWYWx1ZSA9IGRhdGEgPT4ge1xuICAgIGxldCBlcG9jaDtcbiAgICAvLyBGb3IgZGF0YSBpbiBmb3JtIG9mIHN0cmluZyBudW1iZXIgKCcxMjMnKSwgY29udmVydCB0byBudW1iZXIgKDEyMykuIEFuZCBkb24ndCBwYXJzZSBkYXRlIG9iamVjdHMuXG4gICAgaWYgKCFfLmlzRGF0ZShkYXRhKSAmJiAhaXNOYU4oZGF0YSkpIHtcbiAgICAgICAgZGF0YSA9IHBhcnNlSW50KGRhdGEsIDEwKTtcbiAgICB9XG4gICAgLy8gZ2V0IHRoZSB0aW1lc3RhbXAgdmFsdWUuIElmIGRhdGEgaXMgdGltZSBzdHJpbmcsIGFwcGVuZCBkYXRlIHN0cmluZyB0byB0aGUgdGltZSB2YWx1ZVxuICAgIGVwb2NoID0gbW9tZW50KGRhdGEpLnZhbHVlT2YoKSB8fCBtb21lbnQobmV3IERhdGUoKS50b0RhdGVTdHJpbmcoKSArICcgJyArIGRhdGEpLnZhbHVlT2YoKTtcbiAgICByZXR1cm4gZXBvY2g7XG59O1xuXG5AUGlwZSh7XG4gICAgbmFtZTogJ3RyYWlsaW5nWmVyb0RlY2ltYWxQaXBlJ1xufSlcbmV4cG9ydCBjbGFzcyBUcmFpbGluZ1plcm9EZWNpbWFsUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBzZWxlY3RlZExvY2FsZTogc3RyaW5nLCBudW1iZXJmaWx0ZXI6IHN0cmluZywgbG9jYWxlZmlsdGVyOiBhbnksIHRyYWlsaW5nemVybzogYm9vbGVhbiwgZGVjaW1hbFZhbHVlOiBzdHJpbmcsIHNraXBUcmFpbGluZ1plcm9DaGVjaz86IGJvb2xlYW4sIGZvcm1hdHRlZExvY2FsZT8pOiBhbnkge1xuICAgICAgICBudW1iZXJmaWx0ZXIgPSB0cmFpbGluZ3plcm8gJiYgIXNraXBUcmFpbGluZ1plcm9DaGVjayA/IGAxLiR7ZGVjaW1hbFZhbHVlLmxlbmd0aH0tMTZgOiBudW1iZXJmaWx0ZXI7XG4gICAgICAgIGNvbnN0IGxvY2FsZSA9IGZvcm1hdHRlZExvY2FsZSA/IGZvcm1hdHRlZExvY2FsZVsnbnVtYmVyJ10gOiB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgbnVtYmVyZmlsdGVyLCBsb2NhbGVmaWx0ZXIgfHwgbG9jYWxlIHx8IHNlbGVjdGVkTG9jYWxlKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRlY2ltYWxQaXBlOiBEZWNpbWFsUGlwZSkgeyB9XG5cbn1cblxuQFBpcGUoe1xuICAgIG5hbWU6ICd0b0RhdGUnXG59KVxuZXhwb3J0IGNsYXNzIFRvRGF0ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oZGF0YTogYW55LCBmb3JtYXQ6IGFueSwgdGltZXpvbmU/LCBjb21wSW5zdGFuY2U/KSB7XG4gICAgICAgIGxldCB0aW1lc3RhbXA7XG4gICAgICAgIC8vICdudWxsJyBpcyB0byBiZSB0cmVhdGVkIGFzIGEgc3BlY2lhbCBjYXNlLCBJZiB1c2VyIHdhbnRzIHRvIGVudGVyIG51bGwgdmFsdWUsIGVtcHR5IHN0cmluZyB3aWxsIGJlIHBhc3NlZCB0byB0aGUgYmFja2VuZFxuICAgICAgICBpZiAoZGF0YSA9PT0gJ251bGwnIHx8IGRhdGEgPT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0RlZmluZWQoZGF0YSkpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgICB0aW1lc3RhbXAgPSBnZXRFcG9jaFZhbHVlKGRhdGEpO1xuICAgICAgICBpZiAodGltZXN0YW1wKSB7XG4gICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAndGltZXN0YW1wJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aW1lc3RhbXA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnVVRDJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSh0aW1lc3RhbXApLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgZm9ybWF0dGVkVmFsO1xuICAgICAgICAgICAgY29uc3QgdGltZVpvbmUgPSB0aGlzLmkxOG5TZXJ2aWNlID8gdGhpcy5pMThuU2VydmljZS5nZXRUaW1lem9uZShjb21wSW5zdGFuY2UpIDogdGltZXpvbmU7XG4gICAgICAgICAgICBpZiAodGltZVpvbmUgJiYgKGRhdGEgPT09IHRpbWVzdGFtcCB8fCBoYXNPZmZzZXRTdHIoZGF0YSkpKSB7XG4gICAgICAgICAgICAgICAgZm9ybWF0dGVkVmFsID0gbW9tZW50KHRpbWVzdGFtcCkudHoodGltZVpvbmUpLmZvcm1hdChmb3JtYXQucmVwbGFjZUFsbCgneScsICdZJykucmVwbGFjZUFsbCgnZCcsICdEJykucmVwbGFjZSgnYScsICdBJykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3JtYXR0ZWRWYWwgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aW1lc3RhbXAsIGZvcm1hdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkVmFsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSwgcHJpdmF0ZSBpMThuU2VydmljZTogQWJzdHJhY3RJMThuU2VydmljZSApIHsgfVxufVxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ3RvTnVtYmVyJ1xufSlcbmV4cG9ydCBjbGFzcyBUb051bWJlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oZGF0YSwgZnJhY1NpemUpIHtcbiAgICAgICAgaWYgKGZyYWNTaXplICYmICFTdHJpbmcoZnJhY1NpemUpLm1hdGNoKC9eKFxcZCspP1xcLigoXFxkKykoLShcXGQrKSk/KT8kLykpIHtcbiAgICAgICAgICAgIGZyYWNTaXplID0gJzEuJyArIGZyYWNTaXplICsgJy0nICsgZnJhY1NpemU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFfLmlzTmFOKCtkYXRhKSkge1xuICAgICAgICAgICAgY29uc3QgbG9jYWxlID0gdGhpcy5pMThuU2VydmljZSAmJiB0aGlzLmkxOG5TZXJ2aWNlLmdldHdpZGdldExvY2FsZSgpID8gdGhpcy5pMThuU2VydmljZS5nZXR3aWRnZXRMb2NhbGUoKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZExvY2FsZSA9IGxvY2FsZSA/IGxvY2FsZVsnbnVtYmVyJ10gOiBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKGRhdGEsIGZyYWNTaXplLCBmb3JtYXR0ZWRMb2NhbGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlLCAgQEluamVjdChBYnN0cmFjdEkxOG5TZXJ2aWNlKSBwcml2YXRlIGkxOG5TZXJ2aWNlOiBBYnN0cmFjdEkxOG5TZXJ2aWNlKSB7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ3RvQ3VycmVuY3knXG59KVxuZXhwb3J0IGNsYXNzIFRvQ3VycmVuY3lQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKGRhdGEsIGN1cnJlbmN5U3ltYm9sLCBmcmFjU2l6ZSkge1xuICAgICAgICBjb25zdCBfY3VycmVuY3lTeW1ib2wgPSAoQ1VSUkVOQ1lfSU5GT1tjdXJyZW5jeVN5bWJvbF0gfHwge30pLnN5bWJvbCB8fCBjdXJyZW5jeVN5bWJvbCB8fCAnJztcbiAgICAgICAgbGV0IF92YWwgPSBuZXcgVG9OdW1iZXJQaXBlKHRoaXMuZGVjaW1hbFBpcGUsIHRoaXMuaTE4blNlcnZpY2UpLnRyYW5zZm9ybShkYXRhLCBmcmFjU2l6ZSk7XG4gICAgICAgIGNvbnN0IGlzTmVnYXRpdmVOdW1iZXIgPSBfLnN0YXJ0c1dpdGgoX3ZhbCwgJy0nKTtcbiAgICAgICAgaWYgKGlzTmVnYXRpdmVOdW1iZXIpIHtcbiAgICAgICAgICAgIF92YWwgPSBfdmFsLnJlcGxhY2UoJy0nLCcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gX3ZhbCA/IGlzTmVnYXRpdmVOdW1iZXIgPyAnLScrIF9jdXJyZW5jeVN5bWJvbCArX3ZhbCA6X2N1cnJlbmN5U3ltYm9sICsgX3ZhbCA6ICcnO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlLCBASW5qZWN0KEFic3RyYWN0STE4blNlcnZpY2UpIHByaXZhdGUgaTE4blNlcnZpY2U6IEFic3RyYWN0STE4blNlcnZpY2UpIHtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAncHJlZml4J1xufSlcbmV4cG9ydCBjbGFzcyBQcmVmaXhQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKGRhdGEsIHBhZGRpbmcpIHtcbiAgICAgICAgcmV0dXJuIChfLmlzVW5kZWZpbmVkKGRhdGEpIHx8IGRhdGEgPT09IG51bGwgfHwgZGF0YSA9PT0gJycpID8gZGF0YSA6ICgocGFkZGluZyB8fCAnJykgKyBkYXRhKTtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnc3VmZml4J1xufSlcbmV4cG9ydCBjbGFzcyBTdWZmaXhQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKGRhdGEsIHBhZGRpbmcpIHtcbiAgICAgICAgcmV0dXJuIChfLmlzVW5kZWZpbmVkKGRhdGEpIHx8IGRhdGEgPT09IG51bGwgfHwgZGF0YSA9PT0gJycpID8gZGF0YSA6IChkYXRhICsgKHBhZGRpbmcgfHwgJycpKTtcbiAgICB9XG59XG5cblxuLyoqXG4gKiBDdXN0b20gcGlwZTogSXQgaXMgd29yayBhcyBpbnRlcmNlcHRvciBiZXR3ZWVuIHRoZSB1c2VyIGN1c3RvbSBwaXBlIGZ1bmN0aW9uIGFuZCBhbmd1bGFyIHBpcGVcbiAqL1xuQFBpcGUoe1xuICAgIG5hbWU6ICdjdXN0b20nXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGN1c3RtZVVzZXJQaXBlOiBDdXN0b21QaXBlTWFuYWdlcikge1xuXG4gICAgfVxuICAgIHRyYW5zZm9ybShkYXRhLCBwaXBlbmFtZSkge1xuICAgICAgIGxldCBhcmd1bWVudEFyciA9IFtdO1xuICAgICAgIGZvcihsZXQgaSA9MiA7IGk8YXJndW1lbnRzLmxlbmd0aDsgaSsrICl7XG4gICAgICAgIGFyZ3VtZW50QXJyLnB1c2goYXJndW1lbnRzW2ldKTtcbiAgICAgICB9XG5cbiAgICAgICAgbGV0IHBpcGVSZWYgPSB0aGlzLmN1c3RtZVVzZXJQaXBlLmdldEN1c3RvbVBpcGUocGlwZW5hbWUpO1xuICAgICAgICBpZighcGlwZVJlZiB8fCAhXy5pc0Z1bmN0aW9uKHBpcGVSZWYuZm9ybWF0dGVyKSl7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ2Zvcm1hdHRlciBpcyBub3QgZGVmaW5lZCwgcGxlYXNlIGNoZWNrIHRoZSBjdXN0b20gcGlwZXMgZG9jdW1lbnRhdGlvbicpO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICB0cnl7XG4gICAgICAgICAgICByZXR1cm4gcGlwZVJlZi5mb3JtYXR0ZXIoZGF0YSwgLi4uYXJndW1lbnRBcnIpO1xuICAgICAgICB9IGNhdGNoKGVycm9yKXtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1BpcGUgbmFtZTogJytwaXBlbmFtZSwgZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgICB9XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ3RpbWVGcm9tTm93J1xufSlcbmV4cG9ydCBjbGFzcyBUaW1lRnJvbU5vd1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oZGF0YSkge1xuICAgICAgICBsZXQgdGltZXN0YW1wO1xuICAgICAgICBpZiAoIWlzRGVmaW5lZChkYXRhKSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB0aW1lc3RhbXAgPSBnZXRFcG9jaFZhbHVlKGRhdGEpO1xuICAgICAgICByZXR1cm4gdGltZXN0YW1wID8gbW9tZW50KHRpbWVzdGFtcCkuZnJvbU5vdygpIDogdW5kZWZpbmVkO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIG5hbWU6ICdudW1iZXJUb1N0cmluZydcbn0pXG5leHBvcnQgY2xhc3MgTnVtYmVyVG9TdHJpbmdQaXBlIGV4dGVuZHMgVG9OdW1iZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7IH1cblxuQFBpcGUoe1xuICAgIG5hbWU6ICdzdHJpbmdUb051bWJlcidcbn0pXG5leHBvcnQgY2xhc3MgU3RyaW5nVG9OdW1iZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcihkYXRhKSB8fCB1bmRlZmluZWQ7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2ZpbHRlcidcbn0pXG5leHBvcnQgY2xhc3MgRmlsdGVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShkYXRhOiBhbnlbXSwgZmllbGQ6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiBvYmplY3QgaXMgcGFzc2VkIGFzIGZpcnN0IHBhcmFtdGVyXG4gICAgICAgIGlmIChfLmlzT2JqZWN0KGZpZWxkKSkge1xuICAgICAgICAgICAgcmV0dXJuIF8uZmlsdGVyKGRhdGEsIGZpZWxkKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiBrZXkgdmFsdWUgcGFpciBpcyBwcm92aWRlZFxuICAgICAgICByZXR1cm4gXy5maWx0ZXIoZGF0YSwgaXRlbSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gXy5pbmNsdWRlcyhpdGVtW2ZpZWxkXSwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnZmlsZXNpemUnXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVTaXplUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShieXRlczogbnVtYmVyLCBwcmVjaXNpb246IG51bWJlcikge1xuICAgICAgICBjb25zdCB1bml0cyA9IFtcbiAgICAgICAgICAgICdieXRlcycsXG4gICAgICAgICAgICAnS0InLFxuICAgICAgICAgICAgJ01CJyxcbiAgICAgICAgICAgICdHQicsXG4gICAgICAgICAgICAnVEInLFxuICAgICAgICAgICAgJ1BCJ1xuICAgICAgICBdO1xuXG4gICAgICAgIC8qVG9kb1tzaHViaGFtXVxuICAgICAgICBpZiAoaXNOYU4ocGFyc2VGbG9hdChieXRlcykpIHx8ICFpc0Zpbml0ZShieXRlcykpIHtcbiAgICAgICAgICAgIHJldHVybiBpc01vYmlsZSgpID8gJycgOiAnPyc7XG4gICAgICAgIH0qL1xuICAgICAgICBsZXQgdW5pdCA9IDA7XG4gICAgICAgIHdoaWxlIChieXRlcyA+PSAxMDI0KSB7XG4gICAgICAgICAgICBieXRlcyAvPSAxMDI0O1xuICAgICAgICAgICAgdW5pdCsrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBieXRlcy50b0ZpeGVkKCtwcmVjaXNpb24pICsgJyAnICsgdW5pdHNbdW5pdF07XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2ZpbGVJY29uQ2xhc3MnXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVJY29uQ2xhc3NQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKGZpbGVFeHRlbnNpb246IGFueSkge1xuICAgICAgICBjb25zdCBmaWxlQ2xhc3NNYXBwaW5nID0ge1xuICAgICAgICAgICAgJ3ppcCcgICAgICAgOiAgICdmYS1maWxlLXppcC1vJyxcbiAgICAgICAgICAgICdwZGYnICAgICAgIDogICAnZmEtZmlsZS1wZGYtbycsXG4gICAgICAgICAgICAncmFyJyAgICAgICA6ICAgJ2ZhLWZpbGUtYXJjaGl2ZS1vJyxcbiAgICAgICAgICAgICd0eHQnICAgICAgIDogICAnZmEtZmlsZS10ZXh0LW8nLFxuICAgICAgICAgICAgJ3BwdCcgICAgICAgOiAgICdmYS1maWxlLXBvd2VycG9pbnQtbycsXG4gICAgICAgICAgICAncG90JyAgICAgICA6ICAgJ2ZhLWZpbGUtcG93ZXJwb2ludC1vJyxcbiAgICAgICAgICAgICdwcHMnICAgICAgIDogICAnZmEtZmlsZS1wb3dlcnBvaW50LW8nLFxuICAgICAgICAgICAgJ3BwdHgnICAgICAgOiAgICdmYS1maWxlLXBvd2VycG9pbnQtbycsXG4gICAgICAgICAgICAncG90eCcgICAgICA6ICAgJ2ZhLWZpbGUtcG93ZXJwb2ludC1vJyxcbiAgICAgICAgICAgICdwcHN4JyAgICAgIDogICAnZmEtZmlsZS1wb3dlcnBvaW50LW8nLFxuICAgICAgICAgICAgJ21wZycgICAgICAgOiAgICdmYS1maWxlLW1vdmllLW8nLFxuICAgICAgICAgICAgJ21wNCcgICAgICAgOiAgICdmYS1maWxlLW1vdmllLW8nLFxuICAgICAgICAgICAgJ21vdicgICAgICAgOiAgICdmYS1maWxlLW1vdmllLW8nLFxuICAgICAgICAgICAgJ2F2aScgICAgICAgOiAgICdmYS1maWxlLW1vdmllLW8nLFxuICAgICAgICAgICAgJ21wMycgICAgICAgOiAgICdmYS1maWxlLWF1ZGlvLW8nLFxuICAgICAgICAgICAgJ2RvY3gnICAgICAgOiAgICdmYS1maWxlLXdvcmQtbycsXG4gICAgICAgICAgICAnanMnICAgICAgICA6ICAgJ2ZhLWZpbGUtY29kZS1vJyxcbiAgICAgICAgICAgICdtZCcgICAgICAgIDogICAnZmEtZmlsZS1jb2RlLW8nLFxuICAgICAgICAgICAgJ2h0bWwnICAgICAgOiAgICdmYS1maWxlLWNvZGUtbycsXG4gICAgICAgICAgICAnY3NzJyAgICAgICA6ICAgJ2ZhLWZpbGUtY29kZS1vJyxcbiAgICAgICAgICAgICd4bHN4JyAgICAgIDogICAnZmEtZmlsZS1leGNlbC1vJyxcbiAgICAgICAgICAgICdwbmcnICAgICAgIDogICAnZmEtZmlsZS1pbWFnZS1vJyxcbiAgICAgICAgICAgICdqcGcnICAgICAgIDogICAnZmEtZmlsZS1pbWFnZS1vJyxcbiAgICAgICAgICAgICdqcGVnJyAgICAgIDogICAnZmEtZmlsZS1pbWFnZS1vJyxcbiAgICAgICAgICAgICdmaWxlJyAgICAgIDogICAnZmEtZmlsZS1vJyxcbiAgICAgICAgICAgICdkZWZhdWx0JyAgIDogICAnZmEtZmlsZS1vJ1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiAnZmEgJyArIChmaWxlQ2xhc3NNYXBwaW5nW2ZpbGVFeHRlbnNpb25dIHx8ICdmYS1maWxlLW8nKTtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnc3RhdGVDbGFzcydcbn0pXG5leHBvcnQgY2xhc3MgU3RhdGVDbGFzc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oc3RhdGUpIHtcbiAgICAgICAgY29uc3Qgc3RhdGVDbGFzc01hcCA9IHtcbiAgICAgICAgICAgICdzdWNjZXNzJyAgIDogJ3dpIHdpLWRvbmUgdGV4dC1zdWNjZXNzJyxcbiAgICAgICAgICAgICdlcnJvcicgICAgIDogJ3dpIHdpLWVycm9yIHRleHQtZGFuZ2VyJ1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gc3RhdGVDbGFzc01hcFtzdGF0ZS50b0xvd2VyQ2FzZSgpXTtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnZmlsZUV4dGVuc2lvbkZyb21NaW1lJ1xufSlcbmV4cG9ydCBjbGFzcyBGaWxlRXh0ZW5zaW9uRnJvbU1pbWVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKG1pbWVUeXBlOiBhbnkpIHtcbiAgICAgICAgY29uc3QgdHlwZU1hcHBpbmcgPSB7XG4gICAgICAgICAgICAnYXVkaW8vYWFjJzogJy5hYWMnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtYWJpd29yZCc6ICcuYWJ3JyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQuYW5kcm9pZC5wYWNrYWdlLWFyY2hpdmUnOiAnLmFwaycsXG4gICAgICAgICAgICAndmlkZW8veC1tc3ZpZGVvJzogJy5hdmknLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5hbWF6b24uZWJvb2snOiAnLmF6dycsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJzogJy5iaW4nLFxuICAgICAgICAgICAgJ2ltYWdlL2JtcCc6ICcuYm1wJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWJ6aXAnOiAnLmJ6JyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWJ6aXAyJzogJy5iejInLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtY3NoJzogJy5jc2gnLFxuICAgICAgICAgICAgJ3RleHQvY3NzJzogJy5jc3MnLFxuICAgICAgICAgICAgJ3RleHQvY3N2JzogJy5jc3YnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL21zd29yZCc6ICcuZG9jJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCc6ICcuZG9jeCcsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3QnOiAnLmVvdCcsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vZXB1Yit6aXAnOiAnLmVwdWInLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2VjbWFzY3JpcHQnOiAnLmVzJyxcbiAgICAgICAgICAgICdpbWFnZS9naWYnOiAnLmdpZicsXG4gICAgICAgICAgICAndGV4dC9odG1sJzogJy5odG1sJyxcbiAgICAgICAgICAgICdpbWFnZS94LWljb24nOiAnLmljbycsXG4gICAgICAgICAgICAndGV4dC9jYWxlbmRhcic6ICcuaWNzJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qYXZhLWFyY2hpdmUnOiAnLmphcicsXG4gICAgICAgICAgICAnaW1hZ2UvanBlZyc6IFsnLmpwZWcnLCAnLmpwZyddLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2phdmFzY3JpcHQnOiAnLmpzJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJzogJy5qc29uJyxcbiAgICAgICAgICAgICdhdWRpby9taWRpJzogJy5taWQnLFxuICAgICAgICAgICAgJ2F1ZGlvL3gtbWlkaSc6ICcubWlkaScsXG4gICAgICAgICAgICAndmlkZW8vbXBlZyc6ICcubXBlZycsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLmFwcGxlLmluc3RhbGxlcit4bWwnOiAnbXBrZycsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5wcmVzZW50YXRpb24nOiAnLm9kcCcsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldCc6ICcub2RzJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQnOiAnLm9kdCcsXG4gICAgICAgICAgICAnYXVkaW8vb2dnJzogJy5vZ2EnLFxuICAgICAgICAgICAgJ3ZpZGVvL29nZyc6ICcub2d2JyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9vZ2cnOiAnLm9neCcsXG4gICAgICAgICAgICAnZm9udC9vdGYnOiAnLm90ZicsXG4gICAgICAgICAgICAnaW1hZ2UvcG5nJzogJy5wbmcnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3BkZic6ICcucGRmJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCc6ICcucHB0JyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uJzogJy5wcHR4JyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LXJhci1jb21wcmVzc2VkJzogJy5yYXInLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3J0Zic6ICcucnRmJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LXNoJzogJy5zaCcsXG4gICAgICAgICAgICAnaW1hZ2Uvc3ZnK3htbCc6ICcuc3ZnJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCc6ICcuc3dmJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LXRhcic6ICcudGFyJyxcbiAgICAgICAgICAgICdpbWFnZS90aWZmJzogJy50aWZmJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi90eXBlc2NyaXB0JzogJy50cycsXG4gICAgICAgICAgICAnZm9udC90dGYnOiAnLnR0ZicsXG4gICAgICAgICAgICAndGV4dC9wbGFpbic6ICcudHh0JyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQudmlzaW8nOiAnLnZzZCcsXG4gICAgICAgICAgICAnYXVkaW8vd2F2JzogJy53YXYnLFxuICAgICAgICAgICAgJ2F1ZGlvL3dlYm0nOiAnLndlYmEnLFxuICAgICAgICAgICAgJ3ZpZGVvL3dlYm0nOiAnLndlYm0nLFxuICAgICAgICAgICAgJ2ltYWdlL3dlYnAnOiAnLndlYnAnLFxuICAgICAgICAgICAgJ2ZvbnQvd29mZic6ICcud29mZicsXG4gICAgICAgICAgICAnZm9udC93b2ZmMic6ICcud29mZjInLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3hodG1sK3htbCc6ICcueGh0bWwnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCc6ICcueGxzJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCc6ICcueGxzeCcsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24veG1sJzogJy54bWwnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5tb3ppbGxhLnh1bCt4bWwnOiAnLnh1bCcsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vemlwJzogJy56aXAnLFxuICAgICAgICAgICAgJ3ZpZGVvLzNncHAnOiAnLjNncCcsXG4gICAgICAgICAgICAnYXVkaW8vM2dwcCc6ICcuM2dwJyxcbiAgICAgICAgICAgICd2aWRlby8zZ3BwMic6ICcuM2cyJyxcbiAgICAgICAgICAgICdhdWRpby8zZ3BwMic6ICcuM2cyJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LTd6LWNvbXByZXNzZWQnOiAnLjd6J1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0eXBlTWFwcGluZ1ttaW1lVHlwZV07XG4gICAgfVxufVxuXG5cbiJdfQ==
|
|
@@ -2383,23 +2383,6 @@ TextContentDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: TextCo
|
|
|
2383
2383
|
}] });
|
|
2384
2384
|
})();
|
|
2385
2385
|
|
|
2386
|
-
class WmPipe {
|
|
2387
|
-
constructor(pipeName, customPipeManager) {
|
|
2388
|
-
this.pipeName = pipeName;
|
|
2389
|
-
this.customPipeManager = customPipeManager;
|
|
2390
|
-
this.pipeRef = this.customPipeManager ? this.customPipeManager.getCustomPipe(pipeName) : null;
|
|
2391
|
-
this.isCustomPipe = this.pipeRef && _.isFunction(this.pipeRef.formatter);
|
|
2392
|
-
}
|
|
2393
|
-
customFormatter(data, args) {
|
|
2394
|
-
try {
|
|
2395
|
-
return this.pipeRef.formatter(...args);
|
|
2396
|
-
}
|
|
2397
|
-
catch (error) {
|
|
2398
|
-
return data;
|
|
2399
|
-
}
|
|
2400
|
-
}
|
|
2401
|
-
}
|
|
2402
|
-
|
|
2403
2386
|
const getEpochValue = data => {
|
|
2404
2387
|
let epoch;
|
|
2405
2388
|
// For data in form of string number ('123'), convert to number (123). And don't parse date objects.
|
|
@@ -2430,33 +2413,23 @@ TrailingZeroDecimalPipe.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "traili
|
|
|
2430
2413
|
}]
|
|
2431
2414
|
}], function () { return [{ type: i1$1.DecimalPipe }]; }, null);
|
|
2432
2415
|
})();
|
|
2433
|
-
class ToDatePipe
|
|
2434
|
-
// This method calls the custom formatter fn after applying the exisitng date pattern
|
|
2435
|
-
returnFn(data, args) {
|
|
2436
|
-
if (this.isCustomPipe) {
|
|
2437
|
-
if (args) {
|
|
2438
|
-
args[0] = data;
|
|
2439
|
-
}
|
|
2440
|
-
return this.customFormatter(data, args);
|
|
2441
|
-
}
|
|
2442
|
-
return data;
|
|
2443
|
-
}
|
|
2416
|
+
class ToDatePipe {
|
|
2444
2417
|
transform(data, format, timezone, compInstance) {
|
|
2445
2418
|
let timestamp;
|
|
2446
2419
|
// 'null' is to be treated as a special case, If user wants to enter null value, empty string will be passed to the backend
|
|
2447
2420
|
if (data === 'null' || data === '') {
|
|
2448
|
-
return
|
|
2421
|
+
return '';
|
|
2449
2422
|
}
|
|
2450
2423
|
if (!isDefined(data)) {
|
|
2451
|
-
return
|
|
2424
|
+
return '';
|
|
2452
2425
|
}
|
|
2453
2426
|
timestamp = getEpochValue(data);
|
|
2454
2427
|
if (timestamp) {
|
|
2455
2428
|
if (format === 'timestamp') {
|
|
2456
|
-
return
|
|
2429
|
+
return timestamp;
|
|
2457
2430
|
}
|
|
2458
2431
|
if (format === 'UTC') {
|
|
2459
|
-
return
|
|
2432
|
+
return new Date(timestamp).toISOString();
|
|
2460
2433
|
}
|
|
2461
2434
|
let formattedVal;
|
|
2462
2435
|
const timeZone = this.i18nService ? this.i18nService.getTimezone(compInstance) : timezone;
|
|
@@ -2466,18 +2439,16 @@ class ToDatePipe extends WmPipe {
|
|
|
2466
2439
|
else {
|
|
2467
2440
|
formattedVal = this.datePipe.transform(timestamp, format);
|
|
2468
2441
|
}
|
|
2469
|
-
return
|
|
2442
|
+
return formattedVal;
|
|
2470
2443
|
}
|
|
2471
|
-
return
|
|
2444
|
+
return '';
|
|
2472
2445
|
}
|
|
2473
|
-
constructor(datePipe, i18nService
|
|
2474
|
-
super('toDate', customPipeManager);
|
|
2446
|
+
constructor(datePipe, i18nService) {
|
|
2475
2447
|
this.datePipe = datePipe;
|
|
2476
2448
|
this.i18nService = i18nService;
|
|
2477
|
-
this.customPipeManager = customPipeManager;
|
|
2478
2449
|
}
|
|
2479
2450
|
}
|
|
2480
|
-
ToDatePipe.ɵfac = function ToDatePipe_Factory(t) { return new (t || ToDatePipe)(i0.ɵɵdirectiveInject(i1$1.DatePipe, 16), i0.ɵɵdirectiveInject(i1.AbstractI18nService, 16)
|
|
2451
|
+
ToDatePipe.ɵfac = function ToDatePipe_Factory(t) { return new (t || ToDatePipe)(i0.ɵɵdirectiveInject(i1$1.DatePipe, 16), i0.ɵɵdirectiveInject(i1.AbstractI18nService, 16)); };
|
|
2481
2452
|
ToDatePipe.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "toDate", type: ToDatePipe, pure: true });
|
|
2482
2453
|
(function () {
|
|
2483
2454
|
(typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ToDatePipe, [{
|
|
@@ -2485,7 +2456,7 @@ ToDatePipe.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "toDate", type: ToDa
|
|
|
2485
2456
|
args: [{
|
|
2486
2457
|
name: 'toDate'
|
|
2487
2458
|
}]
|
|
2488
|
-
}], function () { return [{ type: i1$1.DatePipe }, { type: i1.AbstractI18nService }
|
|
2459
|
+
}], function () { return [{ type: i1$1.DatePipe }, { type: i1.AbstractI18nService }]; }, null);
|
|
2489
2460
|
})();
|
|
2490
2461
|
class ToNumberPipe {
|
|
2491
2462
|
transform(data, fracSize) {
|