@1money/react-ui 1.14.0 → 1.14.1-rc.1

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.
@@ -83,6 +83,7 @@ export var InputAmount = function InputAmount(props) {
83
83
  var containerRef = useRef(null);
84
84
  var inputCaretPositionRef = useRef(0);
85
85
  var ignoreSelectRef = useRef(false);
86
+ var onChangeRef = useRef(onChange);
86
87
  var _useState = useState(null),
87
88
  _useState2 = _slicedToArray(_useState, 2),
88
89
  _value = _useState2[0],
@@ -142,14 +143,13 @@ export var InputAmount = function InputAmount(props) {
142
143
  });
143
144
  var originOffset = val.length - ((_a = _value2 === null || _value2 === void 0 ? void 0 : _value2.length) !== null && _a !== void 0 ? _a : 0);
144
145
  var isAdd = originOffset > 0;
145
- var directionOffset = isAdd ? 1 : -1;
146
146
  var ignoreOldPos = isAdd ? val.length - ((_b = _value2 === null || _value2 === void 0 ? void 0 : _value2.length) !== null && _b !== void 0 ? _b : 0) > 1 : false;
147
147
  var position = (_c = currPos !== null && currPos !== void 0 ? currPos : inputRef.current.selectionEnd) !== null && _c !== void 0 ? _c : 0;
148
148
  if (!ignoreOldPos) {
149
149
  var oldPosVal = _formattedValue.slice(0, Math.max(position, 0));
150
150
  position = oldPosVal.split(',').join('').length;
151
151
  }
152
- var posVal = val.slice(0, position + directionOffset);
152
+ var posVal = val.slice(0, position + originOffset);
153
153
  formattedNewVal.split('').reduce(function (acc, _char, ind) {
154
154
  if (_char === ',') return acc;else acc.push(_char);
155
155
  if (acc.join('') === posVal) {
@@ -158,13 +158,11 @@ export var InputAmount = function InputAmount(props) {
158
158
  }
159
159
  return acc;
160
160
  }, []);
161
- var formatOffset = formattedNewVal.length - _formattedValue.length;
162
- var isPasteBehavior = !_value2 && originOffset > 1;
163
- inputCaretPositionRef.current = position + offset + (isPasteBehavior ? formatOffset : 0);
161
+ inputCaretPositionRef.current = position + offset;
164
162
  }
165
163
  }, []);
