@1money/react-ui 1.14.0-alpha.8 → 1.14.1-rc.0
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/es/components/InputAmount/InputAmount.js +130 -94
- package/es/components/InputAmount/interface.d.ts +3 -1
- package/es/components/InputAmount/style/normal.css +1 -1
- package/es/components/InputAmount/style/normal.scss +16 -1
- package/es/components/Upload/style/UploadFileBar.css +1 -1
- package/es/components/Upload/style/UploadFileBar.scss +1 -1
- package/es/index.css +1 -1
- package/lib/components/InputAmount/InputAmount.js +129 -93
- package/lib/components/InputAmount/interface.d.ts +3 -1
- package/lib/components/InputAmount/style/normal.css +1 -1
- package/lib/components/InputAmount/style/normal.scss +16 -1
- package/lib/components/Upload/style/UploadFileBar.css +1 -1
- package/lib/components/Upload/style/UploadFileBar.scss +1 -1
- package/lib/index.css +1 -1
- package/package.json +5 -1
|
@@ -8,7 +8,7 @@ var __rest = this && this.__rest || function (s, e) {
|
|
|
8
8
|
return t;
|
|
9
9
|
};
|
|
10
10
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
-
import { memo, useMemo, useState, useCallback, useRef, useEffect } from 'react';
|
|
11
|
+
import { memo, useMemo, useState, useCallback, useRef, useEffect, useLayoutEffect } from 'react';
|
|
12
12
|
import BigNumber from 'bignumber.js';
|
|
13
13
|
import { numericFormatter } from 'react-number-format';
|
|
14
14
|
import { Skeleton } from 'primereact/skeleton';
|
|
@@ -56,6 +56,8 @@ export var InputAmount = function InputAmount(props) {
|
|
|
56
56
|
_props$prefixCls = props.prefixCls,
|
|
57
57
|
prefixCls = _props$prefixCls === void 0 ? 'input-amount' : _props$prefixCls,
|
|
58
58
|
messageCls = props.messageCls,
|
|
59
|
+
prefixEleCls = props.prefixEleCls,
|
|
60
|
+
suffixEleCls = props.suffixEleCls,
|
|
59
61
|
invalid = props.invalid,
|
|
60
62
|
negative = props.negative,
|
|
61
63
|
required = props.required,
|
|
@@ -71,7 +73,7 @@ export var InputAmount = function InputAmount(props) {
|
|
|
71
73
|
onChange = props.onChange,
|
|
72
74
|
_onBlur = props.onBlur,
|
|
73
75
|
_onFocus = props.onFocus,
|
|
74
|
-
rest = __rest(props, ["value", "type", "maxFractionDigits", "children", "placeholder", "min", "max", "size", "footnote", "footnoteCls", "className", "wrapperCls", "labelCls", "prefixCls", "messageCls", "invalid", "negative", "required", "loading", "success", "disabled", "readOnly", "label", "prefix", "suffix", "currency", "message", "onChange", "onBlur", "onFocus"]);
|
|
76
|
+
rest = __rest(props, ["value", "type", "maxFractionDigits", "children", "placeholder", "min", "max", "size", "footnote", "footnoteCls", "className", "wrapperCls", "labelCls", "prefixCls", "messageCls", "prefixEleCls", "suffixEleCls", "invalid", "negative", "required", "loading", "success", "disabled", "readOnly", "label", "prefix", "suffix", "currency", "message", "onChange", "onBlur", "onFocus"]);
|
|
75
77
|
var classes = classnames("".concat(prefixCls, "-").concat(type));
|
|
76
78
|
var inputRef = useRef(null);
|
|
77
79
|
var fakeEleRef = useRef(null);
|
|
@@ -80,6 +82,7 @@ export var InputAmount = function InputAmount(props) {
|
|
|
80
82
|
var currencyRef = useRef(null);
|
|
81
83
|
var containerRef = useRef(null);
|
|
82
84
|
var inputCaretPositionRef = useRef(0);
|
|
85
|
+
var ignoreSelectRef = useRef(false);
|
|
83
86
|
var _useState = useState(null),
|
|
84
87
|
_useState2 = _slicedToArray(_useState, 2),
|
|
85
88
|
_value = _useState2[0],
|
|
@@ -102,6 +105,15 @@ export var InputAmount = function InputAmount(props) {
|
|
|
102
105
|
allowNegative: negative
|
|
103
106
|
});
|
|
104
107
|
}, [_value, negative]);
|
|
108
|
+
var valueRef = useRef({
|
|
109
|
+
value: value,
|
|
110
|
+
_value: _value,
|
|
111
|
+
formattedValue: formattedValue,
|
|
112
|
+
min: min,
|
|
113
|
+
max: max,
|
|
114
|
+
negative: negative,
|
|
115
|
+
maxFractionDigits: maxFractionDigits
|
|
116
|
+
});
|
|
105
117
|
var scrollToEnd = useCallback(function () {
|
|
106
118
|
var sticky = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
107
119
|
var _a;
|
|
@@ -115,9 +127,50 @@ export var InputAmount = function InputAmount(props) {
|
|
|
115
127
|
input.scrollLeft = shouldToEnd ? input.scrollWidth : position;
|
|
116
128
|
input.focus();
|
|
117
129
|
}, []);
|
|
130
|
+
var calcCaretPos = useCallback(function (val) {
|
|
131
|
+
var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
132
|
+
var currPos = arguments.length > 2 ? arguments[2] : undefined;
|
|
133
|
+
var _a, _b, _c;
|
|
134
|
+
if (inputRef.current) {
|
|
135
|
+
var _valueRef$current = valueRef.current,
|
|
136
|
+
_value2 = _valueRef$current._value,
|
|
137
|
+
_negative = _valueRef$current.negative,
|
|
138
|
+
_formattedValue = _valueRef$current.formattedValue;
|
|
139
|
+
var formattedNewVal = numericFormatter(val, {
|
|
140
|
+
thousandSeparator: true,
|
|
141
|
+
allowNegative: _negative
|
|
142
|
+
});
|
|
143
|
+
var originOffset = val.length - ((_a = _value2 === null || _value2 === void 0 ? void 0 : _value2.length) !== null && _a !== void 0 ? _a : 0);
|
|
144
|
+
var isAdd = originOffset > 0;
|
|
145
|
+
var ignoreOldPos = isAdd ? val.length - ((_b = _value2 === null || _value2 === void 0 ? void 0 : _value2.length) !== null && _b !== void 0 ? _b : 0) > 1 : false;
|
|
146
|
+
var position = (_c = currPos !== null && currPos !== void 0 ? currPos : inputRef.current.selectionEnd) !== null && _c !== void 0 ? _c : 0;
|
|
147
|
+
if (!ignoreOldPos) {
|
|
148
|
+
var oldPosVal = _formattedValue.slice(0, Math.max(position, 0));
|
|
149
|
+
position = oldPosVal.split(',').join('').length;
|
|
150
|
+
}
|
|
151
|
+
var posVal = val.slice(0, position + originOffset);
|
|
152
|
+
formattedNewVal.split('').reduce(function (acc, _char, ind) {
|
|
153
|
+
if (_char === ',') return acc;else acc.push(_char);
|
|
154
|
+
if (acc.join('') === posVal) {
|
|
155
|
+
position = ind + 1;
|
|
156
|
+
return acc;
|
|
157
|
+
}
|
|
158
|
+
return acc;
|
|
159
|
+
}, []);
|
|
160
|
+
inputCaretPositionRef.current = position + offset;
|
|
161
|
+
}
|
|
162
|
+
}, []);
|
|
118
163
|
var handleChange = useCallback(function (e) {
|
|
119
|
-
var _a, _b, _c
|
|
164
|
+
var _a, _b, _c;
|
|
120
165
|
if (disabled || readOnly) return;
|
|
166
|
+
var _valueRef$current2 = valueRef.current,
|
|
167
|
+
value = _valueRef$current2.value,
|
|
168
|
+
_value = _valueRef$current2._value,
|
|
169
|
+
formattedValue = _valueRef$current2.formattedValue,
|
|
170
|
+
min = _valueRef$current2.min,
|
|
171
|
+
max = _valueRef$current2.max,
|
|
172
|
+
negative = _valueRef$current2.negative,
|
|
173
|
+
maxFractionDigits = _valueRef$current2.maxFractionDigits;
|
|
121
174
|
var val = e.target.value;
|
|
122
175
|
if (val != null) val = normalizeNumberInput(val).split(',').join('');
|
|
123
176
|
var hasDecimalPoint = !!val && val.endsWith('.');
|
|
@@ -131,61 +184,53 @@ export var InputAmount = function InputAmount(props) {
|
|
|
131
184
|
_val$split2 = _slicedToArray(_val$split, 2),
|
|
132
185
|
_int = _val$split2[0],
|
|
133
186
|
decimal = _val$split2[1];
|
|
134
|
-
|
|
187
|
+
var maxDecimals = Number(maxFractionDigits);
|
|
188
|
+
if (decimal != null && decimal.length > maxDecimals) {
|
|
189
|
+
var truncatedDecimals = decimal.slice(0, maxDecimals);
|
|
135
190
|
var _formattedValue$split = formattedValue.split('.'),
|
|
136
|
-
_formattedValue$split2 = _slicedToArray(_formattedValue$split,
|
|
137
|
-
|
|
138
|
-
|
|
191
|
+
_formattedValue$split2 = _slicedToArray(_formattedValue$split, 1),
|
|
192
|
+
oldInt = _formattedValue$split2[0];
|
|
193
|
+
if (oldInt.split(',').join('') == _int) return;
|
|
194
|
+
val = "".concat(_int, ".").concat(truncatedDecimals);
|
|
139
195
|
}
|
|
140
196
|
}
|
|
141
197
|
if (typeof min === 'number' || typeof min === 'bigint' || typeof max === 'number' || typeof max === 'bigint') {
|
|
142
198
|
val = calcValueInRange(val, min, max);
|
|
143
199
|
}
|
|
144
|
-
if (
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
allowNegative: negative
|
|
148
|
-
});
|
|
149
|
-
var isAdd = val.length > ((_a = _value === null || _value === void 0 ? void 0 : _value.length) !== null && _a !== void 0 ? _a : 0);
|
|
150
|
-
var ignoreOldPos = isAdd ? val.length - ((_b = _value === null || _value === void 0 ? void 0 : _value.length) !== null && _b !== void 0 ? _b : 0) > 1 : false;
|
|
151
|
-
var position = (_c = inputRef.current.selectionStart) !== null && _c !== void 0 ? _c : 0;
|
|
152
|
-
console.info('position - 1', position);
|
|
153
|
-
if (!ignoreOldPos) {
|
|
154
|
-
var oldPosVal = formattedValue.slice(0, position - (isAdd ? 1 : -1));
|
|
155
|
-
position = oldPosVal.split(',').join('').length + (isAdd ? 1 : -1);
|
|
156
|
-
console.info('position - 2', position);
|
|
157
|
-
}
|
|
158
|
-
var posVal = val.slice(0, position);
|
|
159
|
-
formattedNewVal.split('').reduce(function (acc, _char, ind) {
|
|
160
|
-
if (_char === ',') return acc;else acc.push(_char);
|
|
161
|
-
if (acc.join('') === posVal) {
|
|
162
|
-
position = ind + 1;
|
|
163
|
-
return acc;
|
|
164
|
-
}
|
|
165
|
-
return acc;
|
|
166
|
-
}, []);
|
|
167
|
-
console.info('position - 3', position);
|
|
168
|
-
inputCaretPositionRef.current = position + (hasDecimalPoint ? 2 : 0);
|
|
169
|
-
}
|
|
170
|
-
if (typeof value === 'undefined') {
|
|
171
|
-
if (val === '') {
|
|
172
|
-
setValue(null);
|
|
173
|
-
} else if (isStandaloneMinus) {
|
|
174
|
-
setValue('-');
|
|
200
|
+
if (val !== '') {
|
|
201
|
+
if (isStandaloneMinus) {
|
|
202
|
+
val = '-';
|
|
175
203
|
} else {
|
|
176
|
-
var decimals = (
|
|
204
|
+
var decimals = (_c = (_b = (_a = val.match(/\.(\d+)$/)) === null || _a === void 0 ? void 0 : _a[1]) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0;
|
|
177
205
|
var bn = BigNumber(val);
|
|
178
206
|
var normalized = bn.toFixed(decimals);
|
|
179
207
|
if (negative && val.trim().startsWith('-') && bn.isZero()) {
|
|
180
208
|
normalized = normalized.startsWith('-') ? normalized : "-".concat(normalized);
|
|
181
209
|
}
|
|
182
|
-
|
|
210
|
+
val = "".concat(normalized).concat(hasDecimalPoint ? '.' : '').trim();
|
|
183
211
|
}
|
|
184
212
|
}
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
213
|
+
if (typeof value === 'undefined') {
|
|
214
|
+
setValue(val === '' ? null : val);
|
|
215
|
+
calcCaretPos(val, hasDecimalPoint ? 2 : 0, Math.max(inputCaretPositionRef.current, 0));
|
|
216
|
+
ignoreSelectRef.current = true;
|
|
217
|
+
} else {
|
|
218
|
+
e.stopPropagation();
|
|
219
|
+
e.preventDefault();
|
|
220
|
+
}
|
|
221
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(e, val);
|
|
222
|
+
}, [onChange, disabled, readOnly]);
|
|
223
|
+
var handleSelect = useCallback(function () {
|
|
224
|
+
var _a;
|
|
225
|
+
if (ignoreSelectRef.current) {
|
|
226
|
+
ignoreSelectRef.current = false;
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
var currPos = (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.selectionEnd;
|
|
230
|
+
if (typeof currPos === 'number') inputCaretPositionRef.current = currPos;
|
|
231
|
+
}, []);
|
|
232
|
+
useLayoutEffect(function () {
|
|
233
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
189
234
|
var containerWidth = (_b = (_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) !== null && _b !== void 0 ? _b : MIN_INPUT_WIDTH;
|
|
190
235
|
var prefixWidth = (_d = (_c = prefixRef.current) === null || _c === void 0 ? void 0 : _c.offsetWidth) !== null && _d !== void 0 ? _d : 0;
|
|
191
236
|
var suffixWidth = (_f = (_e = suffixRef.current) === null || _e === void 0 ? void 0 : _e.offsetWidth) !== null && _f !== void 0 ? _f : 0;
|
|
@@ -196,30 +241,13 @@ export var InputAmount = function InputAmount(props) {
|
|
|
196
241
|
var isMax = fakeWidth >= maxWidth;
|
|
197
242
|
setWidth(Math.min(maxWidth, Math.max(fakeWidth, MIN_INPUT_WIDTH)));
|
|
198
243
|
setIsMaxWidth(isMax);
|
|
199
|
-
if (isFocus)
|
|
200
|
-
var currPos = (_l = inputRef.current) === null || _l === void 0 ? void 0 : _l.selectionStart;
|
|
201
|
-
if (currPos != undefined) {
|
|
202
|
-
inputCaretPositionRef.current = currPos;
|
|
203
|
-
}
|
|
204
|
-
console.info('isFocus', inputCaretPositionRef.current);
|
|
205
|
-
scrollToEnd(true);
|
|
206
|
-
}
|
|
244
|
+
if (isFocus) scrollToEnd(true);
|
|
207
245
|
}, [_value, prefix, suffix, currency, isFocus]);
|
|
208
|
-
|
|
209
|
-
// clear negative sign if not allowed
|
|
210
|
-
if (negative) return;
|
|
211
|
-
if (typeof value !== 'undefined') return;
|
|
212
|
-
if (_value == null) return;
|
|
213
|
-
if (_value === '-') {
|
|
214
|
-
setValue(null);
|
|
215
|
-
return;
|
|
216
|
-
}
|
|
217
|
-
if (_value.startsWith('-')) setValue(_value.slice(1));
|
|
218
|
-
}, [negative, value, _value]);
|
|
219
|
-
useEffect(function () {
|
|
246
|
+
useLayoutEffect(function () {
|
|
220
247
|
var _a, _b, _c;
|
|
221
|
-
var val = value;
|
|
248
|
+
var val = typeof value === 'undefined' ? _value : value;
|
|
222
249
|
var hasDecimalPoint = false;
|
|
250
|
+
var isStandaloneMinus = false;
|
|
223
251
|
if (typeof val === 'string') {
|
|
224
252
|
if (val === '') {
|
|
225
253
|
val = null;
|
|
@@ -228,11 +256,8 @@ export var InputAmount = function InputAmount(props) {
|
|
|
228
256
|
hasDecimalPoint = !!val && val.endsWith('.');
|
|
229
257
|
if (hasDecimalPoint) val = val.slice(0, -1);
|
|
230
258
|
if (!negative) val = val.replace(/-/g, '');
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
return;
|
|
234
|
-
}
|
|
235
|
-
if (isNaN(+val)) return;
|
|
259
|
+
isStandaloneMinus = !!negative && val === '-';
|
|
260
|
+
if (!isStandaloneMinus && isNaN(+val)) return;
|
|
236
261
|
}
|
|
237
262
|
} else if (val !== null && typeof val !== 'number' && typeof val !== 'bigint') return;
|
|
238
263
|
if (!negative) {
|
|
@@ -248,8 +273,10 @@ export var InputAmount = function InputAmount(props) {
|
|
|
248
273
|
_split2 = _slicedToArray(_split, 2),
|
|
249
274
|
_int2 = _split2[0],
|
|
250
275
|
decimal = _split2[1];
|
|
251
|
-
|
|
252
|
-
|
|
276
|
+
var maxDecimals = Number(maxFractionDigits);
|
|
277
|
+
if (decimal != null && decimal.length > maxDecimals) {
|
|
278
|
+
var truncatedDecimals = decimal.slice(0, maxDecimals);
|
|
279
|
+
val = "".concat(_int2, ".").concat(truncatedDecimals);
|
|
253
280
|
}
|
|
254
281
|
}
|
|
255
282
|
if (typeof val === 'string' || typeof val === 'number' || typeof val === 'bigint') {
|
|
@@ -258,18 +285,36 @@ export var InputAmount = function InputAmount(props) {
|
|
|
258
285
|
if (val === '' || val == null) {
|
|
259
286
|
setValue(null);
|
|
260
287
|
} else {
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
288
|
+
if (isStandaloneMinus) {
|
|
289
|
+
val = '-';
|
|
290
|
+
} else {
|
|
291
|
+
var strVal = '' + val;
|
|
292
|
+
var decimals = (_c = (_b = (_a = strVal.match(/\.(\d+)$/)) === null || _a === void 0 ? void 0 : _a[1]) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0;
|
|
293
|
+
var bn = BigNumber(strVal);
|
|
294
|
+
var normalized = bn.toFixed(decimals);
|
|
295
|
+
if (negative && strVal.trim().startsWith('-') && bn.isZero()) {
|
|
296
|
+
normalized = normalized.startsWith('-') ? normalized : "-".concat(normalized);
|
|
297
|
+
}
|
|
298
|
+
val = "".concat(normalized).concat(hasDecimalPoint ? '.' : '').trim();
|
|
267
299
|
}
|
|
268
|
-
setValue(
|
|
300
|
+
setValue(val);
|
|
269
301
|
}
|
|
302
|
+
calcCaretPos(val !== null && val !== void 0 ? val : '', hasDecimalPoint ? 2 : 0, Math.max(inputCaretPositionRef.current, 0));
|
|
303
|
+
ignoreSelectRef.current = true;
|
|
270
304
|
}, [value, maxFractionDigits, min, max, negative]);
|
|
305
|
+
useEffect(function () {
|
|
306
|
+
valueRef.current = {
|
|
307
|
+
value: value,
|
|
308
|
+
_value: _value,
|
|
309
|
+
formattedValue: formattedValue,
|
|
310
|
+
min: min,
|
|
311
|
+
max: max,
|
|
312
|
+
negative: negative,
|
|
313
|
+
maxFractionDigits: maxFractionDigits
|
|
314
|
+
};
|
|
315
|
+
}, [_value, value, formattedValue, min, max, negative, maxFractionDigits]);
|
|
271
316
|
return _jsxs("div", {
|
|
272
|
-
className: classes('wrapper', joinCls(wrapperCls, invalid && classes('invalid'), success && classes('success'), disabled && classes('disabled'), readOnly && classes('readonly'), _value && classes('filled'))),
|
|
317
|
+
className: classes('wrapper', joinCls(wrapperCls, classes(size), invalid && classes('invalid'), success && classes('success'), disabled && classes('disabled'), readOnly && classes('readonly'), _value && classes('filled'))),
|
|
273
318
|
children: [label ? loading ? _jsx(Skeleton, {
|
|
274
319
|
width: '72px',
|
|
275
320
|
height: '18px',
|
|
@@ -288,7 +333,7 @@ export var InputAmount = function InputAmount(props) {
|
|
|
288
333
|
},
|
|
289
334
|
children: [prefix && _jsx("span", {
|
|
290
335
|
ref: prefixRef,
|
|
291
|
-
className: classes('prefix'),
|
|
336
|
+
className: classes('prefix', prefixEleCls),
|
|
292
337
|
children: prefix
|
|
293
338
|
}), _jsx("div", {
|
|
294
339
|
className: classes('element', !isFocus && isMaxWidth ? classes('element-max') : ''),
|
|
@@ -302,13 +347,7 @@ export var InputAmount = function InputAmount(props) {
|
|
|
302
347
|
'--input-width': "".concat(_width, "px")
|
|
303
348
|
},
|
|
304
349
|
onChange: handleChange,
|
|
305
|
-
onSelect:
|
|
306
|
-
var _a;
|
|
307
|
-
var currPos = (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.selectionStart;
|
|
308
|
-
if (currPos != undefined) {
|
|
309
|
-
inputCaretPositionRef.current = currPos;
|
|
310
|
-
}
|
|
311
|
-
},
|
|
350
|
+
onSelect: handleSelect,
|
|
312
351
|
onFocus: function onFocus(e) {
|
|
313
352
|
setIsFocus(true);
|
|
314
353
|
_onFocus === null || _onFocus === void 0 ? void 0 : _onFocus(e);
|
|
@@ -327,7 +366,7 @@ export var InputAmount = function InputAmount(props) {
|
|
|
327
366
|
strokeWidth: '4'
|
|
328
367
|
}) : suffix ? _jsx("span", {
|
|
329
368
|
ref: suffixRef,
|
|
330
|
-
className: classes('suffix'),
|
|
369
|
+
className: classes('suffix', suffixEleCls),
|
|
331
370
|
children: suffix
|
|
332
371
|
}) : null, _jsx("span", {
|
|
333
372
|
ref: fakeEleRef,
|
|
@@ -335,10 +374,7 @@ export var InputAmount = function InputAmount(props) {
|
|
|
335
374
|
onClick: function onClick(e) {
|
|
336
375
|
return e.stopPropagation();
|
|
337
376
|
},
|
|
338
|
-
children:
|
|
339
|
-
thousandSeparator: true,
|
|
340
|
-
allowNegative: negative
|
|
341
|
-
})
|
|
377
|
+
children: formattedValue
|
|
342
378
|
})]
|
|
343
379
|
}), (message || footnote) && _jsxs("div", {
|
|
344
380
|
className: classes('extra'),
|
|
@@ -353,4 +389,4 @@ export var InputAmount = function InputAmount(props) {
|
|
|
353
389
|
});
|
|
354
390
|
};
|
|
355
391
|
export default /*#__PURE__*/memo(InputAmount);
|
|
356
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJtZW1vIiwidXNlTWVtbyIsInVzZVN0YXRlIiwidXNlQ2FsbGJhY2siLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJCaWdOdW1iZXIiLCJudW1lcmljRm9ybWF0dGVyIiwiU2tlbGV0b24iLCJTcGlubmVyIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJqb2luQ2xzIiwiTUlOX0lOUFVUX1dJRFRIIiwibm9ybWFsaXplTnVtYmVySW5wdXQiLCJ2YWwiLCJyZXBsYWNlIiwiY2FsY1ZhbHVlSW5SYW5nZSIsIm1pbiIsIm1heCIsImlzTmFOIiwiY2FsY1ZhbCIsImJuVmFsIiwibWluQm4iLCJsdCIsIm1heEJuIiwiZ3QiLCJJbnB1dEFtb3VudCIsInByb3BzIiwidmFsdWUiLCJfcHJvcHMkdHlwZSIsInR5cGUiLCJtYXhGcmFjdGlvbkRpZ2l0cyIsImNoaWxkcmVuIiwiX3Byb3BzJHBsYWNlaG9sZGVyIiwicGxhY2Vob2xkZXIiLCJfcHJvcHMkc2l6ZSIsInNpemUiLCJmb290bm90ZSIsImZvb3Rub3RlQ2xzIiwiY2xhc3NOYW1lIiwid3JhcHBlckNscyIsImxhYmVsQ2xzIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsIm1lc3NhZ2VDbHMiLCJpbnZhbGlkIiwibmVnYXRpdmUiLCJyZXF1aXJlZCIsImxvYWRpbmciLCJzdWNjZXNzIiwiZGlzYWJsZWQiLCJyZWFkT25seSIsImxhYmVsIiwicHJlZml4Iiwic3VmZml4IiwiY3VycmVuY3kiLCJtZXNzYWdlIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJvbkZvY3VzIiwicmVzdCIsImNsYXNzZXMiLCJjb25jYXQiLCJpbnB1dFJlZiIsImZha2VFbGVSZWYiLCJwcmVmaXhSZWYiLCJzdWZmaXhSZWYiLCJjdXJyZW5jeVJlZiIsImNvbnRhaW5lclJlZiIsImlucHV0Q2FyZXRQb3NpdGlvblJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsIl92YWx1ZSIsInNldFZhbHVlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJfd2lkdGgiLCJzZXRXaWR0aCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNNYXhXaWR0aCIsInNldElzTWF4V2lkdGgiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImlzRm9jdXMiLCJzZXRJc0ZvY3VzIiwiZm9ybWF0dGVkVmFsdWUiLCJ0aG91c2FuZFNlcGFyYXRvciIsImFsbG93TmVnYXRpdmUiLCJzY3JvbGxUb0VuZCIsInN0aWNreSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIl9hIiwiaW5wdXQiLCJjdXJyZW50IiwibGVuIiwicG9zaXRpb24iLCJzY3JvbGxMZWZ0Iiwic2hvdWxkVG9FbmQiLCJzdGFydCIsInNldFNlbGVjdGlvblJhbmdlIiwic2Nyb2xsV2lkdGgiLCJmb2N1cyIsImhhbmRsZUNoYW5nZSIsIl9iIiwiX2MiLCJfZCIsIl9lIiwiX2YiLCJ0YXJnZXQiLCJzcGxpdCIsImpvaW4iLCJoYXNEZWNpbWFsUG9pbnQiLCJlbmRzV2l0aCIsInNsaWNlIiwiaW5jbHVkZXMiLCJpc1N0YW5kYWxvbmVNaW51cyIsIl92YWwkc3BsaXQiLCJfdmFsJHNwbGl0MiIsImludCIsImRlY2ltYWwiLCJOdW1iZXIiLCJfZm9ybWF0dGVkVmFsdWUkc3BsaXQiLCJfZm9ybWF0dGVkVmFsdWUkc3BsaXQyIiwib2xkRGVjaW1hbCIsImZvcm1hdHRlZE5ld1ZhbCIsImlzQWRkIiwiaWdub3JlT2xkUG9zIiwic2VsZWN0aW9uU3RhcnQiLCJjb25zb2xlIiwiaW5mbyIsIm9sZFBvc1ZhbCIsInBvc1ZhbCIsInJlZHVjZSIsImFjYyIsImNoYXIiLCJpbmQiLCJwdXNoIiwiZGVjaW1hbHMiLCJtYXRjaCIsImJuIiwibm9ybWFsaXplZCIsInRvRml4ZWQiLCJ0cmltIiwic3RhcnRzV2l0aCIsImlzWmVybyIsIl9nIiwiX2giLCJfaiIsIl9rIiwiX2wiLCJjb250YWluZXJXaWR0aCIsIm9mZnNldFdpZHRoIiwicHJlZml4V2lkdGgiLCJzdWZmaXhXaWR0aCIsImN1cnJlbmN5V2lkdGgiLCJmYWtlV2lkdGgiLCJnYXBXaWR0aCIsIm1heFdpZHRoIiwiaXNNYXgiLCJNYXRoIiwiY3VyclBvcyIsImFicyIsInplcm8iLCJCaWdJbnQiLCJfc3BsaXQiLCJfc3BsaXQyIiwic3RyVmFsIiwid2lkdGgiLCJoZWlnaHQiLCJyZWYiLCJvbkNsaWNrIiwiSFRNTElucHV0RWxlbWVudCIsImFzc2lnbiIsInN0eWxlIiwib25TZWxlY3QiLCJzdHJva2VXaWR0aCIsInN0b3BQcm9wYWdhdGlvbiJdLCJtYXBwaW5ncyI6IjtBQUFBLElBQUlBLE1BQU0sR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxNQUFNLElBQUssVUFBVUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7RUFDbEQsSUFBSUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUNWLEtBQUssSUFBSUMsQ0FBQyxJQUFJSCxDQUFDLEVBQUUsSUFBSUksTUFBTSxDQUFDQyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDUCxDQUFDLEVBQUVHLENBQUMsQ0FBQyxJQUFJRixDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUMvRUQsQ0FBQyxDQUFDQyxDQUFDLENBQUMsR0FBR0gsQ0FBQyxDQUFDRyxDQUFDLENBQUM7RUFDZixJQUFJSCxDQUFDLElBQUksSUFBSSxJQUFJLE9BQU9JLE1BQU0sQ0FBQ0sscUJBQXFC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QUFBLEVBQUE7UUFDRWdMLEdBQUcsRUFBRTVHLFVBQVU7UUFDZnpCLFNBQVMsRUFBRXNCLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDMUJnSCxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBRTlMLENBQUM7VUFBQSxPQUFJQSxDQUFDLENBQUNvTSxlQUFlLENBQUEsQ0FBRTtRQUFBO1FBQUFuSixRQUFBLEVBRy9CMUIsZ0JBQWdCLENBQUMsRUFBRSxJQUFJbUUsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUdBLE1BQU0sQ0FBQyxFQUFFO1VBQ3BEZSxpQkFBaUIsRUFBRSxJQUFJO1VBQ3ZCQyxhQUFhLEVBQUUzQztRRDdESCxDQzhEYjtNQUFDLENBQUEsQ0FFQztJQUFBLENBQUEsQ0FDSCxFQUVKLENBQUNVLE9BQU8sSUFBSW5CLFFBQVEsS0FBS3ZDLEtBQUEsQ0FBQSxLQUFBLEVBQUE7TUFBS3lDLFNBQVMsRUFBRXNCLE9BQU8sQ0FBQyxPQUFPLENBQUM7TUFBQTdCLFFBQUEsRUFBQSxDQUN0RHdCLE9BQU8sSUFBSTVELElBQUEsQ0FBQSxLQUFBLEVBQUE7UUFBSzJDLFNBQVMsRUFBRXNCLE9BQU8sQ0FBQyxTQUFTLEVBQUVqQixVQUFVLENBQUM7UUFBQVosUUFBQSxFQUFHd0I7TUFBTyxDQUFBLENBQU8sRUFDMUVuQixRQUFRLElBQUl6QyxJQUFBLENBQUEsS0FBQSxFQUFBO1FBQUsyQyxTQUFTLEVBQUVzQixPQUFPLENBQUMsVUFBVSxFQUFFdkIsV0FBVyxDQUFDO1FBQUFOLFFBQUEsRUFBR0s7TUFBUSxDQUFBLENBQU87SUFBQSxDQUFBLENBQzNFO0VBQUEsQ0FBQSxDQUVKO0FBQ1IsQ0FBQztBQUVELDRCQUFldEMsSUFBSSxDQUFDMkIsV0FBVyxDQUFDIiwiZmlsZSI6ImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlTWVtbywgdXNlU3RhdGUsIHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IG51bWVyaWNGb3JtYXR0ZXIgfSBmcm9tICdyZWFjdC1udW1iZXItZm9ybWF0JztcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSAncHJpbWVyZWFjdC9za2VsZXRvbic7XG5pbXBvcnQgU3Bpbm5lciBmcm9tICcuLi9TcGlubmVyJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcywgam9pbkNscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuY29uc3QgTUlOX0lOUFVUX1dJRFRIID0gMzM7XG5jb25zdCBub3JtYWxpemVOdW1iZXJJbnB1dCA9ICh2YWwpID0+IHZhbFxuICAgIC5yZXBsYWNlKC9bXFx1MzAwMlxcdWZmMGVcXHVmZjYxXS9nLCAnLicpXG4gICAgLnJlcGxhY2UoL1tcXHVGRjBDXS9nLCAnLCcpO1xuY29uc3QgY2FsY1ZhbHVlSW5SYW5nZSA9ICh2YWwsIG1pbiwgbWF4KSA9PiB7XG4gICAgaWYgKHZhbCA9PT0gJycgfHwgdmFsID09PSAnLScgfHwgaXNOYU4oK3ZhbCkpXG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgbGV0IGNhbGNWYWwgPSB2YWw7XG4gICAgY29uc3QgYm5WYWwgPSBCaWdOdW1iZXIodmFsKTtcbiAgICBpZiAodHlwZW9mIG1pbiA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1pbiA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgY29uc3QgbWluQm4gPSBCaWdOdW1iZXIobWluKTtcbiAgICAgICAgaWYgKGJuVmFsLmx0KG1pbkJuKSkge1xuICAgICAgICAgICAgY2FsY1ZhbCA9ICcnICsgbWluO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgbWF4ID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWF4ID09PSAnYmlnaW50Jykge1xuICAgICAgICBjb25zdCBtYXhCbiA9IEJpZ051bWJlcihtYXgpO1xuICAgICAgICBpZiAoYm5WYWwuZ3QobWF4Qm4pKSB7XG4gICAgICAgICAgICBjYWxjVmFsID0gJycgKyBtYXg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNhbGNWYWw7XG59O1xuZXhwb3J0IGNvbnN0IElucHV0QW1vdW50ID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgdmFsdWUsIHR5cGUgPSAncHJpbWFyeScsIG1heEZyYWN0aW9uRGlnaXRzLCBjaGlsZHJlbiwgcGxhY2Vob2xkZXIgPSAnMCcsIG1pbiwgbWF4LCBcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgc2l6ZSA9ICdsYXJnZScsIGZvb3Rub3RlLCBmb290bm90ZUNscywgY2xhc3NOYW1lLCB3cmFwcGVyQ2xzLCBsYWJlbENscywgcHJlZml4Q2xzID0gJ2lucHV0LWFtb3VudCcsIG1lc3NhZ2VDbHMsIGludmFsaWQsIG5lZ2F0aXZlLCByZXF1aXJlZCwgbG9hZGluZywgc3VjY2VzcywgZGlzYWJsZWQsIHJlYWRPbmx5LCBsYWJlbCwgcHJlZml4LCBzdWZmaXgsIGN1cnJlbmN5LCBtZXNzYWdlLCBvbkNoYW5nZSwgb25CbHVyLCBvbkZvY3VzIH0gPSBwcm9wcywgcmVzdCA9IF9fcmVzdChwcm9wcywgW1widmFsdWVcIiwgXCJ0eXBlXCIsIFwibWF4RnJhY3Rpb25EaWdpdHNcIiwgXCJjaGlsZHJlblwiLCBcInBsYWNlaG9sZGVyXCIsIFwibWluXCIsIFwibWF4XCIsIFwic2l6ZVwiLCBcImZvb3Rub3RlXCIsIFwiZm9vdG5vdGVDbHNcIiwgXCJjbGFzc05hbWVcIiwgXCJ3cmFwcGVyQ2xzXCIsIFwibGFiZWxDbHNcIiwgXCJwcmVmaXhDbHNcIiwgXCJtZXNzYWdlQ2xzXCIsIFwiaW52YWxpZFwiLCBcIm5lZ2F0aXZlXCIsIFwicmVxdWlyZWRcIiwgXCJsb2FkaW5nXCIsIFwic3VjY2Vzc1wiLCBcImRpc2FibGVkXCIsIFwicmVhZE9ubHlcIiwgXCJsYWJlbFwiLCBcInByZWZpeFwiLCBcInN1ZmZpeFwiLCBcImN1cnJlbmN5XCIsIFwibWVzc2FnZVwiLCBcIm9uQ2hhbmdlXCIsIFwib25CbHVyXCIsIFwib25Gb2N1c1wiXSk7XG4gICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoYCR7cHJlZml4Q2xzfS0ke3R5cGV9YCk7XG4gICAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgZmFrZUVsZVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBwcmVmaXhSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3Qgc3VmZml4UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGN1cnJlbmN5UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBpbnB1dENhcmV0UG9zaXRpb25SZWYgPSB1c2VSZWYoMCk7XG4gICAgY29uc3QgW192YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW193aWR0aCwgc2V0V2lkdGhdID0gdXNlU3RhdGUoTUlOX0lOUFVUX1dJRFRIKTtcbiAgICBjb25zdCBbaXNNYXhXaWR0aCwgc2V0SXNNYXhXaWR0aF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2lzRm9jdXMsIHNldElzRm9jdXNdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIHJldHVybiBudW1lcmljRm9ybWF0dGVyKCcnICsgKF92YWx1ZSA9PSBudWxsID8gJycgOiBfdmFsdWUpLCB7XG4gICAgICAgICAgICB0aG91c2FuZFNlcGFyYXRvcjogdHJ1ZSxcbiAgICAgICAgICAgIGFsbG93TmVnYXRpdmU6IG5lZ2F0aXZlLFxuICAgICAgICB9KTtcbiAgICB9LCBbX3ZhbHVlLCBuZWdhdGl2ZV0pO1xuICAgIGNvbnN0IHNjcm9sbFRvRW5kID0gdXNlQ2FsbGJhY2soKHN0aWNreSA9IGZhbHNlKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBpbnB1dFJlZi5jdXJyZW50O1xuICAgICAgICBpZiAoIWlucHV0KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBsZW4gPSAoX2EgPSBpbnB1dC52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aDtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSBpbnB1dC5zY3JvbGxMZWZ0O1xuICAgICAgICBjb25zdCBzaG91bGRUb0VuZCA9ICFzdGlja3k7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gc2hvdWxkVG9FbmQgPyBsZW4gOiBpbnB1dENhcmV0UG9zaXRpb25SZWYuY3VycmVudDtcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2Uoc3RhcnQsIHN0YXJ0KTtcbiAgICAgICAgaW5wdXQuc2Nyb2xsTGVmdCA9IHNob3VsZFRvRW5kID8gaW5wdXQuc2Nyb2xsV2lkdGggOiBwb3NpdGlvbjtcbiAgICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICB9LCBbXSk7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKGUpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2Y7XG4gICAgICAgIGlmIChkaXNhYmxlZCB8fCByZWFkT25seSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGV0IHZhbCA9IGUudGFyZ2V0LnZhbHVlO1xuICAgICAgICBpZiAodmFsICE9IG51bGwpXG4gICAgICAgICAgICB2YWwgPSBub3JtYWxpemVOdW1iZXJJbnB1dCh2YWwpLnNwbGl0KCcsJykuam9pbignJyk7XG4gICAgICAgIGNvbnN0IGhhc0RlY2ltYWxQb2ludCA9ICEhdmFsICYmIHZhbC5lbmRzV2l0aCgnLicpO1xuICAgICAgICBpZiAoaGFzRGVjaW1hbFBvaW50KVxuICAgICAgICAgICAgdmFsID0gdmFsLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgaWYgKCFuZWdhdGl2ZSAmJiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdmFsLmluY2x1ZGVzKCctJykpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBpc1N0YW5kYWxvbmVNaW51cyA9IG5lZ2F0aXZlICYmIHZhbCA9PT0gJy0nO1xuICAgICAgICBpZiAoIWlzU3RhbmRhbG9uZU1pbnVzICYmIGlzTmFOKCt2YWwpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAodmFsID09PSBfdmFsdWUgJiYgIWhhc0RlY2ltYWxQb2ludClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnYmlnaW50Jykge1xuICAgICAgICAgICAgY29uc3QgW2ludCwgZGVjaW1hbF0gPSB2YWwuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIGlmIChkZWNpbWFsICE9IG51bGwgJiYgZGVjaW1hbC5sZW5ndGggPiBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgWywgb2xkRGVjaW1hbF0gPSBmb3JtYXR0ZWRWYWx1ZS5zcGxpdCgnLicpO1xuICAgICAgICAgICAgICAgIHZhbCA9IGAke2ludH0uJHtvbGREZWNpbWFsfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCh0eXBlb2YgbWluID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWluID09PSAnYmlnaW50JykgfHwgKHR5cGVvZiBtYXggPT09ICdudW1iZXInIHx8IHR5cGVvZiBtYXggPT09ICdiaWdpbnQnKSkge1xuICAgICAgICAgICAgdmFsID0gY2FsY1ZhbHVlSW5SYW5nZSh2YWwsIG1pbiwgbWF4KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5wdXRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkTmV3VmFsID0gbnVtZXJpY0Zvcm1hdHRlcih2YWwsIHtcbiAgICAgICAgICAgICAgICB0aG91c2FuZFNlcGFyYXRvcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiBuZWdhdGl2ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgaXNBZGQgPSB2YWwubGVuZ3RoID4gKChfYSA9IF92YWx1ZSA9PT0gbnVsbCB8fCBfdmFsdWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF92YWx1ZS5sZW5ndGgpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDApO1xuICAgICAgICAgICAgY29uc3QgaWdub3JlT2xkUG9zID0gaXNBZGQgPyB2YWwubGVuZ3RoIC0gKChfYiA9IF92YWx1ZSA9PT0gbnVsbCB8fCBfdmFsdWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF92YWx1ZS5sZW5ndGgpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDApID4gMSA6IGZhbHNlO1xuICAgICAgICAgICAgbGV0IHBvc2l0aW9uID0gKF9jID0gaW5wdXRSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogMDtcbiAgICAgICAgICAgIGNvbnNvbGUuaW5mbygncG9zaXRpb24gLSAxJywgcG9zaXRpb24pO1xuICAgICAgICAgICAgaWYgKCFpZ25vcmVPbGRQb3MpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvbGRQb3NWYWwgPSBmb3JtYXR0ZWRWYWx1ZS5zbGljZSgwLCAocG9zaXRpb24gLSAoaXNBZGQgPyAxIDogLTEpKSk7XG4gICAgICAgICAgICAgICAgcG9zaXRpb24gPSBvbGRQb3NWYWwuc3BsaXQoJywnKS5qb2luKCcnKS5sZW5ndGggKyAoaXNBZGQgPyAxIDogLTEpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuaW5mbygncG9zaXRpb24gLSAyJywgcG9zaXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcG9zVmFsID0gdmFsLnNsaWNlKDAsIHBvc2l0aW9uKTtcbiAgICAgICAgICAgIGZvcm1hdHRlZE5ld1ZhbC5zcGxpdCgnJykucmVkdWNlKChhY2MsIGNoYXIsIGluZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjaGFyID09PSAnLCcpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBhY2MucHVzaChjaGFyKTtcbiAgICAgICAgICAgICAgICBpZiAoYWNjLmpvaW4oJycpID09PSBwb3NWYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBpbmQgKyAxO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgY29uc29sZS5pbmZvKCdwb3NpdGlvbiAtIDMnLCBwb3NpdGlvbik7XG4gICAgICAgICAgICBpbnB1dENhcmV0UG9zaXRpb25SZWYuY3VycmVudCA9IHBvc2l0aW9uICsgKGhhc0RlY2ltYWxQb2ludCA/IDIgOiAwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgaWYgKHZhbCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGlzU3RhbmRhbG9uZU1pbnVzKSB7XG4gICAgICAgICAgICAgICAgc2V0VmFsdWUoJy0nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlY2ltYWxzID0gKF9mID0gKF9lID0gKF9kID0gdmFsLm1hdGNoKC9cXC4oXFxkKykkLykpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZFsxXSkgPT09IG51bGwgfHwgX2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9lLmxlbmd0aCkgIT09IG51bGwgJiYgX2YgIT09IHZvaWQgMCA/IF9mIDogMDtcbiAgICAgICAgICAgICAgICBjb25zdCBibiA9IEJpZ051bWJlcih2YWwpO1xuICAgICAgICAgICAgICAgIGxldCBub3JtYWxpemVkID0gYm4udG9GaXhlZChkZWNpbWFscyk7XG4gICAgICAgICAgICAgICAgaWYgKG5lZ2F0aXZlICYmIHZhbC50cmltKCkuc3RhcnRzV2l0aCgnLScpICYmIGJuLmlzWmVybygpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVkLnN0YXJ0c1dpdGgoJy0nKSA/IG5vcm1hbGl6ZWQgOiBgLSR7bm9ybWFsaXplZH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXRWYWx1ZShgJHtub3JtYWxpemVkfSR7aGFzRGVjaW1hbFBvaW50ID8gJy4nIDogJyd9YC50cmltKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZShlKTtcbiAgICB9LCBbb25DaGFuZ2UsIF92YWx1ZSwgdmFsdWUsIGZvcm1hdHRlZFZhbHVlLCBtYXhGcmFjdGlvbkRpZ2l0cywgbWluLCBtYXgsIG5lZ2F0aXZlLCBkaXNhYmxlZCwgcmVhZE9ubHldKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oLCBfaiwgX2ssIF9sO1xuICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IChfYiA9IChfYSA9IGNvbnRhaW5lclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IE1JTl9JTlBVVF9XSURUSDtcbiAgICAgICAgY29uc3QgcHJlZml4V2lkdGggPSAoX2QgPSAoX2MgPSBwcmVmaXhSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAwO1xuICAgICAgICBjb25zdCBzdWZmaXhXaWR0aCA9IChfZiA9IChfZSA9IHN1ZmZpeFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Uub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9mICE9PSB2b2lkIDAgPyBfZiA6IDA7XG4gICAgICAgIGNvbnN0IGN1cnJlbmN5V2lkdGggPSAoX2ggPSAoX2cgPSBjdXJyZW5jeVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2cub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9oICE9PSB2b2lkIDAgPyBfaCA6IDA7XG4gICAgICAgIGNvbnN0IGZha2VXaWR0aCA9IChfayA9IChfaiA9IGZha2VFbGVSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2ogPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9qLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfayAhPT0gdm9pZCAwID8gX2sgOiAwO1xuICAgICAgICBjb25zdCBnYXBXaWR0aCA9IHByZWZpeFdpZHRoICYmIHN1ZmZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGhcbiAgICAgICAgICAgID8gMjRcbiAgICAgICAgICAgIDogKHByZWZpeFdpZHRoICYmIHN1ZmZpeFdpZHRoKSB8fCAocHJlZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aCkgfHwgKHN1ZmZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGgpXG4gICAgICAgICAgICAgICAgPyAxNlxuICAgICAgICAgICAgICAgIDogcHJlZml4V2lkdGggfHwgc3VmZml4V2lkdGggfHwgY3VycmVuY3lXaWR0aFxuICAgICAgICAgICAgICAgICAgICA/IDhcbiAgICAgICAgICAgICAgICAgICAgOiAwO1xuICAgICAgICBjb25zdCBtYXhXaWR0aCA9IGNvbnRhaW5lcldpZHRoIC0gcHJlZml4V2lkdGggLSBzdWZmaXhXaWR0aCAtIGN1cnJlbmN5V2lkdGggLSBnYXBXaWR0aDtcbiAgICAgICAgY29uc3QgaXNNYXggPSBmYWtlV2lkdGggPj0gbWF4V2lkdGg7XG4gICAgICAgIHNldFdpZHRoKE1hdGgubWluKG1heFdpZHRoLCBNYXRoLm1heChmYWtlV2lkdGgsIE1JTl9JTlBVVF9XSURUSCkpKTtcbiAgICAgICAgc2V0SXNNYXhXaWR0aChpc01heCk7XG4gICAgICAgIGlmIChpc0ZvY3VzKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyUG9zID0gKF9sID0gaW5wdXRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2wgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9sLnNlbGVjdGlvblN0YXJ0O1xuICAgICAgICAgICAgaWYgKGN1cnJQb3MgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQgPSBjdXJyUG9zO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc29sZS5pbmZvKCdpc0ZvY3VzJywgaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgc2Nyb2xsVG9FbmQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9LCBbX3ZhbHVlLCBwcmVmaXgsIHN1ZmZpeCwgY3VycmVuY3ksIGlzRm9jdXNdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAvLyBjbGVhciBuZWdhdGl2ZSBzaWduIGlmIG5vdCBhbGxvd2VkXG4gICAgICAgIGlmIChuZWdhdGl2ZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChfdmFsdWUgPT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKF92YWx1ZSA9PT0gJy0nKSB7XG4gICAgICAgICAgICBzZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoX3ZhbHVlLnN0YXJ0c1dpdGgoJy0nKSlcbiAgICAgICAgICAgIHNldFZhbHVlKF92YWx1ZS5zbGljZSgxKSk7XG4gICAgfSwgW25lZ2F0aXZlLCB2YWx1ZSwgX3ZhbHVlXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIGxldCB2YWwgPSB2YWx1ZTtcbiAgICAgICAgbGV0IGhhc0RlY2ltYWxQb2ludCA9IGZhbHNlO1xuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmICh2YWwgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbCA9IG5vcm1hbGl6ZU51bWJlcklucHV0KHZhbCkuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICAgICAgICAgICAgICBoYXNEZWNpbWFsUG9pbnQgPSAhIXZhbCAmJiB2YWwuZW5kc1dpdGgoJy4nKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzRGVjaW1hbFBvaW50KVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMCwgLTEpO1xuICAgICAgICAgICAgICAgIGlmICghbmVnYXRpdmUpXG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKC8tL2csICcnKTtcbiAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUgJiYgdmFsID09PSAnLScpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoJy0nKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNOYU4oK3ZhbCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCAhPT0gJ251bWJlcicgJiYgdHlwZW9mIHZhbCAhPT0gJ2JpZ2ludCcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICghbmVnYXRpdmUpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHZhbCA9IE1hdGguYWJzKHZhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnYmlnaW50Jykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHplcm8gPSBCaWdJbnQoMCk7XG4gICAgICAgICAgICAgICAgdmFsID0gdmFsIDwgemVybyA/IC12YWwgOiB2YWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsID09PSAnbnVtYmVyJykgJiYgKHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnYmlnaW50JykpIHtcbiAgICAgICAgICAgIGNvbnN0IFtpbnQsIGRlY2ltYWxdID0gKCcnICsgdmFsKS5zcGxpdCgnLicpO1xuICAgICAgICAgICAgaWYgKGRlY2ltYWwgIT0gbnVsbCAmJiBkZWNpbWFsLmxlbmd0aCA+IE51bWJlcihtYXhGcmFjdGlvbkRpZ2l0cykpIHtcbiAgICAgICAgICAgICAgICB2YWwgPSBpbnQgKyAnLicgKyBkZWNpbWFsLnNsaWNlKDAsIE51bWJlcihtYXhGcmFjdGlvbkRpZ2l0cykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgdmFsID09PSAnYmlnaW50Jykge1xuICAgICAgICAgICAgdmFsID0gY2FsY1ZhbHVlSW5SYW5nZSgnJyArIHZhbCwgbWluLCBtYXgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWwgPT09ICcnIHx8IHZhbCA9PSBudWxsKSB7XG4gICAgICAgICAgICBzZXRWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHN0clZhbCA9ICcnICsgdmFsO1xuICAgICAgICAgICAgY29uc3QgZGVjaW1hbHMgPSAoX2MgPSAoX2IgPSAoX2EgPSBzdHJWYWwubWF0Y2goL1xcLihcXGQrKSQvKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hWzFdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwO1xuICAgICAgICAgICAgY29uc3QgYm4gPSBCaWdOdW1iZXIoc3RyVmFsKTtcbiAgICAgICAgICAgIGxldCBub3JtYWxpemVkID0gYm4udG9GaXhlZChkZWNpbWFscyk7XG4gICAgICAgICAgICBpZiAobmVnYXRpdmUgJiYgc3RyVmFsLnRyaW0oKS5zdGFydHNXaXRoKCctJykgJiYgYm4uaXNaZXJvKCkpIHtcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5zdGFydHNXaXRoKCctJykgPyBub3JtYWxpemVkIDogYC0ke25vcm1hbGl6ZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFZhbHVlKGAke25vcm1hbGl6ZWR9JHtoYXNEZWNpbWFsUG9pbnQgPyAnLicgOiAnJ31gLnRyaW0oKSk7XG4gICAgICAgIH1cbiAgICB9LCBbdmFsdWUsIG1heEZyYWN0aW9uRGlnaXRzLCBtaW4sIG1heCwgbmVnYXRpdmVdKTtcbiAgICByZXR1cm4gX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3dyYXBwZXInLCBqb2luQ2xzKHdyYXBwZXJDbHMsIGludmFsaWQgJiYgY2xhc3NlcygnaW52YWxpZCcpLCBzdWNjZXNzICYmIGNsYXNzZXMoJ3N1Y2Nlc3MnKSwgZGlzYWJsZWQgJiYgY2xhc3NlcygnZGlzYWJsZWQnKSwgcmVhZE9ubHkgJiYgY2xhc3NlcygncmVhZG9ubHknKSwgX3ZhbHVlICYmIGNsYXNzZXMoJ2ZpbGxlZCcpKSksIGNoaWxkcmVuOiBbbGFiZWxcbiAgICAgICAgICAgICAgICA/IGxvYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgPyBfanN4KFNrZWxldG9uLCB7IHdpZHRoOiAnNzJweCcsIGhlaWdodDogJzE4cHgnLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2xhYmVsLWxvYWRpbmcnKSB9KVxuICAgICAgICAgICAgICAgICAgICA6IF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdsYWJlbCcsIGpvaW5DbHMocmVxdWlyZWQgJiYgY2xhc3NlcygnbGFiZWwtcmVxdWlyZWQnKSwgbGFiZWxDbHMpKSwgY2hpbGRyZW46IGxhYmVsIH0pXG4gICAgICAgICAgICAgICAgOiBudWxsLCBfanN4cyhcImRpdlwiLCB7IHJlZjogY29udGFpbmVyUmVmLCBjbGFzc05hbWU6IGNsYXNzZXModm9pZCAwLCBqb2luQ2xzKGNsYXNzTmFtZSwgaXNGb2N1cyAmJiBjbGFzc2VzKCdmb2N1cycpKSksIG9uQ2xpY2s6IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgKF9hID0gaW5wdXRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc01heFdpZHRoKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9FbmQoKTtcbiAgICAgICAgICAgICAgICB9LCBjaGlsZHJlbjogW3ByZWZpeCAmJiBfanN4KFwic3BhblwiLCB7IHJlZjogcHJlZml4UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ3ByZWZpeCcpLCBjaGlsZHJlbjogcHJlZml4IH0pLCBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdlbGVtZW50JywgKCFpc0ZvY3VzICYmIGlzTWF4V2lkdGgpID8gY2xhc3NlcygnZWxlbWVudC1tYXgnKSA6ICcnKSwgY2hpbGRyZW46IF9qc3goXCJpbnB1dFwiLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IHJlZjogaW5wdXRSZWYsIHZhbHVlOiBmb3JtYXR0ZWRWYWx1ZSwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCByZWFkT25seTogcmVhZE9ubHksIGRpc2FibGVkOiBkaXNhYmxlZCwgc3R5bGU6IHsgJy0taW5wdXQtd2lkdGgnOiBgJHtfd2lkdGh9cHhgIH0sIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIG9uU2VsZWN0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VyclBvcyA9IChfYSA9IGlucHV0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zZWxlY3Rpb25TdGFydDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJQb3MgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dENhcmV0UG9zaXRpb25SZWYuY3VycmVudCA9IGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBvbkZvY3VzOiBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNGb2N1cyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cyA9PT0gbnVsbCB8fCBvbkZvY3VzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZvY3VzKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG9uQmx1cjogZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzRm9jdXMoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB9KSkgfSksIGN1cnJlbmN5ICYmIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBjdXJyZW5jeVJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdjdXJyZW5jeScpLCBjaGlsZHJlbjogY3VycmVuY3kgfSksIGxvYWRpbmcgPyBfanN4KFNwaW5uZXIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdzdWZmaXgtbG9hZGluZycpLCBzdHJva2VXaWR0aDogJzQnIH0pIDogc3VmZml4ID8gX2pzeChcInNwYW5cIiwgeyByZWY6IHN1ZmZpeFJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdzdWZmaXgnKSwgY2hpbGRyZW46IHN1ZmZpeCB9KSA6IG51bGwsIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBmYWtlRWxlUmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2Zha2UnKSwgb25DbGljazogZSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpLCBjaGlsZHJlbjogbnVtZXJpY0Zvcm1hdHRlcignJyArIChfdmFsdWUgPT0gbnVsbCA/ICcnIDogX3ZhbHVlKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRob3VzYW5kU2VwYXJhdG9yOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93TmVnYXRpdmU6IG5lZ2F0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgfSldIH0pLCAobWVzc2FnZSB8fCBmb290bm90ZSkgJiYgX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2V4dHJhJyksIGNoaWxkcmVuOiBbbWVzc2FnZSAmJiBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdtZXNzYWdlJywgbWVzc2FnZUNscyksIGNoaWxkcmVuOiBtZXNzYWdlIH0pLCBmb290bm90ZSAmJiBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdmb290bm90ZScsIGZvb3Rub3RlQ2xzKSwgY2hpbGRyZW46IGZvb3Rub3RlIH0pXSB9KV0gfSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgbWVtbyhJbnB1dEFtb3VudCk7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
392
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJtZW1vIiwidXNlTWVtbyIsInVzZVN0YXRlIiwidXNlQ2FsbGJhY2siLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJ1c2VMYXlvdXRFZmZlY3QiLCJCaWdOdW1iZXIiLCJudW1lcmljRm9ybWF0dGVyIiwiU2tlbGV0b24iLCJTcGlubmVyIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJqb2luQ2xzIiwiTUlOX0lOUFVUX1dJRFRIIiwibm9ybWFsaXplTnVtYmVySW5wdXQiLCJ2YWwiLCJyZXBsYWNlIiwiY2FsY1ZhbHVlSW5SYW5nZSIsIm1pbiIsIm1heCIsImlzTmFOIiwiY2FsY1ZhbCIsImJuVmFsIiwibWluQm4iLCJsdCIsIm1heEJuIiwiZ3QiLCJJbnB1dEFtb3VudCIsInByb3BzIiwidmFsdWUiLCJfcHJvcHMkdHlwZSIsInR5cGUiLCJtYXhGcmFjdGlvbkRpZ2l0cyIsImNoaWxkcmVuIiwiX3Byb3BzJHBsYWNlaG9sZGVyIiwicGxhY2Vob2xkZXIiLCJfcHJvcHMkc2l6ZSIsInNpemUiLCJmb290bm90ZSIsImZvb3Rub3RlQ2xzIiwiY2xhc3NOYW1lIiwid3JhcHBlckNscyIsImxhYmVsQ2xzIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsIm1lc3NhZ2VDbHMiLCJwcmVmaXhFbGVDbHMiLCJzdWZmaXhFbGVDbHMiLCJpbnZhbGlkIiwibmVnYXRpdmUiLCJyZXF1aXJlZCIsImxvYWRpbmciLCJzdWNjZXNzIiwiZGlzYWJsZWQiLCJyZWFkT25seSIsImxhYmVsIiwicHJlZml4Iiwic3VmZml4IiwiY3VycmVuY3kiLCJtZXNzYWdlIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJvbkZvY3VzIiwicmVzdCIsImNsYXNzZXMiLCJjb25jYXQiLCJpbnB1dFJlZiIsImZha2VFbGVSZWYiLCJwcmVmaXhSZWYiLCJzdWZmaXhSZWYiLCJjdXJyZW5jeVJlZiIsImNvbnRhaW5lclJlZiIsImlucHV0Q2FyZXRQb3NpdGlvblJlZiIsImlnbm9yZVNlbGVjdFJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsIl92YWx1ZSIsInNldFZhbHVlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJfd2lkdGgiLCJzZXRXaWR0aCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNNYXhXaWR0aCIsInNldElzTWF4V2lkdGgiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImlzRm9jdXMiLCJzZXRJc0ZvY3VzIiwiZm9ybWF0dGVkVmFsdWUiLCJ0aG91c2FuZFNlcGFyYXRvciIsImFsbG93TmVnYXRpdmUiLCJ2YWx1ZVJlZiIsInNjcm9sbFRvRW5kIiwic3RpY2t5IiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiX2EiLCJpbnB1dCIsImN1cnJlbnQiLCJsZW4iLCJwb3NpdGlvbiIsInNjcm9sbExlZnQiLCJzaG91bGRUb0VuZCIsInN0YXJ0Iiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJzY3JvbGxXaWR0aCIsImZvY3VzIiwiY2FsY0NhcmV0UG9zIiwib2Zmc2V0IiwiY3VyclBvcyIsIl9iIiwiX2MiLCJfdmFsdWVSZWYkY3VycmVudCIsImZvcm1hdHRlZE5ld1ZhbCIsIm9yaWdpbk9mZnNldCIsImlzQWRkIiwiaWdub3JlT2xkUG9zIiwic2VsZWN0aW9uRW5kIiwib2xkUG9zVmFsIiwic2xpY2UiLCJNYXRoIiwic3BsaXQiLCJqb2luIiwicG9zVmFsIiwicmVkdWNlIiwiYWNjIiwiY2hhciIsImluZCIsInB1c2giLCJoYW5kbGVDaGFuZ2UiLCJfdmFsdWVSZWYkY3VycmVudDIiLCJ0YXJnZXQiLCJoYXNEZWNpbWFsUG9pbnQiLCJlbmRzV2l0aCIsImluY2x1ZGVzIiwiaXNTdGFuZGFsb25lTWludXMiLCJfdmFsJHNwbGl0IiwiX3ZhbCRzcGxpdDIiLCJpbnQiLCJkZWNpbWFsIiwibWF4RGVjaW1hbHMiLCJOdW1iZXIiLCJ0cnVuY2F0ZWREZWNpbWFscyIsIl9mb3JtYXR0ZWRWYWx1ZSRzcGxpdCIsIl9mb3JtYXR0ZWRWYWx1ZSRzcGxpdDIiLCJvbGRJbnQiLCJkZWNpbWFscyIsIm1hdGNoIiwiYm4iLCJub3JtYWxpemVkIiwidG9GaXhlZCIsInRyaW0iLCJzdGFydHNXaXRoIiwiaXNaZXJvIiwic3RvcFByb3BhZ2F0aW9uIiwicHJldmVudERlZmF1bHQiLCJoYW5kbGVTZWxlY3QiLCJfZCIsIl9lIiwiX2YiLCJfZyIsIl9oIiwiX2oiLCJfayIsImNvbnRhaW5lcldpZHRoIiwib2Zmc2V0V2lkdGgiLCJwcmVmaXhXaWR0aCIsInN1ZmZpeFdpZHRoIiwiY3VycmVuY3lXaWR0aCIsImZha2VXaWR0aCIsImdhcFdpZHRoIiwibWF4V2lkdGgiLCJpc01heCIsImFicyIsInplcm8iLCJCaWdJbnQiLCJfc3BsaXQiLCJfc3BsaXQyIiwic3RyVmFsIiwid2lkdGgiLCJoZWlnaHQiLCJyZWYiLCJvbkNsaWNrIiwiSFRNTElucHV0RWxlbWVudCIsImFzc2lnbiIsInN0eWxlIiwib25TZWxlY3QiLCJzdHJva2VXaWR0aCJdLCJtYXBwaW5ncyI6IjtBQUFBLElBQUlBLE1BQU0sR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxNQUFNLElBQUssVUFBVUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7RUFDbEQsSUFBSUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUNWLEtBQUssSUFBSUMsQ0FBQyxJQUFJSCxDQUFDLEVBQUUsSUFBSUksTUFBTSxDQUFDQyxTQUFTLENBQUNDLGNBQWMs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NEwsR0FBRyxFQUFFckgsVUFBVTtRQUNmM0IsU0FBUyxFQUFFd0IsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUMxQnlILE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFFMU0sQ0FBQztVQUFBLE9BQUlBLENBQUMsQ0FBQzhLLGVBQWUsQ0FBQSxDQUFFO1FBQUE7UUFBQTVILFFBQUEsRUFFaEMwRDtNQUFjLENBQUEsQ0FDVjtJQUFBLENBQUEsQ0FDSCxFQUVKLENBQUNoQyxPQUFPLElBQUlyQixRQUFRLEtBQUt4QyxLQUFBLENBQUEsS0FBQSxFQUFBO01BQUswQyxTQUFTLEVBQUV3QixPQUFPLENBQUMsT0FBTyxDQUFDO01BQUEvQixRQUFBLEVBQUEsQ0FDdEQwQixPQUFPLElBQUkvRCxJQUFBLENBQUEsS0FBQSxFQUFBO1FBQUs0QyxTQUFTLEVBQUV3QixPQUFPLENBQUMsU0FBUyxFQUFFbkIsVUFBVSxDQUFDO1FBQUFaLFFBQUEsRUFBRzBCO01BQU8sQ0FBQSxDQUFPLEVBQzFFckIsUUFBUSxJQUFJMUMsSUFBQSxDQUFBLEtBQUEsRUFBQTtRQUFLNEMsU0FBUyxFQUFFd0IsT0FBTyxDQUFDLFVBQVUsRUFBRXpCLFdBQVcsQ0FBQztRQUFBTixRQUFBLEVBQUdLO01BQVEsQ0FBQSxDQUFPO0lBQUEsQ0FBQSxDQUMzRTtFQUFBLENBQUEsQ0FFSjtBQUNSLENBQUM7QUFFRCw0QkFBZXZDLElBQUksQ0FBQzRCLFdBQVcsQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZU1lbW8sIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IG51bWVyaWNGb3JtYXR0ZXIgfSBmcm9tICdyZWFjdC1udW1iZXItZm9ybWF0JztcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSAncHJpbWVyZWFjdC9za2VsZXRvbic7XG5pbXBvcnQgU3Bpbm5lciBmcm9tICcuLi9TcGlubmVyJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcywgam9pbkNscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuY29uc3QgTUlOX0lOUFVUX1dJRFRIID0gMzM7XG5jb25zdCBub3JtYWxpemVOdW1iZXJJbnB1dCA9ICh2YWwpID0+IHZhbFxuICAgIC5yZXBsYWNlKC9bXFx1MzAwMlxcdWZmMGVcXHVmZjYxXS9nLCAnLicpXG4gICAgLnJlcGxhY2UoL1tcXHVGRjBDXS9nLCAnLCcpO1xuY29uc3QgY2FsY1ZhbHVlSW5SYW5nZSA9ICh2YWwsIG1pbiwgbWF4KSA9PiB7XG4gICAgaWYgKHZhbCA9PT0gJycgfHwgdmFsID09PSAnLScgfHwgaXNOYU4oK3ZhbCkpXG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgbGV0IGNhbGNWYWwgPSB2YWw7XG4gICAgY29uc3QgYm5WYWwgPSBCaWdOdW1iZXIodmFsKTtcbiAgICBpZiAodHlwZW9mIG1pbiA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1pbiA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgY29uc3QgbWluQm4gPSBCaWdOdW1iZXIobWluKTtcbiAgICAgICAgaWYgKGJuVmFsLmx0KG1pbkJuKSkge1xuICAgICAgICAgICAgY2FsY1ZhbCA9ICcnICsgbWluO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgbWF4ID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWF4ID09PSAnYmlnaW50Jykge1xuICAgICAgICBjb25zdCBtYXhCbiA9IEJpZ051bWJlcihtYXgpO1xuICAgICAgICBpZiAoYm5WYWwuZ3QobWF4Qm4pKSB7XG4gICAgICAgICAgICBjYWxjVmFsID0gJycgKyBtYXg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNhbGNWYWw7XG59O1xuZXhwb3J0IGNvbnN0IElucHV0QW1vdW50ID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgdmFsdWUsIHR5cGUgPSAncHJpbWFyeScsIG1heEZyYWN0aW9uRGlnaXRzLCBjaGlsZHJlbiwgcGxhY2Vob2xkZXIgPSAnMCcsIG1pbiwgbWF4LCBcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgc2l6ZSA9ICdsYXJnZScsIGZvb3Rub3RlLCBmb290bm90ZUNscywgY2xhc3NOYW1lLCB3cmFwcGVyQ2xzLCBsYWJlbENscywgcHJlZml4Q2xzID0gJ2lucHV0LWFtb3VudCcsIG1lc3NhZ2VDbHMsIHByZWZpeEVsZUNscywgc3VmZml4RWxlQ2xzLCBpbnZhbGlkLCBuZWdhdGl2ZSwgcmVxdWlyZWQsIGxvYWRpbmcsIHN1Y2Nlc3MsIGRpc2FibGVkLCByZWFkT25seSwgbGFiZWwsIHByZWZpeCwgc3VmZml4LCBjdXJyZW5jeSwgbWVzc2FnZSwgb25DaGFuZ2UsIG9uQmx1ciwgb25Gb2N1cyB9ID0gcHJvcHMsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcInZhbHVlXCIsIFwidHlwZVwiLCBcIm1heEZyYWN0aW9uRGlnaXRzXCIsIFwiY2hpbGRyZW5cIiwgXCJwbGFjZWhvbGRlclwiLCBcIm1pblwiLCBcIm1heFwiLCBcInNpemVcIiwgXCJmb290bm90ZVwiLCBcImZvb3Rub3RlQ2xzXCIsIFwiY2xhc3NOYW1lXCIsIFwid3JhcHBlckNsc1wiLCBcImxhYmVsQ2xzXCIsIFwicHJlZml4Q2xzXCIsIFwibWVzc2FnZUNsc1wiLCBcInByZWZpeEVsZUNsc1wiLCBcInN1ZmZpeEVsZUNsc1wiLCBcImludmFsaWRcIiwgXCJuZWdhdGl2ZVwiLCBcInJlcXVpcmVkXCIsIFwibG9hZGluZ1wiLCBcInN1Y2Nlc3NcIiwgXCJkaXNhYmxlZFwiLCBcInJlYWRPbmx5XCIsIFwibGFiZWxcIiwgXCJwcmVmaXhcIiwgXCJzdWZmaXhcIiwgXCJjdXJyZW5jeVwiLCBcIm1lc3NhZ2VcIiwgXCJvbkNoYW5nZVwiLCBcIm9uQmx1clwiLCBcIm9uRm9jdXNcIl0pO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKGAke3ByZWZpeENsc30tJHt0eXBlfWApO1xuICAgIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGZha2VFbGVSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgcHJlZml4UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHN1ZmZpeFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjdXJyZW5jeVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgaW5wdXRDYXJldFBvc2l0aW9uUmVmID0gdXNlUmVmKDApO1xuICAgIGNvbnN0IGlnbm9yZVNlbGVjdFJlZiA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgW192YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW193aWR0aCwgc2V0V2lkdGhdID0gdXNlU3RhdGUoTUlOX0lOUFVUX1dJRFRIKTtcbiAgICBjb25zdCBbaXNNYXhXaWR0aCwgc2V0SXNNYXhXaWR0aF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2lzRm9jdXMsIHNldElzRm9jdXNdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIHJldHVybiBudW1lcmljRm9ybWF0dGVyKCcnICsgKF92YWx1ZSA9PSBudWxsID8gJycgOiBfdmFsdWUpLCB7XG4gICAgICAgICAgICB0aG91c2FuZFNlcGFyYXRvcjogdHJ1ZSxcbiAgICAgICAgICAgIGFsbG93TmVnYXRpdmU6IG5lZ2F0aXZlLFxuICAgICAgICB9KTtcbiAgICB9LCBbX3ZhbHVlLCBuZWdhdGl2ZV0pO1xuICAgIGNvbnN0IHZhbHVlUmVmID0gdXNlUmVmKHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIF92YWx1ZSxcbiAgICAgICAgZm9ybWF0dGVkVmFsdWUsXG4gICAgICAgIG1pbixcbiAgICAgICAgbWF4LFxuICAgICAgICBuZWdhdGl2ZSxcbiAgICAgICAgbWF4RnJhY3Rpb25EaWdpdHMsXG4gICAgfSk7XG4gICAgY29uc3Qgc2Nyb2xsVG9FbmQgPSB1c2VDYWxsYmFjaygoc3RpY2t5ID0gZmFsc2UpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBpbnB1dCA9IGlucHV0UmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmICghaW5wdXQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGxlbiA9IChfYSA9IGlucHV0LnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoO1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IGlucHV0LnNjcm9sbExlZnQ7XG4gICAgICAgIGNvbnN0IHNob3VsZFRvRW5kID0gIXN0aWNreTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBzaG91bGRUb0VuZCA/IGxlbiA6IGlucHV0Q2FyZXRQb3NpdGlvblJlZi5jdXJyZW50O1xuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgc3RhcnQpO1xuICAgICAgICBpbnB1dC5zY3JvbGxMZWZ0ID0gc2hvdWxkVG9FbmQgPyBpbnB1dC5zY3JvbGxXaWR0aCA6IHBvc2l0aW9uO1xuICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCBjYWxjQ2FyZXRQb3MgPSB1c2VDYWxsYmFjaygodmFsLCBvZmZzZXQgPSAwLCBjdXJyUG9zKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICBpZiAoaW5wdXRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgY29uc3QgeyBfdmFsdWUsIG5lZ2F0aXZlLCBmb3JtYXR0ZWRWYWx1ZSB9ID0gdmFsdWVSZWYuY3VycmVudDtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZE5ld1ZhbCA9IG51bWVyaWNGb3JtYXR0ZXIodmFsLCB7XG4gICAgICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICAgICAgYWxsb3dOZWdhdGl2ZTogbmVnYXRpdmUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbk9mZnNldCA9IHZhbC5sZW5ndGggLSAoKF9hID0gX3ZhbHVlID09PSBudWxsIHx8IF92YWx1ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3ZhbHVlLmxlbmd0aCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogMCk7XG4gICAgICAgICAgICBjb25zdCBpc0FkZCA9IG9yaWdpbk9mZnNldCA+IDA7XG4gICAgICAgICAgICBjb25zdCBpZ25vcmVPbGRQb3MgPSBpc0FkZCA/IHZhbC5sZW5ndGggLSAoKF9iID0gX3ZhbHVlID09PSBudWxsIHx8IF92YWx1ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3ZhbHVlLmxlbmd0aCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogMCkgPiAxIDogZmFsc2U7XG4gICAgICAgICAgICBsZXQgcG9zaXRpb24gPSAoX2MgPSBjdXJyUG9zICE9PSBudWxsICYmIGN1cnJQb3MgIT09IHZvaWQgMCA/IGN1cnJQb3MgOiBpbnB1dFJlZi5jdXJyZW50LnNlbGVjdGlvbkVuZCkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogMDtcbiAgICAgICAgICAgIGlmICghaWdub3JlT2xkUG9zKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2xkUG9zVmFsID0gZm9ybWF0dGVkVmFsdWUuc2xpY2UoMCwgTWF0aC5tYXgocG9zaXRpb24sIDApKTtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IG9sZFBvc1ZhbC5zcGxpdCgnLCcpLmpvaW4oJycpLmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBvc1ZhbCA9IHZhbC5zbGljZSgwLCAocG9zaXRpb24gKyBvcmlnaW5PZmZzZXQpKTtcbiAgICAgICAgICAgIGZvcm1hdHRlZE5ld1ZhbC5zcGxpdCgnJykucmVkdWNlKChhY2MsIGNoYXIsIGluZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjaGFyID09PSAnLCcpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBhY2MucHVzaChjaGFyKTtcbiAgICAgICAgICAgICAgICBpZiAoYWNjLmpvaW4oJycpID09PSBwb3NWYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBpbmQgKyAxO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQgPSBwb3NpdGlvbiArIG9mZnNldDtcbiAgICAgICAgfVxuICAgIH0sIFtdKTtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjaygoZSkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgaWYgKGRpc2FibGVkIHx8IHJlYWRPbmx5KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB7IHZhbHVlLCBfdmFsdWUsIGZvcm1hdHRlZFZhbHVlLCBtaW4sIG1heCwgbmVnYXRpdmUsIG1heEZyYWN0aW9uRGlnaXRzIH0gPSB2YWx1ZVJlZi5jdXJyZW50O1xuICAgICAgICBsZXQgdmFsID0gZS50YXJnZXQudmFsdWU7XG4gICAgICAgIGlmICh2YWwgIT0gbnVsbClcbiAgICAgICAgICAgIHZhbCA9IG5vcm1hbGl6ZU51bWJlcklucHV0KHZhbCkuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICAgICAgY29uc3QgaGFzRGVjaW1hbFBvaW50ID0gISF2YWwgJiYgdmFsLmVuZHNXaXRoKCcuJyk7XG4gICAgICAgIGlmIChoYXNEZWNpbWFsUG9pbnQpXG4gICAgICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMCwgLTEpO1xuICAgICAgICBpZiAoIW5lZ2F0aXZlICYmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB2b2lkIDAgPyB2b2lkIDAgOiB2YWwuaW5jbHVkZXMoJy0nKSkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGlzU3RhbmRhbG9uZU1pbnVzID0gbmVnYXRpdmUgJiYgdmFsID09PSAnLSc7XG4gICAgICAgIGlmICghaXNTdGFuZGFsb25lTWludXMgJiYgaXNOYU4oK3ZhbCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh2YWwgPT09IF92YWx1ZSAmJiAhaGFzRGVjaW1hbFBvaW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAodHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICAgICBjb25zdCBbaW50LCBkZWNpbWFsXSA9IHZhbC5zcGxpdCgnLicpO1xuICAgICAgICAgICAgY29uc3QgbWF4RGVjaW1hbHMgPSBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpO1xuICAgICAgICAgICAgaWYgKGRlY2ltYWwgIT0gbnVsbCAmJiBkZWNpbWFsLmxlbmd0aCA+IG1heERlY2ltYWxzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHJ1bmNhdGVkRGVjaW1hbHMgPSBkZWNpbWFsLnNsaWNlKDAsIG1heERlY2ltYWxzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBbb2xkSW50LF0gPSBmb3JtYXR0ZWRWYWx1ZS5zcGxpdCgnLicpO1xuICAgICAgICAgICAgICAgIGlmIChvbGRJbnQuc3BsaXQoJywnKS5qb2luKCcnKSA9PSBpbnQpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB2YWwgPSBgJHtpbnR9LiR7dHJ1bmNhdGVkRGVjaW1hbHN9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoKHR5cGVvZiBtaW4gPT09ICdudW1iZXInIHx8IHR5cGVvZiBtaW4gPT09ICdiaWdpbnQnKSB8fCAodHlwZW9mIG1heCA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1heCA9PT0gJ2JpZ2ludCcpKSB7XG4gICAgICAgICAgICB2YWwgPSBjYWxjVmFsdWVJblJhbmdlKHZhbCwgbWluLCBtYXgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWwgIT09ICcnKSB7XG4gICAgICAgICAgICBpZiAoaXNTdGFuZGFsb25lTWludXMpIHtcbiAgICAgICAgICAgICAgICB2YWwgPSAnLSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZWNpbWFscyA9IChfYyA9IChfYiA9IChfYSA9IHZhbC5tYXRjaCgvXFwuKFxcZCspJC8pKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMV0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5sZW5ndGgpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgYm4gPSBCaWdOdW1iZXIodmFsKTtcbiAgICAgICAgICAgICAgICBsZXQgbm9ybWFsaXplZCA9IGJuLnRvRml4ZWQoZGVjaW1hbHMpO1xuICAgICAgICAgICAgICAgIGlmIChuZWdhdGl2ZSAmJiB2YWwudHJpbSgpLnN0YXJ0c1dpdGgoJy0nKSAmJiBibi5pc1plcm8oKSkge1xuICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5zdGFydHNXaXRoKCctJykgPyBub3JtYWxpemVkIDogYC0ke25vcm1hbGl6ZWR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFsID0gYCR7bm9ybWFsaXplZH0ke2hhc0RlY2ltYWxQb2ludCA/ICcuJyA6ICcnfWAudHJpbSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBzZXRWYWx1ZSh2YWwgPT09ICcnID8gbnVsbCA6IHZhbCk7XG4gICAgICAgICAgICBjYWxjQ2FyZXRQb3ModmFsLCBoYXNEZWNpbWFsUG9pbnQgPyAyIDogMCwgTWF0aC5tYXgoaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQsIDApKTtcbiAgICAgICAgICAgIGlnbm9yZVNlbGVjdFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKGUsIHZhbCk7XG4gICAgfSwgW29uQ2hhbmdlLCBkaXNhYmxlZCwgcmVhZE9ubHldKTtcbiAgICBjb25zdCBoYW5kbGVTZWxlY3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKGlnbm9yZVNlbGVjdFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBpZ25vcmVTZWxlY3RSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGN1cnJQb3MgPSAoX2EgPSBpbnB1dFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc2VsZWN0aW9uRW5kO1xuICAgICAgICBpZiAodHlwZW9mIGN1cnJQb3MgPT09ICdudW1iZXInKVxuICAgICAgICAgICAgaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQgPSBjdXJyUG9zO1xuICAgIH0sIFtdKTtcbiAgICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oLCBfaiwgX2s7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gKF9iID0gKF9hID0gY29udGFpbmVyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogTUlOX0lOUFVUX1dJRFRIO1xuICAgICAgICBjb25zdCBwcmVmaXhXaWR0aCA9IChfZCA9IChfYyA9IHByZWZpeFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Mub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IDA7XG4gICAgICAgIGNvbnN0IHN1ZmZpeFdpZHRoID0gKF9mID0gKF9lID0gc3VmZml4UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2YgIT09IHZvaWQgMCA/IF9mIDogMDtcbiAgICAgICAgY29uc3QgY3VycmVuY3lXaWR0aCA9IChfaCA9IChfZyA9IGN1cnJlbmN5UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZy5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2ggIT09IHZvaWQgMCA/IF9oIDogMDtcbiAgICAgICAgY29uc3QgZmFrZVdpZHRoID0gKF9rID0gKF9qID0gZmFrZUVsZVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfaiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2oub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9rICE9PSB2b2lkIDAgPyBfayA6IDA7XG4gICAgICAgIGNvbnN0IGdhcFdpZHRoID0gcHJlZml4V2lkdGggJiYgc3VmZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aFxuICAgICAgICAgICAgPyAyNFxuICAgICAgICAgICAgOiAocHJlZml4V2lkdGggJiYgc3VmZml4V2lkdGgpIHx8IChwcmVmaXhXaWR0aCAmJiBjdXJyZW5jeVdpZHRoKSB8fCAoc3VmZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aClcbiAgICAgICAgICAgICAgICA/IDE2XG4gICAgICAgICAgICAgICAgOiBwcmVmaXhXaWR0aCB8fCBzdWZmaXhXaWR0aCB8fCBjdXJyZW5jeVdpZHRoXG4gICAgICAgICAgICAgICAgICAgID8gOFxuICAgICAgICAgICAgICAgICAgICA6IDA7XG4gICAgICAgIGNvbnN0IG1heFdpZHRoID0gY29udGFpbmVyV2lkdGggLSBwcmVmaXhXaWR0aCAtIHN1ZmZpeFdpZHRoIC0gY3VycmVuY3lXaWR0aCAtIGdhcFdpZHRoO1xuICAgICAgICBjb25zdCBpc01heCA9IGZha2VXaWR0aCA+PSBtYXhXaWR0aDtcbiAgICAgICAgc2V0V2lkdGgoTWF0aC5taW4obWF4V2lkdGgsIE1hdGgubWF4KGZha2VXaWR0aCwgTUlOX0lOUFVUX1dJRFRIKSkpO1xuICAgICAgICBzZXRJc01heFdpZHRoKGlzTWF4KTtcbiAgICAgICAgaWYgKGlzRm9jdXMpXG4gICAgICAgICAgICBzY3JvbGxUb0VuZCh0cnVlKTtcbiAgICB9LCBbX3ZhbHVlLCBwcmVmaXgsIHN1ZmZpeCwgY3VycmVuY3ksIGlzRm9jdXNdKTtcbiAgICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgbGV0IHZhbCA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgPyBfdmFsdWUgOiB2YWx1ZTtcbiAgICAgICAgbGV0IGhhc0RlY2ltYWxQb2ludCA9IGZhbHNlO1xuICAgICAgICBsZXQgaXNTdGFuZGFsb25lTWludXMgPSBmYWxzZTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAodmFsID09PSAnJykge1xuICAgICAgICAgICAgICAgIHZhbCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWwgPSBub3JtYWxpemVOdW1iZXJJbnB1dCh2YWwpLnNwbGl0KCcsJykuam9pbignJyk7XG4gICAgICAgICAgICAgICAgaGFzRGVjaW1hbFBvaW50ID0gISF2YWwgJiYgdmFsLmVuZHNXaXRoKCcuJyk7XG4gICAgICAgICAgICAgICAgaWYgKGhhc0RlY2ltYWxQb2ludClcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gdmFsLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgICAgICAgICBpZiAoIW5lZ2F0aXZlKVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwucmVwbGFjZSgvLS9nLCAnJyk7XG4gICAgICAgICAgICAgICAgaXNTdGFuZGFsb25lTWludXMgPSAhIW5lZ2F0aXZlICYmIHZhbCA9PT0gJy0nO1xuICAgICAgICAgICAgICAgIGlmICghaXNTdGFuZGFsb25lTWludXMgJiYgaXNOYU4oK3ZhbCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCAhPT0gJ251bWJlcicgJiYgdHlwZW9mIHZhbCAhPT0gJ2JpZ2ludCcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICghbmVnYXRpdmUpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHZhbCA9IE1hdGguYWJzKHZhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnYmlnaW50Jykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHplcm8gPSBCaWdJbnQoMCk7XG4gICAgICAgICAgICAgICAgdmFsID0gdmFsIDwgemVybyA/IC12YWwgOiB2YWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsID09PSAnbnVtYmVyJykgJiZcbiAgICAgICAgICAgICh0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdudW1iZXInIHx8IHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ2JpZ2ludCcpKSB7XG4gICAgICAgICAgICBjb25zdCBbaW50LCBkZWNpbWFsXSA9ICgnJyArIHZhbCkuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIGNvbnN0IG1heERlY2ltYWxzID0gTnVtYmVyKG1heEZyYWN0aW9uRGlnaXRzKTtcbiAgICAgICAgICAgIGlmIChkZWNpbWFsICE9IG51bGwgJiYgZGVjaW1hbC5sZW5ndGggPiBtYXhEZWNpbWFscykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRydW5jYXRlZERlY2ltYWxzID0gZGVjaW1hbC5zbGljZSgwLCBtYXhEZWNpbWFscyk7XG4gICAgICAgICAgICAgICAgdmFsID0gYCR7aW50fS4ke3RydW5jYXRlZERlY2ltYWxzfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWwgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICAgICB2YWwgPSBjYWxjVmFsdWVJblJhbmdlKCcnICsgdmFsLCBtaW4sIG1heCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbCA9PT0gJycgfHwgdmFsID09IG51bGwpIHtcbiAgICAgICAgICAgIHNldFZhbHVlKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzU3RhbmRhbG9uZU1pbnVzKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gJy0nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RyVmFsID0gJycgKyB2YWw7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVjaW1hbHMgPSAoX2MgPSAoX2IgPSAoX2EgPSBzdHJWYWwubWF0Y2goL1xcLihcXGQrKSQvKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hWzFdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJuID0gQmlnTnVtYmVyKHN0clZhbCk7XG4gICAgICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZWQgPSBibi50b0ZpeGVkKGRlY2ltYWxzKTtcbiAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUgJiYgc3RyVmFsLnRyaW0oKS5zdGFydHNXaXRoKCctJykgJiYgYm4uaXNaZXJvKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnLScpID8gbm9ybWFsaXplZCA6IGAtJHtub3JtYWxpemVkfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhbCA9IGAke25vcm1hbGl6ZWR9JHtoYXNEZWNpbWFsUG9pbnQgPyAnLicgOiAnJ31gLnRyaW0oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFZhbHVlKHZhbCk7XG4gICAgICAgIH1cbiAgICAgICAgY2FsY0NhcmV0UG9zKHZhbCAhPT0gbnVsbCAmJiB2YWwgIT09IHZvaWQgMCA/IHZhbCA6ICcnLCBoYXNEZWNpbWFsUG9pbnQgPyAyIDogMCwgTWF0aC5tYXgoaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQsIDApKTtcbiAgICAgICAgaWdub3JlU2VsZWN0UmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgIH0sIFt2YWx1ZSwgbWF4RnJhY3Rpb25EaWdpdHMsIG1pbiwgbWF4LCBuZWdhdGl2ZV0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhbHVlUmVmLmN1cnJlbnQgPSB7XG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIF92YWx1ZSxcbiAgICAgICAgICAgIGZvcm1hdHRlZFZhbHVlLFxuICAgICAgICAgICAgbWluLFxuICAgICAgICAgICAgbWF4LFxuICAgICAgICAgICAgbmVnYXRpdmUsXG4gICAgICAgICAgICBtYXhGcmFjdGlvbkRpZ2l0c1xuICAgICAgICB9O1xuICAgIH0sIFtfdmFsdWUsIHZhbHVlLCBmb3JtYXR0ZWRWYWx1ZSwgbWluLCBtYXgsIG5lZ2F0aXZlLCBtYXhGcmFjdGlvbkRpZ2l0c10pO1xuICAgIHJldHVybiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygnd3JhcHBlcicsIGpvaW5DbHMod3JhcHBlckNscywgY2xhc3NlcyhzaXplKSwgaW52YWxpZCAmJiBjbGFzc2VzKCdpbnZhbGlkJyksIHN1Y2Nlc3MgJiYgY2xhc3Nlcygnc3VjY2VzcycpLCBkaXNhYmxlZCAmJiBjbGFzc2VzKCdkaXNhYmxlZCcpLCByZWFkT25seSAmJiBjbGFzc2VzKCdyZWFkb25seScpLCBfdmFsdWUgJiYgY2xhc3NlcygnZmlsbGVkJykpKSwgY2hpbGRyZW46IFtsYWJlbFxuICAgICAgICAgICAgICAgID8gbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICA/IF9qc3goU2tlbGV0b24sIHsgd2lkdGg6ICc3MnB4JywgaGVpZ2h0OiAnMThweCcsIGNsYXNzTmFtZTogY2xhc3NlcygnbGFiZWwtbG9hZGluZycpIH0pXG4gICAgICAgICAgICAgICAgICAgIDogX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2xhYmVsJywgam9pbkNscyhyZXF1aXJlZCAmJiBjbGFzc2VzKCdsYWJlbC1yZXF1aXJlZCcpLCBsYWJlbENscykpLCBjaGlsZHJlbjogbGFiZWwgfSlcbiAgICAgICAgICAgICAgICA6IG51bGwsIF9qc3hzKFwiZGl2XCIsIHsgcmVmOiBjb250YWluZXJSZWYsIGNsYXNzTmFtZTogY2xhc3Nlcyh2b2lkIDAsIGpvaW5DbHMoY2xhc3NOYW1lLCBpc0ZvY3VzICYmIGNsYXNzZXMoJ2ZvY3VzJykpKSwgb25DbGljazogKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAoX2EgPSBpbnB1dFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWF4V2lkdGgpXG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb0VuZCgpO1xuICAgICAgICAgICAgICAgIH0sIGNoaWxkcmVuOiBbcHJlZml4ICYmIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBwcmVmaXhSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygncHJlZml4JywgcHJlZml4RWxlQ2xzKSwgY2hpbGRyZW46IHByZWZpeCB9KSwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZWxlbWVudCcsICghaXNGb2N1cyAmJiBpc01heFdpZHRoKSA/IGNsYXNzZXMoJ2VsZW1lbnQtbWF4JykgOiAnJyksIGNoaWxkcmVuOiBfanN4KFwiaW5wdXRcIiwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwgeyByZWY6IGlucHV0UmVmLCB2YWx1ZTogZm9ybWF0dGVkVmFsdWUsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgcmVhZE9ubHk6IHJlYWRPbmx5LCBkaXNhYmxlZDogZGlzYWJsZWQsIHN0eWxlOiB7ICctLWlucHV0LXdpZHRoJzogYCR7X3dpZHRofXB4YCB9LCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLCBvblNlbGVjdDogaGFuZGxlU2VsZWN0LCBvbkZvY3VzOiBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNGb2N1cyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cyA9PT0gbnVsbCB8fCBvbkZvY3VzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZvY3VzKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG9uQmx1cjogZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzRm9jdXMoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB9KSkgfSksIGN1cnJlbmN5ICYmIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBjdXJyZW5jeVJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdjdXJyZW5jeScpLCBjaGlsZHJlbjogY3VycmVuY3kgfSksIGxvYWRpbmcgPyBfanN4KFNwaW5uZXIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdzdWZmaXgtbG9hZGluZycpLCBzdHJva2VXaWR0aDogJzQnIH0pIDogc3VmZml4ID8gX2pzeChcInNwYW5cIiwgeyByZWY6IHN1ZmZpeFJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdzdWZmaXgnLCBzdWZmaXhFbGVDbHMpLCBjaGlsZHJlbjogc3VmZml4IH0pIDogbnVsbCwgX2pzeChcInNwYW5cIiwgeyByZWY6IGZha2VFbGVSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygnZmFrZScpLCBvbkNsaWNrOiBlID0+IGUuc3RvcFByb3BhZ2F0aW9uKCksIGNoaWxkcmVuOiBmb3JtYXR0ZWRWYWx1ZSB9KV0gfSksIChtZXNzYWdlIHx8IGZvb3Rub3RlKSAmJiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZXh0cmEnKSwgY2hpbGRyZW46IFttZXNzYWdlICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ21lc3NhZ2UnLCBtZXNzYWdlQ2xzKSwgY2hpbGRyZW46IG1lc3NhZ2UgfSksIGZvb3Rub3RlICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2Zvb3Rub3RlJywgZm9vdG5vdGVDbHMpLCBjaGlsZHJlbjogZm9vdG5vdGUgfSldIH0pXSB9KTtcbn07XG5leHBvcnQgZGVmYXVsdCBtZW1vKElucHV0QW1vdW50KTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -12,6 +12,8 @@ export interface InputAmountBaseProps {
|
|
|
12
12
|
wrapperCls?: string;
|
|
13
13
|
labelCls?: string;
|
|
14
14
|
messageCls?: string;
|
|
15
|
+
prefixEleCls?: string;
|
|
16
|
+
suffixEleCls?: string;
|
|
15
17
|
invalid?: boolean;
|
|
16
18
|
negative?: boolean;
|
|
17
19
|
required?: boolean;
|
|
@@ -25,7 +27,7 @@ export interface InputAmountBaseProps {
|
|
|
25
27
|
suffix?: ReactNode;
|
|
26
28
|
message?: ReactNode;
|
|
27
29
|
onClick?: (e: MouseEvent<HTMLInputElement>) => void;
|
|
28
|
-
onChange?: (e: ChangeEvent<HTMLInputElement
|
|
30
|
+
onChange?: (e: ChangeEvent<HTMLInputElement>, value: string) => void;
|
|
29
31
|
onKeyDown?: (e: KeyboardEvent<HTMLInputElement>) => void;
|
|
30
32
|
onKeyUp?: (e: KeyboardEvent<HTMLInputElement>) => void;
|
|
31
33
|
onFocus?: (e: FocusEvent<HTMLInputElement>) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.om-react-ui-input-amount-normal-wrapper{display:inline-flex;flex-direction:column;width:100%}.om-react-ui-input-amount-normal{display:inline-flex;gap:8px;align-items:center;justify-content:start;width:100%;height:56px;padding:12px 16px;
|
|
1
|
+
.om-react-ui-input-amount-normal-wrapper{display:inline-flex;flex-direction:column;width:100%}.om-react-ui-input-amount-normal{display:inline-flex;gap:8px;align-items:center;justify-content:start;width:100%;height:56px;max-height:56px;padding:12px 16px;background-color:#f8f8f8;border:1px solid #d1d2d2;border-radius:12px;cursor:text}.om-react-ui-input-amount-normal:hover{border-color:#073387}.om-react-ui-input-amount-normal-focus{border-color:#073387;border-width:2px}.om-react-ui-input-amount-normal-element{width:100%}.om-react-ui-input-amount-normal-element input{width:100%;height:52px;padding:0;color:#131313;font-weight:400;font-size:16px;font-family:inherit;font-style:normal;line-height:22px;background-color:inherit;border:none;border-radius:0;outline:none;transition:none}.om-react-ui-input-amount-normal-element input::placeholder{color:#9fa3a3;font-weight:400}.om-react-ui-input-amount-normal-fake{position:absolute;top:0;left:-9999px;z-index:-1;display:inline-block;white-space:pre;visibility:hidden;opacity:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none;inset-block-start:0;inset-inline-start:0}.om-react-ui-input-amount-normal-label{display:inline-block;margin-bottom:8px;font-weight:600;font-size:16px;font-style:normal;line-height:18px;word-wrap:break-word;word-break:break-all}.om-react-ui-input-amount-normal-label-required:after{margin-left:4px;color:#ae0000;font-size:16px;font-style:normal;line-height:120%;content:"*"}.om-react-ui-input-amount-normal-label-loading{margin-bottom:8px}.om-react-ui-input-amount-normal-currency,.om-react-ui-input-amount-normal-prefix,.om-react-ui-input-amount-normal-suffix{display:inline-flex;flex-grow:0;flex-shrink:0;align-items:center}.om-react-ui-input-amount-normal-suffix{margin-left:auto}.om-react-ui-input-amount-normal-suffix-loading{display:inline-block;width:16px;height:16px;margin:0 8px 0 auto}.om-react-ui-input-amount-normal-suffix-loading svg circle{stroke:#9fa3a3!important}.om-react-ui-input-amount-normal-message{display:flex;gap:4px;align-items:center;justify-content:flex-start;margin-top:4px;color:#646465;font-weight:400;font-size:12px;font-style:normal;line-height:17px;word-wrap:break-word;word-break:keep-all}.om-react-ui-input-amount-normal-message-success{color:#1f5800}.om-react-ui-input-amount-normal-message-error{color:#ae0000}.om-react-ui-input-amount-normal-footnote{margin-top:4px;text-align:left}.om-react-ui-input-amount-normal-readonly .om-react-ui-input-amount-normal{border-color:#d1d2d2;border-width:1px}.om-react-ui-input-amount-normal-readonly .om-react-ui-input-amount-normal-element input{cursor:default}.om-react-ui-input-amount-normal-disabled .om-react-ui-input-amount-normal{background-color:#e3e4e4;border-color:#e3e4e4;border-width:1px;cursor:not-allowed}.om-react-ui-input-amount-normal-disabled .om-react-ui-input-amount-normal-element input{opacity:1}.om-react-ui-input-amount-normal-disabled.om-react-ui-input-amount-normal-filled .om-react-ui-input-amount-normal{background-color:#f0f0f0;border-color:#f0f0f0;cursor:text}.om-react-ui-input-amount-normal-disabled.om-react-ui-input-amount-normal-filled .om-react-ui-input-amount-normal-element input{cursor:text;-webkit-user-select:text;-moz-user-select:text;user-select:text;pointer-events:auto}.om-react-ui-input-amount-normal-success .om-react-ui-input-amount-normal{border-color:#1f5800;border-width:1px}.om-react-ui-input-amount-normal-success .om-react-ui-input-amount-normal-element,.om-react-ui-input-amount-normal-success .om-react-ui-input-amount-normal-element input,.om-react-ui-input-amount-normal-success .om-react-ui-input-amount-normal-message,.om-react-ui-input-amount-normal-success .om-react-ui-input-amount-normal-prefix{color:#1f5800}.om-react-ui-input-amount-normal-invalid .om-react-ui-input-amount-normal{border-color:#ae0000;border-width:1px}.om-react-ui-input-amount-normal-invalid .om-react-ui-input-amount-normal-element,.om-react-ui-input-amount-normal-invalid .om-react-ui-input-amount-normal-element input,.om-react-ui-input-amount-normal-invalid .om-react-ui-input-amount-normal-message,.om-react-ui-input-amount-normal-invalid .om-react-ui-input-amount-normal-prefix{color:#ae0000}.om-react-ui-input-amount-normal-small .om-react-ui-input-amount-normal{height:44px;max-height:44px}.om-react-ui-input-amount-normal-small .om-react-ui-input-amount-normal-element input{height:40px;font-size:14px;line-height:20px}
|