@thx/controls 15.0.0 → 15.3.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/dist/date/LocalDatePicker/MaskedDateInput.d.ts +2 -2
- package/dist/date/LocalTimePicker/MaskedTimeInput.d.ts +2 -2
- package/dist/form/TForm/useTForm.d.ts +6 -6
- package/dist/index.js +327 -349
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/inputs/Scriptel/ScriptelContext.d.ts +2 -2
- package/dist/inputs/Scriptel/withScriptel.d.ts +1 -0
- package/dist/inputs/TableInput/DropdownCell.d.ts +1 -0
- package/dist/inputs/TableInput/HoverCell.d.ts +1 -0
- package/dist/inputs/TableInput/MoneyCell.d.ts +1 -0
- package/dist/inputs/TableInput/MoneyEditCell.d.ts +1 -0
- package/dist/inputs/TableInput/MoneySumFooter.d.ts +1 -0
- package/dist/inputs/TableInput/StringEditCell.d.ts +1 -0
- package/dist/step/stepContext.d.ts +2 -2
- package/package.json +6 -6
- package/dist/date/DatePicker/datepicker.stories.d.ts +0 -7
- package/dist/date/LocalDatePicker/localdatepicker.stories.d.ts +0 -8
- package/dist/date/LocalDatePicker/maskeddateinput.stories.d.ts +0 -5
- package/dist/date/LocalMonthSelect/localmonthselect.stories.d.ts +0 -6
- package/dist/date/LocalTimePicker/localtimepicker.stories.d.ts +0 -7
- package/dist/date/LocalTimePicker/maskedtimeinput.stories.d.ts +0 -7
- package/dist/date/MonthDayPicker/monthdaypicker.stories.d.ts +0 -7
- package/dist/date/MonthYearPicker/monthyearpicker.stories.d.ts +0 -8
- package/dist/date/YearSelect/yearselect.stories.d.ts +0 -7
- package/dist/form/TForm/addeditforms.stories.d.ts +0 -30
- package/dist/form/TForm/tform.stories.d.ts +0 -7
- package/dist/inputs/CreditCardInput/creditcardinput.stories.d.ts +0 -5
- package/dist/inputs/MaskedInput/maskedinput.stories.d.ts +0 -6
- package/dist/inputs/PhoneInput/phoneinput.stories.d.ts +0 -5
- package/dist/inputs/RadioGroup/radiogroup.stories.d.ts +0 -6
- package/dist/inputs/ScriptelInput/scriptelnput.stories.d.ts +0 -5
- package/dist/inputs/SinInput/sininput.stories.d.ts +0 -5
- package/dist/inputs/TableInput/main.story.d.ts +0 -7
- package/dist/inputs/TableInput/tableinput.stories.d.ts +0 -6
- package/dist/inputs/TableInput/withHover.story.d.ts +0 -7
- package/dist/money/MoneyCurrencyInput/moneycurrencyinput.stories.d.ts +0 -5
- package/dist/money/MoneyInput/moneyinput.stories.d.ts +0 -6
package/dist/index.js
CHANGED
|
@@ -39,21 +39,18 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
39
39
|
/* harmony import */ var _thx_date__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_thx_date__WEBPACK_IMPORTED_MODULE_2__);
|
|
40
40
|
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! debug */ "debug");
|
|
41
41
|
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_3__);
|
|
42
|
-
/* harmony import */ var
|
|
43
|
-
/* harmony import */ var
|
|
44
|
-
/* harmony import */ var
|
|
45
|
-
/* harmony import */ var
|
|
46
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
47
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__);
|
|
42
|
+
/* harmony import */ var _DatePicker_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../DatePicker/index */ "./date/DatePicker/index.ts");
|
|
43
|
+
/* harmony import */ var _MaskedDateInput__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./MaskedDateInput */ "./date/LocalDatePicker/MaskedDateInput.tsx");
|
|
44
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
45
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__);
|
|
48
46
|
|
|
49
47
|
|
|
50
48
|
var _excluded = ["minDate", "maxDate", "value", "onChange", "onBlur", "as", "action", "actionPosition", "className", "error", "fluid", "focus", "icon", "iconPosition", "inverted", "label", "labelPosition", "loading", "size", "tabIndex", "transparent"];
|
|
51
49
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/date/LocalDatePicker/LocalDatePicker.tsx";
|
|
52
50
|
|
|
53
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
54
|
-
|
|
55
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
51
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
56
52
|
|
|
53
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
57
54
|
|
|
58
55
|
|
|
59
56
|
|
|
@@ -104,24 +101,24 @@ function LocalDatePicker(props) {
|
|
|
104
101
|
tabIndex: tabIndex,
|
|
105
102
|
transparent: transparent
|
|
106
103
|
};
|
|
107
|
-
return /*#__PURE__*/(0,
|
|
104
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxDEV)(_DatePicker_index__WEBPACK_IMPORTED_MODULE_4__.DatePicker, _objectSpread(_objectSpread({}, rest), {}, {
|
|
108
105
|
selected: selected,
|
|
109
106
|
onChange: function onChange(date) {
|
|
110
107
|
if (_onChange) _onChange(date ? (0,_thx_date__WEBPACK_IMPORTED_MODULE_2__.toLocalDate)(date) : null);
|
|
111
108
|
},
|
|
112
109
|
onBlur: onBlur,
|
|
113
|
-
customInput: /*#__PURE__*/(0,
|
|
110
|
+
customInput: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxDEV)(_MaskedDateInput__WEBPACK_IMPORTED_MODULE_5__.MaskedDateInput, _objectSpread(_objectSpread({}, inputProps), {}, {
|
|
114
111
|
onBlur: onBlur
|
|
115
112
|
}), void 0, false, {
|
|
116
113
|
fileName: _jsxFileName,
|
|
117
|
-
lineNumber:
|
|
114
|
+
lineNumber: 78,
|
|
118
115
|
columnNumber: 17
|
|
119
116
|
}, this),
|
|
120
117
|
minDate: minDate ? (0,_thx_date__WEBPACK_IMPORTED_MODULE_2__.toDate)(minDate) : null,
|
|
121
118
|
maxDate: maxDate ? (0,_thx_date__WEBPACK_IMPORTED_MODULE_2__.toDate)(maxDate) : null
|
|
122
119
|
}), void 0, false, {
|
|
123
120
|
fileName: _jsxFileName,
|
|
124
|
-
lineNumber:
|
|
121
|
+
lineNumber: 71,
|
|
125
122
|
columnNumber: 3
|
|
126
123
|
}, this);
|
|
127
124
|
}
|
|
@@ -159,9 +156,9 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
159
156
|
var _excluded = ["onChange", "name"];
|
|
160
157
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/date/LocalDatePicker/MaskedDateInput.tsx";
|
|
161
158
|
|
|
162
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
159
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
163
160
|
|
|
164
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
161
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
165
162
|
|
|
166
163
|
|
|
167
164
|
|
|
@@ -239,21 +236,18 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
239
236
|
/* harmony import */ var _js_joda_core__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_js_joda_core__WEBPACK_IMPORTED_MODULE_2__);
|
|
240
237
|
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! debug */ "debug");
|
|
241
238
|
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_3__);
|
|
242
|
-
/* harmony import */ var
|
|
243
|
-
/* harmony import */ var
|
|
244
|
-
/* harmony import */ var
|
|
245
|
-
/* harmony import */ var
|
|
246
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
247
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__);
|
|
239
|
+
/* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
|
|
240
|
+
/* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_4__);
|
|
241
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
242
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__);
|
|
248
243
|
|
|
249
244
|
|
|
250
245
|
var _excluded = ["value", "onChange", "year", "handleBlur"];
|
|
251
246
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/date/LocalMonthSelect/LocalMonthSelect.tsx";
|
|
252
247
|
|
|
253
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
254
|
-
|
|
255
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
248
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
256
249
|
|
|
250
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
257
251
|
|
|
258
252
|
|
|
259
253
|
|
|
@@ -317,7 +311,7 @@ function LocalMonthSelect(props) {
|
|
|
317
311
|
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(props, _excluded);
|
|
318
312
|
|
|
319
313
|
var theYear = year || _js_joda_core__WEBPACK_IMPORTED_MODULE_2__.LocalDate.now().year();
|
|
320
|
-
return /*#__PURE__*/(0,
|
|
314
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_4__.Select, _objectSpread({
|
|
321
315
|
placeholder: "Select Month",
|
|
322
316
|
options: monthOptions,
|
|
323
317
|
value: value ? value.monthValue() : '',
|
|
@@ -333,7 +327,7 @@ function LocalMonthSelect(props) {
|
|
|
333
327
|
onBlur: handleBlur
|
|
334
328
|
}, rest), void 0, false, {
|
|
335
329
|
fileName: _jsxFileName,
|
|
336
|
-
lineNumber:
|
|
330
|
+
lineNumber: 37,
|
|
337
331
|
columnNumber: 3
|
|
338
332
|
}, this);
|
|
339
333
|
}
|
|
@@ -380,21 +374,18 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
380
374
|
/* harmony import */ var _thx_date__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_thx_date__WEBPACK_IMPORTED_MODULE_3__);
|
|
381
375
|
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! debug */ "debug");
|
|
382
376
|
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_4__);
|
|
383
|
-
/* harmony import */ var
|
|
384
|
-
/* harmony import */ var
|
|
385
|
-
/* harmony import */ var
|
|
386
|
-
/* harmony import */ var
|
|
387
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
388
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__);
|
|
377
|
+
/* harmony import */ var _DatePicker_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../DatePicker/index */ "./date/DatePicker/index.ts");
|
|
378
|
+
/* harmony import */ var _MaskedTimeInput__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./MaskedTimeInput */ "./date/LocalTimePicker/MaskedTimeInput.tsx");
|
|
379
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
380
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__);
|
|
389
381
|
|
|
390
382
|
|
|
391
383
|
var _excluded = ["value", "onChange", "as", "action", "actionPosition", "className", "disabled", "error", "fluid", "focus", "icon", "iconPosition", "inverted", "label", "labelPosition", "loading", "size", "tabIndex", "transparent"];
|
|
392
384
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/date/LocalTimePicker/LocalTimePicker.tsx";
|
|
393
385
|
|
|
394
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
395
|
-
|
|
396
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
386
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
397
387
|
|
|
388
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
398
389
|
|
|
399
390
|
|
|
400
391
|
|
|
@@ -446,7 +437,7 @@ function LocalTimePicker(props) {
|
|
|
446
437
|
tabIndex: tabIndex,
|
|
447
438
|
transparent: transparent
|
|
448
439
|
};
|
|
449
|
-
return /*#__PURE__*/(0,
|
|
440
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(_DatePicker_index__WEBPACK_IMPORTED_MODULE_5__.DatePicker, _objectSpread(_objectSpread({}, rest), {}, {
|
|
450
441
|
selected: selected,
|
|
451
442
|
onChange: function onChange(date) {
|
|
452
443
|
if (_onChange) _onChange(date ? (0,_thx_date__WEBPACK_IMPORTED_MODULE_3__.toLocalTime)(date) : null);
|
|
@@ -456,14 +447,14 @@ function LocalTimePicker(props) {
|
|
|
456
447
|
timeIntervals: 15,
|
|
457
448
|
timeCaption: "Time",
|
|
458
449
|
dateFormat: "hh:mm aa",
|
|
459
|
-
customInput: /*#__PURE__*/(0,
|
|
450
|
+
customInput: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(_MaskedTimeInput__WEBPACK_IMPORTED_MODULE_6__.MaskedTimeInput, _objectSpread({}, inputProps), void 0, false, {
|
|
460
451
|
fileName: _jsxFileName,
|
|
461
|
-
lineNumber:
|
|
452
|
+
lineNumber: 81,
|
|
462
453
|
columnNumber: 17
|
|
463
454
|
}, this)
|
|
464
455
|
}), void 0, false, {
|
|
465
456
|
fileName: _jsxFileName,
|
|
466
|
-
lineNumber:
|
|
457
|
+
lineNumber: 70,
|
|
467
458
|
columnNumber: 3
|
|
468
459
|
}, this);
|
|
469
460
|
}
|
|
@@ -501,9 +492,9 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
501
492
|
var _excluded = ["onChange"];
|
|
502
493
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/date/LocalTimePicker/MaskedTimeInput.tsx";
|
|
503
494
|
|
|
504
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
495
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
505
496
|
|
|
506
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
497
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
507
498
|
|
|
508
499
|
|
|
509
500
|
|
|
@@ -579,22 +570,19 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
579
570
|
/* harmony import */ var _thx_date__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_thx_date__WEBPACK_IMPORTED_MODULE_2__);
|
|
580
571
|
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! debug */ "debug");
|
|
581
572
|
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_3__);
|
|
582
|
-
/* harmony import */ var
|
|
583
|
-
/* harmony import */ var
|
|
584
|
-
/* harmony import */ var
|
|
585
|
-
/* harmony import */ var
|
|
586
|
-
/* harmony import */ var
|
|
587
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
588
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__);
|
|
573
|
+
/* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
|
|
574
|
+
/* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_4__);
|
|
575
|
+
/* harmony import */ var _DatePicker_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../DatePicker/index */ "./date/DatePicker/index.ts");
|
|
576
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
577
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__);
|
|
589
578
|
|
|
590
579
|
|
|
591
580
|
var _excluded = ["value", "onChange", "as", "action", "actionPosition", "className", "disabled", "error", "fluid", "focus", "icon", "iconPosition", "inverted", "label", "labelPosition", "loading", "size", "tabIndex", "transparent"];
|
|
592
581
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/date/MonthDayPicker/MonthDayPicker.tsx";
|
|
593
582
|
|
|
594
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
595
|
-
|
|
596
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
583
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
597
584
|
|
|
585
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
598
586
|
|
|
599
587
|
|
|
600
588
|
|
|
@@ -606,15 +594,15 @@ var d = debug__WEBPACK_IMPORTED_MODULE_3___default()('thx.controls.date.MonthDay
|
|
|
606
594
|
var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
|
|
607
595
|
|
|
608
596
|
function MonthDayHeader(props) {
|
|
609
|
-
return /*#__PURE__*/(0,
|
|
610
|
-
children: [/*#__PURE__*/(0,
|
|
597
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__.Fragment, {
|
|
598
|
+
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxDEV)("div", {
|
|
611
599
|
className: "react-datepicker__current-month",
|
|
612
600
|
children: months[props.date.getMonth()]
|
|
613
601
|
}, void 0, false, {
|
|
614
602
|
fileName: _jsxFileName,
|
|
615
|
-
lineNumber:
|
|
603
|
+
lineNumber: 29,
|
|
616
604
|
columnNumber: 4
|
|
617
|
-
}, this), /*#__PURE__*/(0,
|
|
605
|
+
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxDEV)("button", {
|
|
618
606
|
type: "button",
|
|
619
607
|
className: "react-datepicker__navigation react-datepicker__navigation--previous",
|
|
620
608
|
"aria-label": "Previous Month",
|
|
@@ -623,9 +611,9 @@ function MonthDayHeader(props) {
|
|
|
623
611
|
children: "Previous Month"
|
|
624
612
|
}, void 0, false, {
|
|
625
613
|
fileName: _jsxFileName,
|
|
626
|
-
lineNumber:
|
|
614
|
+
lineNumber: 30,
|
|
627
615
|
columnNumber: 4
|
|
628
|
-
}, this), /*#__PURE__*/(0,
|
|
616
|
+
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxDEV)("button", {
|
|
629
617
|
type: "button",
|
|
630
618
|
className: "react-datepicker__navigation react-datepicker__navigation--next",
|
|
631
619
|
"aria-label": "Next Month",
|
|
@@ -634,7 +622,7 @@ function MonthDayHeader(props) {
|
|
|
634
622
|
children: "Next Month"
|
|
635
623
|
}, void 0, false, {
|
|
636
624
|
fileName: _jsxFileName,
|
|
637
|
-
lineNumber:
|
|
625
|
+
lineNumber: 39,
|
|
638
626
|
columnNumber: 4
|
|
639
627
|
}, this)]
|
|
640
628
|
}, void 0, true);
|
|
@@ -683,21 +671,21 @@ function MonthDayPicker(props) {
|
|
|
683
671
|
tabIndex: tabIndex,
|
|
684
672
|
transparent: transparent
|
|
685
673
|
};
|
|
686
|
-
return /*#__PURE__*/(0,
|
|
674
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxDEV)(_DatePicker_index__WEBPACK_IMPORTED_MODULE_5__.DatePicker, _objectSpread(_objectSpread({}, rest), {}, {
|
|
687
675
|
selected: selected,
|
|
688
676
|
onChange: function onChange(date) {
|
|
689
677
|
if (_onChange) _onChange(date ? (0,_thx_date__WEBPACK_IMPORTED_MODULE_2__.toLocalDate)(date) : null);
|
|
690
678
|
},
|
|
691
|
-
customInput: /*#__PURE__*/(0,
|
|
679
|
+
customInput: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_4__.Input, _objectSpread({}, inputProps), void 0, false, {
|
|
692
680
|
fileName: _jsxFileName,
|
|
693
|
-
lineNumber:
|
|
681
|
+
lineNumber: 115,
|
|
694
682
|
columnNumber: 17
|
|
695
683
|
}, this),
|
|
696
684
|
renderCustomHeader: MonthDayHeader,
|
|
697
685
|
dateFormat: "MMMM d"
|
|
698
686
|
}), void 0, false, {
|
|
699
687
|
fileName: _jsxFileName,
|
|
700
|
-
lineNumber:
|
|
688
|
+
lineNumber: 109,
|
|
701
689
|
columnNumber: 3
|
|
702
690
|
}, this);
|
|
703
691
|
}
|
|
@@ -745,22 +733,19 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
745
733
|
/* harmony import */ var _thx_date__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_thx_date__WEBPACK_IMPORTED_MODULE_3__);
|
|
746
734
|
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! debug */ "debug");
|
|
747
735
|
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_4__);
|
|
748
|
-
/* harmony import */ var
|
|
749
|
-
/* harmony import */ var
|
|
750
|
-
/* harmony import */ var
|
|
751
|
-
/* harmony import */ var
|
|
752
|
-
/* harmony import */ var
|
|
753
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
754
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__);
|
|
736
|
+
/* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
|
|
737
|
+
/* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_5__);
|
|
738
|
+
/* harmony import */ var _DatePicker_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../DatePicker/index */ "./date/DatePicker/index.ts");
|
|
739
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
740
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__);
|
|
755
741
|
|
|
756
742
|
|
|
757
743
|
var _excluded = ["value", "onChange", "as", "action", "actionPosition", "className", "disabled", "error", "fluid", "focus", "icon", "iconPosition", "inverted", "label", "labelPosition", "loading", "size", "tabIndex", "transparent", "minDate", "maxDate"];
|
|
758
744
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/date/MonthYearPicker/MonthYearPicker.tsx";
|
|
759
745
|
|
|
760
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
761
|
-
|
|
762
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
746
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
763
747
|
|
|
748
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
764
749
|
|
|
765
750
|
|
|
766
751
|
|
|
@@ -813,14 +798,14 @@ function MonthYearPicker(props) {
|
|
|
813
798
|
tabIndex: tabIndex,
|
|
814
799
|
transparent: transparent
|
|
815
800
|
};
|
|
816
|
-
return /*#__PURE__*/(0,
|
|
801
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(_DatePicker_index__WEBPACK_IMPORTED_MODULE_6__.DatePicker, _objectSpread(_objectSpread({}, rest), {}, {
|
|
817
802
|
selected: selected,
|
|
818
803
|
onChange: function onChange(date) {
|
|
819
804
|
if (_onChange) _onChange(date ? (0,_thx_date__WEBPACK_IMPORTED_MODULE_3__.toLocalDate)(date) : undefined);
|
|
820
805
|
},
|
|
821
|
-
customInput: /*#__PURE__*/(0,
|
|
806
|
+
customInput: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_5__.Input, _objectSpread({}, inputProps), void 0, false, {
|
|
822
807
|
fileName: _jsxFileName,
|
|
823
|
-
lineNumber:
|
|
808
|
+
lineNumber: 77,
|
|
824
809
|
columnNumber: 17
|
|
825
810
|
}, this),
|
|
826
811
|
dateFormat: "MMMM yyyy",
|
|
@@ -829,7 +814,7 @@ function MonthYearPicker(props) {
|
|
|
829
814
|
maxDate: (0,_thx_date__WEBPACK_IMPORTED_MODULE_3__.toDate)((maxDate === null || maxDate === void 0 ? void 0 : maxDate.plusMonths(1).withDayOfMonth(1).minusDays(1)) || _js_joda_core__WEBPACK_IMPORTED_MODULE_2__.LocalDate.now().plusYears(20))
|
|
830
815
|
}), void 0, false, {
|
|
831
816
|
fileName: _jsxFileName,
|
|
832
|
-
lineNumber:
|
|
817
|
+
lineNumber: 71,
|
|
833
818
|
columnNumber: 3
|
|
834
819
|
}, this);
|
|
835
820
|
}
|
|
@@ -872,21 +857,18 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
872
857
|
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__);
|
|
873
858
|
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! debug */ "debug");
|
|
874
859
|
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_2__);
|
|
875
|
-
/* harmony import */ var
|
|
876
|
-
/* harmony import */ var
|
|
877
|
-
/* harmony import */ var
|
|
878
|
-
/* harmony import */ var
|
|
879
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
880
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__);
|
|
860
|
+
/* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
|
|
861
|
+
/* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__);
|
|
862
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
863
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__);
|
|
881
864
|
|
|
882
865
|
|
|
883
866
|
var _excluded = ["value", "minYear", "maxYear", "onChange", "onBlur", "error"];
|
|
884
867
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/date/YearSelect/YearSelect.tsx";
|
|
885
868
|
|
|
886
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
887
|
-
|
|
888
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
869
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
889
870
|
|
|
871
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
890
872
|
|
|
891
873
|
|
|
892
874
|
|
|
@@ -915,7 +897,7 @@ function YearSelect(props) {
|
|
|
915
897
|
});
|
|
916
898
|
}
|
|
917
899
|
|
|
918
|
-
return /*#__PURE__*/(0,
|
|
900
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__.Segment, _objectSpread(_objectSpread({
|
|
919
901
|
basic: true,
|
|
920
902
|
compact: true,
|
|
921
903
|
style: {
|
|
@@ -923,7 +905,7 @@ function YearSelect(props) {
|
|
|
923
905
|
margin: 0
|
|
924
906
|
}
|
|
925
907
|
}, rest), {}, {
|
|
926
|
-
children: [/*#__PURE__*/(0,
|
|
908
|
+
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
927
909
|
basic: true,
|
|
928
910
|
icon: true,
|
|
929
911
|
type: "button",
|
|
@@ -933,21 +915,21 @@ function YearSelect(props) {
|
|
|
933
915
|
if (_onChange) _onChange(value - 1);
|
|
934
916
|
},
|
|
935
917
|
onBlur: onBlur,
|
|
936
|
-
children: /*#__PURE__*/(0,
|
|
918
|
+
children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__.Icon, {
|
|
937
919
|
name: "arrow left"
|
|
938
920
|
}, void 0, false, {
|
|
939
921
|
fileName: _jsxFileName,
|
|
940
|
-
lineNumber:
|
|
922
|
+
lineNumber: 37,
|
|
941
923
|
columnNumber: 5
|
|
942
924
|
}, this)
|
|
943
925
|
}, void 0, false, {
|
|
944
926
|
fileName: _jsxFileName,
|
|
945
|
-
lineNumber:
|
|
927
|
+
lineNumber: 26,
|
|
946
928
|
columnNumber: 4
|
|
947
|
-
}, this), /*#__PURE__*/(0,
|
|
948
|
-
icon: /*#__PURE__*/(0,
|
|
929
|
+
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__.Dropdown, {
|
|
930
|
+
icon: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {}, void 0, false, {
|
|
949
931
|
fileName: _jsxFileName,
|
|
950
|
-
lineNumber:
|
|
932
|
+
lineNumber: 40,
|
|
951
933
|
columnNumber: 11
|
|
952
934
|
}, this),
|
|
953
935
|
button: true,
|
|
@@ -962,9 +944,9 @@ function YearSelect(props) {
|
|
|
962
944
|
onBlur: onBlur
|
|
963
945
|
}, void 0, false, {
|
|
964
946
|
fileName: _jsxFileName,
|
|
965
|
-
lineNumber:
|
|
947
|
+
lineNumber: 39,
|
|
966
948
|
columnNumber: 4
|
|
967
|
-
}, this), /*#__PURE__*/(0,
|
|
949
|
+
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
968
950
|
basic: true,
|
|
969
951
|
icon: true,
|
|
970
952
|
type: "button",
|
|
@@ -977,21 +959,21 @@ function YearSelect(props) {
|
|
|
977
959
|
style: {
|
|
978
960
|
marginRight: 0
|
|
979
961
|
},
|
|
980
|
-
children: /*#__PURE__*/(0,
|
|
962
|
+
children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__.Icon, {
|
|
981
963
|
name: "arrow right"
|
|
982
964
|
}, void 0, false, {
|
|
983
965
|
fileName: _jsxFileName,
|
|
984
|
-
lineNumber:
|
|
966
|
+
lineNumber: 64,
|
|
985
967
|
columnNumber: 5
|
|
986
968
|
}, this)
|
|
987
969
|
}, void 0, false, {
|
|
988
970
|
fileName: _jsxFileName,
|
|
989
|
-
lineNumber:
|
|
971
|
+
lineNumber: 52,
|
|
990
972
|
columnNumber: 4
|
|
991
973
|
}, this)]
|
|
992
974
|
}), void 0, true, {
|
|
993
975
|
fileName: _jsxFileName,
|
|
994
|
-
lineNumber:
|
|
976
|
+
lineNumber: 25,
|
|
995
977
|
columnNumber: 3
|
|
996
978
|
}, this);
|
|
997
979
|
}
|
|
@@ -1055,21 +1037,21 @@ function TForm(props) {
|
|
|
1055
1037
|
children = props.children,
|
|
1056
1038
|
innerRef = props.innerRef; // This allows folks to pass a ref to <Formik />
|
|
1057
1039
|
|
|
1058
|
-
|
|
1040
|
+
react__WEBPACK_IMPORTED_MODULE_2__.useImperativeHandle(innerRef, function () {
|
|
1059
1041
|
return tbag;
|
|
1060
1042
|
});
|
|
1061
1043
|
var child = null;
|
|
1062
1044
|
|
|
1063
1045
|
if (component) {
|
|
1064
1046
|
// @ts-ignore
|
|
1065
|
-
child = /*#__PURE__*/
|
|
1047
|
+
child = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(component, tbag);
|
|
1066
1048
|
} else if (render) {
|
|
1067
1049
|
child = render(tbag);
|
|
1068
1050
|
} else if (children) {
|
|
1069
1051
|
if ((0,formik__WEBPACK_IMPORTED_MODULE_1__.isFunction)(children)) {
|
|
1070
1052
|
child = children(tbag);
|
|
1071
1053
|
} else if (!(0,formik__WEBPACK_IMPORTED_MODULE_1__.isEmptyChildren)(children)) {
|
|
1072
|
-
child =
|
|
1054
|
+
child = react__WEBPACK_IMPORTED_MODULE_2__.Children.only(children);
|
|
1073
1055
|
}
|
|
1074
1056
|
}
|
|
1075
1057
|
|
|
@@ -1156,9 +1138,9 @@ var _excluded = ["render", "children"];
|
|
|
1156
1138
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/form/TForm/useTForm.tsx",
|
|
1157
1139
|
_s = $RefreshSig$();
|
|
1158
1140
|
|
|
1159
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
1141
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
1160
1142
|
|
|
1161
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
1143
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
1162
1144
|
|
|
1163
1145
|
|
|
1164
1146
|
|
|
@@ -1178,15 +1160,15 @@ function useTForm(config) {
|
|
|
1178
1160
|
|
|
1179
1161
|
var formik = (0,formik__WEBPACK_IMPORTED_MODULE_5__.useFormik)(rest);
|
|
1180
1162
|
(0,react__WEBPACK_IMPORTED_MODULE_9__.useEffect)(function () {
|
|
1181
|
-
if (config.onValidate) config.onValidate(formik.isValid);
|
|
1163
|
+
if (config.onValidate) config.onValidate(formik.isValid); // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
1182
1164
|
}, [formik.isValid, config.onValidate]); // Get submit function
|
|
1183
1165
|
|
|
1184
1166
|
(0,react__WEBPACK_IMPORTED_MODULE_9__.useEffect)(function () {
|
|
1185
|
-
if (config.getSubmitFn) config.getSubmitFn(formik.submitForm);
|
|
1167
|
+
if (config.getSubmitFn) config.getSubmitFn(formik.submitForm); // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
1186
1168
|
}, [formik.submitForm, config.getSubmitFn]); // On change event (if this ends up changing values it will cycle)
|
|
1187
1169
|
|
|
1188
1170
|
(0,react__WEBPACK_IMPORTED_MODULE_9__.useEffect)(function () {
|
|
1189
|
-
if (config.onChange) config.onChange(formik.values);
|
|
1171
|
+
if (config.onChange) config.onChange(formik.values); // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
1190
1172
|
}, [formik.values]); // Mark the error cleared if the form has been edited after an error
|
|
1191
1173
|
|
|
1192
1174
|
var _useState = (0,react__WEBPACK_IMPORTED_MODULE_9__.useState)(false),
|
|
@@ -1197,7 +1179,8 @@ function useTForm(config) {
|
|
|
1197
1179
|
(0,react__WEBPACK_IMPORTED_MODULE_9__.useEffect)(function () {
|
|
1198
1180
|
if (config.error && config.error.message && !formik.isSubmitting) {
|
|
1199
1181
|
setErrorCleared(true);
|
|
1200
|
-
}
|
|
1182
|
+
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
1183
|
+
|
|
1201
1184
|
}, [formik.values, config.error]); // Flatten the warnings (formik errors) and touch objects.
|
|
1202
1185
|
|
|
1203
1186
|
var flatWarnings = flat__WEBPACK_IMPORTED_MODULE_4___default()(formik.errors);
|
|
@@ -1247,7 +1230,7 @@ function useTForm(config) {
|
|
|
1247
1230
|
children: hasWarnings ? 'Some fields are not complete:' : "".concat(errorHeader, ":")
|
|
1248
1231
|
}, void 0, false, {
|
|
1249
1232
|
fileName: _jsxFileName,
|
|
1250
|
-
lineNumber:
|
|
1233
|
+
lineNumber: 83,
|
|
1251
1234
|
columnNumber: 5
|
|
1252
1235
|
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_10__.Segment, {
|
|
1253
1236
|
style: {
|
|
@@ -1259,18 +1242,18 @@ function useTForm(config) {
|
|
|
1259
1242
|
children: msg
|
|
1260
1243
|
}, msg, false, {
|
|
1261
1244
|
fileName: _jsxFileName,
|
|
1262
|
-
lineNumber:
|
|
1245
|
+
lineNumber: 87,
|
|
1263
1246
|
columnNumber: 7
|
|
1264
1247
|
}, _this);
|
|
1265
1248
|
})
|
|
1266
1249
|
}, void 0, false, {
|
|
1267
1250
|
fileName: _jsxFileName,
|
|
1268
|
-
lineNumber:
|
|
1251
|
+
lineNumber: 85,
|
|
1269
1252
|
columnNumber: 5
|
|
1270
1253
|
}, this)]
|
|
1271
1254
|
}, void 0, true, {
|
|
1272
1255
|
fileName: _jsxFileName,
|
|
1273
|
-
lineNumber:
|
|
1256
|
+
lineNumber: 82,
|
|
1274
1257
|
columnNumber: 4
|
|
1275
1258
|
}, this);
|
|
1276
1259
|
} // Returns true if the field has an error
|
|
@@ -1602,9 +1585,9 @@ var _excluded = ["value", "onChange"];
|
|
|
1602
1585
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/inputs/CreditCardInput/CreditCardNumberInput.tsx",
|
|
1603
1586
|
_s = $RefreshSig$();
|
|
1604
1587
|
|
|
1605
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
1588
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
1606
1589
|
|
|
1607
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
1590
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
1608
1591
|
|
|
1609
1592
|
|
|
1610
1593
|
|
|
@@ -1761,13 +1744,11 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1761
1744
|
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__);
|
|
1762
1745
|
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! debug */ "debug");
|
|
1763
1746
|
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_2__);
|
|
1764
|
-
/* harmony import */ var
|
|
1765
|
-
/* harmony import */ var
|
|
1766
|
-
/* harmony import */ var
|
|
1767
|
-
/* harmony import */ var
|
|
1768
|
-
/* harmony import */ var
|
|
1769
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
1770
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__);
|
|
1747
|
+
/* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
|
|
1748
|
+
/* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__);
|
|
1749
|
+
/* harmony import */ var _useMaskedInput__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./useMaskedInput */ "./inputs/MaskedInput/useMaskedInput.ts");
|
|
1750
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
1751
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__);
|
|
1771
1752
|
|
|
1772
1753
|
|
|
1773
1754
|
var _excluded = ["name", "onBlur", "disabled", "onChange", "mask", "value"];
|
|
@@ -1775,10 +1756,9 @@ var _excluded = ["name", "onBlur", "disabled", "onChange", "mask", "value"];
|
|
|
1775
1756
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/inputs/MaskedInput/MaskedInput.tsx",
|
|
1776
1757
|
_s = $RefreshSig$();
|
|
1777
1758
|
|
|
1778
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
1779
|
-
|
|
1780
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
1759
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
1781
1760
|
|
|
1761
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
1782
1762
|
|
|
1783
1763
|
|
|
1784
1764
|
|
|
@@ -1796,31 +1776,31 @@ function MaskedInput(props) {
|
|
|
1796
1776
|
value = props.value,
|
|
1797
1777
|
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(props, _excluded);
|
|
1798
1778
|
|
|
1799
|
-
var inputRef = (0,
|
|
1779
|
+
var inputRef = (0,_useMaskedInput__WEBPACK_IMPORTED_MODULE_4__.useMaskedInput)({
|
|
1800
1780
|
mask: mask,
|
|
1801
1781
|
value: value,
|
|
1802
1782
|
onChange: onChange
|
|
1803
1783
|
});
|
|
1804
|
-
return /*#__PURE__*/(0,
|
|
1805
|
-
children: /*#__PURE__*/(0,
|
|
1784
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__.Input, _objectSpread(_objectSpread({}, rest), {}, {
|
|
1785
|
+
children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("input", {
|
|
1806
1786
|
disabled: disabled,
|
|
1807
1787
|
name: name,
|
|
1808
1788
|
ref: inputRef,
|
|
1809
1789
|
onBlur: onBlur
|
|
1810
1790
|
}, void 0, false, {
|
|
1811
1791
|
fileName: _jsxFileName,
|
|
1812
|
-
lineNumber:
|
|
1792
|
+
lineNumber: 20,
|
|
1813
1793
|
columnNumber: 4
|
|
1814
1794
|
}, this)
|
|
1815
1795
|
}), void 0, false, {
|
|
1816
1796
|
fileName: _jsxFileName,
|
|
1817
|
-
lineNumber:
|
|
1797
|
+
lineNumber: 19,
|
|
1818
1798
|
columnNumber: 3
|
|
1819
1799
|
}, this);
|
|
1820
1800
|
}
|
|
1821
1801
|
|
|
1822
1802
|
_s(MaskedInput, "W3jy9LOlLdoFzuUq4DZpSE4bDLI=", false, function () {
|
|
1823
|
-
return [
|
|
1803
|
+
return [_useMaskedInput__WEBPACK_IMPORTED_MODULE_4__.useMaskedInput];
|
|
1824
1804
|
});
|
|
1825
1805
|
|
|
1826
1806
|
_c = MaskedInput;
|
|
@@ -1873,9 +1853,9 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1873
1853
|
|
|
1874
1854
|
var _s = $RefreshSig$();
|
|
1875
1855
|
|
|
1876
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
1856
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
1877
1857
|
|
|
1878
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
1858
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
1879
1859
|
|
|
1880
1860
|
|
|
1881
1861
|
|
|
@@ -1929,7 +1909,8 @@ function useMaskedInput(props) {
|
|
|
1929
1909
|
d('Value is changing:', value);
|
|
1930
1910
|
inputElement.current.value = value;
|
|
1931
1911
|
onSet && onSet(value);
|
|
1932
|
-
}
|
|
1912
|
+
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
1913
|
+
|
|
1933
1914
|
}, [value]);
|
|
1934
1915
|
return inputElement;
|
|
1935
1916
|
}
|
|
@@ -1956,20 +1937,17 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1956
1937
|
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__);
|
|
1957
1938
|
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! debug */ "debug");
|
|
1958
1939
|
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_2__);
|
|
1959
|
-
/* harmony import */ var
|
|
1960
|
-
/* harmony import */ var
|
|
1961
|
-
/* harmony import */ var
|
|
1962
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
1963
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__);
|
|
1940
|
+
/* harmony import */ var _MaskedInput__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../MaskedInput */ "./inputs/MaskedInput/index.ts");
|
|
1941
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
1942
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__);
|
|
1964
1943
|
|
|
1965
1944
|
|
|
1966
1945
|
var _excluded = ["extension"];
|
|
1967
1946
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/inputs/PhoneInput/PhoneInput.tsx";
|
|
1968
1947
|
|
|
1969
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
1970
|
-
|
|
1971
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
1948
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
1972
1949
|
|
|
1950
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
1973
1951
|
|
|
1974
1952
|
|
|
1975
1953
|
|
|
@@ -1984,11 +1962,11 @@ function PhoneInput(props) {
|
|
|
1984
1962
|
greedy: false,
|
|
1985
1963
|
autoUnmask: true
|
|
1986
1964
|
};
|
|
1987
|
-
return /*#__PURE__*/(0,
|
|
1965
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(_MaskedInput__WEBPACK_IMPORTED_MODULE_3__.MaskedInput, _objectSpread(_objectSpread({}, rest), {}, {
|
|
1988
1966
|
mask: mask
|
|
1989
1967
|
}), void 0, false, {
|
|
1990
1968
|
fileName: _jsxFileName,
|
|
1991
|
-
lineNumber:
|
|
1969
|
+
lineNumber: 19,
|
|
1992
1970
|
columnNumber: 9
|
|
1993
1971
|
}, this);
|
|
1994
1972
|
}
|
|
@@ -2042,9 +2020,9 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2042
2020
|
var _excluded = ["children", "onChange", "value"];
|
|
2043
2021
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/inputs/RadioGroup/RadioGroup.tsx";
|
|
2044
2022
|
|
|
2045
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
2023
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2046
2024
|
|
|
2047
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
2025
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
2048
2026
|
|
|
2049
2027
|
|
|
2050
2028
|
|
|
@@ -2186,22 +2164,25 @@ function Scriptel(_ref) {
|
|
|
2186
2164
|
if (socket.current) socket.current.close();
|
|
2187
2165
|
};
|
|
2188
2166
|
}, [omniscriptUrl, imageType, scale, crop, penStyle]);
|
|
2189
|
-
|
|
2190
|
-
|
|
2167
|
+
var scriptel = (0,react__WEBPACK_IMPORTED_MODULE_2__.useMemo)(function () {
|
|
2168
|
+
return {
|
|
2191
2169
|
socket: socket,
|
|
2192
2170
|
renderImage: render,
|
|
2193
2171
|
loading: loading,
|
|
2194
2172
|
isSigning: isSigning
|
|
2195
|
-
}
|
|
2173
|
+
};
|
|
2174
|
+
}, [isSigning, loading, render]);
|
|
2175
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(_ScriptelContext__WEBPACK_IMPORTED_MODULE_3__.ScriptelContext.Provider, {
|
|
2176
|
+
value: scriptel,
|
|
2196
2177
|
children: children
|
|
2197
2178
|
}, void 0, false, {
|
|
2198
2179
|
fileName: _jsxFileName,
|
|
2199
|
-
lineNumber:
|
|
2180
|
+
lineNumber: 62,
|
|
2200
2181
|
columnNumber: 9
|
|
2201
2182
|
}, this);
|
|
2202
2183
|
}
|
|
2203
2184
|
|
|
2204
|
-
_s(Scriptel, "
|
|
2185
|
+
_s(Scriptel, "lqJa8im/3HpBNI7fwLWLt76EQ5w=");
|
|
2205
2186
|
|
|
2206
2187
|
_c = Scriptel;
|
|
2207
2188
|
|
|
@@ -2224,7 +2205,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2224
2205
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
|
|
2225
2206
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
2226
2207
|
|
|
2227
|
-
var ScriptelContext = /*#__PURE__*/
|
|
2208
|
+
var ScriptelContext = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(undefined);
|
|
2228
2209
|
|
|
2229
2210
|
/***/ }),
|
|
2230
2211
|
|
|
@@ -2477,18 +2458,15 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2477
2458
|
/* harmony export */ });
|
|
2478
2459
|
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "@babel/runtime/helpers/defineProperty");
|
|
2479
2460
|
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
|
|
2480
|
-
/* harmony import */ var
|
|
2481
|
-
/* harmony import */ var
|
|
2482
|
-
/* harmony import */ var
|
|
2483
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
2484
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__);
|
|
2461
|
+
/* harmony import */ var _Scriptel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Scriptel */ "./inputs/Scriptel/Scriptel.tsx");
|
|
2462
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
2463
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__);
|
|
2485
2464
|
|
|
2486
2465
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/inputs/Scriptel/withScriptel.tsx";
|
|
2487
2466
|
|
|
2488
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
2489
|
-
|
|
2490
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
2467
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2491
2468
|
|
|
2469
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
2492
2470
|
|
|
2493
2471
|
|
|
2494
2472
|
/**
|
|
@@ -2500,20 +2478,18 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
2500
2478
|
|
|
2501
2479
|
|
|
2502
2480
|
function withScriptel(WrappedComponent, scriptelProps) {
|
|
2503
|
-
|
|
2504
|
-
|
|
2505
|
-
|
|
2506
|
-
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxDEV)(_Scriptel__WEBPACK_IMPORTED_MODULE_2__.Scriptel, _objectSpread(_objectSpread({}, scriptelProps), {}, {
|
|
2507
|
-
children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxDEV)(WrappedComponent, _objectSpread({}, props), void 0, false, {
|
|
2481
|
+
return function withScriptelHoC(props) {
|
|
2482
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxDEV)(_Scriptel__WEBPACK_IMPORTED_MODULE_1__.Scriptel, _objectSpread(_objectSpread({}, scriptelProps), {}, {
|
|
2483
|
+
children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxDEV)(WrappedComponent, _objectSpread({}, props), void 0, false, {
|
|
2508
2484
|
fileName: _jsxFileName,
|
|
2509
2485
|
lineNumber: 13,
|
|
2510
|
-
columnNumber:
|
|
2511
|
-
},
|
|
2486
|
+
columnNumber: 5
|
|
2487
|
+
}, this)
|
|
2512
2488
|
}), void 0, false, {
|
|
2513
2489
|
fileName: _jsxFileName,
|
|
2514
2490
|
lineNumber: 12,
|
|
2515
|
-
columnNumber:
|
|
2516
|
-
},
|
|
2491
|
+
columnNumber: 4
|
|
2492
|
+
}, this);
|
|
2517
2493
|
};
|
|
2518
2494
|
}
|
|
2519
2495
|
|
|
@@ -2584,7 +2560,8 @@ function ScriptelInput(props) {
|
|
|
2584
2560
|
if (onChange && !ctx) {
|
|
2585
2561
|
onChange();
|
|
2586
2562
|
}
|
|
2587
|
-
}
|
|
2563
|
+
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
2564
|
+
|
|
2588
2565
|
}, [ctx]);
|
|
2589
2566
|
|
|
2590
2567
|
if (enterSignature) {
|
|
@@ -2593,7 +2570,7 @@ function ScriptelInput(props) {
|
|
|
2593
2570
|
children: ctx !== null && ctx !== void 0 && ctx.isSigning ? 'signing...' : 'Enter a signature and click OK.'
|
|
2594
2571
|
}, void 0, false, {
|
|
2595
2572
|
fileName: _jsxFileName,
|
|
2596
|
-
lineNumber:
|
|
2573
|
+
lineNumber: 45,
|
|
2597
2574
|
columnNumber: 5
|
|
2598
2575
|
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
2599
2576
|
onClick: function onClick() {
|
|
@@ -2605,7 +2582,7 @@ function ScriptelInput(props) {
|
|
|
2605
2582
|
children: "Cancel"
|
|
2606
2583
|
}, void 0, false, {
|
|
2607
2584
|
fileName: _jsxFileName,
|
|
2608
|
-
lineNumber:
|
|
2585
|
+
lineNumber: 46,
|
|
2609
2586
|
columnNumber: 5
|
|
2610
2587
|
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
2611
2588
|
size: "mini",
|
|
@@ -2620,12 +2597,12 @@ function ScriptelInput(props) {
|
|
|
2620
2597
|
children: "Calibrate"
|
|
2621
2598
|
}, void 0, false, {
|
|
2622
2599
|
fileName: _jsxFileName,
|
|
2623
|
-
lineNumber:
|
|
2600
|
+
lineNumber: 56,
|
|
2624
2601
|
columnNumber: 5
|
|
2625
2602
|
}, this)]
|
|
2626
2603
|
}, void 0, true, {
|
|
2627
2604
|
fileName: _jsxFileName,
|
|
2628
|
-
lineNumber:
|
|
2605
|
+
lineNumber: 44,
|
|
2629
2606
|
columnNumber: 4
|
|
2630
2607
|
}, this);
|
|
2631
2608
|
}
|
|
@@ -2638,7 +2615,7 @@ function ScriptelInput(props) {
|
|
|
2638
2615
|
bordered: true
|
|
2639
2616
|
}, void 0, false, {
|
|
2640
2617
|
fileName: _jsxFileName,
|
|
2641
|
-
lineNumber:
|
|
2618
|
+
lineNumber: 66,
|
|
2642
2619
|
columnNumber: 5
|
|
2643
2620
|
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
2644
2621
|
size: "mini",
|
|
@@ -2650,12 +2627,12 @@ function ScriptelInput(props) {
|
|
|
2650
2627
|
children: "Reset"
|
|
2651
2628
|
}, void 0, false, {
|
|
2652
2629
|
fileName: _jsxFileName,
|
|
2653
|
-
lineNumber:
|
|
2630
|
+
lineNumber: 67,
|
|
2654
2631
|
columnNumber: 5
|
|
2655
2632
|
}, this)]
|
|
2656
2633
|
}, void 0, true, {
|
|
2657
2634
|
fileName: _jsxFileName,
|
|
2658
|
-
lineNumber:
|
|
2635
|
+
lineNumber: 65,
|
|
2659
2636
|
columnNumber: 4
|
|
2660
2637
|
}, this);
|
|
2661
2638
|
}
|
|
@@ -2667,7 +2644,7 @@ function ScriptelInput(props) {
|
|
|
2667
2644
|
children: buttonText
|
|
2668
2645
|
}, void 0, false, {
|
|
2669
2646
|
fileName: _jsxFileName,
|
|
2670
|
-
lineNumber:
|
|
2647
|
+
lineNumber: 81,
|
|
2671
2648
|
columnNumber: 9
|
|
2672
2649
|
}, this);
|
|
2673
2650
|
}
|
|
@@ -2732,9 +2709,9 @@ var _excluded = ["value", "onChange"];
|
|
|
2732
2709
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/inputs/SinInput/SinInput.tsx",
|
|
2733
2710
|
_s = $RefreshSig$();
|
|
2734
2711
|
|
|
2735
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
2712
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2736
2713
|
|
|
2737
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
2714
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
2738
2715
|
|
|
2739
2716
|
|
|
2740
2717
|
|
|
@@ -2864,21 +2841,18 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2864
2841
|
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
|
|
2865
2842
|
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "@babel/runtime/helpers/objectWithoutProperties");
|
|
2866
2843
|
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__);
|
|
2867
|
-
/* harmony import */ var
|
|
2868
|
-
/* harmony import */ var
|
|
2869
|
-
/* harmony import */ var
|
|
2870
|
-
/* harmony import */ var
|
|
2871
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
2872
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__);
|
|
2844
|
+
/* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
|
|
2845
|
+
/* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__);
|
|
2846
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
2847
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__);
|
|
2873
2848
|
|
|
2874
2849
|
|
|
2875
2850
|
var _excluded = ["value", "onChange"];
|
|
2876
2851
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/inputs/TableInput/DropdownCell.tsx";
|
|
2877
2852
|
|
|
2878
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
2879
|
-
|
|
2880
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
2853
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2881
2854
|
|
|
2855
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
2882
2856
|
|
|
2883
2857
|
|
|
2884
2858
|
|
|
@@ -2893,7 +2867,7 @@ function DropdownCell(dropdownProps) {
|
|
|
2893
2867
|
_onChange = dropdownProps.onChange,
|
|
2894
2868
|
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(dropdownProps, _excluded);
|
|
2895
2869
|
|
|
2896
|
-
return /*#__PURE__*/(0,
|
|
2870
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__.Dropdown, _objectSpread(_objectSpread({}, rest), {}, {
|
|
2897
2871
|
value: value,
|
|
2898
2872
|
onChange: function onChange(event, val) {
|
|
2899
2873
|
updateData(rowIndex, id, val.value);
|
|
@@ -2901,7 +2875,7 @@ function DropdownCell(dropdownProps) {
|
|
|
2901
2875
|
}
|
|
2902
2876
|
}), void 0, false, {
|
|
2903
2877
|
fileName: _jsxFileName,
|
|
2904
|
-
lineNumber:
|
|
2878
|
+
lineNumber: 18,
|
|
2905
2879
|
columnNumber: 4
|
|
2906
2880
|
}, this);
|
|
2907
2881
|
};
|
|
@@ -2928,17 +2902,14 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2928
2902
|
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
|
|
2929
2903
|
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! debug */ "debug");
|
|
2930
2904
|
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_1__);
|
|
2931
|
-
/* harmony import */ var
|
|
2932
|
-
/* harmony import */ var
|
|
2933
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
2934
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__);
|
|
2905
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
2906
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__);
|
|
2935
2907
|
|
|
2936
2908
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/inputs/TableInput/HoverCell.tsx";
|
|
2937
2909
|
|
|
2938
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
2939
|
-
|
|
2940
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
2910
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2941
2911
|
|
|
2912
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
2942
2913
|
|
|
2943
2914
|
|
|
2944
2915
|
|
|
@@ -2948,18 +2919,18 @@ function HoverCell(options) {
|
|
|
2948
2919
|
var Action = options.Action; // @ts-expect-error
|
|
2949
2920
|
|
|
2950
2921
|
if (props.hoverRow === props.row.id) {
|
|
2951
|
-
return /*#__PURE__*/(0,
|
|
2922
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxDEV)("div", {
|
|
2952
2923
|
style: {
|
|
2953
2924
|
textAlign: 'right'
|
|
2954
2925
|
},
|
|
2955
|
-
children: /*#__PURE__*/(0,
|
|
2926
|
+
children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxDEV)(Action, _objectSpread({}, props), void 0, false, {
|
|
2956
2927
|
fileName: _jsxFileName,
|
|
2957
|
-
lineNumber:
|
|
2928
|
+
lineNumber: 19,
|
|
2958
2929
|
columnNumber: 6
|
|
2959
2930
|
}, this)
|
|
2960
2931
|
}, void 0, false, {
|
|
2961
2932
|
fileName: _jsxFileName,
|
|
2962
|
-
lineNumber:
|
|
2933
|
+
lineNumber: 17,
|
|
2963
2934
|
columnNumber: 5
|
|
2964
2935
|
}, this);
|
|
2965
2936
|
}
|
|
@@ -2987,24 +2958,21 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2987
2958
|
/* harmony export */ });
|
|
2988
2959
|
/* harmony import */ var _thx_money__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @thx/money */ "@thx/money");
|
|
2989
2960
|
/* harmony import */ var _thx_money__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_thx_money__WEBPACK_IMPORTED_MODULE_0__);
|
|
2990
|
-
/* harmony import */ var
|
|
2991
|
-
/* harmony import */ var
|
|
2992
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
2993
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__);
|
|
2961
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
2962
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_1__);
|
|
2994
2963
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/inputs/TableInput/MoneyCell.tsx";
|
|
2995
2964
|
|
|
2996
2965
|
|
|
2997
|
-
|
|
2998
2966
|
function MoneyCell(options) {
|
|
2999
2967
|
return function MoneyCellFn(props) {
|
|
3000
|
-
return /*#__PURE__*/(0,
|
|
2968
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxDEV)("div", {
|
|
3001
2969
|
style: {
|
|
3002
2970
|
textAlign: 'right'
|
|
3003
2971
|
},
|
|
3004
2972
|
children: (0,_thx_money__WEBPACK_IMPORTED_MODULE_0__.formatMoney)(options !== null && options !== void 0 && options.overrideValue ? options.overrideValue(props) : props.value)
|
|
3005
2973
|
}, void 0, false, {
|
|
3006
2974
|
fileName: _jsxFileName,
|
|
3007
|
-
lineNumber:
|
|
2975
|
+
lineNumber: 12,
|
|
3008
2976
|
columnNumber: 10
|
|
3009
2977
|
}, this);
|
|
3010
2978
|
};
|
|
@@ -3099,34 +3067,29 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
3099
3067
|
/* harmony export */ });
|
|
3100
3068
|
/* harmony import */ var _thx_money__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @thx/money */ "@thx/money");
|
|
3101
3069
|
/* harmony import */ var _thx_money__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_thx_money__WEBPACK_IMPORTED_MODULE_0__);
|
|
3102
|
-
/* harmony import */ var
|
|
3103
|
-
/* harmony import */ var
|
|
3104
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
3105
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__);
|
|
3070
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
3071
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_1__);
|
|
3106
3072
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/inputs/TableInput/MoneySumFooter.tsx";
|
|
3107
3073
|
|
|
3108
3074
|
|
|
3109
|
-
|
|
3110
3075
|
function MoneySumFooter(options) {
|
|
3111
|
-
var _this = this;
|
|
3112
|
-
|
|
3113
3076
|
var _ref = options || {},
|
|
3114
3077
|
id = _ref.id;
|
|
3115
3078
|
|
|
3116
|
-
return function (info) {
|
|
3079
|
+
return function MoneySumFooterInstance(info) {
|
|
3117
3080
|
var sum = info.rows.reduce(function (memo, row) {
|
|
3118
3081
|
return memo.add(row.values[id]);
|
|
3119
3082
|
}, (0,_thx_money__WEBPACK_IMPORTED_MODULE_0__.toMoney)());
|
|
3120
|
-
return /*#__PURE__*/(0,
|
|
3083
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxDEV)("div", {
|
|
3121
3084
|
style: {
|
|
3122
3085
|
textAlign: 'right'
|
|
3123
3086
|
},
|
|
3124
3087
|
children: (0,_thx_money__WEBPACK_IMPORTED_MODULE_0__.formatMoney)(sum)
|
|
3125
3088
|
}, void 0, false, {
|
|
3126
3089
|
fileName: _jsxFileName,
|
|
3127
|
-
lineNumber:
|
|
3090
|
+
lineNumber: 13,
|
|
3128
3091
|
columnNumber: 10
|
|
3129
|
-
},
|
|
3092
|
+
}, this);
|
|
3130
3093
|
};
|
|
3131
3094
|
}
|
|
3132
3095
|
_c = MoneySumFooter;
|
|
@@ -3164,9 +3127,9 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
3164
3127
|
|
|
3165
3128
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/inputs/TableInput/StringEditCell.tsx";
|
|
3166
3129
|
|
|
3167
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
3130
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
3168
3131
|
|
|
3169
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
3132
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
3170
3133
|
|
|
3171
3134
|
|
|
3172
3135
|
|
|
@@ -3255,13 +3218,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
3255
3218
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/inputs/TableInput/TableInput.tsx",
|
|
3256
3219
|
_s = $RefreshSig$();
|
|
3257
3220
|
|
|
3258
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
3259
|
-
|
|
3260
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
3261
|
-
|
|
3221
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
3262
3222
|
|
|
3223
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
3263
3224
|
|
|
3264
|
-
/* eslint-disable react/jsx-key */
|
|
3265
3225
|
|
|
3266
3226
|
|
|
3267
3227
|
|
|
@@ -3330,55 +3290,73 @@ function TableInputTable(props) {
|
|
|
3330
3290
|
|
|
3331
3291
|
var footer = hasFooter ? /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_6__.Table.Footer, {
|
|
3332
3292
|
children: footerGroups.map(function (group) {
|
|
3333
|
-
return
|
|
3334
|
-
|
|
3335
|
-
|
|
3336
|
-
|
|
3337
|
-
|
|
3338
|
-
|
|
3339
|
-
|
|
3340
|
-
|
|
3341
|
-
|
|
3342
|
-
|
|
3343
|
-
|
|
3344
|
-
|
|
3345
|
-
|
|
3346
|
-
|
|
3347
|
-
|
|
3293
|
+
return (
|
|
3294
|
+
/*#__PURE__*/
|
|
3295
|
+
// eslint-disable-next-line react/jsx-key
|
|
3296
|
+
(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_6__.Table.Row, _objectSpread(_objectSpread({}, _objectSpread(_objectSpread({}, group.getFooterGroupProps()), group.getFooterGroupProps(footerRowProps))), {}, {
|
|
3297
|
+
children: group.headers.map(function (column) {
|
|
3298
|
+
return (
|
|
3299
|
+
/*#__PURE__*/
|
|
3300
|
+
// eslint-disable-next-line react/jsx-key
|
|
3301
|
+
(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_6__.Table.HeaderCell, _objectSpread(_objectSpread({}, _objectSpread(_objectSpread({}, column.getFooterProps()), column.getFooterProps(footerCellProps))), {}, {
|
|
3302
|
+
children: column.render('Footer')
|
|
3303
|
+
}), void 0, false, {
|
|
3304
|
+
fileName: _jsxFileName,
|
|
3305
|
+
lineNumber: 94,
|
|
3306
|
+
columnNumber: 7
|
|
3307
|
+
}, _this)
|
|
3308
|
+
);
|
|
3309
|
+
})
|
|
3310
|
+
}), void 0, false, {
|
|
3311
|
+
fileName: _jsxFileName,
|
|
3312
|
+
lineNumber: 91,
|
|
3313
|
+
columnNumber: 5
|
|
3314
|
+
}, _this)
|
|
3315
|
+
);
|
|
3348
3316
|
})
|
|
3349
3317
|
}, void 0, false, {
|
|
3350
3318
|
fileName: _jsxFileName,
|
|
3351
|
-
lineNumber:
|
|
3319
|
+
lineNumber: 88,
|
|
3352
3320
|
columnNumber: 3
|
|
3353
3321
|
}, this) : null;
|
|
3354
|
-
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(
|
|
3355
|
-
children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_6__.Table,
|
|
3356
|
-
children:
|
|
3357
|
-
|
|
3358
|
-
|
|
3322
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_6__.Table, _objectSpread(_objectSpread({}, _objectSpread(_objectSpread({}, getTableProps()), getTableProps(tableProps))), {}, {
|
|
3323
|
+
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_6__.Table.Header, {
|
|
3324
|
+
children: headerGroups.map(function (headerGroup) {
|
|
3325
|
+
return (
|
|
3326
|
+
/*#__PURE__*/
|
|
3327
|
+
// eslint-disable-next-line react/jsx-key
|
|
3328
|
+
(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_6__.Table.Row, _objectSpread(_objectSpread({}, _objectSpread(_objectSpread({}, headerGroup.getHeaderGroupProps()), headerGroup.getHeaderGroupProps(headerRowProps))), {}, {
|
|
3359
3329
|
children: headerGroup.headers.map(function (column) {
|
|
3360
|
-
return
|
|
3361
|
-
|
|
3362
|
-
|
|
3363
|
-
|
|
3364
|
-
|
|
3365
|
-
|
|
3366
|
-
|
|
3330
|
+
return (
|
|
3331
|
+
/*#__PURE__*/
|
|
3332
|
+
// eslint-disable-next-line react/jsx-key
|
|
3333
|
+
(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_6__.Table.HeaderCell, _objectSpread(_objectSpread({}, _objectSpread(_objectSpread({}, column.getHeaderProps()), column.getHeaderProps(headerCellProps))), {}, {
|
|
3334
|
+
children: column.render('Header')
|
|
3335
|
+
}), void 0, false, {
|
|
3336
|
+
fileName: _jsxFileName,
|
|
3337
|
+
lineNumber: 111,
|
|
3338
|
+
columnNumber: 8
|
|
3339
|
+
}, _this)
|
|
3340
|
+
);
|
|
3367
3341
|
})
|
|
3368
3342
|
}), void 0, false, {
|
|
3369
3343
|
fileName: _jsxFileName,
|
|
3370
|
-
lineNumber:
|
|
3371
|
-
columnNumber:
|
|
3372
|
-
}, _this)
|
|
3373
|
-
|
|
3374
|
-
}
|
|
3375
|
-
|
|
3376
|
-
|
|
3377
|
-
|
|
3378
|
-
|
|
3379
|
-
|
|
3380
|
-
|
|
3381
|
-
|
|
3344
|
+
lineNumber: 108,
|
|
3345
|
+
columnNumber: 6
|
|
3346
|
+
}, _this)
|
|
3347
|
+
);
|
|
3348
|
+
})
|
|
3349
|
+
}, void 0, false, {
|
|
3350
|
+
fileName: _jsxFileName,
|
|
3351
|
+
lineNumber: 105,
|
|
3352
|
+
columnNumber: 4
|
|
3353
|
+
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_6__.Table.Body, _objectSpread(_objectSpread({}, _objectSpread(_objectSpread({}, getTableBodyProps()), getTableBodyProps(bodyProps))), {}, {
|
|
3354
|
+
children: rows.map(function (row) {
|
|
3355
|
+
prepareRow(row);
|
|
3356
|
+
return (
|
|
3357
|
+
/*#__PURE__*/
|
|
3358
|
+
// eslint-disable-next-line react/jsx-key
|
|
3359
|
+
(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_6__.Table.Row, _objectSpread(_objectSpread({}, _objectSpread(_objectSpread({}, row.getRowProps()), row.getRowProps(rowProps))), {}, {
|
|
3382
3360
|
onMouseEnter: function onMouseEnter() {
|
|
3383
3361
|
return setHoverRow(row.id);
|
|
3384
3362
|
},
|
|
@@ -3386,33 +3364,37 @@ function TableInputTable(props) {
|
|
|
3386
3364
|
return setHoverRow('');
|
|
3387
3365
|
},
|
|
3388
3366
|
children: row.cells.map(function (cell) {
|
|
3389
|
-
return
|
|
3390
|
-
|
|
3391
|
-
|
|
3392
|
-
})
|
|
3393
|
-
|
|
3394
|
-
|
|
3395
|
-
|
|
3396
|
-
|
|
3397
|
-
|
|
3367
|
+
return (
|
|
3368
|
+
/*#__PURE__*/
|
|
3369
|
+
// eslint-disable-next-line react/jsx-key
|
|
3370
|
+
(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_6__.Table.Cell, _objectSpread(_objectSpread({}, _objectSpread(_objectSpread({}, cell.getCellProps()), cell.getCellProps(cellProps))), {}, {
|
|
3371
|
+
children: cell.render('Cell', {
|
|
3372
|
+
hoverRow: hoverRow
|
|
3373
|
+
})
|
|
3374
|
+
}), void 0, false, {
|
|
3375
|
+
fileName: _jsxFileName,
|
|
3376
|
+
lineNumber: 130,
|
|
3377
|
+
columnNumber: 9
|
|
3378
|
+
}, _this)
|
|
3379
|
+
);
|
|
3398
3380
|
})
|
|
3399
3381
|
}), void 0, false, {
|
|
3400
3382
|
fileName: _jsxFileName,
|
|
3401
|
-
lineNumber:
|
|
3402
|
-
columnNumber:
|
|
3403
|
-
}, _this)
|
|
3404
|
-
|
|
3405
|
-
})
|
|
3406
|
-
|
|
3407
|
-
lineNumber: 116,
|
|
3408
|
-
columnNumber: 5
|
|
3409
|
-
}, this), footer]
|
|
3410
|
-
}), void 0, true, {
|
|
3383
|
+
lineNumber: 123,
|
|
3384
|
+
columnNumber: 7
|
|
3385
|
+
}, _this)
|
|
3386
|
+
);
|
|
3387
|
+
})
|
|
3388
|
+
}), void 0, false, {
|
|
3411
3389
|
fileName: _jsxFileName,
|
|
3412
|
-
lineNumber:
|
|
3390
|
+
lineNumber: 118,
|
|
3413
3391
|
columnNumber: 4
|
|
3414
|
-
}, this)
|
|
3415
|
-
}, void 0,
|
|
3392
|
+
}, this), footer]
|
|
3393
|
+
}), void 0, true, {
|
|
3394
|
+
fileName: _jsxFileName,
|
|
3395
|
+
lineNumber: 104,
|
|
3396
|
+
columnNumber: 3
|
|
3397
|
+
}, this);
|
|
3416
3398
|
}
|
|
3417
3399
|
/**
|
|
3418
3400
|
* Can be used in a TForm as a Table Input.
|
|
@@ -3436,13 +3418,13 @@ function TableInput(props) {
|
|
|
3436
3418
|
arrayHelpers: arrayHelpers
|
|
3437
3419
|
}, props), void 0, false, {
|
|
3438
3420
|
fileName: _jsxFileName,
|
|
3439
|
-
lineNumber:
|
|
3421
|
+
lineNumber: 147,
|
|
3440
3422
|
columnNumber: 63
|
|
3441
3423
|
}, _this2);
|
|
3442
3424
|
}
|
|
3443
3425
|
}, void 0, false, {
|
|
3444
3426
|
fileName: _jsxFileName,
|
|
3445
|
-
lineNumber:
|
|
3427
|
+
lineNumber: 147,
|
|
3446
3428
|
columnNumber: 9
|
|
3447
3429
|
}, this);
|
|
3448
3430
|
}
|
|
@@ -3557,9 +3539,9 @@ var _excluded = ["name", "onBlur", "prefix", "defaultCurrency", "onChange", "sho
|
|
|
3557
3539
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/money/MoneyCurrencyInput/MoneyCurrencyInput.tsx",
|
|
3558
3540
|
_s = $RefreshSig$();
|
|
3559
3541
|
|
|
3560
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
3542
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
3561
3543
|
|
|
3562
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
3544
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
3563
3545
|
|
|
3564
3546
|
|
|
3565
3547
|
/* eslint-disable jsx-a11y/no-static-element-interactions */
|
|
@@ -3722,9 +3704,9 @@ var _excluded = ["name", "onBlur", "locked", "prefix", "defaultCurrency", "onCha
|
|
|
3722
3704
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/money/MoneyInput/MoneyInput.tsx",
|
|
3723
3705
|
_s = $RefreshSig$();
|
|
3724
3706
|
|
|
3725
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
3707
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
3726
3708
|
|
|
3727
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
3709
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
3728
3710
|
|
|
3729
3711
|
|
|
3730
3712
|
/* eslint-disable jsx-a11y/no-static-element-interactions */
|
|
@@ -3898,7 +3880,7 @@ function useMoneyInput(props) {
|
|
|
3898
3880
|
maskInstance.current.remove();
|
|
3899
3881
|
maskInstance.current = null;
|
|
3900
3882
|
}
|
|
3901
|
-
};
|
|
3883
|
+
}; // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
3902
3884
|
}, [currencyCode, prefix, showPrefix, wholeNumber]);
|
|
3903
3885
|
var setVal = (0,react__WEBPACK_IMPORTED_MODULE_4__.useCallback)(function (v) {
|
|
3904
3886
|
if (inputElement.current) {
|
|
@@ -3971,7 +3953,7 @@ function FormStep(props) {
|
|
|
3971
3953
|
handleSubmit = _useStep2[1];
|
|
3972
3954
|
|
|
3973
3955
|
var values = state[props.stepKey] || {};
|
|
3974
|
-
var form = /*#__PURE__*/
|
|
3956
|
+
var form = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_2__.cloneElement)(react__WEBPACK_IMPORTED_MODULE_2__.Children.only(props.children), {
|
|
3975
3957
|
values: values || {},
|
|
3976
3958
|
onSubmit: function onSubmit(vals) {
|
|
3977
3959
|
return handleSubmit(vals, props.stepKey);
|
|
@@ -4012,23 +3994,20 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
4012
3994
|
/* harmony export */ });
|
|
4013
3995
|
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! debug */ "debug");
|
|
4014
3996
|
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_0__);
|
|
4015
|
-
/* harmony import */ var
|
|
4016
|
-
/* harmony import */ var
|
|
4017
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
4018
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__);
|
|
3997
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
3998
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_1__);
|
|
4019
3999
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/step/Step.tsx";
|
|
4020
4000
|
|
|
4021
4001
|
|
|
4022
4002
|
|
|
4023
|
-
|
|
4024
4003
|
var d = debug__WEBPACK_IMPORTED_MODULE_0___default()('thx.controls.step.Step');
|
|
4025
4004
|
function Step(props) {
|
|
4026
|
-
return /*#__PURE__*/(0,
|
|
4027
|
-
children: [/*#__PURE__*/(0,
|
|
4005
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_1__.Fragment, {
|
|
4006
|
+
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxDEV)("h1", {
|
|
4028
4007
|
children: props.title
|
|
4029
4008
|
}, void 0, false, {
|
|
4030
4009
|
fileName: _jsxFileName,
|
|
4031
|
-
lineNumber:
|
|
4010
|
+
lineNumber: 15,
|
|
4032
4011
|
columnNumber: 4
|
|
4033
4012
|
}, this), props.children]
|
|
4034
4013
|
}, void 0, true);
|
|
@@ -4074,9 +4053,9 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
4074
4053
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/step/StepProvider.tsx",
|
|
4075
4054
|
_s = $RefreshSig$();
|
|
4076
4055
|
|
|
4077
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
4056
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
4078
4057
|
|
|
4079
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
4058
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4080
4059
|
|
|
4081
4060
|
|
|
4082
4061
|
|
|
@@ -4121,7 +4100,7 @@ function StepProvider(props) {
|
|
|
4121
4100
|
var _child$props;
|
|
4122
4101
|
|
|
4123
4102
|
titles.push((child === null || child === void 0 ? void 0 : (_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.title) || '');
|
|
4124
|
-
children.push( /*#__PURE__*/
|
|
4103
|
+
children.push( /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_3__.cloneElement)(child, {
|
|
4125
4104
|
step: index,
|
|
4126
4105
|
key: (child === null || child === void 0 ? void 0 : child.key) || index.toString()
|
|
4127
4106
|
}));
|
|
@@ -4130,7 +4109,7 @@ function StepProvider(props) {
|
|
|
4130
4109
|
var _child$props2;
|
|
4131
4110
|
|
|
4132
4111
|
titles.push((child === null || child === void 0 ? void 0 : (_child$props2 = child.props) === null || _child$props2 === void 0 ? void 0 : _child$props2.title) || '');
|
|
4133
|
-
children.push( /*#__PURE__*/
|
|
4112
|
+
children.push( /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_3__.cloneElement)(child, {
|
|
4134
4113
|
step: index,
|
|
4135
4114
|
key: (child === null || child === void 0 ? void 0 : child.key) || index.toString()
|
|
4136
4115
|
}));
|
|
@@ -4141,29 +4120,31 @@ function StepProvider(props) {
|
|
|
4141
4120
|
return 'Are you sure you want to end this process? All the entered data will be lost!';
|
|
4142
4121
|
};
|
|
4143
4122
|
|
|
4144
|
-
var
|
|
4145
|
-
|
|
4146
|
-
|
|
4147
|
-
|
|
4148
|
-
|
|
4149
|
-
|
|
4150
|
-
|
|
4151
|
-
|
|
4152
|
-
|
|
4153
|
-
|
|
4123
|
+
var valueProps = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(function () {
|
|
4124
|
+
return {
|
|
4125
|
+
state: state,
|
|
4126
|
+
handleSubmit: function handleSubmit(values, stepKey) {
|
|
4127
|
+
if (currentStep + 1 === (children === null || children === void 0 ? void 0 : children.length)) {
|
|
4128
|
+
setState(_objectSpread(_objectSpread({}, state), {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()({}, stepKey, values)));
|
|
4129
|
+
setIsSubmitting(true);
|
|
4130
|
+
props.onSubmit(_objectSpread(_objectSpread({}, state), {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()({}, stepKey, values)));
|
|
4131
|
+
} else {
|
|
4132
|
+
setState(_objectSpread(_objectSpread({}, state), {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()({}, stepKey, values)));
|
|
4133
|
+
setCurrentStep(currentStep + 1);
|
|
4134
|
+
}
|
|
4135
|
+
}
|
|
4136
|
+
};
|
|
4137
|
+
}, [children === null || children === void 0 ? void 0 : children.length, currentStep, props, state]);
|
|
4154
4138
|
|
|
4155
4139
|
if (props.vertical) {
|
|
4156
4140
|
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxDEV)(_stepContext__WEBPACK_IMPORTED_MODULE_8__.StepContext.Provider, {
|
|
4157
|
-
value:
|
|
4158
|
-
state: state,
|
|
4159
|
-
handleSubmit: handleSubmit
|
|
4160
|
-
},
|
|
4141
|
+
value: valueProps,
|
|
4161
4142
|
children: [props.warnOnReroute && /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxDEV)(react_router_dom__WEBPACK_IMPORTED_MODULE_4__.Prompt, {
|
|
4162
4143
|
message: onNavigate,
|
|
4163
4144
|
when: !isSubmitting
|
|
4164
4145
|
}, void 0, false, {
|
|
4165
4146
|
fileName: _jsxFileName,
|
|
4166
|
-
lineNumber:
|
|
4147
|
+
lineNumber: 64,
|
|
4167
4148
|
columnNumber: 29
|
|
4168
4149
|
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_5__.Grid, {
|
|
4169
4150
|
divided: true,
|
|
@@ -4189,64 +4170,61 @@ function StepProvider(props) {
|
|
|
4189
4170
|
children: title
|
|
4190
4171
|
}, void 0, false, {
|
|
4191
4172
|
fileName: _jsxFileName,
|
|
4192
|
-
lineNumber:
|
|
4173
|
+
lineNumber: 79,
|
|
4193
4174
|
columnNumber: 13
|
|
4194
4175
|
}, _this)
|
|
4195
4176
|
}, void 0, false, {
|
|
4196
4177
|
fileName: _jsxFileName,
|
|
4197
|
-
lineNumber:
|
|
4178
|
+
lineNumber: 78,
|
|
4198
4179
|
columnNumber: 12
|
|
4199
4180
|
}, _this)
|
|
4200
4181
|
}, index.toString(), false, {
|
|
4201
4182
|
fileName: _jsxFileName,
|
|
4202
|
-
lineNumber:
|
|
4183
|
+
lineNumber: 71,
|
|
4203
4184
|
columnNumber: 11
|
|
4204
4185
|
}, _this);
|
|
4205
4186
|
})
|
|
4206
4187
|
}, void 0, false, {
|
|
4207
4188
|
fileName: _jsxFileName,
|
|
4208
|
-
lineNumber:
|
|
4189
|
+
lineNumber: 68,
|
|
4209
4190
|
columnNumber: 8
|
|
4210
4191
|
}, this)
|
|
4211
4192
|
}, void 0, false, {
|
|
4212
4193
|
fileName: _jsxFileName,
|
|
4213
|
-
lineNumber:
|
|
4194
|
+
lineNumber: 67,
|
|
4214
4195
|
columnNumber: 7
|
|
4215
4196
|
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_5__.Grid.Column, {
|
|
4216
4197
|
width: 13,
|
|
4217
4198
|
children: children === null || children === void 0 ? void 0 : children[currentStep]
|
|
4218
4199
|
}, void 0, false, {
|
|
4219
4200
|
fileName: _jsxFileName,
|
|
4220
|
-
lineNumber:
|
|
4201
|
+
lineNumber: 86,
|
|
4221
4202
|
columnNumber: 7
|
|
4222
4203
|
}, this)]
|
|
4223
4204
|
}, void 0, true, {
|
|
4224
4205
|
fileName: _jsxFileName,
|
|
4225
|
-
lineNumber:
|
|
4206
|
+
lineNumber: 66,
|
|
4226
4207
|
columnNumber: 6
|
|
4227
4208
|
}, this)
|
|
4228
4209
|
}, void 0, false, {
|
|
4229
4210
|
fileName: _jsxFileName,
|
|
4230
|
-
lineNumber:
|
|
4211
|
+
lineNumber: 65,
|
|
4231
4212
|
columnNumber: 5
|
|
4232
4213
|
}, this)]
|
|
4233
4214
|
}, void 0, true, {
|
|
4234
4215
|
fileName: _jsxFileName,
|
|
4235
|
-
lineNumber:
|
|
4216
|
+
lineNumber: 63,
|
|
4236
4217
|
columnNumber: 4
|
|
4237
4218
|
}, this);
|
|
4238
4219
|
}
|
|
4239
4220
|
|
|
4240
4221
|
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxDEV)(_stepContext__WEBPACK_IMPORTED_MODULE_8__.StepContext.Provider, {
|
|
4241
|
-
value:
|
|
4242
|
-
state: state,
|
|
4243
|
-
handleSubmit: handleSubmit
|
|
4244
|
-
},
|
|
4222
|
+
value: valueProps,
|
|
4245
4223
|
children: [props.warnOnReroute && /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxDEV)(react_router_dom__WEBPACK_IMPORTED_MODULE_4__.Prompt, {
|
|
4246
4224
|
message: onNavigate
|
|
4247
4225
|
}, void 0, false, {
|
|
4248
4226
|
fileName: _jsxFileName,
|
|
4249
|
-
lineNumber:
|
|
4227
|
+
lineNumber: 95,
|
|
4250
4228
|
columnNumber: 28
|
|
4251
4229
|
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_5__.Step.Group, {
|
|
4252
4230
|
ordered: true,
|
|
@@ -4264,33 +4242,33 @@ function StepProvider(props) {
|
|
|
4264
4242
|
children: title
|
|
4265
4243
|
}, void 0, false, {
|
|
4266
4244
|
fileName: _jsxFileName,
|
|
4267
|
-
lineNumber:
|
|
4245
|
+
lineNumber: 107,
|
|
4268
4246
|
columnNumber: 9
|
|
4269
4247
|
}, _this)
|
|
4270
4248
|
}, void 0, false, {
|
|
4271
4249
|
fileName: _jsxFileName,
|
|
4272
|
-
lineNumber:
|
|
4250
|
+
lineNumber: 106,
|
|
4273
4251
|
columnNumber: 8
|
|
4274
4252
|
}, _this)
|
|
4275
4253
|
}, index.toString(), false, {
|
|
4276
4254
|
fileName: _jsxFileName,
|
|
4277
|
-
lineNumber:
|
|
4255
|
+
lineNumber: 99,
|
|
4278
4256
|
columnNumber: 7
|
|
4279
4257
|
}, _this);
|
|
4280
4258
|
})
|
|
4281
4259
|
}, void 0, false, {
|
|
4282
4260
|
fileName: _jsxFileName,
|
|
4283
|
-
lineNumber:
|
|
4261
|
+
lineNumber: 96,
|
|
4284
4262
|
columnNumber: 4
|
|
4285
4263
|
}, this), children === null || children === void 0 ? void 0 : children[currentStep]]
|
|
4286
4264
|
}, void 0, true, {
|
|
4287
4265
|
fileName: _jsxFileName,
|
|
4288
|
-
lineNumber:
|
|
4266
|
+
lineNumber: 94,
|
|
4289
4267
|
columnNumber: 3
|
|
4290
4268
|
}, this);
|
|
4291
4269
|
}
|
|
4292
4270
|
|
|
4293
|
-
_s(StepProvider, "
|
|
4271
|
+
_s(StepProvider, "1KxLLnxTTggs8yuoH4MEhfQxz+w=");
|
|
4294
4272
|
|
|
4295
4273
|
_c = StepProvider;
|
|
4296
4274
|
|
|
@@ -4337,7 +4315,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
4337
4315
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
|
|
4338
4316
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
4339
4317
|
|
|
4340
|
-
var StepContext = /*#__PURE__*/
|
|
4318
|
+
var StepContext = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)({
|
|
4341
4319
|
handleSubmit: function handleSubmit() {},
|
|
4342
4320
|
state: {}
|
|
4343
4321
|
});
|
|
@@ -4596,8 +4574,8 @@ module.exports = function (cssWithMappingToString) {
|
|
|
4596
4574
|
var alreadyImportedModules = {};
|
|
4597
4575
|
|
|
4598
4576
|
if (dedupe) {
|
|
4599
|
-
for (var
|
|
4600
|
-
var id = this[
|
|
4577
|
+
for (var k = 0; k < this.length; k++) {
|
|
4578
|
+
var id = this[k][0];
|
|
4601
4579
|
|
|
4602
4580
|
if (id != null) {
|
|
4603
4581
|
alreadyImportedModules[id] = true;
|
|
@@ -4605,8 +4583,8 @@ module.exports = function (cssWithMappingToString) {
|
|
|
4605
4583
|
}
|
|
4606
4584
|
}
|
|
4607
4585
|
|
|
4608
|
-
for (var
|
|
4609
|
-
var item = [].concat(modules[
|
|
4586
|
+
for (var _k = 0; _k < modules.length; _k++) {
|
|
4587
|
+
var item = [].concat(modules[_k]);
|
|
4610
4588
|
|
|
4611
4589
|
if (dedupe && alreadyImportedModules[item[0]]) {
|
|
4612
4590
|
continue;
|
|
@@ -5479,4 +5457,4 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
5479
5457
|
module.exports = __webpack_exports__;
|
|
5480
5458
|
/******/ })()
|
|
5481
5459
|
;
|
|
5482
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Ozs7VUNBQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBOztVQUVBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBOzs7OztXQ3RCQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EsaUNBQWlDLFdBQVc7V0FDNUM7V0FDQTs7Ozs7V0NQQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLHlDQUF5Qyx3Q0FBd0M7V0FDakY7V0FDQTtXQUNBOzs7OztXQ1BBOzs7OztXQ0FBO1dBQ0E7V0FDQTtXQUNBLHVEQUF1RCxpQkFBaUI7V0FDeEU7V0FDQSxnREFBZ0QsYUFBYTtXQUM3RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ05BO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUVBO0FBR0E7QUFDQTtBQUdBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFHQTtBQUNBO0FBR0E7QUFDQTtBQUVBO0FBR0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9kYXRlL0RhdGVQaWNrZXIvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vZGF0ZS9Mb2NhbERhdGVQaWNrZXIvTG9jYWxEYXRlUGlja2VyLnRzeCIsIndlYnBhY2s6Ly8vLi9kYXRlL0xvY2FsRGF0ZVBpY2tlci9NYXNrZWREYXRlSW5wdXQudHN4Iiwid2VicGFjazovLy8uL2RhdGUvTG9jYWxEYXRlUGlja2VyL2luZGV4LnRzIiwid2VicGFjazovLy8uL2RhdGUvTG9jYWxNb250aFNlbGVjdC9Mb2NhbE1vbnRoU2VsZWN0LnRzeCIsIndlYnBhY2s6Ly8vLi9kYXRlL0xvY2FsTW9udGhTZWxlY3QvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vZGF0ZS9Mb2NhbFRpbWVQaWNrZXIvTG9jYWxUaW1lUGlja2VyLnRzeCIsIndlYnBhY2s6Ly8vLi9kYXRlL0xvY2FsVGltZVBpY2tlci9NYXNrZWRUaW1lSW5wdXQudHN4Iiwid2VicGFjazovLy8uL2RhdGUvTG9jYWxUaW1lUGlja2VyL2luZGV4LnRzIiwid2VicGFjazovLy8uL2RhdGUvTW9udGhEYXlQaWNrZXIvTW9udGhEYXlQaWNrZXIudHN4Iiwid2VicGFjazovLy8uL2RhdGUvTW9udGhEYXlQaWNrZXIvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vZGF0ZS9Nb250aFllYXJQaWNrZXIvTW9udGhZZWFyUGlja2VyLnRzeCIsIndlYnBhY2s6Ly8vLi9kYXRlL01vbnRoWWVhclBpY2tlci9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9kYXRlL1llYXJTZWxlY3QvWWVhclNlbGVjdC50c3giLCJ3ZWJwYWNrOi8vLy4vZGF0ZS9ZZWFyU2VsZWN0L2luZGV4LnRzIiwid2VicGFjazovLy8uL2Zvcm0vVEZvcm0vVEZvcm0udHN4Iiwid2VicGFjazovLy8uL2Zvcm0vVEZvcm0vaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vZm9ybS9URm9ybS91c2VURm9ybS50c3giLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL0NyZWRpdENhcmRJbnB1dC9DcmVkaXRDYXJkSW5wdXQudHN4Iiwid2VicGFjazovLy8uL2lucHV0cy9DcmVkaXRDYXJkSW5wdXQvQ3JlZGl0Q2FyZE51bWJlcklucHV0LnRzeCIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvQ3JlZGl0Q2FyZElucHV0L2luZGV4LnRzIiwid2VicGFjazovLy8uL2lucHV0cy9NYXNrZWRJbnB1dC9NYXNrZWRJbnB1dC50c3giLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL01hc2tlZElucHV0L2luZGV4LnRzIiwid2VicGFjazovLy8uL2lucHV0cy9NYXNrZWRJbnB1dC91c2VNYXNrZWRJbnB1dC50cyIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvUGhvbmVJbnB1dC9QaG9uZUlucHV0LnRzeCIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvUGhvbmVJbnB1dC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvUmFkaW9Hcm91cC9SYWRpb0dyb3VwLnRzeCIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvUmFkaW9Hcm91cC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvU2NyaXB0ZWwvU2NyaXB0ZWwudHN4Iiwid2VicGFjazovLy8uL2lucHV0cy9TY3JpcHRlbC9TY3JpcHRlbENvbnRleHQudHMiLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1NjcmlwdGVsL2luZGV4LnRzIiwid2VicGFjazovLy8uL2lucHV0cy9TY3JpcHRlbC9zY3JpcHRlbC9lbnVtcy50cyIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvU2NyaXB0ZWwvc2NyaXB0ZWwvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1NjcmlwdGVsL3dpdGhTY3JpcHRlbC50c3giLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1NjcmlwdGVsSW5wdXQvU2NyaXB0ZWxJbnB1dC50c3giLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1NjcmlwdGVsSW5wdXQvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1NpbklucHV0L1NpbklucHV0LnRzeCIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvU2luSW5wdXQvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1RhYmxlSW5wdXQvRHJvcGRvd25DZWxsLnRzeCIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvVGFibGVJbnB1dC9Ib3ZlckNlbGwudHN4Iiwid2VicGFjazovLy8uL2lucHV0cy9UYWJsZUlucHV0L01vbmV5Q2VsbC50c3giLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1RhYmxlSW5wdXQvTW9uZXlFZGl0Q2VsbC50c3giLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1RhYmxlSW5wdXQvTW9uZXlTdW1Gb290ZXIudHN4Iiwid2VicGFjazovLy8uL2lucHV0cy9UYWJsZUlucHV0L1N0cmluZ0VkaXRDZWxsLnRzeCIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvVGFibGVJbnB1dC9UYWJsZUlucHV0LnRzeCIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvVGFibGVJbnB1dC9hZGRSb3dPblRhYi50cyIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvVGFibGVJbnB1dC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9tb25leS9Nb25leUN1cnJlbmN5SW5wdXQvTW9uZXlDdXJyZW5jeUlucHV0LnRzeCIsIndlYnBhY2s6Ly8vLi9tb25leS9Nb25leUN1cnJlbmN5SW5wdXQvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vbW9uZXkvTW9uZXlJbnB1dC9Nb25leUlucHV0LnRzeCIsIndlYnBhY2s6Ly8vLi9tb25leS9Nb25leUlucHV0L2luZGV4LnRzIiwid2VicGFjazovLy8uL21vbmV5L3VzZU1vbmV5SW5wdXQudHMiLCJ3ZWJwYWNrOi8vLy4vc3RlcC9Gb3JtU3RlcC50c3giLCJ3ZWJwYWNrOi8vLy4vc3RlcC9TdGVwLnRzeCIsIndlYnBhY2s6Ly8vLi9zdGVwL1N0ZXBQcm92aWRlci50c3giLCJ3ZWJwYWNrOi8vLy4vc3RlcC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zdGVwL3N0ZXBDb250ZXh0LnRzIiwid2VicGFjazovLy8uL3N0ZXAvdXNlU3RlcC50cyIsIndlYnBhY2s6Ly8vLi9kYXRlL0RhdGVQaWNrZXIvc3R5bGVzLmNzcz8xM2I3Iiwid2VicGFjazovLy8uL2lucHV0cy9DcmVkaXRDYXJkSW5wdXQvc3R5bGVzLmNzcz9mZTFkIiwid2VicGFjazovLy8uL2RhdGUvRGF0ZVBpY2tlci9zdHlsZXMuY3NzIiwid2VicGFjazovLy8uL2lucHV0cy9DcmVkaXRDYXJkSW5wdXQvc3R5bGVzLmNzcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qcyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2ZcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXlcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJAanMtam9kYS9jb3JlXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQHRoeC9kYXRlXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQHRoeC9tb25leVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImNyZWRpdC1jYXJkLXR5cGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJkZWJ1Z1wiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImV2ZW50ZW1pdHRlcjNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJmbGF0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiZm9ybWlrXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiaW5wdXRtYXNrXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwianMtbW9uZXlcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJsb2Rhc2gvZ2V0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwibG9kYXNoL3Byb3BlcnR5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwibG9kYXNoL3VuaXFcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJsdWhuXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3RcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1jcmVkaXQtY2FyZHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1jcmVkaXQtY2FyZHMvZXMvc3R5bGVzLWNvbXBpbGVkLmNzc1wiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWRhdGVwaWNrZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1yb3V0ZXItZG9tXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtdGFibGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC9qc3gtZGV2LXJ1bnRpbWVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJzZW1hbnRpYy11aS1yZWFjdFwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcInNvY2lhbC1pbnN1cmFuY2UtbnVtYmVyXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwidXNlLWRlZXAtY29tcGFyZS1lZmZlY3RcIiIsIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vLy4vaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERhdGVQaWNrZXIgZnJvbSAncmVhY3QtZGF0ZXBpY2tlcic7XG5pbXBvcnQgJy4vc3R5bGVzLmNzcyc7XG5cbmV4cG9ydCB7RGF0ZVBpY2tlcn07XG4iLCJpbXBvcnQgdHlwZSB7TG9jYWxEYXRlfSBmcm9tICdAanMtam9kYS9jb3JlJztcbmltcG9ydCB7dG9EYXRlLCB0b0xvY2FsRGF0ZX0gZnJvbSAnQHRoeC9kYXRlJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUge1JlYWN0RGF0ZVBpY2tlclByb3BzfSBmcm9tICdyZWFjdC1kYXRlcGlja2VyJztcbmltcG9ydCB0eXBlIHtJbnB1dFByb3BzfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQge0RhdGVQaWNrZXJ9IGZyb20gJy4uL0RhdGVQaWNrZXIvaW5kZXgnO1xuaW1wb3J0IHtNYXNrZWREYXRlSW5wdXR9IGZyb20gJy4vTWFza2VkRGF0ZUlucHV0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuZGF0ZS5Mb2NhbERhdGVQaWNrZXInKTtcblxuaW50ZXJmYWNlIElMb2NhbERhdGVQaWNrZXIge1xuXHR2YWx1ZT86IExvY2FsRGF0ZSB8IG51bWJlciB8IG51bGw7XG5cdG9uQ2hhbmdlPzogKHZhbHVlOiBMb2NhbERhdGUgfCBudWxsKSA9PiB2b2lkO1xuXHRvbkNoYW5nZVJhdz86ICgpID0+IHZvaWQ7XG5cdG1pbkRhdGU/OiBMb2NhbERhdGU7XG5cdG1heERhdGU/OiBMb2NhbERhdGU7XG59XG5cbnR5cGUgSW5wdXRQcm9wc09taXR0ZWQgPSBPbWl0PElucHV0UHJvcHMsICdvbkNoYW5nZSc+O1xudHlwZSBSZWFjdERhdGVQaWNrZXJQcm9wc09taXR0ZWQgPSBPbWl0PE9taXQ8UmVhY3REYXRlUGlja2VyUHJvcHMsICd2YWx1ZSc+LCAnb25DaGFuZ2UnIHwgJ21pbkRhdGUnIHwgJ21heERhdGUnPjtcbmV4cG9ydCB0eXBlIExvY2FsRGF0ZVBpY2tlclByb3BzID0gSUxvY2FsRGF0ZVBpY2tlciAmIElucHV0UHJvcHNPbWl0dGVkICYgUmVhY3REYXRlUGlja2VyUHJvcHNPbWl0dGVkO1xuXG5leHBvcnQgZnVuY3Rpb24gTG9jYWxEYXRlUGlja2VyKHByb3BzOiBMb2NhbERhdGVQaWNrZXJQcm9wcyk6IEpTWC5FbGVtZW50IHtcblx0Y29uc3Qge1xuXHRcdG1pbkRhdGUsXG5cdFx0bWF4RGF0ZSxcblx0XHR2YWx1ZSxcblx0XHRvbkNoYW5nZSxcblx0XHRvbkJsdXIsXG5cdFx0YXMsXG5cdFx0YWN0aW9uLFxuXHRcdGFjdGlvblBvc2l0aW9uLFxuXHRcdGNsYXNzTmFtZSxcblx0XHRlcnJvcixcblx0XHRmbHVpZCxcblx0XHRmb2N1cyxcblx0XHRpY29uLFxuXHRcdGljb25Qb3NpdGlvbixcblx0XHRpbnZlcnRlZCxcblx0XHRsYWJlbCxcblx0XHRsYWJlbFBvc2l0aW9uLFxuXHRcdGxvYWRpbmcsXG5cdFx0c2l6ZSxcblx0XHR0YWJJbmRleCxcblx0XHR0cmFuc3BhcmVudCxcblx0XHQuLi5yZXN0XG5cdH0gPSBwcm9wcztcblxuXHRjb25zdCBzZWxlY3RlZCA9IHZhbHVlID8gdG9EYXRlKHZhbHVlKSA6IG51bGw7XG5cblx0Y29uc3QgaW5wdXRQcm9wcyA9IHtcblx0XHRhcyxcblx0XHRhY3Rpb24sXG5cdFx0YWN0aW9uUG9zaXRpb24sXG5cdFx0Y2xhc3NOYW1lLFxuXHRcdGVycm9yLFxuXHRcdGZsdWlkLFxuXHRcdGZvY3VzLFxuXHRcdGljb24sXG5cdFx0aWNvblBvc2l0aW9uLFxuXHRcdGludmVydGVkLFxuXHRcdGxhYmVsLFxuXHRcdGxhYmVsUG9zaXRpb24sXG5cdFx0bG9hZGluZyxcblx0XHRzaXplLFxuXHRcdHRhYkluZGV4LFxuXHRcdHRyYW5zcGFyZW50LFxuXHR9O1xuXG5cdHJldHVybiAoXG5cdFx0PERhdGVQaWNrZXJcblx0XHRcdHsuLi5yZXN0fVxuXHRcdFx0c2VsZWN0ZWQ9e3NlbGVjdGVkfVxuXHRcdFx0b25DaGFuZ2U9e2RhdGUgPT4ge1xuXHRcdFx0XHRpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKGRhdGUgPyB0b0xvY2FsRGF0ZShkYXRlKSA6IG51bGwpO1xuXHRcdFx0fX1cblx0XHRcdG9uQmx1cj17b25CbHVyfVxuXHRcdFx0Y3VzdG9tSW5wdXQ9ezxNYXNrZWREYXRlSW5wdXQgey4uLmlucHV0UHJvcHN9IG9uQmx1cj17b25CbHVyfSAvPn1cblx0XHRcdG1pbkRhdGU9e21pbkRhdGUgPyB0b0RhdGUobWluRGF0ZSkgOiBudWxsfVxuXHRcdFx0bWF4RGF0ZT17bWF4RGF0ZSA/IHRvRGF0ZShtYXhEYXRlKSA6IG51bGx9XG5cdFx0Lz5cblx0KTtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3QsIHtmb3J3YXJkUmVmfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge01hc2tlZElucHV0LCBNYXNrZWRJbnB1dFByb3BzfSBmcm9tICcuLi8uLi9pbnB1dHMvTWFza2VkSW5wdXQnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5kYXRlLkxvY2FsRGF0ZVBpY2tlci5NYXNrZWREYXRlSW5wdXQnKTtcblxuZXhwb3J0IGludGVyZmFjZSBNYXNrZWREYXRlSW5wdXRWYWx1ZSB7XG5cdHRhcmdldDoge1xuXHRcdHZhbHVlOiBzdHJpbmc7XG5cdH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFza2VkRGF0ZUlucHV0UHJvcHMge1xuXHRuYW1lPzogc3RyaW5nO1xuXHRvbkNoYW5nZT86ICh2YWx1ZTogTWFza2VkRGF0ZUlucHV0VmFsdWUpID0+IHZvaWQ7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycyxAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmZ1bmN0aW9uIE1hc2tlZERhdGVJbnB1dElubmVyKHByb3BzOiBNYXNrZWREYXRlSW5wdXRQcm9wcyAmIE9taXQ8TWFza2VkSW5wdXRQcm9wcywgJ29uQ2hhbmdlJz4sIHJlZjogYW55KSB7XG5cdGNvbnN0IHtvbkNoYW5nZSwgbmFtZSwgLi4ucmVzdH0gPSBwcm9wcztcblxuXHRyZXR1cm4gKFxuXHRcdDxNYXNrZWRJbnB1dFxuXHRcdFx0ey4uLnJlc3R9XG5cdFx0XHRuYW1lPXtuYW1lfVxuXHRcdFx0bWFzaz17e2FsaWFzOiAnZGF0ZXRpbWUnLCBpbnB1dEZvcm1hdDogJ21tL2RkL3l5eXknfX1cblx0XHRcdG9uQ2hhbmdlPXt2YWx1ZSA9PiB7XG5cdFx0XHRcdGlmIChvbkNoYW5nZSkgb25DaGFuZ2Uoe3RhcmdldDoge3ZhbHVlOiB2YWx1ZSB8fCAnJ319KTtcblx0XHRcdH19XG5cdFx0Lz5cblx0KTtcbn1cblxuZXhwb3J0IGNvbnN0IE1hc2tlZERhdGVJbnB1dCA9IGZvcndhcmRSZWYoTWFza2VkRGF0ZUlucHV0SW5uZXIpO1xuIiwiZXhwb3J0IHtMb2NhbERhdGVQaWNrZXJ9IGZyb20gJy4vTG9jYWxEYXRlUGlja2VyJztcbmV4cG9ydCB0eXBlIHtMb2NhbERhdGVQaWNrZXJQcm9wc30gZnJvbSAnLi9Mb2NhbERhdGVQaWNrZXInO1xuIiwiaW1wb3J0IHtMb2NhbERhdGV9IGZyb20gJ0Bqcy1qb2RhL2NvcmUnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1NlbGVjdCwgU2VsZWN0UHJvcHN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuZGF0ZS5Mb2NhbE1vbnRoU2VsZWN0Jyk7XG5cbmNvbnN0IG1vbnRoT3B0aW9ucyA9IFtcblx0e3RleHQ6ICdKYW51YXJ5JywgdmFsdWU6IDEsIGtleTogMX0sXG5cdHt0ZXh0OiAnRmVicnVhcnknLCB2YWx1ZTogMiwga2V5OiAyfSxcblx0e3RleHQ6ICdNYXJjaCcsIHZhbHVlOiAzLCBrZXk6IDN9LFxuXHR7dGV4dDogJ0FwcmlsJywgdmFsdWU6IDQsIGtleTogNH0sXG5cdHt0ZXh0OiAnTWF5JywgdmFsdWU6IDUsIGtleTogNX0sXG5cdHt0ZXh0OiAnSnVuZScsIHZhbHVlOiA2LCBrZXk6IDZ9LFxuXHR7dGV4dDogJ0p1bHknLCB2YWx1ZTogNywga2V5OiA3fSxcblx0e3RleHQ6ICdBdWd1c3QnLCB2YWx1ZTogOCwga2V5OiA4fSxcblx0e3RleHQ6ICdTZXB0ZW1iZXInLCB2YWx1ZTogOSwga2V5OiA5fSxcblx0e3RleHQ6ICdPY3RvYmVyJywgdmFsdWU6IDEwLCBrZXk6IDEwfSxcblx0e3RleHQ6ICdOb3ZlbWJlcicsIHZhbHVlOiAxMSwga2V5OiAxMX0sXG5cdHt0ZXh0OiAnRGVjZW1iZXInLCB2YWx1ZTogMTIsIGtleTogMTJ9LFxuXTtcblxuaW50ZXJmYWNlIElMb2NhbE1vbnRoU2VsZWN0UHJvcHMge1xuXHRvbkNoYW5nZT86ICh2YWx1ZTogTG9jYWxEYXRlIHwgbnVsbCkgPT4gdm9pZDtcblx0dmFsdWU/OiBMb2NhbERhdGUgfCBudWxsO1xuXHR5ZWFyPzogbnVtYmVyO1xuXHRoYW5kbGVCbHVyPzogKGV2ZW50OiBhbnkpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIExvY2FsTW9udGhTZWxlY3RQcm9wcyA9IElMb2NhbE1vbnRoU2VsZWN0UHJvcHMgJiBPbWl0PFNlbGVjdFByb3BzLCAnb3B0aW9ucyc+O1xuXG5leHBvcnQgZnVuY3Rpb24gTG9jYWxNb250aFNlbGVjdChwcm9wczogTG9jYWxNb250aFNlbGVjdFByb3BzKTogSlNYLkVsZW1lbnQge1xuXHRjb25zdCB7dmFsdWUsIG9uQ2hhbmdlLCB5ZWFyLCBoYW5kbGVCbHVyLCAuLi5yZXN0fSA9IHByb3BzO1xuXG5cdGNvbnN0IHRoZVllYXIgPSB5ZWFyIHx8IExvY2FsRGF0ZS5ub3coKS55ZWFyKCk7XG5cblx0cmV0dXJuIChcblx0XHQ8U2VsZWN0XG5cdFx0XHRwbGFjZWhvbGRlcj1cIlNlbGVjdCBNb250aFwiXG5cdFx0XHRvcHRpb25zPXttb250aE9wdGlvbnN9XG5cdFx0XHR2YWx1ZT17dmFsdWUgPyB2YWx1ZS5tb250aFZhbHVlKCkgOiAnJ31cblx0XHRcdG9uQ2hhbmdlPXsoZXYsIHYpID0+IHtcblx0XHRcdFx0aWYgKG9uQ2hhbmdlKSB7XG5cdFx0XHRcdFx0aWYgKHR5cGVvZiB2LnZhbHVlID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRcdFx0b25DaGFuZ2UodiA/IExvY2FsRGF0ZS5vZih0aGVZZWFyLCB2LnZhbHVlLCAxKSA6IG51bGwpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRvbkNoYW5nZShudWxsKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH19XG5cdFx0XHRvbkJsdXI9e2hhbmRsZUJsdXJ9XG5cdFx0XHR7Li4ucmVzdH1cblx0XHQvPlxuXHQpO1xufVxuIiwiZXhwb3J0IHtMb2NhbE1vbnRoU2VsZWN0fSBmcm9tICcuL0xvY2FsTW9udGhTZWxlY3QnO1xuZXhwb3J0IHR5cGUge0xvY2FsTW9udGhTZWxlY3RQcm9wc30gZnJvbSAnLi9Mb2NhbE1vbnRoU2VsZWN0JztcbiIsImltcG9ydCB7TG9jYWxUaW1lfSBmcm9tICdAanMtam9kYS9jb3JlJztcbmltcG9ydCB7dG9EYXRlLCB0b0xvY2FsVGltZX0gZnJvbSAnQHRoeC9kYXRlJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUge1JlYWN0RGF0ZVBpY2tlclByb3BzfSBmcm9tICdyZWFjdC1kYXRlcGlja2VyJztcbmltcG9ydCB0eXBlIHtJbnB1dFByb3BzfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQge0RhdGVQaWNrZXJ9IGZyb20gJy4uL0RhdGVQaWNrZXIvaW5kZXgnO1xuaW1wb3J0IHtNYXNrZWRUaW1lSW5wdXR9IGZyb20gJy4vTWFza2VkVGltZUlucHV0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuZGF0ZS5Mb2NhbFRpbWVQaWNrZXInKTtcblxuaW50ZXJmYWNlIElMb2NhbFRpbWVQaWNrZXIge1xuXHR2YWx1ZT86IExvY2FsVGltZSB8IG51bWJlciB8IG51bGw7XG5cdG9uQ2hhbmdlPzogKHZhbHVlOiBMb2NhbFRpbWUgfCBudWxsKSA9PiB2b2lkO1xuXHRvbkNoYW5nZVJhdz86ICgpID0+IHZvaWQ7XG59XG5cbnR5cGUgSW5wdXRQcm9wc09taXR0ZWQgPSBPbWl0PElucHV0UHJvcHMsICdvbkNoYW5nZSc+O1xudHlwZSBSZWFjdERhdGVQaWNrZXJQcm9wc09taXR0ZWQgPSBPbWl0PE9taXQ8UmVhY3REYXRlUGlja2VyUHJvcHMsICd2YWx1ZSc+LCAnb25DaGFuZ2UnPjtcbmV4cG9ydCB0eXBlIExvY2FsVGltZVBpY2tlclByb3BzID0gSUxvY2FsVGltZVBpY2tlciAmIElucHV0UHJvcHNPbWl0dGVkICYgUmVhY3REYXRlUGlja2VyUHJvcHNPbWl0dGVkO1xuXG5leHBvcnQgZnVuY3Rpb24gTG9jYWxUaW1lUGlja2VyKHByb3BzOiBMb2NhbFRpbWVQaWNrZXJQcm9wcyk6IEpTWC5FbGVtZW50IHtcblx0Y29uc3Qge1xuXHRcdHZhbHVlLFxuXHRcdG9uQ2hhbmdlLFxuXHRcdGFzLFxuXHRcdGFjdGlvbixcblx0XHRhY3Rpb25Qb3NpdGlvbixcblx0XHRjbGFzc05hbWUsXG5cdFx0ZGlzYWJsZWQsXG5cdFx0ZXJyb3IsXG5cdFx0Zmx1aWQsXG5cdFx0Zm9jdXMsXG5cdFx0aWNvbixcblx0XHRpY29uUG9zaXRpb24sXG5cdFx0aW52ZXJ0ZWQsXG5cdFx0bGFiZWwsXG5cdFx0bGFiZWxQb3NpdGlvbixcblx0XHRsb2FkaW5nLFxuXHRcdHNpemUsXG5cdFx0dGFiSW5kZXgsXG5cdFx0dHJhbnNwYXJlbnQsXG5cdFx0Li4ucmVzdFxuXHR9ID0gcHJvcHM7XG5cblx0bGV0IHNlbGVjdGVkO1xuXHRpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgc2VsZWN0ZWQgPSB0b0RhdGUoTG9jYWxUaW1lLm9mU2Vjb25kT2ZEYXkodmFsdWUpKTtcblx0ZWxzZSBzZWxlY3RlZCA9IHZhbHVlID8gdG9EYXRlKHZhbHVlKSA6IG51bGw7XG5cblx0Y29uc3QgaW5wdXRQcm9wcyA9IHtcblx0XHRhcyxcblx0XHRhY3Rpb24sXG5cdFx0YWN0aW9uUG9zaXRpb24sXG5cdFx0Y2xhc3NOYW1lLFxuXHRcdGRpc2FibGVkLFxuXHRcdGVycm9yLFxuXHRcdGZsdWlkLFxuXHRcdGZvY3VzLFxuXHRcdGljb24sXG5cdFx0aWNvblBvc2l0aW9uLFxuXHRcdGludmVydGVkLFxuXHRcdGxhYmVsLFxuXHRcdGxhYmVsUG9zaXRpb24sXG5cdFx0bG9hZGluZyxcblx0XHRzaXplLFxuXHRcdHRhYkluZGV4LFxuXHRcdHRyYW5zcGFyZW50LFxuXHR9O1xuXG5cdHJldHVybiAoXG5cdFx0PERhdGVQaWNrZXJcblx0XHRcdHsuLi5yZXN0fVxuXHRcdFx0c2VsZWN0ZWQ9e3NlbGVjdGVkfVxuXHRcdFx0b25DaGFuZ2U9e2RhdGUgPT4ge1xuXHRcdFx0XHRpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKGRhdGUgPyB0b0xvY2FsVGltZShkYXRlKSA6IG51bGwpO1xuXHRcdFx0fX1cblx0XHRcdHNob3dUaW1lU2VsZWN0XG5cdFx0XHRzaG93VGltZVNlbGVjdE9ubHlcblx0XHRcdHRpbWVJbnRlcnZhbHM9ezE1fVxuXHRcdFx0dGltZUNhcHRpb249XCJUaW1lXCJcblx0XHRcdGRhdGVGb3JtYXQ9XCJoaDptbSBhYVwiXG5cdFx0XHRjdXN0b21JbnB1dD17PE1hc2tlZFRpbWVJbnB1dCB7Li4uaW5wdXRQcm9wc30gLz59XG5cdFx0Lz5cblx0KTtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3QsIHtmb3J3YXJkUmVmfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge01hc2tlZElucHV0LCBNYXNrZWRJbnB1dFByb3BzfSBmcm9tICcuLi8uLi9pbnB1dHMvTWFza2VkSW5wdXQnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5kYXRlLkxvY2FsVGltZVBpY2tlci5NYXNrZWRUaW1lSW5wdXQnKTtcblxuZXhwb3J0IGludGVyZmFjZSBNYXNrZWRUaW1lSW5wdXRWYWx1ZSB7XG5cdHRhcmdldDoge1xuXHRcdHZhbHVlOiBzdHJpbmc7XG5cdH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFza2VkVGltZUlucHV0UHJvcHMge1xuXHRvbkNoYW5nZT86ICh2YWx1ZTogTWFza2VkVGltZUlucHV0VmFsdWUpID0+IHZvaWQ7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycyxAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmZ1bmN0aW9uIE1hc2tlZFRpbWVJbnB1dElubmVyKHByb3BzOiBNYXNrZWRUaW1lSW5wdXRQcm9wcyAmIE9taXQ8TWFza2VkSW5wdXRQcm9wcywgJ29uQ2hhbmdlJz4sIHJlZjogYW55KSB7XG5cdGNvbnN0IHtvbkNoYW5nZSwgLi4ucmVzdH0gPSBwcm9wcztcblxuXHRyZXR1cm4gKFxuXHRcdDxNYXNrZWRJbnB1dFxuXHRcdFx0bWFzaz17e2FsaWFzOiAnZGF0ZXRpbWUnLCBpbnB1dEZvcm1hdDogJ2hoOk1NIFRUJ319XG5cdFx0XHRvbkNoYW5nZT17dmFsdWUgPT4ge1xuXHRcdFx0XHRpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKHt0YXJnZXQ6IHt2YWx1ZTogdmFsdWUgfHwgJyd9fSk7XG5cdFx0XHR9fVxuXHRcdFx0ey4uLnJlc3R9XG5cdFx0Lz5cblx0KTtcbn1cblxuZXhwb3J0IGNvbnN0IE1hc2tlZFRpbWVJbnB1dCA9IGZvcndhcmRSZWYoTWFza2VkVGltZUlucHV0SW5uZXIpO1xuIiwiZXhwb3J0IHtMb2NhbFRpbWVQaWNrZXJ9IGZyb20gJy4vTG9jYWxUaW1lUGlja2VyJztcbmV4cG9ydCB0eXBlIHtMb2NhbFRpbWVQaWNrZXJQcm9wc30gZnJvbSAnLi9Mb2NhbFRpbWVQaWNrZXInO1xuIiwiaW1wb3J0IHR5cGUge0xvY2FsRGF0ZX0gZnJvbSAnQGpzLWpvZGEvY29yZSc7XG5pbXBvcnQge3RvRGF0ZSwgdG9Mb2NhbERhdGV9IGZyb20gJ0B0aHgvZGF0ZSc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHtSZWFjdERhdGVQaWNrZXJQcm9wc30gZnJvbSAncmVhY3QtZGF0ZXBpY2tlcic7XG5pbXBvcnQge0lucHV0UHJvcHMsIElucHV0fSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQge0RhdGVQaWNrZXJ9IGZyb20gJy4uL0RhdGVQaWNrZXIvaW5kZXgnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5kYXRlLk1vbnRoRGF5UGlja2VyJyk7XG5cbmNvbnN0IG1vbnRocyA9IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddO1xuXG5pbnRlcmZhY2UgTW9udGhEYXlIZWFkZXJQcm9wcyB7XG5cdGRhdGU6IERhdGU7XG5cdGNoYW5nZVllYXIoeWVhcjogbnVtYmVyKTogdm9pZDtcblx0Y2hhbmdlTW9udGgobW9udGg6IG51bWJlcik6IHZvaWQ7XG5cdGRlY3JlYXNlTW9udGgoKTogdm9pZDtcblx0aW5jcmVhc2VNb250aCgpOiB2b2lkO1xuXHRwcmV2TW9udGhCdXR0b25EaXNhYmxlZDogYm9vbGVhbjtcblx0bmV4dE1vbnRoQnV0dG9uRGlzYWJsZWQ6IGJvb2xlYW47XG5cdGRlY3JlYXNlWWVhcigpOiB2b2lkO1xuXHRpbmNyZWFzZVllYXIoKTogdm9pZDtcblx0cHJldlllYXJCdXR0b25EaXNhYmxlZDogYm9vbGVhbjtcblx0bmV4dFllYXJCdXR0b25EaXNhYmxlZDogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gTW9udGhEYXlIZWFkZXIocHJvcHM6IE1vbnRoRGF5SGVhZGVyUHJvcHMpIHtcblx0cmV0dXJuIChcblx0XHQ8PlxuXHRcdFx0PGRpdiBjbGFzc05hbWU9XCJyZWFjdC1kYXRlcGlja2VyX19jdXJyZW50LW1vbnRoXCI+e21vbnRoc1twcm9wcy5kYXRlLmdldE1vbnRoKCldfTwvZGl2PlxuXHRcdFx0PGJ1dHRvblxuXHRcdFx0XHR0eXBlPVwiYnV0dG9uXCJcblx0XHRcdFx0Y2xhc3NOYW1lPVwicmVhY3QtZGF0ZXBpY2tlcl9fbmF2aWdhdGlvbiByZWFjdC1kYXRlcGlja2VyX19uYXZpZ2F0aW9uLS1wcmV2aW91c1wiXG5cdFx0XHRcdGFyaWEtbGFiZWw9XCJQcmV2aW91cyBNb250aFwiXG5cdFx0XHRcdG9uQ2xpY2s9e3Byb3BzLmRlY3JlYXNlTW9udGh9XG5cdFx0XHRcdGRpc2FibGVkPXtwcm9wcy5wcmV2TW9udGhCdXR0b25EaXNhYmxlZH1cblx0XHRcdD5cblx0XHRcdFx0UHJldmlvdXMgTW9udGhcblx0XHRcdDwvYnV0dG9uPlxuXHRcdFx0PGJ1dHRvblxuXHRcdFx0XHR0eXBlPVwiYnV0dG9uXCJcblx0XHRcdFx0Y2xhc3NOYW1lPVwicmVhY3QtZGF0ZXBpY2tlcl9fbmF2aWdhdGlvbiByZWFjdC1kYXRlcGlja2VyX19uYXZpZ2F0aW9uLS1uZXh0XCJcblx0XHRcdFx0YXJpYS1sYWJlbD1cIk5leHQgTW9udGhcIlxuXHRcdFx0XHRvbkNsaWNrPXtwcm9wcy5pbmNyZWFzZU1vbnRofVxuXHRcdFx0XHRkaXNhYmxlZD17cHJvcHMubmV4dE1vbnRoQnV0dG9uRGlzYWJsZWR9XG5cdFx0XHQ+XG5cdFx0XHRcdE5leHQgTW9udGhcblx0XHRcdDwvYnV0dG9uPlxuXHRcdDwvPlxuXHQpO1xufVxuXG5pbnRlcmZhY2UgSU1vbnRoRGF5UGlja2VyUHJvcHMge1xuXHR2YWx1ZT86IExvY2FsRGF0ZSB8IG51bWJlciB8IG51bGw7XG5cdG9uQ2hhbmdlPzogKHZhbHVlOiBMb2NhbERhdGUgfCBudWxsKSA9PiB2b2lkO1xuXHRvbkNoYW5nZVJhdz86ICgpID0+IHZvaWQ7XG59XG5cbnR5cGUgSW5wdXRQcm9wc09taXR0ZWQgPSBPbWl0PElucHV0UHJvcHMsICdvbkNoYW5nZSc+O1xudHlwZSBSZWFjdERhdGVQaWNrZXJQcm9wc09taXR0ZWQgPSBPbWl0PE9taXQ8UmVhY3REYXRlUGlja2VyUHJvcHMsICd2YWx1ZSc+LCAnb25DaGFuZ2UnPjtcbmV4cG9ydCB0eXBlIE1vbnRoRGF5UGlja2VyUHJvcHMgPSBJTW9udGhEYXlQaWNrZXJQcm9wcyAmIElucHV0UHJvcHNPbWl0dGVkICYgUmVhY3REYXRlUGlja2VyUHJvcHNPbWl0dGVkO1xuXG5leHBvcnQgZnVuY3Rpb24gTW9udGhEYXlQaWNrZXIocHJvcHM6IE1vbnRoRGF5UGlja2VyUHJvcHMpOiBKU1guRWxlbWVudCB7XG5cdGNvbnN0IHtcblx0XHR2YWx1ZSxcblx0XHRvbkNoYW5nZSxcblx0XHRhcyxcblx0XHRhY3Rpb24sXG5cdFx0YWN0aW9uUG9zaXRpb24sXG5cdFx0Y2xhc3NOYW1lLFxuXHRcdGRpc2FibGVkLFxuXHRcdGVycm9yLFxuXHRcdGZsdWlkLFxuXHRcdGZvY3VzLFxuXHRcdGljb24sXG5cdFx0aWNvblBvc2l0aW9uLFxuXHRcdGludmVydGVkLFxuXHRcdGxhYmVsLFxuXHRcdGxhYmVsUG9zaXRpb24sXG5cdFx0bG9hZGluZyxcblx0XHRzaXplLFxuXHRcdHRhYkluZGV4LFxuXHRcdHRyYW5zcGFyZW50LFxuXHRcdC4uLnJlc3Rcblx0fSA9IHByb3BzO1xuXG5cdGNvbnN0IHNlbGVjdGVkID0gdmFsdWUgPyB0b0RhdGUodmFsdWUpIDogbnVsbDtcblxuXHRjb25zdCBpbnB1dFByb3BzID0ge1xuXHRcdGFzLFxuXHRcdGFjdGlvbixcblx0XHRhY3Rpb25Qb3NpdGlvbixcblx0XHRjbGFzc05hbWUsXG5cdFx0ZGlzYWJsZWQsXG5cdFx0ZXJyb3IsXG5cdFx0Zmx1aWQsXG5cdFx0Zm9jdXMsXG5cdFx0aWNvbixcblx0XHRpY29uUG9zaXRpb24sXG5cdFx0aW52ZXJ0ZWQsXG5cdFx0bGFiZWwsXG5cdFx0bGFiZWxQb3NpdGlvbixcblx0XHRsb2FkaW5nLFxuXHRcdHNpemUsXG5cdFx0dGFiSW5kZXgsXG5cdFx0dHJhbnNwYXJlbnQsXG5cdH07XG5cblx0cmV0dXJuIChcblx0XHQ8RGF0ZVBpY2tlclxuXHRcdFx0ey4uLnJlc3R9XG5cdFx0XHRzZWxlY3RlZD17c2VsZWN0ZWR9XG5cdFx0XHRvbkNoYW5nZT17ZGF0ZSA9PiB7XG5cdFx0XHRcdGlmIChvbkNoYW5nZSkgb25DaGFuZ2UoZGF0ZSA/IHRvTG9jYWxEYXRlKGRhdGUpIDogbnVsbCk7XG5cdFx0XHR9fVxuXHRcdFx0Y3VzdG9tSW5wdXQ9ezxJbnB1dCB7Li4uaW5wdXRQcm9wc30gLz59XG5cdFx0XHRyZW5kZXJDdXN0b21IZWFkZXI9e01vbnRoRGF5SGVhZGVyfVxuXHRcdFx0ZGF0ZUZvcm1hdD1cIk1NTU0gZFwiXG5cdFx0Lz5cblx0KTtcbn1cbiIsImV4cG9ydCB7TW9udGhEYXlQaWNrZXJ9IGZyb20gJy4vTW9udGhEYXlQaWNrZXInO1xuZXhwb3J0IHR5cGUge01vbnRoRGF5UGlja2VyUHJvcHN9IGZyb20gJy4vTW9udGhEYXlQaWNrZXInO1xuIiwiaW1wb3J0IHtMb2NhbERhdGV9IGZyb20gJ0Bqcy1qb2RhL2NvcmUnO1xuaW1wb3J0IHt0b0RhdGUsIHRvTG9jYWxEYXRlfSBmcm9tICdAdGh4L2RhdGUnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7UmVhY3REYXRlUGlja2VyUHJvcHN9IGZyb20gJ3JlYWN0LWRhdGVwaWNrZXInO1xuaW1wb3J0IHtJbnB1dFByb3BzLCBJbnB1dH0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHtEYXRlUGlja2VyfSBmcm9tICcuLi9EYXRlUGlja2VyL2luZGV4JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuZGF0ZS5Nb250aFllYXJQaWNrZXInKTtcblxuaW50ZXJmYWNlIElNb250aFllYXJQaWNrZXJQcm9wcyB7XG5cdHZhbHVlPzogTG9jYWxEYXRlIHwgbnVtYmVyIHwgdW5kZWZpbmVkO1xuXHRvbkNoYW5nZT86ICh2YWx1ZTogTG9jYWxEYXRlIHwgdW5kZWZpbmVkKSA9PiB2b2lkO1xuXHRvbkNoYW5nZVJhdz86ICgpID0+IHZvaWQ7XG5cdG1pbkRhdGU/OiBMb2NhbERhdGUgfCB1bmRlZmluZWQ7XG5cdG1heERhdGU/OiBMb2NhbERhdGUgfCB1bmRlZmluZWQ7XG59XG5cbnR5cGUgSW5wdXRQcm9wc09taXR0ZWQgPSBPbWl0PElucHV0UHJvcHMsICdvbkNoYW5nZSc+O1xudHlwZSBSZWFjdERhdGVQaWNrZXJQcm9wc09taXR0ZWQgPSBPbWl0PE9taXQ8UmVhY3REYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnbWluRGF0ZScgfCAnbWF4RGF0ZSc+LCAnb25DaGFuZ2UnPjtcbmV4cG9ydCB0eXBlIE1vbnRoWWVhclBpY2tlclByb3BzID0gSU1vbnRoWWVhclBpY2tlclByb3BzICYgSW5wdXRQcm9wc09taXR0ZWQgJiBSZWFjdERhdGVQaWNrZXJQcm9wc09taXR0ZWQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBNb250aFllYXJQaWNrZXIocHJvcHM6IE1vbnRoWWVhclBpY2tlclByb3BzKTogSlNYLkVsZW1lbnQge1xuXHRjb25zdCB7XG5cdFx0dmFsdWUsXG5cdFx0b25DaGFuZ2UsXG5cdFx0YXMsXG5cdFx0YWN0aW9uLFxuXHRcdGFjdGlvblBvc2l0aW9uLFxuXHRcdGNsYXNzTmFtZSxcblx0XHRkaXNhYmxlZCxcblx0XHRlcnJvcixcblx0XHRmbHVpZCxcblx0XHRmb2N1cyxcblx0XHRpY29uLFxuXHRcdGljb25Qb3NpdGlvbixcblx0XHRpbnZlcnRlZCxcblx0XHRsYWJlbCxcblx0XHRsYWJlbFBvc2l0aW9uLFxuXHRcdGxvYWRpbmcsXG5cdFx0c2l6ZSxcblx0XHR0YWJJbmRleCxcblx0XHR0cmFuc3BhcmVudCxcblx0XHRtaW5EYXRlLFxuXHRcdG1heERhdGUsXG5cdFx0Li4ucmVzdFxuXHR9ID0gcHJvcHM7XG5cblx0Y29uc3Qgc2VsZWN0ZWQgPSB2YWx1ZSA/IHRvRGF0ZSh2YWx1ZSkgOiBudWxsO1xuXG5cdGNvbnN0IGlucHV0UHJvcHMgPSB7XG5cdFx0YXMsXG5cdFx0YWN0aW9uLFxuXHRcdGFjdGlvblBvc2l0aW9uLFxuXHRcdGNsYXNzTmFtZSxcblx0XHRkaXNhYmxlZCxcblx0XHRlcnJvcixcblx0XHRmbHVpZCxcblx0XHRmb2N1cyxcblx0XHRpY29uLFxuXHRcdGljb25Qb3NpdGlvbixcblx0XHRpbnZlcnRlZCxcblx0XHRsYWJlbCxcblx0XHRsYWJlbFBvc2l0aW9uLFxuXHRcdGxvYWRpbmcsXG5cdFx0c2l6ZSxcblx0XHR0YWJJbmRleCxcblx0XHR0cmFuc3BhcmVudCxcblx0fTtcblxuXHRyZXR1cm4gKFxuXHRcdDxEYXRlUGlja2VyXG5cdFx0XHR7Li4ucmVzdH1cblx0XHRcdHNlbGVjdGVkPXtzZWxlY3RlZH1cblx0XHRcdG9uQ2hhbmdlPXtkYXRlID0+IHtcblx0XHRcdFx0aWYgKG9uQ2hhbmdlKSBvbkNoYW5nZShkYXRlID8gdG9Mb2NhbERhdGUoZGF0ZSkgOiB1bmRlZmluZWQpO1xuXHRcdFx0fX1cblx0XHRcdGN1c3RvbUlucHV0PXs8SW5wdXQgey4uLmlucHV0UHJvcHN9IC8+fVxuXHRcdFx0ZGF0ZUZvcm1hdD1cIk1NTU0geXl5eVwiXG5cdFx0XHRzaG93TW9udGhZZWFyUGlja2VyXG5cdFx0XHRtaW5EYXRlPXt0b0RhdGUobWluRGF0ZT8ud2l0aERheU9mTW9udGgoMSkgfHwgTG9jYWxEYXRlLm9mRXBvY2hEYXkoMCkpfVxuXHRcdFx0bWF4RGF0ZT17dG9EYXRlKG1heERhdGU/LnBsdXNNb250aHMoMSkud2l0aERheU9mTW9udGgoMSkubWludXNEYXlzKDEpIHx8IExvY2FsRGF0ZS5ub3coKS5wbHVzWWVhcnMoMjApKX1cblx0XHQvPlxuXHQpO1xufVxuIiwiZXhwb3J0IHtNb250aFllYXJQaWNrZXJ9IGZyb20gJy4vTW9udGhZZWFyUGlja2VyJztcbmV4cG9ydCB0eXBlIHtNb250aFllYXJQaWNrZXJQcm9wc30gZnJvbSAnLi9Nb250aFllYXJQaWNrZXInO1xuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0ljb24sIEJ1dHRvbiwgRHJvcGRvd24sIERyb3Bkb3duSXRlbVByb3BzLCBTZWdtZW50LCBTZWdtZW50UHJvcHN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuZGF0ZS5ZZWFyU2VsZWN0Jyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgWWVhclNlbGVjdFByb3BzIHtcblx0b25DaGFuZ2U/OiAodmFsdWU6IG51bWJlcikgPT4gdm9pZDtcblx0b25CbHVyPzogKGV2OiBhbnkpID0+IHZvaWQ7XG5cdHZhbHVlOiBudW1iZXI7XG5cdG1pblllYXI/OiBudW1iZXI7IC8vIERlZmF1bHRzIHRvIDE5NzBcblx0bWF4WWVhcj86IG51bWJlcjsgLy8gRGVmYXVsdHMgdG8gY3VycmVudCB5ZWFyXG5cdGVycm9yPzogYm9vbGVhbjsgLy8gRGVmYXVsdHMgdG8gZmFsc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFllYXJTZWxlY3QocHJvcHM6IFllYXJTZWxlY3RQcm9wcyAmIE9taXQ8U2VnbWVudFByb3BzLCAnb25DaGFuZ2UnPikge1xuXHRjb25zdCB0aGlzWWVhciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcblx0Y29uc3Qge3ZhbHVlLCBtaW5ZZWFyID0gMTk3MCwgbWF4WWVhciA9IHRoaXNZZWFyLCBvbkNoYW5nZSwgb25CbHVyLCBlcnJvciwgLi4ucmVzdH0gPSBwcm9wcztcblxuXHRjb25zdCBhdmFpbGFibGVZZWFyczogRHJvcGRvd25JdGVtUHJvcHNbXSA9IFtdO1xuXHRmb3IgKGxldCBpID0gbWF4WWVhcjsgaSA+PSBtaW5ZZWFyOyBpLS0pIHtcblx0XHRhdmFpbGFibGVZZWFycy5wdXNoKHt2YWx1ZTogaSwgdGV4dDogaS50b1N0cmluZygpLCBrZXk6IGl9KTtcblx0fVxuXG5cdHJldHVybiAoXG5cdFx0PFNlZ21lbnQgYmFzaWMgY29tcGFjdCBzdHlsZT17e3BhZGRpbmc6IDAsIG1hcmdpbjogMH19IHsuLi5yZXN0fT5cblx0XHRcdDxCdXR0b25cblx0XHRcdFx0YmFzaWNcblx0XHRcdFx0aWNvblxuXHRcdFx0XHR0eXBlPVwiYnV0dG9uXCJcblx0XHRcdFx0Y29sb3I9e2Vycm9yID8gJ3JlZCcgOiAnZ3JlZW4nfVxuXHRcdFx0XHRkaXNhYmxlZD17dmFsdWUgPD0gbWluWWVhcn1cblx0XHRcdFx0b25DbGljaz17KCkgPT4ge1xuXHRcdFx0XHRcdGlmIChvbkNoYW5nZSkgb25DaGFuZ2UodmFsdWUgLSAxKTtcblx0XHRcdFx0fX1cblx0XHRcdFx0b25CbHVyPXtvbkJsdXJ9XG5cdFx0XHQ+XG5cdFx0XHRcdDxJY29uIG5hbWU9XCJhcnJvdyBsZWZ0XCIgLz5cblx0XHRcdDwvQnV0dG9uPlxuXHRcdFx0PERyb3Bkb3duXG5cdFx0XHRcdGljb249ezxkaXYgLz59XG5cdFx0XHRcdGJ1dHRvblxuXHRcdFx0XHRiYXNpY1xuXHRcdFx0XHRzY3JvbGxpbmdcblx0XHRcdFx0dmFsdWU9e3ZhbHVlfVxuXHRcdFx0XHRvcHRpb25zPXthdmFpbGFibGVZZWFyc31cblx0XHRcdFx0b25DaGFuZ2U9eyhlLCB2YWwpID0+IHtcblx0XHRcdFx0XHRpZiAodHlwZW9mIHZhbC52YWx1ZSA9PT0gJ251bWJlcicgJiYgb25DaGFuZ2UpIG9uQ2hhbmdlKHZhbC52YWx1ZSk7XG5cdFx0XHRcdH19XG5cdFx0XHRcdGVycm9yPXtlcnJvcn1cblx0XHRcdFx0b25CbHVyPXtvbkJsdXJ9XG5cdFx0XHQvPlxuXHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRiYXNpY1xuXHRcdFx0XHRpY29uXG5cdFx0XHRcdHR5cGU9XCJidXR0b25cIlxuXHRcdFx0XHRjb2xvcj17ZXJyb3IgPyAncmVkJyA6ICdncmVlbid9XG5cdFx0XHRcdGRpc2FibGVkPXt2YWx1ZSA+PSBtYXhZZWFyfVxuXHRcdFx0XHRvbkNsaWNrPXsoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKG9uQ2hhbmdlKSBvbkNoYW5nZSh2YWx1ZSArIDEpO1xuXHRcdFx0XHR9fVxuXHRcdFx0XHRvbkJsdXI9e29uQmx1cn1cblx0XHRcdFx0c3R5bGU9e3ttYXJnaW5SaWdodDogMH19XG5cdFx0XHQ+XG5cdFx0XHRcdDxJY29uIG5hbWU9XCJhcnJvdyByaWdodFwiIC8+XG5cdFx0XHQ8L0J1dHRvbj5cblx0XHQ8L1NlZ21lbnQ+XG5cdCk7XG59XG4iLCJleHBvcnQge1llYXJTZWxlY3R9IGZyb20gJy4vWWVhclNlbGVjdCc7XG5leHBvcnQgdHlwZSB7WWVhclNlbGVjdFByb3BzfSBmcm9tICcuL1llYXJTZWxlY3QnO1xuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7Rm9ybWlrVmFsdWVzLCBpc0Z1bmN0aW9uLCBGb3JtaWtQcm92aWRlciwgaXNFbXB0eUNoaWxkcmVufSBmcm9tICdmb3JtaWsnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHtURm9ybUNvbmZpZywgVEZvcm1Qcm9wc30gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge3VzZVRGb3JtfSBmcm9tICcuL3VzZVRGb3JtJztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuZm9ybS5URm9ybScpO1xuXG5leHBvcnQgZnVuY3Rpb24gVEZvcm08VmFsdWVzIGV4dGVuZHMgRm9ybWlrVmFsdWVzID0gRm9ybWlrVmFsdWVzPihwcm9wczogVEZvcm1Db25maWc8VmFsdWVzPikge1xuXHRjb25zdCB0YmFnID0gdXNlVEZvcm08VmFsdWVzPihwcm9wcyk7XG5cdGNvbnN0IHtjb21wb25lbnQsIHJlbmRlciwgY2hpbGRyZW4sIGlubmVyUmVmfSA9IHByb3BzO1xuXG5cdC8vIFRoaXMgYWxsb3dzIGZvbGtzIHRvIHBhc3MgYSByZWYgdG8gPEZvcm1payAvPlxuXHRSZWFjdC51c2VJbXBlcmF0aXZlSGFuZGxlKGlubmVyUmVmLCAoKSA9PiB0YmFnKTtcblxuXHRsZXQgY2hpbGQgPSBudWxsO1xuXHRpZiAoY29tcG9uZW50KSB7XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdGNoaWxkID0gUmVhY3QuY3JlYXRlRWxlbWVudChjb21wb25lbnQsIHRiYWcpO1xuXHR9IGVsc2UgaWYgKHJlbmRlcikge1xuXHRcdGNoaWxkID0gcmVuZGVyKHRiYWcpO1xuXHR9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XG5cdFx0aWYgKGlzRnVuY3Rpb24oY2hpbGRyZW4pKSB7XG5cdFx0XHRjaGlsZCA9IChjaGlsZHJlbiBhcyAoYmFnOiBURm9ybVByb3BzPFZhbHVlcz4pID0+IFJlYWN0LlJlYWN0Tm9kZSkodGJhZyBhcyBURm9ybVByb3BzPFZhbHVlcz4pO1xuXHRcdH0gZWxzZSBpZiAoIWlzRW1wdHlDaGlsZHJlbihjaGlsZHJlbikpIHtcblx0XHRcdGNoaWxkID0gUmVhY3QuQ2hpbGRyZW4ub25seShjaGlsZHJlbik7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIDxGb3JtaWtQcm92aWRlciB2YWx1ZT17dGJhZ30+e2NoaWxkfTwvRm9ybWlrUHJvdmlkZXI+O1xufVxuIiwiZXhwb3J0IHtURm9ybX0gZnJvbSAnLi9URm9ybSc7XG5leHBvcnQge3VzZVRGb3JtfSBmcm9tICcuL3VzZVRGb3JtJztcbmV4cG9ydCB0eXBlIHtURm9ybVByb3BzfSBmcm9tICcuL3R5cGVzJztcbiIsImltcG9ydCBmbGF0dGVuIGZyb20gJ2ZsYXQnO1xuaW1wb3J0IHtGb3JtaWtWYWx1ZXMsIHVzZUZvcm1paywgRm9ybWlrRXJyb3JzLCBGb3JtaWtUb3VjaGVkfSBmcm9tICdmb3JtaWsnO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBwcm9wZXJ0eSBmcm9tICdsb2Rhc2gvcHJvcGVydHknO1xuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoL3VuaXEnO1xuaW1wb3J0IFJlYWN0LCB7dXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtNZXNzYWdlLCBTZWdtZW50fSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7VEZvcm1Db25maWd9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlVEZvcm08VmFsdWVzIGV4dGVuZHMgRm9ybWlrVmFsdWVzID0gRm9ybWlrVmFsdWVzLCBJbml0aWFsVmFsdWVzID0gYW55Pihjb25maWc6IFRGb3JtQ29uZmlnPFZhbHVlcywgSW5pdGlhbFZhbHVlcz4pIHtcblx0Y29uc3Qge3JlbmRlciwgY2hpbGRyZW4sIC4uLnJlc3R9ID0gY29uZmlnO1xuXHQvLyBAdHMtaWdub3JlXG5cdGNvbnN0IGZvcm1payA9IHVzZUZvcm1payhyZXN0KTtcblxuXHR1c2VFZmZlY3QoKCkgPT4ge1xuXHRcdGlmIChjb25maWcub25WYWxpZGF0ZSkgY29uZmlnLm9uVmFsaWRhdGUoZm9ybWlrLmlzVmFsaWQpO1xuXHR9LCBbZm9ybWlrLmlzVmFsaWQsIGNvbmZpZy5vblZhbGlkYXRlXSk7XG5cblx0Ly8gR2V0IHN1Ym1pdCBmdW5jdGlvblxuXHR1c2VFZmZlY3QoKCkgPT4ge1xuXHRcdGlmIChjb25maWcuZ2V0U3VibWl0Rm4pIGNvbmZpZy5nZXRTdWJtaXRGbihmb3JtaWsuc3VibWl0Rm9ybSk7XG5cdH0sIFtmb3JtaWsuc3VibWl0Rm9ybSwgY29uZmlnLmdldFN1Ym1pdEZuXSk7XG5cblx0Ly8gT24gY2hhbmdlIGV2ZW50IChpZiB0aGlzIGVuZHMgdXAgY2hhbmdpbmcgdmFsdWVzIGl0IHdpbGwgY3ljbGUpXG5cdHVzZUVmZmVjdCgoKSA9PiB7XG5cdFx0aWYgKGNvbmZpZy5vbkNoYW5nZSkgY29uZmlnLm9uQ2hhbmdlKGZvcm1pay52YWx1ZXMpO1xuXHR9LCBbZm9ybWlrLnZhbHVlc10pO1xuXG5cdC8vIE1hcmsgdGhlIGVycm9yIGNsZWFyZWQgaWYgdGhlIGZvcm0gaGFzIGJlZW4gZWRpdGVkIGFmdGVyIGFuIGVycm9yXG5cdGNvbnN0IFtlcnJvckNsZWFyZWQsIHNldEVycm9yQ2xlYXJlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cdHVzZUVmZmVjdCgoKSA9PiB7XG5cdFx0aWYgKGNvbmZpZy5lcnJvciAmJiBjb25maWcuZXJyb3IubWVzc2FnZSAmJiAhZm9ybWlrLmlzU3VibWl0dGluZykge1xuXHRcdFx0c2V0RXJyb3JDbGVhcmVkKHRydWUpO1xuXHRcdH1cblx0fSwgW2Zvcm1pay52YWx1ZXMsIGNvbmZpZy5lcnJvcl0pO1xuXG5cdC8vIEZsYXR0ZW4gdGhlIHdhcm5pbmdzIChmb3JtaWsgZXJyb3JzKSBhbmQgdG91Y2ggb2JqZWN0cy5cblx0Y29uc3QgZmxhdFdhcm5pbmdzID0gZmxhdHRlbjxGb3JtaWtFcnJvcnM8VmFsdWVzPiwge1trZXk6IHN0cmluZ106IHN0cmluZ30+KGZvcm1pay5lcnJvcnMpO1xuXHRjb25zdCBmbGF0VG91Y2hlZCA9IGZsYXR0ZW48Rm9ybWlrVG91Y2hlZDxWYWx1ZXM+LCB7W2tleTogc3RyaW5nXTogc3RyaW5nfT4oZm9ybWlrLnRvdWNoZWQpO1xuXG5cdC8vIENyZWF0ZSBhbiBhcnJheSBvZiBzdHJpbmdzIHRoYXQgYXJlIHdhcm5pbmdzIChmb3JtaWsgZXJyb3JzKS4gSWYgdGhlIHN1Ym1pdCBjb3VudCBpcyBncmVhdGVyIHRoYW4gMFxuXHQvLyB0aGVuIGl0IHdpbGwgc2hvdyBhbGwgd2FybmluZ3MuIE90aGVyd2lzZSBvbmx5IHRvdWNoZWQgZmllbGQgd2FybmluZ3Mgd2lsbCBiZSBhZGRlZCB0byB0aGlzIGFycmF5LlxuXHRjb25zdCB3YXJuaW5nczogc3RyaW5nW10gPSB1bmlxKFxuXHRcdE9iamVjdC5rZXlzKGZsYXRXYXJuaW5ncykucmVkdWNlPHN0cmluZ1tdPigobWVtbywgdmFsdWUpID0+IHtcblx0XHRcdGNvbnN0IGlzVG91Y2hlZCA9IGZsYXRUb3VjaGVkW3ZhbHVlXTtcblx0XHRcdGlmIChpc1RvdWNoZWQgfHwgZm9ybWlrLnN1Ym1pdENvdW50ID4gMCkge1xuXHRcdFx0XHRyZXR1cm4gWy4uLm1lbW8sIGdldChmbGF0V2FybmluZ3MsIHZhbHVlKV07XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWVtbztcblx0XHR9LCBbXSksXG5cdCk7XG5cblx0Ly8gQ3JlYXRlIGFuIGFycmF5IG9mIHN0cmluZ3MgdGhhdCBhcmUgZXJyb3JzIChncmFwaHFsIGVycm9ycykuXG5cdGxldCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cdGxldCBlcnJvckhlYWRlciA9ICcnO1xuXHRpZiAoY29uZmlnLmVycm9yICYmIGNvbmZpZy5lcnJvci5tZXNzYWdlKSB7XG5cdFx0aWYgKGNvbmZpZy5lcnJvci5ncmFwaFFMRXJyb3JzKSB7XG5cdFx0XHRlcnJvcnMgPSBjb25maWcuZXJyb3IuZ3JhcGhRTEVycm9ycy5yZWR1Y2UoKG1lbW8sIHYpID0+IHtcblx0XHRcdFx0aWYgKHYubWVzc2FnZSkgcmV0dXJuIFsuLi5tZW1vLCB2Lm1lc3NhZ2VdO1xuXHRcdFx0XHRyZXR1cm4gbWVtbztcblx0XHRcdH0sIFtdIGFzIHN0cmluZ1tdKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgZXJyb3JNZXNzYWdlID0gY29uZmlnLmVycm9yLm1lc3NhZ2Uuc2xpY2UoY29uZmlnLmVycm9yLm1lc3NhZ2UuaW5kZXhPZignOiAnKSArIDEpO1xuXHRcdFx0ZXJyb3JzLnB1c2goZXJyb3JNZXNzYWdlKTtcblx0XHR9XG5cdFx0ZXJyb3JIZWFkZXIgPSBjb25maWcuZXJyb3IubWVzc2FnZS5zbGljZSgwLCBjb25maWcuZXJyb3IubWVzc2FnZS5pbmRleE9mKCc6ICcpKTtcblx0fVxuXHRlcnJvcnMgPSB1bmlxKGVycm9ycyk7XG5cblx0Ly8gQ2hlY2sgaWYgdGhlcmUgYXJlIHdhcm5pbmdzIG9yIGVycm9yc1xuXHRjb25zdCBoYXNXYXJuaW5ncyA9ICEoZm9ybWlrLmlzVmFsaWQgfHwgd2FybmluZ3MubGVuZ3RoID09PSAwKTtcblx0Y29uc3QgaGFzRXJyb3JzID0gZXJyb3JzLmxlbmd0aCA+IDA7XG5cblx0Ly8gUmVuZGVyIHRoZSB3YXJuaW5nc1xuXHRmdW5jdGlvbiByZW5kZXJXYXJuaW5ncygpIHtcblx0XHRpZiAoIWhhc1dhcm5pbmdzICYmICFoYXNFcnJvcnMpIHJldHVybiBudWxsO1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8TWVzc2FnZSB3YXJuaW5nPXtoYXNXYXJuaW5nc30gZXJyb3I9e2hhc0Vycm9ycyAmJiAhaGFzV2FybmluZ3N9PlxuXHRcdFx0XHQ8TWVzc2FnZS5IZWFkZXI+e2hhc1dhcm5pbmdzID8gJ1NvbWUgZmllbGRzIGFyZSBub3QgY29tcGxldGU6JyA6IGAke2Vycm9ySGVhZGVyfTpgfTwvTWVzc2FnZS5IZWFkZXI+XG5cdFx0XHRcdHsvKiBQdXQgaXQgaW4gYSBzZWdtZW50IHRvIG1ha2Ugc3VyZSB0aGUgZXJyb3JNZXNzYWdlIGlzbid0IHRvbyBiaWcgd2hlbiB0aGVyZSBhcmUgYSBsb3Qgb2YgZXJyb3JzICovfVxuXHRcdFx0XHQ8U2VnbWVudCBzdHlsZT17e292ZXJmbG93OiAnYXV0bycsIG1heEhlaWdodDogMTAwfX0+XG5cdFx0XHRcdFx0eyhoYXNXYXJuaW5ncyA/IHdhcm5pbmdzIDogZXJyb3JzKS5tYXAobXNnID0+IChcblx0XHRcdFx0XHRcdDxkaXYga2V5PXttc2d9Pnttc2d9PC9kaXY+XG5cdFx0XHRcdFx0KSl9XG5cdFx0XHRcdDwvU2VnbWVudD5cblx0XHRcdDwvTWVzc2FnZT5cblx0XHQpO1xuXHR9XG5cblx0Ly8gUmV0dXJucyB0cnVlIGlmIHRoZSBmaWVsZCBoYXMgYW4gZXJyb3Jcblx0ZnVuY3Rpb24gZmllbGRFcnJvcihmaWVsZE5hbWU6IGtleW9mIFZhbHVlcyB8IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiAoISFwcm9wZXJ0eShmaWVsZE5hbWUpKGZvcm1pay50b3VjaGVkKSB8fCBmb3JtaWsuc3VibWl0Q291bnQgPiAwKSAmJiAhIXByb3BlcnR5KGZpZWxkTmFtZSkoZm9ybWlrLmVycm9ycyk7XG5cdH1cblxuXHQvLyBIYW5kbGVzIHRoZSBmb3JtIHN1Ym1pdFxuXHRmdW5jdGlvbiBoYW5kbGVTdWJtaXQoZT86IFJlYWN0LkZvcm1FdmVudDxIVE1MRm9ybUVsZW1lbnQ+KSB7XG5cdFx0c2V0RXJyb3JDbGVhcmVkKGZhbHNlKTtcblx0XHRmb3JtaWsuaGFuZGxlU3VibWl0KGUpO1xuXHR9XG5cblx0cmV0dXJuIHtcblx0XHQuLi5mb3JtaWssXG5cdFx0aGFzRXJyb3JzOiBoYXNFcnJvcnMgJiYgIWVycm9yQ2xlYXJlZCxcblx0XHRoYXNXYXJuaW5ncyxcblx0XHRpc1ZhbGlkOiAhaGFzV2FybmluZ3MsXG5cdFx0bG9hZGluZzogY29uZmlnLmxvYWRpbmcgPyBjb25maWcubG9hZGluZyA6IGZhbHNlLFxuXHRcdHN1Ym1pdERpc2FibGVkOiBoYXNXYXJuaW5ncyB8fCBmb3JtaWsuaXNTdWJtaXR0aW5nLFxuXHRcdGVycm9yTWFya2VkQ2xlYXJlZDogZXJyb3JDbGVhcmVkLFxuXHRcdGZvcm1FcnJvcjogaGFzRXJyb3JzICYmICFoYXNXYXJuaW5ncyAmJiAhZXJyb3JDbGVhcmVkICYmICFmb3JtaWsuaXNTdWJtaXR0aW5nLCAvLyBDb252ZW5pZW5jZVxuXHRcdHJlbmRlcldhcm5pbmdzLFxuXHRcdGZpZWxkRXJyb3IsXG5cdFx0aGFuZGxlU3VibWl0LFxuXHR9O1xufVxuIiwiaW1wb3J0IHR5cGUge0xvY2FsRGF0ZX0gZnJvbSAnQGpzLWpvZGEvY29yZSc7XG5pbXBvcnQge2Zvcm1hdERhdGV9IGZyb20gJ0B0aHgvZGF0ZSc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFJlYWN0LCB7dXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBDcmVkaXRDYXJkcywge0ZvY3VzZWR9IGZyb20gJ3JlYWN0LWNyZWRpdC1jYXJkcyc7XG5pbXBvcnQgJ3JlYWN0LWNyZWRpdC1jYXJkcy9lcy9zdHlsZXMtY29tcGlsZWQuY3NzJztcbmltcG9ydCB7Rm9ybSwgR3JpZCwgSW5wdXQsIElucHV0UHJvcHN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB7TW9udGhZZWFyUGlja2VyfSBmcm9tICcuLi8uLi9kYXRlL01vbnRoWWVhclBpY2tlcic7XG5pbXBvcnQge0NyZWRpdENhcmROdW1iZXJJbnB1dH0gZnJvbSAnLi9DcmVkaXRDYXJkTnVtYmVySW5wdXQnO1xuaW1wb3J0ICcuL3N0eWxlcy5jc3MnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5pbnB1dHMuQ3JlZGl0Q2FyZElucHV0Jyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlZGl0Q2FyZERhdGEge1xuXHRudW1iZXI/OiBzdHJpbmc7XG5cdG5hbWU/OiBzdHJpbmc7XG5cdGN2Yz86IHN0cmluZztcblx0ZXhwaXJ5PzogTG9jYWxEYXRlO1xufVxuXG5leHBvcnQgdHlwZSBDcmVkaXRDYXJkSW5wdXRQcm9wcyA9IHtcblx0dmFsdWU/OiBDcmVkaXRDYXJkRGF0YTtcblx0b25DaGFuZ2U/OiAoZGF0YTogQ3JlZGl0Q2FyZERhdGEpID0+IHZvaWQ7XG59ICYgUGljazxJbnB1dFByb3BzLCAnZGlzYWJsZWQnIHwgJ29uQmx1cic+O1xuXG5leHBvcnQgZnVuY3Rpb24gQ3JlZGl0Q2FyZElucHV0KHByb3BzOiBDcmVkaXRDYXJkSW5wdXRQcm9wcykge1xuXHRjb25zdCB7b25CbHVyLCBkaXNhYmxlZCwgb25DaGFuZ2UsIHZhbHVlfSA9IHByb3BzO1xuXHRjb25zdCB7bmFtZSwgbnVtYmVyLCBjdmMsIGV4cGlyeX0gPSB2YWx1ZSB8fCB7fTtcblxuXHRjb25zdCBbZm9jdXMsIHNldEZvY3VzXSA9IHVzZVN0YXRlPEZvY3VzZWQ+KCdudW1iZXInKTtcblxuXHRyZXR1cm4gKFxuXHRcdDxHcmlkPlxuXHRcdFx0PEdyaWQuQ29sdW1uIHdpZHRoPXs0fT5cblx0XHRcdFx0PEZvcm0+XG5cdFx0XHRcdFx0PEZvcm0uR3JvdXA+XG5cdFx0XHRcdFx0XHQ8Rm9ybS5GaWVsZCB3aWR0aD17OX0+XG5cdFx0XHRcdFx0XHRcdDxsYWJlbD5OdW1iZXI8L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHQ8Q3JlZGl0Q2FyZE51bWJlcklucHV0XG5cdFx0XHRcdFx0XHRcdFx0b25Gb2N1cz17KCkgPT4gc2V0Rm9jdXMoJ251bWJlcicpfVxuXHRcdFx0XHRcdFx0XHRcdG9uQmx1cj17b25CbHVyfVxuXHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXt2ID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlICYmIG9uQ2hhbmdlKHtuYW1lLCBudW1iZXI6IHYsIGN2YywgZXhwaXJ5fSk7XG5cdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRkaXNhYmxlZD17ZGlzYWJsZWR9XG5cdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHQ8L0Zvcm0uRmllbGQ+XG5cdFx0XHRcdFx0XHQ8Rm9ybS5GaWVsZCB3aWR0aD17NH0+XG5cdFx0XHRcdFx0XHRcdDxsYWJlbD5DVkM8L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHQ8SW5wdXRcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17Y3ZjIHx8ICcnfVxuXHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsoZXYsIHYpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlICYmIG9uQ2hhbmdlKHtuYW1lLCBudW1iZXIsIGN2Yzogdi52YWx1ZSwgZXhwaXJ5fSk7XG5cdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRvbkZvY3VzPXsoKSA9PiBzZXRGb2N1cygnY3ZjJyl9XG5cdFx0XHRcdFx0XHRcdFx0b25CbHVyPXsoKSA9PiBzZXRGb2N1cygnbmFtZScpfVxuXHRcdFx0XHRcdFx0XHRcdGRpc2FibGVkPXtkaXNhYmxlZH1cblx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdDwvRm9ybS5GaWVsZD5cblx0XHRcdFx0XHQ8L0Zvcm0uR3JvdXA+XG5cdFx0XHRcdFx0PEZvcm0uR3JvdXA+XG5cdFx0XHRcdFx0XHQ8Rm9ybS5GaWVsZCB3aWR0aD17OX0+XG5cdFx0XHRcdFx0XHRcdDxsYWJlbD5OYW1lPC9sYWJlbD5cblx0XHRcdFx0XHRcdFx0PElucHV0XG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU9e25hbWUgfHwgJyd9XG5cdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyhldiwgdikgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2UgJiYgb25DaGFuZ2Uoe25hbWU6IHYudmFsdWUsIG51bWJlciwgY3ZjLCBleHBpcnl9KTtcblx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdG9uRm9jdXM9eygpID0+IHNldEZvY3VzKCduYW1lJyl9XG5cdFx0XHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e2Rpc2FibGVkfVxuXHRcdFx0XHRcdFx0XHRcdGZsdWlkXG5cdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHQ8L0Zvcm0uRmllbGQ+XG5cdFx0XHRcdFx0XHQ8Rm9ybS5GaWVsZCB3aWR0aD17Nn0+XG5cdFx0XHRcdFx0XHRcdDxsYWJlbD5FeHBpcnk8L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHQ8TW9udGhZZWFyUGlja2VyXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU9e2V4cGlyeX1cblx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZT17diA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZSAmJiBvbkNoYW5nZSh7bmFtZSwgbnVtYmVyLCBjdmMsIGV4cGlyeTogdn0pO1xuXHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0b25Gb2N1cz17KCkgPT4gc2V0Rm9jdXMoJ2V4cGlyeScpfVxuXHRcdFx0XHRcdFx0XHRcdGRpc2FibGVkPXtkaXNhYmxlZH1cblx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdDwvRm9ybS5GaWVsZD5cblx0XHRcdFx0XHQ8L0Zvcm0uR3JvdXA+XG5cdFx0XHRcdDwvRm9ybT5cblx0XHRcdDwvR3JpZC5Db2x1bW4+XG5cdFx0XHQ8R3JpZC5Db2x1bW4gd2lkdGg9ezEyfT5cblx0XHRcdFx0PENyZWRpdENhcmRzXG5cdFx0XHRcdFx0Y3ZjPXtjdmMgfHwgJyd9XG5cdFx0XHRcdFx0ZXhwaXJ5PXtmb3JtYXREYXRlKGV4cGlyeSwge2Zvcm1hdDogJ01NdXUnfSkgfHwgJyd9XG5cdFx0XHRcdFx0bmFtZT17bmFtZSB8fCAnJ31cblx0XHRcdFx0XHRudW1iZXI9e251bWJlciB8fCAnJ31cblx0XHRcdFx0XHRmb2N1c2VkPXtmb2N1c31cblx0XHRcdFx0XHRjYWxsYmFjaz17KGEsIGIpID0+IHtcblx0XHRcdFx0XHRcdGQoYSwgYik7XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0Lz5cblx0XHRcdDwvR3JpZC5Db2x1bW4+XG5cdFx0PC9HcmlkPlxuXHQpO1xufVxuIiwiaW1wb3J0IGNyZWRpdENhcmRUeXBlIGZyb20gJ2NyZWRpdC1jYXJkLXR5cGUnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7dmFsaWRhdGV9IGZyb20gJ2x1aG4nO1xuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZU1lbW8sIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0ljb24sIElucHV0LCBJbnB1dFByb3BzLCBTZW1hbnRpY0lDT05TLCBTZW1hbnRpY0NPTE9SU30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge01hc2tlZElucHV0UHJvcHN9IGZyb20gJy4uL01hc2tlZElucHV0JztcbmltcG9ydCB7dXNlTWFza2VkSW5wdXR9IGZyb20gJy4uL01hc2tlZElucHV0L3VzZU1hc2tlZElucHV0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuaW5wdXRzLkNyZWRpdENhcmRJbnB1dC5DcmVkaXRDYXJkTnVtYmVySW5wdXQnKTtcblxuaW50ZXJmYWNlIENyZWRpdENhcmROdW1iZXJJbnB1dFByb3BzIHtcblx0b25DaGFuZ2U/OiAodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT4gdm9pZDtcblx0dmFsdWU/OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGdldEljb24odHlwZTogc3RyaW5nKTogU2VtYW50aWNJQ09OUyB7XG5cdHN3aXRjaCAodHlwZSkge1xuXHRcdGNhc2UgJ3Zpc2EnOlxuXHRcdFx0cmV0dXJuICdjYyB2aXNhJztcblx0XHRjYXNlICdtYXN0ZXJjYXJkJzpcblx0XHRcdHJldHVybiAnY2MgbWFzdGVyY2FyZCc7XG5cdFx0Y2FzZSAnYW1lcmljYW4tZXhwcmVzcyc6XG5cdFx0XHRyZXR1cm4gJ2NjIGFtZXgnO1xuXHRcdGNhc2UgJ2RpbmVycy1jbHViJzpcblx0XHRcdHJldHVybiAnY2MgZGluZXJzIGNsdWInO1xuXHRcdGNhc2UgJ2pjYic6XG5cdFx0XHRyZXR1cm4gJ2NjIGpjYic7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHJldHVybiAnY3JlZGl0IGNhcmQnO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDcmVkaXRDYXJkTnVtYmVySW5wdXQocHJvcHM6IENyZWRpdENhcmROdW1iZXJJbnB1dFByb3BzICYgT21pdDxJbnB1dFByb3BzLCAnb25DaGFuZ2UnPikge1xuXHRjb25zdCB7dmFsdWUsIG9uQ2hhbmdlLCAuLi5yZXN0fSA9IHByb3BzO1xuXHRjb25zdCBbaWNvbiwgc2V0SWNvbl0gPSB1c2VTdGF0ZTxTZW1hbnRpY0lDT05TPignY3JlZGl0IGNhcmQnKTtcblx0Y29uc3QgW2NvbG9yLCBzZXRDb2xvcl0gPSB1c2VTdGF0ZTxTZW1hbnRpY0NPTE9SUz4oJ2JsYWNrJyk7XG5cblx0Y29uc3QgY2hlY2tWYWxpZGF0aW9uID0gdXNlQ2FsbGJhY2soKHZhbHVlQXJyYXk6IHN0cmluZ1tdKSA9PiB7XG5cdFx0Y29uc3QgbnVtID0gdmFsdWVBcnJheS5qb2luKCcnKS5yZXBsYWNlQWxsKC8oX3xcXHMpL2csICcnKTtcblx0XHRjb25zdCB0eXAgPSBjcmVkaXRDYXJkVHlwZShudW0pO1xuXHRcdGNvbnN0IGlzVmFsaWQgPSB2YWxpZGF0ZShudW0pO1xuXG5cdFx0aWYgKHR5cC5sZW5ndGggPT09IDEpIHtcblx0XHRcdHNldEljb24oZ2V0SWNvbih0eXBbMF0udHlwZSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzZXRJY29uKCdjcmVkaXQgY2FyZCcpO1xuXHRcdH1cblxuXHRcdGlmIChudW0ubGVuZ3RoID4gMCkge1xuXHRcdFx0aWYgKGlzVmFsaWQpIHtcblx0XHRcdFx0c2V0Q29sb3IoJ2dyZWVuJyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzZXRDb2xvcigncmVkJyk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNldENvbG9yKCdibGFjaycpO1xuXHRcdH1cblxuXHRcdHJldHVybiBpc1ZhbGlkO1xuXHR9LCBbXSk7XG5cblx0Y29uc3QgY3JlZGl0Q2FyZE1hc2s6IE1hc2tlZElucHV0UHJvcHNbJ21hc2snXSA9IHVzZU1lbW8oXG5cdFx0KCkgPT4gKHtcblx0XHRcdG1hc2s6ICc5OTk5IDk5OTkgOTk5OSA5OTk5Jyxcblx0XHRcdGlzQ29tcGxldGU6IGNoZWNrVmFsaWRhdGlvbixcblx0XHRcdGF1dG9Vbm1hc2s6IHRydWUsXG5cdFx0fSksXG5cdFx0W2NoZWNrVmFsaWRhdGlvbl0sXG5cdCk7XG5cblx0Y29uc3QgY2FyZE51bWJlclJlZiA9IHVzZU1hc2tlZElucHV0KHtcblx0XHRtYXNrOiBjcmVkaXRDYXJkTWFzayxcblx0XHR2YWx1ZSxcblx0XHRvbkNoYW5nZTogdiA9PiB7XG5cdFx0XHRjb25zdCB0eXAgPSBjcmVkaXRDYXJkVHlwZSh2IHx8ICcnKTtcblx0XHRcdGQodiwgdHlwKTtcblx0XHRcdC8vIGNoZWNrVmFsaWRhdGlvbihbdiB8fCAnJ10pO1xuXHRcdFx0b25DaGFuZ2UgJiYgb25DaGFuZ2Uodik7XG5cdFx0fSxcblx0fSk7XG5cblx0cmV0dXJuIChcblx0XHQ8SW5wdXQgey4uLnJlc3R9IGljb24+XG5cdFx0XHQ8aW5wdXQgcmVmPXtjYXJkTnVtYmVyUmVmfSAvPlxuXHRcdFx0PEljb24gbmFtZT17aWNvbn0gY29sb3I9e2NvbG9yfSBzaXplPVwibGFyZ2VcIiAvPlxuXHRcdDwvSW5wdXQ+XG5cdCk7XG59XG4iLCJleHBvcnQge0NyZWRpdENhcmRJbnB1dH0gZnJvbSAnLi9DcmVkaXRDYXJkSW5wdXQnO1xuZXhwb3J0IHR5cGUge0NyZWRpdENhcmRJbnB1dFByb3BzfSBmcm9tICcuL0NyZWRpdENhcmRJbnB1dCc7XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7SW5wdXQsIElucHV0UHJvcHN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB7dXNlTWFza2VkSW5wdXQsIFVzZU1hc2tlZElucHV0UHJvcHN9IGZyb20gJy4vdXNlTWFza2VkSW5wdXQnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5pbnB1dHMuTWFza2VkSW5wdXQnKTtcblxuZXhwb3J0IHR5cGUgTWFza2VkSW5wdXRQcm9wcyA9IHtcblx0bmFtZT86IHN0cmluZztcblx0b25CbHVyPzogKGV2ZW50OiBhbnkpID0+IHZvaWQ7XG59ICYgVXNlTWFza2VkSW5wdXRQcm9wcyAmXG5cdE9taXQ8SW5wdXRQcm9wcywgJ29uQ2hhbmdlJz47XG5cbmV4cG9ydCBmdW5jdGlvbiBNYXNrZWRJbnB1dChwcm9wczogTWFza2VkSW5wdXRQcm9wcykge1xuXHRjb25zdCB7bmFtZSwgb25CbHVyLCBkaXNhYmxlZCwgb25DaGFuZ2UsIG1hc2ssIHZhbHVlLCAuLi5yZXN0fSA9IHByb3BzO1xuXG5cdGNvbnN0IGlucHV0UmVmID0gdXNlTWFza2VkSW5wdXQoe21hc2ssIHZhbHVlLCBvbkNoYW5nZX0pO1xuXG5cdHJldHVybiAoXG5cdFx0PElucHV0IHsuLi5yZXN0fT5cblx0XHRcdDxpbnB1dCBkaXNhYmxlZD17ZGlzYWJsZWR9IG5hbWU9e25hbWV9IHJlZj17aW5wdXRSZWZ9IG9uQmx1cj17b25CbHVyfSAvPlxuXHRcdDwvSW5wdXQ+XG5cdCk7XG59XG4iLCJleHBvcnQge01hc2tlZElucHV0fSBmcm9tICcuL01hc2tlZElucHV0JztcbmV4cG9ydCB7dXNlTWFza2VkSW5wdXR9IGZyb20gJy4vdXNlTWFza2VkSW5wdXQnO1xuZXhwb3J0IHR5cGUge01hc2tlZElucHV0UHJvcHN9IGZyb20gJy4vTWFza2VkSW5wdXQnO1xuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBJbnB1dG1hc2sgZnJvbSAnaW5wdXRtYXNrJztcbmltcG9ydCB7dXNlRWZmZWN0LCB1c2VSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VEZWVwQ29tcGFyZUVmZmVjdCBmcm9tICd1c2UtZGVlcC1jb21wYXJlLWVmZmVjdCc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLmlucHV0cy5NYXNrZWRJbnB1dC51c2VNYXNrZWRJbnB1dCcpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZU1hc2tlZElucHV0UHJvcHMge1xuXHR2YWx1ZT86IHN0cmluZztcblx0b25DaGFuZ2U/OiAodmFsdWU/OiBzdHJpbmcpID0+IHZvaWQ7XG5cdG1hc2s/OiBJbnB1dG1hc2suT3B0aW9ucztcblx0b25TZXQ/OiAodmFsdWU/OiBzdHJpbmcpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VNYXNrZWRJbnB1dChwcm9wczogVXNlTWFza2VkSW5wdXRQcm9wcykge1xuXHRjb25zdCB7dmFsdWUsIG9uQ2hhbmdlLCBvblNldCwgbWFza30gPSBwcm9wcztcblxuXHRjb25zdCBpbnB1dEVsZW1lbnQgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuXHRjb25zdCBtYXNrSW5zdGFuY2UgPSB1c2VSZWY8SW5wdXRtYXNrLkluc3RhbmNlIHwgbnVsbD4obnVsbCk7XG5cblx0dXNlRGVlcENvbXBhcmVFZmZlY3QoKCkgPT4ge1xuXHRcdGlmICghaW5wdXRFbGVtZW50LmN1cnJlbnQpIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGdldCBpbnB1dCBlbGVtZW50Jyk7XG5cblx0XHRkKCdDcmVhdGluZyBpbnB1dCBtYXNrIGluc3RhbmNlJyk7XG5cdFx0bWFza0luc3RhbmNlLmN1cnJlbnQgPSBuZXcgSW5wdXRtYXNrKHtcblx0XHRcdC4uLm1hc2ssXG5cdFx0XHRvbmNvbXBsZXRlKCkge1xuXHRcdFx0XHRpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKGlucHV0RWxlbWVudC5jdXJyZW50Py52YWx1ZSk7XG5cdFx0XHRcdGlmIChtYXNrPy5vbmNvbXBsZXRlKSBtYXNrLm9uY29tcGxldGUoKTtcblx0XHRcdH0sXG5cdFx0XHRvbmNsZWFyZWQoKSB7XG5cdFx0XHRcdGlmIChvbkNoYW5nZSkgb25DaGFuZ2UoKTtcblx0XHRcdFx0aWYgKG1hc2s/Lm9uY2xlYXJlZCkgbWFzay5vbmNsZWFyZWQoKTtcblx0XHRcdH0sXG5cdFx0XHRvbmluY29tcGxldGUoKSB7XG5cdFx0XHRcdGlmIChvbkNoYW5nZSkgb25DaGFuZ2UoaW5wdXRFbGVtZW50LmN1cnJlbnQ/LnZhbHVlKTtcblx0XHRcdFx0aWYgKG1hc2s/Lm9uaW5jb21wbGV0ZSkgbWFzay5vbmluY29tcGxldGUoKTtcblx0XHRcdH0sXG5cdFx0fSk7XG5cdFx0bWFza0luc3RhbmNlLmN1cnJlbnQubWFzayhpbnB1dEVsZW1lbnQuY3VycmVudCk7XG5cblx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0aWYgKG1hc2tJbnN0YW5jZS5jdXJyZW50KSB7XG5cdFx0XHRcdGQoJ0NsZWFuaW5nIHVwIGlucHV0IG1hc2sgaW5zdGFuY2UnKTtcblx0XHRcdFx0bWFza0luc3RhbmNlLmN1cnJlbnQucmVtb3ZlKCk7XG5cdFx0XHRcdG1hc2tJbnN0YW5jZS5jdXJyZW50ID0gbnVsbDtcblx0XHRcdH1cblx0XHR9O1xuXHR9LCBbbWFza10pO1xuXG5cdC8vIElmIHdlIGNoYW5nZSB0aGUgdmFsdWUgcHJvcCB3ZSBuZWVkIHRvIHN5bmMgdGhlIERPTSB2YWx1ZSB0byBkaXNwbGF5IHRoZSBuZXcgdmFsdWVcblx0dXNlRWZmZWN0KCgpID0+IHtcblx0XHRpZiAoaW5wdXRFbGVtZW50LmN1cnJlbnQgJiYgaW5wdXRFbGVtZW50LmN1cnJlbnQ/LnZhbHVlICE9PSB2YWx1ZSAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRkKCdWYWx1ZSBpcyBjaGFuZ2luZzonLCB2YWx1ZSk7XG5cdFx0XHRpbnB1dEVsZW1lbnQuY3VycmVudC52YWx1ZSA9IHZhbHVlO1xuXHRcdFx0b25TZXQgJiYgb25TZXQodmFsdWUpO1xuXHRcdH1cblx0fSwgW3ZhbHVlXSk7XG5cblx0cmV0dXJuIGlucHV0RWxlbWVudDtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtNYXNrZWRJbnB1dCwgTWFza2VkSW5wdXRQcm9wc30gZnJvbSAnLi4vTWFza2VkSW5wdXQnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5pbnB1dHMuUGhvbmVJbnB1dCcpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBob25lSW5wdXRQcm9wcyB7XG5cdGV4dGVuc2lvbj86IGJvb2xlYW47XG5cdG9uQ2hhbmdlPzogKHZhbHVlPzogc3RyaW5nKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUGhvbmVJbnB1dChwcm9wczogUGhvbmVJbnB1dFByb3BzICYgT21pdDxNYXNrZWRJbnB1dFByb3BzLCAnbWFzaycgfCAnb25DaGFuZ2UnPikge1xuXHRjb25zdCB7ZXh0ZW5zaW9uLCAuLi5yZXN0fSA9IHByb3BzO1xuXHRjb25zdCBtYXNrID0ge1xuXHRcdG1hc2s6IGV4dGVuc2lvbiA/ICcoKDk5OSkgOTk5LTk5OTlbIHg5OTk5XSl8KCs5ICg5OTkpIDk5OS05OTk5WyB4OTk5OV0pJyA6ICcoKDk5OSkgOTk5LTk5OTkpfCggKzkgKDk5OSkgOTk5LTk5OTkpJyxcblx0XHRncmVlZHk6IGZhbHNlLFxuXHRcdGF1dG9Vbm1hc2s6IHRydWUsXG5cdH07XG5cblx0cmV0dXJuIDxNYXNrZWRJbnB1dCB7Li4ucmVzdH0gbWFzaz17bWFza30gLz47XG59XG4iLCJleHBvcnQge1Bob25lSW5wdXR9IGZyb20gJy4vUGhvbmVJbnB1dCc7XG5leHBvcnQgdHlwZSB7UGhvbmVJbnB1dFByb3BzfSBmcm9tICcuL1Bob25lSW5wdXQnO1xuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCwge0NoaWxkcmVuLCBjbG9uZUVsZW1lbnR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7Rm9ybSwgUmFkaW8sIEZvcm1SYWRpbywgRm9ybUdyb3VwUHJvcHN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuaW5wdXRzLlJhZGlvR3JvdXAnKTtcblxuZXhwb3J0IGludGVyZmFjZSBSYWRpb0dyb3VwUHJvcHMge1xuXHRjaGlsZHJlbj86IEpTWC5FbGVtZW50W10gfCBKU1guRWxlbWVudDtcblx0b25DaGFuZ2U/OiAodmFsdWU/OiBzdHJpbmcgfCBudW1iZXIpID0+IHZvaWQ7XG5cdHZhbHVlPzogc3RyaW5nIHwgbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUmFkaW9Hcm91cChwcm9wczogUmFkaW9Hcm91cFByb3BzICYgT21pdDxGb3JtR3JvdXBQcm9wcywgJ2NoaWxkcmVuJz4pIHtcblx0Y29uc3Qge2NoaWxkcmVuLCBvbkNoYW5nZSwgdmFsdWUsIC4uLnJlc3R9ID0gcHJvcHM7XG5cblx0cmV0dXJuIChcblx0XHQ8Rm9ybS5Hcm91cCB7Li4ucmVzdH0+XG5cdFx0XHR7Q2hpbGRyZW4ubWFwKHByb3BzLmNoaWxkcmVuLCBjaGlsZCA9PiB7XG5cdFx0XHRcdGlmIChjaGlsZD8udHlwZSA9PT0gRm9ybVJhZGlvIHx8IGNoaWxkPy50eXBlID09PSBSYWRpbyB8fCBjaGlsZD8udHlwZSA9PT0gRm9ybS5SYWRpbykge1xuXHRcdFx0XHRcdHJldHVybiBjbG9uZUVsZW1lbnQoY2hpbGQsIHtcblx0XHRcdFx0XHRcdG9uQ2hhbmdlOiAoZXY6IGFueSwgYXJnczoge3ZhbHVlPzogc3RyaW5nIHwgbnVtYmVyfSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKGFyZ3MudmFsdWUpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGNoZWNrZWQ6IHZhbHVlID09PSBjaGlsZC5wcm9wcy52YWx1ZSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gY2hpbGQ7XG5cdFx0XHR9KX1cblx0XHQ8L0Zvcm0uR3JvdXA+XG5cdCk7XG59XG4iLCJleHBvcnQge1JhZGlvR3JvdXB9IGZyb20gJy4vUmFkaW9Hcm91cCc7XG5leHBvcnQgdHlwZSB7UmFkaW9Hcm91cFByb3BzfSBmcm9tICcuL1JhZGlvR3JvdXAnO1xuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCwge3VzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtTY3JpcHRlbENvbnRleHR9IGZyb20gJy4vU2NyaXB0ZWxDb250ZXh0JztcbmltcG9ydCB7U2NyaXB0ZWxTb2NrZXR9IGZyb20gJy4vc2NyaXB0ZWwnO1xuaW1wb3J0IHR5cGUge1NjcmlwdGVsUGVuU3R5bGV9IGZyb20gJy4vc2NyaXB0ZWwvZW51bXMnO1xuaW1wb3J0IHR5cGUge1JlbmRlcmVkSW1hZ2V9IGZyb20gJy4vc2NyaXB0ZWwvbWVzc2FnZXMnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5pbnB1dHMuU2NyaXB0ZWwnKTtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JpcHRlbFByb3BzIHtcblx0b21uaXNjcmlwdFVybD86IHN0cmluZzsgLy8gRGVmYXVsdHMgdG8gJ3dzOi8vbG9jYWxob3N0OjgwODAnXG5cdGltYWdlVHlwZT86IHN0cmluZzsgLy8gRGVmYXVsdHMgdG8gJ2ltYWdlL3N2Zyt4bWwnLlxuXHRzY2FsZT86IG51bWJlcjsgLy8gRGVmYXVsdHMgdG8gMVxuXHRjcm9wPzogYm9vbGVhbjsgLy8gRGVmYXVsdHMgdG8gZmFsc2Vcblx0cGVuU3R5bGU/OiBTY3JpcHRlbFBlblN0eWxlOyAvLyBEZWZhdWx0cyB0byAnUGxhaW5QZW5TdHlsZSdcblx0Y2hpbGRyZW46IEpTWC5FbGVtZW50IHwgSlNYLkVsZW1lbnRbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNjcmlwdGVsKHtvbW5pc2NyaXB0VXJsLCBpbWFnZVR5cGUsIHNjYWxlLCBjcm9wLCBwZW5TdHlsZSwgY2hpbGRyZW59OiBTY3JpcHRlbFByb3BzKSB7XG5cdGNvbnN0IHNvY2tldCA9IHVzZVJlZjxTY3JpcHRlbFNvY2tldD4oKTtcblx0Y29uc3QgW3JlbmRlciwgc2V0UmVuZGVyXSA9IHVzZVN0YXRlPFJlbmRlcmVkSW1hZ2U+KCk7XG5cdGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcblx0Y29uc3QgW2lzU2lnbmluZywgc2V0SXNTaWduaW5nXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcblxuXHR1c2VFZmZlY3QoKCkgPT4ge1xuXHRcdHNvY2tldC5jdXJyZW50ID0gbmV3IFNjcmlwdGVsU29ja2V0KHtcblx0XHRcdG9tbmlzY3JpcHRVcmwsXG5cdFx0XHRpbWFnZVR5cGUsXG5cdFx0XHRzY2FsZSxcblx0XHRcdGNyb3AsXG5cdFx0XHRwZW5TdHlsZSxcblx0XHR9KTtcblxuXHRcdHNvY2tldC5jdXJyZW50Lm9uKCdyZW5kZXInLCBtc2cgPT4ge1xuXHRcdFx0c2V0UmVuZGVyKG1zZyk7XG5cdFx0XHRzZXRMb2FkaW5nKGZhbHNlKTtcblx0XHRcdHNldFJlbmRlcih1bmRlZmluZWQpOyAvLyB0b2RvIGxvb2sgYXQgdGhpcyBpbiBmdXR1cmVcblx0XHR9KTtcblx0XHRzb2NrZXQuY3VycmVudC5vbignb2tCdXR0b25Eb3duJywgKCkgPT4ge1xuXHRcdFx0c2V0TG9hZGluZyh0cnVlKTtcblx0XHR9KTtcblx0XHRzb2NrZXQuY3VycmVudC5vbignY2FuY2VsJywgKCkgPT4ge1xuXHRcdFx0c2V0TG9hZGluZyhmYWxzZSk7XG5cdFx0XHRzZXRSZW5kZXIodW5kZWZpbmVkKTtcblx0XHR9KTtcblx0XHRzb2NrZXQuY3VycmVudC5vbigncGVuTW92ZScsICgpID0+IHtcblx0XHRcdHNldElzU2lnbmluZyh0cnVlKTtcblx0XHR9KTtcblx0XHRzb2NrZXQuY3VycmVudC5vbigncGVuVXAnLCAoKSA9PiB7XG5cdFx0XHRzZXRJc1NpZ25pbmcoZmFsc2UpO1xuXHRcdH0pO1xuXG5cdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdGlmIChzb2NrZXQuY3VycmVudCkgc29ja2V0LmN1cnJlbnQuY2xvc2UoKTtcblx0XHR9O1xuXHR9LCBbb21uaXNjcmlwdFVybCwgaW1hZ2VUeXBlLCBzY2FsZSwgY3JvcCwgcGVuU3R5bGVdKTtcblxuXHRyZXR1cm4gPFNjcmlwdGVsQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17e3NvY2tldCwgcmVuZGVySW1hZ2U6IHJlbmRlciwgbG9hZGluZywgaXNTaWduaW5nfX0+e2NoaWxkcmVufTwvU2NyaXB0ZWxDb250ZXh0LlByb3ZpZGVyPjtcbn1cbiIsImltcG9ydCBSZWFjdCwge011dGFibGVSZWZPYmplY3R9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHtTY3JpcHRlbFNvY2tldH0gZnJvbSAnLi9zY3JpcHRlbCc7XG5pbXBvcnQgdHlwZSB7UmVuZGVyZWRJbWFnZX0gZnJvbSAnLi9zY3JpcHRlbC9tZXNzYWdlcyc7XG5cbmV4cG9ydCBjb25zdCBTY3JpcHRlbENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PFxuXHR7c29ja2V0OiBNdXRhYmxlUmVmT2JqZWN0PFNjcmlwdGVsU29ja2V0IHwgdW5kZWZpbmVkPjsgcmVuZGVySW1hZ2U6IFJlbmRlcmVkSW1hZ2UgfCB1bmRlZmluZWQ7IGxvYWRpbmc6IGJvb2xlYW47IGlzU2lnbmluZzogYm9vbGVhbn0gfCB1bmRlZmluZWRcbj4odW5kZWZpbmVkKTtcbiIsImV4cG9ydCB7U2NyaXB0ZWx9IGZyb20gJy4vU2NyaXB0ZWwnO1xuZXhwb3J0IHR5cGUge1NjcmlwdGVsUHJvcHN9IGZyb20gJy4vU2NyaXB0ZWwnO1xuZXhwb3J0IHt3aXRoU2NyaXB0ZWx9IGZyb20gJy4vd2l0aFNjcmlwdGVsJztcbmV4cG9ydCB7U2NyaXB0ZWxQZW5TdHlsZSwgU2NyaXB0ZWxNZXNzYWdlQ2xhc3N9IGZyb20gJy4vc2NyaXB0ZWwvZW51bXMnO1xuIiwiZXhwb3J0IGVudW0gU2NyaXB0ZWxQZW5TdHlsZSB7XG5cdFBsYWluID0gJ1BsYWluUGVuU3R5bGUnLFxuXHRDaGlzZWwgPSAnQ2hpc2VsUGVuU3R5bGUnLFxuXHRJbmt3ZWxsID0gJ0lua3dlbGxQZW5TdHlsZScsXG59XG5cbmV4cG9ydCBlbnVtIFNjcmlwdGVsTWVzc2FnZUNsYXNzIHtcblx0Q29ubmVjdGlvbk9wZW4gPSAnQ29ubmVjdGlvbk9wZW4nLFxuXHREZXZpY2VPcGVuUmVxdWVzdCA9ICdEZXZpY2VPcGVuUmVxdWVzdCcsXG5cdERldmljZU9wZW5SZXNwb25zZSA9ICdEZXZpY2VPcGVuUmVzcG9uc2UnLFxuXHRSZW5kZXJlZEltYWdlID0gJ1JlbmRlcmVkSW1hZ2UnLFxuXHRTY3JpcHRlbEV4Y2VwdGlvbiA9ICdTY3JpcHRlbEV4Y2VwdGlvbicsXG5cdEJ1dHRvbkRvd24gPSAnQnV0dG9uRG93bicsXG5cdEJ1dHRvblByZXNzID0gJ0J1dHRvblByZXNzJyxcblx0UGVuTW92ZSA9ICdQZW5Nb3ZlJyxcblx0UGVuVXAgPSAnUGVuVXAnLFxufVxuIiwiLyogZ2xvYmFscyBXZWJTb2NrZXQ6IHRydWUgKi9cbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgRXZlbnRFbWl0dGVyIGZyb20gJ2V2ZW50ZW1pdHRlcjMnO1xuaW1wb3J0IHtTY3JpcHRlbE1lc3NhZ2VDbGFzcywgU2NyaXB0ZWxQZW5TdHlsZX0gZnJvbSAnLi9lbnVtcyc7XG5pbXBvcnQgdHlwZSB7Q29ubmVjdGlvbk9wZW4sIERldmljZU9wZW5SZXNwb25zZSwgTWVzc2FnZSwgUmVuZGVyZWRJbWFnZX0gZnJvbSAnLi9tZXNzYWdlcyc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLmlucHV0cy5TY3JpcHRlbC5zY3JpcHRlbCcpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmlwdGVsU29ja2V0QXJncyB7XG5cdG9tbmlzY3JpcHRVcmw/OiBzdHJpbmc7IC8vIERlZmF1bHRzIHRvICd3czovL2xvY2FsaG9zdDo4MDgwJ1xuXHRpbWFnZVR5cGU/OiBzdHJpbmc7IC8vIERlZmF1bHRzIHRvICdpbWFnZS9zdmcreG1sJy5cblx0c2NhbGU/OiBudW1iZXI7IC8vIERlZmF1bHRzIHRvIDFcblx0Y3JvcD86IGJvb2xlYW47IC8vIERlZmF1bHRzIHRvIGZhbHNlXG5cdHBlblN0eWxlPzogU2NyaXB0ZWxQZW5TdHlsZTsgLy8gRGVmYXVsdHMgdG8gJ1BsYWluUGVuU3R5bGUnXG5cdHJlbmRlcj86ICgpID0+IHZvaWQ7XG59XG5cbmZ1bmN0aW9uIHNlcnZlckNvbm5lY3RlZChtc2c6IENvbm5lY3Rpb25PcGVuLCBzb2NrZXQ6IFdlYlNvY2tldCkge1xuXHRkKCdTZXJ2ZXIgY29ubmVjdGVkJyk7XG5cdGlmIChtc2cuc2VydmVySW5mby5kZXZpY2VzLmxlbmd0aCA+IDApIHtcblx0XHQvLyBHcmFiIHRoZSBmaXJzdCBhdmFpbGFibGUgZGV2aWNlXG5cdFx0Y29uc3QgZGV2aWNlID0gbXNnLnNlcnZlckluZm8uZGV2aWNlc1swXTtcblx0XHRzb2NrZXQuc2VuZChcblx0XHRcdEpTT04uc3RyaW5naWZ5KHtcblx0XHRcdFx0X2NsYXNzOiAnRGV2aWNlT3BlblJlcXVlc3QnLFxuXHRcdFx0XHR1dWlkOiBkZXZpY2UudXVpZCxcblx0XHRcdH0pLFxuXHRcdCk7XG5cdH1cbn1cblxuZnVuY3Rpb24gZGV2aWNlQ29ubmVjdGVkKG1zZzogRGV2aWNlT3BlblJlc3BvbnNlLCBzb2NrZXQ6IFdlYlNvY2tldCwgYXJnczogU2NyaXB0ZWxTb2NrZXRBcmdzKSB7XG5cdGQoYERldmljZSBjb25uZWN0ZWQ6ICR7bXNnLmRldmljZS51dWlkfWApO1xuXHRjb25zdCB7aW1hZ2VUeXBlLCBzY2FsZSwgY3JvcCwgcGVuU3R5bGV9ID0gYXJncztcblx0c29ja2V0LnNlbmQoXG5cdFx0SlNPTi5zdHJpbmdpZnkoe1xuXHRcdFx0X2NsYXNzOiAnUmVuZGVyU2V0dGluZ3NVcGRhdGVSZXF1ZXN0Jyxcblx0XHRcdHJlbmRlclNldHRpbmdzOiB7XG5cdFx0XHRcdF9jbGFzczogJ1JlbmRlclNldHRpbmdzJyxcblx0XHRcdFx0dHlwZTogaW1hZ2VUeXBlIHx8ICdpbWFnZS9zdmcreG1sJyxcblx0XHRcdFx0c2NhbGU6IHNjYWxlIHx8IDEsXG5cdFx0XHRcdGNyb3A6IGNyb3AgfHwgZmFsc2UsXG5cdFx0XHRcdHBlblN0eWxlOiBwZW5TdHlsZVxuXHRcdFx0XHRcdD8ge1xuXHRcdFx0XHRcdFx0XHRyZW5kZXJGdW5jdGlvbjogcGVuU3R5bGUsXG5cdFx0XHRcdFx0ICB9XG5cdFx0XHRcdFx0OiB7XG5cdFx0XHRcdFx0XHRcdHJlbmRlckZ1bmN0aW9uOiBTY3JpcHRlbFBlblN0eWxlLlBsYWluLFxuXHRcdFx0XHRcdCAgfSxcblx0XHRcdH0sXG5cdFx0fSksXG5cdCk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlcihtc2c6IFJlbmRlcmVkSW1hZ2UsIGFyZ3M6IFNjcmlwdGVsU29ja2V0QXJncywgZXZlbnRFbWl0dGVyOiBFdmVudEVtaXR0ZXIpIHtcblx0ZChgUmVuZGVyZWQgaW1hZ2U6ICR7bXNnLnR5cGV9ICR7bXNnLndpZHRofXgke21zZy5oZWlnaHR9YCk7XG5cdGV2ZW50RW1pdHRlci5lbWl0KCdyZW5kZXInLCBtc2cpO1xufVxuXG5leHBvcnQgY2xhc3MgU2NyaXB0ZWxTb2NrZXQgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuXHRwcml2YXRlIHNvY2tldDogV2ViU29ja2V0O1xuXHRwcml2YXRlIG9wdGlvbnM6IFNjcmlwdGVsU29ja2V0QXJncztcblxuXHRjb25zdHJ1Y3RvcihhcmdzOiBTY3JpcHRlbFNvY2tldEFyZ3MpIHtcblx0XHRzdXBlcigpO1xuXG5cdFx0dGhpcy5vcHRpb25zID0gYXJncztcblxuXHRcdHRoaXMuc29ja2V0ID0gbmV3IFdlYlNvY2tldChhcmdzLm9tbmlzY3JpcHRVcmwgfHwgJ3dzOi8vbG9jYWxob3N0OjgwODAnKTtcblxuXHRcdHRoaXMuc29ja2V0Lm9ub3BlbiA9ICgpID0+IHtcblx0XHRcdGQoJ1NvY2tldCBvcGVuJyk7XG5cdFx0fTtcblxuXHRcdHRoaXMuc29ja2V0Lm9uY2xvc2UgPSAoKSA9PiB7XG5cdFx0XHRkKCdTb2NrZXQgY2xvc2VkJyk7XG5cdFx0fTtcblxuXHRcdHRoaXMuc29ja2V0Lm9ubWVzc2FnZSA9IGV2ID0+IHtcblx0XHRcdGNvbnN0IG1zZyA9IEpTT04ucGFyc2UoZXYuZGF0YSkgYXMgTWVzc2FnZTtcblx0XHRcdGlmICghbXNnLl9jbGFzcykgcmV0dXJuOyAvLyBBIG1lc3NhZ2Ugd2l0aCBubyBjbGFzcy5cblxuXHRcdFx0c3dpdGNoIChtc2cuX2NsYXNzKSB7XG5cdFx0XHRcdGNhc2UgU2NyaXB0ZWxNZXNzYWdlQ2xhc3MuQ29ubmVjdGlvbk9wZW46XG5cdFx0XHRcdFx0c2VydmVyQ29ubmVjdGVkKG1zZywgdGhpcy5zb2NrZXQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFNjcmlwdGVsTWVzc2FnZUNsYXNzLkRldmljZU9wZW5SZXNwb25zZTpcblx0XHRcdFx0XHRkZXZpY2VDb25uZWN0ZWQobXNnLCB0aGlzLnNvY2tldCwgdGhpcy5vcHRpb25zKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBTY3JpcHRlbE1lc3NhZ2VDbGFzcy5SZW5kZXJlZEltYWdlOlxuXHRcdFx0XHRcdHJlbmRlcihtc2csIHRoaXMub3B0aW9ucywgdGhpcyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgU2NyaXB0ZWxNZXNzYWdlQ2xhc3MuU2NyaXB0ZWxFeGNlcHRpb246XG5cdFx0XHRcdFx0ZChgU2NyaXB0ZWwgRXhjZXB0aW9uIEVycm9yOiAke21zZy5tZXNzYWdlfWApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgU2NyaXB0ZWxNZXNzYWdlQ2xhc3MuQnV0dG9uUHJlc3M6XG5cdFx0XHRcdFx0aWYgKG1zZy5sYWJlbCA9PT0gJ0NhbmNlbCcpIHRoaXMuZW1pdCgnY2FuY2VsJyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgU2NyaXB0ZWxNZXNzYWdlQ2xhc3MuQnV0dG9uRG93bjpcblx0XHRcdFx0XHRpZiAobXNnLmxhYmVsID09PSAnT0snKSB0aGlzLmVtaXQoJ29rQnV0dG9uRG93bicpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFNjcmlwdGVsTWVzc2FnZUNsYXNzLlBlbk1vdmU6XG5cdFx0XHRcdFx0dGhpcy5lbWl0KCdwZW5Nb3ZlJyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgU2NyaXB0ZWxNZXNzYWdlQ2xhc3MuUGVuVXA6XG5cdFx0XHRcdFx0dGhpcy5lbWl0KCdwZW5VcCcpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0fVxuXHRcdH07XG5cdH1cblxuXHRjYWxpYnJhdGUoKSB7XG5cdFx0ZCgnY2FsaWJyYXRlJyk7XG5cdFx0dGhpcy5zb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeSh7X2NsYXNzOiAnRm9yY2VSZWNhbGlicmF0ZSd9KSk7XG5cdH1cblxuXHRjbG9zZSgpIHtcblx0XHR0aGlzLnNvY2tldC5jbG9zZSgpO1xuXHR9XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtTY3JpcHRlbCwgU2NyaXB0ZWxQcm9wc30gZnJvbSAnLi9TY3JpcHRlbCc7XG5cbi8qKlxuICogQSBIb0MgdGhhdCBwcm92aWRlcyBhIGNvbm5lY3Rpb24gdG8gYSBTY3JpcHRlbCBPbW5pc2NyaXB0IGRldmljZS5cbiAqIFlvdSBjYW4gb25seSBoYXZlIGEgc2luZ2xlIGNvbm5lY3Rpb24gb3BlbiBhdCBhIHRpbWUuXG4gKiBAcGFyYW0gV3JhcHBlZENvbXBvbmVudFxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aFNjcmlwdGVsKFdyYXBwZWRDb21wb25lbnQ6IGFueSwgc2NyaXB0ZWxQcm9wczogU2NyaXB0ZWxQcm9wcykge1xuXHRyZXR1cm4gKHByb3BzOiBhbnkpID0+IChcblx0XHQ8U2NyaXB0ZWwgey4uLnNjcmlwdGVsUHJvcHN9PlxuXHRcdFx0PFdyYXBwZWRDb21wb25lbnQgey4uLnByb3BzfSAvPlxuXHRcdDwvU2NyaXB0ZWw+XG5cdCk7XG59XG4iLCJpbXBvcnQgdHlwZSB7U2NyaXB0ZWxTY2hlbWFUeXBlfSBmcm9tICdAdGh4L3l1cC10eXBlcyc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFJlYWN0LCB7dXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtCdXR0b24sIEltYWdlfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQge1NjcmlwdGVsQ29udGV4dH0gZnJvbSAnLi4vU2NyaXB0ZWwvU2NyaXB0ZWxDb250ZXh0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuaW5wdXRzLlNjcmlwdGVsSW5wdXQnKTtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JpcHRlbElucHV0UHJvcHMge1xuXHR2YWx1ZT86IFNjcmlwdGVsU2NoZW1hVHlwZTtcblx0b25DaGFuZ2U/OiAodmFsdWU/OiBTY3JpcHRlbFNjaGVtYVR5cGUpID0+IHZvaWQ7XG5cdGJ1dHRvblRleHQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTY3JpcHRlbElucHV0KHByb3BzOiBTY3JpcHRlbElucHV0UHJvcHMpIHtcblx0Y29uc3Qge3ZhbHVlLCBvbkNoYW5nZSwgYnV0dG9uVGV4dCA9ICdFbnRlciBTaWduYXR1cmUnfSA9IHByb3BzO1xuXHRjb25zdCBjdHggPSB1c2VDb250ZXh0KFNjcmlwdGVsQ29udGV4dCk7XG5cblx0Y29uc3QgW2VudGVyU2lnbmF0dXJlLCBzZXRFbnRlclNpZ25hdHVyZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cblx0dXNlRWZmZWN0KCgpID0+IHtcblx0XHRpZiAoZW50ZXJTaWduYXR1cmUpIHtcblx0XHRcdGlmIChvbkNoYW5nZSAmJiBjdHg/LnJlbmRlckltYWdlKSB7XG5cdFx0XHRcdHNldEVudGVyU2lnbmF0dXJlKGZhbHNlKTtcblx0XHRcdFx0aWYgKGN0eC5yZW5kZXJJbWFnZS50eXBlID09PSAnaW1hZ2Uvc3ZnK3htbCcgfHwgY3R4LnJlbmRlckltYWdlLnR5cGUgPT09ICdpbWFnZS9wbmcnKSB7XG5cdFx0XHRcdFx0b25DaGFuZ2Uoe1xuXHRcdFx0XHRcdFx0dHlwZTogY3R4LnJlbmRlckltYWdlLnR5cGUsXG5cdFx0XHRcdFx0XHR3aWR0aDogY3R4LnJlbmRlckltYWdlLndpZHRoLFxuXHRcdFx0XHRcdFx0aGVpZ2h0OiBjdHgucmVuZGVySW1hZ2UuaGVpZ2h0LFxuXHRcdFx0XHRcdFx0dGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxuXHRcdFx0XHRcdFx0ZGF0YTogY3R4LnJlbmRlckltYWdlLmRhdGEsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChvbkNoYW5nZSAmJiAhY3R4KSB7XG5cdFx0XHRcdG9uQ2hhbmdlKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LCBbY3R4XSk7XG5cblx0aWYgKGVudGVyU2lnbmF0dXJlKSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxkaXY+XG5cdFx0XHRcdDxkaXY+e2N0eD8uaXNTaWduaW5nID8gJ3NpZ25pbmcuLi4nIDogJ0VudGVyIGEgc2lnbmF0dXJlIGFuZCBjbGljayBPSy4nfTwvZGl2PlxuXHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0b25DbGljaz17KCkgPT4ge1xuXHRcdFx0XHRcdFx0c2V0RW50ZXJTaWduYXR1cmUoZmFsc2UpO1xuXHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0Y29sb3I9XCJibGFja1wiXG5cdFx0XHRcdFx0bG9hZGluZz17Y3R4Py5sb2FkaW5nfVxuXHRcdFx0XHRcdGRpc2FibGVkPXtjdHg/LmxvYWRpbmd9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHRDYW5jZWxcblx0XHRcdFx0PC9CdXR0b24+XG5cdFx0XHRcdDxCdXR0b24gc2l6ZT1cIm1pbmlcIiBhcz1cImFcIiBiYXNpYyBvbkNsaWNrPXsoKSA9PiBjdHg/LnNvY2tldC5jdXJyZW50Py5jYWxpYnJhdGUoKX0gZGlzYWJsZWQ9e2N0eD8ubG9hZGluZ30+XG5cdFx0XHRcdFx0Q2FsaWJyYXRlXG5cdFx0XHRcdDwvQnV0dG9uPlxuXHRcdFx0PC9kaXY+XG5cdFx0KTtcblx0fVxuXG5cdGlmICh2YWx1ZSAmJiB2YWx1ZS5kYXRhKSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxkaXY+XG5cdFx0XHRcdDxJbWFnZSBzaXplPVwibWVkaXVtXCIgc3JjPXt2YWx1ZS5kYXRhfSBib3JkZXJlZCAvPlxuXHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0c2l6ZT1cIm1pbmlcIlxuXHRcdFx0XHRcdGNvbXBhY3Rcblx0XHRcdFx0XHRvbkNsaWNrPXsoKSA9PiB7XG5cdFx0XHRcdFx0XHRzZXRFbnRlclNpZ25hdHVyZShmYWxzZSk7XG5cdFx0XHRcdFx0XHRpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKCk7XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdFJlc2V0XG5cdFx0XHRcdDwvQnV0dG9uPlxuXHRcdFx0PC9kaXY+XG5cdFx0KTtcblx0fVxuXG5cdHJldHVybiA8QnV0dG9uIG9uQ2xpY2s9eygpID0+IHNldEVudGVyU2lnbmF0dXJlKHRydWUpfT57YnV0dG9uVGV4dH08L0J1dHRvbj47XG59XG4iLCJleHBvcnQge1NjcmlwdGVsSW5wdXR9IGZyb20gJy4vU2NyaXB0ZWxJbnB1dCc7XG5leHBvcnQgdHlwZSB7U2NyaXB0ZWxJbnB1dFByb3BzfSBmcm9tICcuL1NjcmlwdGVsSW5wdXQnO1xuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VNZW1vLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtJY29uLCBJbnB1dCwgU2VtYW50aWNDT0xPUlN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCBTSU4gZnJvbSAnc29jaWFsLWluc3VyYW5jZS1udW1iZXInO1xuaW1wb3J0IHR5cGUge01hc2tlZElucHV0UHJvcHN9IGZyb20gJy4uL01hc2tlZElucHV0JztcbmltcG9ydCB7dXNlTWFza2VkSW5wdXR9IGZyb20gJy4uL01hc2tlZElucHV0L3VzZU1hc2tlZElucHV0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuaW5wdXRzLlNpbklucHV0Jyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2luSW5wdXRQcm9wcyBleHRlbmRzIE9taXQ8TWFza2VkSW5wdXRQcm9wcywgJ21hc2snPiB7XG5cdHZhbHVlPzogc3RyaW5nO1xuXHRvbkNoYW5nZSh2YWx1ZT86IHN0cmluZyk6IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTaW5JbnB1dChwcm9wczogU2luSW5wdXRQcm9wcykge1xuXHRjb25zdCB7dmFsdWUsIG9uQ2hhbmdlLCAuLi5yZXN0fSA9IHByb3BzO1xuXHRjb25zdCBbY29sb3IsIHNldENvbG9yXSA9IHVzZVN0YXRlPFNlbWFudGljQ09MT1JTPignYmxhY2snKTtcblxuXHRjb25zdCBjaGVja1ZhbGlkYXRpb24gPSB1c2VDYWxsYmFjaygodmFsdWVBcnJheTogc3RyaW5nW10pID0+IHtcblx0XHRjb25zdCBudW0gPSB2YWx1ZUFycmF5LmpvaW4oJycpLnJlcGxhY2VBbGwoLyhffFxcc3wtKS9nLCAnJyk7XG5cdFx0Y29uc3QgdmFsaWRhdGUgPSBuZXcgU0lOKG51bSk7XG5cdFx0aWYgKG51bS5sZW5ndGggPiAwKSB7XG5cdFx0XHRpZiAodmFsaWRhdGUuaXNWYWxpZCgpKSB7XG5cdFx0XHRcdHNldENvbG9yKCdncmVlbicpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c2V0Q29sb3IoJ3JlZCcpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRzZXRDb2xvcignYmxhY2snKTtcblx0XHR9XG5cdFx0cmV0dXJuIHZhbGlkYXRlLmlzVmFsaWQoKTtcblx0fSwgW10pO1xuXG5cdGNvbnN0IG1hc2s6IE1hc2tlZElucHV0UHJvcHNbJ21hc2snXSA9IHVzZU1lbW8oXG5cdFx0KCkgPT4gKHtcblx0XHRcdG1hc2s6ICc5OTktOTk5LTk5OScsXG5cdFx0XHRpc0NvbXBsZXRlOiBjaGVja1ZhbGlkYXRpb24sXG5cdFx0XHRncmVlZHk6IGZhbHNlLFxuXHRcdFx0YXV0b1VubWFzazogdHJ1ZSxcblx0XHR9KSxcblx0XHRbY2hlY2tWYWxpZGF0aW9uXSxcblx0KTtcblxuXHRjb25zdCBjYXJkTnVtYmVyUmVmID0gdXNlTWFza2VkSW5wdXQoe1xuXHRcdG1hc2ssXG5cdFx0dmFsdWUsXG5cdFx0b25DaGFuZ2U6IHYgPT4ge1xuXHRcdFx0b25DaGFuZ2UgJiYgb25DaGFuZ2Uodik7XG5cdFx0fSxcblx0XHRvblNldDogdiA9PiB7XG5cdFx0XHRjaGVja1ZhbGlkYXRpb24oW3YgfHwgJyddKTtcblx0XHR9LFxuXHR9KTtcblxuXHRyZXR1cm4gKFxuXHRcdDxJbnB1dCB7Li4ucmVzdH0gaWNvbj5cblx0XHRcdDxpbnB1dCByZWY9e2NhcmROdW1iZXJSZWZ9IC8+XG5cdFx0XHQ8SWNvbiBuYW1lPVwiaWQgYmFkZ2VcIiBjb2xvcj17Y29sb3J9IHNpemU9XCJsYXJnZVwiIC8+XG5cdFx0PC9JbnB1dD5cblx0KTtcbn1cbiIsImV4cG9ydCB7U2luSW5wdXR9IGZyb20gJy4vU2luSW5wdXQnO1xuZXhwb3J0IHR5cGUge1NpbklucHV0UHJvcHN9IGZyb20gJy4vU2luSW5wdXQnO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7RHJvcGRvd259IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtEcm9wZG93blByb3BzfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7VGFibGVDZWxsUHJvcHN9IGZyb20gJy4vVGFibGVJbnB1dCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBEcm9wZG93bkNlbGw8RCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+Pihkcm9wZG93blByb3BzOiBEcm9wZG93blByb3BzKSB7XG5cdHJldHVybiBmdW5jdGlvbiBEcm9wZG93bkNlbGxGbihwcm9wczogVGFibGVDZWxsUHJvcHM8RD4pIHtcblx0XHRjb25zdCB7XG5cdFx0XHR2YWx1ZSxcblx0XHRcdHJvdzoge2luZGV4OiByb3dJbmRleH0sXG5cdFx0XHRjb2x1bW46IHtpZH0sXG5cdFx0XHR1cGRhdGVEYXRhLFxuXHRcdH0gPSBwcm9wcztcblxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycyxAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0XHRjb25zdCB7dmFsdWU6IHYsIG9uQ2hhbmdlLCAuLi5yZXN0fSA9IGRyb3Bkb3duUHJvcHM7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PERyb3Bkb3duXG5cdFx0XHRcdHsuLi5yZXN0fVxuXHRcdFx0XHR2YWx1ZT17dmFsdWV9XG5cdFx0XHRcdG9uQ2hhbmdlPXsoZXZlbnQsIHZhbCkgPT4ge1xuXHRcdFx0XHRcdHVwZGF0ZURhdGEocm93SW5kZXgsIGlkLCB2YWwudmFsdWUpO1xuXHRcdFx0XHRcdGlmIChvbkNoYW5nZSkgb25DaGFuZ2UoZXZlbnQsIHZhbCk7XG5cdFx0XHRcdH19XG5cdFx0XHQvPlxuXHRcdCk7XG5cdH07XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHtDZWxsUHJvcHMsIFJlbmRlcmVyfSBmcm9tICdyZWFjdC10YWJsZSc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLmlucHV0cy5UYWJsZUlucHV0LkhvdmVyQ2VsbCcpO1xuXG5pbnRlcmZhY2UgSG92ZXJDZWxsT3B0aW9uczxEIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcblx0QWN0aW9uOiBSZW5kZXJlcjxDZWxsUHJvcHM8RD4+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gSG92ZXJDZWxsPEQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ob3B0aW9uczogSG92ZXJDZWxsT3B0aW9uczxEPikge1xuXHRyZXR1cm4gZnVuY3Rpb24gSG92ZXJDZWxsRm4ocHJvcHM6IENlbGxQcm9wczxEPikge1xuXHRcdGNvbnN0IHtBY3Rpb259ID0gb3B0aW9ucztcblxuXHRcdC8vIEB0cy1leHBlY3QtZXJyb3Jcblx0XHRpZiAocHJvcHMuaG92ZXJSb3cgPT09IHByb3BzLnJvdy5pZCkge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PGRpdiBzdHlsZT17e3RleHRBbGlnbjogJ3JpZ2h0J319PlxuXHRcdFx0XHRcdHsvKiBAdHMtZXhwZWN0LWVycm9yICovfVxuXHRcdFx0XHRcdDxBY3Rpb24gey4uLnByb3BzfSAvPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiBudWxsO1xuXHR9O1xufVxuIiwiaW1wb3J0IHtmb3JtYXRNb25leX0gZnJvbSAnQHRoeC9tb25leSc7XG5pbXBvcnQgdHlwZSBNb25leSBmcm9tICdqcy1tb25leSc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUge0NlbGxQcm9wc30gZnJvbSAncmVhY3QtdGFibGUnO1xuXG5pbnRlcmZhY2UgTW9uZXlDZWxsT3B0aW9uczxEIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcblx0LyoqIElmIHByb3ZpZGVkLCB0aGlzIGZ1bmN0aW9uIHdpbGwgb3ZlcnJpZGUgdGhlIE1vbmV5IHZhbHVlIGRpc3BsYXllZCAqL1xuXHRvdmVycmlkZVZhbHVlPzogKHByb3BzOiBDZWxsUHJvcHM8RCwgTW9uZXk+KSA9PiBNb25leTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE1vbmV5Q2VsbDxEIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KG9wdGlvbnM/OiBNb25leUNlbGxPcHRpb25zPEQ+KSB7XG5cdHJldHVybiBmdW5jdGlvbiBNb25leUNlbGxGbihwcm9wczogQ2VsbFByb3BzPEQsIE1vbmV5Pikge1xuXHRcdHJldHVybiA8ZGl2IHN0eWxlPXt7dGV4dEFsaWduOiAncmlnaHQnfX0+e2Zvcm1hdE1vbmV5KG9wdGlvbnM/Lm92ZXJyaWRlVmFsdWUgPyBvcHRpb25zLm92ZXJyaWRlVmFsdWUocHJvcHMpIDogcHJvcHMudmFsdWUpfTwvZGl2Pjtcblx0fTtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgdHlwZSBNb25leSBmcm9tICdqcy1tb25leSc7XG5pbXBvcnQgUmVhY3QsIHt1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtNb25leUlucHV0fSBmcm9tICcuLi8uLi9tb25leS9Nb25leUlucHV0JztcbmltcG9ydCB0eXBlIHtUYWJsZUNlbGxQcm9wc30gZnJvbSAnLi9UYWJsZUlucHV0JztcbmltcG9ydCB0eXBlIHtBZGRSb3dPblRhYklmfSBmcm9tICcuL2FkZFJvd09uVGFiJztcbmltcG9ydCB7YWRkUm93T25UYWJ9IGZyb20gJy4vYWRkUm93T25UYWInO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5pbnB1dHMuVGFibGVJbnB1dC5Nb25leUVkaXRDZWxsJyk7XG5cbmludGVyZmFjZSBNb25leUVkaXRDZWxsT3B0aW9uczxEIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcblx0LyoqIElmIGZ1bmN0aW9uIGlzIHByZXNlbnQsIGFuZCByZXR1cm5zIHRydWUsIHdpbGwgYWRkIGEgbmV3IHJvdyBpZiB0YWIgaXMgcHJlc3NlZCBvbiB0aGUgbGFzdCByb3cgKi9cblx0YWRkUm93T25UYWJJZj86IEFkZFJvd09uVGFiSWY8RCwgTW9uZXk+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTW9uZXlFZGl0Q2VsbDxEIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KG9wdHM/OiBNb25leUVkaXRDZWxsT3B0aW9uczxEPikge1xuXHRyZXR1cm4gZnVuY3Rpb24gTW9uZXlFZGl0Q2VsbEZuKHByb3BzOiBUYWJsZUNlbGxQcm9wczxELCBNb25leT4pIHtcblx0XHRjb25zdCB7XG5cdFx0XHR2YWx1ZTogaW5pdGlhbFZhbHVlLFxuXHRcdFx0cm93OiB7aW5kZXg6IHJvd0luZGV4fSxcblx0XHRcdGNvbHVtbjoge2lkfSxcblx0XHRcdHVwZGF0ZURhdGEsXG5cdFx0fSA9IHByb3BzO1xuXG5cdFx0Y29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZShpbml0aWFsVmFsdWUpO1xuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxNb25leUlucHV0XG5cdFx0XHRcdGZsdWlkXG5cdFx0XHRcdHRyYW5zcGFyZW50XG5cdFx0XHRcdHZhbHVlPXt2YWx1ZX1cblx0XHRcdFx0b25DaGFuZ2U9e3NldFZhbHVlfVxuXHRcdFx0XHRvbkJsdXI9eygpID0+IHtcblx0XHRcdFx0XHR1cGRhdGVEYXRhKHJvd0luZGV4LCBpZCwgdmFsdWUpO1xuXHRcdFx0XHR9fVxuXHRcdFx0XHRvbktleURvd249eyhldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gYWRkUm93T25UYWIoZXZlbnQsIHZhbHVlLCBwcm9wcywgb3B0cz8uYWRkUm93T25UYWJJZil9XG5cdFx0XHQvPlxuXHRcdCk7XG5cdH07XG59XG4iLCJpbXBvcnQge2Zvcm1hdE1vbmV5LCB0b01vbmV5fSBmcm9tICdAdGh4L21vbmV5JztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7SWRUeXBlLCBUYWJsZUluc3RhbmNlfSBmcm9tICdyZWFjdC10YWJsZSc7XG5cbmludGVyZmFjZSBNb25leVN1bUZvb3Rlck9wdGlvbnM8QSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG5cdGlkOiBJZFR5cGU8QT47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBNb25leVN1bUZvb3RlcjxBIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KG9wdGlvbnM6IE1vbmV5U3VtRm9vdGVyT3B0aW9uczxBPikge1xuXHRjb25zdCB7aWR9ID0gb3B0aW9ucyB8fCB7fTtcblxuXHRyZXR1cm4gKGluZm86IFRhYmxlSW5zdGFuY2U8QT4pID0+IHtcblx0XHRjb25zdCBzdW0gPSBpbmZvLnJvd3MucmVkdWNlKChtZW1vLCByb3cpID0+IG1lbW8uYWRkKHJvdy52YWx1ZXNbaWRdKSwgdG9Nb25leSgpKTtcblx0XHRyZXR1cm4gPGRpdiBzdHlsZT17e3RleHRBbGlnbjogJ3JpZ2h0J319Pntmb3JtYXRNb25leShzdW0pfTwvZGl2Pjtcblx0fTtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3QsIHt1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtJbnB1dCwgSW5wdXRQcm9wc30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge1RhYmxlQ2VsbFByb3BzfSBmcm9tICcuL1RhYmxlSW5wdXQnO1xuaW1wb3J0IHR5cGUge0FkZFJvd09uVGFiSWZ9IGZyb20gJy4vYWRkUm93T25UYWInO1xuaW1wb3J0IHthZGRSb3dPblRhYn0gZnJvbSAnLi9hZGRSb3dPblRhYic7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLmlucHV0cy5UYWJsZUlucHV0LlN0cmluZ0VkaXRDZWxsJyk7XG5cbmludGVyZmFjZSBTdHJpbmdFZGl0Q2VsbE9wdGlvbnM8RCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG5cdC8qKiBPdmVycmlkZSBTZW1hbnRpY1VJIElucHV0IHByb3BzICovXG5cdGlucHV0UHJvcHM/OiBJbnB1dFByb3BzO1xuXHQvKiogSWYgZnVuY3Rpb24gaXMgcHJlc2VudCwgYW5kIHJldHVybnMgdHJ1ZSwgd2lsbCBhZGQgYSBuZXcgcm93IGlmIHRhYiBpcyBwcmVzc2VkIG9uIHRoZSBsYXN0IHJvdyAqL1xuXHRhZGRSb3dPblRhYklmPzogQWRkUm93T25UYWJJZjxELCBzdHJpbmc+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gU3RyaW5nRWRpdENlbGw8RCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihvcHRpb25zPzogU3RyaW5nRWRpdENlbGxPcHRpb25zPEQ+KSB7XG5cdGNvbnN0IHtpbnB1dFByb3BzLCBhZGRSb3dPblRhYklmfSA9IG9wdGlvbnMgfHwge307XG5cblx0cmV0dXJuIGZ1bmN0aW9uIFN0cmluZ0VkaXRDZWxsRm4ocHJvcHM6IFRhYmxlQ2VsbFByb3BzPEQsIHN0cmluZz4pIHtcblx0XHRjb25zdCB7XG5cdFx0XHR2YWx1ZTogaW5pdGlhbFZhbHVlLFxuXHRcdFx0cm93OiB7aW5kZXh9LFxuXHRcdFx0Y29sdW1uOiB7aWR9LFxuXHRcdFx0dXBkYXRlRGF0YSxcblx0XHR9ID0gcHJvcHM7XG5cblx0XHRjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKGluaXRpYWxWYWx1ZSk7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PElucHV0XG5cdFx0XHRcdGZsdWlkXG5cdFx0XHRcdHRyYW5zcGFyZW50XG5cdFx0XHRcdHsuLi5pbnB1dFByb3BzfVxuXHRcdFx0XHR2YWx1ZT17dmFsdWV9XG5cdFx0XHRcdG9uQ2hhbmdlPXsoZXYsIHYpID0+IHtcblx0XHRcdFx0XHRzZXRWYWx1ZSh2LnZhbHVlKTtcblx0XHRcdFx0fX1cblx0XHRcdFx0b25CbHVyPXsoKSA9PiB7XG5cdFx0XHRcdFx0dXBkYXRlRGF0YShpbmRleCwgaWQsIHZhbHVlKTtcblx0XHRcdFx0fX1cblx0XHRcdFx0b25LZXlEb3duPXsoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IGFkZFJvd09uVGFiKGV2ZW50LCB2YWx1ZSwgcHJvcHMsIGFkZFJvd09uVGFiSWYpfVxuXHRcdFx0Lz5cblx0XHQpO1xuXHR9O1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7RmllbGRBcnJheSwgRmllbGRBcnJheVJlbmRlclByb3BzfSBmcm9tICdmb3JtaWsnO1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvanN4LWtleSAqL1xuaW1wb3J0IFJlYWN0LCB7dXNlTWVtbywgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7XG5cdENlbGxQcm9wR2V0dGVyLFxuXHRDZWxsUHJvcHMsXG5cdENvbHVtbixcblx0Rm9vdGVyR3JvdXBQcm9wR2V0dGVyLFxuXHRGb290ZXJQcm9wR2V0dGVyLFxuXHRIZWFkZXJHcm91cFByb3BHZXR0ZXIsXG5cdEhlYWRlclByb3BHZXR0ZXIsXG5cdFJvd1Byb3BHZXR0ZXIsXG5cdFRhYmxlQm9keVByb3BHZXR0ZXIsXG5cdHVzZVRhYmxlLFxufSBmcm9tICdyZWFjdC10YWJsZSc7XG5pbXBvcnQge1RhYmxlLCBUYWJsZVByb3BzfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLmlucHV0cy5UYWJsZUlucHV0Jyk7XG5cbnR5cGUgRGVmYXVsdFRhYmxlVHlwZSA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5pbnRlcmZhY2UgVGFibGVJbnB1dFByb3BzPEEgZXh0ZW5kcyBEZWZhdWx0VGFibGVUeXBlPiB7XG5cdG5hbWU6IHN0cmluZztcblx0dmFsdWVzOiBBW107XG5cdGNvbHVtbnM6IENvbHVtbjxBPltdO1xuXHRzZXRGaWVsZFZhbHVlOiAoZmllbGQ6IHN0cmluZywgdmFsdWU6IGFueSwgc2hvdWxkVmFsaWRhdGU/OiBib29sZWFuIHwgdW5kZWZpbmVkKSA9PiB2b2lkO1xuXHRjcmVhdGVSb3c6ICgpID0+IEE7XG5cdHRhYmxlUHJvcHM/OiBUYWJsZVByb3BzO1xuXHRoZWFkZXJSb3dQcm9wcz86IEhlYWRlckdyb3VwUHJvcEdldHRlcjxBPjtcblx0aGVhZGVyQ2VsbFByb3BzPzogSGVhZGVyUHJvcEdldHRlcjxBPjtcblx0Zm9vdGVyUm93UHJvcHM/OiBGb290ZXJHcm91cFByb3BHZXR0ZXI8QT47XG5cdGZvb3RlckNlbGxQcm9wcz86IEZvb3RlclByb3BHZXR0ZXI8QT47XG5cdGJvZHlQcm9wcz86IFRhYmxlQm9keVByb3BHZXR0ZXI8QT47XG5cdHJvd1Byb3BzPzogUm93UHJvcEdldHRlcjxBPjtcblx0Y2VsbFByb3BzPzogQ2VsbFByb3BHZXR0ZXI8QT47XG59XG5cbmludGVyZmFjZSBUYWJsZUlucHV0VGFibGVQcm9wczxBIGV4dGVuZHMgRGVmYXVsdFRhYmxlVHlwZT4gZXh0ZW5kcyBUYWJsZUlucHV0UHJvcHM8QT4ge1xuXHRhcnJheUhlbHBlcnM6IEZpZWxkQXJyYXlSZW5kZXJQcm9wcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUNlbGxQcm9wczxEIGV4dGVuZHMgRGVmYXVsdFRhYmxlVHlwZSwgViA9IGFueT4gZXh0ZW5kcyBDZWxsUHJvcHM8RCwgVj4ge1xuXHRhcnJheUhlbHBlcnM6IEZpZWxkQXJyYXlSZW5kZXJQcm9wcztcblx0YWRkUm93OiAoKSA9PiB2b2lkO1xuXHR1cGRhdGVEYXRhOiAoaW5kZXg6IG51bWJlciwgaWQ6IHN0cmluZywgdmFsdWU6IFYpID0+IHZvaWQ7XG59XG5cbmZ1bmN0aW9uIFRhYmxlSW5wdXRUYWJsZTxBIGV4dGVuZHMgRGVmYXVsdFRhYmxlVHlwZT4ocHJvcHM6IFRhYmxlSW5wdXRUYWJsZVByb3BzPEE+KSB7XG5cdGNvbnN0IHtcblx0XHRuYW1lLFxuXHRcdGNvbHVtbnMsXG5cdFx0dmFsdWVzLFxuXHRcdGFycmF5SGVscGVycyxcblx0XHRzZXRGaWVsZFZhbHVlLFxuXHRcdGNyZWF0ZVJvdyxcblx0XHR0YWJsZVByb3BzLFxuXHRcdGhlYWRlclJvd1Byb3BzLFxuXHRcdGhlYWRlckNlbGxQcm9wcyxcblx0XHRib2R5UHJvcHMsXG5cdFx0cm93UHJvcHMsXG5cdFx0Y2VsbFByb3BzLFxuXHRcdGZvb3RlckNlbGxQcm9wcyxcblx0XHRmb290ZXJSb3dQcm9wcyxcblx0fSA9IHByb3BzO1xuXHRjb25zdCBjb2xzID0gdXNlTWVtbygoKSA9PiBjb2x1bW5zLCBbY29sdW1uc10pO1xuXHRjb25zdCB2YWxzID0gdXNlTWVtbygoKSA9PiB2YWx1ZXMsIFt2YWx1ZXNdKTtcblx0Y29uc3QgW2hvdmVyUm93LCBzZXRIb3ZlclJvd10gPSB1c2VTdGF0ZSgnJyk7XG5cblx0Ly8gUmVhY3QtVGFibGUgaG9va1xuXHRjb25zdCB7Z2V0VGFibGVQcm9wcywgZ2V0VGFibGVCb2R5UHJvcHMsIGhlYWRlckdyb3VwcywgcHJlcGFyZVJvdywgcm93cywgZm9vdGVyR3JvdXBzfSA9IHVzZVRhYmxlPEE+KHtcblx0XHRjb2x1bW5zOiBjb2xzLFxuXHRcdGRhdGE6IHZhbHMsXG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdHVwZGF0ZURhdGEocm93SW5kZXgsIGNvbHVtbklkLCB2YWx1ZSkge1xuXHRcdFx0c2V0RmllbGRWYWx1ZShgJHtuYW1lfVske3Jvd0luZGV4fV0uJHtjb2x1bW5JZH1gLCB2YWx1ZSk7XG5cdFx0fSxcblx0XHRhZGRSb3coKSB7XG5cdFx0XHRhcnJheUhlbHBlcnMucHVzaChjcmVhdGVSb3coKSk7XG5cdFx0fSxcblx0XHRhcnJheUhlbHBlcnMsXG5cdH0pO1xuXG5cdC8vIEB0cy1pZ25vcmUgQ2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYSBGb290ZXIgdGhhdCBpcyBub3QgdGhlIGRlZmF1bHQgZW1wdHlSZW5kZXJlcigpXG5cdGNvbnN0IGhhc0Zvb3RlciA9IGZvb3Rlckdyb3Vwcy5zb21lKGZnID0+IGZnLmhlYWRlcnMuc29tZShmZ2ggPT4gZmdoLkZvb3Rlci5uYW1lICE9PSAnZW1wdHlSZW5kZXJlcicpKTtcblxuXHQvLyBCdWlsZCBGb290ZXIgaWYgYW55IGZvb3RlciByZW5kZXJlcnMgZXhpc3Rcblx0Y29uc3QgZm9vdGVyID0gaGFzRm9vdGVyID8gKFxuXHRcdDxUYWJsZS5Gb290ZXI+XG5cdFx0XHR7Zm9vdGVyR3JvdXBzLm1hcChncm91cCA9PiAoXG5cdFx0XHRcdDxUYWJsZS5Sb3cgey4uLnsuLi5ncm91cC5nZXRGb290ZXJHcm91cFByb3BzKCksIC4uLmdyb3VwLmdldEZvb3Rlckdyb3VwUHJvcHMoZm9vdGVyUm93UHJvcHMpfX0+XG5cdFx0XHRcdFx0e2dyb3VwLmhlYWRlcnMubWFwKGNvbHVtbiA9PiAoXG5cdFx0XHRcdFx0XHQ8VGFibGUuSGVhZGVyQ2VsbCB7Li4uey4uLmNvbHVtbi5nZXRGb290ZXJQcm9wcygpLCAuLi5jb2x1bW4uZ2V0Rm9vdGVyUHJvcHMoZm9vdGVyQ2VsbFByb3BzKX19PlxuXHRcdFx0XHRcdFx0XHR7Y29sdW1uLnJlbmRlcignRm9vdGVyJyl9XG5cdFx0XHRcdFx0XHQ8L1RhYmxlLkhlYWRlckNlbGw+XG5cdFx0XHRcdFx0KSl9XG5cdFx0XHRcdDwvVGFibGUuUm93PlxuXHRcdFx0KSl9XG5cdFx0PC9UYWJsZS5Gb290ZXI+XG5cdCkgOiBudWxsO1xuXG5cdHJldHVybiAoXG5cdFx0PD5cblx0XHRcdDxUYWJsZSB7Li4uey4uLmdldFRhYmxlUHJvcHMoKSwgLi4uZ2V0VGFibGVQcm9wcyh0YWJsZVByb3BzKX19PlxuXHRcdFx0XHQ8VGFibGUuSGVhZGVyPlxuXHRcdFx0XHRcdHtoZWFkZXJHcm91cHMubWFwKGhlYWRlckdyb3VwID0+IChcblx0XHRcdFx0XHRcdDxUYWJsZS5Sb3cgey4uLnsuLi5oZWFkZXJHcm91cC5nZXRIZWFkZXJHcm91cFByb3BzKCksIC4uLmhlYWRlckdyb3VwLmdldEhlYWRlckdyb3VwUHJvcHMoaGVhZGVyUm93UHJvcHMpfX0+XG5cdFx0XHRcdFx0XHRcdHtoZWFkZXJHcm91cC5oZWFkZXJzLm1hcChjb2x1bW4gPT4gKFxuXHRcdFx0XHRcdFx0XHRcdDxUYWJsZS5IZWFkZXJDZWxsIHsuLi57Li4uY29sdW1uLmdldEhlYWRlclByb3BzKCksIC4uLmNvbHVtbi5nZXRIZWFkZXJQcm9wcyhoZWFkZXJDZWxsUHJvcHMpfX0+XG5cdFx0XHRcdFx0XHRcdFx0XHR7Y29sdW1uLnJlbmRlcignSGVhZGVyJyl9XG5cdFx0XHRcdFx0XHRcdFx0PC9UYWJsZS5IZWFkZXJDZWxsPlxuXHRcdFx0XHRcdFx0XHQpKX1cblx0XHRcdFx0XHRcdDwvVGFibGUuUm93PlxuXHRcdFx0XHRcdCkpfVxuXHRcdFx0XHQ8L1RhYmxlLkhlYWRlcj5cblx0XHRcdFx0PFRhYmxlLkJvZHkgey4uLnsuLi5nZXRUYWJsZUJvZHlQcm9wcygpLCAuLi5nZXRUYWJsZUJvZHlQcm9wcyhib2R5UHJvcHMpfX0+XG5cdFx0XHRcdFx0e3Jvd3MubWFwKHJvdyA9PiB7XG5cdFx0XHRcdFx0XHRwcmVwYXJlUm93KHJvdyk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHQ8VGFibGUuUm93XG5cdFx0XHRcdFx0XHRcdFx0ey4uLnsuLi5yb3cuZ2V0Um93UHJvcHMoKSwgLi4ucm93LmdldFJvd1Byb3BzKHJvd1Byb3BzKX19XG5cdFx0XHRcdFx0XHRcdFx0b25Nb3VzZUVudGVyPXsoKSA9PiBzZXRIb3ZlclJvdyhyb3cuaWQpfVxuXHRcdFx0XHRcdFx0XHRcdG9uTW91c2VMZWF2ZT17KCkgPT4gc2V0SG92ZXJSb3coJycpfVxuXHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0e3Jvdy5jZWxscy5tYXAoY2VsbCA9PiAoXG5cdFx0XHRcdFx0XHRcdFx0XHQ8VGFibGUuQ2VsbCB7Li4uey4uLmNlbGwuZ2V0Q2VsbFByb3BzKCksIC4uLmNlbGwuZ2V0Q2VsbFByb3BzKGNlbGxQcm9wcyl9fT57Y2VsbC5yZW5kZXIoJ0NlbGwnLCB7aG92ZXJSb3d9KX08L1RhYmxlLkNlbGw+XG5cdFx0XHRcdFx0XHRcdFx0KSl9XG5cdFx0XHRcdFx0XHRcdDwvVGFibGUuUm93PlxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9KX1cblx0XHRcdFx0PC9UYWJsZS5Cb2R5PlxuXHRcdFx0XHR7Zm9vdGVyfVxuXHRcdFx0PC9UYWJsZT5cblx0XHQ8Lz5cblx0KTtcbn1cblxuLyoqXG4gKiBDYW4gYmUgdXNlZCBpbiBhIFRGb3JtIGFzIGEgVGFibGUgSW5wdXQuXG4gKiBAcGFyYW0gcHJvcHNcbiAqIEBjb25zdHJ1Y3RvclxuICovXG5leHBvcnQgZnVuY3Rpb24gVGFibGVJbnB1dDxBIGV4dGVuZHMgRGVmYXVsdFRhYmxlVHlwZT4ocHJvcHM6IFRhYmxlSW5wdXRQcm9wczxBPikge1xuXHRyZXR1cm4gPEZpZWxkQXJyYXkgbmFtZT17cHJvcHMubmFtZX0gcmVuZGVyPXthcnJheUhlbHBlcnMgPT4gPFRhYmxlSW5wdXRUYWJsZSBhcnJheUhlbHBlcnM9e2FycmF5SGVscGVyc30gey4uLnByb3BzfSAvPn0gLz47XG59XG4iLCJpbXBvcnQgdHlwZSB7VGFibGVDZWxsUHJvcHN9IGZyb20gJy4vVGFibGVJbnB1dCc7XG5cbmV4cG9ydCB0eXBlIEFkZFJvd09uVGFiSWY8RCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBWID0gYW55PiA9IChwcm9wczogVGFibGVDZWxsUHJvcHM8RCwgVj4sIG5ld1ZhbHVlOiBWKSA9PiBib29sZWFuO1xuXG4vKipcbiAqIFVzZSBhcyBhbiBvbktleURvd24gZXZlbnQgaGFuZGxlciB0byBhZGQgYSBuZXcgcm93IHdoZW4gdGFiIGlzIHByZXNzZWQsIGRlcGVuZGluZyBvbiBjZXJ0YWluIGNyaXRlcmlhLlxuICogQHBhcmFtIGV2ZW50XG4gKiBAcGFyYW0gdmFsdWVcbiAqIEBwYXJhbSBwcm9wc1xuICogQHBhcmFtIGFkZFJvd09uVGFiSWZcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFJvd09uVGFiPEQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgViA9IGFueT4oXG5cdGV2ZW50OiBLZXlib2FyZEV2ZW50LFxuXHR2YWx1ZTogVixcblx0cHJvcHM6IFRhYmxlQ2VsbFByb3BzPEQsIFY+LFxuXHRhZGRSb3dPblRhYklmPzogQWRkUm93T25UYWJJZjxELCBWPixcbikge1xuXHRjb25zdCB7XG5cdFx0cm93OiB7aW5kZXg6IHJvd0luZGV4fSxcblx0XHRyb3dzOiB7bGVuZ3RoOiByb3dzTGVuZ3RofSxcblx0XHRhZGRSb3csXG5cdH0gPSBwcm9wcztcblxuXHRpZiAoZXZlbnQua2V5ID09PSAnVGFiJyAmJiAhZXZlbnQuc2hpZnRLZXkgJiYgcm93SW5kZXggKyAxID09PSByb3dzTGVuZ3RoICYmIChhZGRSb3dPblRhYklmID8gYWRkUm93T25UYWJJZihwcm9wcywgdmFsdWUpIDogZmFsc2UpKSB7XG5cdFx0YWRkUm93KCk7XG5cdH1cbn1cbiIsImV4cG9ydCB7VGFibGVJbnB1dH0gZnJvbSAnLi9UYWJsZUlucHV0JztcbmV4cG9ydCB7TW9uZXlDZWxsfSBmcm9tICcuL01vbmV5Q2VsbCc7XG5leHBvcnQge01vbmV5RWRpdENlbGx9IGZyb20gJy4vTW9uZXlFZGl0Q2VsbCc7XG5leHBvcnQge01vbmV5U3VtRm9vdGVyfSBmcm9tICcuL01vbmV5U3VtRm9vdGVyJztcbmV4cG9ydCB7U3RyaW5nRWRpdENlbGx9IGZyb20gJy4vU3RyaW5nRWRpdENlbGwnO1xuZXhwb3J0IHtEcm9wZG93bkNlbGx9IGZyb20gJy4vRHJvcGRvd25DZWxsJztcbmV4cG9ydCB7SG92ZXJDZWxsfSBmcm9tICcuL0hvdmVyQ2VsbCc7XG5leHBvcnQge2FkZFJvd09uVGFifSBmcm9tICcuL2FkZFJvd09uVGFiJztcbmV4cG9ydCB0eXBlIHtBZGRSb3dPblRhYklmfSBmcm9tICcuL2FkZFJvd09uVGFiJztcbiIsImltcG9ydCB7dG9Nb25leX0gZnJvbSAnQHRoeC9tb25leSc7XG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgTW9uZXksIHtDdXJyZW5jeVN0cmluZ30gZnJvbSAnanMtbW9uZXknO1xuaW1wb3J0IFJlYWN0LCB7U3ludGhldGljRXZlbnQsIHVzZUNhbGxiYWNrfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0Ryb3Bkb3duLCBEcm9wZG93blByb3BzLCBJbnB1dCwgSW5wdXRQcm9wcywgTGFiZWx9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtNb25leUlucHV0UHJvcHN9IGZyb20gJy4uL01vbmV5SW5wdXQnO1xuaW1wb3J0IHt1c2VNb25leUlucHV0fSBmcm9tICcuLi91c2VNb25leUlucHV0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMubW9uZXkuTW9uZXlDdXJyZW5jeUlucHV0Jyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9uZXlDdXJyZW5jeUlucHV0UHJvcHMgZXh0ZW5kcyBNb25leUlucHV0UHJvcHMge1xuXHRjdXJyZW5jaWVzPzoge2tleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nOyB0ZXh0OiBzdHJpbmd9W107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBNb25leUN1cnJlbmN5SW5wdXQocHJvcHM6IE1vbmV5Q3VycmVuY3lJbnB1dFByb3BzICYgT21pdDxJbnB1dFByb3BzLCAnb25DaGFuZ2UnPikge1xuXHRjb25zdCB7bmFtZSwgb25CbHVyLCBwcmVmaXgsIGRlZmF1bHRDdXJyZW5jeSwgb25DaGFuZ2UsIHNob3dQcmVmaXgsIHZhbHVlLCB3aG9sZU51bWJlciwgY3VycmVuY2llcywgbG9ja2VkLCAuLi5yZXN0fSA9IHByb3BzO1xuXG5cdGNvbnN0IG9wdGlvbnMgPSBjdXJyZW5jaWVzIHx8IFtcblx0XHR7a2V5OiAnQ0FEJywgdGV4dDogJ0NBRCcsIHZhbHVlOiAnQ0FEJ30sXG5cdFx0e2tleTogJ1VTRCcsIHRleHQ6ICdVU0QnLCB2YWx1ZTogJ1VTRCd9LFxuXHRdO1xuXG5cdGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuXHRcdCh2PzogTW9uZXkpID0+IHtcblx0XHRcdGlmICghdikge1xuXHRcdFx0XHRvbkNoYW5nZSAmJiBvbkNoYW5nZSh0b01vbmV5KDAsIGRlZmF1bHRDdXJyZW5jeSkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0b25DaGFuZ2UgJiYgb25DaGFuZ2Uodik7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRbZGVmYXVsdEN1cnJlbmN5LCBvbkNoYW5nZV0sXG5cdCk7XG5cblx0Y29uc3QgdmFsID0gISh2YWx1ZSBpbnN0YW5jZW9mIE1vbmV5KSAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdG9Nb25leSh2YWx1ZSkgOiB2YWx1ZTtcblxuXHRjb25zdCBbaW5wdXRFbGVtZW50XSA9IHVzZU1vbmV5SW5wdXQoe29uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIHByZWZpeCwgc2hvd1ByZWZpeCwgdmFsdWU6IHZhbCwgd2hvbGVOdW1iZXJ9KTtcblxuXHRjb25zdCBoYW5kbGVEcm9wZG93bkNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuXHRcdChlOiBTeW50aGV0aWNFdmVudDxIVE1MRWxlbWVudCwgRXZlbnQ+LCB2OiBEcm9wZG93blByb3BzKSA9PiB7XG5cdFx0XHRjb25zdCBuZXdDdXJyZW5jeUNvZGUgPSB2LnZhbHVlIGFzIEN1cnJlbmN5U3RyaW5nO1xuXHRcdFx0Y29uc3QgbmV3TW9uZXkgPSBuZXcgTW9uZXkodmFsdWU/LmFtb3VudCB8fCAwLCBuZXdDdXJyZW5jeUNvZGUpO1xuXG5cdFx0XHRkKCdDaGFuZ2UnLCB2YWx1ZSwgbmV3Q3VycmVuY3lDb2RlLCBuZXdNb25leSk7XG5cdFx0XHQvLyBzZXRJbnB1dFZhbHVlKG5ld01vbmV5KTtcblx0XHRcdG9uQ2hhbmdlICYmIG9uQ2hhbmdlKG5ld01vbmV5KTtcblx0XHRcdC8vIGZvcmNlVXBkYXRlKCk7XG5cdFx0fSxcblx0XHRbb25DaGFuZ2UsIHZhbHVlXSxcblx0KTtcblxuXHRjb25zdCBjdXJyZW5jeUNvZGUgPSB2YWx1ZT8uY3VycmVuY3kgfHwgZGVmYXVsdEN1cnJlbmN5Py5jb2RlIHx8ICdDQUQnO1xuXHRkKCdSZW5kZXInLCB2YWx1ZSwgY3VycmVuY3lDb2RlKTtcblxuXHRyZXR1cm4gKFxuXHRcdDxJbnB1dCB7Li4ucmVzdH0gbGFiZWxQb3NpdGlvbj1cInJpZ2h0XCI+XG5cdFx0XHQ8aW5wdXQgbmFtZT17bmFtZX0gcmVmPXtpbnB1dEVsZW1lbnR9IG9uQmx1cj17b25CbHVyfSByZWFkT25seT17bG9ja2VkfSAvPlxuXHRcdFx0PExhYmVsIGJhc2ljPlxuXHRcdFx0XHQ8RHJvcGRvd24gZGlzYWJsZWQ9e2xvY2tlZH0gb3B0aW9ucz17b3B0aW9uc30gdmFsdWU9e2N1cnJlbmN5Q29kZX0gb25DaGFuZ2U9e2hhbmRsZURyb3Bkb3duQ2hhbmdlfSAvPlxuXHRcdFx0PC9MYWJlbD5cblx0XHQ8L0lucHV0PlxuXHQpO1xufVxuIiwiZXhwb3J0IHtNb25leUN1cnJlbmN5SW5wdXR9IGZyb20gJy4vTW9uZXlDdXJyZW5jeUlucHV0JztcbmV4cG9ydCB0eXBlIHtNb25leUN1cnJlbmN5SW5wdXRQcm9wc30gZnJvbSAnLi9Nb25leUN1cnJlbmN5SW5wdXQnO1xuIiwiaW1wb3J0IHt0b01vbmV5fSBmcm9tICdAdGh4L21vbmV5Jztcbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBNb25leSwge0N1cnJlbmN5LCBNb25leU9iamVjdH0gZnJvbSAnanMtbW9uZXknO1xuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2t9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7SW5wdXQsIElucHV0UHJvcHN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB7dXNlTW9uZXlJbnB1dH0gZnJvbSAnLi4vdXNlTW9uZXlJbnB1dCc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLm1vbmV5Lk1vbmV5SW5wdXQnKTtcblxuZXhwb3J0IGludGVyZmFjZSBNb25leUlucHV0UHJvcHMge1xuXHRuYW1lPzogc3RyaW5nO1xuXHRvbkNoYW5nZT86ICh2YWx1ZTogTW9uZXkpID0+IHZvaWQ7XG5cdHZhbHVlPzogTW9uZXkgfCBNb25leU9iamVjdDtcblx0ZGVmYXVsdEN1cnJlbmN5PzogQ3VycmVuY3k7IC8vIERlZmF1bHRzIHRvIE1vbmV5LkNBRFxuXHRvbkJsdXI/OiAoZXY6IGFueSkgPT4gdm9pZDtcblx0cHJlZml4Pzogc3RyaW5nOyAvLyBEZWZhdWx0cyB0byBjdXJyZW5jeSBzeW1ib2xcblx0c2hvd1ByZWZpeD86IGJvb2xlYW47IC8vIERlZmF1bHRzIHRvIGZhbHNlXG5cdGxvY2tlZD86IGJvb2xlYW47IC8vIERlZmF1bHRzIHRvIGZhbHNlXG5cdHdob2xlTnVtYmVyPzogYm9vbGVhbjsgLy8gRGVmYXVsdHMgdG8gZmFsc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE1vbmV5SW5wdXQocHJvcHM6IE1vbmV5SW5wdXRQcm9wcyAmIE9taXQ8SW5wdXRQcm9wcywgJ29uQ2hhbmdlJz4pIHtcblx0Y29uc3Qge25hbWUsIG9uQmx1ciwgbG9ja2VkLCBwcmVmaXgsIGRlZmF1bHRDdXJyZW5jeSwgb25DaGFuZ2UsIHNob3dQcmVmaXgsIHZhbHVlLCB3aG9sZU51bWJlciwgLi4ucmVzdH0gPSBwcm9wcztcblxuXHRjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcblx0XHQodj86IE1vbmV5KSA9PiB7XG5cdFx0XHRpZiAoIXYpIHtcblx0XHRcdFx0b25DaGFuZ2UgJiYgb25DaGFuZ2UodG9Nb25leSgwLCBkZWZhdWx0Q3VycmVuY3kpKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG9uQ2hhbmdlICYmIG9uQ2hhbmdlKHYpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0W2RlZmF1bHRDdXJyZW5jeSwgb25DaGFuZ2VdLFxuXHQpO1xuXG5cdGNvbnN0IHZhbCA9ICEodmFsdWUgaW5zdGFuY2VvZiBNb25leSkgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCA/IHRvTW9uZXkodmFsdWUpIDogdmFsdWU7XG5cblx0Y29uc3QgW2lucHV0RWxlbWVudF0gPSB1c2VNb25leUlucHV0KHtvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLCBwcmVmaXgsIHNob3dQcmVmaXgsIHZhbHVlOiB2YWwsIHdob2xlTnVtYmVyfSk7XG5cblx0cmV0dXJuIChcblx0XHQ8SW5wdXQgey4uLnJlc3R9PlxuXHRcdFx0PGlucHV0IG5hbWU9e25hbWV9IHJlZj17aW5wdXRFbGVtZW50fSBvbkJsdXI9e29uQmx1cn0gcmVhZE9ubHk9e2xvY2tlZH0gLz5cblx0XHQ8L0lucHV0PlxuXHQpO1xufVxuIiwiZXhwb3J0IHtNb25leUlucHV0fSBmcm9tICcuL01vbmV5SW5wdXQnO1xuZXhwb3J0IHR5cGUge01vbmV5SW5wdXRQcm9wc30gZnJvbSAnLi9Nb25leUlucHV0JztcbiIsImltcG9ydCB7dG9Nb25leX0gZnJvbSAnQHRoeC9tb25leSc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IElucHV0bWFzayBmcm9tICdpbnB1dG1hc2snO1xuaW1wb3J0IE1vbmV5IGZyb20gJ2pzLW1vbmV5JztcbmltcG9ydCB7TXV0YWJsZVJlZk9iamVjdCwgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLm1vbmV5LnVzZU1vbmV5SW5wdXQnKTtcblxuaW50ZXJmYWNlIFVzZU1vbmV5SW5wdXRQcm9wcyB7XG5cdHZhbHVlPzogTW9uZXk7XG5cdG9uQ2hhbmdlPzogKHZhbHVlPzogTW9uZXkpID0+IHZvaWQ7XG5cdG9uU2V0PzogKHZhbHVlPzogTW9uZXkpID0+IHZvaWQ7XG5cdC8vIGRlZmF1bHRDdXJyZW5jeT86IEN1cnJlbmN5OyAvLyBEZWZhdWx0cyB0byBNb25leS5DQURcblx0cHJlZml4Pzogc3RyaW5nOyAvLyBEZWZhdWx0cyB0byBjdXJyZW5jeSBzeW1ib2xcblx0c2hvd1ByZWZpeD86IGJvb2xlYW47IC8vIERlZmF1bHRzIHRvIGZhbHNlXG5cdHdob2xlTnVtYmVyPzogYm9vbGVhbjsgLy8gRGVmYXVsdHMgdG8gZmFsc2Vcbn1cblxudHlwZSBTZXRWYWx1ZUZuID0gKHZhbHVlPzogTW9uZXkpID0+IHZvaWQ7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VNb25leUlucHV0KHByb3BzOiBVc2VNb25leUlucHV0UHJvcHMpOiBbTXV0YWJsZVJlZk9iamVjdDxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4sIFNldFZhbHVlRm5dIHtcblx0Y29uc3Qge3ZhbHVlLCBvbkNoYW5nZSwgb25TZXQsIHNob3dQcmVmaXgsIHByZWZpeCwgd2hvbGVOdW1iZXJ9ID0gcHJvcHM7XG5cblx0Y29uc3QgaW5wdXRFbGVtZW50ID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPihudWxsKTtcblx0Y29uc3QgbWFza0luc3RhbmNlID0gdXNlUmVmPElucHV0bWFzay5JbnN0YW5jZSB8IG51bGw+KG51bGwpO1xuXG5cdC8vIHNldCB0aGUgYWRqQ3VycmVuY3lcblx0Ly8gbGV0IGFkakN1cnJlbmN5ID0gTW9uZXkuQ0FEO1xuXHQvLyBpZiAodmFsdWU/LmN1cnJlbmN5ICYmIE1vbmV5W3ZhbHVlPy5jdXJyZW5jeV0pIGFkakN1cnJlbmN5ID0gTW9uZXlbdmFsdWU/LmN1cnJlbmN5XTtcblx0Ly8gaWYgKGRlZmF1bHRDdXJyZW5jeSkgYWRqQ3VycmVuY3kgPSBkZWZhdWx0Q3VycmVuY3k7XG5cdGNvbnN0IGN1cnJlbmN5Q29kZSA9IHZhbHVlPy5jdXJyZW5jeSB8fCAnQ0FEJztcblxuXHR1c2VFZmZlY3QoKCkgPT4ge1xuXHRcdGlmICghaW5wdXRFbGVtZW50LmN1cnJlbnQpIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGdldCBpbnB1dCBlbGVtZW50Jyk7XG5cblx0XHRkKCdDcmVhdGluZyBpbnB1dCBtYXNrIGluc3RhbmNlJyk7XG5cdFx0bWFza0luc3RhbmNlLmN1cnJlbnQgPSBuZXcgSW5wdXRtYXNrKHtcblx0XHRcdGFsaWFzOiAnbnVtZXJpYycsXG5cdFx0XHRncm91cFNlcGFyYXRvcjogJywnLFxuXHRcdFx0ZGlnaXRzOiB3aG9sZU51bWJlciA/ICcwJyA6IE1vbmV5W2N1cnJlbmN5Q29kZV0uZGVjaW1hbF9kaWdpdHMudG9TdHJpbmcoKSxcblx0XHRcdGRpZ2l0c09wdGlvbmFsOiBmYWxzZSxcblx0XHRcdHByZWZpeDogc2hvd1ByZWZpeCA/IHByZWZpeCB8fCBNb25leVtjdXJyZW5jeUNvZGVdLnN5bWJvbCA6IHVuZGVmaW5lZCxcblx0XHRcdHBsYWNlaG9sZGVyOiAnMCcsXG5cdFx0XHRhdXRvVW5tYXNrOiB0cnVlLFxuXHRcdFx0b25jb21wbGV0ZSgpIHtcblx0XHRcdFx0aWYgKG9uQ2hhbmdlKSB7XG5cdFx0XHRcdFx0aWYgKGlucHV0RWxlbWVudC5jdXJyZW50Py52YWx1ZSkge1xuXHRcdFx0XHRcdFx0b25DaGFuZ2UodG9Nb25leShpbnB1dEVsZW1lbnQuY3VycmVudD8udmFsdWUsIGN1cnJlbmN5Q29kZSkpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRvbkNoYW5nZSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdG9uY2xlYXJlZCgpIHtcblx0XHRcdFx0aWYgKG9uQ2hhbmdlKSBvbkNoYW5nZSgpO1xuXHRcdFx0fSxcblx0XHRcdG9uaW5jb21wbGV0ZSgpIHtcblx0XHRcdFx0aWYgKG9uQ2hhbmdlKSBvbkNoYW5nZSh0b01vbmV5KGlucHV0RWxlbWVudC5jdXJyZW50Py52YWx1ZSwgY3VycmVuY3lDb2RlKSk7XG5cdFx0XHR9LFxuXHRcdH0pO1xuXHRcdG1hc2tJbnN0YW5jZS5jdXJyZW50Lm1hc2soaW5wdXRFbGVtZW50LmN1cnJlbnQpO1xuXG5cdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdGlmIChtYXNrSW5zdGFuY2UuY3VycmVudCkge1xuXHRcdFx0XHRkKCdDbGVhbmluZyB1cCBpbnB1dCBtYXNrIGluc3RhbmNlJyk7XG5cdFx0XHRcdG1hc2tJbnN0YW5jZS5jdXJyZW50LnJlbW92ZSgpO1xuXHRcdFx0XHRtYXNrSW5zdGFuY2UuY3VycmVudCA9IG51bGw7XG5cdFx0XHR9XG5cdFx0fTtcblx0fSwgW2N1cnJlbmN5Q29kZSwgcHJlZml4LCBzaG93UHJlZml4LCB3aG9sZU51bWJlcl0pO1xuXG5cdGNvbnN0IHNldFZhbCA9IHVzZUNhbGxiYWNrPFNldFZhbHVlRm4+KFxuXHRcdCh2PzogTW9uZXkpID0+IHtcblx0XHRcdGlmIChpbnB1dEVsZW1lbnQuY3VycmVudCkge1xuXHRcdFx0XHRkKCdWYWx1ZSBpcyBiZWluZyBzZXQ6Jywgdik7XG5cdFx0XHRcdGlmICh2KSB7XG5cdFx0XHRcdFx0aW5wdXRFbGVtZW50LmN1cnJlbnQudmFsdWUgPSB2LnRvRGVjaW1hbCgpLnRvU3RyaW5nKCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0aW5wdXRFbGVtZW50LmN1cnJlbnQudmFsdWUgPSAnJztcblx0XHRcdFx0fVxuXHRcdFx0XHRvblNldCAmJiBvblNldCh2KTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdFtvblNldF0sXG5cdCk7XG5cblx0Ly8gSWYgd2UgY2hhbmdlIHRoZSB2YWx1ZSBwcm9wIHdlIG5lZWQgdG8gc3luYyB0aGUgRE9NIHZhbHVlIHRvIGRpc3BsYXkgdGhlIG5ldyB2YWx1ZVxuXHR1c2VFZmZlY3QoKCkgPT4ge1xuXHRcdGNvbnN0IHdoYXRDdXJyZW50bHlJc0Rpc3BsYXllZCA9IGlucHV0RWxlbWVudC5jdXJyZW50Py52YWx1ZSB8fCAnJzsgLy8gc3RyaW5nIHwgdW5kZWZcblx0XHRjb25zdCB3aGF0V2VBcmVTZXR0aW5nID0gdmFsdWUgPyB2YWx1ZS50b1N0cmluZygpIDogJyc7IC8vIG1vbmV5IHwgdW5kZWZcblxuXHRcdGlmICh3aGF0Q3VycmVudGx5SXNEaXNwbGF5ZWQgIT09IHdoYXRXZUFyZVNldHRpbmcpIHtcblx0XHRcdHNldFZhbCh2YWx1ZSk7XG5cdFx0fVxuXHR9LCBbc2V0VmFsLCB2YWx1ZV0pO1xuXG5cdHJldHVybiBbaW5wdXRFbGVtZW50LCBzZXRWYWxdO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCwge0NoaWxkcmVufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3VzZVN0ZXB9IGZyb20gJy4vdXNlU3RlcCc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLnN0ZXAuRm9ybVN0ZXAnKTtcblxuaW50ZXJmYWNlIEZvcm1TdGVwUHJvcHMge1xuXHRjaGlsZHJlbjogSlNYLkVsZW1lbnQ7XG5cdHRpdGxlPzogc3RyaW5nO1xuXHRzdGVwS2V5OiBzdHJpbmc7XG5cdGhpZGRlbj86IGJvb2xlYW4gfCAoKHN0YXRlOiBhbnksIHN0ZXA6IG51bWJlcikgPT4gYm9vbGVhbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBGb3JtU3RlcChwcm9wczogRm9ybVN0ZXBQcm9wcykge1xuXHRjb25zdCBbc3RhdGUsIGhhbmRsZVN1Ym1pdF0gPSB1c2VTdGVwKCk7XG5cdGNvbnN0IHZhbHVlcyA9IHN0YXRlW3Byb3BzLnN0ZXBLZXldIHx8IHt9O1xuXG5cdGNvbnN0IGZvcm0gPSBSZWFjdC5jbG9uZUVsZW1lbnQoQ2hpbGRyZW4ub25seShwcm9wcy5jaGlsZHJlbiksIHtcblx0XHR2YWx1ZXM6IHZhbHVlcyB8fCB7fSxcblx0XHRvblN1Ym1pdDogKHZhbHM6IHVua25vd24pID0+IGhhbmRsZVN1Ym1pdCh2YWxzLCBwcm9wcy5zdGVwS2V5KSxcblx0fSk7XG5cblx0cmV0dXJuIChcblx0XHQ8PlxuXHRcdFx0PGgxPntwcm9wcy50aXRsZX08L2gxPlxuXHRcdFx0e2Zvcm19XG5cdFx0PC8+XG5cdCk7XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuc3RlcC5TdGVwJyk7XG5cbmludGVyZmFjZSBTdGVwUHJvcHMge1xuXHRjaGlsZHJlbj86IEpTWC5FbGVtZW50IHwgSlNYLkVsZW1lbnRbXTtcblx0dGl0bGU/OiBzdHJpbmc7XG5cdHN0ZXA/OiBudW1iZXI7XG5cdGhpZGRlbj86IGJvb2xlYW4gfCAoKHN0YXRlOiBhbnksIHN0ZXA6IG51bWJlcikgPT4gYm9vbGVhbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTdGVwKHByb3BzOiBTdGVwUHJvcHMpIHtcblx0cmV0dXJuIChcblx0XHQ8PlxuXHRcdFx0PGgxPntwcm9wcy50aXRsZX08L2gxPlxuXHRcdFx0e3Byb3BzLmNoaWxkcmVufVxuXHRcdDwvPlxuXHQpO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCwge3VzZVN0YXRlLCBDaGlsZHJlbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtQcm9tcHR9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHtHcmlkLCBTdGVwIGFzIFNlbWFudGljU3RlcH0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHtGb3JtU3RlcH0gZnJvbSAnLi9Gb3JtU3RlcCc7XG5pbXBvcnQge1N0ZXB9IGZyb20gJy4vU3RlcCc7XG5pbXBvcnQge1N0ZXBDb250ZXh0fSBmcm9tICcuL3N0ZXBDb250ZXh0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuc3RlcC5TdGVwUHJvdmlkZXInKTtcblxuaW50ZXJmYWNlIFN0ZXBQcm92aWRlclByb3BzIHtcblx0Y2hpbGRyZW46IChKU1guRWxlbWVudCB8IG51bGwgfCBmYWxzZSlbXTtcblx0b25TdWJtaXQ6ICh2YWx1ZXM6IGFueSkgPT4gdm9pZDtcblx0dmFsdWVzPzogYW55O1xuXHR3YXJuT25SZXJvdXRlPzogYm9vbGVhbjtcblx0dmVydGljYWw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gU3RlcFByb3ZpZGVyKHByb3BzOiBTdGVwUHJvdmlkZXJQcm9wcykge1xuXHRjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IHVzZVN0YXRlKHByb3BzLnZhbHVlcyB8fCB7fSk7XG5cdGNvbnN0IFtjdXJyZW50U3RlcCwgc2V0Q3VycmVudFN0ZXBdID0gdXNlU3RhdGUoMCk7XG5cdGNvbnN0IFtpc1N1Ym1pdHRpbmcsIHNldElzU3VibWl0dGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cblx0Y29uc3QgdGl0bGVzOiBzdHJpbmdbXSA9IFtdO1xuXHRjb25zdCBjaGlsZHJlbjogSlNYLkVsZW1lbnRbXSA9IFtdO1xuXG5cdENoaWxkcmVuLmZvckVhY2gocHJvcHM/LmNoaWxkcmVuLCAoY2hpbGQsIGluZGV4KSA9PiB7XG5cdFx0aWYgKCFjaGlsZCkgcmV0dXJuO1xuXHRcdGlmIChjaGlsZD8udHlwZSAhPT0gU3RlcCAmJiBjaGlsZD8udHlwZSAhPT0gRm9ybVN0ZXApIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgQ2FuIG5vdCByZW5kZXIgJyR7Y2hpbGQ/LnR5cGV9JyBhcyBjaGlsZCBvZiAnU3RlcFByb3ZpZGVyJy4gTXVzdCBiZSBvZiB0eXBlICdTdGVwJyBvciAnRm9ybVN0ZXAnYCk7XG5cdFx0fVxuXHRcdGlmIChjaGlsZC5wcm9wcy5oaWRkZW4pIHtcblx0XHRcdGlmICh0eXBlb2YgY2hpbGQucHJvcHMuaGlkZGVuID09PSAnZnVuY3Rpb24nICYmICFjaGlsZC5wcm9wcy5oaWRkZW4oc3RhdGUsIGluZGV4KSkge1xuXHRcdFx0XHR0aXRsZXMucHVzaChjaGlsZD8ucHJvcHM/LnRpdGxlIHx8ICcnKTtcblx0XHRcdFx0Y2hpbGRyZW4ucHVzaChSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGQsIHtzdGVwOiBpbmRleCwga2V5OiBjaGlsZD8ua2V5IHx8IGluZGV4LnRvU3RyaW5nKCl9KSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRpdGxlcy5wdXNoKGNoaWxkPy5wcm9wcz8udGl0bGUgfHwgJycpO1xuXHRcdFx0Y2hpbGRyZW4ucHVzaChSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGQsIHtzdGVwOiBpbmRleCwga2V5OiBjaGlsZD8ua2V5IHx8IGluZGV4LnRvU3RyaW5nKCl9KSk7XG5cdFx0fVxuXHR9KTtcblxuXHRjb25zdCBvbk5hdmlnYXRlID0gKCkgPT4gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBlbmQgdGhpcyBwcm9jZXNzPyBBbGwgdGhlIGVudGVyZWQgZGF0YSB3aWxsIGJlIGxvc3QhJztcblxuXHRjb25zdCBoYW5kbGVTdWJtaXQgPSAodmFsdWVzOiBhbnksIHN0ZXBLZXk6IHN0cmluZykgPT4ge1xuXHRcdGlmIChjdXJyZW50U3RlcCArIDEgPT09IGNoaWxkcmVuPy5sZW5ndGgpIHtcblx0XHRcdHNldFN0YXRlKHsuLi5zdGF0ZSwgW3N0ZXBLZXldOiB2YWx1ZXN9KTtcblx0XHRcdHNldElzU3VibWl0dGluZyh0cnVlKTtcblx0XHRcdHByb3BzLm9uU3VibWl0KHsuLi5zdGF0ZSwgW3N0ZXBLZXldOiB2YWx1ZXN9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c2V0U3RhdGUoey4uLnN0YXRlLCBbc3RlcEtleV06IHZhbHVlc30pO1xuXHRcdFx0c2V0Q3VycmVudFN0ZXAoY3VycmVudFN0ZXAgKyAxKTtcblx0XHR9XG5cdH07XG5cblx0aWYgKHByb3BzLnZlcnRpY2FsKSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxTdGVwQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17e3N0YXRlLCBoYW5kbGVTdWJtaXR9fT5cblx0XHRcdFx0e3Byb3BzLndhcm5PblJlcm91dGUgJiYgPFByb21wdCBtZXNzYWdlPXtvbk5hdmlnYXRlfSB3aGVuPXshaXNTdWJtaXR0aW5nfSAvPn1cblx0XHRcdFx0PEdyaWQgZGl2aWRlZCBzdGFja2FibGU+XG5cdFx0XHRcdFx0PEdyaWQuUm93PlxuXHRcdFx0XHRcdFx0PEdyaWQuQ29sdW1uIHdpZHRoPXszfT5cblx0XHRcdFx0XHRcdFx0PFNlbWFudGljU3RlcC5Hcm91cCBvcmRlcmVkIHNpemU9XCJtaW5pXCIgdmVydGljYWwgd2lkdGhzPXsxfT5cblx0XHRcdFx0XHRcdFx0XHR7dGl0bGVzPy5tYXAoKHRpdGxlLCBpbmRleCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0PFNlbWFudGljU3RlcFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGtleT17aW5kZXgudG9TdHJpbmcoKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb21wbGV0ZWQ9e2luZGV4IDwgT2JqZWN0LmtleXMoc3RhdGUpLmxlbmd0aH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhY3RpdmU9e2N1cnJlbnRTdGVwID09PSBpbmRleH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvbkNsaWNrPXsoKSA9PiBzZXRDdXJyZW50U3RlcChpbmRleCl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e2luZGV4ID4gT2JqZWN0LmtleXMoc3RhdGUpLmxlbmd0aH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxTZW1hbnRpY1N0ZXAuQ29udGVudD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxTZW1hbnRpY1N0ZXAuVGl0bGU+e3RpdGxlfTwvU2VtYW50aWNTdGVwLlRpdGxlPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvU2VtYW50aWNTdGVwLkNvbnRlbnQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvU2VtYW50aWNTdGVwPlxuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHR9KX1cblx0XHRcdFx0XHRcdFx0PC9TZW1hbnRpY1N0ZXAuR3JvdXA+XG5cdFx0XHRcdFx0XHQ8L0dyaWQuQ29sdW1uPlxuXHRcdFx0XHRcdFx0PEdyaWQuQ29sdW1uIHdpZHRoPXsxM30+e2NoaWxkcmVuPy5bY3VycmVudFN0ZXBdfTwvR3JpZC5Db2x1bW4+XG5cdFx0XHRcdFx0PC9HcmlkLlJvdz5cblx0XHRcdFx0PC9HcmlkPlxuXHRcdFx0PC9TdGVwQ29udGV4dC5Qcm92aWRlcj5cblx0XHQpO1xuXHR9XG5cblx0cmV0dXJuIChcblx0XHQ8U3RlcENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3tzdGF0ZSwgaGFuZGxlU3VibWl0fX0+XG5cdFx0XHR7cHJvcHMud2Fybk9uUmVyb3V0ZSAmJiA8UHJvbXB0IG1lc3NhZ2U9e29uTmF2aWdhdGV9IC8+fVxuXHRcdFx0PFNlbWFudGljU3RlcC5Hcm91cCBvcmRlcmVkIHNpemU9XCJtaW5pXCI+XG5cdFx0XHRcdHt0aXRsZXM/Lm1hcCgodGl0bGUsIGluZGV4KSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdDxTZW1hbnRpY1N0ZXBcblx0XHRcdFx0XHRcdFx0a2V5PXtpbmRleC50b1N0cmluZygpfVxuXHRcdFx0XHRcdFx0XHRjb21wbGV0ZWQ9e2luZGV4IDwgT2JqZWN0LmtleXMoc3RhdGUpLmxlbmd0aH1cblx0XHRcdFx0XHRcdFx0YWN0aXZlPXtjdXJyZW50U3RlcCA9PT0gaW5kZXh9XG5cdFx0XHRcdFx0XHRcdG9uQ2xpY2s9eygpID0+IHNldEN1cnJlbnRTdGVwKGluZGV4KX1cblx0XHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e2luZGV4ID4gT2JqZWN0LmtleXMoc3RhdGUpLmxlbmd0aH1cblx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0PFNlbWFudGljU3RlcC5Db250ZW50PlxuXHRcdFx0XHRcdFx0XHRcdDxTZW1hbnRpY1N0ZXAuVGl0bGU+e3RpdGxlfTwvU2VtYW50aWNTdGVwLlRpdGxlPlxuXHRcdFx0XHRcdFx0XHQ8L1NlbWFudGljU3RlcC5Db250ZW50PlxuXHRcdFx0XHRcdFx0PC9TZW1hbnRpY1N0ZXA+XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSl9XG5cdFx0XHQ8L1NlbWFudGljU3RlcC5Hcm91cD5cblx0XHRcdHtjaGlsZHJlbj8uW2N1cnJlbnRTdGVwXX1cblx0XHQ8L1N0ZXBDb250ZXh0LlByb3ZpZGVyPlxuXHQpO1xufVxuIiwiZXhwb3J0IHtTdGVwfSBmcm9tICcuL1N0ZXAnO1xuZXhwb3J0IHt1c2VTdGVwfSBmcm9tICcuL3VzZVN0ZXAnO1xuZXhwb3J0IHtGb3JtU3RlcH0gZnJvbSAnLi9Gb3JtU3RlcCc7XG5leHBvcnQge1N0ZXBQcm92aWRlcn0gZnJvbSAnLi9TdGVwUHJvdmlkZXInO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGNvbnN0IFN0ZXBDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dDx7aGFuZGxlU3VibWl0OiAodmFsdWVzOiB1bmtub3duLCBzdGVwS2V5OiBzdHJpbmcpID0+IHZvaWQ7IHN0YXRlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+fT4oe1xuXHRoYW5kbGVTdWJtaXQ6ICgpID0+IHt9LFxuXHRzdGF0ZToge30sXG59KTtcbiIsImltcG9ydCB7dXNlQ29udGV4dH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtTdGVwQ29udGV4dH0gZnJvbSAnLi9zdGVwQ29udGV4dCc7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTdGVwKCk6IFthbnksICh2YWx1ZXM6IHVua25vd24sIHN0ZXBLZXk6IHN0cmluZykgPT4gdm9pZF0ge1xuXHRjb25zdCB7c3RhdGUsIGhhbmRsZVN1Ym1pdH0gPSB1c2VDb250ZXh0KFN0ZXBDb250ZXh0KTtcblxuXHRyZXR1cm4gW3N0YXRlLCBoYW5kbGVTdWJtaXRdO1xufVxuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1syXS51c2VbMl0hLi9zdHlsZXMuY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMl0udXNlWzJdIS4vc3R5bGVzLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMl0udXNlWzJdIS4vc3R5bGVzLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdLnVzZVsyXSEuL3N0eWxlcy5jc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5ydy1kYXRldGltZXBpY2tlciA+IGlucHV0IHtcXG5cXHRib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcXG59XFxuXFxuLnJ3LWRhdGV0aW1lcGlja2VyIC5ydy1jYWxlbmRhci1ncmlkLnJ3LW5hdi12aWV3IC5ydy1idG4ge1xcblxcdHBhZGRpbmc6IDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmRhdGVUaW1lUGlja2VyQXV0b1dpZHRoIHtcXG5cXHR3aWR0aDogYXV0bztcXG5cXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG59XFxuXFxuLmRhdGVUaW1lUGlja2VyQXV0b1dpZHRoID4gaW5wdXQge1xcblxcdHdpZHRoOiBhdXRvO1xcbn1cXG5cXG4ucmVhY3QtZGF0ZXBpY2tlci13cmFwcGVyIHtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlYWN0LWRhdGVwaWNrZXJfX2lucHV0LWNvbnRhaW5lciB7XFxuXFx0ZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWFjdC1kYXRlcGlja2VyLXBvcHBlciB7XFxuXFx0ei1pbmRleDogNSAhaW1wb3J0YW50O1xcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9kYXRlL0RhdGVQaWNrZXIvc3R5bGVzLmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTtDQUNDLHVCQUF1QjtBQUN4Qjs7QUFFQTtDQUNDLHFCQUFxQjtBQUN0Qjs7QUFFQTtDQUNDLFdBQVc7Q0FDWCxvQkFBb0I7QUFDckI7O0FBRUE7Q0FDQyxXQUFXO0FBQ1o7O0FBRUE7Q0FDQyxXQUFXO0NBQ1gsMEJBQTBCO0FBQzNCOztBQUVBO0NBQ0MsMEJBQTBCO0FBQzNCOztBQUVBO0NBQ0MscUJBQXFCO0FBQ3RCXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIjpnbG9iYWwoLnJ3LWRhdGV0aW1lcGlja2VyKSA+IGlucHV0IHtcXG5cXHRib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcXG59XFxuXFxuOmdsb2JhbCgucnctZGF0ZXRpbWVwaWNrZXIpIDpnbG9iYWwoLnJ3LWNhbGVuZGFyLWdyaWQucnctbmF2LXZpZXcpIDpnbG9iYWwoLnJ3LWJ0bikge1xcblxcdHBhZGRpbmc6IDAgIWltcG9ydGFudDtcXG59XFxuXFxuOmdsb2JhbCguZGF0ZVRpbWVQaWNrZXJBdXRvV2lkdGgpIHtcXG5cXHR3aWR0aDogYXV0bztcXG5cXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG59XFxuXFxuOmdsb2JhbCguZGF0ZVRpbWVQaWNrZXJBdXRvV2lkdGgpID4gaW5wdXQge1xcblxcdHdpZHRoOiBhdXRvO1xcbn1cXG5cXG46Z2xvYmFsKC5yZWFjdC1kYXRlcGlja2VyLXdyYXBwZXIpIHtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDtcXG59XFxuXFxuOmdsb2JhbCgucmVhY3QtZGF0ZXBpY2tlcl9faW5wdXQtY29udGFpbmVyKSB7XFxuXFx0ZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7XFxufVxcblxcbjpnbG9iYWwoLnJlYWN0LWRhdGVwaWNrZXItcG9wcGVyKSB7XFxuXFx0ei1pbmRleDogNSAhaW1wb3J0YW50O1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLmxvY2FscyA9IHt9O1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5yY2NzIHtcXG5cXHRtYXJnaW46IDAgIWltcG9ydGFudDtcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vaW5wdXRzL0NyZWRpdENhcmRJbnB1dC9zdHlsZXMuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBO0NBQ0Msb0JBQW9CO0FBQ3JCXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIjpnbG9iYWwgLnJjY3Mge1xcblxcdG1hcmdpbjogMCAhaW1wb3J0YW50O1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLmxvY2FscyA9IHt9O1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTsgLy8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xuXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gXCJcIjtcbiAgICAgIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2YgaXRlbVs1XSAhPT0gXCJ1bmRlZmluZWRcIjtcblxuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KGl0ZW1bNF0sIFwiKSB7XCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKTtcbiAgICAgIH1cblxuICAgICAgY29udGVudCArPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0pO1xuXG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pLmpvaW4oXCJcIik7XG4gIH07IC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG5cblxuICBsaXN0LmkgPSBmdW5jdGlvbiBpKG1vZHVsZXMsIG1lZGlhLCBkZWR1cGUsIHN1cHBvcnRzLCBsYXllcikge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgdW5kZWZpbmVkXV07XG4gICAgfVxuXG4gICAgdmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcblxuICAgIGlmIChkZWR1cGUpIHtcbiAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCB0aGlzLmxlbmd0aDsgX2krKykge1xuICAgICAgICB2YXIgaWQgPSB0aGlzW19pXVswXTtcblxuICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IG1vZHVsZXMubGVuZ3RoOyBfaTIrKykge1xuICAgICAgdmFyIGl0ZW0gPSBbXS5jb25jYXQobW9kdWxlc1tfaTJdKTtcblxuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGxheWVyICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaXRlbVs1XSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgIGl0ZW1bNV0gPSBsYXllcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNV0gPSBsYXllcjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAobWVkaWEpIHtcbiAgICAgICAgaWYgKCFpdGVtWzJdKSB7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoc3VwcG9ydHMpIHtcbiAgICAgICAgaWYgKCFpdGVtWzRdKSB7XG4gICAgICAgICAgaXRlbVs0XSA9IFwiXCIuY29uY2F0KHN1cHBvcnRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNF0gPSBzdXBwb3J0cztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsaXN0LnB1c2goaXRlbSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBsaXN0O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlbSkge1xuICB2YXIgY29udGVudCA9IGl0ZW1bMV07XG4gIHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcblxuICBpZiAoIWNzc01hcHBpbmcpIHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYnRvYSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgdmFyIGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGNzc01hcHBpbmcpKSkpO1xuICAgIHZhciBkYXRhID0gXCJzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxcIi5jb25jYXQoYmFzZTY0KTtcbiAgICB2YXIgc291cmNlTWFwcGluZyA9IFwiLyojIFwiLmNvbmNhdChkYXRhLCBcIiAqL1wiKTtcbiAgICB2YXIgc291cmNlVVJMcyA9IGNzc01hcHBpbmcuc291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgcmV0dXJuIFwiLyojIHNvdXJjZVVSTD1cIi5jb25jYXQoY3NzTWFwcGluZy5zb3VyY2VSb290IHx8IFwiXCIpLmNvbmNhdChzb3VyY2UsIFwiICovXCIpO1xuICAgIH0pO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KHNvdXJjZVVSTHMpLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oXCJcXG5cIik7XG4gIH1cblxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgc3R5bGVzSW5ET00gPSBbXTtcblxuZnVuY3Rpb24gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcikge1xuICB2YXIgcmVzdWx0ID0gLTE7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXNJbkRPTS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzdHlsZXNJbkRPTVtpXS5pZGVudGlmaWVyID09PSBpZGVudGlmaWVyKSB7XG4gICAgICByZXN1bHQgPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpIHtcbiAgdmFyIGlkQ291bnRNYXAgPSB7fTtcbiAgdmFyIGlkZW50aWZpZXJzID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldO1xuICAgIHZhciBpZCA9IG9wdGlvbnMuYmFzZSA/IGl0ZW1bMF0gKyBvcHRpb25zLmJhc2UgOiBpdGVtWzBdO1xuICAgIHZhciBjb3VudCA9IGlkQ291bnRNYXBbaWRdIHx8IDA7XG4gICAgdmFyIGlkZW50aWZpZXIgPSBcIlwiLmNvbmNhdChpZCwgXCIgXCIpLmNvbmNhdChjb3VudCk7XG4gICAgaWRDb3VudE1hcFtpZF0gPSBjb3VudCArIDE7XG4gICAgdmFyIGluZGV4QnlJZGVudGlmaWVyID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgdmFyIG9iaiA9IHtcbiAgICAgIGNzczogaXRlbVsxXSxcbiAgICAgIG1lZGlhOiBpdGVtWzJdLFxuICAgICAgc291cmNlTWFwOiBpdGVtWzNdLFxuICAgICAgc3VwcG9ydHM6IGl0ZW1bNF0sXG4gICAgICBsYXllcjogaXRlbVs1XVxuICAgIH07XG5cbiAgICBpZiAoaW5kZXhCeUlkZW50aWZpZXIgIT09IC0xKSB7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0ucmVmZXJlbmNlcysrO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnVwZGF0ZXIob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHVwZGF0ZXIgPSBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKTtcbiAgICAgIG9wdGlvbnMuYnlJbmRleCA9IGk7XG4gICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoaSwgMCwge1xuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB1cGRhdGVyOiB1cGRhdGVyLFxuICAgICAgICByZWZlcmVuY2VzOiAxXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50aWZpZXIpO1xuICB9XG5cbiAgcmV0dXJuIGlkZW50aWZpZXJzO1xufVxuXG5mdW5jdGlvbiBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBhcGkgPSBvcHRpb25zLmRvbUFQSShvcHRpb25zKTtcbiAgYXBpLnVwZGF0ZShvYmopO1xuXG4gIHZhciB1cGRhdGVyID0gZnVuY3Rpb24gdXBkYXRlcihuZXdPYmopIHtcbiAgICBpZiAobmV3T2JqKSB7XG4gICAgICBpZiAobmV3T2JqLmNzcyA9PT0gb2JqLmNzcyAmJiBuZXdPYmoubWVkaWEgPT09IG9iai5tZWRpYSAmJiBuZXdPYmouc291cmNlTWFwID09PSBvYmouc291cmNlTWFwICYmIG5ld09iai5zdXBwb3J0cyA9PT0gb2JqLnN1cHBvcnRzICYmIG5ld09iai5sYXllciA9PT0gb2JqLmxheWVyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgYXBpLnVwZGF0ZShvYmogPSBuZXdPYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVtb3ZlKCk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiB1cGRhdGVyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChsaXN0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBsaXN0ID0gbGlzdCB8fCBbXTtcbiAgdmFyIGxhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZShuZXdMaXN0KSB7XG4gICAgbmV3TGlzdCA9IG5ld0xpc3QgfHwgW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGlkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbaV07XG4gICAgICB2YXIgaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4XS5yZWZlcmVuY2VzLS07XG4gICAgfVxuXG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX2lkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbX2ldO1xuXG4gICAgICB2YXIgX2luZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoX2lkZW50aWZpZXIpO1xuXG4gICAgICBpZiAoc3R5bGVzSW5ET01bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRE9NW19pbmRleF0udXBkYXRlcigpO1xuXG4gICAgICAgIHN0eWxlc0luRE9NLnNwbGljZShfaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxhc3RJZGVudGlmaWVycyA9IG5ld0xhc3RJZGVudGlmaWVycztcbiAgfTtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBtZW1vID0ge307XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cblxuZnVuY3Rpb24gZ2V0VGFyZ2V0KHRhcmdldCkge1xuICBpZiAodHlwZW9mIG1lbW9bdGFyZ2V0XSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHZhciBzdHlsZVRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0KTsgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcblxuICAgIGlmICh3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQgJiYgc3R5bGVUYXJnZXQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgYWNjZXNzIHRvIGlmcmFtZSBpcyBibG9ja2VkXG4gICAgICAgIC8vIGR1ZSB0byBjcm9zcy1vcmlnaW4gcmVzdHJpY3Rpb25zXG4gICAgICAgIHN0eWxlVGFyZ2V0ID0gc3R5bGVUYXJnZXQuY29udGVudERvY3VtZW50LmhlYWQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIHN0eWxlVGFyZ2V0ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBtZW1vW3RhcmdldF0gPSBzdHlsZVRhcmdldDtcbiAgfVxuXG4gIHJldHVybiBtZW1vW3RhcmdldF07XG59XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cblxuXG5mdW5jdGlvbiBpbnNlcnRCeVNlbGVjdG9yKGluc2VydCwgc3R5bGUpIHtcbiAgdmFyIHRhcmdldCA9IGdldFRhcmdldChpbnNlcnQpO1xuXG4gIGlmICghdGFyZ2V0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZmluZCBhIHN0eWxlIHRhcmdldC4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHRoZSB2YWx1ZSBmb3IgdGhlICdpbnNlcnQnIHBhcmFtZXRlciBpcyBpbnZhbGlkLlwiKTtcbiAgfVxuXG4gIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0QnlTZWxlY3RvcjsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykge1xuICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgb3B0aW9ucy5zZXRBdHRyaWJ1dGVzKGVsZW1lbnQsIG9wdGlvbnMuYXR0cmlidXRlcyk7XG4gIG9wdGlvbnMuaW5zZXJ0KGVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG4gIHJldHVybiBlbGVtZW50O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydFN0eWxlRWxlbWVudDsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMoc3R5bGVFbGVtZW50KSB7XG4gIHZhciBub25jZSA9IHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gXCJ1bmRlZmluZWRcIiA/IF9fd2VicGFja19ub25jZV9fIDogbnVsbDtcblxuICBpZiAobm9uY2UpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgbm9uY2UpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGFwcGx5KHN0eWxlRWxlbWVudCwgb3B0aW9ucywgb2JqKSB7XG4gIHZhciBjc3MgPSBcIlwiO1xuXG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChvYmouc3VwcG9ydHMsIFwiKSB7XCIpO1xuICB9XG5cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIkBtZWRpYSBcIi5jb25jYXQob2JqLm1lZGlhLCBcIiB7XCIpO1xuICB9XG5cbiAgdmFyIG5lZWRMYXllciA9IHR5cGVvZiBvYmoubGF5ZXIgIT09IFwidW5kZWZpbmVkXCI7XG5cbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIkBsYXllclwiLmNvbmNhdChvYmoubGF5ZXIubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChvYmoubGF5ZXIpIDogXCJcIiwgXCIge1wiKTtcbiAgfVxuXG4gIGNzcyArPSBvYmouY3NzO1xuXG4gIGlmIChuZWVkTGF5ZXIpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cblxuICBpZiAob2JqLm1lZGlhKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG5cbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuXG4gIHZhciBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwO1xuXG4gIGlmIChzb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBjc3MgKz0gXCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LFwiLmNvbmNhdChidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpLCBcIiAqL1wiKTtcbiAgfSAvLyBGb3Igb2xkIElFXG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuXG5cbiAgb3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybShjc3MsIHN0eWxlRWxlbWVudCwgb3B0aW9ucy5vcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCkge1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgaWZcbiAgaWYgKHN0eWxlRWxlbWVudC5wYXJlbnROb2RlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KTtcbn1cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5cbmZ1bmN0aW9uIGRvbUFQSShvcHRpb25zKSB7XG4gIHZhciBzdHlsZUVsZW1lbnQgPSBvcHRpb25zLmluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKTtcbiAgcmV0dXJuIHtcbiAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShvYmopIHtcbiAgICAgIGFwcGx5KHN0eWxlRWxlbWVudCwgb3B0aW9ucywgb2JqKTtcbiAgICB9LFxuICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAgICAgcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCk7XG4gICAgfVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRvbUFQSTsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBzdHlsZVRhZ1RyYW5zZm9ybShjc3MsIHN0eWxlRWxlbWVudCkge1xuICBpZiAoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZUVsZW1lbnQuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCkge1xuICAgICAgc3R5bGVFbGVtZW50LnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKTtcbiAgICB9XG5cbiAgICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHlsZVRhZ1RyYW5zZm9ybTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGpzLWpvZGEvY29yZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAdGh4L2RhdGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHRoeC9tb25leVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjcmVkaXQtY2FyZC10eXBlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImRlYnVnXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50ZW1pdHRlcjNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZmxhdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJmb3JtaWtcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaW5wdXRtYXNrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImpzLW1vbmV5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImxvZGFzaC9nZXRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibG9kYXNoL3Byb3BlcnR5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImxvZGFzaC91bmlxXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImx1aG5cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtY3JlZGl0LWNhcmRzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWNyZWRpdC1jYXJkcy9lcy9zdHlsZXMtY29tcGlsZWQuY3NzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWRhdGVwaWNrZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3Qtcm91dGVyLWRvbVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC10YWJsZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtZGV2LXJ1bnRpbWVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwic2VtYW50aWMtdWktcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwic29jaWFsLWluc3VyYW5jZS1udW1iZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidXNlLWRlZXAtY29tcGFyZS1lZmZlY3RcIik7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHRpZDogbW9kdWxlSWQsXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIi8vIERhdGVcbmV4cG9ydCB0eXBlIHtEYXRlUGlja2VyfSBmcm9tICcuL2RhdGUvRGF0ZVBpY2tlcic7XG5leHBvcnQge0xvY2FsRGF0ZVBpY2tlcn0gZnJvbSAnLi9kYXRlL0xvY2FsRGF0ZVBpY2tlcic7XG5leHBvcnQgdHlwZSB7TG9jYWxEYXRlUGlja2VyUHJvcHN9IGZyb20gJy4vZGF0ZS9Mb2NhbERhdGVQaWNrZXInO1xuZXhwb3J0IHtMb2NhbE1vbnRoU2VsZWN0fSBmcm9tICcuL2RhdGUvTG9jYWxNb250aFNlbGVjdCc7XG5leHBvcnQgdHlwZSB7TG9jYWxNb250aFNlbGVjdFByb3BzfSBmcm9tICcuL2RhdGUvTG9jYWxNb250aFNlbGVjdCc7XG5leHBvcnQge0xvY2FsVGltZVBpY2tlcn0gZnJvbSAnLi9kYXRlL0xvY2FsVGltZVBpY2tlcic7XG5leHBvcnQgdHlwZSB7TG9jYWxUaW1lUGlja2VyUHJvcHN9IGZyb20gJy4vZGF0ZS9Mb2NhbFRpbWVQaWNrZXInO1xuZXhwb3J0IHtNb250aERheVBpY2tlcn0gZnJvbSAnLi9kYXRlL01vbnRoRGF5UGlja2VyJztcbmV4cG9ydCB0eXBlIHtNb250aERheVBpY2tlclByb3BzfSBmcm9tICcuL2RhdGUvTW9udGhEYXlQaWNrZXInO1xuZXhwb3J0IHtNb250aFllYXJQaWNrZXJ9IGZyb20gJy4vZGF0ZS9Nb250aFllYXJQaWNrZXInO1xuZXhwb3J0IHR5cGUge01vbnRoWWVhclBpY2tlclByb3BzfSBmcm9tICcuL2RhdGUvTW9udGhZZWFyUGlja2VyJztcbmV4cG9ydCB7WWVhclNlbGVjdH0gZnJvbSAnLi9kYXRlL1llYXJTZWxlY3QnO1xuZXhwb3J0IHR5cGUge1llYXJTZWxlY3RQcm9wc30gZnJvbSAnLi9kYXRlL1llYXJTZWxlY3QnO1xuXG4vLyBGb3JtXG5leHBvcnQge3VzZVRGb3JtLCBURm9ybX0gZnJvbSAnLi9mb3JtL1RGb3JtJztcbmV4cG9ydCB0eXBlIHtURm9ybVByb3BzfSBmcm9tICcuL2Zvcm0vVEZvcm0nO1xuXG4vLyBJbnB1dHNcbmV4cG9ydCB7TWFza2VkSW5wdXR9IGZyb20gJy4vaW5wdXRzL01hc2tlZElucHV0JztcbmV4cG9ydCB0eXBlIHtNYXNrZWRJbnB1dFByb3BzfSBmcm9tICcuL2lucHV0cy9NYXNrZWRJbnB1dCc7XG5leHBvcnQge1JhZGlvR3JvdXB9IGZyb20gJy4vaW5wdXRzL1JhZGlvR3JvdXAnO1xuZXhwb3J0IHR5cGUge1JhZGlvR3JvdXBQcm9wc30gZnJvbSAnLi9pbnB1dHMvUmFkaW9Hcm91cCc7XG5leHBvcnQge1NjcmlwdGVsLCB3aXRoU2NyaXB0ZWx9IGZyb20gJy4vaW5wdXRzL1NjcmlwdGVsJztcbmV4cG9ydCB0eXBlIHtTY3JpcHRlbFByb3BzLCBTY3JpcHRlbE1lc3NhZ2VDbGFzcywgU2NyaXB0ZWxQZW5TdHlsZX0gZnJvbSAnLi9pbnB1dHMvU2NyaXB0ZWwnO1xuZXhwb3J0IHtTY3JpcHRlbElucHV0fSBmcm9tICcuL2lucHV0cy9TY3JpcHRlbElucHV0JztcbmV4cG9ydCB0eXBlIHtTY3JpcHRlbElucHV0UHJvcHN9IGZyb20gJy4vaW5wdXRzL1NjcmlwdGVsSW5wdXQnO1xuZXhwb3J0IHtQaG9uZUlucHV0fSBmcm9tICcuL2lucHV0cy9QaG9uZUlucHV0JztcbmV4cG9ydCB0eXBlIHtQaG9uZUlucHV0UHJvcHN9IGZyb20gJy4vaW5wdXRzL1Bob25lSW5wdXQnO1xuZXhwb3J0IHtDcmVkaXRDYXJkSW5wdXR9IGZyb20gJy4vaW5wdXRzL0NyZWRpdENhcmRJbnB1dCc7XG5leHBvcnQgdHlwZSB7Q3JlZGl0Q2FyZElucHV0UHJvcHN9IGZyb20gJy4vaW5wdXRzL0NyZWRpdENhcmRJbnB1dCc7XG5leHBvcnQge1NpbklucHV0fSBmcm9tICcuL2lucHV0cy9TaW5JbnB1dCc7XG5leHBvcnQgdHlwZSB7U2luSW5wdXRQcm9wc30gZnJvbSAnLi9pbnB1dHMvU2luSW5wdXQnO1xuXG4vLyBUYWJsZVxuZXhwb3J0IHthZGRSb3dPblRhYiwgTW9uZXlFZGl0Q2VsbCwgU3RyaW5nRWRpdENlbGwsIE1vbmV5U3VtRm9vdGVyLCBNb25leUNlbGwsIFRhYmxlSW5wdXQsIEhvdmVyQ2VsbCwgRHJvcGRvd25DZWxsfSBmcm9tICcuL2lucHV0cy9UYWJsZUlucHV0JztcbmV4cG9ydCB0eXBlIHtBZGRSb3dPblRhYklmfSBmcm9tICcuL2lucHV0cy9UYWJsZUlucHV0JztcblxuLy8gTW9uZXlcbmV4cG9ydCB7TW9uZXlJbnB1dH0gZnJvbSAnLi9tb25leS9Nb25leUlucHV0JztcbmV4cG9ydCB0eXBlIHtNb25leUlucHV0UHJvcHN9IGZyb20gJy4vbW9uZXkvTW9uZXlJbnB1dCc7XG5leHBvcnQge01vbmV5Q3VycmVuY3lJbnB1dH0gZnJvbSAnLi9tb25leS9Nb25leUN1cnJlbmN5SW5wdXQnO1xuZXhwb3J0IHR5cGUge01vbmV5Q3VycmVuY3lJbnB1dFByb3BzfSBmcm9tICcuL21vbmV5L01vbmV5Q3VycmVuY3lJbnB1dCc7XG5cbi8vIFN0ZXBcbmV4cG9ydCB7Rm9ybVN0ZXAsIFN0ZXBQcm92aWRlciwgdXNlU3RlcCwgU3RlcH0gZnJvbSAnLi9zdGVwJztcbiJdLCJuYW1lcyI6WyJEYXRlUGlja2VyIiwidG9EYXRlIiwidG9Mb2NhbERhdGUiLCJkZWJ1ZyIsIlJlYWN0IiwiTWFza2VkRGF0ZUlucHV0IiwiZCIsIkxvY2FsRGF0ZVBpY2tlciIsInByb3BzIiwibWluRGF0ZSIsIm1heERhdGUiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwib25CbHVyIiwiYXMiLCJhY3Rpb24iLCJhY3Rpb25Qb3NpdGlvbiIsImNsYXNzTmFtZSIsImVycm9yIiwiZmx1aWQiLCJmb2N1cyIsImljb24iLCJpY29uUG9zaXRpb24iLCJpbnZlcnRlZCIsImxhYmVsIiwibGFiZWxQb3NpdGlvbiIsImxvYWRpbmciLCJzaXplIiwidGFiSW5kZXgiLCJ0cmFuc3BhcmVudCIsInJlc3QiLCJzZWxlY3RlZCIsImlucHV0UHJvcHMiLCJkYXRlIiwiZm9yd2FyZFJlZiIsIk1hc2tlZElucHV0IiwiTWFza2VkRGF0ZUlucHV0SW5uZXIiLCJyZWYiLCJuYW1lIiwiYWxpYXMiLCJpbnB1dEZvcm1hdCIsInRhcmdldCIsIkxvY2FsRGF0ZSIsIlNlbGVjdCIsIm1vbnRoT3B0aW9ucyIsInRleHQiLCJrZXkiLCJMb2NhbE1vbnRoU2VsZWN0IiwieWVhciIsImhhbmRsZUJsdXIiLCJ0aGVZZWFyIiwibm93IiwibW9udGhWYWx1ZSIsImV2IiwidiIsIm9mIiwiTG9jYWxUaW1lIiwidG9Mb2NhbFRpbWUiLCJNYXNrZWRUaW1lSW5wdXQiLCJMb2NhbFRpbWVQaWNrZXIiLCJkaXNhYmxlZCIsIm9mU2Vjb25kT2ZEYXkiLCJNYXNrZWRUaW1lSW5wdXRJbm5lciIsIklucHV0IiwibW9udGhzIiwiTW9udGhEYXlIZWFkZXIiLCJnZXRNb250aCIsImRlY3JlYXNlTW9udGgiLCJwcmV2TW9udGhCdXR0b25EaXNhYmxlZCIsImluY3JlYXNlTW9udGgiLCJuZXh0TW9udGhCdXR0b25EaXNhYmxlZCIsIk1vbnRoRGF5UGlja2VyIiwiTW9udGhZZWFyUGlja2VyIiwidW5kZWZpbmVkIiwid2l0aERheU9mTW9udGgiLCJvZkVwb2NoRGF5IiwicGx1c01vbnRocyIsIm1pbnVzRGF5cyIsInBsdXNZZWFycyIsIkljb24iLCJCdXR0b24iLCJEcm9wZG93biIsIlNlZ21lbnQiLCJZZWFyU2VsZWN0IiwidGhpc1llYXIiLCJEYXRlIiwiZ2V0RnVsbFllYXIiLCJtaW5ZZWFyIiwibWF4WWVhciIsImF2YWlsYWJsZVllYXJzIiwiaSIsInB1c2giLCJ0b1N0cmluZyIsInBhZGRpbmciLCJtYXJnaW4iLCJlIiwidmFsIiwibWFyZ2luUmlnaHQiLCJpc0Z1bmN0aW9uIiwiRm9ybWlrUHJvdmlkZXIiLCJpc0VtcHR5Q2hpbGRyZW4iLCJ1c2VURm9ybSIsIlRGb3JtIiwidGJhZyIsImNvbXBvbmVudCIsInJlbmRlciIsImNoaWxkcmVuIiwiaW5uZXJSZWYiLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwiY2hpbGQiLCJjcmVhdGVFbGVtZW50IiwiQ2hpbGRyZW4iLCJvbmx5IiwiZmxhdHRlbiIsInVzZUZvcm1payIsImdldCIsInByb3BlcnR5IiwidW5pcSIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiTWVzc2FnZSIsImNvbmZpZyIsImZvcm1payIsIm9uVmFsaWRhdGUiLCJpc1ZhbGlkIiwiZ2V0U3VibWl0Rm4iLCJzdWJtaXRGb3JtIiwidmFsdWVzIiwiZXJyb3JDbGVhcmVkIiwic2V0RXJyb3JDbGVhcmVkIiwibWVzc2FnZSIsImlzU3VibWl0dGluZyIsImZsYXRXYXJuaW5ncyIsImVycm9ycyIsImZsYXRUb3VjaGVkIiwidG91Y2hlZCIsIndhcm5pbmdzIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsIm1lbW8iLCJpc1RvdWNoZWQiLCJzdWJtaXRDb3VudCIsImVycm9ySGVhZGVyIiwiZ3JhcGhRTEVycm9ycyIsImVycm9yTWVzc2FnZSIsInNsaWNlIiwiaW5kZXhPZiIsImhhc1dhcm5pbmdzIiwibGVuZ3RoIiwiaGFzRXJyb3JzIiwicmVuZGVyV2FybmluZ3MiLCJvdmVyZmxvdyIsIm1heEhlaWdodCIsIm1hcCIsIm1zZyIsImZpZWxkRXJyb3IiLCJmaWVsZE5hbWUiLCJoYW5kbGVTdWJtaXQiLCJzdWJtaXREaXNhYmxlZCIsImVycm9yTWFya2VkQ2xlYXJlZCIsImZvcm1FcnJvciIsImZvcm1hdERhdGUiLCJDcmVkaXRDYXJkcyIsIkZvcm0iLCJHcmlkIiwiQ3JlZGl0Q2FyZE51bWJlcklucHV0IiwiQ3JlZGl0Q2FyZElucHV0IiwibnVtYmVyIiwiY3ZjIiwiZXhwaXJ5Iiwic2V0Rm9jdXMiLCJmb3JtYXQiLCJhIiwiYiIsImNyZWRpdENhcmRUeXBlIiwidmFsaWRhdGUiLCJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VNYXNrZWRJbnB1dCIsImdldEljb24iLCJ0eXBlIiwic2V0SWNvbiIsImNvbG9yIiwic2V0Q29sb3IiLCJjaGVja1ZhbGlkYXRpb24iLCJ2YWx1ZUFycmF5IiwibnVtIiwiam9pbiIsInJlcGxhY2VBbGwiLCJ0eXAiLCJjcmVkaXRDYXJkTWFzayIsIm1hc2siLCJpc0NvbXBsZXRlIiwiYXV0b1VubWFzayIsImNhcmROdW1iZXJSZWYiLCJpbnB1dFJlZiIsIklucHV0bWFzayIsInVzZVJlZiIsInVzZURlZXBDb21wYXJlRWZmZWN0Iiwib25TZXQiLCJpbnB1dEVsZW1lbnQiLCJtYXNrSW5zdGFuY2UiLCJjdXJyZW50IiwiRXJyb3IiLCJvbmNvbXBsZXRlIiwib25jbGVhcmVkIiwib25pbmNvbXBsZXRlIiwicmVtb3ZlIiwiUGhvbmVJbnB1dCIsImV4dGVuc2lvbiIsImdyZWVkeSIsImNsb25lRWxlbWVudCIsIlJhZGlvIiwiRm9ybVJhZGlvIiwiUmFkaW9Hcm91cCIsImFyZ3MiLCJjaGVja2VkIiwiU2NyaXB0ZWxDb250ZXh0IiwiU2NyaXB0ZWxTb2NrZXQiLCJTY3JpcHRlbCIsIm9tbmlzY3JpcHRVcmwiLCJpbWFnZVR5cGUiLCJzY2FsZSIsImNyb3AiLCJwZW5TdHlsZSIsInNvY2tldCIsInNldFJlbmRlciIsInNldExvYWRpbmciLCJpc1NpZ25pbmciLCJzZXRJc1NpZ25pbmciLCJvbiIsImNsb3NlIiwicmVuZGVySW1hZ2UiLCJjcmVhdGVDb250ZXh0Iiwid2l0aFNjcmlwdGVsIiwiU2NyaXB0ZWxQZW5TdHlsZSIsIlNjcmlwdGVsTWVzc2FnZUNsYXNzIiwiRXZlbnRFbWl0dGVyIiwic2VydmVyQ29ubmVjdGVkIiwic2VydmVySW5mbyIsImRldmljZXMiLCJkZXZpY2UiLCJzZW5kIiwiSlNPTiIsInN0cmluZ2lmeSIsIl9jbGFzcyIsInV1aWQiLCJkZXZpY2VDb25uZWN0ZWQiLCJyZW5kZXJTZXR0aW5ncyIsInJlbmRlckZ1bmN0aW9uIiwiUGxhaW4iLCJldmVudEVtaXR0ZXIiLCJ3aWR0aCIsImhlaWdodCIsImVtaXQiLCJvcHRpb25zIiwiV2ViU29ja2V0Iiwib25vcGVuIiwib25jbG9zZSIsIm9ubWVzc2FnZSIsInBhcnNlIiwiZGF0YSIsIkNvbm5lY3Rpb25PcGVuIiwiRGV2aWNlT3BlblJlc3BvbnNlIiwiUmVuZGVyZWRJbWFnZSIsIlNjcmlwdGVsRXhjZXB0aW9uIiwiQnV0dG9uUHJlc3MiLCJCdXR0b25Eb3duIiwiUGVuTW92ZSIsIlBlblVwIiwiV3JhcHBlZENvbXBvbmVudCIsInNjcmlwdGVsUHJvcHMiLCJ1c2VDb250ZXh0IiwiSW1hZ2UiLCJTY3JpcHRlbElucHV0IiwiYnV0dG9uVGV4dCIsImN0eCIsImVudGVyU2lnbmF0dXJlIiwic2V0RW50ZXJTaWduYXR1cmUiLCJ0aW1lc3RhbXAiLCJjYWxpYnJhdGUiLCJTSU4iLCJTaW5JbnB1dCIsIkRyb3Bkb3duQ2VsbCIsImRyb3Bkb3duUHJvcHMiLCJEcm9wZG93bkNlbGxGbiIsInJvd0luZGV4Iiwicm93IiwiaW5kZXgiLCJpZCIsImNvbHVtbiIsInVwZGF0ZURhdGEiLCJldmVudCIsIkhvdmVyQ2VsbCIsIkhvdmVyQ2VsbEZuIiwiQWN0aW9uIiwiaG92ZXJSb3ciLCJ0ZXh0QWxpZ24iLCJmb3JtYXRNb25leSIsIk1vbmV5Q2VsbCIsIk1vbmV5Q2VsbEZuIiwib3ZlcnJpZGVWYWx1ZSIsIk1vbmV5SW5wdXQiLCJhZGRSb3dPblRhYiIsIk1vbmV5RWRpdENlbGwiLCJvcHRzIiwiTW9uZXlFZGl0Q2VsbEZuIiwiaW5pdGlhbFZhbHVlIiwic2V0VmFsdWUiLCJhZGRSb3dPblRhYklmIiwidG9Nb25leSIsIk1vbmV5U3VtRm9vdGVyIiwiaW5mbyIsInN1bSIsInJvd3MiLCJhZGQiLCJTdHJpbmdFZGl0Q2VsbCIsIlN0cmluZ0VkaXRDZWxsRm4iLCJGaWVsZEFycmF5IiwidXNlVGFibGUiLCJUYWJsZSIsIlRhYmxlSW5wdXRUYWJsZSIsImNvbHVtbnMiLCJhcnJheUhlbHBlcnMiLCJzZXRGaWVsZFZhbHVlIiwiY3JlYXRlUm93IiwidGFibGVQcm9wcyIsImhlYWRlclJvd1Byb3BzIiwiaGVhZGVyQ2VsbFByb3BzIiwiYm9keVByb3BzIiwicm93UHJvcHMiLCJjZWxsUHJvcHMiLCJmb290ZXJDZWxsUHJvcHMiLCJmb290ZXJSb3dQcm9wcyIsImNvbHMiLCJ2YWxzIiwic2V0SG92ZXJSb3ciLCJjb2x1bW5JZCIsImFkZFJvdyIsImdldFRhYmxlUHJvcHMiLCJnZXRUYWJsZUJvZHlQcm9wcyIsImhlYWRlckdyb3VwcyIsInByZXBhcmVSb3ciLCJmb290ZXJHcm91cHMiLCJoYXNGb290ZXIiLCJzb21lIiwiZmciLCJoZWFkZXJzIiwiZmdoIiwiRm9vdGVyIiwiZm9vdGVyIiwiZ3JvdXAiLCJnZXRGb290ZXJHcm91cFByb3BzIiwiZ2V0Rm9vdGVyUHJvcHMiLCJoZWFkZXJHcm91cCIsImdldEhlYWRlckdyb3VwUHJvcHMiLCJnZXRIZWFkZXJQcm9wcyIsImdldFJvd1Byb3BzIiwiY2VsbHMiLCJjZWxsIiwiZ2V0Q2VsbFByb3BzIiwiVGFibGVJbnB1dCIsInJvd3NMZW5ndGgiLCJzaGlmdEtleSIsIk1vbmV5IiwiTGFiZWwiLCJ1c2VNb25leUlucHV0IiwiTW9uZXlDdXJyZW5jeUlucHV0IiwicHJlZml4IiwiZGVmYXVsdEN1cnJlbmN5Iiwic2hvd1ByZWZpeCIsIndob2xlTnVtYmVyIiwiY3VycmVuY2llcyIsImxvY2tlZCIsImhhbmRsZUNoYW5nZSIsImhhbmRsZURyb3Bkb3duQ2hhbmdlIiwibmV3Q3VycmVuY3lDb2RlIiwibmV3TW9uZXkiLCJhbW91bnQiLCJjdXJyZW5jeUNvZGUiLCJjdXJyZW5jeSIsImNvZGUiLCJncm91cFNlcGFyYXRvciIsImRpZ2l0cyIsImRlY2ltYWxfZGlnaXRzIiwiZGlnaXRzT3B0aW9uYWwiLCJzeW1ib2wiLCJwbGFjZWhvbGRlciIsInNldFZhbCIsInRvRGVjaW1hbCIsIndoYXRDdXJyZW50bHlJc0Rpc3BsYXllZCIsIndoYXRXZUFyZVNldHRpbmciLCJ1c2VTdGVwIiwiRm9ybVN0ZXAiLCJzdGF0ZSIsInN0ZXBLZXkiLCJmb3JtIiwib25TdWJtaXQiLCJ0aXRsZSIsIlN0ZXAiLCJQcm9tcHQiLCJTZW1hbnRpY1N0ZXAiLCJTdGVwQ29udGV4dCIsIlN0ZXBQcm92aWRlciIsInNldFN0YXRlIiwiY3VycmVudFN0ZXAiLCJzZXRDdXJyZW50U3RlcCIsInNldElzU3VibWl0dGluZyIsInRpdGxlcyIsImZvckVhY2giLCJoaWRkZW4iLCJzdGVwIiwib25OYXZpZ2F0ZSIsInZlcnRpY2FsIiwid2Fybk9uUmVyb3V0ZSJdLCJzb3VyY2VSb290IjoiIn0=
|
|
5460
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7O1VDQUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTs7VUFFQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTs7Ozs7V0N0QkE7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLGlDQUFpQyxXQUFXO1dBQzVDO1dBQ0E7Ozs7O1dDUEE7V0FDQTtXQUNBO1dBQ0E7V0FDQSx5Q0FBeUMsd0NBQXdDO1dBQ2pGO1dBQ0E7V0FDQTs7Ozs7V0NQQTs7Ozs7V0NBQTtXQUNBO1dBQ0E7V0FDQSx1REFBdUQsaUJBQWlCO1dBQ3hFO1dBQ0EsZ0RBQWdELGFBQWE7V0FDN0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNOQTtBQUVBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUdBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUVBO0FBR0E7QUFDQTtBQUdBO0FBQ0E7QUFFQTtBQUdBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vZGF0ZS9EYXRlUGlja2VyL2luZGV4LnRzIiwid2VicGFjazovLy8uL2RhdGUvTG9jYWxEYXRlUGlja2VyL0xvY2FsRGF0ZVBpY2tlci50c3giLCJ3ZWJwYWNrOi8vLy4vZGF0ZS9Mb2NhbERhdGVQaWNrZXIvTWFza2VkRGF0ZUlucHV0LnRzeCIsIndlYnBhY2s6Ly8vLi9kYXRlL0xvY2FsRGF0ZVBpY2tlci9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9kYXRlL0xvY2FsTW9udGhTZWxlY3QvTG9jYWxNb250aFNlbGVjdC50c3giLCJ3ZWJwYWNrOi8vLy4vZGF0ZS9Mb2NhbE1vbnRoU2VsZWN0L2luZGV4LnRzIiwid2VicGFjazovLy8uL2RhdGUvTG9jYWxUaW1lUGlja2VyL0xvY2FsVGltZVBpY2tlci50c3giLCJ3ZWJwYWNrOi8vLy4vZGF0ZS9Mb2NhbFRpbWVQaWNrZXIvTWFza2VkVGltZUlucHV0LnRzeCIsIndlYnBhY2s6Ly8vLi9kYXRlL0xvY2FsVGltZVBpY2tlci9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9kYXRlL01vbnRoRGF5UGlja2VyL01vbnRoRGF5UGlja2VyLnRzeCIsIndlYnBhY2s6Ly8vLi9kYXRlL01vbnRoRGF5UGlja2VyL2luZGV4LnRzIiwid2VicGFjazovLy8uL2RhdGUvTW9udGhZZWFyUGlja2VyL01vbnRoWWVhclBpY2tlci50c3giLCJ3ZWJwYWNrOi8vLy4vZGF0ZS9Nb250aFllYXJQaWNrZXIvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vZGF0ZS9ZZWFyU2VsZWN0L1llYXJTZWxlY3QudHN4Iiwid2VicGFjazovLy8uL2RhdGUvWWVhclNlbGVjdC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9mb3JtL1RGb3JtL1RGb3JtLnRzeCIsIndlYnBhY2s6Ly8vLi9mb3JtL1RGb3JtL2luZGV4LnRzIiwid2VicGFjazovLy8uL2Zvcm0vVEZvcm0vdXNlVEZvcm0udHN4Iiwid2VicGFjazovLy8uL2lucHV0cy9DcmVkaXRDYXJkSW5wdXQvQ3JlZGl0Q2FyZElucHV0LnRzeCIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvQ3JlZGl0Q2FyZElucHV0L0NyZWRpdENhcmROdW1iZXJJbnB1dC50c3giLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL0NyZWRpdENhcmRJbnB1dC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvTWFza2VkSW5wdXQvTWFza2VkSW5wdXQudHN4Iiwid2VicGFjazovLy8uL2lucHV0cy9NYXNrZWRJbnB1dC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvTWFza2VkSW5wdXQvdXNlTWFza2VkSW5wdXQudHMiLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1Bob25lSW5wdXQvUGhvbmVJbnB1dC50c3giLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1Bob25lSW5wdXQvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1JhZGlvR3JvdXAvUmFkaW9Hcm91cC50c3giLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1JhZGlvR3JvdXAvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1NjcmlwdGVsL1NjcmlwdGVsLnRzeCIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvU2NyaXB0ZWwvU2NyaXB0ZWxDb250ZXh0LnRzIiwid2VicGFjazovLy8uL2lucHV0cy9TY3JpcHRlbC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvU2NyaXB0ZWwvc2NyaXB0ZWwvZW51bXMudHMiLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1NjcmlwdGVsL3NjcmlwdGVsL2luZGV4LnRzIiwid2VicGFjazovLy8uL2lucHV0cy9TY3JpcHRlbC93aXRoU2NyaXB0ZWwudHN4Iiwid2VicGFjazovLy8uL2lucHV0cy9TY3JpcHRlbElucHV0L1NjcmlwdGVsSW5wdXQudHN4Iiwid2VicGFjazovLy8uL2lucHV0cy9TY3JpcHRlbElucHV0L2luZGV4LnRzIiwid2VicGFjazovLy8uL2lucHV0cy9TaW5JbnB1dC9TaW5JbnB1dC50c3giLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1NpbklucHV0L2luZGV4LnRzIiwid2VicGFjazovLy8uL2lucHV0cy9UYWJsZUlucHV0L0Ryb3Bkb3duQ2VsbC50c3giLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1RhYmxlSW5wdXQvSG92ZXJDZWxsLnRzeCIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvVGFibGVJbnB1dC9Nb25leUNlbGwudHN4Iiwid2VicGFjazovLy8uL2lucHV0cy9UYWJsZUlucHV0L01vbmV5RWRpdENlbGwudHN4Iiwid2VicGFjazovLy8uL2lucHV0cy9UYWJsZUlucHV0L01vbmV5U3VtRm9vdGVyLnRzeCIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvVGFibGVJbnB1dC9TdHJpbmdFZGl0Q2VsbC50c3giLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1RhYmxlSW5wdXQvVGFibGVJbnB1dC50c3giLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1RhYmxlSW5wdXQvYWRkUm93T25UYWIudHMiLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1RhYmxlSW5wdXQvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vbW9uZXkvTW9uZXlDdXJyZW5jeUlucHV0L01vbmV5Q3VycmVuY3lJbnB1dC50c3giLCJ3ZWJwYWNrOi8vLy4vbW9uZXkvTW9uZXlDdXJyZW5jeUlucHV0L2luZGV4LnRzIiwid2VicGFjazovLy8uL21vbmV5L01vbmV5SW5wdXQvTW9uZXlJbnB1dC50c3giLCJ3ZWJwYWNrOi8vLy4vbW9uZXkvTW9uZXlJbnB1dC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9tb25leS91c2VNb25leUlucHV0LnRzIiwid2VicGFjazovLy8uL3N0ZXAvRm9ybVN0ZXAudHN4Iiwid2VicGFjazovLy8uL3N0ZXAvU3RlcC50c3giLCJ3ZWJwYWNrOi8vLy4vc3RlcC9TdGVwUHJvdmlkZXIudHN4Iiwid2VicGFjazovLy8uL3N0ZXAvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3RlcC9zdGVwQ29udGV4dC50cyIsIndlYnBhY2s6Ly8vLi9zdGVwL3VzZVN0ZXAudHMiLCJ3ZWJwYWNrOi8vLy4vZGF0ZS9EYXRlUGlja2VyL3N0eWxlcy5jc3M/MTNiNyIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvQ3JlZGl0Q2FyZElucHV0L3N0eWxlcy5jc3M/ZmUxZCIsIndlYnBhY2s6Ly8vLi9kYXRlL0RhdGVQaWNrZXIvc3R5bGVzLmNzcyIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvQ3JlZGl0Q2FyZElucHV0L3N0eWxlcy5jc3MiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQGpzLWpvZGEvY29yZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkB0aHgvZGF0ZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkB0aHgvbW9uZXlcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJjcmVkaXQtY2FyZC10eXBlXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiZGVidWdcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJldmVudGVtaXR0ZXIzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiZmxhdFwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImZvcm1pa1wiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImlucHV0bWFza1wiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImpzLW1vbmV5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwibG9kYXNoL2dldFwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImxvZGFzaC9wcm9wZXJ0eVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImxvZGFzaC91bmlxXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwibHVoblwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtY3JlZGl0LWNhcmRzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtY3JlZGl0LWNhcmRzL2VzL3N0eWxlcy1jb21waWxlZC5jc3NcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1kYXRlcGlja2VyXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3Qtcm91dGVyLWRvbVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXRhYmxlXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QvanN4LWRldi1ydW50aW1lXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwic2VtYW50aWMtdWktcmVhY3RcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJzb2NpYWwtaW5zdXJhbmNlLW51bWJlclwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcInVzZS1kZWVwLWNvbXBhcmUtZWZmZWN0XCIiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly8vd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovLy8uL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEYXRlUGlja2VyIGZyb20gJ3JlYWN0LWRhdGVwaWNrZXInO1xuaW1wb3J0ICcuL3N0eWxlcy5jc3MnO1xuXG5leHBvcnQge0RhdGVQaWNrZXJ9O1xuIiwiaW1wb3J0IHR5cGUge0xvY2FsRGF0ZX0gZnJvbSAnQGpzLWpvZGEvY29yZSc7XG5pbXBvcnQge3RvRGF0ZSwgdG9Mb2NhbERhdGV9IGZyb20gJ0B0aHgvZGF0ZSc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHR5cGUge1JlYWN0RGF0ZVBpY2tlclByb3BzfSBmcm9tICdyZWFjdC1kYXRlcGlja2VyJztcbmltcG9ydCB0eXBlIHtJbnB1dFByb3BzfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQge0RhdGVQaWNrZXJ9IGZyb20gJy4uL0RhdGVQaWNrZXIvaW5kZXgnO1xuaW1wb3J0IHtNYXNrZWREYXRlSW5wdXR9IGZyb20gJy4vTWFza2VkRGF0ZUlucHV0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuZGF0ZS5Mb2NhbERhdGVQaWNrZXInKTtcblxuaW50ZXJmYWNlIElMb2NhbERhdGVQaWNrZXIge1xuXHR2YWx1ZT86IExvY2FsRGF0ZSB8IG51bWJlciB8IG51bGw7XG5cdG9uQ2hhbmdlPzogKHZhbHVlOiBMb2NhbERhdGUgfCBudWxsKSA9PiB2b2lkO1xuXHRvbkNoYW5nZVJhdz86ICgpID0+IHZvaWQ7XG5cdG1pbkRhdGU/OiBMb2NhbERhdGU7XG5cdG1heERhdGU/OiBMb2NhbERhdGU7XG59XG5cbnR5cGUgSW5wdXRQcm9wc09taXR0ZWQgPSBPbWl0PElucHV0UHJvcHMsICdvbkNoYW5nZSc+O1xudHlwZSBSZWFjdERhdGVQaWNrZXJQcm9wc09taXR0ZWQgPSBPbWl0PE9taXQ8UmVhY3REYXRlUGlja2VyUHJvcHMsICd2YWx1ZSc+LCAnb25DaGFuZ2UnIHwgJ21pbkRhdGUnIHwgJ21heERhdGUnPjtcbmV4cG9ydCB0eXBlIExvY2FsRGF0ZVBpY2tlclByb3BzID0gSUxvY2FsRGF0ZVBpY2tlciAmIElucHV0UHJvcHNPbWl0dGVkICYgUmVhY3REYXRlUGlja2VyUHJvcHNPbWl0dGVkO1xuXG5leHBvcnQgZnVuY3Rpb24gTG9jYWxEYXRlUGlja2VyKHByb3BzOiBMb2NhbERhdGVQaWNrZXJQcm9wcyk6IEpTWC5FbGVtZW50IHtcblx0Y29uc3Qge1xuXHRcdG1pbkRhdGUsXG5cdFx0bWF4RGF0ZSxcblx0XHR2YWx1ZSxcblx0XHRvbkNoYW5nZSxcblx0XHRvbkJsdXIsXG5cdFx0YXMsXG5cdFx0YWN0aW9uLFxuXHRcdGFjdGlvblBvc2l0aW9uLFxuXHRcdGNsYXNzTmFtZSxcblx0XHRlcnJvcixcblx0XHRmbHVpZCxcblx0XHRmb2N1cyxcblx0XHRpY29uLFxuXHRcdGljb25Qb3NpdGlvbixcblx0XHRpbnZlcnRlZCxcblx0XHRsYWJlbCxcblx0XHRsYWJlbFBvc2l0aW9uLFxuXHRcdGxvYWRpbmcsXG5cdFx0c2l6ZSxcblx0XHR0YWJJbmRleCxcblx0XHR0cmFuc3BhcmVudCxcblx0XHQuLi5yZXN0XG5cdH0gPSBwcm9wcztcblxuXHRjb25zdCBzZWxlY3RlZCA9IHZhbHVlID8gdG9EYXRlKHZhbHVlKSA6IG51bGw7XG5cblx0Y29uc3QgaW5wdXRQcm9wcyA9IHtcblx0XHRhcyxcblx0XHRhY3Rpb24sXG5cdFx0YWN0aW9uUG9zaXRpb24sXG5cdFx0Y2xhc3NOYW1lLFxuXHRcdGVycm9yLFxuXHRcdGZsdWlkLFxuXHRcdGZvY3VzLFxuXHRcdGljb24sXG5cdFx0aWNvblBvc2l0aW9uLFxuXHRcdGludmVydGVkLFxuXHRcdGxhYmVsLFxuXHRcdGxhYmVsUG9zaXRpb24sXG5cdFx0bG9hZGluZyxcblx0XHRzaXplLFxuXHRcdHRhYkluZGV4LFxuXHRcdHRyYW5zcGFyZW50LFxuXHR9O1xuXG5cdHJldHVybiAoXG5cdFx0PERhdGVQaWNrZXJcblx0XHRcdHsuLi5yZXN0fVxuXHRcdFx0c2VsZWN0ZWQ9e3NlbGVjdGVkfVxuXHRcdFx0b25DaGFuZ2U9e2RhdGUgPT4ge1xuXHRcdFx0XHRpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKGRhdGUgPyB0b0xvY2FsRGF0ZShkYXRlKSA6IG51bGwpO1xuXHRcdFx0fX1cblx0XHRcdG9uQmx1cj17b25CbHVyfVxuXHRcdFx0Y3VzdG9tSW5wdXQ9ezxNYXNrZWREYXRlSW5wdXQgey4uLmlucHV0UHJvcHN9IG9uQmx1cj17b25CbHVyfSAvPn1cblx0XHRcdG1pbkRhdGU9e21pbkRhdGUgPyB0b0RhdGUobWluRGF0ZSkgOiBudWxsfVxuXHRcdFx0bWF4RGF0ZT17bWF4RGF0ZSA/IHRvRGF0ZShtYXhEYXRlKSA6IG51bGx9XG5cdFx0Lz5cblx0KTtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQge2ZvcndhcmRSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7TWFza2VkSW5wdXQsIE1hc2tlZElucHV0UHJvcHN9IGZyb20gJy4uLy4uL2lucHV0cy9NYXNrZWRJbnB1dCc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLmRhdGUuTG9jYWxEYXRlUGlja2VyLk1hc2tlZERhdGVJbnB1dCcpO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1hc2tlZERhdGVJbnB1dFZhbHVlIHtcblx0dGFyZ2V0OiB7XG5cdFx0dmFsdWU6IHN0cmluZztcblx0fTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXNrZWREYXRlSW5wdXRQcm9wcyB7XG5cdG5hbWU/OiBzdHJpbmc7XG5cdG9uQ2hhbmdlPzogKHZhbHVlOiBNYXNrZWREYXRlSW5wdXRWYWx1ZSkgPT4gdm9pZDtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzLEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuZnVuY3Rpb24gTWFza2VkRGF0ZUlucHV0SW5uZXIocHJvcHM6IE1hc2tlZERhdGVJbnB1dFByb3BzICYgT21pdDxNYXNrZWRJbnB1dFByb3BzLCAnb25DaGFuZ2UnPiwgcmVmOiBhbnkpIHtcblx0Y29uc3Qge29uQ2hhbmdlLCBuYW1lLCAuLi5yZXN0fSA9IHByb3BzO1xuXG5cdHJldHVybiAoXG5cdFx0PE1hc2tlZElucHV0XG5cdFx0XHR7Li4ucmVzdH1cblx0XHRcdG5hbWU9e25hbWV9XG5cdFx0XHRtYXNrPXt7YWxpYXM6ICdkYXRldGltZScsIGlucHV0Rm9ybWF0OiAnbW0vZGQveXl5eSd9fVxuXHRcdFx0b25DaGFuZ2U9e3ZhbHVlID0+IHtcblx0XHRcdFx0aWYgKG9uQ2hhbmdlKSBvbkNoYW5nZSh7dGFyZ2V0OiB7dmFsdWU6IHZhbHVlIHx8ICcnfX0pO1xuXHRcdFx0fX1cblx0XHQvPlxuXHQpO1xufVxuXG5leHBvcnQgY29uc3QgTWFza2VkRGF0ZUlucHV0ID0gZm9yd2FyZFJlZihNYXNrZWREYXRlSW5wdXRJbm5lcik7XG4iLCJleHBvcnQge0xvY2FsRGF0ZVBpY2tlcn0gZnJvbSAnLi9Mb2NhbERhdGVQaWNrZXInO1xuZXhwb3J0IHR5cGUge0xvY2FsRGF0ZVBpY2tlclByb3BzfSBmcm9tICcuL0xvY2FsRGF0ZVBpY2tlcic7XG4iLCJpbXBvcnQge0xvY2FsRGF0ZX0gZnJvbSAnQGpzLWpvZGEvY29yZSc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHtTZWxlY3QsIFNlbGVjdFByb3BzfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLmRhdGUuTG9jYWxNb250aFNlbGVjdCcpO1xuXG5jb25zdCBtb250aE9wdGlvbnMgPSBbXG5cdHt0ZXh0OiAnSmFudWFyeScsIHZhbHVlOiAxLCBrZXk6IDF9LFxuXHR7dGV4dDogJ0ZlYnJ1YXJ5JywgdmFsdWU6IDIsIGtleTogMn0sXG5cdHt0ZXh0OiAnTWFyY2gnLCB2YWx1ZTogMywga2V5OiAzfSxcblx0e3RleHQ6ICdBcHJpbCcsIHZhbHVlOiA0LCBrZXk6IDR9LFxuXHR7dGV4dDogJ01heScsIHZhbHVlOiA1LCBrZXk6IDV9LFxuXHR7dGV4dDogJ0p1bmUnLCB2YWx1ZTogNiwga2V5OiA2fSxcblx0e3RleHQ6ICdKdWx5JywgdmFsdWU6IDcsIGtleTogN30sXG5cdHt0ZXh0OiAnQXVndXN0JywgdmFsdWU6IDgsIGtleTogOH0sXG5cdHt0ZXh0OiAnU2VwdGVtYmVyJywgdmFsdWU6IDksIGtleTogOX0sXG5cdHt0ZXh0OiAnT2N0b2JlcicsIHZhbHVlOiAxMCwga2V5OiAxMH0sXG5cdHt0ZXh0OiAnTm92ZW1iZXInLCB2YWx1ZTogMTEsIGtleTogMTF9LFxuXHR7dGV4dDogJ0RlY2VtYmVyJywgdmFsdWU6IDEyLCBrZXk6IDEyfSxcbl07XG5cbmludGVyZmFjZSBJTG9jYWxNb250aFNlbGVjdFByb3BzIHtcblx0b25DaGFuZ2U/OiAodmFsdWU6IExvY2FsRGF0ZSB8IG51bGwpID0+IHZvaWQ7XG5cdHZhbHVlPzogTG9jYWxEYXRlIHwgbnVsbDtcblx0eWVhcj86IG51bWJlcjtcblx0aGFuZGxlQmx1cj86IChldmVudDogYW55KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBMb2NhbE1vbnRoU2VsZWN0UHJvcHMgPSBJTG9jYWxNb250aFNlbGVjdFByb3BzICYgT21pdDxTZWxlY3RQcm9wcywgJ29wdGlvbnMnPjtcblxuZXhwb3J0IGZ1bmN0aW9uIExvY2FsTW9udGhTZWxlY3QocHJvcHM6IExvY2FsTW9udGhTZWxlY3RQcm9wcyk6IEpTWC5FbGVtZW50IHtcblx0Y29uc3Qge3ZhbHVlLCBvbkNoYW5nZSwgeWVhciwgaGFuZGxlQmx1ciwgLi4ucmVzdH0gPSBwcm9wcztcblxuXHRjb25zdCB0aGVZZWFyID0geWVhciB8fCBMb2NhbERhdGUubm93KCkueWVhcigpO1xuXG5cdHJldHVybiAoXG5cdFx0PFNlbGVjdFxuXHRcdFx0cGxhY2Vob2xkZXI9XCJTZWxlY3QgTW9udGhcIlxuXHRcdFx0b3B0aW9ucz17bW9udGhPcHRpb25zfVxuXHRcdFx0dmFsdWU9e3ZhbHVlID8gdmFsdWUubW9udGhWYWx1ZSgpIDogJyd9XG5cdFx0XHRvbkNoYW5nZT17KGV2LCB2KSA9PiB7XG5cdFx0XHRcdGlmIChvbkNoYW5nZSkge1xuXHRcdFx0XHRcdGlmICh0eXBlb2Ygdi52YWx1ZSA9PT0gJ251bWJlcicpIHtcblx0XHRcdFx0XHRcdG9uQ2hhbmdlKHYgPyBMb2NhbERhdGUub2YodGhlWWVhciwgdi52YWx1ZSwgMSkgOiBudWxsKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0b25DaGFuZ2UobnVsbCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9fVxuXHRcdFx0b25CbHVyPXtoYW5kbGVCbHVyfVxuXHRcdFx0ey4uLnJlc3R9XG5cdFx0Lz5cblx0KTtcbn1cbiIsImV4cG9ydCB7TG9jYWxNb250aFNlbGVjdH0gZnJvbSAnLi9Mb2NhbE1vbnRoU2VsZWN0JztcbmV4cG9ydCB0eXBlIHtMb2NhbE1vbnRoU2VsZWN0UHJvcHN9IGZyb20gJy4vTG9jYWxNb250aFNlbGVjdCc7XG4iLCJpbXBvcnQge0xvY2FsVGltZX0gZnJvbSAnQGpzLWpvZGEvY29yZSc7XG5pbXBvcnQge3RvRGF0ZSwgdG9Mb2NhbFRpbWV9IGZyb20gJ0B0aHgvZGF0ZSc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHR5cGUge1JlYWN0RGF0ZVBpY2tlclByb3BzfSBmcm9tICdyZWFjdC1kYXRlcGlja2VyJztcbmltcG9ydCB0eXBlIHtJbnB1dFByb3BzfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQge0RhdGVQaWNrZXJ9IGZyb20gJy4uL0RhdGVQaWNrZXIvaW5kZXgnO1xuaW1wb3J0IHtNYXNrZWRUaW1lSW5wdXR9IGZyb20gJy4vTWFza2VkVGltZUlucHV0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuZGF0ZS5Mb2NhbFRpbWVQaWNrZXInKTtcblxuaW50ZXJmYWNlIElMb2NhbFRpbWVQaWNrZXIge1xuXHR2YWx1ZT86IExvY2FsVGltZSB8IG51bWJlciB8IG51bGw7XG5cdG9uQ2hhbmdlPzogKHZhbHVlOiBMb2NhbFRpbWUgfCBudWxsKSA9PiB2b2lkO1xuXHRvbkNoYW5nZVJhdz86ICgpID0+IHZvaWQ7XG59XG5cbnR5cGUgSW5wdXRQcm9wc09taXR0ZWQgPSBPbWl0PElucHV0UHJvcHMsICdvbkNoYW5nZSc+O1xudHlwZSBSZWFjdERhdGVQaWNrZXJQcm9wc09taXR0ZWQgPSBPbWl0PE9taXQ8UmVhY3REYXRlUGlja2VyUHJvcHMsICd2YWx1ZSc+LCAnb25DaGFuZ2UnPjtcbmV4cG9ydCB0eXBlIExvY2FsVGltZVBpY2tlclByb3BzID0gSUxvY2FsVGltZVBpY2tlciAmIElucHV0UHJvcHNPbWl0dGVkICYgUmVhY3REYXRlUGlja2VyUHJvcHNPbWl0dGVkO1xuXG5leHBvcnQgZnVuY3Rpb24gTG9jYWxUaW1lUGlja2VyKHByb3BzOiBMb2NhbFRpbWVQaWNrZXJQcm9wcyk6IEpTWC5FbGVtZW50IHtcblx0Y29uc3Qge1xuXHRcdHZhbHVlLFxuXHRcdG9uQ2hhbmdlLFxuXHRcdGFzLFxuXHRcdGFjdGlvbixcblx0XHRhY3Rpb25Qb3NpdGlvbixcblx0XHRjbGFzc05hbWUsXG5cdFx0ZGlzYWJsZWQsXG5cdFx0ZXJyb3IsXG5cdFx0Zmx1aWQsXG5cdFx0Zm9jdXMsXG5cdFx0aWNvbixcblx0XHRpY29uUG9zaXRpb24sXG5cdFx0aW52ZXJ0ZWQsXG5cdFx0bGFiZWwsXG5cdFx0bGFiZWxQb3NpdGlvbixcblx0XHRsb2FkaW5nLFxuXHRcdHNpemUsXG5cdFx0dGFiSW5kZXgsXG5cdFx0dHJhbnNwYXJlbnQsXG5cdFx0Li4ucmVzdFxuXHR9ID0gcHJvcHM7XG5cblx0bGV0IHNlbGVjdGVkO1xuXHRpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgc2VsZWN0ZWQgPSB0b0RhdGUoTG9jYWxUaW1lLm9mU2Vjb25kT2ZEYXkodmFsdWUpKTtcblx0ZWxzZSBzZWxlY3RlZCA9IHZhbHVlID8gdG9EYXRlKHZhbHVlKSA6IG51bGw7XG5cblx0Y29uc3QgaW5wdXRQcm9wcyA9IHtcblx0XHRhcyxcblx0XHRhY3Rpb24sXG5cdFx0YWN0aW9uUG9zaXRpb24sXG5cdFx0Y2xhc3NOYW1lLFxuXHRcdGRpc2FibGVkLFxuXHRcdGVycm9yLFxuXHRcdGZsdWlkLFxuXHRcdGZvY3VzLFxuXHRcdGljb24sXG5cdFx0aWNvblBvc2l0aW9uLFxuXHRcdGludmVydGVkLFxuXHRcdGxhYmVsLFxuXHRcdGxhYmVsUG9zaXRpb24sXG5cdFx0bG9hZGluZyxcblx0XHRzaXplLFxuXHRcdHRhYkluZGV4LFxuXHRcdHRyYW5zcGFyZW50LFxuXHR9O1xuXG5cdHJldHVybiAoXG5cdFx0PERhdGVQaWNrZXJcblx0XHRcdHsuLi5yZXN0fVxuXHRcdFx0c2VsZWN0ZWQ9e3NlbGVjdGVkfVxuXHRcdFx0b25DaGFuZ2U9e2RhdGUgPT4ge1xuXHRcdFx0XHRpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKGRhdGUgPyB0b0xvY2FsVGltZShkYXRlKSA6IG51bGwpO1xuXHRcdFx0fX1cblx0XHRcdHNob3dUaW1lU2VsZWN0XG5cdFx0XHRzaG93VGltZVNlbGVjdE9ubHlcblx0XHRcdHRpbWVJbnRlcnZhbHM9ezE1fVxuXHRcdFx0dGltZUNhcHRpb249XCJUaW1lXCJcblx0XHRcdGRhdGVGb3JtYXQ9XCJoaDptbSBhYVwiXG5cdFx0XHRjdXN0b21JbnB1dD17PE1hc2tlZFRpbWVJbnB1dCB7Li4uaW5wdXRQcm9wc30gLz59XG5cdFx0Lz5cblx0KTtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQge2ZvcndhcmRSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7TWFza2VkSW5wdXQsIE1hc2tlZElucHV0UHJvcHN9IGZyb20gJy4uLy4uL2lucHV0cy9NYXNrZWRJbnB1dCc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLmRhdGUuTG9jYWxUaW1lUGlja2VyLk1hc2tlZFRpbWVJbnB1dCcpO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1hc2tlZFRpbWVJbnB1dFZhbHVlIHtcblx0dGFyZ2V0OiB7XG5cdFx0dmFsdWU6IHN0cmluZztcblx0fTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXNrZWRUaW1lSW5wdXRQcm9wcyB7XG5cdG9uQ2hhbmdlPzogKHZhbHVlOiBNYXNrZWRUaW1lSW5wdXRWYWx1ZSkgPT4gdm9pZDtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzLEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuZnVuY3Rpb24gTWFza2VkVGltZUlucHV0SW5uZXIocHJvcHM6IE1hc2tlZFRpbWVJbnB1dFByb3BzICYgT21pdDxNYXNrZWRJbnB1dFByb3BzLCAnb25DaGFuZ2UnPiwgcmVmOiBhbnkpIHtcblx0Y29uc3Qge29uQ2hhbmdlLCAuLi5yZXN0fSA9IHByb3BzO1xuXG5cdHJldHVybiAoXG5cdFx0PE1hc2tlZElucHV0XG5cdFx0XHRtYXNrPXt7YWxpYXM6ICdkYXRldGltZScsIGlucHV0Rm9ybWF0OiAnaGg6TU0gVFQnfX1cblx0XHRcdG9uQ2hhbmdlPXt2YWx1ZSA9PiB7XG5cdFx0XHRcdGlmIChvbkNoYW5nZSkgb25DaGFuZ2Uoe3RhcmdldDoge3ZhbHVlOiB2YWx1ZSB8fCAnJ319KTtcblx0XHRcdH19XG5cdFx0XHR7Li4ucmVzdH1cblx0XHQvPlxuXHQpO1xufVxuXG5leHBvcnQgY29uc3QgTWFza2VkVGltZUlucHV0ID0gZm9yd2FyZFJlZihNYXNrZWRUaW1lSW5wdXRJbm5lcik7XG4iLCJleHBvcnQge0xvY2FsVGltZVBpY2tlcn0gZnJvbSAnLi9Mb2NhbFRpbWVQaWNrZXInO1xuZXhwb3J0IHR5cGUge0xvY2FsVGltZVBpY2tlclByb3BzfSBmcm9tICcuL0xvY2FsVGltZVBpY2tlcic7XG4iLCJpbXBvcnQgdHlwZSB7TG9jYWxEYXRlfSBmcm9tICdAanMtam9kYS9jb3JlJztcbmltcG9ydCB7dG9EYXRlLCB0b0xvY2FsRGF0ZX0gZnJvbSAnQHRoeC9kYXRlJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgdHlwZSB7UmVhY3REYXRlUGlja2VyUHJvcHN9IGZyb20gJ3JlYWN0LWRhdGVwaWNrZXInO1xuaW1wb3J0IHtJbnB1dFByb3BzLCBJbnB1dH0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHtEYXRlUGlja2VyfSBmcm9tICcuLi9EYXRlUGlja2VyL2luZGV4JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuZGF0ZS5Nb250aERheVBpY2tlcicpO1xuXG5jb25zdCBtb250aHMgPSBbJ0phbnVhcnknLCAnRmVicnVhcnknLCAnTWFyY2gnLCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLCAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInXTtcblxuaW50ZXJmYWNlIE1vbnRoRGF5SGVhZGVyUHJvcHMge1xuXHRkYXRlOiBEYXRlO1xuXHRjaGFuZ2VZZWFyKHllYXI6IG51bWJlcik6IHZvaWQ7XG5cdGNoYW5nZU1vbnRoKG1vbnRoOiBudW1iZXIpOiB2b2lkO1xuXHRkZWNyZWFzZU1vbnRoKCk6IHZvaWQ7XG5cdGluY3JlYXNlTW9udGgoKTogdm9pZDtcblx0cHJldk1vbnRoQnV0dG9uRGlzYWJsZWQ6IGJvb2xlYW47XG5cdG5leHRNb250aEJ1dHRvbkRpc2FibGVkOiBib29sZWFuO1xuXHRkZWNyZWFzZVllYXIoKTogdm9pZDtcblx0aW5jcmVhc2VZZWFyKCk6IHZvaWQ7XG5cdHByZXZZZWFyQnV0dG9uRGlzYWJsZWQ6IGJvb2xlYW47XG5cdG5leHRZZWFyQnV0dG9uRGlzYWJsZWQ6IGJvb2xlYW47XG59XG5cbmZ1bmN0aW9uIE1vbnRoRGF5SGVhZGVyKHByb3BzOiBNb250aERheUhlYWRlclByb3BzKSB7XG5cdHJldHVybiAoXG5cdFx0PD5cblx0XHRcdDxkaXYgY2xhc3NOYW1lPVwicmVhY3QtZGF0ZXBpY2tlcl9fY3VycmVudC1tb250aFwiPnttb250aHNbcHJvcHMuZGF0ZS5nZXRNb250aCgpXX08L2Rpdj5cblx0XHRcdDxidXR0b25cblx0XHRcdFx0dHlwZT1cImJ1dHRvblwiXG5cdFx0XHRcdGNsYXNzTmFtZT1cInJlYWN0LWRhdGVwaWNrZXJfX25hdmlnYXRpb24gcmVhY3QtZGF0ZXBpY2tlcl9fbmF2aWdhdGlvbi0tcHJldmlvdXNcIlxuXHRcdFx0XHRhcmlhLWxhYmVsPVwiUHJldmlvdXMgTW9udGhcIlxuXHRcdFx0XHRvbkNsaWNrPXtwcm9wcy5kZWNyZWFzZU1vbnRofVxuXHRcdFx0XHRkaXNhYmxlZD17cHJvcHMucHJldk1vbnRoQnV0dG9uRGlzYWJsZWR9XG5cdFx0XHQ+XG5cdFx0XHRcdFByZXZpb3VzIE1vbnRoXG5cdFx0XHQ8L2J1dHRvbj5cblx0XHRcdDxidXR0b25cblx0XHRcdFx0dHlwZT1cImJ1dHRvblwiXG5cdFx0XHRcdGNsYXNzTmFtZT1cInJlYWN0LWRhdGVwaWNrZXJfX25hdmlnYXRpb24gcmVhY3QtZGF0ZXBpY2tlcl9fbmF2aWdhdGlvbi0tbmV4dFwiXG5cdFx0XHRcdGFyaWEtbGFiZWw9XCJOZXh0IE1vbnRoXCJcblx0XHRcdFx0b25DbGljaz17cHJvcHMuaW5jcmVhc2VNb250aH1cblx0XHRcdFx0ZGlzYWJsZWQ9e3Byb3BzLm5leHRNb250aEJ1dHRvbkRpc2FibGVkfVxuXHRcdFx0PlxuXHRcdFx0XHROZXh0IE1vbnRoXG5cdFx0XHQ8L2J1dHRvbj5cblx0XHQ8Lz5cblx0KTtcbn1cblxuaW50ZXJmYWNlIElNb250aERheVBpY2tlclByb3BzIHtcblx0dmFsdWU/OiBMb2NhbERhdGUgfCBudW1iZXIgfCBudWxsO1xuXHRvbkNoYW5nZT86ICh2YWx1ZTogTG9jYWxEYXRlIHwgbnVsbCkgPT4gdm9pZDtcblx0b25DaGFuZ2VSYXc/OiAoKSA9PiB2b2lkO1xufVxuXG50eXBlIElucHV0UHJvcHNPbWl0dGVkID0gT21pdDxJbnB1dFByb3BzLCAnb25DaGFuZ2UnPjtcbnR5cGUgUmVhY3REYXRlUGlja2VyUHJvcHNPbWl0dGVkID0gT21pdDxPbWl0PFJlYWN0RGF0ZVBpY2tlclByb3BzLCAndmFsdWUnPiwgJ29uQ2hhbmdlJz47XG5leHBvcnQgdHlwZSBNb250aERheVBpY2tlclByb3BzID0gSU1vbnRoRGF5UGlja2VyUHJvcHMgJiBJbnB1dFByb3BzT21pdHRlZCAmIFJlYWN0RGF0ZVBpY2tlclByb3BzT21pdHRlZDtcblxuZXhwb3J0IGZ1bmN0aW9uIE1vbnRoRGF5UGlja2VyKHByb3BzOiBNb250aERheVBpY2tlclByb3BzKTogSlNYLkVsZW1lbnQge1xuXHRjb25zdCB7XG5cdFx0dmFsdWUsXG5cdFx0b25DaGFuZ2UsXG5cdFx0YXMsXG5cdFx0YWN0aW9uLFxuXHRcdGFjdGlvblBvc2l0aW9uLFxuXHRcdGNsYXNzTmFtZSxcblx0XHRkaXNhYmxlZCxcblx0XHRlcnJvcixcblx0XHRmbHVpZCxcblx0XHRmb2N1cyxcblx0XHRpY29uLFxuXHRcdGljb25Qb3NpdGlvbixcblx0XHRpbnZlcnRlZCxcblx0XHRsYWJlbCxcblx0XHRsYWJlbFBvc2l0aW9uLFxuXHRcdGxvYWRpbmcsXG5cdFx0c2l6ZSxcblx0XHR0YWJJbmRleCxcblx0XHR0cmFuc3BhcmVudCxcblx0XHQuLi5yZXN0XG5cdH0gPSBwcm9wcztcblxuXHRjb25zdCBzZWxlY3RlZCA9IHZhbHVlID8gdG9EYXRlKHZhbHVlKSA6IG51bGw7XG5cblx0Y29uc3QgaW5wdXRQcm9wcyA9IHtcblx0XHRhcyxcblx0XHRhY3Rpb24sXG5cdFx0YWN0aW9uUG9zaXRpb24sXG5cdFx0Y2xhc3NOYW1lLFxuXHRcdGRpc2FibGVkLFxuXHRcdGVycm9yLFxuXHRcdGZsdWlkLFxuXHRcdGZvY3VzLFxuXHRcdGljb24sXG5cdFx0aWNvblBvc2l0aW9uLFxuXHRcdGludmVydGVkLFxuXHRcdGxhYmVsLFxuXHRcdGxhYmVsUG9zaXRpb24sXG5cdFx0bG9hZGluZyxcblx0XHRzaXplLFxuXHRcdHRhYkluZGV4LFxuXHRcdHRyYW5zcGFyZW50LFxuXHR9O1xuXG5cdHJldHVybiAoXG5cdFx0PERhdGVQaWNrZXJcblx0XHRcdHsuLi5yZXN0fVxuXHRcdFx0c2VsZWN0ZWQ9e3NlbGVjdGVkfVxuXHRcdFx0b25DaGFuZ2U9e2RhdGUgPT4ge1xuXHRcdFx0XHRpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKGRhdGUgPyB0b0xvY2FsRGF0ZShkYXRlKSA6IG51bGwpO1xuXHRcdFx0fX1cblx0XHRcdGN1c3RvbUlucHV0PXs8SW5wdXQgey4uLmlucHV0UHJvcHN9IC8+fVxuXHRcdFx0cmVuZGVyQ3VzdG9tSGVhZGVyPXtNb250aERheUhlYWRlcn1cblx0XHRcdGRhdGVGb3JtYXQ9XCJNTU1NIGRcIlxuXHRcdC8+XG5cdCk7XG59XG4iLCJleHBvcnQge01vbnRoRGF5UGlja2VyfSBmcm9tICcuL01vbnRoRGF5UGlja2VyJztcbmV4cG9ydCB0eXBlIHtNb250aERheVBpY2tlclByb3BzfSBmcm9tICcuL01vbnRoRGF5UGlja2VyJztcbiIsImltcG9ydCB7TG9jYWxEYXRlfSBmcm9tICdAanMtam9kYS9jb3JlJztcbmltcG9ydCB7dG9EYXRlLCB0b0xvY2FsRGF0ZX0gZnJvbSAnQHRoeC9kYXRlJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgdHlwZSB7UmVhY3REYXRlUGlja2VyUHJvcHN9IGZyb20gJ3JlYWN0LWRhdGVwaWNrZXInO1xuaW1wb3J0IHtJbnB1dFByb3BzLCBJbnB1dH0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHtEYXRlUGlja2VyfSBmcm9tICcuLi9EYXRlUGlja2VyL2luZGV4JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuZGF0ZS5Nb250aFllYXJQaWNrZXInKTtcblxuaW50ZXJmYWNlIElNb250aFllYXJQaWNrZXJQcm9wcyB7XG5cdHZhbHVlPzogTG9jYWxEYXRlIHwgbnVtYmVyIHwgdW5kZWZpbmVkO1xuXHRvbkNoYW5nZT86ICh2YWx1ZTogTG9jYWxEYXRlIHwgdW5kZWZpbmVkKSA9PiB2b2lkO1xuXHRvbkNoYW5nZVJhdz86ICgpID0+IHZvaWQ7XG5cdG1pbkRhdGU/OiBMb2NhbERhdGUgfCB1bmRlZmluZWQ7XG5cdG1heERhdGU/OiBMb2NhbERhdGUgfCB1bmRlZmluZWQ7XG59XG5cbnR5cGUgSW5wdXRQcm9wc09taXR0ZWQgPSBPbWl0PElucHV0UHJvcHMsICdvbkNoYW5nZSc+O1xudHlwZSBSZWFjdERhdGVQaWNrZXJQcm9wc09taXR0ZWQgPSBPbWl0PE9taXQ8UmVhY3REYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnbWluRGF0ZScgfCAnbWF4RGF0ZSc+LCAnb25DaGFuZ2UnPjtcbmV4cG9ydCB0eXBlIE1vbnRoWWVhclBpY2tlclByb3BzID0gSU1vbnRoWWVhclBpY2tlclByb3BzICYgSW5wdXRQcm9wc09taXR0ZWQgJiBSZWFjdERhdGVQaWNrZXJQcm9wc09taXR0ZWQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBNb250aFllYXJQaWNrZXIocHJvcHM6IE1vbnRoWWVhclBpY2tlclByb3BzKTogSlNYLkVsZW1lbnQge1xuXHRjb25zdCB7XG5cdFx0dmFsdWUsXG5cdFx0b25DaGFuZ2UsXG5cdFx0YXMsXG5cdFx0YWN0aW9uLFxuXHRcdGFjdGlvblBvc2l0aW9uLFxuXHRcdGNsYXNzTmFtZSxcblx0XHRkaXNhYmxlZCxcblx0XHRlcnJvcixcblx0XHRmbHVpZCxcblx0XHRmb2N1cyxcblx0XHRpY29uLFxuXHRcdGljb25Qb3NpdGlvbixcblx0XHRpbnZlcnRlZCxcblx0XHRsYWJlbCxcblx0XHRsYWJlbFBvc2l0aW9uLFxuXHRcdGxvYWRpbmcsXG5cdFx0c2l6ZSxcblx0XHR0YWJJbmRleCxcblx0XHR0cmFuc3BhcmVudCxcblx0XHRtaW5EYXRlLFxuXHRcdG1heERhdGUsXG5cdFx0Li4ucmVzdFxuXHR9ID0gcHJvcHM7XG5cblx0Y29uc3Qgc2VsZWN0ZWQgPSB2YWx1ZSA/IHRvRGF0ZSh2YWx1ZSkgOiBudWxsO1xuXG5cdGNvbnN0IGlucHV0UHJvcHMgPSB7XG5cdFx0YXMsXG5cdFx0YWN0aW9uLFxuXHRcdGFjdGlvblBvc2l0aW9uLFxuXHRcdGNsYXNzTmFtZSxcblx0XHRkaXNhYmxlZCxcblx0XHRlcnJvcixcblx0XHRmbHVpZCxcblx0XHRmb2N1cyxcblx0XHRpY29uLFxuXHRcdGljb25Qb3NpdGlvbixcblx0XHRpbnZlcnRlZCxcblx0XHRsYWJlbCxcblx0XHRsYWJlbFBvc2l0aW9uLFxuXHRcdGxvYWRpbmcsXG5cdFx0c2l6ZSxcblx0XHR0YWJJbmRleCxcblx0XHR0cmFuc3BhcmVudCxcblx0fTtcblxuXHRyZXR1cm4gKFxuXHRcdDxEYXRlUGlja2VyXG5cdFx0XHR7Li4ucmVzdH1cblx0XHRcdHNlbGVjdGVkPXtzZWxlY3RlZH1cblx0XHRcdG9uQ2hhbmdlPXtkYXRlID0+IHtcblx0XHRcdFx0aWYgKG9uQ2hhbmdlKSBvbkNoYW5nZShkYXRlID8gdG9Mb2NhbERhdGUoZGF0ZSkgOiB1bmRlZmluZWQpO1xuXHRcdFx0fX1cblx0XHRcdGN1c3RvbUlucHV0PXs8SW5wdXQgey4uLmlucHV0UHJvcHN9IC8+fVxuXHRcdFx0ZGF0ZUZvcm1hdD1cIk1NTU0geXl5eVwiXG5cdFx0XHRzaG93TW9udGhZZWFyUGlja2VyXG5cdFx0XHRtaW5EYXRlPXt0b0RhdGUobWluRGF0ZT8ud2l0aERheU9mTW9udGgoMSkgfHwgTG9jYWxEYXRlLm9mRXBvY2hEYXkoMCkpfVxuXHRcdFx0bWF4RGF0ZT17dG9EYXRlKG1heERhdGU/LnBsdXNNb250aHMoMSkud2l0aERheU9mTW9udGgoMSkubWludXNEYXlzKDEpIHx8IExvY2FsRGF0ZS5ub3coKS5wbHVzWWVhcnMoMjApKX1cblx0XHQvPlxuXHQpO1xufVxuIiwiZXhwb3J0IHtNb250aFllYXJQaWNrZXJ9IGZyb20gJy4vTW9udGhZZWFyUGlja2VyJztcbmV4cG9ydCB0eXBlIHtNb250aFllYXJQaWNrZXJQcm9wc30gZnJvbSAnLi9Nb250aFllYXJQaWNrZXInO1xuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7SWNvbiwgQnV0dG9uLCBEcm9wZG93biwgRHJvcGRvd25JdGVtUHJvcHMsIFNlZ21lbnQsIFNlZ21lbnRQcm9wc30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5kYXRlLlllYXJTZWxlY3QnKTtcblxuZXhwb3J0IGludGVyZmFjZSBZZWFyU2VsZWN0UHJvcHMge1xuXHRvbkNoYW5nZT86ICh2YWx1ZTogbnVtYmVyKSA9PiB2b2lkO1xuXHRvbkJsdXI/OiAoZXY6IGFueSkgPT4gdm9pZDtcblx0dmFsdWU6IG51bWJlcjtcblx0bWluWWVhcj86IG51bWJlcjsgLy8gRGVmYXVsdHMgdG8gMTk3MFxuXHRtYXhZZWFyPzogbnVtYmVyOyAvLyBEZWZhdWx0cyB0byBjdXJyZW50IHllYXJcblx0ZXJyb3I/OiBib29sZWFuOyAvLyBEZWZhdWx0cyB0byBmYWxzZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gWWVhclNlbGVjdChwcm9wczogWWVhclNlbGVjdFByb3BzICYgT21pdDxTZWdtZW50UHJvcHMsICdvbkNoYW5nZSc+KSB7XG5cdGNvbnN0IHRoaXNZZWFyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xuXHRjb25zdCB7dmFsdWUsIG1pblllYXIgPSAxOTcwLCBtYXhZZWFyID0gdGhpc1llYXIsIG9uQ2hhbmdlLCBvbkJsdXIsIGVycm9yLCAuLi5yZXN0fSA9IHByb3BzO1xuXG5cdGNvbnN0IGF2YWlsYWJsZVllYXJzOiBEcm9wZG93bkl0ZW1Qcm9wc1tdID0gW107XG5cdGZvciAobGV0IGkgPSBtYXhZZWFyOyBpID49IG1pblllYXI7IGktLSkge1xuXHRcdGF2YWlsYWJsZVllYXJzLnB1c2goe3ZhbHVlOiBpLCB0ZXh0OiBpLnRvU3RyaW5nKCksIGtleTogaX0pO1xuXHR9XG5cblx0cmV0dXJuIChcblx0XHQ8U2VnbWVudCBiYXNpYyBjb21wYWN0IHN0eWxlPXt7cGFkZGluZzogMCwgbWFyZ2luOiAwfX0gey4uLnJlc3R9PlxuXHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRiYXNpY1xuXHRcdFx0XHRpY29uXG5cdFx0XHRcdHR5cGU9XCJidXR0b25cIlxuXHRcdFx0XHRjb2xvcj17ZXJyb3IgPyAncmVkJyA6ICdncmVlbid9XG5cdFx0XHRcdGRpc2FibGVkPXt2YWx1ZSA8PSBtaW5ZZWFyfVxuXHRcdFx0XHRvbkNsaWNrPXsoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKG9uQ2hhbmdlKSBvbkNoYW5nZSh2YWx1ZSAtIDEpO1xuXHRcdFx0XHR9fVxuXHRcdFx0XHRvbkJsdXI9e29uQmx1cn1cblx0XHRcdD5cblx0XHRcdFx0PEljb24gbmFtZT1cImFycm93IGxlZnRcIiAvPlxuXHRcdFx0PC9CdXR0b24+XG5cdFx0XHQ8RHJvcGRvd25cblx0XHRcdFx0aWNvbj17PGRpdiAvPn1cblx0XHRcdFx0YnV0dG9uXG5cdFx0XHRcdGJhc2ljXG5cdFx0XHRcdHNjcm9sbGluZ1xuXHRcdFx0XHR2YWx1ZT17dmFsdWV9XG5cdFx0XHRcdG9wdGlvbnM9e2F2YWlsYWJsZVllYXJzfVxuXHRcdFx0XHRvbkNoYW5nZT17KGUsIHZhbCkgPT4ge1xuXHRcdFx0XHRcdGlmICh0eXBlb2YgdmFsLnZhbHVlID09PSAnbnVtYmVyJyAmJiBvbkNoYW5nZSkgb25DaGFuZ2UodmFsLnZhbHVlKTtcblx0XHRcdFx0fX1cblx0XHRcdFx0ZXJyb3I9e2Vycm9yfVxuXHRcdFx0XHRvbkJsdXI9e29uQmx1cn1cblx0XHRcdC8+XG5cdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdGJhc2ljXG5cdFx0XHRcdGljb25cblx0XHRcdFx0dHlwZT1cImJ1dHRvblwiXG5cdFx0XHRcdGNvbG9yPXtlcnJvciA/ICdyZWQnIDogJ2dyZWVuJ31cblx0XHRcdFx0ZGlzYWJsZWQ9e3ZhbHVlID49IG1heFllYXJ9XG5cdFx0XHRcdG9uQ2xpY2s9eygpID0+IHtcblx0XHRcdFx0XHRpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKHZhbHVlICsgMSk7XG5cdFx0XHRcdH19XG5cdFx0XHRcdG9uQmx1cj17b25CbHVyfVxuXHRcdFx0XHRzdHlsZT17e21hcmdpblJpZ2h0OiAwfX1cblx0XHRcdD5cblx0XHRcdFx0PEljb24gbmFtZT1cImFycm93IHJpZ2h0XCIgLz5cblx0XHRcdDwvQnV0dG9uPlxuXHRcdDwvU2VnbWVudD5cblx0KTtcbn1cbiIsImV4cG9ydCB7WWVhclNlbGVjdH0gZnJvbSAnLi9ZZWFyU2VsZWN0JztcbmV4cG9ydCB0eXBlIHtZZWFyU2VsZWN0UHJvcHN9IGZyb20gJy4vWWVhclNlbGVjdCc7XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHtGb3JtaWtWYWx1ZXMsIGlzRnVuY3Rpb24sIEZvcm1pa1Byb3ZpZGVyLCBpc0VtcHR5Q2hpbGRyZW59IGZyb20gJ2Zvcm1payc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7VEZvcm1Db25maWcsIFRGb3JtUHJvcHN9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHt1c2VURm9ybX0gZnJvbSAnLi91c2VURm9ybSc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLmZvcm0uVEZvcm0nKTtcblxuZXhwb3J0IGZ1bmN0aW9uIFRGb3JtPFZhbHVlcyBleHRlbmRzIEZvcm1pa1ZhbHVlcyA9IEZvcm1pa1ZhbHVlcz4ocHJvcHM6IFRGb3JtQ29uZmlnPFZhbHVlcz4pIHtcblx0Y29uc3QgdGJhZyA9IHVzZVRGb3JtPFZhbHVlcz4ocHJvcHMpO1xuXHRjb25zdCB7Y29tcG9uZW50LCByZW5kZXIsIGNoaWxkcmVuLCBpbm5lclJlZn0gPSBwcm9wcztcblxuXHQvLyBUaGlzIGFsbG93cyBmb2xrcyB0byBwYXNzIGEgcmVmIHRvIDxGb3JtaWsgLz5cblx0UmVhY3QudXNlSW1wZXJhdGl2ZUhhbmRsZShpbm5lclJlZiwgKCkgPT4gdGJhZyk7XG5cblx0bGV0IGNoaWxkID0gbnVsbDtcblx0aWYgKGNvbXBvbmVudCkge1xuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRjaGlsZCA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoY29tcG9uZW50LCB0YmFnKTtcblx0fSBlbHNlIGlmIChyZW5kZXIpIHtcblx0XHRjaGlsZCA9IHJlbmRlcih0YmFnKTtcblx0fSBlbHNlIGlmIChjaGlsZHJlbikge1xuXHRcdGlmIChpc0Z1bmN0aW9uKGNoaWxkcmVuKSkge1xuXHRcdFx0Y2hpbGQgPSAoY2hpbGRyZW4gYXMgKGJhZzogVEZvcm1Qcm9wczxWYWx1ZXM+KSA9PiBSZWFjdC5SZWFjdE5vZGUpKHRiYWcgYXMgVEZvcm1Qcm9wczxWYWx1ZXM+KTtcblx0XHR9IGVsc2UgaWYgKCFpc0VtcHR5Q2hpbGRyZW4oY2hpbGRyZW4pKSB7XG5cdFx0XHRjaGlsZCA9IFJlYWN0LkNoaWxkcmVuLm9ubHkoY2hpbGRyZW4pO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiA8Rm9ybWlrUHJvdmlkZXIgdmFsdWU9e3RiYWd9PntjaGlsZH08L0Zvcm1pa1Byb3ZpZGVyPjtcbn1cbiIsImV4cG9ydCB7VEZvcm19IGZyb20gJy4vVEZvcm0nO1xuZXhwb3J0IHt1c2VURm9ybX0gZnJvbSAnLi91c2VURm9ybSc7XG5leHBvcnQgdHlwZSB7VEZvcm1Qcm9wc30gZnJvbSAnLi90eXBlcyc7XG4iLCJpbXBvcnQgZmxhdHRlbiBmcm9tICdmbGF0JztcbmltcG9ydCB7Rm9ybWlrVmFsdWVzLCB1c2VGb3JtaWssIEZvcm1pa0Vycm9ycywgRm9ybWlrVG91Y2hlZH0gZnJvbSAnZm9ybWlrJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgcHJvcGVydHkgZnJvbSAnbG9kYXNoL3Byb3BlcnR5JztcbmltcG9ydCB1bmlxIGZyb20gJ2xvZGFzaC91bmlxJztcbmltcG9ydCB7Rm9ybUV2ZW50LCB1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge01lc3NhZ2UsIFNlZ21lbnR9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtURm9ybUNvbmZpZ30gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VURm9ybTxWYWx1ZXMgZXh0ZW5kcyBGb3JtaWtWYWx1ZXMgPSBGb3JtaWtWYWx1ZXMsIEluaXRpYWxWYWx1ZXMgPSBhbnk+KGNvbmZpZzogVEZvcm1Db25maWc8VmFsdWVzLCBJbml0aWFsVmFsdWVzPikge1xuXHRjb25zdCB7cmVuZGVyLCBjaGlsZHJlbiwgLi4ucmVzdH0gPSBjb25maWc7XG5cdC8vIEB0cy1pZ25vcmVcblx0Y29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHJlc3QpO1xuXG5cdHVzZUVmZmVjdCgoKSA9PiB7XG5cdFx0aWYgKGNvbmZpZy5vblZhbGlkYXRlKSBjb25maWcub25WYWxpZGF0ZShmb3JtaWsuaXNWYWxpZCk7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuXHR9LCBbZm9ybWlrLmlzVmFsaWQsIGNvbmZpZy5vblZhbGlkYXRlXSk7XG5cblx0Ly8gR2V0IHN1Ym1pdCBmdW5jdGlvblxuXHR1c2VFZmZlY3QoKCkgPT4ge1xuXHRcdGlmIChjb25maWcuZ2V0U3VibWl0Rm4pIGNvbmZpZy5nZXRTdWJtaXRGbihmb3JtaWsuc3VibWl0Rm9ybSk7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuXHR9LCBbZm9ybWlrLnN1Ym1pdEZvcm0sIGNvbmZpZy5nZXRTdWJtaXRGbl0pO1xuXG5cdC8vIE9uIGNoYW5nZSBldmVudCAoaWYgdGhpcyBlbmRzIHVwIGNoYW5naW5nIHZhbHVlcyBpdCB3aWxsIGN5Y2xlKVxuXHR1c2VFZmZlY3QoKCkgPT4ge1xuXHRcdGlmIChjb25maWcub25DaGFuZ2UpIGNvbmZpZy5vbkNoYW5nZShmb3JtaWsudmFsdWVzKTtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG5cdH0sIFtmb3JtaWsudmFsdWVzXSk7XG5cblx0Ly8gTWFyayB0aGUgZXJyb3IgY2xlYXJlZCBpZiB0aGUgZm9ybSBoYXMgYmVlbiBlZGl0ZWQgYWZ0ZXIgYW4gZXJyb3Jcblx0Y29uc3QgW2Vycm9yQ2xlYXJlZCwgc2V0RXJyb3JDbGVhcmVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblx0dXNlRWZmZWN0KCgpID0+IHtcblx0XHRpZiAoY29uZmlnLmVycm9yICYmIGNvbmZpZy5lcnJvci5tZXNzYWdlICYmICFmb3JtaWsuaXNTdWJtaXR0aW5nKSB7XG5cdFx0XHRzZXRFcnJvckNsZWFyZWQodHJ1ZSk7XG5cdFx0fVxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcblx0fSwgW2Zvcm1pay52YWx1ZXMsIGNvbmZpZy5lcnJvcl0pO1xuXG5cdC8vIEZsYXR0ZW4gdGhlIHdhcm5pbmdzIChmb3JtaWsgZXJyb3JzKSBhbmQgdG91Y2ggb2JqZWN0cy5cblx0Y29uc3QgZmxhdFdhcm5pbmdzID0gZmxhdHRlbjxGb3JtaWtFcnJvcnM8VmFsdWVzPiwge1trZXk6IHN0cmluZ106IHN0cmluZ30+KGZvcm1pay5lcnJvcnMpO1xuXHRjb25zdCBmbGF0VG91Y2hlZCA9IGZsYXR0ZW48Rm9ybWlrVG91Y2hlZDxWYWx1ZXM+LCB7W2tleTogc3RyaW5nXTogc3RyaW5nfT4oZm9ybWlrLnRvdWNoZWQpO1xuXG5cdC8vIENyZWF0ZSBhbiBhcnJheSBvZiBzdHJpbmdzIHRoYXQgYXJlIHdhcm5pbmdzIChmb3JtaWsgZXJyb3JzKS4gSWYgdGhlIHN1Ym1pdCBjb3VudCBpcyBncmVhdGVyIHRoYW4gMFxuXHQvLyB0aGVuIGl0IHdpbGwgc2hvdyBhbGwgd2FybmluZ3MuIE90aGVyd2lzZSBvbmx5IHRvdWNoZWQgZmllbGQgd2FybmluZ3Mgd2lsbCBiZSBhZGRlZCB0byB0aGlzIGFycmF5LlxuXHRjb25zdCB3YXJuaW5nczogc3RyaW5nW10gPSB1bmlxKFxuXHRcdE9iamVjdC5rZXlzKGZsYXRXYXJuaW5ncykucmVkdWNlPHN0cmluZ1tdPigobWVtbywgdmFsdWUpID0+IHtcblx0XHRcdGNvbnN0IGlzVG91Y2hlZCA9IGZsYXRUb3VjaGVkW3ZhbHVlXTtcblx0XHRcdGlmIChpc1RvdWNoZWQgfHwgZm9ybWlrLnN1Ym1pdENvdW50ID4gMCkge1xuXHRcdFx0XHRyZXR1cm4gWy4uLm1lbW8sIGdldChmbGF0V2FybmluZ3MsIHZhbHVlKV07XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWVtbztcblx0XHR9LCBbXSksXG5cdCk7XG5cblx0Ly8gQ3JlYXRlIGFuIGFycmF5IG9mIHN0cmluZ3MgdGhhdCBhcmUgZXJyb3JzIChncmFwaHFsIGVycm9ycykuXG5cdGxldCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cdGxldCBlcnJvckhlYWRlciA9ICcnO1xuXHRpZiAoY29uZmlnLmVycm9yICYmIGNvbmZpZy5lcnJvci5tZXNzYWdlKSB7XG5cdFx0aWYgKGNvbmZpZy5lcnJvci5ncmFwaFFMRXJyb3JzKSB7XG5cdFx0XHRlcnJvcnMgPSBjb25maWcuZXJyb3IuZ3JhcGhRTEVycm9ycy5yZWR1Y2UoKG1lbW8sIHYpID0+IHtcblx0XHRcdFx0aWYgKHYubWVzc2FnZSkgcmV0dXJuIFsuLi5tZW1vLCB2Lm1lc3NhZ2VdO1xuXHRcdFx0XHRyZXR1cm4gbWVtbztcblx0XHRcdH0sIFtdIGFzIHN0cmluZ1tdKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgZXJyb3JNZXNzYWdlID0gY29uZmlnLmVycm9yLm1lc3NhZ2Uuc2xpY2UoY29uZmlnLmVycm9yLm1lc3NhZ2UuaW5kZXhPZignOiAnKSArIDEpO1xuXHRcdFx0ZXJyb3JzLnB1c2goZXJyb3JNZXNzYWdlKTtcblx0XHR9XG5cdFx0ZXJyb3JIZWFkZXIgPSBjb25maWcuZXJyb3IubWVzc2FnZS5zbGljZSgwLCBjb25maWcuZXJyb3IubWVzc2FnZS5pbmRleE9mKCc6ICcpKTtcblx0fVxuXHRlcnJvcnMgPSB1bmlxKGVycm9ycyk7XG5cblx0Ly8gQ2hlY2sgaWYgdGhlcmUgYXJlIHdhcm5pbmdzIG9yIGVycm9yc1xuXHRjb25zdCBoYXNXYXJuaW5ncyA9ICEoZm9ybWlrLmlzVmFsaWQgfHwgd2FybmluZ3MubGVuZ3RoID09PSAwKTtcblx0Y29uc3QgaGFzRXJyb3JzID0gZXJyb3JzLmxlbmd0aCA+IDA7XG5cblx0Ly8gUmVuZGVyIHRoZSB3YXJuaW5nc1xuXHRmdW5jdGlvbiByZW5kZXJXYXJuaW5ncygpIHtcblx0XHRpZiAoIWhhc1dhcm5pbmdzICYmICFoYXNFcnJvcnMpIHJldHVybiBudWxsO1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8TWVzc2FnZSB3YXJuaW5nPXtoYXNXYXJuaW5nc30gZXJyb3I9e2hhc0Vycm9ycyAmJiAhaGFzV2FybmluZ3N9PlxuXHRcdFx0XHQ8TWVzc2FnZS5IZWFkZXI+e2hhc1dhcm5pbmdzID8gJ1NvbWUgZmllbGRzIGFyZSBub3QgY29tcGxldGU6JyA6IGAke2Vycm9ySGVhZGVyfTpgfTwvTWVzc2FnZS5IZWFkZXI+XG5cdFx0XHRcdHsvKiBQdXQgaXQgaW4gYSBzZWdtZW50IHRvIG1ha2Ugc3VyZSB0aGUgZXJyb3JNZXNzYWdlIGlzbid0IHRvbyBiaWcgd2hlbiB0aGVyZSBhcmUgYSBsb3Qgb2YgZXJyb3JzICovfVxuXHRcdFx0XHQ8U2VnbWVudCBzdHlsZT17e292ZXJmbG93OiAnYXV0bycsIG1heEhlaWdodDogMTAwfX0+XG5cdFx0XHRcdFx0eyhoYXNXYXJuaW5ncyA/IHdhcm5pbmdzIDogZXJyb3JzKS5tYXAobXNnID0+IChcblx0XHRcdFx0XHRcdDxkaXYga2V5PXttc2d9Pnttc2d9PC9kaXY+XG5cdFx0XHRcdFx0KSl9XG5cdFx0XHRcdDwvU2VnbWVudD5cblx0XHRcdDwvTWVzc2FnZT5cblx0XHQpO1xuXHR9XG5cblx0Ly8gUmV0dXJucyB0cnVlIGlmIHRoZSBmaWVsZCBoYXMgYW4gZXJyb3Jcblx0ZnVuY3Rpb24gZmllbGRFcnJvcihmaWVsZE5hbWU6IGtleW9mIFZhbHVlcyB8IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiAoISFwcm9wZXJ0eShmaWVsZE5hbWUpKGZvcm1pay50b3VjaGVkKSB8fCBmb3JtaWsuc3VibWl0Q291bnQgPiAwKSAmJiAhIXByb3BlcnR5KGZpZWxkTmFtZSkoZm9ybWlrLmVycm9ycyk7XG5cdH1cblxuXHQvLyBIYW5kbGVzIHRoZSBmb3JtIHN1Ym1pdFxuXHRmdW5jdGlvbiBoYW5kbGVTdWJtaXQoZT86IEZvcm1FdmVudDxIVE1MRm9ybUVsZW1lbnQ+KSB7XG5cdFx0c2V0RXJyb3JDbGVhcmVkKGZhbHNlKTtcblx0XHRmb3JtaWsuaGFuZGxlU3VibWl0KGUpO1xuXHR9XG5cblx0cmV0dXJuIHtcblx0XHQuLi5mb3JtaWssXG5cdFx0aGFzRXJyb3JzOiBoYXNFcnJvcnMgJiYgIWVycm9yQ2xlYXJlZCxcblx0XHRoYXNXYXJuaW5ncyxcblx0XHRpc1ZhbGlkOiAhaGFzV2FybmluZ3MsXG5cdFx0bG9hZGluZzogY29uZmlnLmxvYWRpbmcgPyBjb25maWcubG9hZGluZyA6IGZhbHNlLFxuXHRcdHN1Ym1pdERpc2FibGVkOiBoYXNXYXJuaW5ncyB8fCBmb3JtaWsuaXNTdWJtaXR0aW5nLFxuXHRcdGVycm9yTWFya2VkQ2xlYXJlZDogZXJyb3JDbGVhcmVkLFxuXHRcdGZvcm1FcnJvcjogaGFzRXJyb3JzICYmICFoYXNXYXJuaW5ncyAmJiAhZXJyb3JDbGVhcmVkICYmICFmb3JtaWsuaXNTdWJtaXR0aW5nLCAvLyBDb252ZW5pZW5jZVxuXHRcdHJlbmRlcldhcm5pbmdzLFxuXHRcdGZpZWxkRXJyb3IsXG5cdFx0aGFuZGxlU3VibWl0LFxuXHR9O1xufVxuIiwiaW1wb3J0IHR5cGUge0xvY2FsRGF0ZX0gZnJvbSAnQGpzLWpvZGEvY29yZSc7XG5pbXBvcnQge2Zvcm1hdERhdGV9IGZyb20gJ0B0aHgvZGF0ZSc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHt1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IENyZWRpdENhcmRzLCB7Rm9jdXNlZH0gZnJvbSAncmVhY3QtY3JlZGl0LWNhcmRzJztcbmltcG9ydCAncmVhY3QtY3JlZGl0LWNhcmRzL2VzL3N0eWxlcy1jb21waWxlZC5jc3MnO1xuaW1wb3J0IHtGb3JtLCBHcmlkLCBJbnB1dCwgSW5wdXRQcm9wc30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHtNb250aFllYXJQaWNrZXJ9IGZyb20gJy4uLy4uL2RhdGUvTW9udGhZZWFyUGlja2VyJztcbmltcG9ydCB7Q3JlZGl0Q2FyZE51bWJlcklucHV0fSBmcm9tICcuL0NyZWRpdENhcmROdW1iZXJJbnB1dCc7XG5pbXBvcnQgJy4vc3R5bGVzLmNzcyc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLmlucHV0cy5DcmVkaXRDYXJkSW5wdXQnKTtcblxuZXhwb3J0IGludGVyZmFjZSBDcmVkaXRDYXJkRGF0YSB7XG5cdG51bWJlcj86IHN0cmluZztcblx0bmFtZT86IHN0cmluZztcblx0Y3ZjPzogc3RyaW5nO1xuXHRleHBpcnk/OiBMb2NhbERhdGU7XG59XG5cbmV4cG9ydCB0eXBlIENyZWRpdENhcmRJbnB1dFByb3BzID0ge1xuXHR2YWx1ZT86IENyZWRpdENhcmREYXRhO1xuXHRvbkNoYW5nZT86IChkYXRhOiBDcmVkaXRDYXJkRGF0YSkgPT4gdm9pZDtcbn0gJiBQaWNrPElucHV0UHJvcHMsICdkaXNhYmxlZCcgfCAnb25CbHVyJz47XG5cbmV4cG9ydCBmdW5jdGlvbiBDcmVkaXRDYXJkSW5wdXQocHJvcHM6IENyZWRpdENhcmRJbnB1dFByb3BzKSB7XG5cdGNvbnN0IHtvbkJsdXIsIGRpc2FibGVkLCBvbkNoYW5nZSwgdmFsdWV9ID0gcHJvcHM7XG5cdGNvbnN0IHtuYW1lLCBudW1iZXIsIGN2YywgZXhwaXJ5fSA9IHZhbHVlIHx8IHt9O1xuXG5cdGNvbnN0IFtmb2N1cywgc2V0Rm9jdXNdID0gdXNlU3RhdGU8Rm9jdXNlZD4oJ251bWJlcicpO1xuXG5cdHJldHVybiAoXG5cdFx0PEdyaWQ+XG5cdFx0XHQ8R3JpZC5Db2x1bW4gd2lkdGg9ezR9PlxuXHRcdFx0XHQ8Rm9ybT5cblx0XHRcdFx0XHQ8Rm9ybS5Hcm91cD5cblx0XHRcdFx0XHRcdDxGb3JtLkZpZWxkIHdpZHRoPXs5fT5cblx0XHRcdFx0XHRcdFx0PGxhYmVsPk51bWJlcjwvbGFiZWw+XG5cdFx0XHRcdFx0XHRcdDxDcmVkaXRDYXJkTnVtYmVySW5wdXRcblx0XHRcdFx0XHRcdFx0XHRvbkZvY3VzPXsoKSA9PiBzZXRGb2N1cygnbnVtYmVyJyl9XG5cdFx0XHRcdFx0XHRcdFx0b25CbHVyPXtvbkJsdXJ9XG5cdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9e3YgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2UgJiYgb25DaGFuZ2Uoe25hbWUsIG51bWJlcjogdiwgY3ZjLCBleHBpcnl9KTtcblx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdGRpc2FibGVkPXtkaXNhYmxlZH1cblx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdDwvRm9ybS5GaWVsZD5cblx0XHRcdFx0XHRcdDxGb3JtLkZpZWxkIHdpZHRoPXs0fT5cblx0XHRcdFx0XHRcdFx0PGxhYmVsPkNWQzwvbGFiZWw+XG5cdFx0XHRcdFx0XHRcdDxJbnB1dFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlPXtjdmMgfHwgJyd9XG5cdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyhldiwgdikgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2UgJiYgb25DaGFuZ2Uoe25hbWUsIG51bWJlciwgY3ZjOiB2LnZhbHVlLCBleHBpcnl9KTtcblx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdG9uRm9jdXM9eygpID0+IHNldEZvY3VzKCdjdmMnKX1cblx0XHRcdFx0XHRcdFx0XHRvbkJsdXI9eygpID0+IHNldEZvY3VzKCduYW1lJyl9XG5cdFx0XHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e2Rpc2FibGVkfVxuXHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0PC9Gb3JtLkZpZWxkPlxuXHRcdFx0XHRcdDwvRm9ybS5Hcm91cD5cblx0XHRcdFx0XHQ8Rm9ybS5Hcm91cD5cblx0XHRcdFx0XHRcdDxGb3JtLkZpZWxkIHdpZHRoPXs5fT5cblx0XHRcdFx0XHRcdFx0PGxhYmVsPk5hbWU8L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHQ8SW5wdXRcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17bmFtZSB8fCAnJ31cblx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZT17KGV2LCB2KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZSAmJiBvbkNoYW5nZSh7bmFtZTogdi52YWx1ZSwgbnVtYmVyLCBjdmMsIGV4cGlyeX0pO1xuXHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0b25Gb2N1cz17KCkgPT4gc2V0Rm9jdXMoJ25hbWUnKX1cblx0XHRcdFx0XHRcdFx0XHRkaXNhYmxlZD17ZGlzYWJsZWR9XG5cdFx0XHRcdFx0XHRcdFx0Zmx1aWRcblx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdDwvRm9ybS5GaWVsZD5cblx0XHRcdFx0XHRcdDxGb3JtLkZpZWxkIHdpZHRoPXs2fT5cblx0XHRcdFx0XHRcdFx0PGxhYmVsPkV4cGlyeTwvbGFiZWw+XG5cdFx0XHRcdFx0XHRcdDxNb250aFllYXJQaWNrZXJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17ZXhwaXJ5fVxuXHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXt2ID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlICYmIG9uQ2hhbmdlKHtuYW1lLCBudW1iZXIsIGN2YywgZXhwaXJ5OiB2fSk7XG5cdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRvbkZvY3VzPXsoKSA9PiBzZXRGb2N1cygnZXhwaXJ5Jyl9XG5cdFx0XHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e2Rpc2FibGVkfVxuXHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0PC9Gb3JtLkZpZWxkPlxuXHRcdFx0XHRcdDwvRm9ybS5Hcm91cD5cblx0XHRcdFx0PC9Gb3JtPlxuXHRcdFx0PC9HcmlkLkNvbHVtbj5cblx0XHRcdDxHcmlkLkNvbHVtbiB3aWR0aD17MTJ9PlxuXHRcdFx0XHQ8Q3JlZGl0Q2FyZHNcblx0XHRcdFx0XHRjdmM9e2N2YyB8fCAnJ31cblx0XHRcdFx0XHRleHBpcnk9e2Zvcm1hdERhdGUoZXhwaXJ5LCB7Zm9ybWF0OiAnTU11dSd9KSB8fCAnJ31cblx0XHRcdFx0XHRuYW1lPXtuYW1lIHx8ICcnfVxuXHRcdFx0XHRcdG51bWJlcj17bnVtYmVyIHx8ICcnfVxuXHRcdFx0XHRcdGZvY3VzZWQ9e2ZvY3VzfVxuXHRcdFx0XHRcdGNhbGxiYWNrPXsoYSwgYikgPT4ge1xuXHRcdFx0XHRcdFx0ZChhLCBiKTtcblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQvPlxuXHRcdFx0PC9HcmlkLkNvbHVtbj5cblx0XHQ8L0dyaWQ+XG5cdCk7XG59XG4iLCJpbXBvcnQgY3JlZGl0Q2FyZFR5cGUgZnJvbSAnY3JlZGl0LWNhcmQtdHlwZSc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHt2YWxpZGF0ZX0gZnJvbSAnbHVobic7XG5pbXBvcnQge3VzZUNhbGxiYWNrLCB1c2VNZW1vLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtJY29uLCBJbnB1dCwgSW5wdXRQcm9wcywgU2VtYW50aWNJQ09OUywgU2VtYW50aWNDT0xPUlN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtNYXNrZWRJbnB1dFByb3BzfSBmcm9tICcuLi9NYXNrZWRJbnB1dCc7XG5pbXBvcnQge3VzZU1hc2tlZElucHV0fSBmcm9tICcuLi9NYXNrZWRJbnB1dC91c2VNYXNrZWRJbnB1dCc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLmlucHV0cy5DcmVkaXRDYXJkSW5wdXQuQ3JlZGl0Q2FyZE51bWJlcklucHV0Jyk7XG5cbmludGVyZmFjZSBDcmVkaXRDYXJkTnVtYmVySW5wdXRQcm9wcyB7XG5cdG9uQ2hhbmdlPzogKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHZvaWQ7XG5cdHZhbHVlPzogc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBnZXRJY29uKHR5cGU6IHN0cmluZyk6IFNlbWFudGljSUNPTlMge1xuXHRzd2l0Y2ggKHR5cGUpIHtcblx0XHRjYXNlICd2aXNhJzpcblx0XHRcdHJldHVybiAnY2MgdmlzYSc7XG5cdFx0Y2FzZSAnbWFzdGVyY2FyZCc6XG5cdFx0XHRyZXR1cm4gJ2NjIG1hc3RlcmNhcmQnO1xuXHRcdGNhc2UgJ2FtZXJpY2FuLWV4cHJlc3MnOlxuXHRcdFx0cmV0dXJuICdjYyBhbWV4Jztcblx0XHRjYXNlICdkaW5lcnMtY2x1Yic6XG5cdFx0XHRyZXR1cm4gJ2NjIGRpbmVycyBjbHViJztcblx0XHRjYXNlICdqY2InOlxuXHRcdFx0cmV0dXJuICdjYyBqY2InO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gJ2NyZWRpdCBjYXJkJztcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gQ3JlZGl0Q2FyZE51bWJlcklucHV0KHByb3BzOiBDcmVkaXRDYXJkTnVtYmVySW5wdXRQcm9wcyAmIE9taXQ8SW5wdXRQcm9wcywgJ29uQ2hhbmdlJz4pIHtcblx0Y29uc3Qge3ZhbHVlLCBvbkNoYW5nZSwgLi4ucmVzdH0gPSBwcm9wcztcblx0Y29uc3QgW2ljb24sIHNldEljb25dID0gdXNlU3RhdGU8U2VtYW50aWNJQ09OUz4oJ2NyZWRpdCBjYXJkJyk7XG5cdGNvbnN0IFtjb2xvciwgc2V0Q29sb3JdID0gdXNlU3RhdGU8U2VtYW50aWNDT0xPUlM+KCdibGFjaycpO1xuXG5cdGNvbnN0IGNoZWNrVmFsaWRhdGlvbiA9IHVzZUNhbGxiYWNrKCh2YWx1ZUFycmF5OiBzdHJpbmdbXSkgPT4ge1xuXHRcdGNvbnN0IG51bSA9IHZhbHVlQXJyYXkuam9pbignJykucmVwbGFjZUFsbCgvKF98XFxzKS9nLCAnJyk7XG5cdFx0Y29uc3QgdHlwID0gY3JlZGl0Q2FyZFR5cGUobnVtKTtcblx0XHRjb25zdCBpc1ZhbGlkID0gdmFsaWRhdGUobnVtKTtcblxuXHRcdGlmICh0eXAubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRzZXRJY29uKGdldEljb24odHlwWzBdLnR5cGUpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c2V0SWNvbignY3JlZGl0IGNhcmQnKTtcblx0XHR9XG5cblx0XHRpZiAobnVtLmxlbmd0aCA+IDApIHtcblx0XHRcdGlmIChpc1ZhbGlkKSB7XG5cdFx0XHRcdHNldENvbG9yKCdncmVlbicpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c2V0Q29sb3IoJ3JlZCcpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRzZXRDb2xvcignYmxhY2snKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gaXNWYWxpZDtcblx0fSwgW10pO1xuXG5cdGNvbnN0IGNyZWRpdENhcmRNYXNrOiBNYXNrZWRJbnB1dFByb3BzWydtYXNrJ10gPSB1c2VNZW1vKFxuXHRcdCgpID0+ICh7XG5cdFx0XHRtYXNrOiAnOTk5OSA5OTk5IDk5OTkgOTk5OScsXG5cdFx0XHRpc0NvbXBsZXRlOiBjaGVja1ZhbGlkYXRpb24sXG5cdFx0XHRhdXRvVW5tYXNrOiB0cnVlLFxuXHRcdH0pLFxuXHRcdFtjaGVja1ZhbGlkYXRpb25dLFxuXHQpO1xuXG5cdGNvbnN0IGNhcmROdW1iZXJSZWYgPSB1c2VNYXNrZWRJbnB1dCh7XG5cdFx0bWFzazogY3JlZGl0Q2FyZE1hc2ssXG5cdFx0dmFsdWUsXG5cdFx0b25DaGFuZ2U6IHYgPT4ge1xuXHRcdFx0Y29uc3QgdHlwID0gY3JlZGl0Q2FyZFR5cGUodiB8fCAnJyk7XG5cdFx0XHRkKHYsIHR5cCk7XG5cdFx0XHQvLyBjaGVja1ZhbGlkYXRpb24oW3YgfHwgJyddKTtcblx0XHRcdG9uQ2hhbmdlICYmIG9uQ2hhbmdlKHYpO1xuXHRcdH0sXG5cdH0pO1xuXG5cdHJldHVybiAoXG5cdFx0PElucHV0IHsuLi5yZXN0fSBpY29uPlxuXHRcdFx0PGlucHV0IHJlZj17Y2FyZE51bWJlclJlZn0gLz5cblx0XHRcdDxJY29uIG5hbWU9e2ljb259IGNvbG9yPXtjb2xvcn0gc2l6ZT1cImxhcmdlXCIgLz5cblx0XHQ8L0lucHV0PlxuXHQpO1xufVxuIiwiZXhwb3J0IHtDcmVkaXRDYXJkSW5wdXR9IGZyb20gJy4vQ3JlZGl0Q2FyZElucHV0JztcbmV4cG9ydCB0eXBlIHtDcmVkaXRDYXJkSW5wdXRQcm9wc30gZnJvbSAnLi9DcmVkaXRDYXJkSW5wdXQnO1xuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7SW5wdXQsIElucHV0UHJvcHN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB7dXNlTWFza2VkSW5wdXQsIFVzZU1hc2tlZElucHV0UHJvcHN9IGZyb20gJy4vdXNlTWFza2VkSW5wdXQnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5pbnB1dHMuTWFza2VkSW5wdXQnKTtcblxuZXhwb3J0IHR5cGUgTWFza2VkSW5wdXRQcm9wcyA9IHtcblx0bmFtZT86IHN0cmluZztcblx0b25CbHVyPzogKGV2ZW50OiBhbnkpID0+IHZvaWQ7XG59ICYgVXNlTWFza2VkSW5wdXRQcm9wcyAmXG5cdE9taXQ8SW5wdXRQcm9wcywgJ29uQ2hhbmdlJz47XG5cbmV4cG9ydCBmdW5jdGlvbiBNYXNrZWRJbnB1dChwcm9wczogTWFza2VkSW5wdXRQcm9wcykge1xuXHRjb25zdCB7bmFtZSwgb25CbHVyLCBkaXNhYmxlZCwgb25DaGFuZ2UsIG1hc2ssIHZhbHVlLCAuLi5yZXN0fSA9IHByb3BzO1xuXG5cdGNvbnN0IGlucHV0UmVmID0gdXNlTWFza2VkSW5wdXQoe21hc2ssIHZhbHVlLCBvbkNoYW5nZX0pO1xuXG5cdHJldHVybiAoXG5cdFx0PElucHV0IHsuLi5yZXN0fT5cblx0XHRcdDxpbnB1dCBkaXNhYmxlZD17ZGlzYWJsZWR9IG5hbWU9e25hbWV9IHJlZj17aW5wdXRSZWZ9IG9uQmx1cj17b25CbHVyfSAvPlxuXHRcdDwvSW5wdXQ+XG5cdCk7XG59XG4iLCJleHBvcnQge01hc2tlZElucHV0fSBmcm9tICcuL01hc2tlZElucHV0JztcbmV4cG9ydCB7dXNlTWFza2VkSW5wdXR9IGZyb20gJy4vdXNlTWFza2VkSW5wdXQnO1xuZXhwb3J0IHR5cGUge01hc2tlZElucHV0UHJvcHN9IGZyb20gJy4vTWFza2VkSW5wdXQnO1xuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBJbnB1dG1hc2sgZnJvbSAnaW5wdXRtYXNrJztcbmltcG9ydCB7dXNlRWZmZWN0LCB1c2VSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VEZWVwQ29tcGFyZUVmZmVjdCBmcm9tICd1c2UtZGVlcC1jb21wYXJlLWVmZmVjdCc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLmlucHV0cy5NYXNrZWRJbnB1dC51c2VNYXNrZWRJbnB1dCcpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZU1hc2tlZElucHV0UHJvcHMge1xuXHR2YWx1ZT86IHN0cmluZztcblx0b25DaGFuZ2U/OiAodmFsdWU/OiBzdHJpbmcpID0+IHZvaWQ7XG5cdG1hc2s/OiBJbnB1dG1hc2suT3B0aW9ucztcblx0b25TZXQ/OiAodmFsdWU/OiBzdHJpbmcpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VNYXNrZWRJbnB1dChwcm9wczogVXNlTWFza2VkSW5wdXRQcm9wcykge1xuXHRjb25zdCB7dmFsdWUsIG9uQ2hhbmdlLCBvblNldCwgbWFza30gPSBwcm9wcztcblxuXHRjb25zdCBpbnB1dEVsZW1lbnQgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuXHRjb25zdCBtYXNrSW5zdGFuY2UgPSB1c2VSZWY8SW5wdXRtYXNrLkluc3RhbmNlIHwgbnVsbD4obnVsbCk7XG5cblx0dXNlRGVlcENvbXBhcmVFZmZlY3QoKCkgPT4ge1xuXHRcdGlmICghaW5wdXRFbGVtZW50LmN1cnJlbnQpIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGdldCBpbnB1dCBlbGVtZW50Jyk7XG5cblx0XHRkKCdDcmVhdGluZyBpbnB1dCBtYXNrIGluc3RhbmNlJyk7XG5cdFx0bWFza0luc3RhbmNlLmN1cnJlbnQgPSBuZXcgSW5wdXRtYXNrKHtcblx0XHRcdC4uLm1hc2ssXG5cdFx0XHRvbmNvbXBsZXRlKCkge1xuXHRcdFx0XHRpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKGlucHV0RWxlbWVudC5jdXJyZW50Py52YWx1ZSk7XG5cdFx0XHRcdGlmIChtYXNrPy5vbmNvbXBsZXRlKSBtYXNrLm9uY29tcGxldGUoKTtcblx0XHRcdH0sXG5cdFx0XHRvbmNsZWFyZWQoKSB7XG5cdFx0XHRcdGlmIChvbkNoYW5nZSkgb25DaGFuZ2UoKTtcblx0XHRcdFx0aWYgKG1hc2s/Lm9uY2xlYXJlZCkgbWFzay5vbmNsZWFyZWQoKTtcblx0XHRcdH0sXG5cdFx0XHRvbmluY29tcGxldGUoKSB7XG5cdFx0XHRcdGlmIChvbkNoYW5nZSkgb25DaGFuZ2UoaW5wdXRFbGVtZW50LmN1cnJlbnQ/LnZhbHVlKTtcblx0XHRcdFx0aWYgKG1hc2s/Lm9uaW5jb21wbGV0ZSkgbWFzay5vbmluY29tcGxldGUoKTtcblx0XHRcdH0sXG5cdFx0fSk7XG5cdFx0bWFza0luc3RhbmNlLmN1cnJlbnQubWFzayhpbnB1dEVsZW1lbnQuY3VycmVudCk7XG5cblx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0aWYgKG1hc2tJbnN0YW5jZS5jdXJyZW50KSB7XG5cdFx0XHRcdGQoJ0NsZWFuaW5nIHVwIGlucHV0IG1hc2sgaW5zdGFuY2UnKTtcblx0XHRcdFx0bWFza0luc3RhbmNlLmN1cnJlbnQucmVtb3ZlKCk7XG5cdFx0XHRcdG1hc2tJbnN0YW5jZS5jdXJyZW50ID0gbnVsbDtcblx0XHRcdH1cblx0XHR9O1xuXHR9LCBbbWFza10pO1xuXG5cdC8vIElmIHdlIGNoYW5nZSB0aGUgdmFsdWUgcHJvcCB3ZSBuZWVkIHRvIHN5bmMgdGhlIERPTSB2YWx1ZSB0byBkaXNwbGF5IHRoZSBuZXcgdmFsdWVcblx0dXNlRWZmZWN0KCgpID0+IHtcblx0XHRpZiAoaW5wdXRFbGVtZW50LmN1cnJlbnQgJiYgaW5wdXRFbGVtZW50LmN1cnJlbnQ/LnZhbHVlICE9PSB2YWx1ZSAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRkKCdWYWx1ZSBpcyBjaGFuZ2luZzonLCB2YWx1ZSk7XG5cdFx0XHRpbnB1dEVsZW1lbnQuY3VycmVudC52YWx1ZSA9IHZhbHVlO1xuXHRcdFx0b25TZXQgJiYgb25TZXQodmFsdWUpO1xuXHRcdH1cblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG5cdH0sIFt2YWx1ZV0pO1xuXG5cdHJldHVybiBpbnB1dEVsZW1lbnQ7XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHtNYXNrZWRJbnB1dCwgTWFza2VkSW5wdXRQcm9wc30gZnJvbSAnLi4vTWFza2VkSW5wdXQnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5pbnB1dHMuUGhvbmVJbnB1dCcpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBob25lSW5wdXRQcm9wcyB7XG5cdGV4dGVuc2lvbj86IGJvb2xlYW47XG5cdG9uQ2hhbmdlPzogKHZhbHVlPzogc3RyaW5nKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUGhvbmVJbnB1dChwcm9wczogUGhvbmVJbnB1dFByb3BzICYgT21pdDxNYXNrZWRJbnB1dFByb3BzLCAnbWFzaycgfCAnb25DaGFuZ2UnPikge1xuXHRjb25zdCB7ZXh0ZW5zaW9uLCAuLi5yZXN0fSA9IHByb3BzO1xuXHRjb25zdCBtYXNrID0ge1xuXHRcdG1hc2s6IGV4dGVuc2lvbiA/ICcoKDk5OSkgOTk5LTk5OTlbIHg5OTk5XSl8KCs5ICg5OTkpIDk5OS05OTk5WyB4OTk5OV0pJyA6ICcoKDk5OSkgOTk5LTk5OTkpfCggKzkgKDk5OSkgOTk5LTk5OTkpJyxcblx0XHRncmVlZHk6IGZhbHNlLFxuXHRcdGF1dG9Vbm1hc2s6IHRydWUsXG5cdH07XG5cblx0cmV0dXJuIDxNYXNrZWRJbnB1dCB7Li4ucmVzdH0gbWFzaz17bWFza30gLz47XG59XG4iLCJleHBvcnQge1Bob25lSW5wdXR9IGZyb20gJy4vUGhvbmVJbnB1dCc7XG5leHBvcnQgdHlwZSB7UGhvbmVJbnB1dFByb3BzfSBmcm9tICcuL1Bob25lSW5wdXQnO1xuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7Q2hpbGRyZW4sIGNsb25lRWxlbWVudH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtGb3JtLCBSYWRpbywgRm9ybVJhZGlvLCBGb3JtR3JvdXBQcm9wc30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5pbnB1dHMuUmFkaW9Hcm91cCcpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJhZGlvR3JvdXBQcm9wcyB7XG5cdGNoaWxkcmVuPzogSlNYLkVsZW1lbnRbXSB8IEpTWC5FbGVtZW50O1xuXHRvbkNoYW5nZT86ICh2YWx1ZT86IHN0cmluZyB8IG51bWJlcikgPT4gdm9pZDtcblx0dmFsdWU/OiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSYWRpb0dyb3VwKHByb3BzOiBSYWRpb0dyb3VwUHJvcHMgJiBPbWl0PEZvcm1Hcm91cFByb3BzLCAnY2hpbGRyZW4nPikge1xuXHRjb25zdCB7Y2hpbGRyZW4sIG9uQ2hhbmdlLCB2YWx1ZSwgLi4ucmVzdH0gPSBwcm9wcztcblxuXHRyZXR1cm4gKFxuXHRcdDxGb3JtLkdyb3VwIHsuLi5yZXN0fT5cblx0XHRcdHtDaGlsZHJlbi5tYXAocHJvcHMuY2hpbGRyZW4sIGNoaWxkID0+IHtcblx0XHRcdFx0aWYgKGNoaWxkPy50eXBlID09PSBGb3JtUmFkaW8gfHwgY2hpbGQ/LnR5cGUgPT09IFJhZGlvIHx8IGNoaWxkPy50eXBlID09PSBGb3JtLlJhZGlvKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGNsb25lRWxlbWVudChjaGlsZCwge1xuXHRcdFx0XHRcdFx0b25DaGFuZ2U6IChldjogYW55LCBhcmdzOiB7dmFsdWU/OiBzdHJpbmcgfCBudW1iZXJ9KSA9PiB7XG5cdFx0XHRcdFx0XHRcdGlmIChvbkNoYW5nZSkgb25DaGFuZ2UoYXJncy52YWx1ZSk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogdmFsdWUgPT09IGNoaWxkLnByb3BzLnZhbHVlLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBjaGlsZDtcblx0XHRcdH0pfVxuXHRcdDwvRm9ybS5Hcm91cD5cblx0KTtcbn1cbiIsImV4cG9ydCB7UmFkaW9Hcm91cH0gZnJvbSAnLi9SYWRpb0dyb3VwJztcbmV4cG9ydCB0eXBlIHtSYWRpb0dyb3VwUHJvcHN9IGZyb20gJy4vUmFkaW9Hcm91cCc7XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7U2NyaXB0ZWxDb250ZXh0fSBmcm9tICcuL1NjcmlwdGVsQ29udGV4dCc7XG5pbXBvcnQge1NjcmlwdGVsU29ja2V0fSBmcm9tICcuL3NjcmlwdGVsJztcbmltcG9ydCB0eXBlIHtTY3JpcHRlbFBlblN0eWxlfSBmcm9tICcuL3NjcmlwdGVsL2VudW1zJztcbmltcG9ydCB0eXBlIHtSZW5kZXJlZEltYWdlfSBmcm9tICcuL3NjcmlwdGVsL21lc3NhZ2VzJztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuaW5wdXRzLlNjcmlwdGVsJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyaXB0ZWxQcm9wcyB7XG5cdG9tbmlzY3JpcHRVcmw/OiBzdHJpbmc7IC8vIERlZmF1bHRzIHRvICd3czovL2xvY2FsaG9zdDo4MDgwJ1xuXHRpbWFnZVR5cGU/OiBzdHJpbmc7IC8vIERlZmF1bHRzIHRvICdpbWFnZS9zdmcreG1sJy5cblx0c2NhbGU/OiBudW1iZXI7IC8vIERlZmF1bHRzIHRvIDFcblx0Y3JvcD86IGJvb2xlYW47IC8vIERlZmF1bHRzIHRvIGZhbHNlXG5cdHBlblN0eWxlPzogU2NyaXB0ZWxQZW5TdHlsZTsgLy8gRGVmYXVsdHMgdG8gJ1BsYWluUGVuU3R5bGUnXG5cdGNoaWxkcmVuOiBKU1guRWxlbWVudCB8IEpTWC5FbGVtZW50W107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTY3JpcHRlbCh7b21uaXNjcmlwdFVybCwgaW1hZ2VUeXBlLCBzY2FsZSwgY3JvcCwgcGVuU3R5bGUsIGNoaWxkcmVufTogU2NyaXB0ZWxQcm9wcykge1xuXHRjb25zdCBzb2NrZXQgPSB1c2VSZWY8U2NyaXB0ZWxTb2NrZXQ+KCk7XG5cdGNvbnN0IFtyZW5kZXIsIHNldFJlbmRlcl0gPSB1c2VTdGF0ZTxSZW5kZXJlZEltYWdlPigpO1xuXHRjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XG5cdGNvbnN0IFtpc1NpZ25pbmcsIHNldElzU2lnbmluZ10gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XG5cblx0dXNlRWZmZWN0KCgpID0+IHtcblx0XHRzb2NrZXQuY3VycmVudCA9IG5ldyBTY3JpcHRlbFNvY2tldCh7XG5cdFx0XHRvbW5pc2NyaXB0VXJsLFxuXHRcdFx0aW1hZ2VUeXBlLFxuXHRcdFx0c2NhbGUsXG5cdFx0XHRjcm9wLFxuXHRcdFx0cGVuU3R5bGUsXG5cdFx0fSk7XG5cblx0XHRzb2NrZXQuY3VycmVudC5vbigncmVuZGVyJywgbXNnID0+IHtcblx0XHRcdHNldFJlbmRlcihtc2cpO1xuXHRcdFx0c2V0TG9hZGluZyhmYWxzZSk7XG5cdFx0XHRzZXRSZW5kZXIodW5kZWZpbmVkKTsgLy8gdG9kbyBsb29rIGF0IHRoaXMgaW4gZnV0dXJlXG5cdFx0fSk7XG5cdFx0c29ja2V0LmN1cnJlbnQub24oJ29rQnV0dG9uRG93bicsICgpID0+IHtcblx0XHRcdHNldExvYWRpbmcodHJ1ZSk7XG5cdFx0fSk7XG5cdFx0c29ja2V0LmN1cnJlbnQub24oJ2NhbmNlbCcsICgpID0+IHtcblx0XHRcdHNldExvYWRpbmcoZmFsc2UpO1xuXHRcdFx0c2V0UmVuZGVyKHVuZGVmaW5lZCk7XG5cdFx0fSk7XG5cdFx0c29ja2V0LmN1cnJlbnQub24oJ3Blbk1vdmUnLCAoKSA9PiB7XG5cdFx0XHRzZXRJc1NpZ25pbmcodHJ1ZSk7XG5cdFx0fSk7XG5cdFx0c29ja2V0LmN1cnJlbnQub24oJ3BlblVwJywgKCkgPT4ge1xuXHRcdFx0c2V0SXNTaWduaW5nKGZhbHNlKTtcblx0XHR9KTtcblxuXHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHRpZiAoc29ja2V0LmN1cnJlbnQpIHNvY2tldC5jdXJyZW50LmNsb3NlKCk7XG5cdFx0fTtcblx0fSwgW29tbmlzY3JpcHRVcmwsIGltYWdlVHlwZSwgc2NhbGUsIGNyb3AsIHBlblN0eWxlXSk7XG5cblx0Y29uc3Qgc2NyaXB0ZWwgPSB1c2VNZW1vKCgpID0+IHtcblx0XHRyZXR1cm4ge3NvY2tldCwgcmVuZGVySW1hZ2U6IHJlbmRlciwgbG9hZGluZywgaXNTaWduaW5nfTtcblx0fSwgW2lzU2lnbmluZywgbG9hZGluZywgcmVuZGVyXSk7XG5cblx0cmV0dXJuIDxTY3JpcHRlbENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3NjcmlwdGVsfT57Y2hpbGRyZW59PC9TY3JpcHRlbENvbnRleHQuUHJvdmlkZXI+O1xufVxuIiwiaW1wb3J0IHtjcmVhdGVDb250ZXh0LCBNdXRhYmxlUmVmT2JqZWN0fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7U2NyaXB0ZWxTb2NrZXR9IGZyb20gJy4vc2NyaXB0ZWwnO1xuaW1wb3J0IHR5cGUge1JlbmRlcmVkSW1hZ2V9IGZyb20gJy4vc2NyaXB0ZWwvbWVzc2FnZXMnO1xuXG5leHBvcnQgY29uc3QgU2NyaXB0ZWxDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxcblx0e3NvY2tldDogTXV0YWJsZVJlZk9iamVjdDxTY3JpcHRlbFNvY2tldCB8IHVuZGVmaW5lZD47IHJlbmRlckltYWdlOiBSZW5kZXJlZEltYWdlIHwgdW5kZWZpbmVkOyBsb2FkaW5nOiBib29sZWFuOyBpc1NpZ25pbmc6IGJvb2xlYW59IHwgdW5kZWZpbmVkXG4+KHVuZGVmaW5lZCk7XG4iLCJleHBvcnQge1NjcmlwdGVsfSBmcm9tICcuL1NjcmlwdGVsJztcbmV4cG9ydCB0eXBlIHtTY3JpcHRlbFByb3BzfSBmcm9tICcuL1NjcmlwdGVsJztcbmV4cG9ydCB7d2l0aFNjcmlwdGVsfSBmcm9tICcuL3dpdGhTY3JpcHRlbCc7XG5leHBvcnQge1NjcmlwdGVsUGVuU3R5bGUsIFNjcmlwdGVsTWVzc2FnZUNsYXNzfSBmcm9tICcuL3NjcmlwdGVsL2VudW1zJztcbiIsImV4cG9ydCBlbnVtIFNjcmlwdGVsUGVuU3R5bGUge1xuXHRQbGFpbiA9ICdQbGFpblBlblN0eWxlJyxcblx0Q2hpc2VsID0gJ0NoaXNlbFBlblN0eWxlJyxcblx0SW5rd2VsbCA9ICdJbmt3ZWxsUGVuU3R5bGUnLFxufVxuXG5leHBvcnQgZW51bSBTY3JpcHRlbE1lc3NhZ2VDbGFzcyB7XG5cdENvbm5lY3Rpb25PcGVuID0gJ0Nvbm5lY3Rpb25PcGVuJyxcblx0RGV2aWNlT3BlblJlcXVlc3QgPSAnRGV2aWNlT3BlblJlcXVlc3QnLFxuXHREZXZpY2VPcGVuUmVzcG9uc2UgPSAnRGV2aWNlT3BlblJlc3BvbnNlJyxcblx0UmVuZGVyZWRJbWFnZSA9ICdSZW5kZXJlZEltYWdlJyxcblx0U2NyaXB0ZWxFeGNlcHRpb24gPSAnU2NyaXB0ZWxFeGNlcHRpb24nLFxuXHRCdXR0b25Eb3duID0gJ0J1dHRvbkRvd24nLFxuXHRCdXR0b25QcmVzcyA9ICdCdXR0b25QcmVzcycsXG5cdFBlbk1vdmUgPSAnUGVuTW92ZScsXG5cdFBlblVwID0gJ1BlblVwJyxcbn1cbiIsIi8qIGdsb2JhbHMgV2ViU29ja2V0OiB0cnVlICovXG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IEV2ZW50RW1pdHRlciBmcm9tICdldmVudGVtaXR0ZXIzJztcbmltcG9ydCB7U2NyaXB0ZWxNZXNzYWdlQ2xhc3MsIFNjcmlwdGVsUGVuU3R5bGV9IGZyb20gJy4vZW51bXMnO1xuaW1wb3J0IHR5cGUge0Nvbm5lY3Rpb25PcGVuLCBEZXZpY2VPcGVuUmVzcG9uc2UsIE1lc3NhZ2UsIFJlbmRlcmVkSW1hZ2V9IGZyb20gJy4vbWVzc2FnZXMnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5pbnB1dHMuU2NyaXB0ZWwuc2NyaXB0ZWwnKTtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JpcHRlbFNvY2tldEFyZ3Mge1xuXHRvbW5pc2NyaXB0VXJsPzogc3RyaW5nOyAvLyBEZWZhdWx0cyB0byAnd3M6Ly9sb2NhbGhvc3Q6ODA4MCdcblx0aW1hZ2VUeXBlPzogc3RyaW5nOyAvLyBEZWZhdWx0cyB0byAnaW1hZ2Uvc3ZnK3htbCcuXG5cdHNjYWxlPzogbnVtYmVyOyAvLyBEZWZhdWx0cyB0byAxXG5cdGNyb3A/OiBib29sZWFuOyAvLyBEZWZhdWx0cyB0byBmYWxzZVxuXHRwZW5TdHlsZT86IFNjcmlwdGVsUGVuU3R5bGU7IC8vIERlZmF1bHRzIHRvICdQbGFpblBlblN0eWxlJ1xuXHRyZW5kZXI/OiAoKSA9PiB2b2lkO1xufVxuXG5mdW5jdGlvbiBzZXJ2ZXJDb25uZWN0ZWQobXNnOiBDb25uZWN0aW9uT3Blbiwgc29ja2V0OiBXZWJTb2NrZXQpIHtcblx0ZCgnU2VydmVyIGNvbm5lY3RlZCcpO1xuXHRpZiAobXNnLnNlcnZlckluZm8uZGV2aWNlcy5sZW5ndGggPiAwKSB7XG5cdFx0Ly8gR3JhYiB0aGUgZmlyc3QgYXZhaWxhYmxlIGRldmljZVxuXHRcdGNvbnN0IGRldmljZSA9IG1zZy5zZXJ2ZXJJbmZvLmRldmljZXNbMF07XG5cdFx0c29ja2V0LnNlbmQoXG5cdFx0XHRKU09OLnN0cmluZ2lmeSh7XG5cdFx0XHRcdF9jbGFzczogJ0RldmljZU9wZW5SZXF1ZXN0Jyxcblx0XHRcdFx0dXVpZDogZGV2aWNlLnV1aWQsXG5cdFx0XHR9KSxcblx0XHQpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGRldmljZUNvbm5lY3RlZChtc2c6IERldmljZU9wZW5SZXNwb25zZSwgc29ja2V0OiBXZWJTb2NrZXQsIGFyZ3M6IFNjcmlwdGVsU29ja2V0QXJncykge1xuXHRkKGBEZXZpY2UgY29ubmVjdGVkOiAke21zZy5kZXZpY2UudXVpZH1gKTtcblx0Y29uc3Qge2ltYWdlVHlwZSwgc2NhbGUsIGNyb3AsIHBlblN0eWxlfSA9IGFyZ3M7XG5cdHNvY2tldC5zZW5kKFxuXHRcdEpTT04uc3RyaW5naWZ5KHtcblx0XHRcdF9jbGFzczogJ1JlbmRlclNldHRpbmdzVXBkYXRlUmVxdWVzdCcsXG5cdFx0XHRyZW5kZXJTZXR0aW5nczoge1xuXHRcdFx0XHRfY2xhc3M6ICdSZW5kZXJTZXR0aW5ncycsXG5cdFx0XHRcdHR5cGU6IGltYWdlVHlwZSB8fCAnaW1hZ2Uvc3ZnK3htbCcsXG5cdFx0XHRcdHNjYWxlOiBzY2FsZSB8fCAxLFxuXHRcdFx0XHRjcm9wOiBjcm9wIHx8IGZhbHNlLFxuXHRcdFx0XHRwZW5TdHlsZTogcGVuU3R5bGVcblx0XHRcdFx0XHQ/IHtcblx0XHRcdFx0XHRcdFx0cmVuZGVyRnVuY3Rpb246IHBlblN0eWxlLFxuXHRcdFx0XHRcdCAgfVxuXHRcdFx0XHRcdDoge1xuXHRcdFx0XHRcdFx0XHRyZW5kZXJGdW5jdGlvbjogU2NyaXB0ZWxQZW5TdHlsZS5QbGFpbixcblx0XHRcdFx0XHQgIH0sXG5cdFx0XHR9LFxuXHRcdH0pLFxuXHQpO1xufVxuXG5mdW5jdGlvbiByZW5kZXIobXNnOiBSZW5kZXJlZEltYWdlLCBhcmdzOiBTY3JpcHRlbFNvY2tldEFyZ3MsIGV2ZW50RW1pdHRlcjogRXZlbnRFbWl0dGVyKSB7XG5cdGQoYFJlbmRlcmVkIGltYWdlOiAke21zZy50eXBlfSAke21zZy53aWR0aH14JHttc2cuaGVpZ2h0fWApO1xuXHRldmVudEVtaXR0ZXIuZW1pdCgncmVuZGVyJywgbXNnKTtcbn1cblxuZXhwb3J0IGNsYXNzIFNjcmlwdGVsU29ja2V0IGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcblx0cHJpdmF0ZSBzb2NrZXQ6IFdlYlNvY2tldDtcblx0cHJpdmF0ZSBvcHRpb25zOiBTY3JpcHRlbFNvY2tldEFyZ3M7XG5cblx0Y29uc3RydWN0b3IoYXJnczogU2NyaXB0ZWxTb2NrZXRBcmdzKSB7XG5cdFx0c3VwZXIoKTtcblxuXHRcdHRoaXMub3B0aW9ucyA9IGFyZ3M7XG5cblx0XHR0aGlzLnNvY2tldCA9IG5ldyBXZWJTb2NrZXQoYXJncy5vbW5pc2NyaXB0VXJsIHx8ICd3czovL2xvY2FsaG9zdDo4MDgwJyk7XG5cblx0XHR0aGlzLnNvY2tldC5vbm9wZW4gPSAoKSA9PiB7XG5cdFx0XHRkKCdTb2NrZXQgb3BlbicpO1xuXHRcdH07XG5cblx0XHR0aGlzLnNvY2tldC5vbmNsb3NlID0gKCkgPT4ge1xuXHRcdFx0ZCgnU29ja2V0IGNsb3NlZCcpO1xuXHRcdH07XG5cblx0XHR0aGlzLnNvY2tldC5vbm1lc3NhZ2UgPSBldiA9PiB7XG5cdFx0XHRjb25zdCBtc2cgPSBKU09OLnBhcnNlKGV2LmRhdGEpIGFzIE1lc3NhZ2U7XG5cdFx0XHRpZiAoIW1zZy5fY2xhc3MpIHJldHVybjsgLy8gQSBtZXNzYWdlIHdpdGggbm8gY2xhc3MuXG5cblx0XHRcdHN3aXRjaCAobXNnLl9jbGFzcykge1xuXHRcdFx0XHRjYXNlIFNjcmlwdGVsTWVzc2FnZUNsYXNzLkNvbm5lY3Rpb25PcGVuOlxuXHRcdFx0XHRcdHNlcnZlckNvbm5lY3RlZChtc2csIHRoaXMuc29ja2V0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBTY3JpcHRlbE1lc3NhZ2VDbGFzcy5EZXZpY2VPcGVuUmVzcG9uc2U6XG5cdFx0XHRcdFx0ZGV2aWNlQ29ubmVjdGVkKG1zZywgdGhpcy5zb2NrZXQsIHRoaXMub3B0aW9ucyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgU2NyaXB0ZWxNZXNzYWdlQ2xhc3MuUmVuZGVyZWRJbWFnZTpcblx0XHRcdFx0XHRyZW5kZXIobXNnLCB0aGlzLm9wdGlvbnMsIHRoaXMpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFNjcmlwdGVsTWVzc2FnZUNsYXNzLlNjcmlwdGVsRXhjZXB0aW9uOlxuXHRcdFx0XHRcdGQoYFNjcmlwdGVsIEV4Y2VwdGlvbiBFcnJvcjogJHttc2cubWVzc2FnZX1gKTtcblx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRjYXNlIFNjcmlwdGVsTWVzc2FnZUNsYXNzLkJ1dHRvblByZXNzOlxuXHRcdFx0XHRcdGlmIChtc2cubGFiZWwgPT09ICdDYW5jZWwnKSB0aGlzLmVtaXQoJ2NhbmNlbCcpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFNjcmlwdGVsTWVzc2FnZUNsYXNzLkJ1dHRvbkRvd246XG5cdFx0XHRcdFx0aWYgKG1zZy5sYWJlbCA9PT0gJ09LJykgdGhpcy5lbWl0KCdva0J1dHRvbkRvd24nKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBTY3JpcHRlbE1lc3NhZ2VDbGFzcy5QZW5Nb3ZlOlxuXHRcdFx0XHRcdHRoaXMuZW1pdCgncGVuTW92ZScpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFNjcmlwdGVsTWVzc2FnZUNsYXNzLlBlblVwOlxuXHRcdFx0XHRcdHRoaXMuZW1pdCgncGVuVXAnKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdH1cblx0XHR9O1xuXHR9XG5cblx0Y2FsaWJyYXRlKCkge1xuXHRcdGQoJ2NhbGlicmF0ZScpO1xuXHRcdHRoaXMuc29ja2V0LnNlbmQoSlNPTi5zdHJpbmdpZnkoe19jbGFzczogJ0ZvcmNlUmVjYWxpYnJhdGUnfSkpO1xuXHR9XG5cblx0Y2xvc2UoKSB7XG5cdFx0dGhpcy5zb2NrZXQuY2xvc2UoKTtcblx0fVxufVxuIiwiaW1wb3J0IHtTY3JpcHRlbCwgU2NyaXB0ZWxQcm9wc30gZnJvbSAnLi9TY3JpcHRlbCc7XG5cbi8qKlxuICogQSBIb0MgdGhhdCBwcm92aWRlcyBhIGNvbm5lY3Rpb24gdG8gYSBTY3JpcHRlbCBPbW5pc2NyaXB0IGRldmljZS5cbiAqIFlvdSBjYW4gb25seSBoYXZlIGEgc2luZ2xlIGNvbm5lY3Rpb24gb3BlbiBhdCBhIHRpbWUuXG4gKiBAcGFyYW0gV3JhcHBlZENvbXBvbmVudFxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aFNjcmlwdGVsKFdyYXBwZWRDb21wb25lbnQ6IGFueSwgc2NyaXB0ZWxQcm9wczogU2NyaXB0ZWxQcm9wcykge1xuXHRyZXR1cm4gZnVuY3Rpb24gd2l0aFNjcmlwdGVsSG9DKHByb3BzOiBhbnkpIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PFNjcmlwdGVsIHsuLi5zY3JpcHRlbFByb3BzfT5cblx0XHRcdFx0PFdyYXBwZWRDb21wb25lbnQgey4uLnByb3BzfSAvPlxuXHRcdFx0PC9TY3JpcHRlbD5cblx0XHQpO1xuXHR9O1xufVxuIiwiaW1wb3J0IHR5cGUge1NjcmlwdGVsU2NoZW1hVHlwZX0gZnJvbSAnQHRoeC95dXAtdHlwZXMnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7dXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtCdXR0b24sIEltYWdlfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQge1NjcmlwdGVsQ29udGV4dH0gZnJvbSAnLi4vU2NyaXB0ZWwvU2NyaXB0ZWxDb250ZXh0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuaW5wdXRzLlNjcmlwdGVsSW5wdXQnKTtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JpcHRlbElucHV0UHJvcHMge1xuXHR2YWx1ZT86IFNjcmlwdGVsU2NoZW1hVHlwZTtcblx0b25DaGFuZ2U/OiAodmFsdWU/OiBTY3JpcHRlbFNjaGVtYVR5cGUpID0+IHZvaWQ7XG5cdGJ1dHRvblRleHQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTY3JpcHRlbElucHV0KHByb3BzOiBTY3JpcHRlbElucHV0UHJvcHMpIHtcblx0Y29uc3Qge3ZhbHVlLCBvbkNoYW5nZSwgYnV0dG9uVGV4dCA9ICdFbnRlciBTaWduYXR1cmUnfSA9IHByb3BzO1xuXHRjb25zdCBjdHggPSB1c2VDb250ZXh0KFNjcmlwdGVsQ29udGV4dCk7XG5cblx0Y29uc3QgW2VudGVyU2lnbmF0dXJlLCBzZXRFbnRlclNpZ25hdHVyZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cblx0dXNlRWZmZWN0KCgpID0+IHtcblx0XHRpZiAoZW50ZXJTaWduYXR1cmUpIHtcblx0XHRcdGlmIChvbkNoYW5nZSAmJiBjdHg/LnJlbmRlckltYWdlKSB7XG5cdFx0XHRcdHNldEVudGVyU2lnbmF0dXJlKGZhbHNlKTtcblx0XHRcdFx0aWYgKGN0eC5yZW5kZXJJbWFnZS50eXBlID09PSAnaW1hZ2Uvc3ZnK3htbCcgfHwgY3R4LnJlbmRlckltYWdlLnR5cGUgPT09ICdpbWFnZS9wbmcnKSB7XG5cdFx0XHRcdFx0b25DaGFuZ2Uoe1xuXHRcdFx0XHRcdFx0dHlwZTogY3R4LnJlbmRlckltYWdlLnR5cGUsXG5cdFx0XHRcdFx0XHR3aWR0aDogY3R4LnJlbmRlckltYWdlLndpZHRoLFxuXHRcdFx0XHRcdFx0aGVpZ2h0OiBjdHgucmVuZGVySW1hZ2UuaGVpZ2h0LFxuXHRcdFx0XHRcdFx0dGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxuXHRcdFx0XHRcdFx0ZGF0YTogY3R4LnJlbmRlckltYWdlLmRhdGEsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChvbkNoYW5nZSAmJiAhY3R4KSB7XG5cdFx0XHRcdG9uQ2hhbmdlKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcblx0fSwgW2N0eF0pO1xuXG5cdGlmIChlbnRlclNpZ25hdHVyZSkge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8ZGl2PlxuXHRcdFx0XHQ8ZGl2PntjdHg/LmlzU2lnbmluZyA/ICdzaWduaW5nLi4uJyA6ICdFbnRlciBhIHNpZ25hdHVyZSBhbmQgY2xpY2sgT0suJ308L2Rpdj5cblx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdG9uQ2xpY2s9eygpID0+IHtcblx0XHRcdFx0XHRcdHNldEVudGVyU2lnbmF0dXJlKGZhbHNlKTtcblx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdGNvbG9yPVwiYmxhY2tcIlxuXHRcdFx0XHRcdGxvYWRpbmc9e2N0eD8ubG9hZGluZ31cblx0XHRcdFx0XHRkaXNhYmxlZD17Y3R4Py5sb2FkaW5nfVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0Q2FuY2VsXG5cdFx0XHRcdDwvQnV0dG9uPlxuXHRcdFx0XHQ8QnV0dG9uIHNpemU9XCJtaW5pXCIgYXM9XCJhXCIgYmFzaWMgb25DbGljaz17KCkgPT4gY3R4Py5zb2NrZXQuY3VycmVudD8uY2FsaWJyYXRlKCl9IGRpc2FibGVkPXtjdHg/LmxvYWRpbmd9PlxuXHRcdFx0XHRcdENhbGlicmF0ZVxuXHRcdFx0XHQ8L0J1dHRvbj5cblx0XHRcdDwvZGl2PlxuXHRcdCk7XG5cdH1cblxuXHRpZiAodmFsdWUgJiYgdmFsdWUuZGF0YSkge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8ZGl2PlxuXHRcdFx0XHQ8SW1hZ2Ugc2l6ZT1cIm1lZGl1bVwiIHNyYz17dmFsdWUuZGF0YX0gYm9yZGVyZWQgLz5cblx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdHNpemU9XCJtaW5pXCJcblx0XHRcdFx0XHRjb21wYWN0XG5cdFx0XHRcdFx0b25DbGljaz17KCkgPT4ge1xuXHRcdFx0XHRcdFx0c2V0RW50ZXJTaWduYXR1cmUoZmFsc2UpO1xuXHRcdFx0XHRcdFx0aWYgKG9uQ2hhbmdlKSBvbkNoYW5nZSgpO1xuXHRcdFx0XHRcdH19XG5cdFx0XHRcdD5cblx0XHRcdFx0XHRSZXNldFxuXHRcdFx0XHQ8L0J1dHRvbj5cblx0XHRcdDwvZGl2PlxuXHRcdCk7XG5cdH1cblxuXHRyZXR1cm4gPEJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBzZXRFbnRlclNpZ25hdHVyZSh0cnVlKX0+e2J1dHRvblRleHR9PC9CdXR0b24+O1xufVxuIiwiZXhwb3J0IHtTY3JpcHRlbElucHV0fSBmcm9tICcuL1NjcmlwdGVsSW5wdXQnO1xuZXhwb3J0IHR5cGUge1NjcmlwdGVsSW5wdXRQcm9wc30gZnJvbSAnLi9TY3JpcHRlbElucHV0JztcbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQge3VzZUNhbGxiYWNrLCB1c2VNZW1vLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtJY29uLCBJbnB1dCwgU2VtYW50aWNDT0xPUlN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCBTSU4gZnJvbSAnc29jaWFsLWluc3VyYW5jZS1udW1iZXInO1xuaW1wb3J0IHR5cGUge01hc2tlZElucHV0UHJvcHN9IGZyb20gJy4uL01hc2tlZElucHV0JztcbmltcG9ydCB7dXNlTWFza2VkSW5wdXR9IGZyb20gJy4uL01hc2tlZElucHV0L3VzZU1hc2tlZElucHV0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuaW5wdXRzLlNpbklucHV0Jyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2luSW5wdXRQcm9wcyBleHRlbmRzIE9taXQ8TWFza2VkSW5wdXRQcm9wcywgJ21hc2snPiB7XG5cdHZhbHVlPzogc3RyaW5nO1xuXHRvbkNoYW5nZSh2YWx1ZT86IHN0cmluZyk6IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTaW5JbnB1dChwcm9wczogU2luSW5wdXRQcm9wcykge1xuXHRjb25zdCB7dmFsdWUsIG9uQ2hhbmdlLCAuLi5yZXN0fSA9IHByb3BzO1xuXHRjb25zdCBbY29sb3IsIHNldENvbG9yXSA9IHVzZVN0YXRlPFNlbWFudGljQ09MT1JTPignYmxhY2snKTtcblxuXHRjb25zdCBjaGVja1ZhbGlkYXRpb24gPSB1c2VDYWxsYmFjaygodmFsdWVBcnJheTogc3RyaW5nW10pID0+IHtcblx0XHRjb25zdCBudW0gPSB2YWx1ZUFycmF5LmpvaW4oJycpLnJlcGxhY2VBbGwoLyhffFxcc3wtKS9nLCAnJyk7XG5cdFx0Y29uc3QgdmFsaWRhdGUgPSBuZXcgU0lOKG51bSk7XG5cdFx0aWYgKG51bS5sZW5ndGggPiAwKSB7XG5cdFx0XHRpZiAodmFsaWRhdGUuaXNWYWxpZCgpKSB7XG5cdFx0XHRcdHNldENvbG9yKCdncmVlbicpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c2V0Q29sb3IoJ3JlZCcpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRzZXRDb2xvcignYmxhY2snKTtcblx0XHR9XG5cdFx0cmV0dXJuIHZhbGlkYXRlLmlzVmFsaWQoKTtcblx0fSwgW10pO1xuXG5cdGNvbnN0IG1hc2s6IE1hc2tlZElucHV0UHJvcHNbJ21hc2snXSA9IHVzZU1lbW8oXG5cdFx0KCkgPT4gKHtcblx0XHRcdG1hc2s6ICc5OTktOTk5LTk5OScsXG5cdFx0XHRpc0NvbXBsZXRlOiBjaGVja1ZhbGlkYXRpb24sXG5cdFx0XHRncmVlZHk6IGZhbHNlLFxuXHRcdFx0YXV0b1VubWFzazogdHJ1ZSxcblx0XHR9KSxcblx0XHRbY2hlY2tWYWxpZGF0aW9uXSxcblx0KTtcblxuXHRjb25zdCBjYXJkTnVtYmVyUmVmID0gdXNlTWFza2VkSW5wdXQoe1xuXHRcdG1hc2ssXG5cdFx0dmFsdWUsXG5cdFx0b25DaGFuZ2U6IHYgPT4ge1xuXHRcdFx0b25DaGFuZ2UgJiYgb25DaGFuZ2Uodik7XG5cdFx0fSxcblx0XHRvblNldDogdiA9PiB7XG5cdFx0XHRjaGVja1ZhbGlkYXRpb24oW3YgfHwgJyddKTtcblx0XHR9LFxuXHR9KTtcblxuXHRyZXR1cm4gKFxuXHRcdDxJbnB1dCB7Li4ucmVzdH0gaWNvbj5cblx0XHRcdDxpbnB1dCByZWY9e2NhcmROdW1iZXJSZWZ9IC8+XG5cdFx0XHQ8SWNvbiBuYW1lPVwiaWQgYmFkZ2VcIiBjb2xvcj17Y29sb3J9IHNpemU9XCJsYXJnZVwiIC8+XG5cdFx0PC9JbnB1dD5cblx0KTtcbn1cbiIsImV4cG9ydCB7U2luSW5wdXR9IGZyb20gJy4vU2luSW5wdXQnO1xuZXhwb3J0IHR5cGUge1NpbklucHV0UHJvcHN9IGZyb20gJy4vU2luSW5wdXQnO1xuIiwiaW1wb3J0IHtEcm9wZG93bn0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge0Ryb3Bkb3duUHJvcHN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtUYWJsZUNlbGxQcm9wc30gZnJvbSAnLi9UYWJsZUlucHV0JztcblxuZXhwb3J0IGZ1bmN0aW9uIERyb3Bkb3duQ2VsbDxEIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KGRyb3Bkb3duUHJvcHM6IERyb3Bkb3duUHJvcHMpIHtcblx0cmV0dXJuIGZ1bmN0aW9uIERyb3Bkb3duQ2VsbEZuKHByb3BzOiBUYWJsZUNlbGxQcm9wczxEPikge1xuXHRcdGNvbnN0IHtcblx0XHRcdHZhbHVlLFxuXHRcdFx0cm93OiB7aW5kZXg6IHJvd0luZGV4fSxcblx0XHRcdGNvbHVtbjoge2lkfSxcblx0XHRcdHVwZGF0ZURhdGEsXG5cdFx0fSA9IHByb3BzO1xuXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzLEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRcdGNvbnN0IHt2YWx1ZTogdiwgb25DaGFuZ2UsIC4uLnJlc3R9ID0gZHJvcGRvd25Qcm9wcztcblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8RHJvcGRvd25cblx0XHRcdFx0ey4uLnJlc3R9XG5cdFx0XHRcdHZhbHVlPXt2YWx1ZX1cblx0XHRcdFx0b25DaGFuZ2U9eyhldmVudCwgdmFsKSA9PiB7XG5cdFx0XHRcdFx0dXBkYXRlRGF0YShyb3dJbmRleCwgaWQsIHZhbC52YWx1ZSk7XG5cdFx0XHRcdFx0aWYgKG9uQ2hhbmdlKSBvbkNoYW5nZShldmVudCwgdmFsKTtcblx0XHRcdFx0fX1cblx0XHRcdC8+XG5cdFx0KTtcblx0fTtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgdHlwZSB7Q2VsbFByb3BzLCBSZW5kZXJlcn0gZnJvbSAncmVhY3QtdGFibGUnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5pbnB1dHMuVGFibGVJbnB1dC5Ib3ZlckNlbGwnKTtcblxuaW50ZXJmYWNlIEhvdmVyQ2VsbE9wdGlvbnM8RCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG5cdEFjdGlvbjogUmVuZGVyZXI8Q2VsbFByb3BzPEQ+Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEhvdmVyQ2VsbDxEIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KG9wdGlvbnM6IEhvdmVyQ2VsbE9wdGlvbnM8RD4pIHtcblx0cmV0dXJuIGZ1bmN0aW9uIEhvdmVyQ2VsbEZuKHByb3BzOiBDZWxsUHJvcHM8RD4pIHtcblx0XHRjb25zdCB7QWN0aW9ufSA9IG9wdGlvbnM7XG5cblx0XHQvLyBAdHMtZXhwZWN0LWVycm9yXG5cdFx0aWYgKHByb3BzLmhvdmVyUm93ID09PSBwcm9wcy5yb3cuaWQpIHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdDxkaXYgc3R5bGU9e3t0ZXh0QWxpZ246ICdyaWdodCd9fT5cblx0XHRcdFx0XHR7LyogQHRzLWV4cGVjdC1lcnJvciAqL31cblx0XHRcdFx0XHQ8QWN0aW9uIHsuLi5wcm9wc30gLz5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gbnVsbDtcblx0fTtcbn1cbiIsImltcG9ydCB7Zm9ybWF0TW9uZXl9IGZyb20gJ0B0aHgvbW9uZXknO1xuaW1wb3J0IHR5cGUgTW9uZXkgZnJvbSAnanMtbW9uZXknO1xuaW1wb3J0IHR5cGUge0NlbGxQcm9wc30gZnJvbSAncmVhY3QtdGFibGUnO1xuXG5pbnRlcmZhY2UgTW9uZXlDZWxsT3B0aW9uczxEIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcblx0LyoqIElmIHByb3ZpZGVkLCB0aGlzIGZ1bmN0aW9uIHdpbGwgb3ZlcnJpZGUgdGhlIE1vbmV5IHZhbHVlIGRpc3BsYXllZCAqL1xuXHRvdmVycmlkZVZhbHVlPzogKHByb3BzOiBDZWxsUHJvcHM8RCwgTW9uZXk+KSA9PiBNb25leTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE1vbmV5Q2VsbDxEIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KG9wdGlvbnM/OiBNb25leUNlbGxPcHRpb25zPEQ+KSB7XG5cdHJldHVybiBmdW5jdGlvbiBNb25leUNlbGxGbihwcm9wczogQ2VsbFByb3BzPEQsIE1vbmV5Pikge1xuXHRcdHJldHVybiA8ZGl2IHN0eWxlPXt7dGV4dEFsaWduOiAncmlnaHQnfX0+e2Zvcm1hdE1vbmV5KG9wdGlvbnM/Lm92ZXJyaWRlVmFsdWUgPyBvcHRpb25zLm92ZXJyaWRlVmFsdWUocHJvcHMpIDogcHJvcHMudmFsdWUpfTwvZGl2Pjtcblx0fTtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgdHlwZSBNb25leSBmcm9tICdqcy1tb25leSc7XG5pbXBvcnQge3VzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge01vbmV5SW5wdXR9IGZyb20gJy4uLy4uL21vbmV5L01vbmV5SW5wdXQnO1xuaW1wb3J0IHR5cGUge1RhYmxlQ2VsbFByb3BzfSBmcm9tICcuL1RhYmxlSW5wdXQnO1xuaW1wb3J0IHR5cGUge0FkZFJvd09uVGFiSWZ9IGZyb20gJy4vYWRkUm93T25UYWInO1xuaW1wb3J0IHthZGRSb3dPblRhYn0gZnJvbSAnLi9hZGRSb3dPblRhYic7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLmlucHV0cy5UYWJsZUlucHV0Lk1vbmV5RWRpdENlbGwnKTtcblxuaW50ZXJmYWNlIE1vbmV5RWRpdENlbGxPcHRpb25zPEQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuXHQvKiogSWYgZnVuY3Rpb24gaXMgcHJlc2VudCwgYW5kIHJldHVybnMgdHJ1ZSwgd2lsbCBhZGQgYSBuZXcgcm93IGlmIHRhYiBpcyBwcmVzc2VkIG9uIHRoZSBsYXN0IHJvdyAqL1xuXHRhZGRSb3dPblRhYklmPzogQWRkUm93T25UYWJJZjxELCBNb25leT47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBNb25leUVkaXRDZWxsPEQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ob3B0cz86IE1vbmV5RWRpdENlbGxPcHRpb25zPEQ+KSB7XG5cdHJldHVybiBmdW5jdGlvbiBNb25leUVkaXRDZWxsRm4ocHJvcHM6IFRhYmxlQ2VsbFByb3BzPEQsIE1vbmV5Pikge1xuXHRcdGNvbnN0IHtcblx0XHRcdHZhbHVlOiBpbml0aWFsVmFsdWUsXG5cdFx0XHRyb3c6IHtpbmRleDogcm93SW5kZXh9LFxuXHRcdFx0Y29sdW1uOiB7aWR9LFxuXHRcdFx0dXBkYXRlRGF0YSxcblx0XHR9ID0gcHJvcHM7XG5cblx0XHRjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKGluaXRpYWxWYWx1ZSk7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PE1vbmV5SW5wdXRcblx0XHRcdFx0Zmx1aWRcblx0XHRcdFx0dHJhbnNwYXJlbnRcblx0XHRcdFx0dmFsdWU9e3ZhbHVlfVxuXHRcdFx0XHRvbkNoYW5nZT17c2V0VmFsdWV9XG5cdFx0XHRcdG9uQmx1cj17KCkgPT4ge1xuXHRcdFx0XHRcdHVwZGF0ZURhdGEocm93SW5kZXgsIGlkLCB2YWx1ZSk7XG5cdFx0XHRcdH19XG5cdFx0XHRcdG9uS2V5RG93bj17KGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiBhZGRSb3dPblRhYihldmVudCwgdmFsdWUsIHByb3BzLCBvcHRzPy5hZGRSb3dPblRhYklmKX1cblx0XHRcdC8+XG5cdFx0KTtcblx0fTtcbn1cbiIsImltcG9ydCB7Zm9ybWF0TW9uZXksIHRvTW9uZXl9IGZyb20gJ0B0aHgvbW9uZXknO1xuaW1wb3J0IHR5cGUge0lkVHlwZSwgVGFibGVJbnN0YW5jZX0gZnJvbSAncmVhY3QtdGFibGUnO1xuXG5pbnRlcmZhY2UgTW9uZXlTdW1Gb290ZXJPcHRpb25zPEEgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuXHRpZDogSWRUeXBlPEE+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTW9uZXlTdW1Gb290ZXI8QSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihvcHRpb25zOiBNb25leVN1bUZvb3Rlck9wdGlvbnM8QT4pIHtcblx0Y29uc3Qge2lkfSA9IG9wdGlvbnMgfHwge307XG5cblx0cmV0dXJuIGZ1bmN0aW9uIE1vbmV5U3VtRm9vdGVySW5zdGFuY2UoaW5mbzogVGFibGVJbnN0YW5jZTxBPikge1xuXHRcdGNvbnN0IHN1bSA9IGluZm8ucm93cy5yZWR1Y2UoKG1lbW8sIHJvdykgPT4gbWVtby5hZGQocm93LnZhbHVlc1tpZF0pLCB0b01vbmV5KCkpO1xuXHRcdHJldHVybiA8ZGl2IHN0eWxlPXt7dGV4dEFsaWduOiAncmlnaHQnfX0+e2Zvcm1hdE1vbmV5KHN1bSl9PC9kaXY+O1xuXHR9O1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7dXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7SW5wdXQsIElucHV0UHJvcHN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtUYWJsZUNlbGxQcm9wc30gZnJvbSAnLi9UYWJsZUlucHV0JztcbmltcG9ydCB0eXBlIHtBZGRSb3dPblRhYklmfSBmcm9tICcuL2FkZFJvd09uVGFiJztcbmltcG9ydCB7YWRkUm93T25UYWJ9IGZyb20gJy4vYWRkUm93T25UYWInO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5pbnB1dHMuVGFibGVJbnB1dC5TdHJpbmdFZGl0Q2VsbCcpO1xuXG5pbnRlcmZhY2UgU3RyaW5nRWRpdENlbGxPcHRpb25zPEQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuXHQvKiogT3ZlcnJpZGUgU2VtYW50aWNVSSBJbnB1dCBwcm9wcyAqL1xuXHRpbnB1dFByb3BzPzogSW5wdXRQcm9wcztcblx0LyoqIElmIGZ1bmN0aW9uIGlzIHByZXNlbnQsIGFuZCByZXR1cm5zIHRydWUsIHdpbGwgYWRkIGEgbmV3IHJvdyBpZiB0YWIgaXMgcHJlc3NlZCBvbiB0aGUgbGFzdCByb3cgKi9cblx0YWRkUm93T25UYWJJZj86IEFkZFJvd09uVGFiSWY8RCwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFN0cmluZ0VkaXRDZWxsPEQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ob3B0aW9ucz86IFN0cmluZ0VkaXRDZWxsT3B0aW9uczxEPikge1xuXHRjb25zdCB7aW5wdXRQcm9wcywgYWRkUm93T25UYWJJZn0gPSBvcHRpb25zIHx8IHt9O1xuXG5cdHJldHVybiBmdW5jdGlvbiBTdHJpbmdFZGl0Q2VsbEZuKHByb3BzOiBUYWJsZUNlbGxQcm9wczxELCBzdHJpbmc+KSB7XG5cdFx0Y29uc3Qge1xuXHRcdFx0dmFsdWU6IGluaXRpYWxWYWx1ZSxcblx0XHRcdHJvdzoge2luZGV4fSxcblx0XHRcdGNvbHVtbjoge2lkfSxcblx0XHRcdHVwZGF0ZURhdGEsXG5cdFx0fSA9IHByb3BzO1xuXG5cdFx0Y29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZShpbml0aWFsVmFsdWUpO1xuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxJbnB1dFxuXHRcdFx0XHRmbHVpZFxuXHRcdFx0XHR0cmFuc3BhcmVudFxuXHRcdFx0XHR7Li4uaW5wdXRQcm9wc31cblx0XHRcdFx0dmFsdWU9e3ZhbHVlfVxuXHRcdFx0XHRvbkNoYW5nZT17KGV2LCB2KSA9PiB7XG5cdFx0XHRcdFx0c2V0VmFsdWUodi52YWx1ZSk7XG5cdFx0XHRcdH19XG5cdFx0XHRcdG9uQmx1cj17KCkgPT4ge1xuXHRcdFx0XHRcdHVwZGF0ZURhdGEoaW5kZXgsIGlkLCB2YWx1ZSk7XG5cdFx0XHRcdH19XG5cdFx0XHRcdG9uS2V5RG93bj17KGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiBhZGRSb3dPblRhYihldmVudCwgdmFsdWUsIHByb3BzLCBhZGRSb3dPblRhYklmKX1cblx0XHRcdC8+XG5cdFx0KTtcblx0fTtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQge0ZpZWxkQXJyYXksIEZpZWxkQXJyYXlSZW5kZXJQcm9wc30gZnJvbSAnZm9ybWlrJztcbmltcG9ydCB7dXNlTWVtbywgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7XG5cdENlbGxQcm9wR2V0dGVyLFxuXHRDZWxsUHJvcHMsXG5cdENvbHVtbixcblx0Rm9vdGVyR3JvdXBQcm9wR2V0dGVyLFxuXHRGb290ZXJQcm9wR2V0dGVyLFxuXHRIZWFkZXJHcm91cFByb3BHZXR0ZXIsXG5cdEhlYWRlclByb3BHZXR0ZXIsXG5cdFJvd1Byb3BHZXR0ZXIsXG5cdFRhYmxlQm9keVByb3BHZXR0ZXIsXG5cdHVzZVRhYmxlLFxufSBmcm9tICdyZWFjdC10YWJsZSc7XG5pbXBvcnQge1RhYmxlLCBUYWJsZVByb3BzfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLmlucHV0cy5UYWJsZUlucHV0Jyk7XG5cbnR5cGUgRGVmYXVsdFRhYmxlVHlwZSA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5pbnRlcmZhY2UgVGFibGVJbnB1dFByb3BzPEEgZXh0ZW5kcyBEZWZhdWx0VGFibGVUeXBlPiB7XG5cdG5hbWU6IHN0cmluZztcblx0dmFsdWVzOiBBW107XG5cdGNvbHVtbnM6IENvbHVtbjxBPltdO1xuXHRzZXRGaWVsZFZhbHVlOiAoZmllbGQ6IHN0cmluZywgdmFsdWU6IGFueSwgc2hvdWxkVmFsaWRhdGU/OiBib29sZWFuIHwgdW5kZWZpbmVkKSA9PiB2b2lkO1xuXHRjcmVhdGVSb3c6ICgpID0+IEE7XG5cdHRhYmxlUHJvcHM/OiBUYWJsZVByb3BzO1xuXHRoZWFkZXJSb3dQcm9wcz86IEhlYWRlckdyb3VwUHJvcEdldHRlcjxBPjtcblx0aGVhZGVyQ2VsbFByb3BzPzogSGVhZGVyUHJvcEdldHRlcjxBPjtcblx0Zm9vdGVyUm93UHJvcHM/OiBGb290ZXJHcm91cFByb3BHZXR0ZXI8QT47XG5cdGZvb3RlckNlbGxQcm9wcz86IEZvb3RlclByb3BHZXR0ZXI8QT47XG5cdGJvZHlQcm9wcz86IFRhYmxlQm9keVByb3BHZXR0ZXI8QT47XG5cdHJvd1Byb3BzPzogUm93UHJvcEdldHRlcjxBPjtcblx0Y2VsbFByb3BzPzogQ2VsbFByb3BHZXR0ZXI8QT47XG59XG5cbmludGVyZmFjZSBUYWJsZUlucHV0VGFibGVQcm9wczxBIGV4dGVuZHMgRGVmYXVsdFRhYmxlVHlwZT4gZXh0ZW5kcyBUYWJsZUlucHV0UHJvcHM8QT4ge1xuXHRhcnJheUhlbHBlcnM6IEZpZWxkQXJyYXlSZW5kZXJQcm9wcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUNlbGxQcm9wczxEIGV4dGVuZHMgRGVmYXVsdFRhYmxlVHlwZSwgViA9IGFueT4gZXh0ZW5kcyBDZWxsUHJvcHM8RCwgVj4ge1xuXHRhcnJheUhlbHBlcnM6IEZpZWxkQXJyYXlSZW5kZXJQcm9wcztcblx0YWRkUm93OiAoKSA9PiB2b2lkO1xuXHR1cGRhdGVEYXRhOiAoaW5kZXg6IG51bWJlciwgaWQ6IHN0cmluZywgdmFsdWU6IFYpID0+IHZvaWQ7XG59XG5cbmZ1bmN0aW9uIFRhYmxlSW5wdXRUYWJsZTxBIGV4dGVuZHMgRGVmYXVsdFRhYmxlVHlwZT4ocHJvcHM6IFRhYmxlSW5wdXRUYWJsZVByb3BzPEE+KSB7XG5cdGNvbnN0IHtcblx0XHRuYW1lLFxuXHRcdGNvbHVtbnMsXG5cdFx0dmFsdWVzLFxuXHRcdGFycmF5SGVscGVycyxcblx0XHRzZXRGaWVsZFZhbHVlLFxuXHRcdGNyZWF0ZVJvdyxcblx0XHR0YWJsZVByb3BzLFxuXHRcdGhlYWRlclJvd1Byb3BzLFxuXHRcdGhlYWRlckNlbGxQcm9wcyxcblx0XHRib2R5UHJvcHMsXG5cdFx0cm93UHJvcHMsXG5cdFx0Y2VsbFByb3BzLFxuXHRcdGZvb3RlckNlbGxQcm9wcyxcblx0XHRmb290ZXJSb3dQcm9wcyxcblx0fSA9IHByb3BzO1xuXHRjb25zdCBjb2xzID0gdXNlTWVtbygoKSA9PiBjb2x1bW5zLCBbY29sdW1uc10pO1xuXHRjb25zdCB2YWxzID0gdXNlTWVtbygoKSA9PiB2YWx1ZXMsIFt2YWx1ZXNdKTtcblx0Y29uc3QgW2hvdmVyUm93LCBzZXRIb3ZlclJvd10gPSB1c2VTdGF0ZSgnJyk7XG5cblx0Ly8gUmVhY3QtVGFibGUgaG9va1xuXHRjb25zdCB7Z2V0VGFibGVQcm9wcywgZ2V0VGFibGVCb2R5UHJvcHMsIGhlYWRlckdyb3VwcywgcHJlcGFyZVJvdywgcm93cywgZm9vdGVyR3JvdXBzfSA9IHVzZVRhYmxlPEE+KHtcblx0XHRjb2x1bW5zOiBjb2xzLFxuXHRcdGRhdGE6IHZhbHMsXG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdHVwZGF0ZURhdGEocm93SW5kZXgsIGNvbHVtbklkLCB2YWx1ZSkge1xuXHRcdFx0c2V0RmllbGRWYWx1ZShgJHtuYW1lfVske3Jvd0luZGV4fV0uJHtjb2x1bW5JZH1gLCB2YWx1ZSk7XG5cdFx0fSxcblx0XHRhZGRSb3coKSB7XG5cdFx0XHRhcnJheUhlbHBlcnMucHVzaChjcmVhdGVSb3coKSk7XG5cdFx0fSxcblx0XHRhcnJheUhlbHBlcnMsXG5cdH0pO1xuXG5cdC8vIEB0cy1pZ25vcmUgQ2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYSBGb290ZXIgdGhhdCBpcyBub3QgdGhlIGRlZmF1bHQgZW1wdHlSZW5kZXJlcigpXG5cdGNvbnN0IGhhc0Zvb3RlciA9IGZvb3Rlckdyb3Vwcy5zb21lKGZnID0+IGZnLmhlYWRlcnMuc29tZShmZ2ggPT4gZmdoLkZvb3Rlci5uYW1lICE9PSAnZW1wdHlSZW5kZXJlcicpKTtcblxuXHQvLyBCdWlsZCBGb290ZXIgaWYgYW55IGZvb3RlciByZW5kZXJlcnMgZXhpc3Rcblx0Y29uc3QgZm9vdGVyID0gaGFzRm9vdGVyID8gKFxuXHRcdDxUYWJsZS5Gb290ZXI+XG5cdFx0XHR7Zm9vdGVyR3JvdXBzLm1hcChncm91cCA9PiAoXG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gta2V5XG5cdFx0XHRcdDxUYWJsZS5Sb3cgey4uLnsuLi5ncm91cC5nZXRGb290ZXJHcm91cFByb3BzKCksIC4uLmdyb3VwLmdldEZvb3Rlckdyb3VwUHJvcHMoZm9vdGVyUm93UHJvcHMpfX0+XG5cdFx0XHRcdFx0e2dyb3VwLmhlYWRlcnMubWFwKGNvbHVtbiA9PiAoXG5cdFx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LWtleVxuXHRcdFx0XHRcdFx0PFRhYmxlLkhlYWRlckNlbGwgey4uLnsuLi5jb2x1bW4uZ2V0Rm9vdGVyUHJvcHMoKSwgLi4uY29sdW1uLmdldEZvb3RlclByb3BzKGZvb3RlckNlbGxQcm9wcyl9fT5cblx0XHRcdFx0XHRcdFx0e2NvbHVtbi5yZW5kZXIoJ0Zvb3RlcicpfVxuXHRcdFx0XHRcdFx0PC9UYWJsZS5IZWFkZXJDZWxsPlxuXHRcdFx0XHRcdCkpfVxuXHRcdFx0XHQ8L1RhYmxlLlJvdz5cblx0XHRcdCkpfVxuXHRcdDwvVGFibGUuRm9vdGVyPlxuXHQpIDogbnVsbDtcblxuXHRyZXR1cm4gKFxuXHRcdDxUYWJsZSB7Li4uey4uLmdldFRhYmxlUHJvcHMoKSwgLi4uZ2V0VGFibGVQcm9wcyh0YWJsZVByb3BzKX19PlxuXHRcdFx0PFRhYmxlLkhlYWRlcj5cblx0XHRcdFx0e2hlYWRlckdyb3Vwcy5tYXAoaGVhZGVyR3JvdXAgPT4gKFxuXHRcdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gta2V5XG5cdFx0XHRcdFx0PFRhYmxlLlJvdyB7Li4uey4uLmhlYWRlckdyb3VwLmdldEhlYWRlckdyb3VwUHJvcHMoKSwgLi4uaGVhZGVyR3JvdXAuZ2V0SGVhZGVyR3JvdXBQcm9wcyhoZWFkZXJSb3dQcm9wcyl9fT5cblx0XHRcdFx0XHRcdHtoZWFkZXJHcm91cC5oZWFkZXJzLm1hcChjb2x1bW4gPT4gKFxuXHRcdFx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LWtleVxuXHRcdFx0XHRcdFx0XHQ8VGFibGUuSGVhZGVyQ2VsbCB7Li4uey4uLmNvbHVtbi5nZXRIZWFkZXJQcm9wcygpLCAuLi5jb2x1bW4uZ2V0SGVhZGVyUHJvcHMoaGVhZGVyQ2VsbFByb3BzKX19PlxuXHRcdFx0XHRcdFx0XHRcdHtjb2x1bW4ucmVuZGVyKCdIZWFkZXInKX1cblx0XHRcdFx0XHRcdFx0PC9UYWJsZS5IZWFkZXJDZWxsPlxuXHRcdFx0XHRcdFx0KSl9XG5cdFx0XHRcdFx0PC9UYWJsZS5Sb3c+XG5cdFx0XHRcdCkpfVxuXHRcdFx0PC9UYWJsZS5IZWFkZXI+XG5cdFx0XHQ8VGFibGUuQm9keSB7Li4uey4uLmdldFRhYmxlQm9keVByb3BzKCksIC4uLmdldFRhYmxlQm9keVByb3BzKGJvZHlQcm9wcyl9fT5cblx0XHRcdFx0e3Jvd3MubWFwKHJvdyA9PiB7XG5cdFx0XHRcdFx0cHJlcGFyZVJvdyhyb3cpO1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LWtleVxuXHRcdFx0XHRcdFx0PFRhYmxlLlJvd1xuXHRcdFx0XHRcdFx0XHR7Li4uey4uLnJvdy5nZXRSb3dQcm9wcygpLCAuLi5yb3cuZ2V0Um93UHJvcHMocm93UHJvcHMpfX1cblx0XHRcdFx0XHRcdFx0b25Nb3VzZUVudGVyPXsoKSA9PiBzZXRIb3ZlclJvdyhyb3cuaWQpfVxuXHRcdFx0XHRcdFx0XHRvbk1vdXNlTGVhdmU9eygpID0+IHNldEhvdmVyUm93KCcnKX1cblx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0e3Jvdy5jZWxscy5tYXAoY2VsbCA9PiAoXG5cdFx0XHRcdFx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1rZXlcblx0XHRcdFx0XHRcdFx0XHQ8VGFibGUuQ2VsbCB7Li4uey4uLmNlbGwuZ2V0Q2VsbFByb3BzKCksIC4uLmNlbGwuZ2V0Q2VsbFByb3BzKGNlbGxQcm9wcyl9fT57Y2VsbC5yZW5kZXIoJ0NlbGwnLCB7aG92ZXJSb3d9KX08L1RhYmxlLkNlbGw+XG5cdFx0XHRcdFx0XHRcdCkpfVxuXHRcdFx0XHRcdFx0PC9UYWJsZS5Sb3c+XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSl9XG5cdFx0XHQ8L1RhYmxlLkJvZHk+XG5cdFx0XHR7Zm9vdGVyfVxuXHRcdDwvVGFibGU+XG5cdCk7XG59XG5cbi8qKlxuICogQ2FuIGJlIHVzZWQgaW4gYSBURm9ybSBhcyBhIFRhYmxlIElucHV0LlxuICogQHBhcmFtIHByb3BzXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFRhYmxlSW5wdXQ8QSBleHRlbmRzIERlZmF1bHRUYWJsZVR5cGU+KHByb3BzOiBUYWJsZUlucHV0UHJvcHM8QT4pIHtcblx0cmV0dXJuIDxGaWVsZEFycmF5IG5hbWU9e3Byb3BzLm5hbWV9IHJlbmRlcj17YXJyYXlIZWxwZXJzID0+IDxUYWJsZUlucHV0VGFibGUgYXJyYXlIZWxwZXJzPXthcnJheUhlbHBlcnN9IHsuLi5wcm9wc30gLz59IC8+O1xufVxuIiwiaW1wb3J0IHR5cGUge1RhYmxlQ2VsbFByb3BzfSBmcm9tICcuL1RhYmxlSW5wdXQnO1xuXG5leHBvcnQgdHlwZSBBZGRSb3dPblRhYklmPEQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgViA9IGFueT4gPSAocHJvcHM6IFRhYmxlQ2VsbFByb3BzPEQsIFY+LCBuZXdWYWx1ZTogVikgPT4gYm9vbGVhbjtcblxuLyoqXG4gKiBVc2UgYXMgYW4gb25LZXlEb3duIGV2ZW50IGhhbmRsZXIgdG8gYWRkIGEgbmV3IHJvdyB3aGVuIHRhYiBpcyBwcmVzc2VkLCBkZXBlbmRpbmcgb24gY2VydGFpbiBjcml0ZXJpYS5cbiAqIEBwYXJhbSBldmVudFxuICogQHBhcmFtIHZhbHVlXG4gKiBAcGFyYW0gcHJvcHNcbiAqIEBwYXJhbSBhZGRSb3dPblRhYklmXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRSb3dPblRhYjxEIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIFYgPSBhbnk+KFxuXHRldmVudDogS2V5Ym9hcmRFdmVudCxcblx0dmFsdWU6IFYsXG5cdHByb3BzOiBUYWJsZUNlbGxQcm9wczxELCBWPixcblx0YWRkUm93T25UYWJJZj86IEFkZFJvd09uVGFiSWY8RCwgVj4sXG4pIHtcblx0Y29uc3Qge1xuXHRcdHJvdzoge2luZGV4OiByb3dJbmRleH0sXG5cdFx0cm93czoge2xlbmd0aDogcm93c0xlbmd0aH0sXG5cdFx0YWRkUm93LFxuXHR9ID0gcHJvcHM7XG5cblx0aWYgKGV2ZW50LmtleSA9PT0gJ1RhYicgJiYgIWV2ZW50LnNoaWZ0S2V5ICYmIHJvd0luZGV4ICsgMSA9PT0gcm93c0xlbmd0aCAmJiAoYWRkUm93T25UYWJJZiA/IGFkZFJvd09uVGFiSWYocHJvcHMsIHZhbHVlKSA6IGZhbHNlKSkge1xuXHRcdGFkZFJvdygpO1xuXHR9XG59XG4iLCJleHBvcnQge1RhYmxlSW5wdXR9IGZyb20gJy4vVGFibGVJbnB1dCc7XG5leHBvcnQge01vbmV5Q2VsbH0gZnJvbSAnLi9Nb25leUNlbGwnO1xuZXhwb3J0IHtNb25leUVkaXRDZWxsfSBmcm9tICcuL01vbmV5RWRpdENlbGwnO1xuZXhwb3J0IHtNb25leVN1bUZvb3Rlcn0gZnJvbSAnLi9Nb25leVN1bUZvb3Rlcic7XG5leHBvcnQge1N0cmluZ0VkaXRDZWxsfSBmcm9tICcuL1N0cmluZ0VkaXRDZWxsJztcbmV4cG9ydCB7RHJvcGRvd25DZWxsfSBmcm9tICcuL0Ryb3Bkb3duQ2VsbCc7XG5leHBvcnQge0hvdmVyQ2VsbH0gZnJvbSAnLi9Ib3ZlckNlbGwnO1xuZXhwb3J0IHthZGRSb3dPblRhYn0gZnJvbSAnLi9hZGRSb3dPblRhYic7XG5leHBvcnQgdHlwZSB7QWRkUm93T25UYWJJZn0gZnJvbSAnLi9hZGRSb3dPblRhYic7XG4iLCJpbXBvcnQge3RvTW9uZXl9IGZyb20gJ0B0aHgvbW9uZXknO1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IE1vbmV5LCB7Q3VycmVuY3lTdHJpbmd9IGZyb20gJ2pzLW1vbmV5JztcbmltcG9ydCB7U3ludGhldGljRXZlbnQsIHVzZUNhbGxiYWNrfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0Ryb3Bkb3duLCBEcm9wZG93blByb3BzLCBJbnB1dCwgSW5wdXRQcm9wcywgTGFiZWx9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtNb25leUlucHV0UHJvcHN9IGZyb20gJy4uL01vbmV5SW5wdXQnO1xuaW1wb3J0IHt1c2VNb25leUlucHV0fSBmcm9tICcuLi91c2VNb25leUlucHV0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMubW9uZXkuTW9uZXlDdXJyZW5jeUlucHV0Jyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9uZXlDdXJyZW5jeUlucHV0UHJvcHMgZXh0ZW5kcyBNb25leUlucHV0UHJvcHMge1xuXHRjdXJyZW5jaWVzPzoge2tleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nOyB0ZXh0OiBzdHJpbmd9W107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBNb25leUN1cnJlbmN5SW5wdXQocHJvcHM6IE1vbmV5Q3VycmVuY3lJbnB1dFByb3BzICYgT21pdDxJbnB1dFByb3BzLCAnb25DaGFuZ2UnPikge1xuXHRjb25zdCB7bmFtZSwgb25CbHVyLCBwcmVmaXgsIGRlZmF1bHRDdXJyZW5jeSwgb25DaGFuZ2UsIHNob3dQcmVmaXgsIHZhbHVlLCB3aG9sZU51bWJlciwgY3VycmVuY2llcywgbG9ja2VkLCAuLi5yZXN0fSA9IHByb3BzO1xuXG5cdGNvbnN0IG9wdGlvbnMgPSBjdXJyZW5jaWVzIHx8IFtcblx0XHR7a2V5OiAnQ0FEJywgdGV4dDogJ0NBRCcsIHZhbHVlOiAnQ0FEJ30sXG5cdFx0e2tleTogJ1VTRCcsIHRleHQ6ICdVU0QnLCB2YWx1ZTogJ1VTRCd9LFxuXHRdO1xuXG5cdGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuXHRcdCh2PzogTW9uZXkpID0+IHtcblx0XHRcdGlmICghdikge1xuXHRcdFx0XHRvbkNoYW5nZSAmJiBvbkNoYW5nZSh0b01vbmV5KDAsIGRlZmF1bHRDdXJyZW5jeSkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0b25DaGFuZ2UgJiYgb25DaGFuZ2Uodik7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRbZGVmYXVsdEN1cnJlbmN5LCBvbkNoYW5nZV0sXG5cdCk7XG5cblx0Y29uc3QgdmFsID0gISh2YWx1ZSBpbnN0YW5jZW9mIE1vbmV5KSAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdG9Nb25leSh2YWx1ZSkgOiB2YWx1ZTtcblxuXHRjb25zdCBbaW5wdXRFbGVtZW50XSA9IHVzZU1vbmV5SW5wdXQoe29uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIHByZWZpeCwgc2hvd1ByZWZpeCwgdmFsdWU6IHZhbCwgd2hvbGVOdW1iZXJ9KTtcblxuXHRjb25zdCBoYW5kbGVEcm9wZG93bkNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuXHRcdChlOiBTeW50aGV0aWNFdmVudDxIVE1MRWxlbWVudCwgRXZlbnQ+LCB2OiBEcm9wZG93blByb3BzKSA9PiB7XG5cdFx0XHRjb25zdCBuZXdDdXJyZW5jeUNvZGUgPSB2LnZhbHVlIGFzIEN1cnJlbmN5U3RyaW5nO1xuXHRcdFx0Y29uc3QgbmV3TW9uZXkgPSBuZXcgTW9uZXkodmFsdWU/LmFtb3VudCB8fCAwLCBuZXdDdXJyZW5jeUNvZGUpO1xuXG5cdFx0XHRkKCdDaGFuZ2UnLCB2YWx1ZSwgbmV3Q3VycmVuY3lDb2RlLCBuZXdNb25leSk7XG5cdFx0XHQvLyBzZXRJbnB1dFZhbHVlKG5ld01vbmV5KTtcblx0XHRcdG9uQ2hhbmdlICYmIG9uQ2hhbmdlKG5ld01vbmV5KTtcblx0XHRcdC8vIGZvcmNlVXBkYXRlKCk7XG5cdFx0fSxcblx0XHRbb25DaGFuZ2UsIHZhbHVlXSxcblx0KTtcblxuXHRjb25zdCBjdXJyZW5jeUNvZGUgPSB2YWx1ZT8uY3VycmVuY3kgfHwgZGVmYXVsdEN1cnJlbmN5Py5jb2RlIHx8ICdDQUQnO1xuXHRkKCdSZW5kZXInLCB2YWx1ZSwgY3VycmVuY3lDb2RlKTtcblxuXHRyZXR1cm4gKFxuXHRcdDxJbnB1dCB7Li4ucmVzdH0gbGFiZWxQb3NpdGlvbj1cInJpZ2h0XCI+XG5cdFx0XHQ8aW5wdXQgbmFtZT17bmFtZX0gcmVmPXtpbnB1dEVsZW1lbnR9IG9uQmx1cj17b25CbHVyfSByZWFkT25seT17bG9ja2VkfSAvPlxuXHRcdFx0PExhYmVsIGJhc2ljPlxuXHRcdFx0XHQ8RHJvcGRvd24gZGlzYWJsZWQ9e2xvY2tlZH0gb3B0aW9ucz17b3B0aW9uc30gdmFsdWU9e2N1cnJlbmN5Q29kZX0gb25DaGFuZ2U9e2hhbmRsZURyb3Bkb3duQ2hhbmdlfSAvPlxuXHRcdFx0PC9MYWJlbD5cblx0XHQ8L0lucHV0PlxuXHQpO1xufVxuIiwiZXhwb3J0IHtNb25leUN1cnJlbmN5SW5wdXR9IGZyb20gJy4vTW9uZXlDdXJyZW5jeUlucHV0JztcbmV4cG9ydCB0eXBlIHtNb25leUN1cnJlbmN5SW5wdXRQcm9wc30gZnJvbSAnLi9Nb25leUN1cnJlbmN5SW5wdXQnO1xuIiwiaW1wb3J0IHt0b01vbmV5fSBmcm9tICdAdGh4L21vbmV5Jztcbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBNb25leSwge0N1cnJlbmN5LCBNb25leU9iamVjdH0gZnJvbSAnanMtbW9uZXknO1xuaW1wb3J0IHt1c2VDYWxsYmFja30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtJbnB1dCwgSW5wdXRQcm9wc30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHt1c2VNb25leUlucHV0fSBmcm9tICcuLi91c2VNb25leUlucHV0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMubW9uZXkuTW9uZXlJbnB1dCcpO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1vbmV5SW5wdXRQcm9wcyB7XG5cdG5hbWU/OiBzdHJpbmc7XG5cdG9uQ2hhbmdlPzogKHZhbHVlOiBNb25leSkgPT4gdm9pZDtcblx0dmFsdWU/OiBNb25leSB8IE1vbmV5T2JqZWN0O1xuXHRkZWZhdWx0Q3VycmVuY3k/OiBDdXJyZW5jeTsgLy8gRGVmYXVsdHMgdG8gTW9uZXkuQ0FEXG5cdG9uQmx1cj86IChldjogYW55KSA9PiB2b2lkO1xuXHRwcmVmaXg/OiBzdHJpbmc7IC8vIERlZmF1bHRzIHRvIGN1cnJlbmN5IHN5bWJvbFxuXHRzaG93UHJlZml4PzogYm9vbGVhbjsgLy8gRGVmYXVsdHMgdG8gZmFsc2Vcblx0bG9ja2VkPzogYm9vbGVhbjsgLy8gRGVmYXVsdHMgdG8gZmFsc2Vcblx0d2hvbGVOdW1iZXI/OiBib29sZWFuOyAvLyBEZWZhdWx0cyB0byBmYWxzZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gTW9uZXlJbnB1dChwcm9wczogTW9uZXlJbnB1dFByb3BzICYgT21pdDxJbnB1dFByb3BzLCAnb25DaGFuZ2UnPikge1xuXHRjb25zdCB7bmFtZSwgb25CbHVyLCBsb2NrZWQsIHByZWZpeCwgZGVmYXVsdEN1cnJlbmN5LCBvbkNoYW5nZSwgc2hvd1ByZWZpeCwgdmFsdWUsIHdob2xlTnVtYmVyLCAuLi5yZXN0fSA9IHByb3BzO1xuXG5cdGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuXHRcdCh2PzogTW9uZXkpID0+IHtcblx0XHRcdGlmICghdikge1xuXHRcdFx0XHRvbkNoYW5nZSAmJiBvbkNoYW5nZSh0b01vbmV5KDAsIGRlZmF1bHRDdXJyZW5jeSkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0b25DaGFuZ2UgJiYgb25DaGFuZ2Uodik7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRbZGVmYXVsdEN1cnJlbmN5LCBvbkNoYW5nZV0sXG5cdCk7XG5cblx0Y29uc3QgdmFsID0gISh2YWx1ZSBpbnN0YW5jZW9mIE1vbmV5KSAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdG9Nb25leSh2YWx1ZSkgOiB2YWx1ZTtcblxuXHRjb25zdCBbaW5wdXRFbGVtZW50XSA9IHVzZU1vbmV5SW5wdXQoe29uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIHByZWZpeCwgc2hvd1ByZWZpeCwgdmFsdWU6IHZhbCwgd2hvbGVOdW1iZXJ9KTtcblxuXHRyZXR1cm4gKFxuXHRcdDxJbnB1dCB7Li4ucmVzdH0+XG5cdFx0XHQ8aW5wdXQgbmFtZT17bmFtZX0gcmVmPXtpbnB1dEVsZW1lbnR9IG9uQmx1cj17b25CbHVyfSByZWFkT25seT17bG9ja2VkfSAvPlxuXHRcdDwvSW5wdXQ+XG5cdCk7XG59XG4iLCJleHBvcnQge01vbmV5SW5wdXR9IGZyb20gJy4vTW9uZXlJbnB1dCc7XG5leHBvcnQgdHlwZSB7TW9uZXlJbnB1dFByb3BzfSBmcm9tICcuL01vbmV5SW5wdXQnO1xuIiwiaW1wb3J0IHt0b01vbmV5fSBmcm9tICdAdGh4L21vbmV5JztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgSW5wdXRtYXNrIGZyb20gJ2lucHV0bWFzayc7XG5pbXBvcnQgTW9uZXkgZnJvbSAnanMtbW9uZXknO1xuaW1wb3J0IHtNdXRhYmxlUmVmT2JqZWN0LCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWZ9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMubW9uZXkudXNlTW9uZXlJbnB1dCcpO1xuXG5pbnRlcmZhY2UgVXNlTW9uZXlJbnB1dFByb3BzIHtcblx0dmFsdWU/OiBNb25leTtcblx0b25DaGFuZ2U/OiAodmFsdWU/OiBNb25leSkgPT4gdm9pZDtcblx0b25TZXQ/OiAodmFsdWU/OiBNb25leSkgPT4gdm9pZDtcblx0Ly8gZGVmYXVsdEN1cnJlbmN5PzogQ3VycmVuY3k7IC8vIERlZmF1bHRzIHRvIE1vbmV5LkNBRFxuXHRwcmVmaXg/OiBzdHJpbmc7IC8vIERlZmF1bHRzIHRvIGN1cnJlbmN5IHN5bWJvbFxuXHRzaG93UHJlZml4PzogYm9vbGVhbjsgLy8gRGVmYXVsdHMgdG8gZmFsc2Vcblx0d2hvbGVOdW1iZXI/OiBib29sZWFuOyAvLyBEZWZhdWx0cyB0byBmYWxzZVxufVxuXG50eXBlIFNldFZhbHVlRm4gPSAodmFsdWU/OiBNb25leSkgPT4gdm9pZDtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZU1vbmV5SW5wdXQocHJvcHM6IFVzZU1vbmV5SW5wdXRQcm9wcyk6IFtNdXRhYmxlUmVmT2JqZWN0PEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPiwgU2V0VmFsdWVGbl0ge1xuXHRjb25zdCB7dmFsdWUsIG9uQ2hhbmdlLCBvblNldCwgc2hvd1ByZWZpeCwgcHJlZml4LCB3aG9sZU51bWJlcn0gPSBwcm9wcztcblxuXHRjb25zdCBpbnB1dEVsZW1lbnQgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuXHRjb25zdCBtYXNrSW5zdGFuY2UgPSB1c2VSZWY8SW5wdXRtYXNrLkluc3RhbmNlIHwgbnVsbD4obnVsbCk7XG5cblx0Ly8gc2V0IHRoZSBhZGpDdXJyZW5jeVxuXHQvLyBsZXQgYWRqQ3VycmVuY3kgPSBNb25leS5DQUQ7XG5cdC8vIGlmICh2YWx1ZT8uY3VycmVuY3kgJiYgTW9uZXlbdmFsdWU/LmN1cnJlbmN5XSkgYWRqQ3VycmVuY3kgPSBNb25leVt2YWx1ZT8uY3VycmVuY3ldO1xuXHQvLyBpZiAoZGVmYXVsdEN1cnJlbmN5KSBhZGpDdXJyZW5jeSA9IGRlZmF1bHRDdXJyZW5jeTtcblx0Y29uc3QgY3VycmVuY3lDb2RlID0gdmFsdWU/LmN1cnJlbmN5IHx8ICdDQUQnO1xuXG5cdHVzZUVmZmVjdCgoKSA9PiB7XG5cdFx0aWYgKCFpbnB1dEVsZW1lbnQuY3VycmVudCkgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZ2V0IGlucHV0IGVsZW1lbnQnKTtcblxuXHRcdGQoJ0NyZWF0aW5nIGlucHV0IG1hc2sgaW5zdGFuY2UnKTtcblx0XHRtYXNrSW5zdGFuY2UuY3VycmVudCA9IG5ldyBJbnB1dG1hc2soe1xuXHRcdFx0YWxpYXM6ICdudW1lcmljJyxcblx0XHRcdGdyb3VwU2VwYXJhdG9yOiAnLCcsXG5cdFx0XHRkaWdpdHM6IHdob2xlTnVtYmVyID8gJzAnIDogTW9uZXlbY3VycmVuY3lDb2RlXS5kZWNpbWFsX2RpZ2l0cy50b1N0cmluZygpLFxuXHRcdFx0ZGlnaXRzT3B0aW9uYWw6IGZhbHNlLFxuXHRcdFx0cHJlZml4OiBzaG93UHJlZml4ID8gcHJlZml4IHx8IE1vbmV5W2N1cnJlbmN5Q29kZV0uc3ltYm9sIDogdW5kZWZpbmVkLFxuXHRcdFx0cGxhY2Vob2xkZXI6ICcwJyxcblx0XHRcdGF1dG9Vbm1hc2s6IHRydWUsXG5cdFx0XHRvbmNvbXBsZXRlKCkge1xuXHRcdFx0XHRpZiAob25DaGFuZ2UpIHtcblx0XHRcdFx0XHRpZiAoaW5wdXRFbGVtZW50LmN1cnJlbnQ/LnZhbHVlKSB7XG5cdFx0XHRcdFx0XHRvbkNoYW5nZSh0b01vbmV5KGlucHV0RWxlbWVudC5jdXJyZW50Py52YWx1ZSwgY3VycmVuY3lDb2RlKSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdG9uQ2hhbmdlKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0b25jbGVhcmVkKCkge1xuXHRcdFx0XHRpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKCk7XG5cdFx0XHR9LFxuXHRcdFx0b25pbmNvbXBsZXRlKCkge1xuXHRcdFx0XHRpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKHRvTW9uZXkoaW5wdXRFbGVtZW50LmN1cnJlbnQ/LnZhbHVlLCBjdXJyZW5jeUNvZGUpKTtcblx0XHRcdH0sXG5cdFx0fSk7XG5cdFx0bWFza0luc3RhbmNlLmN1cnJlbnQubWFzayhpbnB1dEVsZW1lbnQuY3VycmVudCk7XG5cblx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0aWYgKG1hc2tJbnN0YW5jZS5jdXJyZW50KSB7XG5cdFx0XHRcdGQoJ0NsZWFuaW5nIHVwIGlucHV0IG1hc2sgaW5zdGFuY2UnKTtcblx0XHRcdFx0bWFza0luc3RhbmNlLmN1cnJlbnQucmVtb3ZlKCk7XG5cdFx0XHRcdG1hc2tJbnN0YW5jZS5jdXJyZW50ID0gbnVsbDtcblx0XHRcdH1cblx0XHR9O1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcblx0fSwgW2N1cnJlbmN5Q29kZSwgcHJlZml4LCBzaG93UHJlZml4LCB3aG9sZU51bWJlcl0pO1xuXG5cdGNvbnN0IHNldFZhbCA9IHVzZUNhbGxiYWNrPFNldFZhbHVlRm4+KFxuXHRcdCh2PzogTW9uZXkpID0+IHtcblx0XHRcdGlmIChpbnB1dEVsZW1lbnQuY3VycmVudCkge1xuXHRcdFx0XHRkKCdWYWx1ZSBpcyBiZWluZyBzZXQ6Jywgdik7XG5cdFx0XHRcdGlmICh2KSB7XG5cdFx0XHRcdFx0aW5wdXRFbGVtZW50LmN1cnJlbnQudmFsdWUgPSB2LnRvRGVjaW1hbCgpLnRvU3RyaW5nKCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0aW5wdXRFbGVtZW50LmN1cnJlbnQudmFsdWUgPSAnJztcblx0XHRcdFx0fVxuXHRcdFx0XHRvblNldCAmJiBvblNldCh2KTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdFtvblNldF0sXG5cdCk7XG5cblx0Ly8gSWYgd2UgY2hhbmdlIHRoZSB2YWx1ZSBwcm9wIHdlIG5lZWQgdG8gc3luYyB0aGUgRE9NIHZhbHVlIHRvIGRpc3BsYXkgdGhlIG5ldyB2YWx1ZVxuXHR1c2VFZmZlY3QoKCkgPT4ge1xuXHRcdGNvbnN0IHdoYXRDdXJyZW50bHlJc0Rpc3BsYXllZCA9IGlucHV0RWxlbWVudC5jdXJyZW50Py52YWx1ZSB8fCAnJzsgLy8gc3RyaW5nIHwgdW5kZWZcblx0XHRjb25zdCB3aGF0V2VBcmVTZXR0aW5nID0gdmFsdWUgPyB2YWx1ZS50b1N0cmluZygpIDogJyc7IC8vIG1vbmV5IHwgdW5kZWZcblxuXHRcdGlmICh3aGF0Q3VycmVudGx5SXNEaXNwbGF5ZWQgIT09IHdoYXRXZUFyZVNldHRpbmcpIHtcblx0XHRcdHNldFZhbCh2YWx1ZSk7XG5cdFx0fVxuXHR9LCBbc2V0VmFsLCB2YWx1ZV0pO1xuXG5cdHJldHVybiBbaW5wdXRFbGVtZW50LCBzZXRWYWxdO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7Y2xvbmVFbGVtZW50LCBDaGlsZHJlbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHt1c2VTdGVwfSBmcm9tICcuL3VzZVN0ZXAnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5zdGVwLkZvcm1TdGVwJyk7XG5cbmludGVyZmFjZSBGb3JtU3RlcFByb3BzIHtcblx0Y2hpbGRyZW46IEpTWC5FbGVtZW50O1xuXHR0aXRsZT86IHN0cmluZztcblx0c3RlcEtleTogc3RyaW5nO1xuXHRoaWRkZW4/OiBib29sZWFuIHwgKChzdGF0ZTogYW55LCBzdGVwOiBudW1iZXIpID0+IGJvb2xlYW4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRm9ybVN0ZXAocHJvcHM6IEZvcm1TdGVwUHJvcHMpIHtcblx0Y29uc3QgW3N0YXRlLCBoYW5kbGVTdWJtaXRdID0gdXNlU3RlcCgpO1xuXHRjb25zdCB2YWx1ZXMgPSBzdGF0ZVtwcm9wcy5zdGVwS2V5XSB8fCB7fTtcblxuXHRjb25zdCBmb3JtID0gY2xvbmVFbGVtZW50KENoaWxkcmVuLm9ubHkocHJvcHMuY2hpbGRyZW4pLCB7XG5cdFx0dmFsdWVzOiB2YWx1ZXMgfHwge30sXG5cdFx0b25TdWJtaXQ6ICh2YWxzOiB1bmtub3duKSA9PiBoYW5kbGVTdWJtaXQodmFscywgcHJvcHMuc3RlcEtleSksXG5cdH0pO1xuXG5cdHJldHVybiAoXG5cdFx0PD5cblx0XHRcdDxoMT57cHJvcHMudGl0bGV9PC9oMT5cblx0XHRcdHtmb3JtfVxuXHRcdDwvPlxuXHQpO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuc3RlcC5TdGVwJyk7XG5cbmludGVyZmFjZSBTdGVwUHJvcHMge1xuXHRjaGlsZHJlbj86IEpTWC5FbGVtZW50IHwgSlNYLkVsZW1lbnRbXTtcblx0dGl0bGU/OiBzdHJpbmc7XG5cdHN0ZXA/OiBudW1iZXI7XG5cdGhpZGRlbj86IGJvb2xlYW4gfCAoKHN0YXRlOiBhbnksIHN0ZXA6IG51bWJlcikgPT4gYm9vbGVhbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTdGVwKHByb3BzOiBTdGVwUHJvcHMpIHtcblx0cmV0dXJuIChcblx0XHQ8PlxuXHRcdFx0PGgxPntwcm9wcy50aXRsZX08L2gxPlxuXHRcdFx0e3Byb3BzLmNoaWxkcmVufVxuXHRcdDwvPlxuXHQpO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7Y2xvbmVFbGVtZW50LCBDaGlsZHJlbiwgdXNlTWVtbywgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7UHJvbXB0fSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7R3JpZCwgU3RlcCBhcyBTZW1hbnRpY1N0ZXB9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB7Rm9ybVN0ZXB9IGZyb20gJy4vRm9ybVN0ZXAnO1xuaW1wb3J0IHtTdGVwfSBmcm9tICcuL1N0ZXAnO1xuaW1wb3J0IHtTdGVwQ29udGV4dH0gZnJvbSAnLi9zdGVwQ29udGV4dCc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLnN0ZXAuU3RlcFByb3ZpZGVyJyk7XG5cbmludGVyZmFjZSBTdGVwUHJvdmlkZXJQcm9wcyB7XG5cdGNoaWxkcmVuOiAoSlNYLkVsZW1lbnQgfCBudWxsIHwgZmFsc2UpW107XG5cdG9uU3VibWl0OiAodmFsdWVzOiBhbnkpID0+IHZvaWQ7XG5cdHZhbHVlcz86IGFueTtcblx0d2Fybk9uUmVyb3V0ZT86IGJvb2xlYW47XG5cdHZlcnRpY2FsPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFN0ZXBQcm92aWRlcihwcm9wczogU3RlcFByb3ZpZGVyUHJvcHMpIHtcblx0Y29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZShwcm9wcy52YWx1ZXMgfHwge30pO1xuXHRjb25zdCBbY3VycmVudFN0ZXAsIHNldEN1cnJlbnRTdGVwXSA9IHVzZVN0YXRlKDApO1xuXHRjb25zdCBbaXNTdWJtaXR0aW5nLCBzZXRJc1N1Ym1pdHRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuXG5cdGNvbnN0IHRpdGxlczogc3RyaW5nW10gPSBbXTtcblx0Y29uc3QgY2hpbGRyZW46IEpTWC5FbGVtZW50W10gPSBbXTtcblxuXHRDaGlsZHJlbi5mb3JFYWNoKHByb3BzPy5jaGlsZHJlbiwgKGNoaWxkLCBpbmRleCkgPT4ge1xuXHRcdGlmICghY2hpbGQpIHJldHVybjtcblx0XHRpZiAoY2hpbGQ/LnR5cGUgIT09IFN0ZXAgJiYgY2hpbGQ/LnR5cGUgIT09IEZvcm1TdGVwKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYENhbiBub3QgcmVuZGVyICcke2NoaWxkPy50eXBlfScgYXMgY2hpbGQgb2YgJ1N0ZXBQcm92aWRlcicuIE11c3QgYmUgb2YgdHlwZSAnU3RlcCcgb3IgJ0Zvcm1TdGVwJ2ApO1xuXHRcdH1cblx0XHRpZiAoY2hpbGQucHJvcHMuaGlkZGVuKSB7XG5cdFx0XHRpZiAodHlwZW9mIGNoaWxkLnByb3BzLmhpZGRlbiA9PT0gJ2Z1bmN0aW9uJyAmJiAhY2hpbGQucHJvcHMuaGlkZGVuKHN0YXRlLCBpbmRleCkpIHtcblx0XHRcdFx0dGl0bGVzLnB1c2goY2hpbGQ/LnByb3BzPy50aXRsZSB8fCAnJyk7XG5cdFx0XHRcdGNoaWxkcmVuLnB1c2goY2xvbmVFbGVtZW50KGNoaWxkLCB7c3RlcDogaW5kZXgsIGtleTogY2hpbGQ/LmtleSB8fCBpbmRleC50b1N0cmluZygpfSkpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aXRsZXMucHVzaChjaGlsZD8ucHJvcHM/LnRpdGxlIHx8ICcnKTtcblx0XHRcdGNoaWxkcmVuLnB1c2goY2xvbmVFbGVtZW50KGNoaWxkLCB7c3RlcDogaW5kZXgsIGtleTogY2hpbGQ/LmtleSB8fCBpbmRleC50b1N0cmluZygpfSkpO1xuXHRcdH1cblx0fSk7XG5cblx0Y29uc3Qgb25OYXZpZ2F0ZSA9ICgpID0+ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZW5kIHRoaXMgcHJvY2Vzcz8gQWxsIHRoZSBlbnRlcmVkIGRhdGEgd2lsbCBiZSBsb3N0ISc7XG5cblx0Y29uc3QgdmFsdWVQcm9wcyA9IHVzZU1lbW8oKCkgPT4ge1xuXHRcdHJldHVybiB7XG5cdFx0XHRzdGF0ZSxcblx0XHRcdGhhbmRsZVN1Ym1pdDogKHZhbHVlczogYW55LCBzdGVwS2V5OiBzdHJpbmcpID0+IHtcblx0XHRcdFx0aWYgKGN1cnJlbnRTdGVwICsgMSA9PT0gY2hpbGRyZW4/Lmxlbmd0aCkge1xuXHRcdFx0XHRcdHNldFN0YXRlKHsuLi5zdGF0ZSwgW3N0ZXBLZXldOiB2YWx1ZXN9KTtcblx0XHRcdFx0XHRzZXRJc1N1Ym1pdHRpbmcodHJ1ZSk7XG5cdFx0XHRcdFx0cHJvcHMub25TdWJtaXQoey4uLnN0YXRlLCBbc3RlcEtleV06IHZhbHVlc30pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHNldFN0YXRlKHsuLi5zdGF0ZSwgW3N0ZXBLZXldOiB2YWx1ZXN9KTtcblx0XHRcdFx0XHRzZXRDdXJyZW50U3RlcChjdXJyZW50U3RlcCArIDEpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdH07XG5cdH0sIFtjaGlsZHJlbj8ubGVuZ3RoLCBjdXJyZW50U3RlcCwgcHJvcHMsIHN0YXRlXSk7XG5cblx0aWYgKHByb3BzLnZlcnRpY2FsKSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxTdGVwQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dmFsdWVQcm9wc30+XG5cdFx0XHRcdHtwcm9wcy53YXJuT25SZXJvdXRlICYmIDxQcm9tcHQgbWVzc2FnZT17b25OYXZpZ2F0ZX0gd2hlbj17IWlzU3VibWl0dGluZ30gLz59XG5cdFx0XHRcdDxHcmlkIGRpdmlkZWQgc3RhY2thYmxlPlxuXHRcdFx0XHRcdDxHcmlkLlJvdz5cblx0XHRcdFx0XHRcdDxHcmlkLkNvbHVtbiB3aWR0aD17M30+XG5cdFx0XHRcdFx0XHRcdDxTZW1hbnRpY1N0ZXAuR3JvdXAgb3JkZXJlZCBzaXplPVwibWluaVwiIHZlcnRpY2FsIHdpZHRocz17MX0+XG5cdFx0XHRcdFx0XHRcdFx0e3RpdGxlcz8ubWFwKCh0aXRsZSwgaW5kZXgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxTZW1hbnRpY1N0ZXBcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRrZXk9e2luZGV4LnRvU3RyaW5nKCl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29tcGxldGVkPXtpbmRleCA8IE9iamVjdC5rZXlzKHN0YXRlKS5sZW5ndGh9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YWN0aXZlPXtjdXJyZW50U3RlcCA9PT0gaW5kZXh9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0b25DbGljaz17KCkgPT4gc2V0Q3VycmVudFN0ZXAoaW5kZXgpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpc2FibGVkPXtpbmRleCA+IE9iamVjdC5rZXlzKHN0YXRlKS5sZW5ndGh9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8U2VtYW50aWNTdGVwLkNvbnRlbnQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8U2VtYW50aWNTdGVwLlRpdGxlPnt0aXRsZX08L1NlbWFudGljU3RlcC5UaXRsZT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L1NlbWFudGljU3RlcC5Db250ZW50PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L1NlbWFudGljU3RlcD5cblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0fSl9XG5cdFx0XHRcdFx0XHRcdDwvU2VtYW50aWNTdGVwLkdyb3VwPlxuXHRcdFx0XHRcdFx0PC9HcmlkLkNvbHVtbj5cblx0XHRcdFx0XHRcdDxHcmlkLkNvbHVtbiB3aWR0aD17MTN9PntjaGlsZHJlbj8uW2N1cnJlbnRTdGVwXX08L0dyaWQuQ29sdW1uPlxuXHRcdFx0XHRcdDwvR3JpZC5Sb3c+XG5cdFx0XHRcdDwvR3JpZD5cblx0XHRcdDwvU3RlcENvbnRleHQuUHJvdmlkZXI+XG5cdFx0KTtcblx0fVxuXG5cdHJldHVybiAoXG5cdFx0PFN0ZXBDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZVByb3BzfT5cblx0XHRcdHtwcm9wcy53YXJuT25SZXJvdXRlICYmIDxQcm9tcHQgbWVzc2FnZT17b25OYXZpZ2F0ZX0gLz59XG5cdFx0XHQ8U2VtYW50aWNTdGVwLkdyb3VwIG9yZGVyZWQgc2l6ZT1cIm1pbmlcIj5cblx0XHRcdFx0e3RpdGxlcz8ubWFwKCh0aXRsZSwgaW5kZXgpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0PFNlbWFudGljU3RlcFxuXHRcdFx0XHRcdFx0XHRrZXk9e2luZGV4LnRvU3RyaW5nKCl9XG5cdFx0XHRcdFx0XHRcdGNvbXBsZXRlZD17aW5kZXggPCBPYmplY3Qua2V5cyhzdGF0ZSkubGVuZ3RofVxuXHRcdFx0XHRcdFx0XHRhY3RpdmU9e2N1cnJlbnRTdGVwID09PSBpbmRleH1cblx0XHRcdFx0XHRcdFx0b25DbGljaz17KCkgPT4gc2V0Q3VycmVudFN0ZXAoaW5kZXgpfVxuXHRcdFx0XHRcdFx0XHRkaXNhYmxlZD17aW5kZXggPiBPYmplY3Qua2V5cyhzdGF0ZSkubGVuZ3RofVxuXHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHQ8U2VtYW50aWNTdGVwLkNvbnRlbnQ+XG5cdFx0XHRcdFx0XHRcdFx0PFNlbWFudGljU3RlcC5UaXRsZT57dGl0bGV9PC9TZW1hbnRpY1N0ZXAuVGl0bGU+XG5cdFx0XHRcdFx0XHRcdDwvU2VtYW50aWNTdGVwLkNvbnRlbnQ+XG5cdFx0XHRcdFx0XHQ8L1NlbWFudGljU3RlcD5cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9KX1cblx0XHRcdDwvU2VtYW50aWNTdGVwLkdyb3VwPlxuXHRcdFx0e2NoaWxkcmVuPy5bY3VycmVudFN0ZXBdfVxuXHRcdDwvU3RlcENvbnRleHQuUHJvdmlkZXI+XG5cdCk7XG59XG4iLCJleHBvcnQge1N0ZXB9IGZyb20gJy4vU3RlcCc7XG5leHBvcnQge3VzZVN0ZXB9IGZyb20gJy4vdXNlU3RlcCc7XG5leHBvcnQge0Zvcm1TdGVwfSBmcm9tICcuL0Zvcm1TdGVwJztcbmV4cG9ydCB7U3RlcFByb3ZpZGVyfSBmcm9tICcuL1N0ZXBQcm92aWRlcic7XG4iLCJpbXBvcnQge2NyZWF0ZUNvbnRleHR9IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGNvbnN0IFN0ZXBDb250ZXh0ID0gY3JlYXRlQ29udGV4dDx7aGFuZGxlU3VibWl0OiAodmFsdWVzOiB1bmtub3duLCBzdGVwS2V5OiBzdHJpbmcpID0+IHZvaWQ7IHN0YXRlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+fT4oe1xuXHRoYW5kbGVTdWJtaXQ6ICgpID0+IHt9LFxuXHRzdGF0ZToge30sXG59KTtcbiIsImltcG9ydCB7dXNlQ29udGV4dH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtTdGVwQ29udGV4dH0gZnJvbSAnLi9zdGVwQ29udGV4dCc7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTdGVwKCk6IFthbnksICh2YWx1ZXM6IHVua25vd24sIHN0ZXBLZXk6IHN0cmluZykgPT4gdm9pZF0ge1xuXHRjb25zdCB7c3RhdGUsIGhhbmRsZVN1Ym1pdH0gPSB1c2VDb250ZXh0KFN0ZXBDb250ZXh0KTtcblxuXHRyZXR1cm4gW3N0YXRlLCBoYW5kbGVTdWJtaXRdO1xufVxuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1syXS51c2VbMl0hLi9zdHlsZXMuY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMl0udXNlWzJdIS4vc3R5bGVzLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMl0udXNlWzJdIS4vc3R5bGVzLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdLnVzZVsyXSEuL3N0eWxlcy5jc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5ydy1kYXRldGltZXBpY2tlciA+IGlucHV0IHtcXG5cXHRib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcXG59XFxuXFxuLnJ3LWRhdGV0aW1lcGlja2VyIC5ydy1jYWxlbmRhci1ncmlkLnJ3LW5hdi12aWV3IC5ydy1idG4ge1xcblxcdHBhZGRpbmc6IDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmRhdGVUaW1lUGlja2VyQXV0b1dpZHRoIHtcXG5cXHR3aWR0aDogYXV0bztcXG5cXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG59XFxuXFxuLmRhdGVUaW1lUGlja2VyQXV0b1dpZHRoID4gaW5wdXQge1xcblxcdHdpZHRoOiBhdXRvO1xcbn1cXG5cXG4ucmVhY3QtZGF0ZXBpY2tlci13cmFwcGVyIHtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlYWN0LWRhdGVwaWNrZXJfX2lucHV0LWNvbnRhaW5lciB7XFxuXFx0ZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWFjdC1kYXRlcGlja2VyLXBvcHBlciB7XFxuXFx0ei1pbmRleDogNSAhaW1wb3J0YW50O1xcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9kYXRlL0RhdGVQaWNrZXIvc3R5bGVzLmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTtDQUNDLHVCQUF1QjtBQUN4Qjs7QUFFQTtDQUNDLHFCQUFxQjtBQUN0Qjs7QUFFQTtDQUNDLFdBQVc7Q0FDWCxvQkFBb0I7QUFDckI7O0FBRUE7Q0FDQyxXQUFXO0FBQ1o7O0FBRUE7Q0FDQyxXQUFXO0NBQ1gsMEJBQTBCO0FBQzNCOztBQUVBO0NBQ0MsMEJBQTBCO0FBQzNCOztBQUVBO0NBQ0MscUJBQXFCO0FBQ3RCXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIjpnbG9iYWwoLnJ3LWRhdGV0aW1lcGlja2VyKSA+IGlucHV0IHtcXG5cXHRib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcXG59XFxuXFxuOmdsb2JhbCgucnctZGF0ZXRpbWVwaWNrZXIpIDpnbG9iYWwoLnJ3LWNhbGVuZGFyLWdyaWQucnctbmF2LXZpZXcpIDpnbG9iYWwoLnJ3LWJ0bikge1xcblxcdHBhZGRpbmc6IDAgIWltcG9ydGFudDtcXG59XFxuXFxuOmdsb2JhbCguZGF0ZVRpbWVQaWNrZXJBdXRvV2lkdGgpIHtcXG5cXHR3aWR0aDogYXV0bztcXG5cXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG59XFxuXFxuOmdsb2JhbCguZGF0ZVRpbWVQaWNrZXJBdXRvV2lkdGgpID4gaW5wdXQge1xcblxcdHdpZHRoOiBhdXRvO1xcbn1cXG5cXG46Z2xvYmFsKC5yZWFjdC1kYXRlcGlja2VyLXdyYXBwZXIpIHtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDtcXG59XFxuXFxuOmdsb2JhbCgucmVhY3QtZGF0ZXBpY2tlcl9faW5wdXQtY29udGFpbmVyKSB7XFxuXFx0ZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7XFxufVxcblxcbjpnbG9iYWwoLnJlYWN0LWRhdGVwaWNrZXItcG9wcGVyKSB7XFxuXFx0ei1pbmRleDogNSAhaW1wb3J0YW50O1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLmxvY2FscyA9IHt9O1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5yY2NzIHtcXG5cXHRtYXJnaW46IDAgIWltcG9ydGFudDtcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vaW5wdXRzL0NyZWRpdENhcmRJbnB1dC9zdHlsZXMuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBO0NBQ0Msb0JBQW9CO0FBQ3JCXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIjpnbG9iYWwgLnJjY3Mge1xcblxcdG1hcmdpbjogMCAhaW1wb3J0YW50O1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLmxvY2FscyA9IHt9O1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTsgLy8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xuXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gXCJcIjtcbiAgICAgIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2YgaXRlbVs1XSAhPT0gXCJ1bmRlZmluZWRcIjtcblxuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KGl0ZW1bNF0sIFwiKSB7XCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKTtcbiAgICAgIH1cblxuICAgICAgY29udGVudCArPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0pO1xuXG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pLmpvaW4oXCJcIik7XG4gIH07IC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG5cblxuICBsaXN0LmkgPSBmdW5jdGlvbiBpKG1vZHVsZXMsIG1lZGlhLCBkZWR1cGUsIHN1cHBvcnRzLCBsYXllcikge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgdW5kZWZpbmVkXV07XG4gICAgfVxuXG4gICAgdmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcblxuICAgIGlmIChkZWR1cGUpIHtcbiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgdGhpcy5sZW5ndGg7IGsrKykge1xuICAgICAgICB2YXIgaWQgPSB0aGlzW2tdWzBdO1xuXG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2sgPSAwOyBfayA8IG1vZHVsZXMubGVuZ3RoOyBfaysrKSB7XG4gICAgICB2YXIgaXRlbSA9IFtdLmNvbmNhdChtb2R1bGVzW19rXSk7XG5cbiAgICAgIGlmIChkZWR1cGUgJiYgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBsYXllciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW1bNV0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG1lZGlhKSB7XG4gICAgICAgIGlmICghaXRlbVsyXSkge1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHN1cHBvcnRzKSB7XG4gICAgICAgIGlmICghaXRlbVs0XSkge1xuICAgICAgICAgIGl0ZW1bNF0gPSBcIlwiLmNvbmNhdChzdXBwb3J0cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzRdID0gc3VwcG9ydHM7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGlzdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gbGlzdDtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgdmFyIGNvbnRlbnQgPSBpdGVtWzFdO1xuICB2YXIgY3NzTWFwcGluZyA9IGl0ZW1bM107XG5cbiAgaWYgKCFjc3NNYXBwaW5nKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cblxuICBpZiAodHlwZW9mIGJ0b2EgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIHZhciBiYXNlNjQgPSBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShjc3NNYXBwaW5nKSkpKTtcbiAgICB2YXIgZGF0YSA9IFwic291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsXCIuY29uY2F0KGJhc2U2NCk7XG4gICAgdmFyIHNvdXJjZU1hcHBpbmcgPSBcIi8qIyBcIi5jb25jYXQoZGF0YSwgXCIgKi9cIik7XG4gICAgdmFyIHNvdXJjZVVSTHMgPSBjc3NNYXBwaW5nLnNvdXJjZXMubWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICAgIHJldHVybiBcIi8qIyBzb3VyY2VVUkw9XCIuY29uY2F0KGNzc01hcHBpbmcuc291cmNlUm9vdCB8fCBcIlwiKS5jb25jYXQoc291cmNlLCBcIiAqL1wiKTtcbiAgICB9KTtcbiAgICByZXR1cm4gW2NvbnRlbnRdLmNvbmNhdChzb3VyY2VVUkxzKS5jb25jYXQoW3NvdXJjZU1hcHBpbmddKS5qb2luKFwiXFxuXCIpO1xuICB9XG5cbiAgcmV0dXJuIFtjb250ZW50XS5qb2luKFwiXFxuXCIpO1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIHN0eWxlc0luRE9NID0gW107XG5cbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzSW5ET00ubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3R5bGVzSW5ET01baV0uaWRlbnRpZmllciA9PT0gaWRlbnRpZmllcikge1xuICAgICAgcmVzdWx0ID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gbGlzdFtpXTtcbiAgICB2YXIgaWQgPSBvcHRpb25zLmJhc2UgPyBpdGVtWzBdICsgb3B0aW9ucy5iYXNlIDogaXRlbVswXTtcbiAgICB2YXIgY291bnQgPSBpZENvdW50TWFwW2lkXSB8fCAwO1xuICAgIHZhciBpZGVudGlmaWVyID0gXCJcIi5jb25jYXQoaWQsIFwiIFwiKS5jb25jYXQoY291bnQpO1xuICAgIGlkQ291bnRNYXBbaWRdID0gY291bnQgKyAxO1xuICAgIHZhciBpbmRleEJ5SWRlbnRpZmllciA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgIHZhciBvYmogPSB7XG4gICAgICBjc3M6IGl0ZW1bMV0sXG4gICAgICBtZWRpYTogaXRlbVsyXSxcbiAgICAgIHNvdXJjZU1hcDogaXRlbVszXSxcbiAgICAgIHN1cHBvcnRzOiBpdGVtWzRdLFxuICAgICAgbGF5ZXI6IGl0ZW1bNV1cbiAgICB9O1xuXG4gICAgaWYgKGluZGV4QnlJZGVudGlmaWVyICE9PSAtMSkge1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnJlZmVyZW5jZXMrKztcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4QnlJZGVudGlmaWVyXS51cGRhdGVyKG9iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB1cGRhdGVyID0gYWRkRWxlbWVudFN0eWxlKG9iaiwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLmJ5SW5kZXggPSBpO1xuICAgICAgc3R5bGVzSW5ET00uc3BsaWNlKGksIDAsIHtcbiAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgdXBkYXRlcjogdXBkYXRlcixcbiAgICAgICAgcmVmZXJlbmNlczogMVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuXG4gIHJldHVybiBpZGVudGlmaWVycztcbn1cblxuZnVuY3Rpb24gYWRkRWxlbWVudFN0eWxlKG9iaiwgb3B0aW9ucykge1xuICB2YXIgYXBpID0gb3B0aW9ucy5kb21BUEkob3B0aW9ucyk7XG4gIGFwaS51cGRhdGUob2JqKTtcblxuICB2YXIgdXBkYXRlciA9IGZ1bmN0aW9uIHVwZGF0ZXIobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCAmJiBuZXdPYmouc3VwcG9ydHMgPT09IG9iai5zdXBwb3J0cyAmJiBuZXdPYmoubGF5ZXIgPT09IG9iai5sYXllcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGFwaS51cGRhdGUob2JqID0gbmV3T2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbW92ZSgpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gdXBkYXRlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGlzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW2ldO1xuICAgICAgdmFyIGluZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleF0ucmVmZXJlbmNlcy0tO1xuICAgIH1cblxuICAgIHZhciBuZXdMYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obmV3TGlzdCwgb3B0aW9ucyk7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9pZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW19pXTtcblxuICAgICAgdmFyIF9pbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKF9pZGVudGlmaWVyKTtcblxuICAgICAgaWYgKHN0eWxlc0luRE9NW19pbmRleF0ucmVmZXJlbmNlcyA9PT0gMCkge1xuICAgICAgICBzdHlsZXNJbkRPTVtfaW5kZXhdLnVwZGF0ZXIoKTtcblxuICAgICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoX2luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsYXN0SWRlbnRpZmllcnMgPSBuZXdMYXN0SWRlbnRpZmllcnM7XG4gIH07XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgbWVtbyA9IHt9O1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cbmZ1bmN0aW9uIGdldFRhcmdldCh0YXJnZXQpIHtcbiAgaWYgKHR5cGVvZiBtZW1vW3RhcmdldF0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICB2YXIgc3R5bGVUYXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldCk7IC8vIFNwZWNpYWwgY2FzZSB0byByZXR1cm4gaGVhZCBvZiBpZnJhbWUgaW5zdGVhZCBvZiBpZnJhbWUgaXRzZWxmXG5cbiAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbWVtb1t0YXJnZXRdID0gc3R5bGVUYXJnZXQ7XG4gIH1cblxuICByZXR1cm4gbWVtb1t0YXJnZXRdO1xufVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cblxuZnVuY3Rpb24gaW5zZXJ0QnlTZWxlY3RvcihpbnNlcnQsIHN0eWxlKSB7XG4gIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQoaW5zZXJ0KTtcblxuICBpZiAoIXRhcmdldCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGZpbmQgYSBzdHlsZSB0YXJnZXQuIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdCB0aGUgdmFsdWUgZm9yIHRoZSAnaW5zZXJ0JyBwYXJhbWV0ZXIgaXMgaW52YWxpZC5cIik7XG4gIH1cblxuICB0YXJnZXQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydEJ5U2VsZWN0b3I7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gIG9wdGlvbnMuc2V0QXR0cmlidXRlcyhlbGVtZW50LCBvcHRpb25zLmF0dHJpYnV0ZXMpO1xuICBvcHRpb25zLmluc2VydChlbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xuICByZXR1cm4gZWxlbWVudDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzKHN0eWxlRWxlbWVudCkge1xuICB2YXIgbm9uY2UgPSB0eXBlb2YgX193ZWJwYWNrX25vbmNlX18gIT09IFwidW5kZWZpbmVkXCIgPyBfX3dlYnBhY2tfbm9uY2VfXyA6IG51bGw7XG5cbiAgaWYgKG5vbmNlKSB7XG4gICAgc3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsIG5vbmNlKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlczsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gXCJcIjtcblxuICBpZiAob2JqLnN1cHBvcnRzKSB7XG4gICAgY3NzICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQob2JqLnN1cHBvcnRzLCBcIikge1wiKTtcbiAgfVxuXG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJAbWVkaWEgXCIuY29uY2F0KG9iai5tZWRpYSwgXCIge1wiKTtcbiAgfVxuXG4gIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2Ygb2JqLmxheWVyICE9PSBcInVuZGVmaW5lZFwiO1xuXG4gIGlmIChuZWVkTGF5ZXIpIHtcbiAgICBjc3MgKz0gXCJAbGF5ZXJcIi5jb25jYXQob2JqLmxheWVyLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQob2JqLmxheWVyKSA6IFwiXCIsIFwiIHtcIik7XG4gIH1cblxuICBjc3MgKz0gb2JqLmNzcztcblxuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG5cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuXG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cblxuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcblxuICBpZiAoc291cmNlTWFwICYmIHR5cGVvZiBidG9hICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgY3NzICs9IFwiXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIi5jb25jYXQoYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSwgXCIgKi9cIik7XG4gIH0gLy8gRm9yIG9sZCBJRVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cblxuXG4gIG9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpIHtcbiAgLy8gaXN0YW5idWwgaWdub3JlIGlmXG4gIGlmIChzdHlsZUVsZW1lbnQucGFyZW50Tm9kZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0eWxlRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudCk7XG59XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cblxuXG5mdW5jdGlvbiBkb21BUEkob3B0aW9ucykge1xuICB2YXIgc3R5bGVFbGVtZW50ID0gb3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gIHJldHVybiB7XG4gICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUob2JqKSB7XG4gICAgICBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaik7XG4gICAgfSxcbiAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpO1xuICAgIH1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBkb21BUEk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQpIHtcbiAgaWYgKHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCk7XG4gICAgfVxuXG4gICAgc3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3R5bGVUYWdUcmFuc2Zvcm07IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBqcy1qb2RhL2NvcmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHRoeC9kYXRlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkB0aHgvbW9uZXlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY3JlZGl0LWNhcmQtdHlwZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJkZWJ1Z1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJldmVudGVtaXR0ZXIzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImZsYXRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZm9ybWlrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImlucHV0bWFza1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJqcy1tb25leVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJsb2Rhc2gvZ2V0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImxvZGFzaC9wcm9wZXJ0eVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJsb2Rhc2gvdW5pcVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJsdWhuXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWNyZWRpdC1jYXJkc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1jcmVkaXQtY2FyZHMvZXMvc3R5bGVzLWNvbXBpbGVkLmNzc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1kYXRlcGlja2VyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJvdXRlci1kb21cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtdGFibGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QvanN4LWRldi1ydW50aW1lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInNlbWFudGljLXVpLXJlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInNvY2lhbC1pbnN1cmFuY2UtbnVtYmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVzZS1kZWVwLWNvbXBhcmUtZWZmZWN0XCIpOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0aWQ6IG1vZHVsZUlkLFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvLyBEYXRlXG5leHBvcnQgdHlwZSB7RGF0ZVBpY2tlcn0gZnJvbSAnLi9kYXRlL0RhdGVQaWNrZXInO1xuZXhwb3J0IHtMb2NhbERhdGVQaWNrZXJ9IGZyb20gJy4vZGF0ZS9Mb2NhbERhdGVQaWNrZXInO1xuZXhwb3J0IHR5cGUge0xvY2FsRGF0ZVBpY2tlclByb3BzfSBmcm9tICcuL2RhdGUvTG9jYWxEYXRlUGlja2VyJztcbmV4cG9ydCB7TG9jYWxNb250aFNlbGVjdH0gZnJvbSAnLi9kYXRlL0xvY2FsTW9udGhTZWxlY3QnO1xuZXhwb3J0IHR5cGUge0xvY2FsTW9udGhTZWxlY3RQcm9wc30gZnJvbSAnLi9kYXRlL0xvY2FsTW9udGhTZWxlY3QnO1xuZXhwb3J0IHtMb2NhbFRpbWVQaWNrZXJ9IGZyb20gJy4vZGF0ZS9Mb2NhbFRpbWVQaWNrZXInO1xuZXhwb3J0IHR5cGUge0xvY2FsVGltZVBpY2tlclByb3BzfSBmcm9tICcuL2RhdGUvTG9jYWxUaW1lUGlja2VyJztcbmV4cG9ydCB7TW9udGhEYXlQaWNrZXJ9IGZyb20gJy4vZGF0ZS9Nb250aERheVBpY2tlcic7XG5leHBvcnQgdHlwZSB7TW9udGhEYXlQaWNrZXJQcm9wc30gZnJvbSAnLi9kYXRlL01vbnRoRGF5UGlja2VyJztcbmV4cG9ydCB7TW9udGhZZWFyUGlja2VyfSBmcm9tICcuL2RhdGUvTW9udGhZZWFyUGlja2VyJztcbmV4cG9ydCB0eXBlIHtNb250aFllYXJQaWNrZXJQcm9wc30gZnJvbSAnLi9kYXRlL01vbnRoWWVhclBpY2tlcic7XG5leHBvcnQge1llYXJTZWxlY3R9IGZyb20gJy4vZGF0ZS9ZZWFyU2VsZWN0JztcbmV4cG9ydCB0eXBlIHtZZWFyU2VsZWN0UHJvcHN9IGZyb20gJy4vZGF0ZS9ZZWFyU2VsZWN0JztcblxuLy8gRm9ybVxuZXhwb3J0IHt1c2VURm9ybSwgVEZvcm19IGZyb20gJy4vZm9ybS9URm9ybSc7XG5leHBvcnQgdHlwZSB7VEZvcm1Qcm9wc30gZnJvbSAnLi9mb3JtL1RGb3JtJztcblxuLy8gSW5wdXRzXG5leHBvcnQge01hc2tlZElucHV0fSBmcm9tICcuL2lucHV0cy9NYXNrZWRJbnB1dCc7XG5leHBvcnQgdHlwZSB7TWFza2VkSW5wdXRQcm9wc30gZnJvbSAnLi9pbnB1dHMvTWFza2VkSW5wdXQnO1xuZXhwb3J0IHtSYWRpb0dyb3VwfSBmcm9tICcuL2lucHV0cy9SYWRpb0dyb3VwJztcbmV4cG9ydCB0eXBlIHtSYWRpb0dyb3VwUHJvcHN9IGZyb20gJy4vaW5wdXRzL1JhZGlvR3JvdXAnO1xuZXhwb3J0IHtTY3JpcHRlbCwgd2l0aFNjcmlwdGVsfSBmcm9tICcuL2lucHV0cy9TY3JpcHRlbCc7XG5leHBvcnQgdHlwZSB7U2NyaXB0ZWxQcm9wcywgU2NyaXB0ZWxNZXNzYWdlQ2xhc3MsIFNjcmlwdGVsUGVuU3R5bGV9IGZyb20gJy4vaW5wdXRzL1NjcmlwdGVsJztcbmV4cG9ydCB7U2NyaXB0ZWxJbnB1dH0gZnJvbSAnLi9pbnB1dHMvU2NyaXB0ZWxJbnB1dCc7XG5leHBvcnQgdHlwZSB7U2NyaXB0ZWxJbnB1dFByb3BzfSBmcm9tICcuL2lucHV0cy9TY3JpcHRlbElucHV0JztcbmV4cG9ydCB7UGhvbmVJbnB1dH0gZnJvbSAnLi9pbnB1dHMvUGhvbmVJbnB1dCc7XG5leHBvcnQgdHlwZSB7UGhvbmVJbnB1dFByb3BzfSBmcm9tICcuL2lucHV0cy9QaG9uZUlucHV0JztcbmV4cG9ydCB7Q3JlZGl0Q2FyZElucHV0fSBmcm9tICcuL2lucHV0cy9DcmVkaXRDYXJkSW5wdXQnO1xuZXhwb3J0IHR5cGUge0NyZWRpdENhcmRJbnB1dFByb3BzfSBmcm9tICcuL2lucHV0cy9DcmVkaXRDYXJkSW5wdXQnO1xuZXhwb3J0IHtTaW5JbnB1dH0gZnJvbSAnLi9pbnB1dHMvU2luSW5wdXQnO1xuZXhwb3J0IHR5cGUge1NpbklucHV0UHJvcHN9IGZyb20gJy4vaW5wdXRzL1NpbklucHV0JztcblxuLy8gVGFibGVcbmV4cG9ydCB7YWRkUm93T25UYWIsIE1vbmV5RWRpdENlbGwsIFN0cmluZ0VkaXRDZWxsLCBNb25leVN1bUZvb3RlciwgTW9uZXlDZWxsLCBUYWJsZUlucHV0LCBIb3ZlckNlbGwsIERyb3Bkb3duQ2VsbH0gZnJvbSAnLi9pbnB1dHMvVGFibGVJbnB1dCc7XG5leHBvcnQgdHlwZSB7QWRkUm93T25UYWJJZn0gZnJvbSAnLi9pbnB1dHMvVGFibGVJbnB1dCc7XG5cbi8vIE1vbmV5XG5leHBvcnQge01vbmV5SW5wdXR9IGZyb20gJy4vbW9uZXkvTW9uZXlJbnB1dCc7XG5leHBvcnQgdHlwZSB7TW9uZXlJbnB1dFByb3BzfSBmcm9tICcuL21vbmV5L01vbmV5SW5wdXQnO1xuZXhwb3J0IHtNb25leUN1cnJlbmN5SW5wdXR9IGZyb20gJy4vbW9uZXkvTW9uZXlDdXJyZW5jeUlucHV0JztcbmV4cG9ydCB0eXBlIHtNb25leUN1cnJlbmN5SW5wdXRQcm9wc30gZnJvbSAnLi9tb25leS9Nb25leUN1cnJlbmN5SW5wdXQnO1xuXG4vLyBTdGVwXG5leHBvcnQge0Zvcm1TdGVwLCBTdGVwUHJvdmlkZXIsIHVzZVN0ZXAsIFN0ZXB9IGZyb20gJy4vc3RlcCc7XG4iXSwibmFtZXMiOlsiRGF0ZVBpY2tlciIsInRvRGF0ZSIsInRvTG9jYWxEYXRlIiwiZGVidWciLCJNYXNrZWREYXRlSW5wdXQiLCJkIiwiTG9jYWxEYXRlUGlja2VyIiwicHJvcHMiLCJtaW5EYXRlIiwibWF4RGF0ZSIsInZhbHVlIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJhcyIsImFjdGlvbiIsImFjdGlvblBvc2l0aW9uIiwiY2xhc3NOYW1lIiwiZXJyb3IiLCJmbHVpZCIsImZvY3VzIiwiaWNvbiIsImljb25Qb3NpdGlvbiIsImludmVydGVkIiwibGFiZWwiLCJsYWJlbFBvc2l0aW9uIiwibG9hZGluZyIsInNpemUiLCJ0YWJJbmRleCIsInRyYW5zcGFyZW50IiwicmVzdCIsInNlbGVjdGVkIiwiaW5wdXRQcm9wcyIsImRhdGUiLCJmb3J3YXJkUmVmIiwiTWFza2VkSW5wdXQiLCJNYXNrZWREYXRlSW5wdXRJbm5lciIsInJlZiIsIm5hbWUiLCJhbGlhcyIsImlucHV0Rm9ybWF0IiwidGFyZ2V0IiwiTG9jYWxEYXRlIiwiU2VsZWN0IiwibW9udGhPcHRpb25zIiwidGV4dCIsImtleSIsIkxvY2FsTW9udGhTZWxlY3QiLCJ5ZWFyIiwiaGFuZGxlQmx1ciIsInRoZVllYXIiLCJub3ciLCJtb250aFZhbHVlIiwiZXYiLCJ2Iiwib2YiLCJMb2NhbFRpbWUiLCJ0b0xvY2FsVGltZSIsIk1hc2tlZFRpbWVJbnB1dCIsIkxvY2FsVGltZVBpY2tlciIsImRpc2FibGVkIiwib2ZTZWNvbmRPZkRheSIsIk1hc2tlZFRpbWVJbnB1dElubmVyIiwiSW5wdXQiLCJtb250aHMiLCJNb250aERheUhlYWRlciIsImdldE1vbnRoIiwiZGVjcmVhc2VNb250aCIsInByZXZNb250aEJ1dHRvbkRpc2FibGVkIiwiaW5jcmVhc2VNb250aCIsIm5leHRNb250aEJ1dHRvbkRpc2FibGVkIiwiTW9udGhEYXlQaWNrZXIiLCJNb250aFllYXJQaWNrZXIiLCJ1bmRlZmluZWQiLCJ3aXRoRGF5T2ZNb250aCIsIm9mRXBvY2hEYXkiLCJwbHVzTW9udGhzIiwibWludXNEYXlzIiwicGx1c1llYXJzIiwiSWNvbiIsIkJ1dHRvbiIsIkRyb3Bkb3duIiwiU2VnbWVudCIsIlllYXJTZWxlY3QiLCJ0aGlzWWVhciIsIkRhdGUiLCJnZXRGdWxsWWVhciIsIm1pblllYXIiLCJtYXhZZWFyIiwiYXZhaWxhYmxlWWVhcnMiLCJpIiwicHVzaCIsInRvU3RyaW5nIiwicGFkZGluZyIsIm1hcmdpbiIsImUiLCJ2YWwiLCJtYXJnaW5SaWdodCIsImlzRnVuY3Rpb24iLCJGb3JtaWtQcm92aWRlciIsImlzRW1wdHlDaGlsZHJlbiIsIlJlYWN0IiwidXNlVEZvcm0iLCJURm9ybSIsInRiYWciLCJjb21wb25lbnQiLCJyZW5kZXIiLCJjaGlsZHJlbiIsImlubmVyUmVmIiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsImNoaWxkIiwiY3JlYXRlRWxlbWVudCIsIkNoaWxkcmVuIiwib25seSIsImZsYXR0ZW4iLCJ1c2VGb3JtaWsiLCJnZXQiLCJwcm9wZXJ0eSIsInVuaXEiLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsIk1lc3NhZ2UiLCJjb25maWciLCJmb3JtaWsiLCJvblZhbGlkYXRlIiwiaXNWYWxpZCIsImdldFN1Ym1pdEZuIiwic3VibWl0Rm9ybSIsInZhbHVlcyIsImVycm9yQ2xlYXJlZCIsInNldEVycm9yQ2xlYXJlZCIsIm1lc3NhZ2UiLCJpc1N1Ym1pdHRpbmciLCJmbGF0V2FybmluZ3MiLCJlcnJvcnMiLCJmbGF0VG91Y2hlZCIsInRvdWNoZWQiLCJ3YXJuaW5ncyIsIk9iamVjdCIsImtleXMiLCJyZWR1Y2UiLCJtZW1vIiwiaXNUb3VjaGVkIiwic3VibWl0Q291bnQiLCJlcnJvckhlYWRlciIsImdyYXBoUUxFcnJvcnMiLCJlcnJvck1lc3NhZ2UiLCJzbGljZSIsImluZGV4T2YiLCJoYXNXYXJuaW5ncyIsImxlbmd0aCIsImhhc0Vycm9ycyIsInJlbmRlcldhcm5pbmdzIiwib3ZlcmZsb3ciLCJtYXhIZWlnaHQiLCJtYXAiLCJtc2ciLCJmaWVsZEVycm9yIiwiZmllbGROYW1lIiwiaGFuZGxlU3VibWl0Iiwic3VibWl0RGlzYWJsZWQiLCJlcnJvck1hcmtlZENsZWFyZWQiLCJmb3JtRXJyb3IiLCJmb3JtYXREYXRlIiwiQ3JlZGl0Q2FyZHMiLCJGb3JtIiwiR3JpZCIsIkNyZWRpdENhcmROdW1iZXJJbnB1dCIsIkNyZWRpdENhcmRJbnB1dCIsIm51bWJlciIsImN2YyIsImV4cGlyeSIsInNldEZvY3VzIiwiZm9ybWF0IiwiYSIsImIiLCJjcmVkaXRDYXJkVHlwZSIsInZhbGlkYXRlIiwidXNlQ2FsbGJhY2siLCJ1c2VNZW1vIiwidXNlTWFza2VkSW5wdXQiLCJnZXRJY29uIiwidHlwZSIsInNldEljb24iLCJjb2xvciIsInNldENvbG9yIiwiY2hlY2tWYWxpZGF0aW9uIiwidmFsdWVBcnJheSIsIm51bSIsImpvaW4iLCJyZXBsYWNlQWxsIiwidHlwIiwiY3JlZGl0Q2FyZE1hc2siLCJtYXNrIiwiaXNDb21wbGV0ZSIsImF1dG9Vbm1hc2siLCJjYXJkTnVtYmVyUmVmIiwiaW5wdXRSZWYiLCJJbnB1dG1hc2siLCJ1c2VSZWYiLCJ1c2VEZWVwQ29tcGFyZUVmZmVjdCIsIm9uU2V0IiwiaW5wdXRFbGVtZW50IiwibWFza0luc3RhbmNlIiwiY3VycmVudCIsIkVycm9yIiwib25jb21wbGV0ZSIsIm9uY2xlYXJlZCIsIm9uaW5jb21wbGV0ZSIsInJlbW92ZSIsIlBob25lSW5wdXQiLCJleHRlbnNpb24iLCJncmVlZHkiLCJjbG9uZUVsZW1lbnQiLCJSYWRpbyIsIkZvcm1SYWRpbyIsIlJhZGlvR3JvdXAiLCJhcmdzIiwiY2hlY2tlZCIsIlNjcmlwdGVsQ29udGV4dCIsIlNjcmlwdGVsU29ja2V0IiwiU2NyaXB0ZWwiLCJvbW5pc2NyaXB0VXJsIiwiaW1hZ2VUeXBlIiwic2NhbGUiLCJjcm9wIiwicGVuU3R5bGUiLCJzb2NrZXQiLCJzZXRSZW5kZXIiLCJzZXRMb2FkaW5nIiwiaXNTaWduaW5nIiwic2V0SXNTaWduaW5nIiwib24iLCJjbG9zZSIsInNjcmlwdGVsIiwicmVuZGVySW1hZ2UiLCJjcmVhdGVDb250ZXh0Iiwid2l0aFNjcmlwdGVsIiwiU2NyaXB0ZWxQZW5TdHlsZSIsIlNjcmlwdGVsTWVzc2FnZUNsYXNzIiwiRXZlbnRFbWl0dGVyIiwic2VydmVyQ29ubmVjdGVkIiwic2VydmVySW5mbyIsImRldmljZXMiLCJkZXZpY2UiLCJzZW5kIiwiSlNPTiIsInN0cmluZ2lmeSIsIl9jbGFzcyIsInV1aWQiLCJkZXZpY2VDb25uZWN0ZWQiLCJyZW5kZXJTZXR0aW5ncyIsInJlbmRlckZ1bmN0aW9uIiwiUGxhaW4iLCJldmVudEVtaXR0ZXIiLCJ3aWR0aCIsImhlaWdodCIsImVtaXQiLCJvcHRpb25zIiwiV2ViU29ja2V0Iiwib25vcGVuIiwib25jbG9zZSIsIm9ubWVzc2FnZSIsInBhcnNlIiwiZGF0YSIsIkNvbm5lY3Rpb25PcGVuIiwiRGV2aWNlT3BlblJlc3BvbnNlIiwiUmVuZGVyZWRJbWFnZSIsIlNjcmlwdGVsRXhjZXB0aW9uIiwiQnV0dG9uUHJlc3MiLCJCdXR0b25Eb3duIiwiUGVuTW92ZSIsIlBlblVwIiwiV3JhcHBlZENvbXBvbmVudCIsInNjcmlwdGVsUHJvcHMiLCJ3aXRoU2NyaXB0ZWxIb0MiLCJ1c2VDb250ZXh0IiwiSW1hZ2UiLCJTY3JpcHRlbElucHV0IiwiYnV0dG9uVGV4dCIsImN0eCIsImVudGVyU2lnbmF0dXJlIiwic2V0RW50ZXJTaWduYXR1cmUiLCJ0aW1lc3RhbXAiLCJjYWxpYnJhdGUiLCJTSU4iLCJTaW5JbnB1dCIsIkRyb3Bkb3duQ2VsbCIsImRyb3Bkb3duUHJvcHMiLCJEcm9wZG93bkNlbGxGbiIsInJvd0luZGV4Iiwicm93IiwiaW5kZXgiLCJpZCIsImNvbHVtbiIsInVwZGF0ZURhdGEiLCJldmVudCIsIkhvdmVyQ2VsbCIsIkhvdmVyQ2VsbEZuIiwiQWN0aW9uIiwiaG92ZXJSb3ciLCJ0ZXh0QWxpZ24iLCJmb3JtYXRNb25leSIsIk1vbmV5Q2VsbCIsIk1vbmV5Q2VsbEZuIiwib3ZlcnJpZGVWYWx1ZSIsIk1vbmV5SW5wdXQiLCJhZGRSb3dPblRhYiIsIk1vbmV5RWRpdENlbGwiLCJvcHRzIiwiTW9uZXlFZGl0Q2VsbEZuIiwiaW5pdGlhbFZhbHVlIiwic2V0VmFsdWUiLCJhZGRSb3dPblRhYklmIiwidG9Nb25leSIsIk1vbmV5U3VtRm9vdGVyIiwiTW9uZXlTdW1Gb290ZXJJbnN0YW5jZSIsImluZm8iLCJzdW0iLCJyb3dzIiwiYWRkIiwiU3RyaW5nRWRpdENlbGwiLCJTdHJpbmdFZGl0Q2VsbEZuIiwiRmllbGRBcnJheSIsInVzZVRhYmxlIiwiVGFibGUiLCJUYWJsZUlucHV0VGFibGUiLCJjb2x1bW5zIiwiYXJyYXlIZWxwZXJzIiwic2V0RmllbGRWYWx1ZSIsImNyZWF0ZVJvdyIsInRhYmxlUHJvcHMiLCJoZWFkZXJSb3dQcm9wcyIsImhlYWRlckNlbGxQcm9wcyIsImJvZHlQcm9wcyIsInJvd1Byb3BzIiwiY2VsbFByb3BzIiwiZm9vdGVyQ2VsbFByb3BzIiwiZm9vdGVyUm93UHJvcHMiLCJjb2xzIiwidmFscyIsInNldEhvdmVyUm93IiwiY29sdW1uSWQiLCJhZGRSb3ciLCJnZXRUYWJsZVByb3BzIiwiZ2V0VGFibGVCb2R5UHJvcHMiLCJoZWFkZXJHcm91cHMiLCJwcmVwYXJlUm93IiwiZm9vdGVyR3JvdXBzIiwiaGFzRm9vdGVyIiwic29tZSIsImZnIiwiaGVhZGVycyIsImZnaCIsIkZvb3RlciIsImZvb3RlciIsImdyb3VwIiwiZ2V0Rm9vdGVyR3JvdXBQcm9wcyIsImdldEZvb3RlclByb3BzIiwiaGVhZGVyR3JvdXAiLCJnZXRIZWFkZXJHcm91cFByb3BzIiwiZ2V0SGVhZGVyUHJvcHMiLCJnZXRSb3dQcm9wcyIsImNlbGxzIiwiY2VsbCIsImdldENlbGxQcm9wcyIsIlRhYmxlSW5wdXQiLCJyb3dzTGVuZ3RoIiwic2hpZnRLZXkiLCJNb25leSIsIkxhYmVsIiwidXNlTW9uZXlJbnB1dCIsIk1vbmV5Q3VycmVuY3lJbnB1dCIsInByZWZpeCIsImRlZmF1bHRDdXJyZW5jeSIsInNob3dQcmVmaXgiLCJ3aG9sZU51bWJlciIsImN1cnJlbmNpZXMiLCJsb2NrZWQiLCJoYW5kbGVDaGFuZ2UiLCJoYW5kbGVEcm9wZG93bkNoYW5nZSIsIm5ld0N1cnJlbmN5Q29kZSIsIm5ld01vbmV5IiwiYW1vdW50IiwiY3VycmVuY3lDb2RlIiwiY3VycmVuY3kiLCJjb2RlIiwiZ3JvdXBTZXBhcmF0b3IiLCJkaWdpdHMiLCJkZWNpbWFsX2RpZ2l0cyIsImRpZ2l0c09wdGlvbmFsIiwic3ltYm9sIiwicGxhY2Vob2xkZXIiLCJzZXRWYWwiLCJ0b0RlY2ltYWwiLCJ3aGF0Q3VycmVudGx5SXNEaXNwbGF5ZWQiLCJ3aGF0V2VBcmVTZXR0aW5nIiwidXNlU3RlcCIsIkZvcm1TdGVwIiwic3RhdGUiLCJzdGVwS2V5IiwiZm9ybSIsIm9uU3VibWl0IiwidGl0bGUiLCJTdGVwIiwiUHJvbXB0IiwiU2VtYW50aWNTdGVwIiwiU3RlcENvbnRleHQiLCJTdGVwUHJvdmlkZXIiLCJzZXRTdGF0ZSIsImN1cnJlbnRTdGVwIiwic2V0Q3VycmVudFN0ZXAiLCJzZXRJc1N1Ym1pdHRpbmciLCJ0aXRsZXMiLCJmb3JFYWNoIiwiaGlkZGVuIiwic3RlcCIsIm9uTmF2aWdhdGUiLCJ2YWx1ZVByb3BzIiwidmVydGljYWwiLCJ3YXJuT25SZXJvdXRlIl0sInNvdXJjZVJvb3QiOiIifQ==
|