166
164
  var handleChange = useCallback(function (e) {
167
- var _a, _b, _c;
165
+ var _a, _b, _c, _d;
168
166
  if (disabled || readOnly) return;
169
167
  var _valueRef$current2 = valueRef.current,
170
168
  value = _valueRef$current2.value,
@@ -189,11 +187,12 @@ export var InputAmount = function InputAmount(props) {
189
187
  decimal = _val$split2[1];
190
188
  var maxDecimals = Number(maxFractionDigits);
191
189
  if (decimal != null && decimal.length > maxDecimals) {
190
+ var truncatedDecimals = decimal.slice(0, maxDecimals);
192
191
  var _formattedValue$split = formattedValue.split('.'),
193
192
  _formattedValue$split2 = _slicedToArray(_formattedValue$split, 1),
194
193
  oldInt = _formattedValue$split2[0];
195
194
  if (oldInt.split(',').join('') == _int) return;
196
- val = "".concat(_int, ".").concat(decimal.slice(0, maxDecimals));
195
+ val = "".concat(_int, ".").concat(truncatedDecimals);
197
196
  }
198
197
  }
199
198
  if (typeof min === 'number' || typeof min === 'bigint' || typeof max === 'number' || typeof max === 'bigint') {
@@ -217,11 +216,11 @@ export var InputAmount = function InputAmount(props) {
217
216
  calcCaretPos(val, hasDecimalPoint ? 2 : 0, Math.max(inputCaretPositionRef.current, 0));
218
217
  ignoreSelectRef.current = true;
219
218
  } else {
220
- e.stopPropagation();
221
219
  e.preventDefault();
220
+ e.stopPropagation();
222
221
  }
223
- onChange === null || onChange === void 0 ? void 0 : onChange(e, val);
224
- }, [onChange, disabled, readOnly]);
222
+ (_d = onChangeRef.current) === null || _d === void 0 ? void 0 : _d.call(onChangeRef, e, val);
223
+ }, [disabled, readOnly]);
225
224
  var handleSelect = useCallback(function () {
226
225
  var _a;
227
226
  if (ignoreSelectRef.current) {
@@ -246,10 +245,9 @@ export var InputAmount = function InputAmount(props) {
246
245
  if (isFocus) scrollToEnd(true);
247
246
  }, [_value, prefix, suffix, currency, isFocus]);
248
247
  useLayoutEffect(function () {
249
- var _a, _b, _c;
250
- var val = value;
248
+ var _a, _b, _c, _d;
249
+ var val = typeof value === 'undefined' ? _value : value;
251
250
  var hasDecimalPoint = false;
252
- var formattedValue = valueRef.current.formattedValue;
253
251
  var isStandaloneMinus = false;
254
252
  if (typeof val === 'string') {
255
253
  if (val === '') {
@@ -278,11 +276,17 @@ export var InputAmount = function InputAmount(props) {
278
276
  decimal = _split2[1];
279
277
  var maxDecimals = Number(maxFractionDigits);
280
278
  if (decimal != null && decimal.length > maxDecimals) {
281
- var _formattedValue$split3 = formattedValue.split('.'),
282
- _formattedValue$split4 = _slicedToArray(_formattedValue$split3, 1),
283
- oldInt = _formattedValue$split4[0];
284
- if (oldInt.split(',').join('') == _int2) return;
285
- val = "".concat(_int2, ".").concat(decimal.slice(0, maxDecimals));
279
+ var truncatedDecimals = decimal.slice(0, maxDecimals);
280
+ val = "".concat(_int2, ".").concat(truncatedDecimals);
281
+ if (typeof value === 'undefined') {
282
+ setValue(val);
283
+ } else {
284
+ // @ts-expect-error
285
+ (_a = onChangeRef.current) === null || _a === void 0 ? void 0 : _a.call(onChangeRef, {
286
+ target: inputRef.current
287
+ }, val !== null && val !== void 0 ? val : '');
288
+ }
289
+ return;
286
290
  }
287
291
  }
288
292
  if (typeof val === 'string' || typeof val === 'number' || typeof val === 'bigint') {
@@ -295,7 +299,7 @@ export var InputAmount = function InputAmount(props) {
295
299
  val = '-';
296
300
  } else {
297
301
  var strVal = '' + val;
298
- 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;
302
+ var decimals = (_d = (_c = (_b = strVal.match(/\.(\d+)$/)) === null || _b === void 0 ? void 0 : _b[1]) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0;
299
303
  var bn = BigNumber(strVal);
300
304
  var normalized = bn.toFixed(decimals);
301
305
  if (negative && strVal.trim().startsWith('-') && bn.isZero()) {
@@ -309,6 +313,7 @@ export var InputAmount = function InputAmount(props) {
309
313
  ignoreSelectRef.current = true;
310
314
  }, [value, maxFractionDigits, min, max, negative]);
311
315
  useEffect(function () {
316
+ onChangeRef.current = onChange;
312
317
  valueRef.current = {
313
318
  value: value,
314
319
  _value: _value,
@@ -318,7 +323,7 @@ export var InputAmount = function InputAmount(props) {
318
323
  negative: negative,
319
324
  maxFractionDigits: maxFractionDigits
320
325
  };
321
- }, [_value, value, formattedValue, min, max, negative, maxFractionDigits]);
326
+ }, [_value, value, formattedValue, min, max, negative, maxFractionDigits, onChange]);
322
327
  return _jsxs("div", {
323
328
  className: classes('wrapper', joinCls(wrapperCls, classes(size), invalid && classes('invalid'), success && classes('success'), disabled && classes('disabled'), readOnly && classes('readonly'), _value && classes('filled'))),
324
329
  children: [label ? loading ? _jsx(Skeleton, {
@@ -395,4 +400,4 @@ export var InputAmount = function InputAmount(props) {
395
400
  });
396
401
  };
397
402
  export default /*#__PURE__*/memo(InputAmount);
398
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJtZW1vIiwidXNlTWVtbyIsInVzZVN0YXRlIiwidXNlQ2FsbGJhY2siLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJ1c2VMYXlvdXRFZmZlY3QiLCJCaWdOdW1iZXIiLCJudW1lcmljRm9ybWF0dGVyIiwiU2tlbGV0b24iLCJTcGlubmVyIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJqb2luQ2xzIiwiTUlOX0lOUFVUX1dJRFRIIiwibm9ybWFsaXplTnVtYmVySW5wdXQiLCJ2YWwiLCJyZXBsYWNlIiwiY2FsY1ZhbHVlSW5SYW5nZSIsIm1pbiIsIm1heCIsImlzTmFOIiwiY2FsY1ZhbCIsImJuVmFsIiwibWluQm4iLCJsdCIsIm1heEJuIiwiZ3QiLCJJbnB1dEFtb3VudCIsInByb3BzIiwidmFsdWUiLCJfcHJvcHMkdHlwZSIsInR5cGUiLCJtYXhGcmFjdGlvbkRpZ2l0cyIsImNoaWxkcmVuIiwiX3Byb3BzJHBsYWNlaG9sZGVyIiwicGxhY2Vob2xkZXIiLCJfcHJvcHMkc2l6ZSIsInNpemUiLCJmb290bm90ZSIsImZvb3Rub3RlQ2xzIiwiY2xhc3NOYW1lIiwid3JhcHBlckNscyIsImxhYmVsQ2xzIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsIm1lc3NhZ2VDbHMiLCJwcmVmaXhFbGVDbHMiLCJzdWZmaXhFbGVDbHMiLCJpbnZhbGlkIiwibmVnYXRpdmUiLCJyZXF1aXJlZCIsImxvYWRpbmciLCJzdWNjZXNzIiwiZGlzYWJsZWQiLCJyZWFkT25seSIsImxhYmVsIiwicHJlZml4Iiwic3VmZml4IiwiY3VycmVuY3kiLCJtZXNzYWdlIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJvbkZvY3VzIiwicmVzdCIsImNsYXNzZXMiLCJjb25jYXQiLCJpbnB1dFJlZiIsImZha2VFbGVSZWYiLCJwcmVmaXhSZWYiLCJzdWZmaXhSZWYiLCJjdXJyZW5jeVJlZiIsImNvbnRhaW5lclJlZiIsImlucHV0Q2FyZXRQb3NpdGlvblJlZiIsImlnbm9yZVNlbGVjdFJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsIl92YWx1ZSIsInNldFZhbHVlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJfd2lkdGgiLCJzZXRXaWR0aCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNNYXhXaWR0aCIsInNldElzTWF4V2lkdGgiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImlzRm9jdXMiLCJzZXRJc0ZvY3VzIiwiZm9ybWF0dGVkVmFsdWUiLCJ0aG91c2FuZFNlcGFyYXRvciIsImFsbG93TmVnYXRpdmUiLCJ2YWx1ZVJlZiIsInNjcm9sbFRvRW5kIiwic3RpY2t5IiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiX2EiLCJpbnB1dCIsImN1cnJlbnQiLCJsZW4iLCJwb3NpdGlvbiIsInNjcm9sbExlZnQiLCJzaG91bGRUb0VuZCIsInN0YXJ0Iiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJzY3JvbGxXaWR0aCIsImZvY3VzIiwiY2FsY0NhcmV0UG9zIiwib2Zmc2V0IiwiY3VyclBvcyIsIl9iIiwiX2MiLCJfdmFsdWVSZWYkY3VycmVudCIsImZvcm1hdHRlZE5ld1ZhbCIsIm9yaWdpbk9mZnNldCIsImlzQWRkIiwiZGlyZWN0aW9uT2Zmc2V0IiwiaWdub3JlT2xkUG9zIiwic2VsZWN0aW9uRW5kIiwib2xkUG9zVmFsIiwic2xpY2UiLCJNYXRoIiwic3BsaXQiLCJqb2luIiwicG9zVmFsIiwicmVkdWNlIiwiYWNjIiwiY2hhciIsImluZCIsInB1c2giLCJmb3JtYXRPZmZzZXQiLCJpc1Bhc3RlQmVoYXZpb3IiLCJoYW5kbGVDaGFuZ2UiLCJfdmFsdWVSZWYkY3VycmVudDIiLCJ0YXJnZXQiLCJoYXNEZWNpbWFsUG9pbnQiLCJlbmRzV2l0aCIsImluY2x1ZGVzIiwiaXNTdGFuZGFsb25lTWludXMiLCJfdmFsJHNwbGl0IiwiX3ZhbCRzcGxpdDIiLCJpbnQiLCJkZWNpbWFsIiwibWF4RGVjaW1hbHMiLCJOdW1iZXIiLCJfZm9ybWF0dGVkVmFsdWUkc3BsaXQiLCJfZm9ybWF0dGVkVmFsdWUkc3BsaXQyIiwib2xkSW50IiwiZGVjaW1hbHMiLCJtYXRjaCIsImJuIiwibm9ybWFsaXplZCIsInRvRml4ZWQiLCJ0cmltIiwic3RhcnRzV2l0aCIsImlzWmVybyIsInN0b3BQcm9wYWdhdGlvbiIsInByZXZlbnREZWZhdWx0IiwiaGFuZGxlU2VsZWN0IiwiX2QiLCJfZSIsIl9mIiwiX2ciLCJfaCIsIl9qIiwiX2siLCJjb250YWluZXJXaWR0aCIsIm9mZnNldFdpZHRoIiwicHJlZml4V2lkdGgiLCJzdWZmaXhXaWR0aCIsImN1cnJlbmN5V2lkdGgiLCJmYWtlV2lkdGgiLCJnYXBXaWR0aCIsIm1heFdpZHRoIiwiaXNNYXgiLCJhYnMiLCJ6ZXJvIiwiQmlnSW50IiwiX3NwbGl0IiwiX3NwbGl0MiIsIl9mb3JtYXR0ZWRWYWx1ZSRzcGxpdDMiLCJfZm9ybWF0dGVkVmFsdWUkc3BsaXQ0Iiwic3RyVmFsIiwid2lkdGgiLCJoZWlnaHQiLCJyZWYiLCJvbkNsaWNrIiwiSFRNTElucHV0RWxlbWVudCIsImFzc2lnbiIsInN0eWxlIiwib25TZWxlY3QiLCJzdHJva2VXaWR0aCJdLCJtYXBwaW5ncyI6IjtBQUFBLElBQUlBLE1BQU0sR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxNQUFNLElBQUssVUFBVUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7RUFDbEQsSUFBSUMsQ0FBQyxHQUFH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MUMsSUFBQSxDQUFBLEtBQUEsRUFBQTtRQUFLNEMsU0FBUyxFQUFFd0IsT0FBTyxDQUFDLFVBQVUsRUFBRXpCLFdBQVcsQ0FBQztRQUFBTixRQUFBLEVBQUdLO01BQVEsQ0FBQSxDQUFPO0lBQUEsQ0FBQSxDQUMzRTtFQUFBLENBQUEsQ0FFSjtBQUNSLENBQUM7QUFFRCw0QkFBZXZDLElBQUksQ0FBQzRCLFdBQVcsQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZU1lbW8sIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IG51bWVyaWNGb3JtYXR0ZXIgfSBmcm9tICdyZWFjdC1udW1iZXItZm9ybWF0JztcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSAncHJpbWVyZWFjdC9za2VsZXRvbic7XG5pbXBvcnQgU3Bpbm5lciBmcm9tICcuLi9TcGlubmVyJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcywgam9pbkNscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuY29uc3QgTUlOX0lOUFVUX1dJRFRIID0gMzM7XG5jb25zdCBub3JtYWxpemVOdW1iZXJJbnB1dCA9ICh2YWwpID0+IHZhbFxuICAgIC5yZXBsYWNlKC9bXFx1MzAwMlxcdWZmMGVcXHVmZjYxXS9nLCAnLicpXG4gICAgLnJlcGxhY2UoL1tcXHVGRjBDXS9nLCAnLCcpO1xuY29uc3QgY2FsY1ZhbHVlSW5SYW5nZSA9ICh2YWwsIG1pbiwgbWF4KSA9PiB7XG4gICAgaWYgKHZhbCA9PT0gJycgfHwgdmFsID09PSAnLScgfHwgaXNOYU4oK3ZhbCkpXG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgbGV0IGNhbGNWYWwgPSB2YWw7XG4gICAgY29uc3QgYm5WYWwgPSBCaWdOdW1iZXIodmFsKTtcbiAgICBpZiAodHlwZW9mIG1pbiA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1pbiA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgY29uc3QgbWluQm4gPSBCaWdOdW1iZXIobWluKTtcbiAgICAgICAgaWYgKGJuVmFsLmx0KG1pbkJuKSkge1xuICAgICAgICAgICAgY2FsY1ZhbCA9ICcnICsgbWluO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgbWF4ID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWF4ID09PSAnYmlnaW50Jykge1xuICAgICAgICBjb25zdCBtYXhCbiA9IEJpZ051bWJlcihtYXgpO1xuICAgICAgICBpZiAoYm5WYWwuZ3QobWF4Qm4pKSB7XG4gICAgICAgICAgICBjYWxjVmFsID0gJycgKyBtYXg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNhbGNWYWw7XG59O1xuZXhwb3J0IGNvbnN0IElucHV0QW1vdW50ID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgdmFsdWUsIHR5cGUgPSAncHJpbWFyeScsIG1heEZyYWN0aW9uRGlnaXRzLCBjaGlsZHJlbiwgcGxhY2Vob2xkZXIgPSAnMCcsIG1pbiwgbWF4LCBcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgc2l6ZSA9ICdsYXJnZScsIGZvb3Rub3RlLCBmb290bm90ZUNscywgY2xhc3NOYW1lLCB3cmFwcGVyQ2xzLCBsYWJlbENscywgcHJlZml4Q2xzID0gJ2lucHV0LWFtb3VudCcsIG1lc3NhZ2VDbHMsIHByZWZpeEVsZUNscywgc3VmZml4RWxlQ2xzLCBpbnZhbGlkLCBuZWdhdGl2ZSwgcmVxdWlyZWQsIGxvYWRpbmcsIHN1Y2Nlc3MsIGRpc2FibGVkLCByZWFkT25seSwgbGFiZWwsIHByZWZpeCwgc3VmZml4LCBjdXJyZW5jeSwgbWVzc2FnZSwgb25DaGFuZ2UsIG9uQmx1ciwgb25Gb2N1cyB9ID0gcHJvcHMsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcInZhbHVlXCIsIFwidHlwZVwiLCBcIm1heEZyYWN0aW9uRGlnaXRzXCIsIFwiY2hpbGRyZW5cIiwgXCJwbGFjZWhvbGRlclwiLCBcIm1pblwiLCBcIm1heFwiLCBcInNpemVcIiwgXCJmb290bm90ZVwiLCBcImZvb3Rub3RlQ2xzXCIsIFwiY2xhc3NOYW1lXCIsIFwid3JhcHBlckNsc1wiLCBcImxhYmVsQ2xzXCIsIFwicHJlZml4Q2xzXCIsIFwibWVzc2FnZUNsc1wiLCBcInByZWZpeEVsZUNsc1wiLCBcInN1ZmZpeEVsZUNsc1wiLCBcImludmFsaWRcIiwgXCJuZWdhdGl2ZVwiLCBcInJlcXVpcmVkXCIsIFwibG9hZGluZ1wiLCBcInN1Y2Nlc3NcIiwgXCJkaXNhYmxlZFwiLCBcInJlYWRPbmx5XCIsIFwibGFiZWxcIiwgXCJwcmVmaXhcIiwgXCJzdWZmaXhcIiwgXCJjdXJyZW5jeVwiLCBcIm1lc3NhZ2VcIiwgXCJvbkNoYW5nZVwiLCBcIm9uQmx1clwiLCBcIm9uRm9jdXNcIl0pO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKGAke3ByZWZpeENsc30tJHt0eXBlfWApO1xuICAgIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGZha2VFbGVSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgcHJlZml4UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHN1ZmZpeFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjdXJyZW5jeVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgaW5wdXRDYXJldFBvc2l0aW9uUmVmID0gdXNlUmVmKDApO1xuICAgIGNvbnN0IGlnbm9yZVNlbGVjdFJlZiA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgW192YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW193aWR0aCwgc2V0V2lkdGhdID0gdXNlU3RhdGUoTUlOX0lOUFVUX1dJRFRIKTtcbiAgICBjb25zdCBbaXNNYXhXaWR0aCwgc2V0SXNNYXhXaWR0aF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2lzRm9jdXMsIHNldElzRm9jdXNdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIHJldHVybiBudW1lcmljRm9ybWF0dGVyKCcnICsgKF92YWx1ZSA9PSBudWxsID8gJycgOiBfdmFsdWUpLCB7XG4gICAgICAgICAgICB0aG91c2FuZFNlcGFyYXRvcjogdHJ1ZSxcbiAgICAgICAgICAgIGFsbG93TmVnYXRpdmU6IG5lZ2F0aXZlLFxuICAgICAgICB9KTtcbiAgICB9LCBbX3ZhbHVlLCBuZWdhdGl2ZV0pO1xuICAgIGNvbnN0IHZhbHVlUmVmID0gdXNlUmVmKHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIF92YWx1ZSxcbiAgICAgICAgZm9ybWF0dGVkVmFsdWUsXG4gICAgICAgIG1pbixcbiAgICAgICAgbWF4LFxuICAgICAgICBuZWdhdGl2ZSxcbiAgICAgICAgbWF4RnJhY3Rpb25EaWdpdHMsXG4gICAgfSk7XG4gICAgY29uc3Qgc2Nyb2xsVG9FbmQgPSB1c2VDYWxsYmFjaygoc3RpY2t5ID0gZmFsc2UpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBpbnB1dCA9IGlucHV0UmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmICghaW5wdXQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGxlbiA9IChfYSA9IGlucHV0LnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoO1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IGlucHV0LnNjcm9sbExlZnQ7XG4gICAgICAgIGNvbnN0IHNob3VsZFRvRW5kID0gIXN0aWNreTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBzaG91bGRUb0VuZCA/IGxlbiA6IGlucHV0Q2FyZXRQb3NpdGlvblJlZi5jdXJyZW50O1xuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgc3RhcnQpO1xuICAgICAgICBpbnB1dC5zY3JvbGxMZWZ0ID0gc2hvdWxkVG9FbmQgPyBpbnB1dC5zY3JvbGxXaWR0aCA6IHBvc2l0aW9uO1xuICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCBjYWxjQ2FyZXRQb3MgPSB1c2VDYWxsYmFjaygodmFsLCBvZmZzZXQgPSAwLCBjdXJyUG9zKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICBpZiAoaW5wdXRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgY29uc3QgeyBfdmFsdWUsIG5lZ2F0aXZlLCBmb3JtYXR0ZWRWYWx1ZSB9ID0gdmFsdWVSZWYuY3VycmVudDtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZE5ld1ZhbCA9IG51bWVyaWNGb3JtYXR0ZXIodmFsLCB7XG4gICAgICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICAgICAgYWxsb3dOZWdhdGl2ZTogbmVnYXRpdmUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbk9mZnNldCA9IHZhbC5sZW5ndGggLSAoKF9hID0gX3ZhbHVlID09PSBudWxsIHx8IF92YWx1ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3ZhbHVlLmxlbmd0aCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogMCk7XG4gICAgICAgICAgICBjb25zdCBpc0FkZCA9IG9yaWdpbk9mZnNldCA+IDA7XG4gICAgICAgICAgICBjb25zdCBkaXJlY3Rpb25PZmZzZXQgPSBpc0FkZCA/IDEgOiAtMTtcbiAgICAgICAgICAgIGNvbnN0IGlnbm9yZU9sZFBvcyA9IGlzQWRkID8gdmFsLmxlbmd0aCAtICgoX2IgPSBfdmFsdWUgPT09IG51bGwgfHwgX3ZhbHVlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdmFsdWUubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAwKSA+IDEgOiBmYWxzZTtcbiAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9IChfYyA9IGN1cnJQb3MgIT09IG51bGwgJiYgY3VyclBvcyAhPT0gdm9pZCAwID8gY3VyclBvcyA6IGlucHV0UmVmLmN1cnJlbnQuc2VsZWN0aW9uRW5kKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwO1xuICAgICAgICAgICAgaWYgKCFpZ25vcmVPbGRQb3MpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvbGRQb3NWYWwgPSBmb3JtYXR0ZWRWYWx1ZS5zbGljZSgwLCBNYXRoLm1heChwb3NpdGlvbiwgMCkpO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gb2xkUG9zVmFsLnNwbGl0KCcsJykuam9pbignJykubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcG9zVmFsID0gdmFsLnNsaWNlKDAsIChwb3NpdGlvbiArIGRpcmVjdGlvbk9mZnNldCkpO1xuICAgICAgICAgICAgZm9ybWF0dGVkTmV3VmFsLnNwbGl0KCcnKS5yZWR1Y2UoKGFjYywgY2hhciwgaW5kKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNoYXIgPT09ICcsJylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGFjYy5wdXNoKGNoYXIpO1xuICAgICAgICAgICAgICAgIGlmIChhY2Muam9pbignJykgPT09IHBvc1ZhbCkge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IGluZCArIDE7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXRPZmZzZXQgPSBmb3JtYXR0ZWROZXdWYWwubGVuZ3RoIC0gZm9ybWF0dGVkVmFsdWUubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgaXNQYXN0ZUJlaGF2aW9yID0gIV92YWx1ZSAmJiBvcmlnaW5PZmZzZXQgPiAxO1xuICAgICAgICAgICAgaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQgPSBwb3NpdGlvbiArIG9mZnNldCArIChpc1Bhc3RlQmVoYXZpb3IgPyBmb3JtYXRPZmZzZXQgOiAwKTtcbiAgICAgICAgfVxuICAgIH0sIFtdKTtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjaygoZSkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgaWYgKGRpc2FibGVkIHx8IHJlYWRPbmx5KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB7IHZhbHVlLCBfdmFsdWUsIGZvcm1hdHRlZFZhbHVlLCBtaW4sIG1heCwgbmVnYXRpdmUsIG1heEZyYWN0aW9uRGlnaXRzIH0gPSB2YWx1ZVJlZi5jdXJyZW50O1xuICAgICAgICBsZXQgdmFsID0gZS50YXJnZXQudmFsdWU7XG4gICAgICAgIGlmICh2YWwgIT0gbnVsbClcbiAgICAgICAgICAgIHZhbCA9IG5vcm1hbGl6ZU51bWJlcklucHV0KHZhbCkuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICAgICAgY29uc3QgaGFzRGVjaW1hbFBvaW50ID0gISF2YWwgJiYgdmFsLmVuZHNXaXRoKCcuJyk7XG4gICAgICAgIGlmIChoYXNEZWNpbWFsUG9pbnQpXG4gICAgICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMCwgLTEpO1xuICAgICAgICBpZiAoIW5lZ2F0aXZlICYmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB2b2lkIDAgPyB2b2lkIDAgOiB2YWwuaW5jbHVkZXMoJy0nKSkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGlzU3RhbmRhbG9uZU1pbnVzID0gbmVnYXRpdmUgJiYgdmFsID09PSAnLSc7XG4gICAgICAgIGlmICghaXNTdGFuZGFsb25lTWludXMgJiYgaXNOYU4oK3ZhbCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh2YWwgPT09IF92YWx1ZSAmJiAhaGFzRGVjaW1hbFBvaW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAodHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICAgICBjb25zdCBbaW50LCBkZWNpbWFsXSA9IHZhbC5zcGxpdCgnLicpO1xuICAgICAgICAgICAgY29uc3QgbWF4RGVjaW1hbHMgPSBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpO1xuICAgICAgICAgICAgaWYgKGRlY2ltYWwgIT0gbnVsbCAmJiBkZWNpbWFsLmxlbmd0aCA+IG1heERlY2ltYWxzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgW29sZEludCxdID0gZm9ybWF0dGVkVmFsdWUuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgICAgICBpZiAob2xkSW50LnNwbGl0KCcsJykuam9pbignJykgPT0gaW50KVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgdmFsID0gYCR7aW50fS4ke2RlY2ltYWwuc2xpY2UoMCwgbWF4RGVjaW1hbHMpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCh0eXBlb2YgbWluID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWluID09PSAnYmlnaW50JykgfHwgKHR5cGVvZiBtYXggPT09ICdudW1iZXInIHx8IHR5cGVvZiBtYXggPT09ICdiaWdpbnQnKSkge1xuICAgICAgICAgICAgdmFsID0gY2FsY1ZhbHVlSW5SYW5nZSh2YWwsIG1pbiwgbWF4KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsICE9PSAnJykge1xuICAgICAgICAgICAgaWYgKGlzU3RhbmRhbG9uZU1pbnVzKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gJy0nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVjaW1hbHMgPSAoX2MgPSAoX2IgPSAoX2EgPSB2YWwubWF0Y2goL1xcLihcXGQrKSQvKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hWzFdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJuID0gQmlnTnVtYmVyKHZhbCk7XG4gICAgICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZWQgPSBibi50b0ZpeGVkKGRlY2ltYWxzKTtcbiAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUgJiYgdmFsLnRyaW0oKS5zdGFydHNXaXRoKCctJykgJiYgYm4uaXNaZXJvKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnLScpID8gbm9ybWFsaXplZCA6IGAtJHtub3JtYWxpemVkfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhbCA9IGAke25vcm1hbGl6ZWR9JHtoYXNEZWNpbWFsUG9pbnQgPyAnLicgOiAnJ31gLnRyaW0oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgc2V0VmFsdWUodmFsID09PSAnJyA/IG51bGwgOiB2YWwpO1xuICAgICAgICAgICAgY2FsY0NhcmV0UG9zKHZhbCwgaGFzRGVjaW1hbFBvaW50ID8gMiA6IDAsIE1hdGgubWF4KGlucHV0Q2FyZXRQb3NpdGlvblJlZi5jdXJyZW50LCAwKSk7XG4gICAgICAgICAgICBpZ25vcmVTZWxlY3RSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZShlLCB2YWwpO1xuICAgIH0sIFtvbkNoYW5nZSwgZGlzYWJsZWQsIHJlYWRPbmx5XSk7XG4gICAgY29uc3QgaGFuZGxlU2VsZWN0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChpZ25vcmVTZWxlY3RSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgaWdub3JlU2VsZWN0UmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyUG9zID0gKF9hID0gaW5wdXRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNlbGVjdGlvbkVuZDtcbiAgICAgICAgaWYgKHR5cGVvZiBjdXJyUG9zID09PSAnbnVtYmVyJylcbiAgICAgICAgICAgIGlucHV0Q2FyZXRQb3NpdGlvblJlZi5jdXJyZW50ID0gY3VyclBvcztcbiAgICB9LCBbXSk7XG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nLCBfaCwgX2osIF9rO1xuICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IChfYiA9IChfYSA9IGNvbnRhaW5lclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IE1JTl9JTlBVVF9XSURUSDtcbiAgICAgICAgY29uc3QgcHJlZml4V2lkdGggPSAoX2QgPSAoX2MgPSBwcmVmaXhSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAwO1xuICAgICAgICBjb25zdCBzdWZmaXhXaWR0aCA9IChfZiA9IChfZSA9IHN1ZmZpeFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Uub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9mICE9PSB2b2lkIDAgPyBfZiA6IDA7XG4gICAgICAgIGNvbnN0IGN1cnJlbmN5V2lkdGggPSAoX2ggPSAoX2cgPSBjdXJyZW5jeVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2cub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9oICE9PSB2b2lkIDAgPyBfaCA6IDA7XG4gICAgICAgIGNvbnN0IGZha2VXaWR0aCA9IChfayA9IChfaiA9IGZha2VFbGVSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2ogPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9qLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfayAhPT0gdm9pZCAwID8gX2sgOiAwO1xuICAgICAgICBjb25zdCBnYXBXaWR0aCA9IHByZWZpeFdpZHRoICYmIHN1ZmZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGhcbiAgICAgICAgICAgID8gMjRcbiAgICAgICAgICAgIDogKHByZWZpeFdpZHRoICYmIHN1ZmZpeFdpZHRoKSB8fCAocHJlZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aCkgfHwgKHN1ZmZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGgpXG4gICAgICAgICAgICAgICAgPyAxNlxuICAgICAgICAgICAgICAgIDogcHJlZml4V2lkdGggfHwgc3VmZml4V2lkdGggfHwgY3VycmVuY3lXaWR0aFxuICAgICAgICAgICAgICAgICAgICA/IDhcbiAgICAgICAgICAgICAgICAgICAgOiAwO1xuICAgICAgICBjb25zdCBtYXhXaWR0aCA9IGNvbnRhaW5lcldpZHRoIC0gcHJlZml4V2lkdGggLSBzdWZmaXhXaWR0aCAtIGN1cnJlbmN5V2lkdGggLSBnYXBXaWR0aDtcbiAgICAgICAgY29uc3QgaXNNYXggPSBmYWtlV2lkdGggPj0gbWF4V2lkdGg7XG4gICAgICAgIHNldFdpZHRoKE1hdGgubWluKG1heFdpZHRoLCBNYXRoLm1heChmYWtlV2lkdGgsIE1JTl9JTlBVVF9XSURUSCkpKTtcbiAgICAgICAgc2V0SXNNYXhXaWR0aChpc01heCk7XG4gICAgICAgIGlmIChpc0ZvY3VzKVxuICAgICAgICAgICAgc2Nyb2xsVG9FbmQodHJ1ZSk7XG4gICAgfSwgW192YWx1ZSwgcHJlZml4LCBzdWZmaXgsIGN1cnJlbmN5LCBpc0ZvY3VzXSk7XG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIGxldCB2YWwgPSB2YWx1ZTtcbiAgICAgICAgbGV0IGhhc0RlY2ltYWxQb2ludCA9IGZhbHNlO1xuICAgICAgICBjb25zdCB7IGZvcm1hdHRlZFZhbHVlIH0gPSB2YWx1ZVJlZi5jdXJyZW50O1xuICAgICAgICBsZXQgaXNTdGFuZGFsb25lTWludXMgPSBmYWxzZTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAodmFsID09PSAnJykge1xuICAgICAgICAgICAgICAgIHZhbCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWwgPSBub3JtYWxpemVOdW1iZXJJbnB1dCh2YWwpLnNwbGl0KCcsJykuam9pbignJyk7XG4gICAgICAgICAgICAgICAgaGFzRGVjaW1hbFBvaW50ID0gISF2YWwgJiYgdmFsLmVuZHNXaXRoKCcuJyk7XG4gICAgICAgICAgICAgICAgaWYgKGhhc0RlY2ltYWxQb2ludClcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gdmFsLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgICAgICAgICBpZiAoIW5lZ2F0aXZlKVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwucmVwbGFjZSgvLS9nLCAnJyk7XG4gICAgICAgICAgICAgICAgaXNTdGFuZGFsb25lTWludXMgPSAhIW5lZ2F0aXZlICYmIHZhbCA9PT0gJy0nO1xuICAgICAgICAgICAgICAgIGlmICghaXNTdGFuZGFsb25lTWludXMgJiYgaXNOYU4oK3ZhbCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCAhPT0gJ251bWJlcicgJiYgdHlwZW9mIHZhbCAhPT0gJ2JpZ2ludCcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICghbmVnYXRpdmUpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHZhbCA9IE1hdGguYWJzKHZhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnYmlnaW50Jykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHplcm8gPSBCaWdJbnQoMCk7XG4gICAgICAgICAgICAgICAgdmFsID0gdmFsIDwgemVybyA/IC12YWwgOiB2YWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsID09PSAnbnVtYmVyJykgJiYgKHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnYmlnaW50JykpIHtcbiAgICAgICAgICAgIGNvbnN0IFtpbnQsIGRlY2ltYWxdID0gKCcnICsgdmFsKS5zcGxpdCgnLicpO1xuICAgICAgICAgICAgY29uc3QgbWF4RGVjaW1hbHMgPSBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpO1xuICAgICAgICAgICAgaWYgKGRlY2ltYWwgIT0gbnVsbCAmJiBkZWNpbWFsLmxlbmd0aCA+IG1heERlY2ltYWxzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgW29sZEludCxdID0gZm9ybWF0dGVkVmFsdWUuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgICAgICBpZiAob2xkSW50LnNwbGl0KCcsJykuam9pbignJykgPT0gaW50KVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgdmFsID0gYCR7aW50fS4ke2RlY2ltYWwuc2xpY2UoMCwgbWF4RGVjaW1hbHMpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWwgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICAgICB2YWwgPSBjYWxjVmFsdWVJblJhbmdlKCcnICsgdmFsLCBtaW4sIG1heCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbCA9PT0gJycgfHwgdmFsID09IG51bGwpIHtcbiAgICAgICAgICAgIHNldFZhbHVlKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzU3RhbmRhbG9uZU1pbnVzKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gJy0nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RyVmFsID0gJycgKyB2YWw7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVjaW1hbHMgPSAoX2MgPSAoX2IgPSAoX2EgPSBzdHJWYWwubWF0Y2goL1xcLihcXGQrKSQvKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hWzFdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJuID0gQmlnTnVtYmVyKHN0clZhbCk7XG4gICAgICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZWQgPSBibi50b0ZpeGVkKGRlY2ltYWxzKTtcbiAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUgJiYgc3RyVmFsLnRyaW0oKS5zdGFydHNXaXRoKCctJykgJiYgYm4uaXNaZXJvKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnLScpID8gbm9ybWFsaXplZCA6IGAtJHtub3JtYWxpemVkfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhbCA9IGAke25vcm1hbGl6ZWR9JHtoYXNEZWNpbWFsUG9pbnQgPyAnLicgOiAnJ31gLnRyaW0oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFZhbHVlKHZhbCk7XG4gICAgICAgIH1cbiAgICAgICAgY2FsY0NhcmV0UG9zKHZhbCAhPT0gbnVsbCAmJiB2YWwgIT09IHZvaWQgMCA/IHZhbCA6ICcnLCBoYXNEZWNpbWFsUG9pbnQgPyAyIDogMCwgTWF0aC5tYXgoaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQsIDApKTtcbiAgICAgICAgaWdub3JlU2VsZWN0UmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgIH0sIFt2YWx1ZSwgbWF4RnJhY3Rpb25EaWdpdHMsIG1pbiwgbWF4LCBuZWdhdGl2ZV0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhbHVlUmVmLmN1cnJlbnQgPSB7XG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIF92YWx1ZSxcbiAgICAgICAgICAgIGZvcm1hdHRlZFZhbHVlLFxuICAgICAgICAgICAgbWluLFxuICAgICAgICAgICAgbWF4LFxuICAgICAgICAgICAgbmVnYXRpdmUsXG4gICAgICAgICAgICBtYXhGcmFjdGlvbkRpZ2l0c1xuICAgICAgICB9O1xuICAgIH0sIFtfdmFsdWUsIHZhbHVlLCBmb3JtYXR0ZWRWYWx1ZSwgbWluLCBtYXgsIG5lZ2F0aXZlLCBtYXhGcmFjdGlvbkRpZ2l0c10pO1xuICAgIHJldHVybiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygnd3JhcHBlcicsIGpvaW5DbHMod3JhcHBlckNscywgY2xhc3NlcyhzaXplKSwgaW52YWxpZCAmJiBjbGFzc2VzKCdpbnZhbGlkJyksIHN1Y2Nlc3MgJiYgY2xhc3Nlcygnc3VjY2VzcycpLCBkaXNhYmxlZCAmJiBjbGFzc2VzKCdkaXNhYmxlZCcpLCByZWFkT25seSAmJiBjbGFzc2VzKCdyZWFkb25seScpLCBfdmFsdWUgJiYgY2xhc3NlcygnZmlsbGVkJykpKSwgY2hpbGRyZW46IFtsYWJlbFxuICAgICAgICAgICAgICAgID8gbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICA/IF9qc3goU2tlbGV0b24sIHsgd2lkdGg6ICc3MnB4JywgaGVpZ2h0OiAnMThweCcsIGNsYXNzTmFtZTogY2xhc3NlcygnbGFiZWwtbG9hZGluZycpIH0pXG4gICAgICAgICAgICAgICAgICAgIDogX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2xhYmVsJywgam9pbkNscyhyZXF1aXJlZCAmJiBjbGFzc2VzKCdsYWJlbC1yZXF1aXJlZCcpLCBsYWJlbENscykpLCBjaGlsZHJlbjogbGFiZWwgfSlcbiAgICAgICAgICAgICAgICA6IG51bGwsIF9qc3hzKFwiZGl2XCIsIHsgcmVmOiBjb250YWluZXJSZWYsIGNsYXNzTmFtZTogY2xhc3Nlcyh2b2lkIDAsIGpvaW5DbHMoY2xhc3NOYW1lLCBpc0ZvY3VzICYmIGNsYXNzZXMoJ2ZvY3VzJykpKSwgb25DbGljazogKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAoX2EgPSBpbnB1dFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWF4V2lkdGgpXG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb0VuZCgpO1xuICAgICAgICAgICAgICAgIH0sIGNoaWxkcmVuOiBbcHJlZml4ICYmIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBwcmVmaXhSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygncHJlZml4JywgcHJlZml4RWxlQ2xzKSwgY2hpbGRyZW46IHByZWZpeCB9KSwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZWxlbWVudCcsICghaXNGb2N1cyAmJiBpc01heFdpZHRoKSA/IGNsYXNzZXMoJ2VsZW1lbnQtbWF4JykgOiAnJyksIGNoaWxkcmVuOiBfanN4KFwiaW5wdXRcIiwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwgeyByZWY6IGlucHV0UmVmLCB2YWx1ZTogZm9ybWF0dGVkVmFsdWUsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgcmVhZE9ubHk6IHJlYWRPbmx5LCBkaXNhYmxlZDogZGlzYWJsZWQsIHN0eWxlOiB7ICctLWlucHV0LXdpZHRoJzogYCR7X3dpZHRofXB4YCB9LCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLCBvblNlbGVjdDogaGFuZGxlU2VsZWN0LCBvbkZvY3VzOiBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNGb2N1cyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cyA9PT0gbnVsbCB8fCBvbkZvY3VzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZvY3VzKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG9uQmx1cjogZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzRm9jdXMoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB9KSkgfSksIGN1cnJlbmN5ICYmIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBjdXJyZW5jeVJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdjdXJyZW5jeScpLCBjaGlsZHJlbjogY3VycmVuY3kgfSksIGxvYWRpbmcgPyBfanN4KFNwaW5uZXIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdzdWZmaXgtbG9hZGluZycpLCBzdHJva2VXaWR0aDogJzQnIH0pIDogc3VmZml4ID8gX2pzeChcInNwYW5cIiwgeyByZWY6IHN1ZmZpeFJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdzdWZmaXgnLCBzdWZmaXhFbGVDbHMpLCBjaGlsZHJlbjogc3VmZml4IH0pIDogbnVsbCwgX2pzeChcInNwYW5cIiwgeyByZWY6IGZha2VFbGVSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygnZmFrZScpLCBvbkNsaWNrOiBlID0+IGUuc3RvcFByb3BhZ2F0aW9uKCksIGNoaWxkcmVuOiBmb3JtYXR0ZWRWYWx1ZSB9KV0gfSksIChtZXNzYWdlIHx8IGZvb3Rub3RlKSAmJiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZXh0cmEnKSwgY2hpbGRyZW46IFttZXNzYWdlICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ21lc3NhZ2UnLCBtZXNzYWdlQ2xzKSwgY2hpbGRyZW46IG1lc3NhZ2UgfSksIGZvb3Rub3RlICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2Zvb3Rub3RlJywgZm9vdG5vdGVDbHMpLCBjaGlsZHJlbjogZm9vdG5vdGUgfSldIH0pXSB9KTtcbn07XG5leHBvcnQgZGVmYXVsdCBtZW1vKElucHV0QW1vdW50KTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
403
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJtZW1vIiwidXNlTWVtbyIsInVzZVN0YXRlIiwidXNlQ2FsbGJhY2siLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJ1c2VMYXlvdXRFZmZlY3QiLCJCaWdOdW1iZXIiLCJudW1lcmljRm9ybWF0dGVyIiwiU2tlbGV0b24iLCJTcGlubmVyIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJqb2luQ2xzIiwiTUlOX0lOUFVUX1dJRFRIIiwibm9ybWFsaXplTnVtYmVySW5wdXQiLCJ2YWwiLCJyZXBsYWNlIiwiY2FsY1ZhbHVlSW5SYW5nZSIsIm1pbiIsIm1heCIsImlzTmFOIiwiY2FsY1ZhbCIsImJuVmFsIiwibWluQm4iLCJsdCIsIm1heEJuIiwiZ3QiLCJJbnB1dEFtb3VudCIsInByb3BzIiwidmFsdWUiLCJfcHJvcHMkdHlwZSIsInR5cGUiLCJtYXhGcmFjdGlvbkRpZ2l0cyIsImNoaWxkcmVuIiwiX3Byb3BzJHBsYWNlaG9sZGVyIiwicGxhY2Vob2xkZXIiLCJfcHJvcHMkc2l6ZSIsInNpemUiLCJmb290bm90ZSIsImZvb3Rub3RlQ2xzIiwiY2xhc3NOYW1lIiwid3JhcHBlckNscyIsImxhYmVsQ2xzIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsIm1lc3NhZ2VDbHMiLCJwcmVmaXhFbGVDbHMiLCJzdWZmaXhFbGVDbHMiLCJpbnZhbGlkIiwibmVnYXRpdmUiLCJyZXF1aXJlZCIsImxvYWRpbmciLCJzdWNjZXNzIiwiZGlzYWJsZWQiLCJyZWFkT25seSIsImxhYmVsIiwicHJlZml4Iiwic3VmZml4IiwiY3VycmVuY3kiLCJtZXNzYWdlIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJvbkZvY3VzIiwicmVzdCIsImNsYXNzZXMiLCJjb25jYXQiLCJpbnB1dFJlZiIsImZha2VFbGVSZWYiLCJwcmVmaXhSZWYiLCJzdWZmaXhSZWYiLCJjdXJyZW5jeVJlZiIsImNvbnRhaW5lclJlZiIsImlucHV0Q2FyZXRQb3NpdGlvblJlZiIsImlnbm9yZVNlbGVjdFJlZiIsIm9uQ2hhbmdlUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiX3ZhbHVlIiwic2V0VmFsdWUiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsIl93aWR0aCIsInNldFdpZHRoIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpc01heFdpZHRoIiwic2V0SXNNYXhXaWR0aCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiaXNGb2N1cyIsInNldElzRm9jdXMiLCJmb3JtYXR0ZWRWYWx1ZSIsInRob3VzYW5kU2VwYXJhdG9yIiwiYWxsb3dOZWdhdGl2ZSIsInZhbHVlUmVmIiwic2Nyb2xsVG9FbmQiLCJzdGlja3kiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJfYSIsImlucHV0IiwiY3VycmVudCIsImxlbiIsInBvc2l0aW9uIiwic2Nyb2xsTGVmdCIsInNob3VsZFRvRW5kIiwic3RhcnQiLCJzZXRTZWxlY3Rpb25SYW5nZSIsInNjcm9sbFdpZHRoIiwiZm9jdXMiLCJjYWxjQ2FyZXRQb3MiLCJvZmZzZXQiLCJjdXJyUG9zIiwiX2IiLCJfYyIsIl92YWx1ZVJlZiRjdXJyZW50IiwiZm9ybWF0dGVkTmV3VmFsIiwib3JpZ2luT2Zmc2V0IiwiaXNBZGQiLCJpZ25vcmVPbGRQb3MiLCJzZWxlY3Rpb25FbmQiLCJvbGRQb3NWYWwiLCJzbGljZSIsIk1hdGgiLCJzcGxpdCIsImpvaW4iLCJwb3NWYWwiLCJyZWR1Y2UiLCJhY2MiLCJjaGFyIiwiaW5kIiwicHVzaCIsImhhbmRsZUNoYW5nZSIsIl9kIiwiX3ZhbHVlUmVmJGN1cnJlbnQyIiwidGFyZ2V0IiwiaGFzRGVjaW1hbFBvaW50IiwiZW5kc1dpdGgiLCJpbmNsdWRlcyIsImlzU3RhbmRhbG9uZU1pbnVzIiwiX3ZhbCRzcGxpdCIsIl92YWwkc3BsaXQyIiwiaW50IiwiZGVjaW1hbCIsIm1heERlY2ltYWxzIiwiTnVtYmVyIiwidHJ1bmNhdGVkRGVjaW1hbHMiLCJfZm9ybWF0dGVkVmFsdWUkc3BsaXQiLCJfZm9ybWF0dGVkVmFsdWUkc3BsaXQyIiwib2xkSW50IiwiZGVjaW1hbHMiLCJtYXRjaCIsImJuIiwibm9ybWFsaXplZCIsInRvRml4ZWQiLCJ0cmltIiwic3RhcnRzV2l0aCIsImlzWmVybyIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiaGFuZGxlU2VsZWN0IiwiX2UiLCJfZiIsIl9nIiwiX2giLCJfaiIsIl9rIiwiY29udGFpbmVyV2lkdGgiLCJvZmZzZXRXaWR0aCIsInByZWZpeFdpZHRoIiwic3VmZml4V2lkdGgiLCJjdXJyZW5jeVdpZHRoIiwiZmFrZVdpZHRoIiwiZ2FwV2lkdGgiLCJtYXhXaWR0aCIsImlzTWF4IiwiYWJzIiwiemVybyIsIkJpZ0ludCIsIl9zcGxpdCIsIl9zcGxpdDIiLCJzdHJWYWwiLCJ3aWR0aCIsImhlaWdodCIsInJlZiIsIm9uQ2xpY2siLCJIVE1MSW5wdXRFbGVtZW50IiwiYXNzaWduIiwic3R5bGUiLCJvblNlbGVjdCIsInN0cm9rZVdpZHRoIl0sIm1hcHBpbmdzIjoiO0FBQUEsSUFBSUEsTUFBTSxHQUFJLElBQUksSUFBSSxJQUFJLENBQUNBLE1BQU0sSUFBSyxVQUFVQyxDQUFDLEVBQUVDLENBQUMsRUFBRTtFQUNsRCxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQ1YsS0FBSyxJQUFJQyxDQUFDLElBQUlILENBQUMsRUFBRSxJQUFJSSxNQUFNLENBQUNDLFNB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U0FBUyxFQUFFbkIsVUFBVSxDQUFDO1FBQUFaLFFBQUEsRUFBRzBCO01BQU8sQ0FBQSxDQUFPLEVBQzFFckIsUUFBUSxJQUFJMUMsSUFBQSxDQUFBLEtBQUEsRUFBQTtRQUFLNEMsU0FBUyxFQUFFd0IsT0FBTyxDQUFDLFVBQVUsRUFBRXpCLFdBQVcsQ0FBQztRQUFBTixRQUFBLEVBQUdLO01BQVEsQ0FBQSxDQUFPO0lBQUEsQ0FBQSxDQUMzRTtFQUFBLENBQUEsQ0FFSjtBQUNSLENBQUM7QUFFRCw0QkFBZXZDLElBQUksQ0FBQzRCLFdBQVcsQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZU1lbW8sIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IG51bWVyaWNGb3JtYXR0ZXIgfSBmcm9tICdyZWFjdC1udW1iZXItZm9ybWF0JztcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSAncHJpbWVyZWFjdC9za2VsZXRvbic7XG5pbXBvcnQgU3Bpbm5lciBmcm9tICcuLi9TcGlubmVyJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcywgam9pbkNscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuY29uc3QgTUlOX0lOUFVUX1dJRFRIID0gMzM7XG5jb25zdCBub3JtYWxpemVOdW1iZXJJbnB1dCA9ICh2YWwpID0+IHZhbFxuICAgIC5yZXBsYWNlKC9bXFx1MzAwMlxcdWZmMGVcXHVmZjYxXS9nLCAnLicpXG4gICAgLnJlcGxhY2UoL1tcXHVGRjBDXS9nLCAnLCcpO1xuY29uc3QgY2FsY1ZhbHVlSW5SYW5nZSA9ICh2YWwsIG1pbiwgbWF4KSA9PiB7XG4gICAgaWYgKHZhbCA9PT0gJycgfHwgdmFsID09PSAnLScgfHwgaXNOYU4oK3ZhbCkpXG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgbGV0IGNhbGNWYWwgPSB2YWw7XG4gICAgY29uc3QgYm5WYWwgPSBCaWdOdW1iZXIodmFsKTtcbiAgICBpZiAodHlwZW9mIG1pbiA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1pbiA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgY29uc3QgbWluQm4gPSBCaWdOdW1iZXIobWluKTtcbiAgICAgICAgaWYgKGJuVmFsLmx0KG1pbkJuKSkge1xuICAgICAgICAgICAgY2FsY1ZhbCA9ICcnICsgbWluO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgbWF4ID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWF4ID09PSAnYmlnaW50Jykge1xuICAgICAgICBjb25zdCBtYXhCbiA9IEJpZ051bWJlcihtYXgpO1xuICAgICAgICBpZiAoYm5WYWwuZ3QobWF4Qm4pKSB7XG4gICAgICAgICAgICBjYWxjVmFsID0gJycgKyBtYXg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNhbGNWYWw7XG59O1xuZXhwb3J0IGNvbnN0IElucHV0QW1vdW50ID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgdmFsdWUsIHR5cGUgPSAncHJpbWFyeScsIG1heEZyYWN0aW9uRGlnaXRzLCBjaGlsZHJlbiwgcGxhY2Vob2xkZXIgPSAnMCcsIG1pbiwgbWF4LCBcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgc2l6ZSA9ICdsYXJnZScsIGZvb3Rub3RlLCBmb290bm90ZUNscywgY2xhc3NOYW1lLCB3cmFwcGVyQ2xzLCBsYWJlbENscywgcHJlZml4Q2xzID0gJ2lucHV0LWFtb3VudCcsIG1lc3NhZ2VDbHMsIHByZWZpeEVsZUNscywgc3VmZml4RWxlQ2xzLCBpbnZhbGlkLCBuZWdhdGl2ZSwgcmVxdWlyZWQsIGxvYWRpbmcsIHN1Y2Nlc3MsIGRpc2FibGVkLCByZWFkT25seSwgbGFiZWwsIHByZWZpeCwgc3VmZml4LCBjdXJyZW5jeSwgbWVzc2FnZSwgb25DaGFuZ2UsIG9uQmx1ciwgb25Gb2N1cyB9ID0gcHJvcHMsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcInZhbHVlXCIsIFwidHlwZVwiLCBcIm1heEZyYWN0aW9uRGlnaXRzXCIsIFwiY2hpbGRyZW5cIiwgXCJwbGFjZWhvbGRlclwiLCBcIm1pblwiLCBcIm1heFwiLCBcInNpemVcIiwgXCJmb290bm90ZVwiLCBcImZvb3Rub3RlQ2xzXCIsIFwiY2xhc3NOYW1lXCIsIFwid3JhcHBlckNsc1wiLCBcImxhYmVsQ2xzXCIsIFwicHJlZml4Q2xzXCIsIFwibWVzc2FnZUNsc1wiLCBcInByZWZpeEVsZUNsc1wiLCBcInN1ZmZpeEVsZUNsc1wiLCBcImludmFsaWRcIiwgXCJuZWdhdGl2ZVwiLCBcInJlcXVpcmVkXCIsIFwibG9hZGluZ1wiLCBcInN1Y2Nlc3NcIiwgXCJkaXNhYmxlZFwiLCBcInJlYWRPbmx5XCIsIFwibGFiZWxcIiwgXCJwcmVmaXhcIiwgXCJzdWZmaXhcIiwgXCJjdXJyZW5jeVwiLCBcIm1lc3NhZ2VcIiwgXCJvbkNoYW5nZVwiLCBcIm9uQmx1clwiLCBcIm9uRm9jdXNcIl0pO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKGAke3ByZWZpeENsc30tJHt0eXBlfWApO1xuICAgIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGZha2VFbGVSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgcHJlZml4UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHN1ZmZpeFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjdXJyZW5jeVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgaW5wdXRDYXJldFBvc2l0aW9uUmVmID0gdXNlUmVmKDApO1xuICAgIGNvbnN0IGlnbm9yZVNlbGVjdFJlZiA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3Qgb25DaGFuZ2VSZWYgPSB1c2VSZWYob25DaGFuZ2UpO1xuICAgIGNvbnN0IFtfdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtfd2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlKE1JTl9JTlBVVF9XSURUSCk7XG4gICAgY29uc3QgW2lzTWF4V2lkdGgsIHNldElzTWF4V2lkdGhdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpc0ZvY3VzLCBzZXRJc0ZvY3VzXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICByZXR1cm4gbnVtZXJpY0Zvcm1hdHRlcignJyArIChfdmFsdWUgPT0gbnVsbCA/ICcnIDogX3ZhbHVlKSwge1xuICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiBuZWdhdGl2ZSxcbiAgICAgICAgfSk7XG4gICAgfSwgW192YWx1ZSwgbmVnYXRpdmVdKTtcbiAgICBjb25zdCB2YWx1ZVJlZiA9IHVzZVJlZih7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBfdmFsdWUsXG4gICAgICAgIGZvcm1hdHRlZFZhbHVlLFxuICAgICAgICBtaW4sXG4gICAgICAgIG1heCxcbiAgICAgICAgbmVnYXRpdmUsXG4gICAgICAgIG1heEZyYWN0aW9uRGlnaXRzLFxuICAgIH0pO1xuICAgIGNvbnN0IHNjcm9sbFRvRW5kID0gdXNlQ2FsbGJhY2soKHN0aWNreSA9IGZhbHNlKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBpbnB1dFJlZi5jdXJyZW50O1xuICAgICAgICBpZiAoIWlucHV0KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBsZW4gPSAoX2EgPSBpbnB1dC52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aDtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSBpbnB1dC5zY3JvbGxMZWZ0O1xuICAgICAgICBjb25zdCBzaG91bGRUb0VuZCA9ICFzdGlja3k7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gc2hvdWxkVG9FbmQgPyBsZW4gOiBpbnB1dENhcmV0UG9zaXRpb25SZWYuY3VycmVudDtcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2Uoc3RhcnQsIHN0YXJ0KTtcbiAgICAgICAgaW5wdXQuc2Nyb2xsTGVmdCA9IHNob3VsZFRvRW5kID8gaW5wdXQuc2Nyb2xsV2lkdGggOiBwb3NpdGlvbjtcbiAgICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICB9LCBbXSk7XG4gICAgY29uc3QgY2FsY0NhcmV0UG9zID0gdXNlQ2FsbGJhY2soKHZhbCwgb2Zmc2V0ID0gMCwgY3VyclBvcykgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgaWYgKGlucHV0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgX3ZhbHVlLCBuZWdhdGl2ZSwgZm9ybWF0dGVkVmFsdWUgfSA9IHZhbHVlUmVmLmN1cnJlbnQ7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWROZXdWYWwgPSBudW1lcmljRm9ybWF0dGVyKHZhbCwge1xuICAgICAgICAgICAgICAgIHRob3VzYW5kU2VwYXJhdG9yOiB0cnVlLFxuICAgICAgICAgICAgICAgIGFsbG93TmVnYXRpdmU6IG5lZ2F0aXZlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5PZmZzZXQgPSB2YWwubGVuZ3RoIC0gKChfYSA9IF92YWx1ZSA9PT0gbnVsbCB8fCBfdmFsdWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF92YWx1ZS5sZW5ndGgpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDApO1xuICAgICAgICAgICAgY29uc3QgaXNBZGQgPSBvcmlnaW5PZmZzZXQgPiAwO1xuICAgICAgICAgICAgY29uc3QgaWdub3JlT2xkUG9zID0gaXNBZGQgPyB2YWwubGVuZ3RoIC0gKChfYiA9IF92YWx1ZSA9PT0gbnVsbCB8fCBfdmFsdWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF92YWx1ZS5sZW5ndGgpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDApID4gMSA6IGZhbHNlO1xuICAgICAgICAgICAgbGV0IHBvc2l0aW9uID0gKF9jID0gY3VyclBvcyAhPT0gbnVsbCAmJiBjdXJyUG9zICE9PSB2b2lkIDAgPyBjdXJyUG9zIDogaW5wdXRSZWYuY3VycmVudC5zZWxlY3Rpb25FbmQpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDA7XG4gICAgICAgICAgICBpZiAoIWlnbm9yZU9sZFBvcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9sZFBvc1ZhbCA9IGZvcm1hdHRlZFZhbHVlLnNsaWNlKDAsIE1hdGgubWF4KHBvc2l0aW9uLCAwKSk7XG4gICAgICAgICAgICAgICAgcG9zaXRpb24gPSBvbGRQb3NWYWwuc3BsaXQoJywnKS5qb2luKCcnKS5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwb3NWYWwgPSB2YWwuc2xpY2UoMCwgKHBvc2l0aW9uICsgb3JpZ2luT2Zmc2V0KSk7XG4gICAgICAgICAgICBmb3JtYXR0ZWROZXdWYWwuc3BsaXQoJycpLnJlZHVjZSgoYWNjLCBjaGFyLCBpbmQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY2hhciA9PT0gJywnKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYWNjLnB1c2goY2hhcik7XG4gICAgICAgICAgICAgICAgaWYgKGFjYy5qb2luKCcnKSA9PT0gcG9zVmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gaW5kICsgMTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgICAgIGlucHV0Q2FyZXRQb3NpdGlvblJlZi5jdXJyZW50ID0gcG9zaXRpb24gKyBvZmZzZXQ7XG4gICAgICAgIH1cbiAgICB9LCBbXSk7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKGUpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgICAgICBpZiAoZGlzYWJsZWQgfHwgcmVhZE9ubHkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHsgdmFsdWUsIF92YWx1ZSwgZm9ybWF0dGVkVmFsdWUsIG1pbiwgbWF4LCBuZWdhdGl2ZSwgbWF4RnJhY3Rpb25EaWdpdHMgfSA9IHZhbHVlUmVmLmN1cnJlbnQ7XG4gICAgICAgIGxldCB2YWwgPSBlLnRhcmdldC52YWx1ZTtcbiAgICAgICAgaWYgKHZhbCAhPSBudWxsKVxuICAgICAgICAgICAgdmFsID0gbm9ybWFsaXplTnVtYmVySW5wdXQodmFsKS5zcGxpdCgnLCcpLmpvaW4oJycpO1xuICAgICAgICBjb25zdCBoYXNEZWNpbWFsUG9pbnQgPSAhIXZhbCAmJiB2YWwuZW5kc1dpdGgoJy4nKTtcbiAgICAgICAgaWYgKGhhc0RlY2ltYWxQb2ludClcbiAgICAgICAgICAgIHZhbCA9IHZhbC5zbGljZSgwLCAtMSk7XG4gICAgICAgIGlmICghbmVnYXRpdmUgJiYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHZhbC5pbmNsdWRlcygnLScpKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgaXNTdGFuZGFsb25lTWludXMgPSBuZWdhdGl2ZSAmJiB2YWwgPT09ICctJztcbiAgICAgICAgaWYgKCFpc1N0YW5kYWxvbmVNaW51cyAmJiBpc05hTigrdmFsKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKHZhbCA9PT0gX3ZhbHVlICYmICFoYXNEZWNpbWFsUG9pbnQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdudW1iZXInIHx8IHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgICAgIGNvbnN0IFtpbnQsIGRlY2ltYWxdID0gdmFsLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICBjb25zdCBtYXhEZWNpbWFscyA9IE51bWJlcihtYXhGcmFjdGlvbkRpZ2l0cyk7XG4gICAgICAgICAgICBpZiAoZGVjaW1hbCAhPSBudWxsICYmIGRlY2ltYWwubGVuZ3RoID4gbWF4RGVjaW1hbHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0cnVuY2F0ZWREZWNpbWFscyA9IGRlY2ltYWwuc2xpY2UoMCwgbWF4RGVjaW1hbHMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IFtvbGRJbnQsXSA9IGZvcm1hdHRlZFZhbHVlLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICAgICAgaWYgKG9sZEludC5zcGxpdCgnLCcpLmpvaW4oJycpID09IGludClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIHZhbCA9IGAke2ludH0uJHt0cnVuY2F0ZWREZWNpbWFsc31gO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICgodHlwZW9mIG1pbiA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1pbiA9PT0gJ2JpZ2ludCcpIHx8ICh0eXBlb2YgbWF4ID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWF4ID09PSAnYmlnaW50JykpIHtcbiAgICAgICAgICAgIHZhbCA9IGNhbGNWYWx1ZUluUmFuZ2UodmFsLCBtaW4sIG1heCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbCAhPT0gJycpIHtcbiAgICAgICAgICAgIGlmIChpc1N0YW5kYWxvbmVNaW51cykge1xuICAgICAgICAgICAgICAgIHZhbCA9ICctJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlY2ltYWxzID0gKF9jID0gKF9iID0gKF9hID0gdmFsLm1hdGNoKC9cXC4oXFxkKykkLykpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVsxXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmxlbmd0aCkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogMDtcbiAgICAgICAgICAgICAgICBjb25zdCBibiA9IEJpZ051bWJlcih2YWwpO1xuICAgICAgICAgICAgICAgIGxldCBub3JtYWxpemVkID0gYm4udG9GaXhlZChkZWNpbWFscyk7XG4gICAgICAgICAgICAgICAgaWYgKG5lZ2F0aXZlICYmIHZhbC50cmltKCkuc3RhcnRzV2l0aCgnLScpICYmIGJuLmlzWmVybygpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVkLnN0YXJ0c1dpdGgoJy0nKSA/IG5vcm1hbGl6ZWQgOiBgLSR7bm9ybWFsaXplZH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YWwgPSBgJHtub3JtYWxpemVkfSR7aGFzRGVjaW1hbFBvaW50ID8gJy4nIDogJyd9YC50cmltKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHNldFZhbHVlKHZhbCA9PT0gJycgPyBudWxsIDogdmFsKTtcbiAgICAgICAgICAgIGNhbGNDYXJldFBvcyh2YWwsIGhhc0RlY2ltYWxQb2ludCA/IDIgOiAwLCBNYXRoLm1heChpbnB1dENhcmV0UG9zaXRpb25SZWYuY3VycmVudCwgMCkpO1xuICAgICAgICAgICAgaWdub3JlU2VsZWN0UmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICAoX2QgPSBvbkNoYW5nZVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QuY2FsbChvbkNoYW5nZVJlZiwgZSwgdmFsKTtcbiAgICB9LCBbZGlzYWJsZWQsIHJlYWRPbmx5XSk7XG4gICAgY29uc3QgaGFuZGxlU2VsZWN0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChpZ25vcmVTZWxlY3RSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgaWdub3JlU2VsZWN0UmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyUG9zID0gKF9hID0gaW5wdXRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNlbGVjdGlvbkVuZDtcbiAgICAgICAgaWYgKHR5cGVvZiBjdXJyUG9zID09PSAnbnVtYmVyJylcbiAgICAgICAgICAgIGlucHV0Q2FyZXRQb3NpdGlvblJlZi5jdXJyZW50ID0gY3VyclBvcztcbiAgICB9LCBbXSk7XG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nLCBfaCwgX2osIF9rO1xuICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IChfYiA9IChfYSA9IGNvbnRhaW5lclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IE1JTl9JTlBVVF9XSURUSDtcbiAgICAgICAgY29uc3QgcHJlZml4V2lkdGggPSAoX2QgPSAoX2MgPSBwcmVmaXhSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAwO1xuICAgICAgICBjb25zdCBzdWZmaXhXaWR0aCA9IChfZiA9IChfZSA9IHN1ZmZpeFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Uub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9mICE9PSB2b2lkIDAgPyBfZiA6IDA7XG4gICAgICAgIGNvbnN0IGN1cnJlbmN5V2lkdGggPSAoX2ggPSAoX2cgPSBjdXJyZW5jeVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2cub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9oICE9PSB2b2lkIDAgPyBfaCA6IDA7XG4gICAgICAgIGNvbnN0IGZha2VXaWR0aCA9IChfayA9IChfaiA9IGZha2VFbGVSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2ogPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9qLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfayAhPT0gdm9pZCAwID8gX2sgOiAwO1xuICAgICAgICBjb25zdCBnYXBXaWR0aCA9IHByZWZpeFdpZHRoICYmIHN1ZmZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGhcbiAgICAgICAgICAgID8gMjRcbiAgICAgICAgICAgIDogKHByZWZpeFdpZHRoICYmIHN1ZmZpeFdpZHRoKSB8fCAocHJlZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aCkgfHwgKHN1ZmZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGgpXG4gICAgICAgICAgICAgICAgPyAxNlxuICAgICAgICAgICAgICAgIDogcHJlZml4V2lkdGggfHwgc3VmZml4V2lkdGggfHwgY3VycmVuY3lXaWR0aFxuICAgICAgICAgICAgICAgICAgICA/IDhcbiAgICAgICAgICAgICAgICAgICAgOiAwO1xuICAgICAgICBjb25zdCBtYXhXaWR0aCA9IGNvbnRhaW5lcldpZHRoIC0gcHJlZml4V2lkdGggLSBzdWZmaXhXaWR0aCAtIGN1cnJlbmN5V2lkdGggLSBnYXBXaWR0aDtcbiAgICAgICAgY29uc3QgaXNNYXggPSBmYWtlV2lkdGggPj0gbWF4V2lkdGg7XG4gICAgICAgIHNldFdpZHRoKE1hdGgubWluKG1heFdpZHRoLCBNYXRoLm1heChmYWtlV2lkdGgsIE1JTl9JTlBVVF9XSURUSCkpKTtcbiAgICAgICAgc2V0SXNNYXhXaWR0aChpc01heCk7XG4gICAgICAgIGlmIChpc0ZvY3VzKVxuICAgICAgICAgICAgc2Nyb2xsVG9FbmQodHJ1ZSk7XG4gICAgfSwgW192YWx1ZSwgcHJlZml4LCBzdWZmaXgsIGN1cnJlbmN5LCBpc0ZvY3VzXSk7XG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgICAgICBsZXQgdmFsID0gdHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyA/IF92YWx1ZSA6IHZhbHVlO1xuICAgICAgICBsZXQgaGFzRGVjaW1hbFBvaW50ID0gZmFsc2U7XG4gICAgICAgIGxldCBpc1N0YW5kYWxvbmVNaW51cyA9IGZhbHNlO1xuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmICh2YWwgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbCA9IG5vcm1hbGl6ZU51bWJlcklucHV0KHZhbCkuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICAgICAgICAgICAgICBoYXNEZWNpbWFsUG9pbnQgPSAhIXZhbCAmJiB2YWwuZW5kc1dpdGgoJy4nKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzRGVjaW1hbFBvaW50KVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMCwgLTEpO1xuICAgICAgICAgICAgICAgIGlmICghbmVnYXRpdmUpXG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKC8tL2csICcnKTtcbiAgICAgICAgICAgICAgICBpc1N0YW5kYWxvbmVNaW51cyA9ICEhbmVnYXRpdmUgJiYgdmFsID09PSAnLSc7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1N0YW5kYWxvbmVNaW51cyAmJiBpc05hTigrdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbCAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgdmFsICE9PSAnYmlnaW50JylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKCFuZWdhdGl2ZSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gTWF0aC5hYnModmFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgemVybyA9IEJpZ0ludCgwKTtcbiAgICAgICAgICAgICAgICB2YWwgPSB2YWwgPCB6ZXJvID8gLXZhbCA6IHZhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSAmJlxuICAgICAgICAgICAgKHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnYmlnaW50JykpIHtcbiAgICAgICAgICAgIGNvbnN0IFtpbnQsIGRlY2ltYWxdID0gKCcnICsgdmFsKS5zcGxpdCgnLicpO1xuICAgICAgICAgICAgY29uc3QgbWF4RGVjaW1hbHMgPSBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpO1xuICAgICAgICAgICAgaWYgKGRlY2ltYWwgIT0gbnVsbCAmJiBkZWNpbWFsLmxlbmd0aCA+IG1heERlY2ltYWxzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHJ1bmNhdGVkRGVjaW1hbHMgPSBkZWNpbWFsLnNsaWNlKDAsIG1heERlY2ltYWxzKTtcbiAgICAgICAgICAgICAgICB2YWwgPSBgJHtpbnR9LiR7dHJ1bmNhdGVkRGVjaW1hbHN9YDtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZSh2YWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICAgICAgICAgICAgICAoX2EgPSBvbkNoYW5nZVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChvbkNoYW5nZVJlZiwgeyB0YXJnZXQ6IGlucHV0UmVmLmN1cnJlbnQgfSwgdmFsICE9PSBudWxsICYmIHZhbCAhPT0gdm9pZCAwID8gdmFsIDogJycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWwgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICAgICB2YWwgPSBjYWxjVmFsdWVJblJhbmdlKCcnICsgdmFsLCBtaW4sIG1heCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbCA9PT0gJycgfHwgdmFsID09IG51bGwpIHtcbiAgICAgICAgICAgIHNldFZhbHVlKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzU3RhbmRhbG9uZU1pbnVzKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gJy0nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RyVmFsID0gJycgKyB2YWw7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVjaW1hbHMgPSAoX2QgPSAoX2MgPSAoX2IgPSBzdHJWYWwubWF0Y2goL1xcLihcXGQrKSQvKSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iWzFdKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MubGVuZ3RoKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJuID0gQmlnTnVtYmVyKHN0clZhbCk7XG4gICAgICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZWQgPSBibi50b0ZpeGVkKGRlY2ltYWxzKTtcbiAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUgJiYgc3RyVmFsLnRyaW0oKS5zdGFydHNXaXRoKCctJykgJiYgYm4uaXNaZXJvKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnLScpID8gbm9ybWFsaXplZCA6IGAtJHtub3JtYWxpemVkfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhbCA9IGAke25vcm1hbGl6ZWR9JHtoYXNEZWNpbWFsUG9pbnQgPyAnLicgOiAnJ31gLnRyaW0oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFZhbHVlKHZhbCk7XG4gICAgICAgIH1cbiAgICAgICAgY2FsY0NhcmV0UG9zKHZhbCAhPT0gbnVsbCAmJiB2YWwgIT09IHZvaWQgMCA/IHZhbCA6ICcnLCBoYXNEZWNpbWFsUG9pbnQgPyAyIDogMCwgTWF0aC5tYXgoaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQsIDApKTtcbiAgICAgICAgaWdub3JlU2VsZWN0UmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgIH0sIFt2YWx1ZSwgbWF4RnJhY3Rpb25EaWdpdHMsIG1pbiwgbWF4LCBuZWdhdGl2ZV0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIG9uQ2hhbmdlUmVmLmN1cnJlbnQgPSBvbkNoYW5nZTtcbiAgICAgICAgdmFsdWVSZWYuY3VycmVudCA9IHtcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgX3ZhbHVlLFxuICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUsXG4gICAgICAgICAgICBtaW4sXG4gICAgICAgICAgICBtYXgsXG4gICAgICAgICAgICBuZWdhdGl2ZSxcbiAgICAgICAgICAgIG1heEZyYWN0aW9uRGlnaXRzXG4gICAgICAgIH07XG4gICAgfSwgW192YWx1ZSwgdmFsdWUsIGZvcm1hdHRlZFZhbHVlLCBtaW4sIG1heCwgbmVnYXRpdmUsIG1heEZyYWN0aW9uRGlnaXRzLCBvbkNoYW5nZV0pO1xuICAgIHJldHVybiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygnd3JhcHBlcicsIGpvaW5DbHMod3JhcHBlckNscywgY2xhc3NlcyhzaXplKSwgaW52YWxpZCAmJiBjbGFzc2VzKCdpbnZhbGlkJyksIHN1Y2Nlc3MgJiYgY2xhc3Nlcygnc3VjY2VzcycpLCBkaXNhYmxlZCAmJiBjbGFzc2VzKCdkaXNhYmxlZCcpLCByZWFkT25seSAmJiBjbGFzc2VzKCdyZWFkb25seScpLCBfdmFsdWUgJiYgY2xhc3NlcygnZmlsbGVkJykpKSwgY2hpbGRyZW46IFtsYWJlbFxuICAgICAgICAgICAgICAgID8gbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICA/IF9qc3goU2tlbGV0b24sIHsgd2lkdGg6ICc3MnB4JywgaGVpZ2h0OiAnMThweCcsIGNsYXNzTmFtZTogY2xhc3NlcygnbGFiZWwtbG9hZGluZycpIH0pXG4gICAgICAgICAgICAgICAgICAgIDogX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2xhYmVsJywgam9pbkNscyhyZXF1aXJlZCAmJiBjbGFzc2VzKCdsYWJlbC1yZXF1aXJlZCcpLCBsYWJlbENscykpLCBjaGlsZHJlbjogbGFiZWwgfSlcbiAgICAgICAgICAgICAgICA6IG51bGwsIF9qc3hzKFwiZGl2XCIsIHsgcmVmOiBjb250YWluZXJSZWYsIGNsYXNzTmFtZTogY2xhc3Nlcyh2b2lkIDAsIGpvaW5DbHMoY2xhc3NOYW1lLCBpc0ZvY3VzICYmIGNsYXNzZXMoJ2ZvY3VzJykpKSwgb25DbGljazogKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAoX2EgPSBpbnB1dFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWF4V2lkdGgpXG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb0VuZCgpO1xuICAgICAgICAgICAgICAgIH0sIGNoaWxkcmVuOiBbcHJlZml4ICYmIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBwcmVmaXhSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygncHJlZml4JywgcHJlZml4RWxlQ2xzKSwgY2hpbGRyZW46IHByZWZpeCB9KSwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZWxlbWVudCcsICghaXNGb2N1cyAmJiBpc01heFdpZHRoKSA/IGNsYXNzZXMoJ2VsZW1lbnQtbWF4JykgOiAnJyksIGNoaWxkcmVuOiBfanN4KFwiaW5wdXRcIiwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwgeyByZWY6IGlucHV0UmVmLCB2YWx1ZTogZm9ybWF0dGVkVmFsdWUsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgcmVhZE9ubHk6IHJlYWRPbmx5LCBkaXNhYmxlZDogZGlzYWJsZWQsIHN0eWxlOiB7ICctLWlucHV0LXdpZHRoJzogYCR7X3dpZHRofXB4YCB9LCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLCBvblNlbGVjdDogaGFuZGxlU2VsZWN0LCBvbkZvY3VzOiBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNGb2N1cyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cyA9PT0gbnVsbCB8fCBvbkZvY3VzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZvY3VzKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG9uQmx1cjogZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzRm9jdXMoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB9KSkgfSksIGN1cnJlbmN5ICYmIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBjdXJyZW5jeVJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdjdXJyZW5jeScpLCBjaGlsZHJlbjogY3VycmVuY3kgfSksIGxvYWRpbmcgPyBfanN4KFNwaW5uZXIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdzdWZmaXgtbG9hZGluZycpLCBzdHJva2VXaWR0aDogJzQnIH0pIDogc3VmZml4ID8gX2pzeChcInNwYW5cIiwgeyByZWY6IHN1ZmZpeFJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdzdWZmaXgnLCBzdWZmaXhFbGVDbHMpLCBjaGlsZHJlbjogc3VmZml4IH0pIDogbnVsbCwgX2pzeChcInNwYW5cIiwgeyByZWY6IGZha2VFbGVSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygnZmFrZScpLCBvbkNsaWNrOiBlID0+IGUuc3RvcFByb3BhZ2F0aW9uKCksIGNoaWxkcmVuOiBmb3JtYXR0ZWRWYWx1ZSB9KV0gfSksIChtZXNzYWdlIHx8IGZvb3Rub3RlKSAmJiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZXh0cmEnKSwgY2hpbGRyZW46IFttZXNzYWdlICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ21lc3NhZ2UnLCBtZXNzYWdlQ2xzKSwgY2hpbGRyZW46IG1lc3NhZ2UgfSksIGZvb3Rub3RlICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2Zvb3Rub3RlJywgZm9vdG5vdGVDbHMpLCBjaGlsZHJlbjogZm9vdG5vdGUgfSldIH0pXSB9KTtcbn07XG5leHBvcnQgZGVmYXVsdCBtZW1vKElucHV0QW1vdW50KTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=