@libs-ui/utils 0.2.271 → 0.2.273
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{format-date.d.ts → date.d.ts} +24 -2
- package/esm2022/date.mjs +199 -0
- package/esm2022/helpers.mjs +2 -2
- package/esm2022/index.mjs +2 -2
- package/fesm2022/libs-ui-utils.mjs +61 -9
- package/fesm2022/libs-ui-utils.mjs.map +1 -1
- package/index.d.ts +1 -1
- package/package.json +2 -2
- package/esm2022/format-date.mjs +0 -146
package/index.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ export * from './constants';
|
|
|
21
21
|
export * from './pattern';
|
|
22
22
|
export * from './xss-filter';
|
|
23
23
|
export * from './two-way-signal-object';
|
|
24
|
-
export * from './
|
|
24
|
+
export * from './date';
|
|
25
25
|
export * from './download';
|
|
26
26
|
export * from './base64';
|
|
27
27
|
export * from './inject-token';
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libs-ui/utils",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.273",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^18.2.0",
|
|
6
6
|
"@angular/core": "^18.2.0",
|
|
7
7
|
"crypto-es": "^2.1.0",
|
|
8
8
|
"dayjs": "1.11.5",
|
|
9
|
-
"@libs-ui/interfaces-types": "^0.2.
|
|
9
|
+
"@libs-ui/interfaces-types": "^0.2.273",
|
|
10
10
|
"rxjs": "~7.8.0"
|
|
11
11
|
},
|
|
12
12
|
"sideEffects": false,
|
package/esm2022/format-date.mjs
DELETED
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
import dayjs from 'dayjs';
|
|
2
|
-
import "dayjs/locale/en";
|
|
3
|
-
import "dayjs/locale/vi";
|
|
4
|
-
import localeData from "dayjs/plugin/localeData";
|
|
5
|
-
import timezone from "dayjs/plugin/timezone";
|
|
6
|
-
import updateLocale from 'dayjs/plugin/updateLocale';
|
|
7
|
-
import utc from "dayjs/plugin/utc";
|
|
8
|
-
import { UtilsCache } from './cache';
|
|
9
|
-
import { isSignal } from '@angular/core';
|
|
10
|
-
dayjs.extend(localeData);
|
|
11
|
-
dayjs.extend(updateLocale);
|
|
12
|
-
dayjs.extend(utc);
|
|
13
|
-
dayjs.extend(timezone);
|
|
14
|
-
export const setDefaultTimeZone = (localeZone = "Asia/Ho_Chi_Minh") => {
|
|
15
|
-
dayjs.tz.setDefault(localeZone);
|
|
16
|
-
};
|
|
17
|
-
let functionFormatDate = undefined;
|
|
18
|
-
export const updateFunctionFormatDate = (functionCustom) => {
|
|
19
|
-
functionFormatDate = functionCustom;
|
|
20
|
-
};
|
|
21
|
-
/**
|
|
22
|
-
* @description Lấy đối tượng dayjs theo config
|
|
23
|
-
* @param config nếu không có config sẽ trả về đối tượng dayjs là thời gian hiện tại
|
|
24
|
-
* @param config.date thời gian cần lấy
|
|
25
|
-
* @param config.returnDayjsIfConfigDateNotExist true nếu muốn trả về đối tượng dayjs nếu config.date không có
|
|
26
|
-
* @param config.utc true nếu muốn lấy thời gian UTC
|
|
27
|
-
* @param config.formatOfDate định dạng thời gian đang được truyền vào
|
|
28
|
-
*/
|
|
29
|
-
export const getDayjs = (config) => {
|
|
30
|
-
if (!config) {
|
|
31
|
-
return dayjs().tz();
|
|
32
|
-
}
|
|
33
|
-
config.date = !config.date && config.returnDayjsIfConfigDateNotExist ? dayjs().tz() : config.date;
|
|
34
|
-
if (typeof config.date === 'number') {
|
|
35
|
-
config.date = dayjs.unix(config.date);
|
|
36
|
-
}
|
|
37
|
-
if (!config.date) {
|
|
38
|
-
return undefined;
|
|
39
|
-
}
|
|
40
|
-
let { date, utc, formatOfDate } = config;
|
|
41
|
-
while (isSignal(date)) {
|
|
42
|
-
date = date();
|
|
43
|
-
}
|
|
44
|
-
while (isSignal(utc)) {
|
|
45
|
-
utc = utc();
|
|
46
|
-
}
|
|
47
|
-
while (isSignal(formatOfDate)) {
|
|
48
|
-
formatOfDate = formatOfDate();
|
|
49
|
-
}
|
|
50
|
-
if (utc) {
|
|
51
|
-
if (formatOfDate) {
|
|
52
|
-
return dayjs(date, formatOfDate).utc();
|
|
53
|
-
}
|
|
54
|
-
const dateInputIsUTC = (typeof date === 'object' && date.isUTC()) || (typeof date === 'string' && date.includes('Z'));
|
|
55
|
-
if (dateInputIsUTC) {
|
|
56
|
-
return dayjs(date);
|
|
57
|
-
}
|
|
58
|
-
return dayjs(date).utc();
|
|
59
|
-
}
|
|
60
|
-
if (typeof date === 'string' && !date.includes('Z') && !date.includes('+')) {
|
|
61
|
-
return (formatOfDate ? dayjs.tz(date, formatOfDate) : dayjs.tz(date));
|
|
62
|
-
}
|
|
63
|
-
return (formatOfDate ? dayjs(date, formatOfDate).tz() : dayjs(date)).tz();
|
|
64
|
-
};
|
|
65
|
-
/**
|
|
66
|
-
* @description Lấy ra chuỗi thời gian hiển thị theo định dạng và ngôn ngữ
|
|
67
|
-
* @param date thời gian cần định dạng
|
|
68
|
-
* @param format định dạng thời gian muốn lấy ra
|
|
69
|
-
* @param lang lấy theo ngôn ngữ
|
|
70
|
-
*/
|
|
71
|
-
export const formatDate = (date, format = 'YYYY/MM/DD HH:mm', lang) => {
|
|
72
|
-
if (!date) {
|
|
73
|
-
return '';
|
|
74
|
-
}
|
|
75
|
-
lang = lang || UtilsCache.getLang();
|
|
76
|
-
if (functionFormatDate) {
|
|
77
|
-
return functionFormatDate(date, format, lang);
|
|
78
|
-
}
|
|
79
|
-
date = getDayjs({ date }).locale(lang);
|
|
80
|
-
if (lang === 'vi') {
|
|
81
|
-
dayjs.updateLocale('vi', {
|
|
82
|
-
monthsShort: 'Thg 1_Thg 2_Thg 3_Thg 4_Thg 5_Thg 6_Thg 7_Thg 8_Thg 9_Thg 10_Thg 11_Thg 12'.split('_')
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
return date.format(getFormatData(getTypeByFormat(format), lang)) || '';
|
|
86
|
-
};
|
|
87
|
-
const getTypeByFormat = (format) => {
|
|
88
|
-
if (format === 'dm' || format === 'dmy' || format === 'dmy hm' || format === 'my') {
|
|
89
|
-
return format;
|
|
90
|
-
}
|
|
91
|
-
if (format === 'DD/MM/YYYY' || format === 'YYYY-MM-DD' || format === 'dd/MM/yyyy' || format === 'dd-MM-yyyy' || format === 'dd/mm/yyyy') {
|
|
92
|
-
return 'dmy';
|
|
93
|
-
}
|
|
94
|
-
if (format === 'MM-DD' || format === 'dd/MM' || format === 'dd/mm') {
|
|
95
|
-
return 'dm';
|
|
96
|
-
}
|
|
97
|
-
if (format === 'M/YYYY' || format === 'YYYY-MM' || format === 'MM/yyyy') {
|
|
98
|
-
return 'my';
|
|
99
|
-
}
|
|
100
|
-
if (format === 'YYYY/MM/DD hh:mm:ss' || format === 'dmy hms' || format === 'dd/mm/yyyy hh:mm:ss') {
|
|
101
|
-
return 'dmy hms';
|
|
102
|
-
}
|
|
103
|
-
if (format === 'hh:mm' || format === 'HH:mm') {
|
|
104
|
-
return 'hh:mm';
|
|
105
|
-
}
|
|
106
|
-
if (format === 'hh:mm A' || format === 'HH:mm A') {
|
|
107
|
-
return 'hh:mm A';
|
|
108
|
-
}
|
|
109
|
-
return 'dmy hm';
|
|
110
|
-
};
|
|
111
|
-
const getFormatData = (type, lang) => {
|
|
112
|
-
switch (type) {
|
|
113
|
-
case 'dm':
|
|
114
|
-
if (lang === 'vi') {
|
|
115
|
-
return 'D MMM';
|
|
116
|
-
}
|
|
117
|
-
return 'MMM D';
|
|
118
|
-
case 'dmy':
|
|
119
|
-
if (lang === 'vi') {
|
|
120
|
-
return 'D MMM, YYYY';
|
|
121
|
-
}
|
|
122
|
-
return 'MMM D, YYYY';
|
|
123
|
-
case 'dmy hm':
|
|
124
|
-
if (lang === 'vi') {
|
|
125
|
-
return 'D MMM, YYYY HH:mm';
|
|
126
|
-
}
|
|
127
|
-
return 'MMM D, YYYY HH:mm';
|
|
128
|
-
case 'my':
|
|
129
|
-
if (lang === 'vi') {
|
|
130
|
-
return 'MMM, YYYY';
|
|
131
|
-
}
|
|
132
|
-
return 'MMM YYYY ';
|
|
133
|
-
case 'dmy hms':
|
|
134
|
-
if (lang === 'vi') {
|
|
135
|
-
return 'D MMM, YYYY HH:mm:ss';
|
|
136
|
-
}
|
|
137
|
-
return 'MMM D, YYYY HH:mm:ss';
|
|
138
|
-
case 'hh:mm':
|
|
139
|
-
case 'HH:mm':
|
|
140
|
-
return 'HH:mm';
|
|
141
|
-
case 'hh:mm A':
|
|
142
|
-
case 'HH:mm A':
|
|
143
|
-
return 'HH:mm A';
|
|
144
|
-
}
|
|
145
|
-
};
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL3V0aWxzL3NyYy9mb3JtYXQtZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQWdCLE1BQU0sT0FBTyxDQUFDO0FBQ3JDLE9BQU8saUJBQWlCLENBQUM7QUFDekIsT0FBTyxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLFVBQVUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLFFBQVEsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLFlBQVksTUFBTSwyQkFBMkIsQ0FBQztBQUNyRCxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQztBQUNuQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUN6QixLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzNCLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUV2QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFVBQVUsR0FBRyxrQkFBa0IsRUFBRSxFQUFFO0lBQ3BFLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ2xDLENBQUMsQ0FBQTtBQUdELElBQUksa0JBQWtCLEdBQTBDLFNBQVMsQ0FBQztBQUcxRSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLGNBQXlDLEVBQUUsRUFBRTtJQUNwRixrQkFBa0IsR0FBRyxjQUFjLENBQUM7QUFDdEMsQ0FBQyxDQUFBO0FBQ0Q7Ozs7Ozs7RUFPRTtBQUNGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxD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QUksRUFBRSxDQUFDO2dCQUNsQixPQUFPLHNCQUFzQixDQUFDO1lBQ2hDLENBQUM7WUFFRCxPQUFPLHNCQUFzQixDQUFDO1FBRWhDLEtBQUssT0FBTyxDQUFDO1FBQ2IsS0FBSyxPQUFPO1lBQ1YsT0FBTyxPQUFPLENBQUM7UUFFakIsS0FBSyxTQUFTLENBQUM7UUFDZixLQUFLLFNBQVM7WUFDWixPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0FBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRheWpzLCB7IERheWpzIH0gZnJvbSAnZGF5anMnO1xuaW1wb3J0IFwiZGF5anMvbG9jYWxlL2VuXCI7XG5pbXBvcnQgXCJkYXlqcy9sb2NhbGUvdmlcIjtcbmltcG9ydCBsb2NhbGVEYXRhIGZyb20gXCJkYXlqcy9wbHVnaW4vbG9jYWxlRGF0YVwiO1xuaW1wb3J0IHRpbWV6b25lIGZyb20gXCJkYXlqcy9wbHVnaW4vdGltZXpvbmVcIjtcbmltcG9ydCB1cGRhdGVMb2NhbGUgZnJvbSAnZGF5anMvcGx1Z2luL3VwZGF0ZUxvY2FsZSc7XG5pbXBvcnQgdXRjIGZyb20gXCJkYXlqcy9wbHVnaW4vdXRjXCI7XG5pbXBvcnQgeyBVdGlsc0NhY2hlIH0gZnJvbSAnLi9jYWNoZSc7XG5pbXBvcnQgeyBpc1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVFlQRV9PQkpFQ1QgfSBmcm9tICdAbGlicy11aS9pbnRlcmZhY2VzLXR5cGVzJztcbmRheWpzLmV4dGVuZChsb2NhbGVEYXRhKTtcbmRheWpzLmV4dGVuZCh1cGRhdGVMb2NhbGUpO1xuZGF5anMuZXh0ZW5kKHV0Yyk7XG5kYXlqcy5leHRlbmQodGltZXpvbmUpO1xuXG5leHBvcnQgY29uc3Qgc2V0RGVmYXVsdFRpbWVab25lID0gKGxvY2FsZVpvbmUgPSBcIkFzaWEvSG9fQ2hpX01pbmhcIikgPT4ge1xuICBkYXlqcy50ei5zZXREZWZhdWx0KGxvY2FsZVpvbmUpO1xufVxuXG5leHBvcnQgdHlwZSBUWVBFX0ZVTkNUSU9OX0ZPUk1BVF9EQVRFID0gKHRpbWU6IGRheWpzLkNvbmZpZ1R5cGUsIGZvcm1hdDogc3RyaW5nLCBsYW5nPzogc3RyaW5nKSA9PiBzdHJpbmc7XG5sZXQgZnVuY3Rpb25Gb3JtYXREYXRlOiBUWVBFX0ZVTkNUSU9OX0ZPUk1BVF9EQVRFIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG5cbmV4cG9ydCBjb25zdCB1cGRhdGVGdW5jdGlvbkZvcm1hdERhdGUgPSAoZnVuY3Rpb25DdXN0b206IFRZUEVfRlVOQ1RJT05fRk9STUFUX0RBVEUpID0+IHtcbiAgZnVuY3Rpb25Gb3JtYXREYXRlID0gZnVuY3Rpb25DdXN0b207XG59XG4vKipcbiAgKiBAZGVzY3JpcHRpb24gTOG6pXkgxJHhu5FpIHTGsOG7o25nIGRheWpzIHRoZW8gY29uZmlnXG4gICogQHBhcmFtIGNvbmZpZyBu4bq/dSBraMO0bmcgY8OzIGNvbmZpZyBz4bq9IHRy4bqjIHbhu4EgxJHhu5FpIHTGsOG7o25nIGRheWpzIGzDoCB0aOG7nWkgZ2lhbiBoaeG7h24gdOG6oWlcbiAgKiBAcGFyYW0gY29uZmlnLmRhdGUgdGjhu51pIGdpYW4gY+G6p24gbOG6pXlcbiAgKiBAcGFyYW0gY29uZmlnLnJldHVybkRheWpzSWZDb25maWdEYXRlTm90RXhpc3QgdHJ1ZSBu4bq/dSBtdeG7kW4gdHLhuqMgduG7gSDEkeG7kWkgdMaw4bujbmcgZGF5anMgbuG6v3UgY29uZmlnLmRhdGUga2jDtG5nIGPDs1xuICAqIEBwYXJhbSBjb25maWcudXRjIHRydWUgbuG6v3UgbXXhu5FuIGzhuqV5IHRo4budaSBnaWFuIFVUQ1xuICAqIEBwYXJhbSBjb25maWcuZm9ybWF0T2ZEYXRlIMSR4buLbmggZOG6oW5nIHRo4budaSBnaWFuIMSRYW5nIMSRxrDhu6NjIHRydXnhu4FuIHbDoG9cbiovXG5leHBvcnQgY29uc3QgZ2V0RGF5anMgPSA8VCA9IGRheWpzLkRheWpzIHwgdW5kZWZpbmVkPihjb25maWc/OiB7IGRhdGU/OiBkYXlqcy5Db25maWdUeXBlOyB1dGM/OiBib29sZWFuOyBmb3JtYXRPZkRhdGU/OiBzdHJpbmc7cmV0dXJuRGF5anNJZkNvbmZpZ0RhdGVOb3RFeGlzdD86Ym9vbGVhbiB9KSA6VCA9PiB7XG4gIGlmICghY29uZmlnKSB7XG4gICAgcmV0dXJuIGRheWpzKCkudHooKSBhcyBUO1xuICB9XG4gIGNvbmZpZy5kYXRlID0gIWNvbmZpZy5kYXRlICYmIGNvbmZpZy5yZXR1cm5EYXlqc0lmQ29uZmlnRGF0ZU5vdEV4aXN0ID8gZGF5anMoKS50eigpIDogY29uZmlnLmRhdGU7XG4gIGlmICh0eXBlb2YgY29uZmlnLmRhdGUgPT09ICdudW1iZXInKSB7XG4gICAgY29uZmlnLmRhdGUgPSBkYXlqcy51bml4KGNvbmZpZy5kYXRlKTtcbiAgfVxuICBpZiAoIWNvbmZpZy5kYXRlKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZCBhcyBUO1xuICB9XG4gIGxldCB7IGRhdGUsIHV0YywgZm9ybWF0T2ZEYXRlIH0gPSBjb25maWcgYXMgVFlQRV9PQkpFQ1Q7XG5cbiAgd2hpbGUgKGlzU2lnbmFsKGRhdGUpKSB7XG4gICAgZGF0ZSA9IGRhdGUoKTtcbiAgfVxuICB3aGlsZSAoaXNTaWduYWwodXRjKSkge1xuICAgIHV0YyA9IHV0YygpO1xuICB9XG4gIHdoaWxlIChpc1NpZ25hbChmb3JtYXRPZkRhdGUpKSB7XG4gICAgZm9ybWF0T2ZEYXRlID0gZm9ybWF0T2ZEYXRlKCk7XG4gIH1cblxuICBpZiAodXRjKSB7XG4gICAgaWYgKGZvcm1hdE9mRGF0ZSkge1xuICAgICAgcmV0dXJuIGRheWpzKGRhdGUsIGZvcm1hdE9mRGF0ZSkudXRjKCkgYXMgVDtcbiAgICB9XG4gICAgY29uc3QgZGF0ZUlucHV0SXNVVEMgPSAodHlwZW9mIGRhdGUgPT09ICdvYmplY3QnICYmIChkYXRlIGFzIERheWpzKS5pc1VUQygpKSB8fCAodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnICYmIChkYXRlIGFzIHN0cmluZykuaW5jbHVkZXMoJ1onKSk7XG5cbiAgICBpZiAoZGF0ZUlucHV0SXNVVEMpIHtcbiAgICAgIHJldHVybiBkYXlqcyhkYXRlKSBhcyBUO1xuICAgIH1cblxuICAgIHJldHVybiBkYXlqcyhkYXRlKS51dGMoKSBhcyBUO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBkYXRlID09PSAnc3RyaW5nJyAmJiAhKGRhdGUgYXMgc3RyaW5nKS5pbmNsdWRlcygnWicpICYmICEoZGF0ZSBhcyBzdHJpbmcpLmluY2x1ZGVzKCcrJykpIHtcbiAgICByZXR1cm4gKGZvcm1hdE9mRGF0ZSA/IGRheWpzLnR6KGRhdGUsIGZvcm1hdE9mRGF0ZSkgOiBkYXlqcy50eihkYXRlKSkgYXMgVDtcbiAgfVxuXG4gIHJldHVybiAoZm9ybWF0T2ZEYXRlID8gZGF5anMoZGF0ZSwgZm9ybWF0T2ZEYXRlKS50eigpIDogZGF5anMoZGF0ZSkpLnR6KCkgYXMgVDtcbn1cbi8qKlxuICogQGRlc2NyaXB0aW9uIEzhuqV5IHJhIGNodeG7l2kgdGjhu51pIGdpYW4gaGnhu4NuIHRo4buLIHRoZW8gxJHhu4tuaCBk4bqhbmcgdsOgIG5nw7RuIG5n4buvXG4gKiBAcGFyYW0gZGF0ZSB0aOG7nWkgZ2lhbiBj4bqnbiDEkeG7i25oIGThuqFuZ1xuICogQHBhcmFtIGZvcm1hdCDEkeG7i25oIGThuqFuZyB0aOG7nWkgZ2lhbiBtdeG7kW4gbOG6pXkgcmFcbiAqIEBwYXJhbSBsYW5nIGzhuqV5IHRoZW8gbmfDtG4gbmfhu69cbiAqL1xuZXhwb3J0IGNvbnN0IGZvcm1hdERhdGUgPSAoZGF0ZTogZGF5anMuQ29uZmlnVHlwZSwgZm9ybWF0ID0gJ1lZWVkvTU0vREQgSEg6bW0nLCBsYW5nPzogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKCFkYXRlKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGxhbmcgPSBsYW5nIHx8IFV0aWxzQ2FjaGUuZ2V0TGFuZygpIGFzIHN0cmluZztcbiAgaWYgKGZ1bmN0aW9uRm9ybWF0RGF0ZSkge1xuICAgIHJldHVybiBmdW5jdGlvbkZvcm1hdERhdGUoZGF0ZSwgZm9ybWF0LCBsYW5nKTtcbiAgfVxuXG4gIGRhdGUgPSBnZXREYXlqczxEYXlqcz4oeyBkYXRlIH0pLmxvY2FsZShsYW5nKTtcbiAgaWYgKGxhbmcgPT09ICd2aScpIHtcbiAgICBkYXlqcy51cGRhdGVMb2NhbGUoJ3ZpJywge1xuICAgICAgbW9udGhzU2hvcnQ6ICdUaGcgMV9UaGcgMl9UaGcgM19UaGcgNF9UaGcgNV9UaGcgNl9UaGcgN19UaGcgOF9UaGcgOV9UaGcgMTBfVGhnIDExX1RoZyAxMicuc3BsaXQoJ18nKVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGRhdGUuZm9ybWF0KGdldEZvcm1hdERhdGEoZ2V0VHlwZUJ5Rm9ybWF0KGZvcm1hdCksIGxhbmcpKSB8fCAnJztcbn1cblxuY29uc3QgZ2V0VHlwZUJ5Rm9ybWF0ID0gKGZvcm1hdDogc3RyaW5nKTogJ2RtJyB8ICdkbXknIHwgJ2RteSBobScgfCAnbXknIHwgJ2RteSBobXMnIHwgJ2hoOm1tJyB8ICdISDptbScgfCAgJ2hoOm1tIEEnIHwgJ0hIOm1tIEEnID0+IHtcbiAgaWYgKGZvcm1hdCA9PT0gJ2RtJyB8fCBmb3JtYXQgPT09ICdkbXknIHx8IGZvcm1hdCA9PT0gJ2RteSBobScgfHwgZm9ybWF0ID09PSAnbXknKSB7XG4gICAgcmV0dXJuIGZvcm1hdDtcbiAgfVxuXG4gIGlmIChmb3JtYXQgPT09ICdERC9NTS9ZWVlZJyB8fCBmb3JtYXQgPT09ICdZWVlZLU1NLUREJyB8fCBmb3JtYXQgPT09ICdkZC9NTS95eXl5JyB8fCBmb3JtYXQgPT09ICdkZC1NTS15eXl5JyB8fCBmb3JtYXQgPT09ICdkZC9tbS95eXl5Jykge1xuICAgIHJldHVybiAnZG15JztcbiAgfVxuXG4gIGlmIChmb3JtYXQgPT09ICdNTS1ERCcgfHwgZm9ybWF0ID09PSAnZGQvTU0nIHx8IGZvcm1hdCA9PT0gJ2RkL21tJykge1xuICAgIHJldHVybiAnZG0nO1xuICB9XG5cbiAgaWYgKGZvcm1hdCA9PT0gJ00vWVlZWScgfHwgZm9ybWF0ID09PSAnWVlZWS1NTScgfHwgZm9ybWF0ID09PSAnTU0veXl5eScpIHtcbiAgICByZXR1cm4gJ215JztcbiAgfVxuXG4gIGlmIChmb3JtYXQgPT09ICdZWVlZL01NL0REIGhoOm1tOnNzJyB8fCBmb3JtYXQgPT09ICdkbXkgaG1zJyB8fCBmb3JtYXQgPT09ICdkZC9tbS95eXl5IGhoOm1tOnNzJykge1xuICAgIHJldHVybiAnZG15IGhtcyc7XG4gIH1cblxuICBpZiAoZm9ybWF0ID09PSAnaGg6bW0nIHx8IGZvcm1hdCA9PT0gJ0hIOm1tJykge1xuICAgIHJldHVybiAnaGg6bW0nO1xuICB9XG5cbiAgaWYgKGZvcm1hdCA9PT0gJ2hoOm1tIEEnIHx8IGZvcm1hdCA9PT0gJ0hIOm1tIEEnKSB7XG4gICAgcmV0dXJuICdoaDptbSBBJztcbiAgfVxuXG4gIHJldHVybiAnZG15IGhtJztcbn07XG5cbmNvbnN0IGdldEZvcm1hdERhdGEgPSAodHlwZTogJ2RtJyB8ICdkbXknIHwgJ2RteSBobScgfCAnbXknIHwgJ2RteSBobXMnIHwgJ2hoOm1tJyB8ICdoaDptbSBBJyB8ICdISDptbScgfCAnSEg6bW0gQScsIGxhbmc6IHN0cmluZykgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdkbSc6XG4gICAgICBpZiAobGFuZyA9PT0gJ3ZpJykge1xuICAgICAgICByZXR1cm4gJ0QgTU1NJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICdNTU0gRCc7XG5cbiAgICBjYXNlICdkbXknOlxuICAgICAgaWYgKGxhbmcgPT09ICd2aScpIHtcbiAgICAgICAgcmV0dXJuICdEIE1NTSwgWVlZWSc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAnTU1NIEQsIFlZWVknO1xuXG4gICAgY2FzZSAnZG15IGhtJzpcbiAgICAgIGlmIChsYW5nID09PSAndmknKSB7XG4gICAgICAgIHJldHVybiAnRCBNTU0sIFlZWVkgSEg6bW0nO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gJ01NTSBELCBZWVlZIEhIOm1tJztcblxuICAgIGNhc2UgJ215JzpcbiAgICAgIGlmIChsYW5nID09PSAndmknKSB7XG4gICAgICAgIHJldHVybiAnTU1NLCBZWVlZJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICdNTU0gWVlZWSAnO1xuXG4gICAgY2FzZSAnZG15IGhtcyc6XG4gICAgICBpZiAobGFuZyA9PT0gJ3ZpJykge1xuICAgICAgICByZXR1cm4gJ0QgTU1NLCBZWVlZIEhIOm1tOnNzJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICdNTU0gRCwgWVlZWSBISDptbTpzcyc7XG5cbiAgICBjYXNlICdoaDptbSc6XG4gICAgY2FzZSAnSEg6bW0nOlxuICAgICAgcmV0dXJuICdISDptbSc7XG5cbiAgICBjYXNlICdoaDptbSBBJzpcbiAgICBjYXNlICdISDptbSBBJzpcbiAgICAgIHJldHVybiAnSEg6bW0gQSc7XG4gIH1cbn07XG4iXX0=
|