@1money/component-ui 0.0.69 → 0.0.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +3 -2
- package/es/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +2 -2
- package/es/business/Select/Network/NetworkSelect.js +2 -2
- package/es/components/Accordion/Accordion.js +3 -2
- package/es/components/Calendar/Calendar.js +3 -2
- package/es/components/Carousel/Carousel.js +3 -2
- package/es/components/Checkbox/BaseCheckbox.js +3 -2
- package/es/components/Checkbox/Checkbox.js +2 -2
- package/es/components/Checkbox/CheckboxGroup.js +3 -2
- package/es/components/CoachMark/CoachMark.js +3 -2
- package/es/components/Copy/Copy.js +2 -2
- package/es/components/Dialog/Dialog.js +2 -2
- package/es/components/Drawer/Drawer.js +2 -2
- package/es/components/Icons/Wrapper.js +6 -4
- package/es/components/Icons/constants.d.ts +11 -0
- package/es/components/Icons/constants.js +32 -0
- package/es/components/Icons/index.d.ts +2 -0
- package/es/components/Icons/index.js +2 -1
- package/es/components/Icons/interface.d.ts +8 -1
- package/es/components/Input/Amount/Amount.js +2 -2
- package/es/components/Input/Input/Input.js +3 -2
- package/es/components/Input/Mask/Mask.js +3 -2
- package/es/components/Input/OTP/OTP.js +3 -2
- package/es/components/Input/Password/Password.js +3 -2
- package/es/components/Input/Search/Search.js +3 -2
- package/es/components/Input/TextArea/TextArea.js +3 -2
- package/es/components/Input/Trade/Trade.js +2 -2
- package/es/components/Input/useAmountInput.js +4 -2
- package/es/components/Input/useSyncRef.js +2 -2
- package/es/components/Navigation/Nav.js +2 -2
- package/es/components/Navigation/Navigation.js +5 -2
- package/es/components/Pagination/Pagination.js +2 -2
- package/es/components/Pagination/usePagination.js +3 -2
- package/es/components/Popconfirm/Popconfirm.js +2 -2
- package/es/components/Portal/Portal.js +2 -2
- package/es/components/ProForm/ProForm.js +6 -3
- package/es/components/ProForm/ProFormGroup.js +2 -2
- package/es/components/ProForm/ProFormList.js +3 -2
- package/es/components/ProForm/Submitter.js +2 -2
- package/es/components/ProForm/core/constants.d.ts +6 -0
- package/es/components/ProForm/core/constants.js +7 -1
- package/es/components/ProForm/core/hooks/useForm.js +25 -195
- package/es/components/ProForm/core/hooks/useFormCore.js +14 -142
- package/es/components/ProForm/core/pathUtils.d.ts +6 -0
- package/es/components/ProForm/core/pathUtils.js +59 -0
- package/es/components/ProForm/core/runRules.d.ts +13 -0
- package/es/components/ProForm/core/runRules.js +186 -0
- package/es/components/ProForm/core/useFormItem.js +10 -28
- package/es/components/ProForm/fields/createProFormField.js +43 -57
- package/es/components/ProForm/hooks/useFieldRequest.js +7 -5
- package/es/components/ProForm/layouts/QueryFilter.js +3 -2
- package/es/components/ProForm/layouts/useOverlayForm.js +23 -21
- package/es/components/ProForm/utils.d.ts +2 -2
- package/es/components/ProForm/utils.js +5 -51
- package/es/components/ProTable/ProTable.js +3 -2
- package/es/components/ProTable/core/useAwaitableReload.js +3 -2
- package/es/components/ProTable/useFetchData.js +4 -2
- package/es/components/Radio/Radio.js +3 -2
- package/es/components/Radio/RadioGroup.js +3 -2
- package/es/components/ResizeObserver/useResizeObserver.js +2 -2
- package/es/components/Segment/Segment.js +4 -2
- package/es/components/Select/Select.js +3 -2
- package/es/components/Select/SelectCustom.js +2 -2
- package/es/components/Select/useSelectShell.js +3 -2
- package/es/components/Slider/Slider.js +3 -2
- package/es/components/Switch/Switch.js +3 -2
- package/es/components/Table/Table.js +14 -28
- package/es/components/Table/VirtualTable.js +18 -28
- package/es/components/Table/core/columnUtil.d.ts +9 -0
- package/es/components/Table/core/columnUtil.js +34 -0
- package/es/components/Table/core/useTableColumns.d.ts +4 -13
- package/es/components/Table/core/useTableColumns.js +55 -24
- package/es/components/Table/core/useTableDataPipeline.d.ts +11 -16
- package/es/components/Table/core/useTableDataPipeline.js +66 -73
- package/es/components/Table/core/useTableExpand.js +3 -2
- package/es/components/Table/core/useTableSelection.js +7 -4
- package/es/components/Table/core/useTableSetup.js +4 -2
- package/es/components/Table/features/ExpandTrigger.d.ts +9 -3
- package/es/components/Table/features/ExpandTrigger.js +14 -8
- package/es/components/Table/features/FilterTrigger.js +21 -17
- package/es/components/Table/features/SelectionColumn.d.ts +11 -6
- package/es/components/Table/features/SelectionColumn.js +12 -5
- package/es/components/Table/features/SortTrigger.d.ts +4 -2
- package/es/components/Table/features/SortTrigger.js +8 -3
- package/es/components/Table/internal/kernel/Body/MeasureCell.js +2 -2
- package/es/components/Table/internal/kernel/Cell/index.js +2 -2
- package/es/components/Table/internal/kernel/Table.js +3 -3
- package/es/components/Table/internal/kernel/VirtualTable/index.js +2 -2
- package/es/components/Table/internal/kernel/hooks/useRowInfo.js +2 -2
- package/es/components/Table/internal/kernel/selector-context/context.js +3 -3
- package/es/components/Table/renderers/HeaderCell.js +3 -2
- package/es/components/Table/renderers/TableShell.d.ts +13 -0
- package/es/components/Table/renderers/TableShell.js +25 -0
- package/es/components/Table/style/Table.css +3 -0
- package/es/components/Tabs/Tabs.js +4 -2
- package/es/components/Tooltip/Tooltip.js +3 -2
- package/es/components/Tour/Tour.js +3 -2
- package/es/components/Trigger/Trigger.js +3 -2
- package/es/components/Typography/Typography.js +2 -2
- package/es/components/Typography/useTypographyEnhancements.js +3 -2
- package/es/components/Upload/Upload.js +2 -2
- package/es/components/Upload/UploadFileBar.js +2 -2
- package/es/components/VirtualList/VirtualList.js +3 -2
- package/es/components/VirtualList/hooks/useMobileTouchMove.js +2 -2
- package/es/components/VirtualList/hooks/useScrollTo.js +2 -2
- package/es/index.css +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/lib/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +9 -8
- package/lib/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +3 -3
- package/lib/business/Select/Network/NetworkSelect.js +3 -3
- package/lib/components/Accordion/Accordion.js +5 -4
- package/lib/components/Calendar/Calendar.js +6 -5
- package/lib/components/Carousel/Carousel.js +5 -4
- package/lib/components/Checkbox/BaseCheckbox.js +5 -4
- package/lib/components/Checkbox/Checkbox.js +3 -3
- package/lib/components/Checkbox/CheckboxGroup.js +7 -6
- package/lib/components/CoachMark/CoachMark.js +7 -6
- package/lib/components/Copy/Copy.js +3 -3
- package/lib/components/Dialog/Dialog.js +6 -6
- package/lib/components/Drawer/Drawer.js +10 -10
- package/lib/components/Icons/Wrapper.js +6 -4
- package/lib/components/Icons/constants.d.ts +11 -0
- package/lib/components/Icons/constants.js +38 -0
- package/lib/components/Icons/index.d.ts +2 -0
- package/lib/components/Icons/index.js +10 -2
- package/lib/components/Icons/interface.d.ts +8 -1
- package/lib/components/Input/Amount/Amount.js +6 -5
- package/lib/components/Input/Input/Input.js +7 -6
- package/lib/components/Input/Mask/Mask.js +9 -8
- package/lib/components/Input/OTP/OTP.js +9 -8
- package/lib/components/Input/Password/Password.js +6 -5
- package/lib/components/Input/Search/Search.js +8 -7
- package/lib/components/Input/TextArea/TextArea.js +5 -4
- package/lib/components/Input/Trade/Trade.js +5 -4
- package/lib/components/Input/useAmountInput.js +13 -11
- package/lib/components/Input/useSyncRef.js +4 -3
- package/lib/components/Navigation/Nav.js +3 -3
- package/lib/components/Navigation/Navigation.js +10 -7
- package/lib/components/Pagination/Pagination.js +4 -3
- package/lib/components/Pagination/usePagination.js +7 -6
- package/lib/components/Popconfirm/Popconfirm.js +3 -3
- package/lib/components/Portal/Portal.js +4 -4
- package/lib/components/ProForm/ProForm.js +14 -11
- package/lib/components/ProForm/ProFormGroup.js +3 -3
- package/lib/components/ProForm/ProFormList.js +10 -9
- package/lib/components/ProForm/Submitter.js +4 -4
- package/lib/components/ProForm/core/constants.d.ts +6 -0
- package/lib/components/ProForm/core/constants.js +8 -2
- package/lib/components/ProForm/core/hooks/useForm.js +36 -206
- package/lib/components/ProForm/core/hooks/useFormCore.js +32 -160
- package/lib/components/ProForm/core/pathUtils.d.ts +6 -0
- package/lib/components/ProForm/core/pathUtils.js +68 -0
- package/lib/components/ProForm/core/runRules.d.ts +13 -0
- package/lib/components/ProForm/core/runRules.js +194 -0
- package/lib/components/ProForm/core/useFormItem.js +15 -33
- package/lib/components/ProForm/fields/createProFormField.js +42 -56
- package/lib/components/ProForm/hooks/useFieldRequest.js +9 -7
- package/lib/components/ProForm/layouts/QueryFilter.js +8 -7
- package/lib/components/ProForm/layouts/useOverlayForm.js +27 -27
- package/lib/components/ProForm/utils.d.ts +2 -2
- package/lib/components/ProForm/utils.js +20 -55
- package/lib/components/ProTable/ProTable.js +10 -9
- package/lib/components/ProTable/core/useAwaitableReload.js +6 -5
- package/lib/components/ProTable/useFetchData.js +15 -13
- package/lib/components/Radio/Radio.js +6 -5
- package/lib/components/Radio/RadioGroup.js +5 -4
- package/lib/components/ResizeObserver/useResizeObserver.js +4 -3
- package/lib/components/Segment/Segment.js +7 -5
- package/lib/components/Select/Select.js +23 -22
- package/lib/components/Select/SelectCustom.js +8 -8
- package/lib/components/Select/useSelectShell.js +5 -4
- package/lib/components/Slider/Slider.js +6 -5
- package/lib/components/Switch/Switch.js +5 -4
- package/lib/components/Table/Table.js +13 -27
- package/lib/components/Table/VirtualTable.js +17 -27
- package/lib/components/Table/core/columnUtil.d.ts +9 -0
- package/lib/components/Table/core/columnUtil.js +42 -0
- package/lib/components/Table/core/useTableColumns.d.ts +4 -13
- package/lib/components/Table/core/useTableColumns.js +57 -26
- package/lib/components/Table/core/useTableDataPipeline.d.ts +11 -16
- package/lib/components/Table/core/useTableDataPipeline.js +73 -80
- package/lib/components/Table/core/useTableExpand.js +6 -5
- package/lib/components/Table/core/useTableSelection.js +13 -10
- package/lib/components/Table/core/useTableSetup.js +8 -5
- package/lib/components/Table/features/ExpandTrigger.d.ts +9 -3
- package/lib/components/Table/features/ExpandTrigger.js +14 -8
- package/lib/components/Table/features/FilterTrigger.js +21 -17
- package/lib/components/Table/features/SelectionColumn.d.ts +11 -6
- package/lib/components/Table/features/SelectionColumn.js +12 -5
- package/lib/components/Table/features/SortTrigger.d.ts +4 -2
- package/lib/components/Table/features/SortTrigger.js +8 -3
- package/lib/components/Table/internal/kernel/Body/MeasureCell.js +3 -3
- package/lib/components/Table/internal/kernel/Cell/index.js +4 -4
- package/lib/components/Table/internal/kernel/Table.js +7 -6
- package/lib/components/Table/internal/kernel/VirtualTable/index.js +4 -4
- package/lib/components/Table/internal/kernel/hooks/useRowInfo.js +3 -3
- package/lib/components/Table/internal/kernel/selector-context/context.js +6 -5
- package/lib/components/Table/renderers/HeaderCell.js +3 -2
- package/lib/components/Table/renderers/TableShell.d.ts +13 -0
- package/lib/components/Table/renderers/TableShell.js +31 -0
- package/lib/components/Table/style/Table.css +3 -0
- package/lib/components/Tabs/Tabs.js +7 -5
- package/lib/components/Tooltip/Tooltip.js +5 -4
- package/lib/components/Tour/Tour.js +7 -6
- package/lib/components/Trigger/Trigger.js +5 -4
- package/lib/components/Typography/Typography.js +5 -4
- package/lib/components/Typography/useTypographyEnhancements.js +8 -7
- package/lib/components/Upload/Upload.js +5 -4
- package/lib/components/Upload/UploadFileBar.js +4 -3
- package/lib/components/VirtualList/VirtualList.js +8 -7
- package/lib/components/VirtualList/hooks/useMobileTouchMove.js +4 -3
- package/lib/components/VirtualList/hooks/useScrollTo.js +3 -3
- package/lib/index.css +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/package.json +2 -2
- package/scripts/mcp-server/examples.generated.json +12 -6
- package/scripts/mcp-server/index.generated.json +45 -3
|
@@ -6,36 +6,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.useTableDataPipeline = exports.applyTablePipeline = void 0;
|
|
8
8
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
-
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
10
9
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
11
11
|
var _react = require("react");
|
|
12
|
-
var
|
|
12
|
+
var _useControlledState9 = _interopRequireDefault(require("@1money/hooks/useControlledState"));
|
|
13
|
+
var _useMemoizedFn = _interopRequireDefault(require("@1money/hooks/useMemoizedFn"));
|
|
14
|
+
var _columnUtil = require("./columnUtil");
|
|
13
15
|
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
14
16
|
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
15
17
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
16
|
-
function isColumnGroup(col) {
|
|
17
|
-
return 'children' in col && Array.isArray(col.children);
|
|
18
|
-
}
|
|
19
|
-
function flattenColumns(columns) {
|
|
20
|
-
var result = [];
|
|
21
|
-
var _iterator = _createForOfIteratorHelper(columns),
|
|
22
|
-
_step;
|
|
23
|
-
try {
|
|
24
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
25
|
-
var col = _step.value;
|
|
26
|
-
if (isColumnGroup(col)) {
|
|
27
|
-
result.push.apply(result, (0, _toConsumableArray2["default"])(flattenColumns(col.children)));
|
|
28
|
-
} else {
|
|
29
|
-
result.push(col);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
} catch (err) {
|
|
33
|
-
_iterator.e(err);
|
|
34
|
-
} finally {
|
|
35
|
-
_iterator.f();
|
|
36
|
-
}
|
|
37
|
-
return result;
|
|
38
|
-
}
|
|
39
18
|
function getSortFunction(sorter) {
|
|
40
19
|
if (typeof sorter === 'function') return sorter;
|
|
41
20
|
if (sorter && (0, _typeof2["default"])(sorter) === 'object' && 'compare' in sorter) return sorter.compare;
|
|
@@ -72,22 +51,22 @@ function applySortToData(data, columns, sorterStates) {
|
|
|
72
51
|
return bp - ap;
|
|
73
52
|
});
|
|
74
53
|
sorted.sort(function (record1, record2) {
|
|
75
|
-
var
|
|
76
|
-
|
|
54
|
+
var _iterator = _createForOfIteratorHelper(runningSorters),
|
|
55
|
+
_step;
|
|
77
56
|
try {
|
|
78
|
-
for (
|
|
79
|
-
var
|
|
80
|
-
compareFn =
|
|
81
|
-
order =
|
|
57
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
58
|
+
var _step$value = _step.value,
|
|
59
|
+
compareFn = _step$value.compareFn,
|
|
60
|
+
order = _step$value.order;
|
|
82
61
|
var result = compareFn(record1, record2);
|
|
83
62
|
if (result !== 0) {
|
|
84
63
|
return order === 'ascend' ? result : -result;
|
|
85
64
|
}
|
|
86
65
|
}
|
|
87
66
|
} catch (err) {
|
|
88
|
-
|
|
67
|
+
_iterator.e(err);
|
|
89
68
|
} finally {
|
|
90
|
-
|
|
69
|
+
_iterator.f();
|
|
91
70
|
}
|
|
92
71
|
return 0;
|
|
93
72
|
});
|
|
@@ -130,7 +109,7 @@ var applyTablePipeline = exports.applyTablePipeline = function applyTablePipelin
|
|
|
130
109
|
columnKey: sorter.columnKey,
|
|
131
110
|
order: sorter.order
|
|
132
111
|
}] : [];
|
|
133
|
-
var leafColumns = flattenColumns(columns);
|
|
112
|
+
var leafColumns = (0, _columnUtil.flattenColumns)(columns);
|
|
134
113
|
var filtered = applyFiltersToData(dataSource, leafColumns, filters);
|
|
135
114
|
var sorted = applySortToData(filtered, leafColumns, sorterStates);
|
|
136
115
|
if (!pagination) {
|
|
@@ -146,15 +125,14 @@ var applyTablePipeline = exports.applyTablePipeline = function applyTablePipelin
|
|
|
146
125
|
total: sorted.length
|
|
147
126
|
};
|
|
148
127
|
};
|
|
149
|
-
function collectSorterStates(
|
|
128
|
+
function collectSorterStates(leaves) {
|
|
150
129
|
var _a;
|
|
151
|
-
var leaves = flattenColumns(columns);
|
|
152
130
|
var states = [];
|
|
153
|
-
var
|
|
154
|
-
|
|
131
|
+
var _iterator2 = _createForOfIteratorHelper(leaves),
|
|
132
|
+
_step2;
|
|
155
133
|
try {
|
|
156
|
-
for (
|
|
157
|
-
var col =
|
|
134
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
135
|
+
var col = _step2.value;
|
|
158
136
|
var order = (_a = col.sortOrder) !== null && _a !== void 0 ? _a : col.defaultSortOrder;
|
|
159
137
|
if (col.key != null && order) {
|
|
160
138
|
states.push({
|
|
@@ -164,23 +142,22 @@ function collectSorterStates(columns) {
|
|
|
164
142
|
}
|
|
165
143
|
}
|
|
166
144
|
} catch (err) {
|
|
167
|
-
|
|
145
|
+
_iterator2.e(err);
|
|
168
146
|
} finally {
|
|
169
|
-
|
|
147
|
+
_iterator2.f();
|
|
170
148
|
}
|
|
171
149
|
return states;
|
|
172
150
|
}
|
|
173
|
-
var getInitialSorter = function getInitialSorter(
|
|
174
|
-
var states = collectSorterStates(
|
|
151
|
+
var getInitialSorter = function getInitialSorter(leaves) {
|
|
152
|
+
var states = collectSorterStates(leaves);
|
|
175
153
|
if (states.length === 0) return {};
|
|
176
154
|
return {
|
|
177
155
|
columnKey: states[0].columnKey,
|
|
178
156
|
order: states[0].order
|
|
179
157
|
};
|
|
180
158
|
};
|
|
181
|
-
var getControlledSorter = function getControlledSorter(
|
|
159
|
+
var getControlledSorter = function getControlledSorter(leaves) {
|
|
182
160
|
var _a;
|
|
183
|
-
var leaves = flattenColumns(columns);
|
|
184
161
|
var controlledColumn = leaves.find(function (column) {
|
|
185
162
|
return column.sortOrder !== undefined;
|
|
186
163
|
});
|
|
@@ -192,15 +169,14 @@ var getControlledSorter = function getControlledSorter(columns) {
|
|
|
192
169
|
order: (_a = controlledColumn.sortOrder) !== null && _a !== void 0 ? _a : null
|
|
193
170
|
};
|
|
194
171
|
};
|
|
195
|
-
var getInitialFilters = function getInitialFilters(
|
|
172
|
+
var getInitialFilters = function getInitialFilters(leaves) {
|
|
196
173
|
var _a;
|
|
197
|
-
var leaves = flattenColumns(columns);
|
|
198
174
|
var state = {};
|
|
199
|
-
var
|
|
200
|
-
|
|
175
|
+
var _iterator3 = _createForOfIteratorHelper(leaves),
|
|
176
|
+
_step3;
|
|
201
177
|
try {
|
|
202
|
-
for (
|
|
203
|
-
var col =
|
|
178
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
179
|
+
var col = _step3.value;
|
|
204
180
|
if (col.key == null) continue;
|
|
205
181
|
var initial = (_a = col.defaultFilteredValue) !== null && _a !== void 0 ? _a : col.filteredValue;
|
|
206
182
|
if (initial !== undefined) {
|
|
@@ -208,21 +184,20 @@ var getInitialFilters = function getInitialFilters(columns) {
|
|
|
208
184
|
}
|
|
209
185
|
}
|
|
210
186
|
} catch (err) {
|
|
211
|
-
|
|
187
|
+
_iterator3.e(err);
|
|
212
188
|
} finally {
|
|
213
|
-
|
|
189
|
+
_iterator3.f();
|
|
214
190
|
}
|
|
215
191
|
return state;
|
|
216
192
|
};
|
|
217
|
-
var getControlledFilters = function getControlledFilters(
|
|
218
|
-
var leaves = flattenColumns(columns);
|
|
193
|
+
var getControlledFilters = function getControlledFilters(leaves) {
|
|
219
194
|
var hasControlled = false;
|
|
220
195
|
var state = {};
|
|
221
|
-
var
|
|
222
|
-
|
|
196
|
+
var _iterator4 = _createForOfIteratorHelper(leaves),
|
|
197
|
+
_step4;
|
|
223
198
|
try {
|
|
224
|
-
for (
|
|
225
|
-
var col =
|
|
199
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
200
|
+
var col = _step4.value;
|
|
226
201
|
if (col.key == null) continue;
|
|
227
202
|
if (col.filteredValue !== undefined) {
|
|
228
203
|
hasControlled = true;
|
|
@@ -230,9 +205,9 @@ var getControlledFilters = function getControlledFilters(columns) {
|
|
|
230
205
|
}
|
|
231
206
|
}
|
|
232
207
|
} catch (err) {
|
|
233
|
-
|
|
208
|
+
_iterator4.e(err);
|
|
234
209
|
} finally {
|
|
235
|
-
|
|
210
|
+
_iterator4.f();
|
|
236
211
|
}
|
|
237
212
|
return hasControlled ? state : undefined;
|
|
238
213
|
};
|
|
@@ -281,34 +256,53 @@ var useTableDataPipeline = exports.useTableDataPipeline = function useTableDataP
|
|
|
281
256
|
pagination = _ref3.pagination,
|
|
282
257
|
onChange = _ref3.onChange;
|
|
283
258
|
var _a, _b, _c, _d;
|
|
259
|
+
// Flatten once per `columns` change and share the leaf list across every
|
|
260
|
+
// derive step below — they used to each re-flatten on every render.
|
|
261
|
+
var leaves = (0, _react.useMemo)(function () {
|
|
262
|
+
return (0, _columnUtil.flattenColumns)(columns);
|
|
263
|
+
}, [columns]);
|
|
284
264
|
// Sorter / filters are "derived controlled" — the controlled value is built
|
|
285
265
|
// by scanning column props (`sortOrder` / `filteredValue`), so `getControlled*`
|
|
286
266
|
// returns a fresh object every render even when the underlying inputs are
|
|
287
267
|
// unchanged. Without stabilisation, `useControlledState`'s internal
|
|
288
268
|
// `useLayoutEffect([value])` would re-sync on every render → infinite loop.
|
|
289
269
|
// Pin the reference via a shallow-equal ref.
|
|
290
|
-
var controlledSorter = useStableRef(getControlledSorter(
|
|
291
|
-
var controlledFilters = useStableRef(getControlledFilters(
|
|
292
|
-
|
|
270
|
+
var controlledSorter = useStableRef(getControlledSorter(leaves), sorterEqual);
|
|
271
|
+
var controlledFilters = useStableRef(getControlledFilters(leaves), filtersEqual);
|
|
272
|
+
// Initial sorter / filters only matter on mount, so memoise them on `leaves`
|
|
273
|
+
// instead of recomputing (and re-flattening) every render.
|
|
274
|
+
var initialSorter = (0, _react.useMemo)(function () {
|
|
275
|
+
return getInitialSorter(leaves);
|
|
276
|
+
}, [leaves]);
|
|
277
|
+
var initialFilters = (0, _react.useMemo)(function () {
|
|
278
|
+
return getInitialFilters(leaves);
|
|
279
|
+
}, [leaves]);
|
|
280
|
+
var _useControlledState = (0, _useControlledState9["default"])(initialSorter, controlledSorter),
|
|
293
281
|
_useControlledState2 = (0, _slicedToArray2["default"])(_useControlledState, 2),
|
|
294
282
|
sorter = _useControlledState2[0],
|
|
295
283
|
setSorter = _useControlledState2[1];
|
|
296
|
-
var _useControlledState3 = (0,
|
|
284
|
+
var _useControlledState3 = (0, _useControlledState9["default"])(initialFilters, controlledFilters),
|
|
297
285
|
_useControlledState4 = (0, _slicedToArray2["default"])(_useControlledState3, 2),
|
|
298
286
|
filters = _useControlledState4[0],
|
|
299
287
|
setFilters = _useControlledState4[1];
|
|
300
|
-
var _useControlledState5 = (0,
|
|
288
|
+
var _useControlledState5 = (0, _useControlledState9["default"])(pagination === false ? 1 : (_b = (_a = pagination === null || pagination === void 0 ? void 0 : pagination.defaultCurrent) !== null && _a !== void 0 ? _a : pagination === null || pagination === void 0 ? void 0 : pagination.current) !== null && _b !== void 0 ? _b : 1, pagination === false ? undefined : pagination === null || pagination === void 0 ? void 0 : pagination.current),
|
|
301
289
|
_useControlledState6 = (0, _slicedToArray2["default"])(_useControlledState5, 2),
|
|
302
290
|
current = _useControlledState6[0],
|
|
303
291
|
setCurrent = _useControlledState6[1];
|
|
304
|
-
var _useControlledState7 = (0,
|
|
292
|
+
var _useControlledState7 = (0, _useControlledState9["default"])(pagination === false ? 10 : (_d = (_c = pagination === null || pagination === void 0 ? void 0 : pagination.defaultPageSize) !== null && _c !== void 0 ? _c : pagination === null || pagination === void 0 ? void 0 : pagination.pageSize) !== null && _d !== void 0 ? _d : 10, pagination === false ? undefined : pagination === null || pagination === void 0 ? void 0 : pagination.pageSize),
|
|
305
293
|
_useControlledState8 = (0, _slicedToArray2["default"])(_useControlledState7, 2),
|
|
306
294
|
pageSize = _useControlledState8[0],
|
|
307
295
|
setPageSize = _useControlledState8[1];
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
296
|
+
// Memoise on primitives — a fresh `{ current, pageSize }` literal every render
|
|
297
|
+
// would defeat the `result` memo below and re-run filter + sort + slice on
|
|
298
|
+
// every unrelated re-render.
|
|
299
|
+
var paginationEnabled = pagination !== false;
|
|
300
|
+
var mergedPagination = (0, _react.useMemo)(function () {
|
|
301
|
+
return paginationEnabled ? {
|
|
302
|
+
current: current,
|
|
303
|
+
pageSize: pageSize
|
|
304
|
+
} : false;
|
|
305
|
+
}, [paginationEnabled, current, pageSize]);
|
|
312
306
|
var sorterStates = (0, _react.useMemo)(function () {
|
|
313
307
|
// Start with the primary user-toggled sorter
|
|
314
308
|
var primary = sorter.columnKey != null && sorter.order ? [{
|
|
@@ -316,8 +310,7 @@ var useTableDataPipeline = exports.useTableDataPipeline = function useTableDataP
|
|
|
316
310
|
order: sorter.order
|
|
317
311
|
}] : [];
|
|
318
312
|
// Collect any other columns that have a controlled sortOrder (for multi-sort)
|
|
319
|
-
var
|
|
320
|
-
var additional = leafColumns.filter(function (col) {
|
|
313
|
+
var additional = leaves.filter(function (col) {
|
|
321
314
|
return col.key != null && col.sortOrder && col.key !== sorter.columnKey;
|
|
322
315
|
}).map(function (col) {
|
|
323
316
|
return {
|
|
@@ -326,7 +319,7 @@ var useTableDataPipeline = exports.useTableDataPipeline = function useTableDataP
|
|
|
326
319
|
};
|
|
327
320
|
});
|
|
328
321
|
return [].concat(primary, (0, _toConsumableArray2["default"])(additional));
|
|
329
|
-
}, [sorter,
|
|
322
|
+
}, [sorter, leaves]);
|
|
330
323
|
var result = (0, _react.useMemo)(function () {
|
|
331
324
|
return applyTablePipeline({
|
|
332
325
|
columns: columns,
|
|
@@ -336,7 +329,7 @@ var useTableDataPipeline = exports.useTableDataPipeline = function useTableDataP
|
|
|
336
329
|
pagination: mergedPagination
|
|
337
330
|
});
|
|
338
331
|
}, [columns, dataSource, sorter, filters, mergedPagination]);
|
|
339
|
-
var emitChange = (0,
|
|
332
|
+
var emitChange = (0, _useMemoizedFn["default"])(function (nextDataSource, action, nextState) {
|
|
340
333
|
onChange === null || onChange === void 0 ? void 0 : onChange({
|
|
341
334
|
currentDataSource: nextDataSource,
|
|
342
335
|
action: action,
|
|
@@ -346,7 +339,7 @@ var useTableDataPipeline = exports.useTableDataPipeline = function useTableDataP
|
|
|
346
339
|
});
|
|
347
340
|
});
|
|
348
341
|
// useMemoizedFn: stable ref, always calls latest closure — no stale deps risk
|
|
349
|
-
var wrappedSetSorter = (0,
|
|
342
|
+
var wrappedSetSorter = (0, _useMemoizedFn["default"])(function (updater) {
|
|
350
343
|
var nextSorter = typeof updater === 'function' ? updater(sorter) : updater;
|
|
351
344
|
setSorter(nextSorter);
|
|
352
345
|
// Reset pagination to page 1 when sorting changes
|
|
@@ -372,7 +365,7 @@ var useTableDataPipeline = exports.useTableDataPipeline = function useTableDataP
|
|
|
372
365
|
});
|
|
373
366
|
}
|
|
374
367
|
});
|
|
375
|
-
var wrappedSetFilters = (0,
|
|
368
|
+
var wrappedSetFilters = (0, _useMemoizedFn["default"])(function (updater) {
|
|
376
369
|
var nextFilters = typeof updater === 'function' ? updater(filters) : updater;
|
|
377
370
|
setFilters(nextFilters);
|
|
378
371
|
// Reset pagination to page 1 when filters change
|
|
@@ -398,7 +391,7 @@ var useTableDataPipeline = exports.useTableDataPipeline = function useTableDataP
|
|
|
398
391
|
});
|
|
399
392
|
}
|
|
400
393
|
});
|
|
401
|
-
var wrappedSetPagination = (0,
|
|
394
|
+
var wrappedSetPagination = (0, _useMemoizedFn["default"])(function (updater) {
|
|
402
395
|
if (pagination === false) return;
|
|
403
396
|
var currentValue = {
|
|
404
397
|
current: current,
|
|
@@ -432,4 +425,4 @@ var useTableDataPipeline = exports.useTableDataPipeline = function useTableDataP
|
|
|
432
425
|
setPagination: wrappedSetPagination
|
|
433
426
|
});
|
|
434
427
|
};
|
|
435
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvc3JjL2NvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZURhdGFQaXBlbGluZS50cyIsImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZURhdGFQaXBlbGluZS5qcyJdLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX2hvb2tzIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJyIiwiZSIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJhIiwidSIsImNhbGwiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJpc0NvbHVtbkdyb3VwIiwiY29sIiwiY2hpbGRyZW4iLCJmbGF0dGVuQ29sdW1ucyIsImNvbHVtbnMiLCJyZXN1bHQiLCJfaXRlcmF0b3IiLCJfc3RlcCIsInB1c2giLCJhcHBseSIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJlcnIiLCJnZXRTb3J0RnVuY3Rpb24iLCJzb3J0ZXIiLCJfdHlwZW9mMiIsImNvbXBhcmUiLCJnZXRNdWx0aXBsZVByaW9yaXR5IiwiY29sdW1uIiwibXVsdGlwbGUiLCJhcHBseVNvcnRUb0RhdGEiLCJkYXRhIiwic29ydGVyU3RhdGVzIiwic29ydGVkIiwicnVubmluZ1NvcnRlcnMiLCJtYXAiLCJzdGF0ZSIsImZpbmQiLCJrZXkiLCJjb2x1bW5LZXkiLCJjb21wYXJlRm4iLCJwcmlvcml0eSIsIm9yZGVyIiwiZmlsdGVyIiwiQm9vbGVhbiIsInNvcnQiLCJiIiwiYXAiLCJicCIsInJlY29yZDEiLCJyZWNvcmQyIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsIl9zdGVwMiR2YWx1ZSIsImFwcGx5RmlsdGVyc1RvRGF0YSIsImZpbHRlcnMiLCJhY3RpdmVGaWx0ZXJzIiwic2VsZWN0ZWQiLCJTdHJpbmciLCJvbkZpbHRlciIsInJlY29yZCIsImV2ZXJ5IiwiX3JlZiIsInNvbWUiLCJhcHBseVRhYmxlUGlwZWxpbmUiLCJleHBvcnRzIiwiX3JlZjIiLCJkYXRhU291cmNlIiwiX3JlZjIkZmlsdGVycyIsInBhZ2luYXRpb24iLCJsZWFmQ29sdW1ucyIsImZpbHRlcmVkIiwiY3VycmVudERhdGFTb3VyY2UiLCJ0b3RhbCIsInN0YXJ0IiwiY3VycmVudCIsInBhZ2VTaXplIiwiZW5kIiwiY29sbGVjdFNvcnRlclN0YXRlcyIsIl9hIiwibGVhdmVzIiwic3RhdGVzIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsInNvcnRPcmRlciIsImRlZmF1bHRTb3J0T3JkZXIiLCJnZXRJbml0aWFsU29ydGVyIiwiZ2V0Q29udHJvbGxlZFNvcnRlciIsImNvbnRyb2xsZWRDb2x1bW4iLCJ1bmRlZmluZWQiLCJnZXRJbml0aWFsRmlsdGVycyIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJpbml0aWFsIiwiZGVmYXVsdEZpbHRlcmVkVmFsdWUiLCJmaWx0ZXJlZFZhbHVlIiwiZ2V0Q29udHJvbGxlZEZpbHRlcnMiLCJoYXNDb250cm9sbGVkIiwiX2l0ZXJhdG9yNSIsIl9zdGVwNSIsInVzZVN0YWJsZVJlZiIsImVxdWFsIiwicmVmIiwidXNlUmVmIiwic29ydGVyRXF1YWwiLCJmaWx0ZXJWYWx1ZUVxdWFsIiwiaSIsImZpbHRlcnNFcXVhbCIsImtleXNBIiwiT2JqZWN0Iiwia2V5cyIsImtleXNCIiwiX2kiLCJfa2V5c0EiLCJ1c2VUYWJsZURhdGFQaXBlbGluZSIsIl9yZWYzIiwib25DaGFuZ2UiLCJfYiIsIl9jIiwiX2QiLCJjb250cm9sbGVkU29ydGVyIiwiY29udHJvbGxlZEZpbHRlcnMiLCJfdXNlQ29udHJvbGxlZFN0YXRlIiwidXNlQ29udHJvbGxlZFN0YXRlIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzZXRTb3J0ZXIiLCJfdXNlQ29udHJvbGxlZFN0YXRlMyIsIl91c2VDb250cm9sbGVkU3RhdGU0Iiwic2V0RmlsdGVycyIsIl91c2VDb250cm9sbGVkU3RhdGU1IiwiZGVmYXVsdEN1cnJlbnQiLCJfdXNlQ29udHJvbGxlZFN0YXRlNiIsInNldEN1cnJlbnQiLCJfdXNlQ29udHJvbGxlZFN0YXRlNyIsImRlZmF1bHRQYWdlU2l6ZSIsIl91c2VDb250cm9sbGVkU3RhdGU4Iiwic2V0UGFnZVNpemUiLCJtZXJnZWRQYWdpbmF0aW9uIiwidXNlTWVtbyIsInByaW1hcnkiLCJhZGRpdGlvbmFsIiwiY29uY2F0IiwiZW1pdENoYW5nZSIsInVzZU1lbW9pemVkRm4iLCJuZXh0RGF0YVNvdXJjZSIsImFjdGlvbiIsIm5leHRTdGF0ZSIsIndyYXBwZWRTZXRTb3J0ZXIiLCJ1cGRhdGVyIiwibmV4dFNvcnRlciIsInJlc2V0UGFnaW5hdGlvbiIsIm5leHRSZXN1bHQiLCJ3cmFwcGVkU2V0RmlsdGVycyIsIm5leHRGaWx0ZXJzIiwid3JhcHBlZFNldFBhZ2luYXRpb24iLCJjdXJyZW50VmFsdWUiLCJuZXh0VmFsdWUiLCJhc3NpZ24iLCJzZXRQYWdpbmF0aW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQWtFLFNBQUFFLDJCQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSx5QkFBQUMsTUFBQSxJQUFBSCxDQUFBLENBQUFHLE1BQUEsQ0FBQUMsUUFBQSxLQUFBSixDQUFBLHFCQUFBRSxDQUFBLFFBQUFHLEtBQUEsQ0FBQUMsT0FBQSxDQUFBTixDQUFBLE1BQUFFLENBQUEsR0FBQUssMkJBQUEsQ0FBQVAsQ0FBQSxNQUFBQyxDQUFBLElBQUFELENBQUEsdUJBQUFBLENBQUEsQ0FBQVEsTUFBQSxJQUFBTixDQUFBLEtBQUFGLENBQUEsR0FBQUUsQ0FBQSxPQUFBTyxFQUFBLE1B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Q3dCLFNBQVMsQ0FBQ2xGLE9BQU8sQ0FBQztJQUM3QjhELFdBQVcsQ0FBQ29CLFNBQVMsQ0FBQ2pGLFFBQVEsQ0FBQztJQUUvQixJQUFJd0MsUUFBUSxFQUFFO01BQ1osSUFBTW9DLFVBQVUsR0FBR3hGLGtCQUFrQixDQUFDO1FBQ3BDakQsT0FBTyxFQUFQQSxPQUFPO1FBQ1BvRCxVQUFVLEVBQVZBLFVBQVU7UUFDVjNDLE1BQU0sRUFBTkEsTUFBTTtRQUNOK0IsT0FBTyxFQUFQQSxPQUFPO1FBQ1BjLFVBQVUsRUFBRXdGO01DeEtWLENEeUtILENBQUM7TUFDRmQsVUFBVSxDQUFDUyxVQUFVLENBQUNoRixpQkFBaUIsRUFBRSxVQUFVLEVBQUU7UUFDbkRoRCxNQUFNLEVBQU5BLE1BQU07UUFDTitCLE9BQU8sRUFBUEEsT0FBTztRQUNQYyxVQUFVLEVBQUV3RjtNQ3hLVixDRHlLSCxDQUFDO0lBQ0o7RUFDRixDQUFDLENBQ0Y7RUFFRCxPQUFBaEQsTUFBQSxDQUFBaUQsTUFBQSxDQUFBakQsTUFBQSxDQUFBaUQsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUNLOUksTUFBTSxDQUFBLEVBQUE7SUFDVFEsTUFBTSxFQUFOQSxNQUFNO0lBQ05RLFlBQVksRUFBWkEsWUFBWTtJQUNadUIsT0FBTyxFQUFQQSxPQUFPO0lBQ1BjLFVBQVUsRUFBRXFFLGdCQUFnQjtJQUM1QlosU0FBUyxFQUFFc0IsZ0JBQWdCO0lBQzNCbkIsVUFBVSxFQUFFd0IsaUJBQWlCO0lBQzdCTSxhQUFhLEVBQUVKO0VBQW9CLENBQUEsQ0FBQTtBQUV2QyxDQUFDIiwiZmlsZSI6ImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZURhdGFQaXBlbGluZS5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IHsgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udHJvbGxlZFN0YXRlLCB1c2VNZW1vaXplZEZuIH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG5mdW5jdGlvbiBpc0NvbHVtbkdyb3VwKGNvbCkge1xuICAgIHJldHVybiAnY2hpbGRyZW4nIGluIGNvbCAmJiBBcnJheS5pc0FycmF5KGNvbC5jaGlsZHJlbik7XG59XG5mdW5jdGlvbiBmbGF0dGVuQ29sdW1ucyhjb2x1bW5zKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29sdW1ucykge1xuICAgICAgICBpZiAoaXNDb2x1bW5Hcm91cChjb2wpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCguLi5mbGF0dGVuQ29sdW1ucyhjb2wuY2hpbGRyZW4pKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNvbCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGdldFNvcnRGdW5jdGlvbihzb3J0ZXIpIHtcbiAgICBpZiAodHlwZW9mIHNvcnRlciA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgcmV0dXJuIHNvcnRlcjtcbiAgICBpZiAoc29ydGVyICYmIHR5cGVvZiBzb3J0ZXIgPT09ICdvYmplY3QnICYmICdjb21wYXJlJyBpbiBzb3J0ZXIpXG4gICAgICAgIHJldHVybiBzb3J0ZXIuY29tcGFyZTtcbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBnZXRNdWx0aXBsZVByaW9yaXR5KGNvbHVtbikge1xuICAgIGlmIChjb2x1bW4uc29ydGVyICYmIHR5cGVvZiBjb2x1bW4uc29ydGVyID09PSAnb2JqZWN0JyAmJiAnbXVsdGlwbGUnIGluIGNvbHVtbi5zb3J0ZXIpIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbi5zb3J0ZXIubXVsdGlwbGU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGFwcGx5U29ydFRvRGF0YShkYXRhLCBjb2x1bW5zLCBzb3J0ZXJTdGF0ZXMpIHtcbiAgICBpZiAoc29ydGVyU3RhdGVzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgY29uc3Qgc29ydGVkID0gWy4uLmRhdGFdO1xuICAgIGNvbnN0IHJ1bm5pbmdTb3J0ZXJzID0gc29ydGVyU3RhdGVzXG4gICAgICAgIC5tYXAoKHN0YXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnMuZmluZCgoY29sKSA9PiBjb2wua2V5ID09PSBzdGF0ZS5jb2x1bW5LZXkpO1xuICAgICAgICBpZiAoIWNvbHVtbilcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBjb25zdCBjb21wYXJlRm4gPSBnZXRTb3J0RnVuY3Rpb24oY29sdW1uLnNvcnRlcik7XG4gICAgICAgIGlmICghY29tcGFyZUZuKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGNvbnN0IHByaW9yaXR5ID0gZ2V0TXVsdGlwbGVQcmlvcml0eShjb2x1bW4pO1xuICAgICAgICByZXR1cm4geyBjb21wYXJlRm4sIG9yZGVyOiBzdGF0ZS5vcmRlciwgcHJpb3JpdHkgfTtcbiAgICB9KVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgIGlmIChydW5uaW5nU29ydGVycy5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIC8vIEhpZ2hlciBwcmlvcml0eSBudW1iZXIgPSBjb21wYXJlZCBmaXJzdFxuICAgIHJ1bm5pbmdTb3J0ZXJzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXAgPSB0eXBlb2YgYS5wcmlvcml0eSA9PT0gJ251bWJlcicgPyBhLnByaW9yaXR5IDogMDtcbiAgICAgICAgY29uc3QgYnAgPSB0eXBlb2YgYi5wcmlvcml0eSA9PT0gJ251bWJlcicgPyBiLnByaW9yaXR5IDogMDtcbiAgICAgICAgcmV0dXJuIGJwIC0gYXA7XG4gICAgfSk7XG4gICAgc29ydGVkLnNvcnQoKHJlY29yZDEsIHJlY29yZDIpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCB7IGNvbXBhcmVGbiwgb3JkZXIgfSBvZiBydW5uaW5nU29ydGVycykge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gY29tcGFyZUZuKHJlY29yZDEsIHJlY29yZDIpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvcmRlciA9PT0gJ2FzY2VuZCcgPyByZXN1bHQgOiAtcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAwO1xuICAgIH0pO1xuICAgIHJldHVybiBzb3J0ZWQ7XG59XG5mdW5jdGlvbiBhcHBseUZpbHRlcnNUb0RhdGEoZGF0YSwgY29sdW1ucywgZmlsdGVycykge1xuICAgIC8vIFJlc29sdmUgd2hpY2ggY29sdW1ucyBoYXZlIGFuIGFjdGl2ZSBmaWx0ZXIgc2VsZWN0aW9uIEFORCBhIHByZWRpY2F0ZS5cbiAgICBjb25zdCBhY3RpdmVGaWx0ZXJzID0gY29sdW1uc1xuICAgICAgICAubWFwKChjb2wpID0+IHtcbiAgICAgICAgaWYgKGNvbC5rZXkgPT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBjb25zdCBzZWxlY3RlZCA9IGZpbHRlcnNbU3RyaW5nKGNvbC5rZXkpXTtcbiAgICAgICAgaWYgKCFzZWxlY3RlZCB8fCBzZWxlY3RlZC5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgaWYgKCFjb2wub25GaWx0ZXIpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIHsgb25GaWx0ZXI6IGNvbC5vbkZpbHRlciwgc2VsZWN0ZWQgfTtcbiAgICB9KVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgIGlmIChhY3RpdmVGaWx0ZXJzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgcmV0dXJuIGRhdGEuZmlsdGVyKChyZWNvcmQpID0+IFxuICAgIC8vIFJvdyBwYXNzZXMgb25seSBpZiBFVkVSWSBhY3RpdmUgY29sdW1uIGhhcyBhdCBsZWFzdCBvbmUgbWF0Y2hpbmcgc2VsZWN0ZWQgdmFsdWUuXG4gICAgYWN0aXZlRmlsdGVycy5ldmVyeSgoeyBvbkZpbHRlciwgc2VsZWN0ZWQgfSkgPT4gc2VsZWN0ZWQuc29tZSgodmFsdWUpID0+IG9uRmlsdGVyKHZhbHVlLCByZWNvcmQpKSkpO1xufVxuZXhwb3J0IGNvbnN0IGFwcGx5VGFibGVQaXBlbGluZSA9ICh7IGNvbHVtbnMsIGRhdGFTb3VyY2UsIHNvcnRlciwgZmlsdGVycyA9IHt9LCBwYWdpbmF0aW9uLCB9KSA9PiB7XG4gICAgY29uc3Qgc29ydGVyU3RhdGVzID0gc29ydGVyLmNvbHVtbktleSAhPSBudWxsICYmIHNvcnRlci5vcmRlclxuICAgICAgICA/IFt7IGNvbHVtbktleTogc29ydGVyLmNvbHVtbktleSwgb3JkZXI6IHNvcnRlci5vcmRlciB9XVxuICAgICAgICA6IFtdO1xuICAgIGNvbnN0IGxlYWZDb2x1bW5zID0gZmxhdHRlbkNvbHVtbnMoY29sdW1ucyk7XG4gICAgY29uc3QgZmlsdGVyZWQgPSBhcHBseUZpbHRlcnNUb0RhdGEoZGF0YVNvdXJjZSwgbGVhZkNvbHVtbnMsIGZpbHRlcnMpO1xuICAgIGNvbnN0IHNvcnRlZCA9IGFwcGx5U29ydFRvRGF0YShmaWx0ZXJlZCwgbGVhZkNvbHVtbnMsIHNvcnRlclN0YXRlcyk7XG4gICAgaWYgKCFwYWdpbmF0aW9uKSB7XG4gICAgICAgIHJldHVybiB7IGN1cnJlbnREYXRhU291cmNlOiBzb3J0ZWQsIHRvdGFsOiBzb3J0ZWQubGVuZ3RoIH07XG4gICAgfVxuICAgIGNvbnN0IHN0YXJ0ID0gKHBhZ2luYXRpb24uY3VycmVudCAtIDEpICogcGFnaW5hdGlvbi5wYWdlU2l6ZTtcbiAgICBjb25zdCBlbmQgPSBzdGFydCArIHBhZ2luYXRpb24ucGFnZVNpemU7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgY3VycmVudERhdGFTb3VyY2U6IHNvcnRlZC5zbGljZShzdGFydCwgZW5kKSxcbiAgICAgICAgdG90YWw6IHNvcnRlZC5sZW5ndGgsXG4gICAgfTtcbn07XG5mdW5jdGlvbiBjb2xsZWN0U29ydGVyU3RhdGVzKGNvbHVtbnMpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgbGVhdmVzID0gZmxhdHRlbkNvbHVtbnMoY29sdW1ucyk7XG4gICAgY29uc3Qgc3RhdGVzID0gW107XG4gICAgZm9yIChjb25zdCBjb2wgb2YgbGVhdmVzKSB7XG4gICAgICAgIGNvbnN0IG9yZGVyID0gKF9hID0gY29sLnNvcnRPcmRlcikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogY29sLmRlZmF1bHRTb3J0T3JkZXI7XG4gICAgICAgIGlmIChjb2wua2V5ICE9IG51bGwgJiYgb3JkZXIpIHtcbiAgICAgICAgICAgIHN0YXRlcy5wdXNoKHsgY29sdW1uS2V5OiBjb2wua2V5LCBvcmRlciB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3RhdGVzO1xufVxuY29uc3QgZ2V0SW5pdGlhbFNvcnRlciA9IChjb2x1bW5zKSA9PiB7XG4gICAgY29uc3Qgc3RhdGVzID0gY29sbGVjdFNvcnRlclN0YXRlcyhjb2x1bW5zKTtcbiAgICBpZiAoc3RhdGVzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIHJldHVybiB7IGNvbHVtbktleTogc3RhdGVzWzBdLmNvbHVtbktleSwgb3JkZXI6IHN0YXRlc1swXS5vcmRlciB9O1xufTtcbmNvbnN0IGdldENvbnRyb2xsZWRTb3J0ZXIgPSAoY29sdW1ucykgPT4ge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBsZWF2ZXMgPSBmbGF0dGVuQ29sdW1ucyhjb2x1bW5zKTtcbiAgICBjb25zdCBjb250cm9sbGVkQ29sdW1uID0gbGVhdmVzLmZpbmQoKGNvbHVtbikgPT4gY29sdW1uLnNvcnRPcmRlciAhPT0gdW5kZWZpbmVkKTtcbiAgICBpZiAoIWNvbnRyb2xsZWRDb2x1bW4pIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgY29sdW1uS2V5OiBjb250cm9sbGVkQ29sdW1uLmtleSxcbiAgICAgICAgb3JkZXI6IChfYSA9IGNvbnRyb2xsZWRDb2x1bW4uc29ydE9yZGVyKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsLFxuICAgIH07XG59O1xuY29uc3QgZ2V0SW5pdGlhbEZpbHRlcnMgPSAoY29sdW1ucykgPT4ge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBsZWF2ZXMgPSBmbGF0dGVuQ29sdW1ucyhjb2x1bW5zKTtcbiAgICBjb25zdCBzdGF0ZSA9IHt9O1xuICAgIGZvciAoY29uc3QgY29sIG9mIGxlYXZlcykge1xuICAgICAgICBpZiAoY29sLmtleSA9PSBudWxsKVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNvbnN0IGluaXRpYWwgPSAoX2EgPSBjb2wuZGVmYXVsdEZpbHRlcmVkVmFsdWUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGNvbC5maWx0ZXJlZFZhbHVlO1xuICAgICAgICBpZiAoaW5pdGlhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzdGF0ZVtTdHJpbmcoY29sLmtleSldID0gaW5pdGlhbCAhPT0gbnVsbCAmJiBpbml0aWFsICE9PSB2b2lkIDAgPyBpbml0aWFsIDogbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3RhdGU7XG59O1xuY29uc3QgZ2V0Q29udHJvbGxlZEZpbHRlcnMgPSAoY29sdW1ucykgPT4ge1xuICAgIGNvbnN0IGxlYXZlcyA9IGZsYXR0ZW5Db2x1bW5zKGNvbHVtbnMpO1xuICAgIGxldCBoYXNDb250cm9sbGVkID0gZmFsc2U7XG4gICAgY29uc3Qgc3RhdGUgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBsZWF2ZXMpIHtcbiAgICAgICAgaWYgKGNvbC5rZXkgPT0gbnVsbClcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBpZiAoY29sLmZpbHRlcmVkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGFzQ29udHJvbGxlZCA9IHRydWU7XG4gICAgICAgICAgICBzdGF0ZVtTdHJpbmcoY29sLmtleSldID0gY29sLmZpbHRlcmVkVmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGhhc0NvbnRyb2xsZWQgPyBzdGF0ZSA6IHVuZGVmaW5lZDtcbn07XG4vKipcbiAqIFJldHVybnMgYSB2YWx1ZSB3aG9zZSByZWZlcmVuY2UgaXMgcHJlc2VydmVkIGFjcm9zcyByZW5kZXJzIGFzIGxvbmcgYXMgdGhlXG4gKiBzaGFsbG93IGNvbnRlbnRzIGFyZSB1bmNoYW5nZWQgKHBlciBgZXF1YWxgKS4gVXNlZCB0byBzdGFiaWxpc2UgdGhlIGRlcml2ZWRcbiAqIGNvbnRyb2xsZWQgY2FuZGlkYXRlcyBmZWQgdG8gYHVzZUNvbnRyb2xsZWRTdGF0ZWAg4oCUIHRoZXkgd291bGQgb3RoZXJ3aXNlIGJlXG4gKiBmcmVzaCBvYmplY3RzIGV2ZXJ5IHJlbmRlciBhbmQgdGhyYXNoIHRoZSBob29rJ3MgaW50ZXJuYWwgYHVzZUxheW91dEVmZmVjdGAuXG4gKi9cbmZ1bmN0aW9uIHVzZVN0YWJsZVJlZih2YWx1ZSwgZXF1YWwpIHtcbiAgICBjb25zdCByZWYgPSB1c2VSZWYodmFsdWUpO1xuICAgIGlmICghZXF1YWwocmVmLmN1cnJlbnQsIHZhbHVlKSkge1xuICAgICAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gcmVmLmN1cnJlbnQ7XG59XG5mdW5jdGlvbiBzb3J0ZXJFcXVhbChhLCBiKSB7XG4gICAgaWYgKGEgPT09IGIpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIGlmICghYSB8fCAhYilcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBhLmNvbHVtbktleSA9PT0gYi5jb2x1bW5LZXkgJiYgYS5vcmRlciA9PT0gYi5vcmRlcjtcbn1cbmZ1bmN0aW9uIGZpbHRlclZhbHVlRXF1YWwoYSwgYikge1xuICAgIGlmIChhID09PSBiKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWEgfHwgIWIpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChhW2ldICE9PSBiW2ldKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGZpbHRlcnNFcXVhbChhLCBiKSB7XG4gICAgaWYgKGEgPT09IGIpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIGlmICghYSB8fCAhYilcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGtleXNBID0gT2JqZWN0LmtleXMoYSk7XG4gICAgY29uc3Qga2V5c0IgPSBPYmplY3Qua2V5cyhiKTtcbiAgICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlzQi5sZW5ndGgpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzQSkge1xuICAgICAgICBpZiAoIWZpbHRlclZhbHVlRXF1YWwoYVtrZXldLCBiW2tleV0pKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmV4cG9ydCBjb25zdCB1c2VUYWJsZURhdGFQaXBlbGluZSA9ICh7IGNvbHVtbnMsIGRhdGFTb3VyY2UsIHBhZ2luYXRpb24sIG9uQ2hhbmdlLCB9KSA9PiB7XG4gICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgIC8vIFNvcnRlciAvIGZpbHRlcnMgYXJlIFwiZGVyaXZlZCBjb250cm9sbGVkXCIg4oCUIHRoZSBjb250cm9sbGVkIHZhbHVlIGlzIGJ1aWx0XG4gICAgLy8gYnkgc2Nhbm5pbmcgY29sdW1uIHByb3BzIChgc29ydE9yZGVyYCAvIGBmaWx0ZXJlZFZhbHVlYCksIHNvIGBnZXRDb250cm9sbGVkKmBcbiAgICAvLyByZXR1cm5zIGEgZnJlc2ggb2JqZWN0IGV2ZXJ5IHJlbmRlciBldmVuIHdoZW4gdGhlIHVuZGVybHlpbmcgaW5wdXRzIGFyZVxuICAgIC8vIHVuY2hhbmdlZC4gV2l0aG91dCBzdGFiaWxpc2F0aW9uLCBgdXNlQ29udHJvbGxlZFN0YXRlYCdzIGludGVybmFsXG4gICAgLy8gYHVzZUxheW91dEVmZmVjdChbdmFsdWVdKWAgd291bGQgcmUtc3luYyBvbiBldmVyeSByZW5kZXIg4oaSIGluZmluaXRlIGxvb3AuXG4gICAgLy8gUGluIHRoZSByZWZlcmVuY2UgdmlhIGEgc2hhbGxvdy1lcXVhbCByZWYuXG4gICAgY29uc3QgY29udHJvbGxlZFNvcnRlciA9IHVzZVN0YWJsZVJlZihnZXRDb250cm9sbGVkU29ydGVyKGNvbHVtbnMpLCBzb3J0ZXJFcXVhbCk7XG4gICAgY29uc3QgY29udHJvbGxlZEZpbHRlcnMgPSB1c2VTdGFibGVSZWYoZ2V0Q29udHJvbGxlZEZpbHRlcnMoY29sdW1ucyksIGZpbHRlcnNFcXVhbCk7XG4gICAgY29uc3QgW3NvcnRlciwgc2V0U29ydGVyXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShnZXRJbml0aWFsU29ydGVyKGNvbHVtbnMpLCBjb250cm9sbGVkU29ydGVyKTtcbiAgICBjb25zdCBbZmlsdGVycywgc2V0RmlsdGVyc10gPSB1c2VDb250cm9sbGVkU3RhdGUoZ2V0SW5pdGlhbEZpbHRlcnMoY29sdW1ucyksIGNvbnRyb2xsZWRGaWx0ZXJzKTtcbiAgICBjb25zdCBbY3VycmVudCwgc2V0Q3VycmVudF0gPSB1c2VDb250cm9sbGVkU3RhdGUocGFnaW5hdGlvbiA9PT0gZmFsc2UgPyAxIDogKChfYiA9IChfYSA9IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5kZWZhdWx0Q3VycmVudCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogcGFnaW5hdGlvbiA9PT0gbnVsbCB8fCBwYWdpbmF0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYWdpbmF0aW9uLmN1cnJlbnQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDEpLCBwYWdpbmF0aW9uID09PSBmYWxzZSA/IHVuZGVmaW5lZCA6IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5jdXJyZW50KTtcbiAgICBjb25zdCBbcGFnZVNpemUsIHNldFBhZ2VTaXplXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShwYWdpbmF0aW9uID09PSBmYWxzZSA/IDEwIDogKChfZCA9IChfYyA9IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5kZWZhdWx0UGFnZVNpemUpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5wYWdlU2l6ZSkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogMTApLCBwYWdpbmF0aW9uID09PSBmYWxzZSA/IHVuZGVmaW5lZCA6IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5wYWdlU2l6ZSk7XG4gICAgY29uc3QgbWVyZ2VkUGFnaW5hdGlvbiA9IHBhZ2luYXRpb24gPT09IGZhbHNlXG4gICAgICAgID8gZmFsc2VcbiAgICAgICAgOiB7IGN1cnJlbnQsIHBhZ2VTaXplIH07XG4gICAgY29uc3Qgc29ydGVyU3RhdGVzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIC8vIFN0YXJ0IHdpdGggdGhlIHByaW1hcnkgdXNlci10b2dnbGVkIHNvcnRlclxuICAgICAgICBjb25zdCBwcmltYXJ5ID0gc29ydGVyLmNvbHVtbktleSAhPSBudWxsICYmIHNvcnRlci5vcmRlclxuICAgICAgICAgICAgPyBbeyBjb2x1bW5LZXk6IHNvcnRlci5jb2x1bW5LZXksIG9yZGVyOiBzb3J0ZXIub3JkZXIgfV1cbiAgICAgICAgICAgIDogW107XG4gICAgICAgIC8vIENvbGxlY3QgYW55IG90aGVyIGNvbHVtbnMgdGhhdCBoYXZlIGEgY29udHJvbGxlZCBzb3J0T3JkZXIgKGZvciBtdWx0aS1zb3J0KVxuICAgICAgICBjb25zdCBsZWFmQ29sdW1ucyA9IGZsYXR0ZW5Db2x1bW5zKGNvbHVtbnMpO1xuICAgICAgICBjb25zdCBhZGRpdGlvbmFsID0gbGVhZkNvbHVtbnNcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbCkgPT4gY29sLmtleSAhPSBudWxsICYmIGNvbC5zb3J0T3JkZXIgJiYgY29sLmtleSAhPT0gc29ydGVyLmNvbHVtbktleSlcbiAgICAgICAgICAgIC5tYXAoKGNvbCkgPT4gKHsgY29sdW1uS2V5OiBjb2wua2V5LCBvcmRlcjogY29sLnNvcnRPcmRlciB9KSk7XG4gICAgICAgIHJldHVybiBbLi4ucHJpbWFyeSwgLi4uYWRkaXRpb25hbF07XG4gICAgfSwgW3NvcnRlciwgY29sdW1uc10pO1xuICAgIGNvbnN0IHJlc3VsdCA9IHVzZU1lbW8oKCkgPT4gYXBwbHlUYWJsZVBpcGVsaW5lKHtcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgZGF0YVNvdXJjZSxcbiAgICAgICAgc29ydGVyLFxuICAgICAgICBmaWx0ZXJzLFxuICAgICAgICBwYWdpbmF0aW9uOiBtZXJnZWRQYWdpbmF0aW9uLFxuICAgIH0pLCBbY29sdW1ucywgZGF0YVNvdXJjZSwgc29ydGVyLCBmaWx0ZXJzLCBtZXJnZWRQYWdpbmF0aW9uXSk7XG4gICAgY29uc3QgZW1pdENoYW5nZSA9IHVzZU1lbW9pemVkRm4oKG5leHREYXRhU291cmNlLCBhY3Rpb24sIG5leHRTdGF0ZSkgPT4ge1xuICAgICAgICBvbkNoYW5nZSA9PT0gbnVsbCB8fCBvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DaGFuZ2Uoe1xuICAgICAgICAgICAgY3VycmVudERhdGFTb3VyY2U6IG5leHREYXRhU291cmNlLFxuICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgc29ydGVyOiBuZXh0U3RhdGUuc29ydGVyLFxuICAgICAgICAgICAgZmlsdGVyczogbmV4dFN0YXRlLmZpbHRlcnMsXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiBuZXh0U3RhdGUucGFnaW5hdGlvbixcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgLy8gdXNlTWVtb2l6ZWRGbjogc3RhYmxlIHJlZiwgYWx3YXlzIGNhbGxzIGxhdGVzdCBjbG9zdXJlIOKAlCBubyBzdGFsZSBkZXBzIHJpc2tcbiAgICBjb25zdCB3cmFwcGVkU2V0U29ydGVyID0gdXNlTWVtb2l6ZWRGbigodXBkYXRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXh0U29ydGVyID0gdHlwZW9mIHVwZGF0ZXIgPT09ICdmdW5jdGlvbicgPyB1cGRhdGVyKHNvcnRlcikgOiB1cGRhdGVyO1xuICAgICAgICBzZXRTb3J0ZXIobmV4dFNvcnRlcik7XG4gICAgICAgIC8vIFJlc2V0IHBhZ2luYXRpb24gdG8gcGFnZSAxIHdoZW4gc29ydGluZyBjaGFuZ2VzXG4gICAgICAgIGlmIChtZXJnZWRQYWdpbmF0aW9uICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgc2V0Q3VycmVudCgxKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc2V0UGFnaW5hdGlvbiA9IG1lcmdlZFBhZ2luYXRpb24gPT09IGZhbHNlXG4gICAgICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgICAgIDogeyBjdXJyZW50OiAxLCBwYWdlU2l6ZSB9O1xuICAgICAgICAgICAgY29uc3QgbmV4dFJlc3VsdCA9IGFwcGx5VGFibGVQaXBlbGluZSh7XG4gICAgICAgICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlLFxuICAgICAgICAgICAgICAgIHNvcnRlcjogbmV4dFNvcnRlcixcbiAgICAgICAgICAgICAgICBmaWx0ZXJzLFxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IHJlc2V0UGFnaW5hdGlvbixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZW1pdENoYW5nZShuZXh0UmVzdWx0LmN1cnJlbnREYXRhU291cmNlLCAnc29ydCcsIHtcbiAgICAgICAgICAgICAgICBzb3J0ZXI6IG5leHRTb3J0ZXIsXG4gICAgICAgICAgICAgICAgZmlsdGVycyxcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiByZXNldFBhZ2luYXRpb24sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHdyYXBwZWRTZXRGaWx0ZXJzID0gdXNlTWVtb2l6ZWRGbigodXBkYXRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXh0RmlsdGVycyA9IHR5cGVvZiB1cGRhdGVyID09PSAnZnVuY3Rpb24nID8gdXBkYXRlcihmaWx0ZXJzKSA6IHVwZGF0ZXI7XG4gICAgICAgIHNldEZpbHRlcnMobmV4dEZpbHRlcnMpO1xuICAgICAgICAvLyBSZXNldCBwYWdpbmF0aW9uIHRvIHBhZ2UgMSB3aGVuIGZpbHRlcnMgY2hhbmdlXG4gICAgICAgIGlmIChtZXJnZWRQYWdpbmF0aW9uICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgc2V0Q3VycmVudCgxKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc2V0UGFnaW5hdGlvbiA9IG1lcmdlZFBhZ2luYXRpb24gPT09IGZhbHNlXG4gICAgICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgICAgIDogeyBjdXJyZW50OiAxLCBwYWdlU2l6ZSB9O1xuICAgICAgICAgICAgY29uc3QgbmV4dFJlc3VsdCA9IGFwcGx5VGFibGVQaXBlbGluZSh7XG4gICAgICAgICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlLFxuICAgICAgICAgICAgICAgIHNvcnRlcixcbiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBuZXh0RmlsdGVycyxcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiByZXNldFBhZ2luYXRpb24sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGVtaXRDaGFuZ2UobmV4dFJlc3VsdC5jdXJyZW50RGF0YVNvdXJjZSwgJ2ZpbHRlcicsIHtcbiAgICAgICAgICAgICAgICBzb3J0ZXIsXG4gICAgICAgICAgICAgICAgZmlsdGVyczogbmV4dEZpbHRlcnMsXG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbjogcmVzZXRQYWdpbmF0aW9uLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCB3cmFwcGVkU2V0UGFnaW5hdGlvbiA9IHVzZU1lbW9pemVkRm4oKHVwZGF0ZXIpID0+IHtcbiAgICAgICAgaWYgKHBhZ2luYXRpb24gPT09IGZhbHNlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB7IGN1cnJlbnQsIHBhZ2VTaXplIH07XG4gICAgICAgIGNvbnN0IG5leHRWYWx1ZSA9IHR5cGVvZiB1cGRhdGVyID09PSAnZnVuY3Rpb24nID8gdXBkYXRlcihjdXJyZW50VmFsdWUpIDogdXBkYXRlcjtcbiAgICAgICAgc2V0Q3VycmVudChuZXh0VmFsdWUuY3VycmVudCk7XG4gICAgICAgIHNldFBhZ2VTaXplKG5leHRWYWx1ZS5wYWdlU2l6ZSk7XG4gICAgICAgIGlmIChvbkNoYW5nZSkge1xuICAgICAgICAgICAgY29uc3QgbmV4dFJlc3VsdCA9IGFwcGx5VGFibGVQaXBlbGluZSh7XG4gICAgICAgICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlLFxuICAgICAgICAgICAgICAgIHNvcnRlcixcbiAgICAgICAgICAgICAgICBmaWx0ZXJzLFxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IG5leHRWYWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZW1pdENoYW5nZShuZXh0UmVzdWx0LmN1cnJlbnREYXRhU291cmNlLCAncGFnaW5hdGUnLCB7XG4gICAgICAgICAgICAgICAgc29ydGVyLFxuICAgICAgICAgICAgICAgIGZpbHRlcnMsXG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbjogbmV4dFZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCByZXN1bHQpLCB7IHNvcnRlcixcbiAgICAgICAgc29ydGVyU3RhdGVzLFxuICAgICAgICBmaWx0ZXJzLCBwYWdpbmF0aW9uOiBtZXJnZWRQYWdpbmF0aW9uLCBzZXRTb3J0ZXI6IHdyYXBwZWRTZXRTb3J0ZXIsIHNldEZpbHRlcnM6IHdyYXBwZWRTZXRGaWx0ZXJzLCBzZXRQYWdpbmF0aW9uOiB3cmFwcGVkU2V0UGFnaW5hdGlvbiB9KTtcbn07Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
428
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvc3JjL2NvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZURhdGFQaXBlbGluZS50cyIsImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZURhdGFQaXBlbGluZS5qcyJdLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTkiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3VzZU1lbW9pemVkRm4iLCJfY29sdW1uVXRpbCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiciIsImUiLCJ0IiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImlzQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJsZW5ndGgiLCJfbiIsIkYiLCJzIiwibiIsImRvbmUiLCJ2YWx1ZSIsImYiLCJUeXBlRXJyb3IiLCJvIiwiYSIsInUiLCJjYWxsIiwibmV4dCIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsImZyb20iLCJ0ZXN0IiwiZ2V0U29ydEZ1bmN0aW9uIiwic29ydGVyIiwiX3R5cGVvZjIiLCJjb21wYXJlIiwiZ2V0TXVsdGlwbGVQcmlvcml0eSIsImNvbHVtbiIsIm11bHRpcGxlIiwiYXBwbHlTb3J0VG9EYXRhIiwiZGF0YSIsImNvbHVtbnMiLCJzb3J0ZXJTdGF0ZXMiLCJzb3J0ZWQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwicnVubmluZ1NvcnRlcnMiLCJtYXAiLCJzdGF0ZSIsImZpbmQiLCJjb2wiLCJrZXkiLCJjb2x1bW5LZXkiLCJjb21wYXJlRm4iLCJwcmlvcml0eSIsIm9yZGVyIiwiZmlsdGVyIiwiQm9vbGVhbiIsInNvcnQiLCJiIiwiYXAiLCJicCIsInJlY29yZDEiLCJyZWNvcmQyIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJfc3RlcCR2YWx1ZSIsInJlc3VsdCIsImVyciIsImFwcGx5RmlsdGVyc1RvRGF0YSIsImZpbHRlcnMiLCJhY3RpdmVGaWx0ZXJzIiwic2VsZWN0ZWQiLCJTdHJpbmciLCJvbkZpbHRlciIsInJlY29yZCIsImV2ZXJ5IiwiX3JlZiIsInNvbWUiLCJhcHBseVRhYmxlUGlwZWxpbmUiLCJleHBvcnRzIiwiX3JlZjIiLCJkYXRhU291cmNlIiwiX3JlZjIkZmlsdGVycyIsInBhZ2luYXRpb24iLCJsZWFmQ29sdW1ucyIsImZsYXR0ZW5Db2x1bW5zIiwiZmlsdGVyZWQiLCJjdXJyZW50RGF0YVNvdXJjZSIsInRvdGFsIiwic3RhcnQiLCJjdXJyZW50IiwicGFnZVNpemUiLCJlbmQiLCJjb2xsZWN0U29ydGVyU3RhdGVzIiwibGVhdmVzIiwiX2EiLCJzdGF0ZXMiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwic29ydE9yZGVyIiwiZGVmYXVsdFNvcnRPcmRlciIsInB1c2giLCJnZXRJbml0aWFsU29ydGVyIiwiZ2V0Q29udHJvbGxlZFNvcnRlciIsImNvbnRyb2xsZWRDb2x1bW4iLCJ1bmRlZmluZWQiLCJnZXRJbml0aWFsRmlsdGVycyIsIl9pdGVyYXRvcjMiLCJfc3RlcDMiLCJpbml0aWFsIiwiZGVmYXVsdEZpbHRlcmVkVmFsdWUiLCJmaWx0ZXJlZFZhbHVlIiwiZ2V0Q29udHJvbGxlZEZpbHRlcnMiLCJoYXNDb250cm9sbGVkIiwiX2l0ZXJhdG9yNCIsIl9zdGVwNCIsInVzZVN0YWJsZVJlZiIsImVxdWFsIiwicmVmIiwidXNlUmVmIiwic29ydGVyRXF1YWwiLCJmaWx0ZXJWYWx1ZUVxdWFsIiwiaSIsImZpbHRlcnNFcXVhbCIsImtleXNBIiwiT2JqZWN0Iiwia2V5cyIsImtleXNCIiwiX2kiLCJfa2V5c0EiLCJ1c2VUYWJsZURhdGFQaXBlbGluZSIsIl9yZWYzIiwib25DaGFuZ2UiLCJfYiIsIl9jIiwiX2QiLCJ1c2VNZW1vIiwiY29udHJvbGxlZFNvcnRlciIsImNvbnRyb2xsZWRGaWx0ZXJzIiwiaW5pdGlhbFNvcnRlciIsImluaXRpYWxGaWx0ZXJzIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZSIsInVzZUNvbnRyb2xsZWRTdGF0ZSIsIl91c2VDb250cm9sbGVkU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwic2V0U29ydGVyIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTMiLCJfdXNlQ29udHJvbGxlZFN0YXRlNCIsInNldEZpbHRlcnMiLCJfdXNlQ29udHJvbGxlZFN0YXRlNSIsImRlZmF1bHRDdXJyZW50IiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTYiLCJzZXRDdXJyZW50IiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTciLCJkZWZhdWx0UGFnZVNpemUiLCJfdXNlQ29udHJvbGxlZFN0YXRlOCIsInNldFBhZ2VTaXplIiwicGFnaW5hdGlvbkVuYWJsZWQiLCJtZXJnZWRQYWdpbmF0aW9uIiwicHJpbWFyeSIsImFkZGl0aW9uYWwiLCJjb25jYXQiLCJlbWl0Q2hhbmdlIiwidXNlTWVtb2l6ZWRGbiIsIm5leHREYXRhU291cmNlIiwiYWN0aW9uIiwibmV4dFN0YXRlIiwid3JhcHBlZFNldFNvcnRlciIsInVwZGF0ZXIiLCJuZXh0U29ydGVyIiwicmVzZXRQYWdpbmF0aW9uIiwibmV4dFJlc3VsdCIsIndyYXBwZWRTZXRGaWx0ZXJzIiwibmV4dEZpbHRlcnMiLCJ3cmFwcGVkU2V0UGFnaW5hdGlvbiIsImN1cnJlbnRWYWx1ZSIsIm5leHRWYWx1ZSIsImFzc2lnbiIsInNldFBhZ2luYXRpb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxvQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsY0FBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBQThDLFNBQUFLLDJCQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSx5QkFBQUMsTUFBQSxJQUFBSCxDQUFBLENBQUFHLE1BQUEsQ0FBQUMsUUFBQSxLQUFBSixDQUFBLHFCQUFBRSxDQUFBLFFBQUFHLEtBQUEsQ0FBQUMsT0FBQSxDQUFBTixDQUFBLE1BQUFFLENBQUEsR0FBQUssMkJBQUEsQ0FBQVAsQ0FBQSxNQUFBQyxDQUFBLElBQUFELENBQUEsdUJBQUFBLENBQUEsQ0FBQVEsTUFBQSxJQUFBTixDQUFBLEtBQUFGLENBQUEsR0FBQUUsQ0FBQSxPQUFBTyxFQUFBLE1BQUFDLENBQUEsWUFBQUEsRUFBQSxlQUFBQyxDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBQSxFQUFBLFdBQUFILEVBQUEsSUFBQVQsQ0FBQSxDQUFBUSxNQUFBLEtBQUFLLElBQUEsV0FBQUEsSUFBQSxNQUFBQyxLQUFBLEVBQUFkLENBQUEsQ0FBQVMsRUFBQSxVQUFBUixDQUFBLFdBQUFBLEVBQUFELENBQUEsVUFBQUEsQ0FBQSxLQUFBZSxDQUFBLEVBQUFMLENBQUEsZ0JBQUFNLFNBQUEsaUpBQUFDLENBQUEsRUFBQUMsQ0FBQSxPQUFBQyxDQUFBLGdCQUFBUixDQUFBLFdBQUFBLEVBQUEsSUFBQVQsQ0FBQSxHQUFBQSxDQUFBLENBQUFrQixJQUFBLENBQUFwQixDQUFBLE1BQUFZLENBQUEsV0FBQUEsRUFBQSxRQUFBWixDQUFBLEdBQUFFLENBQUEsQ0FBQW1CLElBQUEsV0FBQUgsQ0FBQSxHQUFBbEIsQ0FBQSxDQUFBYSxJQUFBLEVBQUFiLENBQUEsS0FBQUMsQ0FBQSxXQUFBQSxFQUFBRCxDQUFBLElBQUFtQixDQUFBLE9BQUFGLENBQUEsR0FBQWpCLENBQUEsS0FBQWUsQ0FBQSxXQUFBQSxFQUFBLFVBQUFHLENBQUEsWUFBQWhCLENBQUEsY0FBQUEsQ0FBQSw4QkFBQWlCLENBQUEsUUFBQUYsQ0FBQTtBQUFBLFNBQUFWLDRCQUFBUCxDQUFBLEVBQUFrQixDQUFBLFFBQUFsQixDQUFBLDJCQUFBQSxDQUFBLFNBQUFzQixpQkFBQSxDQUFBdEIsQ0FBQSxFQUFBa0IsQ0FBQSxPQUFBaEIsQ0FBQSxNQUFBcUIsUUFBQSxDQUFBSCxJQUFBLENBQUFwQixDQUFBLEVBQUF3QixLQUFBLDZCQUFBdEIsQ0FBQSxJQUFBRixDQUFBLENBQUF5QixXQUFBLEtBQUF2QixDQUFBLEdBQUFGLENBQUEsQ0FBQXlCLFdBQUEsQ0FBQUMsSUFBQSxhQUFBeEIsQ0FBQSxjQUFBQSxDQUFBLEdBQUFHLEtBQUEsQ0FBQXNCLElBQUEsQ0FBQTNCLENBQUEsb0JBQUFFLENBQUEsK0NBQUEwQixJQUFBLENBQUExQixDQUFBLElBQUFvQixpQkFBQSxDQUFBdEIsQ0FBQSxFQUFBa0IsQ0FBQTtBQUFBLFNBQUFJLGtCQUFBdEIsQ0FBQSxFQUFBa0IsQ0FBQSxhQUFBQSxDQUFBLElBQUFBLENBQUEsR0FBQWxCLENBQUEsQ0FBQVEsTUFBQSxNQUFBVSxDQUFBLEdBQUFsQixDQUFBLENBQUFRLE1BQUEsWUFBQVAsQ0FBQSxNQUFBVyxDQUFBLEdBQUFQLEtBQUEsQ0FBQWEsQ0FBQSxHQUFBakIsQ0FBQSxHQUFBaUIsQ0FBQSxFQUFBakIsQ0FBQSxJQUFBVyxDQUFBLENBQUFYLENBQUEsSUFBQUQsQ0FBQSxDQUFBQyxDQUFBLFVBQUFXLENBQUE7QUFvRTlDLFNBQVNpQixlQUFlQSxDQUN0QkMsTUFBZ0MsRUFBQTtFQUVoQyxJQUFJLE9BQU9BLE1BQU0sS0FBSyxVQUFVLEVBQUUsT0FBT0EsTUFBTTtFQUMvQyxJQUFJQSxNQUFNLElBQUksSUFBQUMsUUFBQSxhQUFPRCxNQUFNLE1BQUssUUFBUSxJQUFJLFNBQVMsSUFBSUEsTUFBTSxFQUFFLE9BQU9BLE1BQU0sQ0FBQ0UsT0FBTztFQUN0RixPQUFPLEtBQUs7QUFDZDtBQUVBLFNBQVNDLG1CQUFtQkEsQ0FBd0JDLE1BQXNCLEVBQUE7RUFDeEUsSUFBSUEsTUFBTSxDQUFDSixNQUFNLElBQUksSUFBQUMsUUFBQSxhQUFPRyxNQUFNLENBQUNKLE1BQU0sTUFBSyxRQUFRLElBQUksVUFBVSxJQUFJSSxNQUFNLENBQUNKLE1BQU0sRUFBRTtJQUNyRixPQUFRSSxNQUFNLENBQUNKLE1BQXFDLENBQUNLLFFBQVE7RUFDL0Q7RUFDQSxPQUFPLEtBQUs7QUFDZDtBQUVBLFNBQVNDLGVBQWVBLENBQ3RCQyxJQUFTLEVBQ1RDLE9BQXlCLEVBQ3pCQyxZQUFxQyxFQUFBO0VBRXJDLElBQUlBLFlBQVksQ0FBQy9CLE1BQU0sS0FBSyxDQUFDLEVBQUUsT0FBTzZCLElBQUk7RUFFMUMsSUFBTUcsTUFBTSxPQUFBQyxtQkFBQSxhQUFPSixJQUFJLENBQUM7RUFFeEIsSUFBTUssY0FBYyxHQUFHSCxZQUFZLENBQ2hDSSxHQUFHLENBQUMsVUFBQ0MsS0FBSyxFQUFJO0lBQ2IsSUFBTVYsTUFBTSxHQUFHSSxPQUFPLENBQUNPLElBQUksQ0FBQyxVQUFDQyxHQUFHO01BQUEsT0FBS0EsR0FBRyxDQUFDQyxHQUFHLEtBQUtILEtBQUssQ0FBQ0ksU0FBUztJQUFBLEVBQUM7SUFDakUsSUFBSSxDQUFDZCxNQUFNLEVBQUUsT0FBTyxJQUFJO0lBQ3hCLElBQU1lLFNBQVMsR0FBR3BCLGVBQWUsQ0FBQ0ssTUFBTSxDQUFDSixNQUFNLENBQUM7SUFDaEQsSUFBSSxDQUFDbUIsU0FBUyxFQUFFLE9BQU8sSUFBSTtJQUMzQixJQUFNQyxRQUFRLEdBQUdqQixtQkFBbUIsQ0FBQ0MsTUFBTSxDQUFDO0lBQzVDLE9BQU87TUFBRWUsU0FBUyxFQUFUQSxTQUFTO01BQUVFLEtBQUssRUFBRVAsS0FBSyxDQUFDTyxLQUFLO01BQUVELFFBQVEsRUFBUkE7SUFBUSxDQUFFO0VBQ3BELENBQUMsQ0FBQyxDQUNERSxNQUFNLENBQUNDLE9BQU8sQ0FBbUc7RUFFcEgsSUFBSVgsY0FBYyxDQUFDbEMsTUFBTSxLQUFLLENBQUMsRUFBRSxPQUFPNkIsSUFBSTtFQUU1QztFQUNBSyxjQUFjLENBQUNZLElBQUksQ0FBQyxVQUFDcEMsQ0FBQyxFQUFFcUMsQ0FBQyxFQUFJO0lBQzNCLElBQU1DLEVBQUUsR0FBRyxPQUFPdEMsQ0FBQyxDQUFDZ0MsUUFBUSxLQUFLLFFBQVEsR0FBR2hDLENBQUMsQ0FBQ2dDLFFBQVEsR0FBRyxDQUFDO0lBQzFELElBQU1PLEVBQUUsR0FBRyxPQUFPRixDQUFDLENBQUNMLFFBQVEsS0FBSyxRQUFRLEdBQUdLLENBQUMsQ0FBQ0wsUUFBUSxHQUFHLENBQUM7SUFDMUQsT0FBT08sRUFBRSxHQUFHRCxFQUFFO0VBQ2hCLENBQUMsQ0FBQztFQUVGaEIsTUFBTSxDQUFDYyxJQUFJLENBQUMsVUFBQ0ksT0FBTyxFQUFFQyxPQUFPLEVBQUk7SUFBQSxJQUFBQyxTQUFBLEdBQUE3RCwwQkFBQSxDQUNJMkMsY0FBYztNQUFBbUIsS0FBQTtJQUFBO01BQWpELEtBQUFELFNBQUEsQ0FBQWpELENBQUEsTUFBQWtELEtBQUEsR0FBQUQsU0FBQSxDQUFBaEQsQ0FBQSxJQUFBQyxJQUFBLEdBQW1EO1FBQUEsSUFBQWlELFdBQUEsR0FBQUQsS0FBQSxDQUFBL0MsS0FBQTtVQUF0Q21DLFNBQVMsR0FBQWEsV0FBQSxDQUFUYixTQUFTO1VBQUVFLEtBQUssR0FBQVcsV0FBQSxDQUFMWCxLQUFLO1FBQzNCLElBQU1ZLE1BQU0sR0FBR2QsU0FBUyxDQUFDUyxPQUFPLEVBQUVDLE9BQU8sQ0FBQztRQUMxQyxJQUFJSSxNQUFNLEtBQUssQ0FBQyxFQUFFO1VBQ2hCLE9BQU9aLEtBQUssS0FBSyxRQUFRLEdBQUdZLE1BQU0sR0FBRyxDQUFDQSxNQUFNO1FBQzlDO01BQ0Y7SUFBQyxTQUFBQyxHQUFBO01BQUFKLFNBQUEsQ0FBQTNELENBQUEsQ0FBQStELEdBQUE7SUFBQTtNQUFBSixTQUFBLENBQUE3QyxDQUFBO0lBQUE7SUFDRCxPQUFPLENBQUM7RUFDVixDQUFDLENBQUM7RUFFRixPQUFPeUIsTUFBTTtBQUNmO0FBRUEsU0FBU3lCLGtCQUFrQkEsQ0FDekI1QixJQUFTLEVBQ1RDLE9BQXlCLEVBQ3pCNEIsT0FBeUIsRUFBQTtFQUV6QjtFQUNBLElBQU1DLGFBQWEsR0FBRzdCLE9BQU8sQ0FDMUJLLEdBQUcsQ0FBQyxVQUFDRyxHQUFHLEVBQUk7SUFDWCxJQUFJQSxHQUFHLENBQUNDLEdBQUcsSUFBSSxJQUFJLEVBQUUsT0FBTyxJQUFJO0lBQ2hDLElBQU1xQixRQUFRLEdBQUdGLE9BQU8sQ0FBQ0csTUFBTSxDQUFDdkIsR0FBRyxDQUFDQyxHQUFHLENBQUMsQ0FBQztJQUN6QyxJQUFJLENBQUNxQixRQUFRLElBQUlBLFFBQVEsQ0FBQzVELE1BQU0sS0FBSyxDQUFDLEVBQUUsT0FBTyxJQUFJO0lBQ25ELElBQUksQ0FBQ3NDLEdBQUcsQ0FBQ3dCLFFBQVEsRUFBRSxPQUFPLElBQUk7SUFDOUIsT0FBTztNQUFFQSxRQUFRLEVBQUV4QixHQUFHLENBQUN3QixRQUFRO01BQUVGLFFBQVEsRUFBUkE7SUFBUSxDQUFFO0VBQzdDLENBQUMsQ0FBQyxDQUNEaEIsTUFBTSxDQUFDQyxPQUFPLENBQXdGO0VBRXpHLElBQUljLGFBQWEsQ0FBQzNELE1BQU0sS0FBSyxDQUFDLEVBQUUsT0FBTzZCLElBQUk7RUFFM0MsT0FBT0EsSUFBSSxDQUFDZSxNQUFNLENBQUMsVUFBQ21CLE1BQU07SUFBQTtNQUN4QjtNQUNBSixhQUFhLENBQUNLLEtBQUssQ0FBQyxVQUFBQyxJQUFBO1FBQUEsSUFBR0gsUUFBUSxHQUFBRyxJQUFBLENBQVJILFFBQVE7VUFBRUYsUUFBUSxHQUFBSyxJQUFBLENBQVJMLFFBQVE7UUFBQSxPQUN2Q0EsUUFBUSxDQUFDTSxJQUFJLENBQUMsVUFBQzVELEtBQUs7VUFBQSxPQUFLd0QsUUFBUSxDQUFDeEQsS0FBSyxFQUFFeUQsTUFBTSxDQUFDO1FBQUEsRUFBQztNQUFBO0lBQ2xEO0VBQUEsRUFDRjtBQUNIO0FBRU8sSUFBTUksa0JBQWtCLEdBQUFDLE9BQUEsQ0FBQUQsa0JBQUEsR0FBRyxTQUFyQkEsa0JBQWtCQSxDQUFBRSxLQUFBLEVBTUU7RUFBQSxJQUwvQnZDLE9BQU8sR0FBQXVDLEtBQUEsQ0FBUHZDLE9BQU87SUFDUHdDLFVBQVUsR0FBQUQsS0FBQSxDQUFWQyxVQUFVO0lBQ1ZoRCxNQUFNLEdBQUErQyxLQUFBLENBQU4vQyxNQUFNO0lBQUFpRCxhQUFBLEdBQUFGLEtBQUEsQ0FDTlgsT0FBTztJQUFQQSxPQUFPLEdBQUFhLGFBQUEsY0FBRyxDQUFBLENBQUUsR0FBQUEsYUFBQTtJQUNaQyxVQUFVLEdBQUFILEtBQUEsQ0FBVkcsVUFBVTtFQUVWLElBQU16QyxZQUFZLEdBQ2hCVCxNQUFNLENBQUNrQixTQUFTLElBQUksSUFBSSxJQUFJbEIsTUFBTSxDQUFDcUIsS0FBSyxHQUNwQyxDQUFDO0lBQUVILFNBQVMsRUFBRWxCLE1BQU0sQ0FBQ2tCLFNBQVM7SUFBRUcsS0FBSyxFQUFFckIsTUFBTSxDQUFDcUI7RUFBSyxDQUFFLENBQUMsR0FDdEQsRUFBRTtFQUVSLElBQU04QixXQUFXLEdBQUcsSUFBQUMsMEJBQWMsRUFBQzVDLE9BQU8sQ0FBQztFQUMzQyxJQUFNNkMsUUFBUSxHQUFHbEIsa0JBQWtCLENBQUNhLFVBQVUsRUFBRUcsV0FBVyxFQUFFZixPQUFPLENBQUM7RUFDckUsSUFBTTFCLE1BQU0sR0FBR0osZUFBZSxDQUFDK0MsUUFBUSxFQUFFRixXQUFXLEVBQUUxQyxZQUFZLENBQUM7RUFFbkUsSUFBSSxDQUFDeUMsVUFBVSxFQUFFO0lBQ2YsT0FBTztNQUFFSSxpQkFBaUIsRUFBRTVDLE1BQU07TUFBRTZDLEtBQUssRUFBRTdDLE1BQU0sQ0FBQ2hDO0lBQU0sQ0FBRTtFQUM1RDtFQUVBLElBQU04RSxLQUFLLEdBQUcsQ0FBQ04sVUFBVSxDQUFDTyxPQUFPLEdBQUcsQ0FBQyxJQUFJUCxVQUFVLENBQUNRLFFBQVE7RUFDNUQsSUFBTUMsR0FBRyxHQUFHSCxLQUFLLEdBQUdOLFVBQVUsQ0FBQ1EsUUFBUTtFQUV2QyxPQUFPO0lBQ0xKLGlCQUFpQixFQUFFNUMsTUFBTSxDQUFDaEIsS0FBSyxDQUFDOEQsS0FBSyxFQUFFRyxHQUFHLENBQUM7SUFDM0NKLEtBQUssRUFBRTdDLE1BQU0sQ0FBQ2hDO0VDN0ZkLENEOEZEO0FBQ0gsQ0FBQztBQUVELFNBQVNrRixtQkFBbUJBLENBQzFCQyxNQUF3QixFQUFBO0VDL0Z0QixJQUFJQyxFQUFFO0VEaUdSLElBQU1DLE1BQU0sR0FBNEIsRUFBRTtFQUFDLElBQUFDLFVBQUEsR0FBQS9GLDBCQUFBLENBQ3pCNEYsTUFBTTtJQUFBSSxNQUFBO0VBQUE7SUFBeEIsS0FBQUQsVUFBQSxDQUFBbkYsQ0FBQSxNQUFBb0YsTUFBQSxHQUFBRCxVQUFBLENBQUFsRixDQUFBLElBQUFDLElBQUEsR0FBMEI7TUFBQSxJQUFmaUMsR0FBRyxHQUFBaUQsTUFBQSxDQUFBakYsS0FBQTtNQUNaLElBQU1xQyxLQUFLLEdBQUcsQ0FBQXlDLEVBQUEsR0FBQTlDLEdBQUcsQ0FBQ2tELFNBQVMsTUFBQSxJQUFBLElBQUFKLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxHQUFJOUMsR0FBRyxDQUFDbUQsZ0JBQWdCO01BQ25ELElBQUluRCxHQUFHLENBQUNDLEdBQUcsSUFBSSxJQUFJLElBQUlJLEtBQUssRUFBRTtRQUM1QjBDLE1BQU0sQ0FBQ0ssSUFBSSxDQUFDO1VBQUVsRCxTQUFTLEVBQUVGLEdBQUcsQ0FBQ0MsR0FBRztVQUFFSSxLQUFLLEVBQUxBO1FBQUssQ0FBRSxDQUFDO01BQzVDO0lBQ0Y7RUFBQyxTQUFBYSxHQUFBO0lBQUE4QixVQUFBLENBQUE3RixDQUFBLENBQUErRCxHQUFBO0VBQUE7SUFBQThCLFVBQUEsQ0FBQS9FLENBQUE7RUFBQTtFQUNELE9BQU84RSxNQUFNO0FBQ2Y7QUFFQSxJQUFNTSxnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQWdCQSxDQUNwQlIsTUFBd0IsRUFDSjtFQUNwQixJQUFNRSxNQUFNLEdBQUdILG1CQUFtQixDQUFDQyxNQUFNLENBQUM7RUFDMUMsSUFBSUUsTUFBTSxDQUFDckYsTUFBTSxLQUFLLENBQUMsRUFBRSxPQUFPLENBQUEsQ0FBRTtFQUNsQyxPQUFPO0lBQUV3QyxTQUFTLEVBQUU2QyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM3QyxTQUFTO0lBQUVHLEtBQUssRUFBRTBDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzFDO0VBQUssQ0FBRTtBQUNuRSxDQUFDO0FBRUQsSUFBTWlELG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBbUJBLENBQ3ZCVCxNQUF3QixFQUNRO0VDcEc5QixJQUFJQyxFQUFFO0VEcUdSLElBQU1TLGdCQUFnQixHQUFHVixNQUFNLENBQUM5QyxJQUFJLENBQUMsVUFBQ1gsTUFBTTtJQUFBLE9BQUtBLE1BQU0sQ0FBQzhELFNBQVMsS0FBS00sU0FBUztFQUFBLEVBQUM7RUFFaEYsSUFBSSxDQUFDRCxnQkFBZ0IsRUFBRTtJQUNyQixPQUFPQyxTQUFTO0VBQ2xCO0VBRUEsT0FBTztJQUNMdEQsU0FBUyxFQUFFcUQsZ0JBQWdCLENBQUN0RCxHQUFHO0lBQy9CSSxLQUFLLEVBQUUsQ0FBQXlDLEVBQUEsR0FBQVMsZ0JBQWdCLENBQUNMLFNBQVMsTUFBQSxJQUFBLElBQUFKLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxHQUFJO0VDckdyQyxDRHNHRDtBQUNILENBQUM7QUFFRCxJQUFNVyxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQWlCQSxDQUNyQlosTUFBd0IsRUFDSjtFQ3hHbEIsSUFBSUMsRUFBRTtFRHlHUixJQUFNaEQsS0FBSyxHQUFxQixDQUFBLENBQUU7RUFBQyxJQUFBNEQsVUFBQSxHQUFBekcsMEJBQUEsQ0FDakI0RixNQUFNO0lBQUFjLE1BQUE7RUFBQTtJQUF4QixLQUFBRCxVQUFBLENBQUE3RixDQUFBLE1BQUE4RixNQUFBLEdBQUFELFVBQUEsQ0FBQTVGLENBQUEsSUFBQUMsSUFBQSxHQUEwQjtNQUFBLElBQWZpQyxHQUFHLEdBQUEyRCxNQUFBLENBQUEzRixLQUFBO01BQ1osSUFBSWdDLEdBQUcsQ0FBQ0MsR0FBRyxJQUFJLElBQUksRUFBRTtNQUNyQixJQUFNMkQsT0FBTyxHQUFHLENBQUFkLEVBQUEsR0FBQTlDLEdBQUcsQ0FBQzZELG9CQUFvQixNQUFBLElBQUEsSUFBQWYsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUk5QyxHQUFHLENBQUM4RCxhQUFhO01BQzdELElBQUlGLE9BQU8sS0FBS0osU0FBUyxFQUFFO1FBQ3pCMUQsS0FBSyxDQUFDeUIsTUFBTSxDQUFDdkIsR0FBRyxDQUFDQyxHQUFHLENBQUMsQ0FBQyxHQUFHMkQsT0FBTyxLQUFBLElBQUEsSUFBUEEsT0FBTyxLQUFBLEtBQUEsQ0FBQSxHQUFQQSxPQUFPLEdBQUksSUFBSTtNQUMxQztJQUNGO0VBQUMsU0FBQTFDLEdBQUE7SUFBQXdDLFVBQUEsQ0FBQXZHLENBQUEsQ0FBQStELEdBQUE7RUFBQTtJQUFBd0MsVUFBQSxDQUFBekYsQ0FBQTtFQUFBO0VBQ0QsT0FBTzZCLEtBQUs7QUFDZCxDQUFDO0FBRUQsSUFBTWlFLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBb0JBLENBQ3hCbEIsTUFBd0IsRUFDUTtFQUNoQyxJQUFJbUIsYUFBYSxHQUFHLEtBQUs7RUFDekIsSUFBTWxFLEtBQUssR0FBcUIsQ0FBQSxDQUFFO0VBQUMsSUFBQW1FLFVBQUEsR0FBQWhILDBCQUFBLENBQ2pCNEYsTUFBTTtJQUFBcUIsTUFBQTtFQUFBO0lBQXhCLEtBQUFELFVBQUEsQ0FBQXBHLENBQUEsTUFBQXFHLE1BQUEsR0FBQUQsVUFBQSxDQUFBbkcsQ0FBQSxJQUFBQyxJQUFBLEdBQTBCO01BQUEsSUFBZmlDLEdBQUcsR0FBQWtFLE1BQUEsQ0FBQWxHLEtBQUE7TUFDWixJQUFJZ0MsR0FBRyxDQUFDQyxHQUFHLElBQUksSUFBSSxFQUFFO01BQ3JCLElBQUlELEdBQUcsQ0FBQzhELGFBQWEsS0FBS04sU0FBUyxFQUFFO1FBQ25DUSxhQUFhLEdBQUcsSUFBSTtRQUNwQmxFLEtBQUssQ0FBQ3lCLE1BQU0sQ0FBQ3ZCLEdBQUcsQ0FBQ0MsR0FBRyxDQUFDLENBQUMsR0FBR0QsR0FBRyxDQUFDOEQsYUFBYTtNQUM1QztJQUNGO0VBQUMsU0FBQTVDLEdBQUE7SUFBQStDLFVBQUEsQ0FBQTlHLENBQUEsQ0FBQStELEdBQUE7RUFBQTtJQUFBK0MsVUFBQSxDQUFBaEcsQ0FBQTtFQUFBO0VBQ0QsT0FBTytGLGFBQWEsR0FBR2xFLEtBQUssR0FBRzBELFNBQVM7QUFDMUMsQ0FBQztBQUVEO0FDekdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUQyR0EsU0FBU1csWUFBWUEsQ0FBSW5HLEtBQVEsRUFBRW9HLEtBQThCLEVBQUE7RUFDL0QsSUFBTUMsR0FBRyxHQUFHLElBQUFDLGFBQU0sRUFBQ3RHLEtBQUssQ0FBQztFQUN6QixJQUFJLENBQUNvRyxLQUFLLENBQUNDLEdBQUcsQ0FBQzVCLE9BQU8sRUFBRXpFLEtBQUssQ0FBQyxFQUFFO0lBQzlCcUcsR0FBRyxDQUFDNUIsT0FBTyxHQUFHekUsS0FBSztFQUNyQjtFQUNBLE9BQU9xRyxHQUFHLENBQUM1QixPQUFPO0FBQ3BCO0FBRUEsU0FBUzhCLFdBQVdBLENBQ2xCbkcsQ0FBK0IsRUFDL0JxQyxDQUErQixFQUFBO0VBRS9CLElBQUlyQyxDQUFDLEtBQUtxQyxDQUFDLEVBQUUsT0FBTyxJQUFJO0VBQ3hCLElBQUksQ0FBQ3JDLENBQUMsSUFBSSxDQUFDcUMsQ0FBQyxFQUFFLE9BQU8sS0FBSztFQUMxQixPQUFPckMsQ0FBQyxDQUFDOEIsU0FBUyxLQUFLTyxDQUFDLENBQUNQLFNBQVMsSUFBSTlCLENBQUMsQ0FBQ2lDLEtBQUssS0FBS0ksQ0FBQyxDQUFDSixLQUFLO0FBQzNEO0FBRUEsU0FBU21FLGdCQUFnQkEsQ0FDdkJwRyxDQUFzQyxFQUN0Q3FDLENBQXNDLEVBQUE7RUFFdEMsSUFBSXJDLENBQUMsS0FBS3FDLENBQUMsRUFBRSxPQUFPLElBQUk7RUFDeEIsSUFBSSxDQUFDckMsQ0FBQyxJQUFJLENBQUNxQyxDQUFDLEVBQUUsT0FBTyxLQUFLO0VBQzFCLElBQUlyQyxDQUFDLENBQUNWLE1BQU0sS0FBSytDLENBQUMsQ0FBQy9DLE1BQU0sRUFBRSxPQUFPLEtBQUs7RUFDdkMsS0FBSyxJQUFJK0csQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHckcsQ0FBQyxDQUFDVixNQUFNLEVBQUUrRyxDQUFDLEVBQUUsRUFBRTtJQUNqQyxJQUFJckcsQ0FBQyxDQUFDcUcsQ0FBQyxDQUFDLEtBQUtoRSxDQUFDLENBQUNnRSxDQUFDLENBQUMsRUFBRSxPQUFPLEtBQUs7RUFDakM7RUFDQSxPQUFPLElBQUk7QUFDYjtBQUVBLFNBQVNDLFlBQVlBLENBQ25CdEcsQ0FBK0IsRUFDL0JxQyxDQUErQixFQUFBO0VBRS9CLElBQUlyQyxDQUFDLEtBQUtxQyxDQUFDLEVBQUUsT0FBTyxJQUFJO0VBQ3hCLElBQUksQ0FBQ3JDLENBQUMsSUFBSSxDQUFDcUMsQ0FBQyxFQUFFLE9BQU8sS0FBSztFQUMxQixJQUFNa0UsS0FBSyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQ3pHLENBQUMsQ0FBQztFQUM1QixJQUFNMEcsS0FBSyxHQUFHRixNQUFNLENBQUNDLElBQUksQ0FBQ3BFLENBQUMsQ0FBQztFQUM1QixJQUFJa0UsS0FBSyxDQUFDakgsTUFBTSxLQUFLb0gsS0FBSyxDQUFDcEgsTUFBTSxFQUFFLE9BQU8sS0FBSztFQUMvQyxTQUFBcUgsRUFBQSxNQUFBQyxNQUFBLEdBQWtCTCxLQUFLLEVBQUFJLEVBQUEsR0FBQUMsTUFBQSxDQUFBdEgsTUFBQSxFQUFBcUgsRUFBQSxJQUFFO0lBQXBCLElBQU05RSxHQUFHLEdBQUErRSxNQUFBLENBQUFELEVBQUE7SUFDWixJQUFJLENBQUNQLGdCQUFnQixDQUFDcEcsQ0FBQyxDQUFDNkIsR0FBRyxDQUFDLEVBQUVRLENBQUMsQ0FBQ1IsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLEtBQUs7RUFDckQ7RUFDQSxPQUFPLElBQUk7QUFDYjtBQUVPLElBQU1nRixvQkFBb0IsR0FBQW5ELE9BQUEsQ0FBQW1ELG9CQUFBLEdBQUcsU0FBdkJBLG9CQUFvQkEsQ0FBQUMsS0FBQSxFQUtpQztFQUFBLElBSmhFMUYsT0FBTyxHQUFBMEYsS0FBQSxDQUFQMUYsT0FBTztJQUNQd0MsVUFBVSxHQUFBa0QsS0FBQSxDQUFWbEQsVUFBVTtJQUNWRSxVQUFVLEdBQUFnRCxLQUFBLENBQVZoRCxVQUFVO0lBQ1ZpRCxRQUFRLEdBQUFELEtBQUEsQ0FBUkMsUUFBUTtFQ2hITixJQUFJckMsRUFBRSxFQUFFc0MsRUFBRSxFQUFFQyxFQUFFLEVBQUVDLEVBQUU7RURrSHBCO0VBQ0E7RUFDQSxJQUFNekMsTUFBTSxHQUFHLElBQUEwQyxjQUFPLEVBQUM7SUFBQSxPQUFNLElBQUFuRCwwQkFBYyxFQUFDNUMsT0FBTyxDQUFDO0VBQUEsR0FBRSxDQUFDQSxPQUFPLENBQUMsQ0FBQztFQUVoRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxJQUFNZ0csZ0JBQWdCLEdBQUdyQixZQUFZLENBQUNiLG1CQUFtQixDQUFDVCxNQUFNLENBQUMsRUFBRTBCLFdBQVcsQ0FBQztFQUMvRSxJQUFNa0IsaUJBQWlCLEdBQUd0QixZQUFZLENBQUNKLG9CQUFvQixDQUFDbEIsTUFBTSxDQUFDLEVBQUU2QixZQUFZLENBQUM7RUFFbEY7RUFDQTtFQUNBLElBQU1nQixhQUFhLEdBQUcsSUFBQUgsY0FBTyxFQUFDO0lBQUEsT0FBTWxDLGdCQUFnQixDQUFDUixNQUFNLENBQUM7RUFBQSxHQUFFLENBQUNBLE1BQU0sQ0FBQyxDQUFDO0VBQ3ZFLElBQU04QyxjQUFjLEdBQUcsSUFBQUosY0FBTyxFQUFDO0lBQUEsT0FBTTlCLGlCQUFpQixDQUFDWixNQUFNLENBQUM7RUFBQSxHQUFFLENBQUNBLE1BQU0sQ0FBQyxDQUFDO0VBRXpFLElBQUErQyxtQkFBQSxHQUE0QixJQUFBQywrQkFBa0IsRUFDNUNILGFBQWEsRUFDYkYsZ0JBQWdCLENBQ2pCO0lBQUFNLG9CQUFBLE9BQUFDLGVBQUEsYUFBQUgsbUJBQUE7SUFITTVHLE1BQU0sR0FBQThHLG9CQUFBO0lBQUVFLFNBQVMsR0FBQUYsb0JBQUE7RUFJeEIsSUFBQUcsb0JBQUEsR0FBOEIsSUFBQUosK0JBQWtCLEVBQzlDRixjQUFjLEVBQ2RGLGlCQUFpQixDQUNsQjtJQUFBUyxvQkFBQSxPQUFBSCxlQUFBLGFBQUFFLG9CQUFBO0lBSE03RSxPQUFPLEdBQUE4RSxvQkFBQTtJQUFFQyxVQUFVLEdBQUFELG9CQUFBO0VBSTFCLElBQUFFLG9CQUFBLEdBQThCLElBQUFQLCtCQUFrQixFQUM5QzNELFVBQVUsS0FBSyxLQUFLLEdBQUcsQ0FBQyxHQUFJLENBQUFrRCxFQUFBLEdBQUEsQ0FBQXRDLEVBQUEsR0FBQVosVUFBVSxLQUFBLElBQUEsSUFBVkEsVUFBVSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFWQSxVQUFVLENBQUVtRSxjQUFjLE1BQUEsSUFBQSxJQUFBdkQsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUlaLFVBQVUsS0FBQSxJQUFBLElBQVZBLFVBQVUsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBVkEsVUFBVSxDQUFFTyxPQUFPLE1BQUEsSUFBQSxJQUFBMkMsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUksQ0FBRSxFQUNuRmxELFVBQVUsS0FBSyxLQUFLLEdBQUdzQixTQUFTLEdBQUd0QixVQUFVLEtBQUEsSUFBQSxJQUFWQSxVQUFVLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQVZBLFVBQVUsQ0FBRU8sT0FBTyxDQUN2RDtJQUFBNkQsb0JBQUEsT0FBQVAsZUFBQSxhQUFBSyxvQkFBQTtJQUhNM0QsT0FBTyxHQUFBNkQsb0JBQUE7SUFBRUMsVUFBVSxHQUFBRCxvQkFBQTtFQUkxQixJQUFBRSxvQkFBQSxHQUFnQyxJQUFBWCwrQkFBa0IsRUFDaEQzRCxVQUFVLEtBQUssS0FBSyxHQUFHLEVBQUUsR0FBSSxDQUFBb0QsRUFBQSxHQUFBLENBQUFELEVBQUEsR0FBQW5ELFVBQVUsS0FBQSxJQUFBLElBQVZBLFVBQVUsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBVkEsVUFBVSxDQUFFdUUsZUFBZSxNQUFBLElBQUEsSUFBQXBCLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxHQUFJbkQsVUFBVSxLQUFBLElBQUEsSUFBVkEsVUFBVSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFWQSxVQUFVLENBQUVRLFFBQVEsTUFBQSxJQUFBLElBQUE0QyxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsR0FBSSxFQUFHLEVBQ3ZGcEQsVUFBVSxLQUFLLEtBQUssR0FBR3NCLFNBQVMsR0FBR3RCLFVBQVUsS0FBQSxJQUFBLElBQVZBLFVBQVUsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBVkEsVUFBVSxDQUFFUSxRQUFRLENBQ3hEO0lBQUFnRSxvQkFBQSxPQUFBWCxlQUFBLGFBQUFTLG9CQUFBO0lBSE05RCxRQUFRLEdBQUFnRSxvQkFBQTtJQUFFQyxXQUFXLEdBQUFELG9CQUFBO0VBSzVCO0VBQ0E7RUFDQTtFQUNBLElBQU1FLGlCQUFpQixHQUFHMUUsVUFBVSxLQUFLLEtBQUs7RUFDOUMsSUFBTTJFLGdCQUFnQixHQUFHLElBQUF0QixjQUFPLEVBQzlCO0lBQUEsT0FBT3FCLGlCQUFpQixHQUFHO01BQUVuRSxPQUFPLEVBQVBBLE9BQU87TUFBRUMsUUFBUSxFQUFSQTtJQUFRLENBQUUsR0FBRyxLQUFLO0VBQUEsQ0FBQyxFQUN6RCxDQUFDa0UsaUJBQWlCLEVBQUVuRSxPQUFPLEVBQUVDLFFBQVEsQ0FBQyxDQUN2QztFQUVELElBQU1qRCxZQUFZLEdBQTRCLElBQUE4RixjQUFPLEVBQUMsWUFBSztJQUN6RDtJQUNBLElBQU11QixPQUFPLEdBQ1g5SCxNQUFNLENBQUNrQixTQUFTLElBQUksSUFBSSxJQUFJbEIsTUFBTSxDQUFDcUIsS0FBSyxHQUNwQyxDQUFDO01BQUVILFNBQVMsRUFBRWxCLE1BQU0sQ0FBQ2tCLFNBQVM7TUFBRUcsS0FBSyxFQUFFckIsTUFBTSxDQUFDcUI7SUFBSyxDQUFFLENBQUMsR0FDdEQsRUFBRTtJQUVSO0lBQ0EsSUFBTTBHLFVBQVUsR0FBR2xFLE1BQU0sQ0FDdEJ2QyxNQUFNLENBQUMsVUFBQ04sR0FBRztNQUFBLE9BQUtBLEdBQUcsQ0FBQ0MsR0FBRyxJQUFJLElBQUksSUFBSUQsR0FBRyxDQUFDa0QsU0FBUyxJQUFJbEQsR0FBRyxDQUFDQyxHQUFHLEtBQUtqQixNQUFNLENBQUNrQixTQUFTO0lBQUEsRUFBQyxDQUNqRkwsR0FBRyxDQUFDLFVBQUNHLEdBQUc7TUFBQSxPQUFNO1FBQUVFLFNBQVMsRUFBRUYsR0FBRyxDQUFDQyxHQUFJO1FBQUVJLEtBQUssRUFBRUwsR0FBRyxDQUFDa0Q7TUFBMkMsQ0FBRTtJQUFBLENBQUMsQ0FBQztJQUVsRyxVQUFBOEQsTUFBQSxDQUFXRixPQUFPLE1BQUFuSCxtQkFBQSxhQUFLb0gsVUFBVTtFQUNuQyxDQUFDLEVBQUUsQ0FBQy9ILE1BQU0sRUFBRTZELE1BQU0sQ0FBQyxDQUFDO0VBRXBCLElBQU01QixNQUFNLEdBQUcsSUFBQXNFLGNBQU8sRUFDcEI7SUFBQSxPQUFNMUQsa0JBQWtCLENBQUM7TUFDdkJyQyxPQUFPLEVBQVBBLE9BQU87TUFDUHdDLFVBQVUsRUFBVkEsVUFBVTtNQUNWaEQsTUFBTSxFQUFOQSxNQUFNO01BQ05vQyxPQUFPLEVBQVBBLE9BQU87TUFDUGMsVUFBVSxFQUFFMkU7SUN6SWQsQ0QwSUMsQ0FBQztFQUFBLEdBQ0YsQ0FBQ3JILE9BQU8sRUFBRXdDLFVBQVUsRUFBRWhELE1BQU0sRUFBRW9DLE9BQU8sRUFBRXlGLGdCQUFnQixDQUFDLENBQ3pEO0VBRUQsSUFBTUksVUFBVSxHQUFHLElBQUFDLHlCQUFhLEVBQzlCLFVBQ0VDLGNBQW1CLEVBQ25CQyxNQUFtQixFQUNuQkMsU0FJQyxFQUNDO0lBQ0ZsQyxRQUFRLEtBQUEsSUFBQSxJQUFSQSxRQUFRLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQVJBLFFBQVEsQ0FBRztNQUNUN0MsaUJBQWlCLEVBQUU2RSxjQUFjO01BQ2pDQyxNQUFNLEVBQU5BLE1BQU07TUFDTnBJLE1BQU0sRUFBRXFJLFNBQVMsQ0FBQ3JJLE1BQU07TUFDeEJvQyxPQUFPLEVBQUVpRyxTQUFTLENBQUNqRyxPQUFPO01BQzFCYyxVQUFVLEVBQUVtRixTQUFTLENBQUNuRjtJQ3JKdEIsQ0RzSkQsQ0FBQztFQUNKLENBQUMsQ0FDRjtFQUVEO0VBQ0EsSUFBTW9GLGdCQUFnQixHQUFHLElBQUFKLHlCQUFhLEVBQ3BDLFVBQUNLLE9BQWtDLEVBQUk7SUFDckMsSUFBTUMsVUFBVSxHQUFHLE9BQU9ELE9BQU8sS0FBSyxVQUFVLEdBQUdBLE9BQU8sQ0FBQ3ZJLE1BQU0sQ0FBQyxHQUFHdUksT0FBTztJQUM1RXZCLFNBQVMsQ0FBQ3dCLFVBQVUsQ0FBQztJQUVyQjtJQUNBLElBQUlYLGdCQUFnQixLQUFLLEtBQUssRUFBRTtNQUM5Qk4sVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNmO0lBRUEsSUFBSXBCLFFBQVEsRUFBRTtNQUNaLElBQU1zQyxlQUFlLEdBQUdaLGdCQUFnQixLQUFLLEtBQUssR0FDOUMsS0FBSyxHQUNMO1FBQUVwRSxPQUFPLEVBQUUsQ0FBQztRQUFFQyxRQUFRLEVBQVJBO01BQVEsQ0FBRTtNQUM1QixJQUFNZ0YsVUFBVSxHQUFHN0Ysa0JBQWtCLENBQUM7UUFDcENyQyxPQUFPLEVBQVBBLE9BQU87UUFDUHdDLFVBQVUsRUFBVkEsVUFBVTtRQUNWaEQsTUFBTSxFQUFFd0ksVUFBVTtRQUNsQnBHLE9BQU8sRUFBUEEsT0FBTztRQUNQYyxVQUFVLEVBQUV1RjtNQzFKVixDRDJKSCxDQUFDO01BQ0ZSLFVBQVUsQ0FBQ1MsVUFBVSxDQUFDcEYsaUJBQWlCLEVBQUUsTUFBTSxFQUFFO1FBQy9DdEQsTUFBTSxFQUFFd0ksVUFBVTtRQUNsQnBHLE9BQU8sRUFBUEEsT0FBTztRQUNQYyxVQUFVLEVBQUV1RjtNQzFKVixDRDJKSCxDQUFDO0lBQ0o7RUFDRixDQUFDLENBQ0Y7RUFFRCxJQUFNRSxpQkFBaUIsR0FBRyxJQUFBVCx5QkFBYSxFQUNyQyxVQUFDSyxPQUFrQyxFQUFJO0lBQ3JDLElBQU1LLFdBQVcsR0FBRyxPQUFPTCxPQUFPLEtBQUssVUFBVSxHQUFHQSxPQUFPLENBQUNuRyxPQUFPLENBQUMsR0FBR21HLE9BQU87SUFDOUVwQixVQUFVLENBQUN5QixXQUFXLENBQUM7SUFFdkI7SUFDQSxJQUFJZixnQkFBZ0IsS0FBSyxLQUFLLEVBQUU7TUFDOUJOLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDZjtJQUVBLElBQUlwQixRQUFRLEVBQUU7TUFDWixJQUFNc0MsZUFBZSxHQUFHWixnQkFBZ0IsS0FBSyxLQUFLLEdBQzlDLEtBQUssR0FDTDtRQUFFcEUsT0FBTyxFQUFFLENBQUM7UUFBRUMsUUFBUSxFQUFSQTtNQUFRLENBQUU7TUFDNUIsSUFBTWdGLFVBQVUsR0FBRzdGLGtCQUFrQixDQUFDO1FBQ3BDckMsT0FBTyxFQUFQQSxPQUFPO1FBQ1B3QyxVQUFVLEVBQVZBLFVBQVU7UUFDVmhELE1BQU0sRUFBTkEsTUFBTTtRQUNOb0MsT0FBTyxFQUFFd0csV0FBVztRQUNwQjFGLFVBQVUsRUFBRXVGO01DL0pWLENEZ0tILENBQUM7TUFDRlIsVUFBVSxDQUFDUyxVQUFVLENBQUNwRixpQkFBaUIsRUFBRSxRQUFRLEVBQUU7UUFDakR0RCxNQUFNLEVBQU5BLE1BQU07UUFDTm9DLE9BQU8sRUFBRXdHLFdBQVc7UUFDcEIxRixVQUFVLEVBQUV1RjtNQy9KVixDRGdLSCxDQUFDO0lBQ0o7RUFDRixDQUFDLENBQ0Y7RUFFRCxJQUFNSSxvQkFBb0IsR0FBRyxJQUFBWCx5QkFBYSxFQUN4QyxVQUFDSyxPQUFzQyxFQUFJO0lBQ3pDLElBQUlyRixVQUFVLEtBQUssS0FBSyxFQUFFO0lBRTFCLElBQU00RixZQUFZLEdBQUc7TUFBRXJGLE9BQU8sRUFBUEEsT0FBTztNQUFFQyxRQUFRLEVBQVJBO0lBQVEsQ0FBRTtJQUMxQyxJQUFNcUYsU0FBUyxHQUFHLE9BQU9SLE9BQU8sS0FBSyxVQUFVLEdBQUdBLE9BQU8sQ0FBQ08sWUFBWSxDQUFDLEdBQUdQLE9BQU87SUFFakZoQixVQUFVLENBQUN3QixTQUFTLENBQUN0RixPQUFPLENBQUM7SUFDN0JrRSxXQUFXLENBQUNvQixTQUFTLENBQUNyRixRQUFRLENBQUM7SUFFL0IsSUFBSXlDLFFBQVEsRUFBRTtNQUNaLElBQU11QyxVQUFVLEdBQUc3RixrQkFBa0IsQ0FBQztRQUNwQ3JDLE9BQU8sRUFBUEEsT0FBTztRQUNQd0MsVUFBVSxFQUFWQSxVQUFVO1FBQ1ZoRCxNQUFNLEVBQU5BLE1BQU07UUFDTm9DLE9BQU8sRUFBUEEsT0FBTztRQUNQYyxVQUFVLEVBQUU2RjtNQ3BLVixDRHFLSCxDQUFDO01BQ0ZkLFVBQVUsQ0FBQ1MsVUFBVSxDQUFDcEYsaUJBQWlCLEVBQUUsVUFBVSxFQUFFO1FBQ25EdEQsTUFBTSxFQUFOQSxNQUFNO1FBQ05vQyxPQUFPLEVBQVBBLE9BQU87UUFDUGMsVUFBVSxFQUFFNkY7TUNwS1YsQ0RxS0gsQ0FBQztJQUNKO0VBQ0YsQ0FBQyxDQUNGO0VBRUQsT0FBQW5ELE1BQUEsQ0FBQW9ELE1BQUEsQ0FBQXBELE1BQUEsQ0FBQW9ELE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFDSy9HLE1BQU0sQ0FBQSxFQUFBO0lBQ1RqQyxNQUFNLEVBQU5BLE1BQU07SUFDTlMsWUFBWSxFQUFaQSxZQUFZO0lBQ1oyQixPQUFPLEVBQVBBLE9BQU87SUFDUGMsVUFBVSxFQUFFMkUsZ0JBQWdCO0lBQzVCYixTQUFTLEVBQUVzQixnQkFBZ0I7SUFDM0JuQixVQUFVLEVBQUV3QixpQkFBaUI7SUFDN0JNLGFBQWEsRUFBRUo7RUFBb0IsQ0FBQSxDQUFBO0FBRXZDLENBQUMiLCJmaWxlIjoiY29tcG9uZW50cy9UYWJsZS9jb3JlL3VzZVRhYmxlRGF0YVBpcGVsaW5lLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgeyB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlQ29udHJvbGxlZFN0YXRlIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlQ29udHJvbGxlZFN0YXRlJztcbmltcG9ydCB1c2VNZW1vaXplZEZuIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlTWVtb2l6ZWRGbic7XG5pbXBvcnQgeyBmbGF0dGVuQ29sdW1ucyB9IGZyb20gJy4vY29sdW1uVXRpbCc7XG5mdW5jdGlvbiBnZXRTb3J0RnVuY3Rpb24oc29ydGVyKSB7XG4gICAgaWYgKHR5cGVvZiBzb3J0ZXIgPT09ICdmdW5jdGlvbicpXG4gICAgICAgIHJldHVybiBzb3J0ZXI7XG4gICAgaWYgKHNvcnRlciAmJiB0eXBlb2Ygc29ydGVyID09PSAnb2JqZWN0JyAmJiAnY29tcGFyZScgaW4gc29ydGVyKVxuICAgICAgICByZXR1cm4gc29ydGVyLmNvbXBhcmU7XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gZ2V0TXVsdGlwbGVQcmlvcml0eShjb2x1bW4pIHtcbiAgICBpZiAoY29sdW1uLnNvcnRlciAmJiB0eXBlb2YgY29sdW1uLnNvcnRlciA9PT0gJ29iamVjdCcgJiYgJ211bHRpcGxlJyBpbiBjb2x1bW4uc29ydGVyKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW4uc29ydGVyLm11bHRpcGxlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBhcHBseVNvcnRUb0RhdGEoZGF0YSwgY29sdW1ucywgc29ydGVyU3RhdGVzKSB7XG4gICAgaWYgKHNvcnRlclN0YXRlcy5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIGNvbnN0IHNvcnRlZCA9IFsuLi5kYXRhXTtcbiAgICBjb25zdCBydW5uaW5nU29ydGVycyA9IHNvcnRlclN0YXRlc1xuICAgICAgICAubWFwKChzdGF0ZSkgPT4ge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zLmZpbmQoKGNvbCkgPT4gY29sLmtleSA9PT0gc3RhdGUuY29sdW1uS2V5KTtcbiAgICAgICAgaWYgKCFjb2x1bW4pXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgY29tcGFyZUZuID0gZ2V0U29ydEZ1bmN0aW9uKGNvbHVtbi5zb3J0ZXIpO1xuICAgICAgICBpZiAoIWNvbXBhcmVGbilcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBjb25zdCBwcmlvcml0eSA9IGdldE11bHRpcGxlUHJpb3JpdHkoY29sdW1uKTtcbiAgICAgICAgcmV0dXJuIHsgY29tcGFyZUZuLCBvcmRlcjogc3RhdGUub3JkZXIsIHByaW9yaXR5IH07XG4gICAgfSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgICBpZiAocnVubmluZ1NvcnRlcnMubGVuZ3RoID09PSAwKVxuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAvLyBIaWdoZXIgcHJpb3JpdHkgbnVtYmVyID0gY29tcGFyZWQgZmlyc3RcbiAgICBydW5uaW5nU29ydGVycy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGNvbnN0IGFwID0gdHlwZW9mIGEucHJpb3JpdHkgPT09ICdudW1iZXInID8gYS5wcmlvcml0eSA6IDA7XG4gICAgICAgIGNvbnN0IGJwID0gdHlwZW9mIGIucHJpb3JpdHkgPT09ICdudW1iZXInID8gYi5wcmlvcml0eSA6IDA7XG4gICAgICAgIHJldHVybiBicCAtIGFwO1xuICAgIH0pO1xuICAgIHNvcnRlZC5zb3J0KChyZWNvcmQxLCByZWNvcmQyKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgeyBjb21wYXJlRm4sIG9yZGVyIH0gb2YgcnVubmluZ1NvcnRlcnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGNvbXBhcmVGbihyZWNvcmQxLCByZWNvcmQyKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3JkZXIgPT09ICdhc2NlbmQnID8gcmVzdWx0IDogLXJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9KTtcbiAgICByZXR1cm4gc29ydGVkO1xufVxuZnVuY3Rpb24gYXBwbHlGaWx0ZXJzVG9EYXRhKGRhdGEsIGNvbHVtbnMsIGZpbHRlcnMpIHtcbiAgICAvLyBSZXNvbHZlIHdoaWNoIGNvbHVtbnMgaGF2ZSBhbiBhY3RpdmUgZmlsdGVyIHNlbGVjdGlvbiBBTkQgYSBwcmVkaWNhdGUuXG4gICAgY29uc3QgYWN0aXZlRmlsdGVycyA9IGNvbHVtbnNcbiAgICAgICAgLm1hcCgoY29sKSA9PiB7XG4gICAgICAgIGlmIChjb2wua2V5ID09IG51bGwpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBmaWx0ZXJzW1N0cmluZyhjb2wua2V5KV07XG4gICAgICAgIGlmICghc2VsZWN0ZWQgfHwgc2VsZWN0ZWQubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGlmICghY29sLm9uRmlsdGVyKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiB7IG9uRmlsdGVyOiBjb2wub25GaWx0ZXIsIHNlbGVjdGVkIH07XG4gICAgfSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgICBpZiAoYWN0aXZlRmlsdGVycy5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIHJldHVybiBkYXRhLmZpbHRlcigocmVjb3JkKSA9PiBcbiAgICAvLyBSb3cgcGFzc2VzIG9ubHkgaWYgRVZFUlkgYWN0aXZlIGNvbHVtbiBoYXMgYXQgbGVhc3Qgb25lIG1hdGNoaW5nIHNlbGVjdGVkIHZhbHVlLlxuICAgIGFjdGl2ZUZpbHRlcnMuZXZlcnkoKHsgb25GaWx0ZXIsIHNlbGVjdGVkIH0pID0+IHNlbGVjdGVkLnNvbWUoKHZhbHVlKSA9PiBvbkZpbHRlcih2YWx1ZSwgcmVjb3JkKSkpKTtcbn1cbmV4cG9ydCBjb25zdCBhcHBseVRhYmxlUGlwZWxpbmUgPSAoeyBjb2x1bW5zLCBkYXRhU291cmNlLCBzb3J0ZXIsIGZpbHRlcnMgPSB7fSwgcGFnaW5hdGlvbiwgfSkgPT4ge1xuICAgIGNvbnN0IHNvcnRlclN0YXRlcyA9IHNvcnRlci5jb2x1bW5LZXkgIT0gbnVsbCAmJiBzb3J0ZXIub3JkZXJcbiAgICAgICAgPyBbeyBjb2x1bW5LZXk6IHNvcnRlci5jb2x1bW5LZXksIG9yZGVyOiBzb3J0ZXIub3JkZXIgfV1cbiAgICAgICAgOiBbXTtcbiAgICBjb25zdCBsZWFmQ29sdW1ucyA9IGZsYXR0ZW5Db2x1bW5zKGNvbHVtbnMpO1xuICAgIGNvbnN0IGZpbHRlcmVkID0gYXBwbHlGaWx0ZXJzVG9EYXRhKGRhdGFTb3VyY2UsIGxlYWZDb2x1bW5zLCBmaWx0ZXJzKTtcbiAgICBjb25zdCBzb3J0ZWQgPSBhcHBseVNvcnRUb0RhdGEoZmlsdGVyZWQsIGxlYWZDb2x1bW5zLCBzb3J0ZXJTdGF0ZXMpO1xuICAgIGlmICghcGFnaW5hdGlvbikge1xuICAgICAgICByZXR1cm4geyBjdXJyZW50RGF0YVNvdXJjZTogc29ydGVkLCB0b3RhbDogc29ydGVkLmxlbmd0aCB9O1xuICAgIH1cbiAgICBjb25zdCBzdGFydCA9IChwYWdpbmF0aW9uLmN1cnJlbnQgLSAxKSAqIHBhZ2luYXRpb24ucGFnZVNpemU7XG4gICAgY29uc3QgZW5kID0gc3RhcnQgKyBwYWdpbmF0aW9uLnBhZ2VTaXplO1xuICAgIHJldHVybiB7XG4gICAgICAgIGN1cnJlbnREYXRhU291cmNlOiBzb3J0ZWQuc2xpY2Uoc3RhcnQsIGVuZCksXG4gICAgICAgIHRvdGFsOiBzb3J0ZWQubGVuZ3RoLFxuICAgIH07XG59O1xuZnVuY3Rpb24gY29sbGVjdFNvcnRlclN0YXRlcyhsZWF2ZXMpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3Qgc3RhdGVzID0gW107XG4gICAgZm9yIChjb25zdCBjb2wgb2YgbGVhdmVzKSB7XG4gICAgICAgIGNvbnN0IG9yZGVyID0gKF9hID0gY29sLnNvcnRPcmRlcikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogY29sLmRlZmF1bHRTb3J0T3JkZXI7XG4gICAgICAgIGlmIChjb2wua2V5ICE9IG51bGwgJiYgb3JkZXIpIHtcbiAgICAgICAgICAgIHN0YXRlcy5wdXNoKHsgY29sdW1uS2V5OiBjb2wua2V5LCBvcmRlciB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3RhdGVzO1xufVxuY29uc3QgZ2V0SW5pdGlhbFNvcnRlciA9IChsZWF2ZXMpID0+IHtcbiAgICBjb25zdCBzdGF0ZXMgPSBjb2xsZWN0U29ydGVyU3RhdGVzKGxlYXZlcyk7XG4gICAgaWYgKHN0YXRlcy5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiB7fTtcbiAgICByZXR1cm4geyBjb2x1bW5LZXk6IHN0YXRlc1swXS5jb2x1bW5LZXksIG9yZGVyOiBzdGF0ZXNbMF0ub3JkZXIgfTtcbn07XG5jb25zdCBnZXRDb250cm9sbGVkU29ydGVyID0gKGxlYXZlcykgPT4ge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBjb250cm9sbGVkQ29sdW1uID0gbGVhdmVzLmZpbmQoKGNvbHVtbikgPT4gY29sdW1uLnNvcnRPcmRlciAhPT0gdW5kZWZpbmVkKTtcbiAgICBpZiAoIWNvbnRyb2xsZWRDb2x1bW4pIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgY29sdW1uS2V5OiBjb250cm9sbGVkQ29sdW1uLmtleSxcbiAgICAgICAgb3JkZXI6IChfYSA9IGNvbnRyb2xsZWRDb2x1bW4uc29ydE9yZGVyKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsLFxuICAgIH07XG59O1xuY29uc3QgZ2V0SW5pdGlhbEZpbHRlcnMgPSAobGVhdmVzKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IHN0YXRlID0ge307XG4gICAgZm9yIChjb25zdCBjb2wgb2YgbGVhdmVzKSB7XG4gICAgICAgIGlmIChjb2wua2V5ID09IG51bGwpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY29uc3QgaW5pdGlhbCA9IChfYSA9IGNvbC5kZWZhdWx0RmlsdGVyZWRWYWx1ZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogY29sLmZpbHRlcmVkVmFsdWU7XG4gICAgICAgIGlmIChpbml0aWFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHN0YXRlW1N0cmluZyhjb2wua2V5KV0gPSBpbml0aWFsICE9PSBudWxsICYmIGluaXRpYWwgIT09IHZvaWQgMCA/IGluaXRpYWwgOiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdGF0ZTtcbn07XG5jb25zdCBnZXRDb250cm9sbGVkRmlsdGVycyA9IChsZWF2ZXMpID0+IHtcbiAgICBsZXQgaGFzQ29udHJvbGxlZCA9IGZhbHNlO1xuICAgIGNvbnN0IHN0YXRlID0ge307XG4gICAgZm9yIChjb25zdCBjb2wgb2YgbGVhdmVzKSB7XG4gICAgICAgIGlmIChjb2wua2V5ID09IG51bGwpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgaWYgKGNvbC5maWx0ZXJlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhhc0NvbnRyb2xsZWQgPSB0cnVlO1xuICAgICAgICAgICAgc3RhdGVbU3RyaW5nKGNvbC5rZXkpXSA9IGNvbC5maWx0ZXJlZFZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBoYXNDb250cm9sbGVkID8gc3RhdGUgOiB1bmRlZmluZWQ7XG59O1xuLyoqXG4gKiBSZXR1cm5zIGEgdmFsdWUgd2hvc2UgcmVmZXJlbmNlIGlzIHByZXNlcnZlZCBhY3Jvc3MgcmVuZGVycyBhcyBsb25nIGFzIHRoZVxuICogc2hhbGxvdyBjb250ZW50cyBhcmUgdW5jaGFuZ2VkIChwZXIgYGVxdWFsYCkuIFVzZWQgdG8gc3RhYmlsaXNlIHRoZSBkZXJpdmVkXG4gKiBjb250cm9sbGVkIGNhbmRpZGF0ZXMgZmVkIHRvIGB1c2VDb250cm9sbGVkU3RhdGVgIOKAlCB0aGV5IHdvdWxkIG90aGVyd2lzZSBiZVxuICogZnJlc2ggb2JqZWN0cyBldmVyeSByZW5kZXIgYW5kIHRocmFzaCB0aGUgaG9vaydzIGludGVybmFsIGB1c2VMYXlvdXRFZmZlY3RgLlxuICovXG5mdW5jdGlvbiB1c2VTdGFibGVSZWYodmFsdWUsIGVxdWFsKSB7XG4gICAgY29uc3QgcmVmID0gdXNlUmVmKHZhbHVlKTtcbiAgICBpZiAoIWVxdWFsKHJlZi5jdXJyZW50LCB2YWx1ZSkpIHtcbiAgICAgICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlZi5jdXJyZW50O1xufVxuZnVuY3Rpb24gc29ydGVyRXF1YWwoYSwgYikge1xuICAgIGlmIChhID09PSBiKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWEgfHwgIWIpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gYS5jb2x1bW5LZXkgPT09IGIuY29sdW1uS2V5ICYmIGEub3JkZXIgPT09IGIub3JkZXI7XG59XG5mdW5jdGlvbiBmaWx0ZXJWYWx1ZUVxdWFsKGEsIGIpIHtcbiAgICBpZiAoYSA9PT0gYilcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgaWYgKCFhIHx8ICFiKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aClcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoYVtpXSAhPT0gYltpXSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBmaWx0ZXJzRXF1YWwoYSwgYikge1xuICAgIGlmIChhID09PSBiKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWEgfHwgIWIpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBrZXlzQSA9IE9iamVjdC5rZXlzKGEpO1xuICAgIGNvbnN0IGtleXNCID0gT2JqZWN0LmtleXMoYik7XG4gICAgaWYgKGtleXNBLmxlbmd0aCAhPT0ga2V5c0IubGVuZ3RoKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5c0EpIHtcbiAgICAgICAgaWYgKCFmaWx0ZXJWYWx1ZUVxdWFsKGFba2V5XSwgYltrZXldKSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5leHBvcnQgY29uc3QgdXNlVGFibGVEYXRhUGlwZWxpbmUgPSAoeyBjb2x1bW5zLCBkYXRhU291cmNlLCBwYWdpbmF0aW9uLCBvbkNoYW5nZSwgfSkgPT4ge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAvLyBGbGF0dGVuIG9uY2UgcGVyIGBjb2x1bW5zYCBjaGFuZ2UgYW5kIHNoYXJlIHRoZSBsZWFmIGxpc3QgYWNyb3NzIGV2ZXJ5XG4gICAgLy8gZGVyaXZlIHN0ZXAgYmVsb3cg4oCUIHRoZXkgdXNlZCB0byBlYWNoIHJlLWZsYXR0ZW4gb24gZXZlcnkgcmVuZGVyLlxuICAgIGNvbnN0IGxlYXZlcyA9IHVzZU1lbW8oKCkgPT4gZmxhdHRlbkNvbHVtbnMoY29sdW1ucyksIFtjb2x1bW5zXSk7XG4gICAgLy8gU29ydGVyIC8gZmlsdGVycyBhcmUgXCJkZXJpdmVkIGNvbnRyb2xsZWRcIiDigJQgdGhlIGNvbnRyb2xsZWQgdmFsdWUgaXMgYnVpbHRcbiAgICAvLyBieSBzY2FubmluZyBjb2x1bW4gcHJvcHMgKGBzb3J0T3JkZXJgIC8gYGZpbHRlcmVkVmFsdWVgKSwgc28gYGdldENvbnRyb2xsZWQqYFxuICAgIC8vIHJldHVybnMgYSBmcmVzaCBvYmplY3QgZXZlcnkgcmVuZGVyIGV2ZW4gd2hlbiB0aGUgdW5kZXJseWluZyBpbnB1dHMgYXJlXG4gICAgLy8gdW5jaGFuZ2VkLiBXaXRob3V0IHN0YWJpbGlzYXRpb24sIGB1c2VDb250cm9sbGVkU3RhdGVgJ3MgaW50ZXJuYWxcbiAgICAvLyBgdXNlTGF5b3V0RWZmZWN0KFt2YWx1ZV0pYCB3b3VsZCByZS1zeW5jIG9uIGV2ZXJ5IHJlbmRlciDihpIgaW5maW5pdGUgbG9vcC5cbiAgICAvLyBQaW4gdGhlIHJlZmVyZW5jZSB2aWEgYSBzaGFsbG93LWVxdWFsIHJlZi5cbiAgICBjb25zdCBjb250cm9sbGVkU29ydGVyID0gdXNlU3RhYmxlUmVmKGdldENvbnRyb2xsZWRTb3J0ZXIobGVhdmVzKSwgc29ydGVyRXF1YWwpO1xuICAgIGNvbnN0IGNvbnRyb2xsZWRGaWx0ZXJzID0gdXNlU3RhYmxlUmVmKGdldENvbnRyb2xsZWRGaWx0ZXJzKGxlYXZlcyksIGZpbHRlcnNFcXVhbCk7XG4gICAgLy8gSW5pdGlhbCBzb3J0ZXIgLyBmaWx0ZXJzIG9ubHkgbWF0dGVyIG9uIG1vdW50LCBzbyBtZW1vaXNlIHRoZW0gb24gYGxlYXZlc2BcbiAgICAvLyBpbnN0ZWFkIG9mIHJlY29tcHV0aW5nIChhbmQgcmUtZmxhdHRlbmluZykgZXZlcnkgcmVuZGVyLlxuICAgIGNvbnN0IGluaXRpYWxTb3J0ZXIgPSB1c2VNZW1vKCgpID0+IGdldEluaXRpYWxTb3J0ZXIobGVhdmVzKSwgW2xlYXZlc10pO1xuICAgIGNvbnN0IGluaXRpYWxGaWx0ZXJzID0gdXNlTWVtbygoKSA9PiBnZXRJbml0aWFsRmlsdGVycyhsZWF2ZXMpLCBbbGVhdmVzXSk7XG4gICAgY29uc3QgW3NvcnRlciwgc2V0U29ydGVyXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShpbml0aWFsU29ydGVyLCBjb250cm9sbGVkU29ydGVyKTtcbiAgICBjb25zdCBbZmlsdGVycywgc2V0RmlsdGVyc10gPSB1c2VDb250cm9sbGVkU3RhdGUoaW5pdGlhbEZpbHRlcnMsIGNvbnRyb2xsZWRGaWx0ZXJzKTtcbiAgICBjb25zdCBbY3VycmVudCwgc2V0Q3VycmVudF0gPSB1c2VDb250cm9sbGVkU3RhdGUocGFnaW5hdGlvbiA9PT0gZmFsc2UgPyAxIDogKChfYiA9IChfYSA9IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5kZWZhdWx0Q3VycmVudCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogcGFnaW5hdGlvbiA9PT0gbnVsbCB8fCBwYWdpbmF0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYWdpbmF0aW9uLmN1cnJlbnQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDEpLCBwYWdpbmF0aW9uID09PSBmYWxzZSA/IHVuZGVmaW5lZCA6IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5jdXJyZW50KTtcbiAgICBjb25zdCBbcGFnZVNpemUsIHNldFBhZ2VTaXplXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShwYWdpbmF0aW9uID09PSBmYWxzZSA/IDEwIDogKChfZCA9IChfYyA9IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5kZWZhdWx0UGFnZVNpemUpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5wYWdlU2l6ZSkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogMTApLCBwYWdpbmF0aW9uID09PSBmYWxzZSA/IHVuZGVmaW5lZCA6IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5wYWdlU2l6ZSk7XG4gICAgLy8gTWVtb2lzZSBvbiBwcmltaXRpdmVzIOKAlCBhIGZyZXNoIGB7IGN1cnJlbnQsIHBhZ2VTaXplIH1gIGxpdGVyYWwgZXZlcnkgcmVuZGVyXG4gICAgLy8gd291bGQgZGVmZWF0IHRoZSBgcmVzdWx0YCBtZW1vIGJlbG93IGFuZCByZS1ydW4gZmlsdGVyICsgc29ydCArIHNsaWNlIG9uXG4gICAgLy8gZXZlcnkgdW5yZWxhdGVkIHJlLXJlbmRlci5cbiAgICBjb25zdCBwYWdpbmF0aW9uRW5hYmxlZCA9IHBhZ2luYXRpb24gIT09IGZhbHNlO1xuICAgIGNvbnN0IG1lcmdlZFBhZ2luYXRpb24gPSB1c2VNZW1vKCgpID0+IChwYWdpbmF0aW9uRW5hYmxlZCA/IHsgY3VycmVudCwgcGFnZVNpemUgfSA6IGZhbHNlKSwgW3BhZ2luYXRpb25FbmFibGVkLCBjdXJyZW50LCBwYWdlU2l6ZV0pO1xuICAgIGNvbnN0IHNvcnRlclN0YXRlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICAvLyBTdGFydCB3aXRoIHRoZSBwcmltYXJ5IHVzZXItdG9nZ2xlZCBzb3J0ZXJcbiAgICAgICAgY29uc3QgcHJpbWFyeSA9IHNvcnRlci5jb2x1bW5LZXkgIT0gbnVsbCAmJiBzb3J0ZXIub3JkZXJcbiAgICAgICAgICAgID8gW3sgY29sdW1uS2V5OiBzb3J0ZXIuY29sdW1uS2V5LCBvcmRlcjogc29ydGVyLm9yZGVyIH1dXG4gICAgICAgICAgICA6IFtdO1xuICAgICAgICAvLyBDb2xsZWN0IGFueSBvdGhlciBjb2x1bW5zIHRoYXQgaGF2ZSBhIGNvbnRyb2xsZWQgc29ydE9yZGVyIChmb3IgbXVsdGktc29ydClcbiAgICAgICAgY29uc3QgYWRkaXRpb25hbCA9IGxlYXZlc1xuICAgICAgICAgICAgLmZpbHRlcigoY29sKSA9PiBjb2wua2V5ICE9IG51bGwgJiYgY29sLnNvcnRPcmRlciAmJiBjb2wua2V5ICE9PSBzb3J0ZXIuY29sdW1uS2V5KVxuICAgICAgICAgICAgLm1hcCgoY29sKSA9PiAoeyBjb2x1bW5LZXk6IGNvbC5rZXksIG9yZGVyOiBjb2wuc29ydE9yZGVyIH0pKTtcbiAgICAgICAgcmV0dXJuIFsuLi5wcmltYXJ5LCAuLi5hZGRpdGlvbmFsXTtcbiAgICB9LCBbc29ydGVyLCBsZWF2ZXNdKTtcbiAgICBjb25zdCByZXN1bHQgPSB1c2VNZW1vKCgpID0+IGFwcGx5VGFibGVQaXBlbGluZSh7XG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIGRhdGFTb3VyY2UsXG4gICAgICAgIHNvcnRlcixcbiAgICAgICAgZmlsdGVycyxcbiAgICAgICAgcGFnaW5hdGlvbjogbWVyZ2VkUGFnaW5hdGlvbixcbiAgICB9KSwgW2NvbHVtbnMsIGRhdGFTb3VyY2UsIHNvcnRlciwgZmlsdGVycywgbWVyZ2VkUGFnaW5hdGlvbl0pO1xuICAgIGNvbnN0IGVtaXRDaGFuZ2UgPSB1c2VNZW1vaXplZEZuKChuZXh0RGF0YVNvdXJjZSwgYWN0aW9uLCBuZXh0U3RhdGUpID0+IHtcbiAgICAgICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKHtcbiAgICAgICAgICAgIGN1cnJlbnREYXRhU291cmNlOiBuZXh0RGF0YVNvdXJjZSxcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIHNvcnRlcjogbmV4dFN0YXRlLnNvcnRlcixcbiAgICAgICAgICAgIGZpbHRlcnM6IG5leHRTdGF0ZS5maWx0ZXJzLFxuICAgICAgICAgICAgcGFnaW5hdGlvbjogbmV4dFN0YXRlLnBhZ2luYXRpb24sXG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIC8vIHVzZU1lbW9pemVkRm46IHN0YWJsZSByZWYsIGFsd2F5cyBjYWxscyBsYXRlc3QgY2xvc3VyZSDigJQgbm8gc3RhbGUgZGVwcyByaXNrXG4gICAgY29uc3Qgd3JhcHBlZFNldFNvcnRlciA9IHVzZU1lbW9pemVkRm4oKHVwZGF0ZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dFNvcnRlciA9IHR5cGVvZiB1cGRhdGVyID09PSAnZnVuY3Rpb24nID8gdXBkYXRlcihzb3J0ZXIpIDogdXBkYXRlcjtcbiAgICAgICAgc2V0U29ydGVyKG5leHRTb3J0ZXIpO1xuICAgICAgICAvLyBSZXNldCBwYWdpbmF0aW9uIHRvIHBhZ2UgMSB3aGVuIHNvcnRpbmcgY2hhbmdlc1xuICAgICAgICBpZiAobWVyZ2VkUGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHNldEN1cnJlbnQoMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgICAgICBjb25zdCByZXNldFBhZ2luYXRpb24gPSBtZXJnZWRQYWdpbmF0aW9uID09PSBmYWxzZVxuICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICA6IHsgY3VycmVudDogMSwgcGFnZVNpemUgfTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRSZXN1bHQgPSBhcHBseVRhYmxlUGlwZWxpbmUoe1xuICAgICAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZSxcbiAgICAgICAgICAgICAgICBzb3J0ZXI6IG5leHRTb3J0ZXIsXG4gICAgICAgICAgICAgICAgZmlsdGVycyxcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiByZXNldFBhZ2luYXRpb24sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGVtaXRDaGFuZ2UobmV4dFJlc3VsdC5jdXJyZW50RGF0YVNvdXJjZSwgJ3NvcnQnLCB7XG4gICAgICAgICAgICAgICAgc29ydGVyOiBuZXh0U29ydGVyLFxuICAgICAgICAgICAgICAgIGZpbHRlcnMsXG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbjogcmVzZXRQYWdpbmF0aW9uLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCB3cmFwcGVkU2V0RmlsdGVycyA9IHVzZU1lbW9pemVkRm4oKHVwZGF0ZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dEZpbHRlcnMgPSB0eXBlb2YgdXBkYXRlciA9PT0gJ2Z1bmN0aW9uJyA/IHVwZGF0ZXIoZmlsdGVycykgOiB1cGRhdGVyO1xuICAgICAgICBzZXRGaWx0ZXJzKG5leHRGaWx0ZXJzKTtcbiAgICAgICAgLy8gUmVzZXQgcGFnaW5hdGlvbiB0byBwYWdlIDEgd2hlbiBmaWx0ZXJzIGNoYW5nZVxuICAgICAgICBpZiAobWVyZ2VkUGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHNldEN1cnJlbnQoMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgICAgICBjb25zdCByZXNldFBhZ2luYXRpb24gPSBtZXJnZWRQYWdpbmF0aW9uID09PSBmYWxzZVxuICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICA6IHsgY3VycmVudDogMSwgcGFnZVNpemUgfTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRSZXN1bHQgPSBhcHBseVRhYmxlUGlwZWxpbmUoe1xuICAgICAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZSxcbiAgICAgICAgICAgICAgICBzb3J0ZXIsXG4gICAgICAgICAgICAgICAgZmlsdGVyczogbmV4dEZpbHRlcnMsXG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbjogcmVzZXRQYWdpbmF0aW9uLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBlbWl0Q2hhbmdlKG5leHRSZXN1bHQuY3VycmVudERhdGFTb3VyY2UsICdmaWx0ZXInLCB7XG4gICAgICAgICAgICAgICAgc29ydGVyLFxuICAgICAgICAgICAgICAgIGZpbHRlcnM6IG5leHRGaWx0ZXJzLFxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IHJlc2V0UGFnaW5hdGlvbixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3Qgd3JhcHBlZFNldFBhZ2luYXRpb24gPSB1c2VNZW1vaXplZEZuKCh1cGRhdGVyKSA9PiB7XG4gICAgICAgIGlmIChwYWdpbmF0aW9uID09PSBmYWxzZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0geyBjdXJyZW50LCBwYWdlU2l6ZSB9O1xuICAgICAgICBjb25zdCBuZXh0VmFsdWUgPSB0eXBlb2YgdXBkYXRlciA9PT0gJ2Z1bmN0aW9uJyA/IHVwZGF0ZXIoY3VycmVudFZhbHVlKSA6IHVwZGF0ZXI7XG4gICAgICAgIHNldEN1cnJlbnQobmV4dFZhbHVlLmN1cnJlbnQpO1xuICAgICAgICBzZXRQYWdlU2l6ZShuZXh0VmFsdWUucGFnZVNpemUpO1xuICAgICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRSZXN1bHQgPSBhcHBseVRhYmxlUGlwZWxpbmUoe1xuICAgICAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZSxcbiAgICAgICAgICAgICAgICBzb3J0ZXIsXG4gICAgICAgICAgICAgICAgZmlsdGVycyxcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiBuZXh0VmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGVtaXRDaGFuZ2UobmV4dFJlc3VsdC5jdXJyZW50RGF0YVNvdXJjZSwgJ3BhZ2luYXRlJywge1xuICAgICAgICAgICAgICAgIHNvcnRlcixcbiAgICAgICAgICAgICAgICBmaWx0ZXJzLFxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IG5leHRWYWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcmVzdWx0KSwgeyBzb3J0ZXIsXG4gICAgICAgIHNvcnRlclN0YXRlcyxcbiAgICAgICAgZmlsdGVycywgcGFnaW5hdGlvbjogbWVyZ2VkUGFnaW5hdGlvbiwgc2V0U29ydGVyOiB3cmFwcGVkU2V0U29ydGVyLCBzZXRGaWx0ZXJzOiB3cmFwcGVkU2V0RmlsdGVycywgc2V0UGFnaW5hdGlvbjogd3JhcHBlZFNldFBhZ2luYXRpb24gfSk7XG59OyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -7,7 +7,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.useTableExpand = void 0;
|
|
8
8
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
9
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
|
-
var
|
|
10
|
+
var _useControlledState3 = _interopRequireDefault(require("@1money/hooks/useControlledState"));
|
|
11
|
+
var _useMemoizedFn = _interopRequireDefault(require("@1money/hooks/useMemoizedFn"));
|
|
11
12
|
var useTableExpand = exports.useTableExpand = function useTableExpand(_ref) {
|
|
12
13
|
var expandable = _ref.expandable,
|
|
13
14
|
dataSource = _ref.dataSource,
|
|
@@ -31,11 +32,11 @@ var useTableExpand = exports.useTableExpand = function useTableExpand(_ref) {
|
|
|
31
32
|
return key;
|
|
32
33
|
});
|
|
33
34
|
};
|
|
34
|
-
var _useControlledState = (0,
|
|
35
|
+
var _useControlledState = (0, _useControlledState3["default"])(computeDefaultKeys(), expandable === null || expandable === void 0 ? void 0 : expandable.expandedRowKeys),
|
|
35
36
|
_useControlledState2 = (0, _slicedToArray2["default"])(_useControlledState, 2),
|
|
36
37
|
mergedExpandedRowKeys = _useControlledState2[0],
|
|
37
38
|
setMergedExpandedRowKeys = _useControlledState2[1];
|
|
38
|
-
var triggerExpand = (0,
|
|
39
|
+
var triggerExpand = (0, _useMemoizedFn["default"])(function (recordKey, record) {
|
|
39
40
|
var _a, _b;
|
|
40
41
|
// Honor `rowExpandable`: rows the predicate denies cannot be toggled. This
|
|
41
42
|
// also blocks programmatic callers (e.g. expandRowByClick on the kernel)
|
|
@@ -51,7 +52,7 @@ var useTableExpand = exports.useTableExpand = function useTableExpand(_ref) {
|
|
|
51
52
|
});
|
|
52
53
|
// Called by the kernel's onExpand (e.g. expandRowByClick) — updates state
|
|
53
54
|
// and delegates to user callbacks
|
|
54
|
-
var onKernelExpand = (0,
|
|
55
|
+
var onKernelExpand = (0, _useMemoizedFn["default"])(function (expanded, record, recordKey) {
|
|
55
56
|
var _a, _b;
|
|
56
57
|
if ((expandable === null || expandable === void 0 ? void 0 : expandable.rowExpandable) && !expandable.rowExpandable(record)) return;
|
|
57
58
|
var nextKeys = expanded ? [].concat((0, _toConsumableArray2["default"])(mergedExpandedRowKeys), [recordKey]) : mergedExpandedRowKeys.filter(function (key) {
|
|
@@ -67,4 +68,4 @@ var useTableExpand = exports.useTableExpand = function useTableExpand(_ref) {
|
|
|
67
68
|
onKernelExpand: onKernelExpand
|
|
68
69
|
};
|
|
69
70
|
};
|
|
70
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvc3JjL2NvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZUV4cGFuZC50cyIsImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZUV4cGFuZC5qcyJdLCJuYW1lcyI6WyJfdXNlQ29udHJvbGxlZFN0YXRlMyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3VzZU1lbW9pemVkRm4iLCJ1c2VUYWJsZUV4cGFuZCIsImV4cG9ydHMiLCJfcmVmIiwiZXhwYW5kYWJsZSIsImRhdGFTb3VyY2UiLCJnZXRSb3dLZXkiLCJjb21wdXRlRGVmYXVsdEtleXMiLCJkZWZhdWx0RXhwYW5kZWRSb3dLZXlzIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImRlZmF1bHRFeHBhbmRBbGxSb3dzIiwicm93RXhwYW5kYWJsZSIsIm1hcCIsInJlY29yZCIsImluZGV4Iiwia2V5IiwiZmlsdGVyIiwiX3JlZjIiLCJfcmVmMyIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJ1c2VDb250cm9sbGVkU3RhdGUiLCJleHBhbmRlZFJvd0tleXMiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsIm1lcmdlZEV4cGFuZGVkUm93S2V5cyIsInNldE1lcmdlZEV4cGFuZGVkUm93S2V5cyIsInRyaWdnZXJFeHBhbmQiLCJ1c2VNZW1vaXplZEZuIiwicmVjb3JkS2V5IiwiX2EiLCJfYiIsImV4cGFuZGVkIiwiaW5jbHVkZXMiLCJuZXh0S2V5cyIsImNvbmNhdCIsIm9uRXhwYW5kIiwiY2FsbCIsIm9uRXhwYW5kZWRSb3dzQ2hhbmdlIiwib25LZXJuZWxFeHBhbmQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBLElBQUFBLG9CQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxjQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFHTyxJQUFNRSxjQUFjLEdBQUFDLE9BQUEsQ0FBQUQsY0FBQSxHQUFHLFNB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QUFPLElBQUEsQ0FBQWhDLFVBQUEsRUFBRzJCLFFBQVEsRUFBRWxCLE1BQU0sQ0FBQztJQUN4QyxDQUFBaUIsRUFBQSxHQUFBMUIsVUFBVSxLQUFBLElBQUEsSUFBVkEsVUFBVSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFWQSxVQUFVLENBQUVpQyxvQkFBb0IsTUFBQSxJQUFBLElBQUFQLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFBTSxJQUFBLENBQUFoQyxVQUFBLEVBQUc2QixRQUFRLENBQUM7RUFDOUMsQ0FBQyxDQUFDO0VBRUYsT0FBTztJQUNMVCxxQkFBcUIsRUFBckJBLHFCQUFxQjtJQUNyQkUsYUFBYSxFQUFiQSxhQUFhO0lBQ2JZLGNBQWMsRUFBZEE7RUNmQSxDRGdCRDtBQUNILENBQUMiLCJmaWxlIjoiY29tcG9uZW50cy9UYWJsZS9jb3JlL3VzZVRhYmxlRXhwYW5kLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgdXNlQ29udHJvbGxlZFN0YXRlIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlQ29udHJvbGxlZFN0YXRlJztcbmltcG9ydCB1c2VNZW1vaXplZEZuIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlTWVtb2l6ZWRGbic7XG5leHBvcnQgY29uc3QgdXNlVGFibGVFeHBhbmQgPSAoeyBleHBhbmRhYmxlLCBkYXRhU291cmNlLCBnZXRSb3dLZXksIH0pID0+IHtcbiAgICAvLyBNYXRjaCB0YWJsZTogYGRlZmF1bHRFeHBhbmRBbGxSb3dzYCBzZWVkcyBpbml0aWFsIGV4cGFuc2lvbiB3aXRoIGV2ZXJ5XG4gICAgLy8gcm93IHdob3NlIGtleSBpcyBleHBhbmRhYmxlLiBgcm93RXhwYW5kYWJsZWAgKGlmIHByZXNlbnQpIHN0aWxsIGdhdGVzIHRoaXMuXG4gICAgY29uc3QgY29tcHV0ZURlZmF1bHRLZXlzID0gKCkgPT4ge1xuICAgICAgICBpZiAoZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmRlZmF1bHRFeHBhbmRlZFJvd0tleXMpXG4gICAgICAgICAgICByZXR1cm4gWy4uLmV4cGFuZGFibGUuZGVmYXVsdEV4cGFuZGVkUm93S2V5c107XG4gICAgICAgIGlmICghKGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5kZWZhdWx0RXhwYW5kQWxsUm93cykgfHwgIWRhdGFTb3VyY2UgfHwgIWdldFJvd0tleSlcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgY29uc3Qgcm93RXhwYW5kYWJsZSA9IGV4cGFuZGFibGUucm93RXhwYW5kYWJsZTtcbiAgICAgICAgcmV0dXJuIGRhdGFTb3VyY2VcbiAgICAgICAgICAgIC5tYXAoKHJlY29yZCwgaW5kZXgpID0+ICh7IHJlY29yZCwga2V5OiBnZXRSb3dLZXkocmVjb3JkLCBpbmRleCkgfSkpXG4gICAgICAgICAgICAuZmlsdGVyKCh7IHJlY29yZCB9KSA9PiAocm93RXhwYW5kYWJsZSA/IHJvd0V4cGFuZGFibGUocmVjb3JkKSA6IHRydWUpKVxuICAgICAgICAgICAgLm1hcCgoeyBrZXkgfSkgPT4ga2V5KTtcbiAgICB9O1xuICAgIGNvbnN0IFttZXJnZWRFeHBhbmRlZFJvd0tleXMsIHNldE1lcmdlZEV4cGFuZGVkUm93S2V5c10gPSB1c2VDb250cm9sbGVkU3RhdGUoY29tcHV0ZURlZmF1bHRLZXlzKCksIGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5leHBhbmRlZFJvd0tleXMpO1xuICAgIGNvbnN0IHRyaWdnZXJFeHBhbmQgPSB1c2VNZW1vaXplZEZuKChyZWNvcmRLZXksIHJlY29yZCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAvLyBIb25vciBgcm93RXhwYW5kYWJsZWA6IHJvd3MgdGhlIHByZWRpY2F0ZSBkZW5pZXMgY2Fubm90IGJlIHRvZ2dsZWQuIFRoaXNcbiAgICAgICAgLy8gYWxzbyBibG9ja3MgcHJvZ3JhbW1hdGljIGNhbGxlcnMgKGUuZy4gZXhwYW5kUm93QnlDbGljayBvbiB0aGUga2VybmVsKVxuICAgICAgICAvLyBmcm9tIGJ5cGFzc2luZyB0aGUgcHJlZGljYXRlLlxuICAgICAgICBpZiAoKGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5yb3dFeHBhbmRhYmxlKSAmJiAhZXhwYW5kYWJsZS5yb3dFeHBhbmRhYmxlKHJlY29yZCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGV4cGFuZGVkID0gbWVyZ2VkRXhwYW5kZWRSb3dLZXlzLmluY2x1ZGVzKHJlY29yZEtleSk7XG4gICAgICAgIGNvbnN0IG5leHRLZXlzID0gZXhwYW5kZWRcbiAgICAgICAgICAgID8gbWVyZ2VkRXhwYW5kZWRSb3dLZXlzLmZpbHRlcihrZXkgPT4ga2V5ICE9PSByZWNvcmRLZXkpXG4gICAgICAgICAgICA6IFsuLi5tZXJnZWRFeHBhbmRlZFJvd0tleXMsIHJlY29yZEtleV07XG4gICAgICAgIHNldE1lcmdlZEV4cGFuZGVkUm93S2V5cyhuZXh0S2V5cyk7XG4gICAgICAgIChfYSA9IGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5vbkV4cGFuZCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoZXhwYW5kYWJsZSwgIWV4cGFuZGVkLCByZWNvcmQpO1xuICAgICAgICAoX2IgPSBleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUub25FeHBhbmRlZFJvd3NDaGFuZ2UpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKGV4cGFuZGFibGUsIG5leHRLZXlzKTtcbiAgICB9KTtcbiAgICAvLyBDYWxsZWQgYnkgdGhlIGtlcm5lbCdzIG9uRXhwYW5kIChlLmcuIGV4cGFuZFJvd0J5Q2xpY2spIOKAlCB1cGRhdGVzIHN0YXRlXG4gICAgLy8gYW5kIGRlbGVnYXRlcyB0byB1c2VyIGNhbGxiYWNrc1xuICAgIGNvbnN0IG9uS2VybmVsRXhwYW5kID0gdXNlTWVtb2l6ZWRGbigoZXhwYW5kZWQsIHJlY29yZCwgcmVjb3JkS2V5KSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGlmICgoZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLnJvd0V4cGFuZGFibGUpICYmICFleHBhbmRhYmxlLnJvd0V4cGFuZGFibGUocmVjb3JkKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgbmV4dEtleXMgPSBleHBhbmRlZFxuICAgICAgICAgICAgPyBbLi4ubWVyZ2VkRXhwYW5kZWRSb3dLZXlzLCByZWNvcmRLZXldXG4gICAgICAgICAgICA6IG1lcmdlZEV4cGFuZGVkUm93S2V5cy5maWx0ZXIoa2V5ID0+IGtleSAhPT0gcmVjb3JkS2V5KTtcbiAgICAgICAgc2V0TWVyZ2VkRXhwYW5kZWRSb3dLZXlzKG5leHRLZXlzKTtcbiAgICAgICAgKF9hID0gZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLm9uRXhwYW5kKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChleHBhbmRhYmxlLCBleHBhbmRlZCwgcmVjb3JkKTtcbiAgICAgICAgKF9iID0gZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLm9uRXhwYW5kZWRSb3dzQ2hhbmdlKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChleHBhbmRhYmxlLCBuZXh0S2V5cyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbWVyZ2VkRXhwYW5kZWRSb3dLZXlzLFxuICAgICAgICB0cmlnZ2VyRXhwYW5kLFxuICAgICAgICBvbktlcm5lbEV4cGFuZCxcbiAgICB9O1xufTsiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|