@1money/component-ui 0.0.73 → 0.0.75
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/components/Dialog/Dialog.js +7 -39
- package/es/components/Dialog/constants.d.ts +0 -3
- package/es/components/Dialog/constants.js +1 -4
- package/es/components/Dialog/style/Dialog.css +0 -21
- package/es/components/ProForm/ProForm.js +201 -48
- package/es/components/ProForm/ProFormDependency.d.ts +11 -2
- package/es/components/ProForm/ProFormDependency.js +29 -136
- package/es/components/ProForm/ProFormItem.js +81 -24
- package/es/components/ProForm/ProFormList.js +114 -62
- package/es/components/ProForm/Submitter.js +15 -4
- package/es/components/ProForm/context.d.ts +11 -3
- package/es/components/ProForm/context.js +32 -12
- package/es/components/ProForm/core/constants.d.ts +10 -2
- package/es/components/ProForm/core/constants.js +17 -3
- package/es/components/ProForm/core/formStore.d.ts +24 -0
- package/es/components/ProForm/core/formStore.js +101 -0
- package/es/components/ProForm/core/hooks/useForm.d.ts +4 -1
- package/es/components/ProForm/core/hooks/useForm.js +220 -120
- package/es/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
- package/es/components/ProForm/core/hooks/useFormCore.js +114 -90
- package/es/components/ProForm/core/runRules.d.ts +5 -3
- package/es/components/ProForm/core/runRules.js +13 -5
- package/es/components/ProForm/core/useFormItem.d.ts +2 -2
- package/es/components/ProForm/core/useFormItem.js +46 -23
- package/es/components/ProForm/fields/ProFormFieldSet.js +20 -7
- package/es/components/ProForm/fields/createProFormField.js +14 -4
- package/es/components/ProForm/hooks/useFieldRequest.d.ts +6 -1
- package/es/components/ProForm/hooks/useFieldRequest.js +54 -9
- package/es/components/ProForm/hooks/useUrlSync.d.ts +16 -0
- package/es/components/ProForm/hooks/useUrlSync.js +170 -0
- package/es/components/ProForm/index.d.ts +2 -2
- package/es/components/ProForm/index.js +1 -1
- package/es/components/ProForm/interface.d.ts +105 -23
- package/es/components/ProForm/layouts/DialogForm.js +17 -7
- package/es/components/ProForm/layouts/DrawerForm.js +16 -7
- package/es/components/ProForm/layouts/QueryFilter.js +46 -135
- package/es/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
- package/es/components/ProForm/layouts/useOverlayForm.js +27 -8
- package/es/components/ProForm/style/ProForm.css +0 -7
- package/es/components/ProForm/utils.js +32 -8
- package/es/components/ProTable/ProTable.js +3 -3
- package/es/index.css +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/lib/components/Dialog/Dialog.js +6 -38
- package/lib/components/Dialog/constants.d.ts +0 -3
- package/lib/components/Dialog/constants.js +1 -4
- package/lib/components/Dialog/style/Dialog.css +0 -21
- package/lib/components/ProForm/ProForm.js +201 -48
- package/lib/components/ProForm/ProFormDependency.d.ts +11 -2
- package/lib/components/ProForm/ProFormDependency.js +30 -138
- package/lib/components/ProForm/ProFormItem.js +78 -21
- package/lib/components/ProForm/ProFormList.js +112 -60
- package/lib/components/ProForm/Submitter.js +15 -4
- package/lib/components/ProForm/context.d.ts +11 -3
- package/lib/components/ProForm/context.js +33 -13
- package/lib/components/ProForm/core/constants.d.ts +10 -2
- package/lib/components/ProForm/core/constants.js +18 -4
- package/lib/components/ProForm/core/formStore.d.ts +24 -0
- package/lib/components/ProForm/core/formStore.js +110 -0
- package/lib/components/ProForm/core/hooks/useForm.d.ts +4 -1
- package/lib/components/ProForm/core/hooks/useForm.js +220 -120
- package/lib/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
- package/lib/components/ProForm/core/hooks/useFormCore.js +113 -89
- package/lib/components/ProForm/core/runRules.d.ts +5 -3
- package/lib/components/ProForm/core/runRules.js +13 -5
- package/lib/components/ProForm/core/useFormItem.d.ts +2 -2
- package/lib/components/ProForm/core/useFormItem.js +44 -21
- package/lib/components/ProForm/fields/ProFormFieldSet.js +19 -6
- package/lib/components/ProForm/fields/createProFormField.js +14 -4
- package/lib/components/ProForm/hooks/useFieldRequest.d.ts +6 -1
- package/lib/components/ProForm/hooks/useFieldRequest.js +53 -8
- package/lib/components/ProForm/hooks/useUrlSync.d.ts +16 -0
- package/lib/components/ProForm/hooks/useUrlSync.js +178 -0
- package/lib/components/ProForm/index.d.ts +2 -2
- package/lib/components/ProForm/index.js +1 -1
- package/lib/components/ProForm/interface.d.ts +105 -23
- package/lib/components/ProForm/layouts/DialogForm.js +17 -7
- package/lib/components/ProForm/layouts/DrawerForm.js +16 -7
- package/lib/components/ProForm/layouts/QueryFilter.js +45 -134
- package/lib/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
- package/lib/components/ProForm/layouts/useOverlayForm.js +30 -8
- package/lib/components/ProForm/style/ProForm.css +0 -7
- package/lib/components/ProForm/utils.js +32 -8
- package/lib/components/ProTable/ProTable.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 +1 -1
- package/scripts/mcp-server/examples.generated.json +36 -0
- package/scripts/mcp-server/index.generated.json +538 -16
|
@@ -8,7 +8,7 @@ var __rest = this && this.__rest || function (s, e) {
|
|
|
8
8
|
return t;
|
|
9
9
|
};
|
|
10
10
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
-
import { memo, useMemo
|
|
11
|
+
import { memo, useMemo } from 'react';
|
|
12
12
|
import useControlledState from '@1money/hooks/useControlledState';
|
|
13
13
|
import useMemoizedFn from '@1money/hooks/useMemoizedFn';
|
|
14
14
|
import { default as classnames } from '../../../utils/classnames';
|
|
@@ -17,46 +17,20 @@ import { ProForm } from '../ProForm';
|
|
|
17
17
|
import { CSS_PREFIX, DEFAULT_TEXT } from '../constants';
|
|
18
18
|
import React from 'react';
|
|
19
19
|
var classes = classnames("".concat(CSS_PREFIX, "-query-filter"));
|
|
20
|
+
var HIDDEN_STYLE = {
|
|
21
|
+
display: 'none'
|
|
22
|
+
};
|
|
23
|
+
// Keeps the wrapper layout-neutral: the field stays a direct flex item.
|
|
24
|
+
var CONTENTS_STYLE = {
|
|
25
|
+
display: 'contents'
|
|
26
|
+
};
|
|
20
27
|
// ---------------------------------------------------------------------------
|
|
21
|
-
//
|
|
22
|
-
//
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
params[k] = v;
|
|
28
|
-
});
|
|
29
|
-
return params;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Write the filter values into the URL while PRESERVING unrelated query params
|
|
33
|
-
* (e.g. `?tab=...`). Only keys previously written by this filter (tracked in
|
|
34
|
-
* `managedKeys`) are cleared before writing, so reset removes exactly what the
|
|
35
|
-
* filter added. Returns the new set of managed keys.
|
|
36
|
-
*/
|
|
37
|
-
function setUrlParams(params, managedKeys) {
|
|
38
|
-
if (typeof window === 'undefined') return new Set(managedKeys);
|
|
39
|
-
var sp = new URLSearchParams(window.location.search);
|
|
40
|
-
managedKeys.forEach(function (k) {
|
|
41
|
-
return sp["delete"](k);
|
|
42
|
-
});
|
|
43
|
-
var written = new Set();
|
|
44
|
-
for (var _i = 0, _Object$entries = Object.entries(params); _i < _Object$entries.length; _i++) {
|
|
45
|
-
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
|
|
46
|
-
k = _Object$entries$_i[0],
|
|
47
|
-
v = _Object$entries$_i[1];
|
|
48
|
-
if (v !== null && v !== undefined && v !== '') {
|
|
49
|
-
sp.set(k, String(v));
|
|
50
|
-
written.add(k);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
var search = sp.toString();
|
|
54
|
-
var url = search ? "".concat(window.location.pathname, "?").concat(search) : window.location.pathname;
|
|
55
|
-
window.history.replaceState(null, '', url);
|
|
56
|
-
return written;
|
|
57
|
-
}
|
|
58
|
-
// ---------------------------------------------------------------------------
|
|
59
|
-
// QueryFilter
|
|
28
|
+
// QueryFilter — a compact filter bar on top of ProForm.
|
|
29
|
+
//
|
|
30
|
+
// URL synchronization is handled by ProForm itself (`syncToUrl`); QueryFilter
|
|
31
|
+
// only flips the default of `syncToUrlAsImportant` to true: a filter's reason
|
|
32
|
+
// to sync is restoring state from the URL on refresh, so URL params win over
|
|
33
|
+
// `initialValues` here (plain ProForm keeps the opposite default).
|
|
60
34
|
// ---------------------------------------------------------------------------
|
|
61
35
|
var QueryFilterBase = function QueryFilterBase(props) {
|
|
62
36
|
var _a, _b;
|
|
@@ -70,99 +44,37 @@ var QueryFilterBase = function QueryFilterBase(props) {
|
|
|
70
44
|
_props$split = props.split,
|
|
71
45
|
split = _props$split === void 0 ? false : _props$split,
|
|
72
46
|
searchConfig = props.searchConfig,
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
onReset = props.onReset,
|
|
47
|
+
_props$syncToUrlAsImp = props.syncToUrlAsImportant,
|
|
48
|
+
syncToUrlAsImportant = _props$syncToUrlAsImp === void 0 ? true : _props$syncToUrlAsImp,
|
|
76
49
|
children = props.children,
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
formProps = __rest(props, ["defaultCollapsed", "collapsed", "onCollapse", "defaultColsNumber", "labelWidth", "split", "searchConfig", "syncToUrl", "onFinish", "onReset", "children", "submitter", "initialValues"]);
|
|
50
|
+
onFinishFailed = props.onFinishFailed,
|
|
51
|
+
_submitter = props.submitter,
|
|
52
|
+
formProps = __rest(props, ["defaultCollapsed", "collapsed", "onCollapse", "defaultColsNumber", "labelWidth", "split", "searchConfig", "syncToUrlAsImportant", "children", "onFinishFailed", "submitter"]);
|
|
81
53
|
var _useControlledState = useControlledState(defaultCollapsed, controlledCollapsed),
|
|
82
54
|
_useControlledState2 = _slicedToArray(_useControlledState, 2),
|
|
83
55
|
collapsed = _useControlledState2[0],
|
|
84
56
|
setCollapsed = _useControlledState2[1];
|
|
85
|
-
// ── syncToUrl: merge URL params into initial values on mount ──
|
|
86
|
-
// One-time snapshot of the URL params at mount. Lazy ref init is IDEMPOTENT,
|
|
87
|
-
// so it is safe under StrictMode's double render (an impure "first run" flag
|
|
88
|
-
// inside useMemo would return the unmerged value on the replay invocation).
|
|
89
|
-
var urlParamsAtMountRef = useRef(null);
|
|
90
|
-
if (urlParamsAtMountRef.current === null) {
|
|
91
|
-
urlParamsAtMountRef.current = syncToUrl ? getUrlParams() : {};
|
|
92
|
-
}
|
|
93
|
-
// Keys this filter has WRITTEN to the URL — the only keys submit/reset is
|
|
94
|
-
// allowed to clear. The function form of syncToUrl also seeds this from its
|
|
95
|
-
// filtered 'get' result (those keys are the filter's own by definition).
|
|
96
|
-
var managedKeysRef = useRef(new Set());
|
|
97
|
-
// Boolean-mode only: URL params merged into initialValues but NOT yet
|
|
98
|
-
// claimed. The boolean form cannot tell its own params from foreign ones
|
|
99
|
-
// (?tab=…), so a seeded key is claimed only once its value changes (or it
|
|
100
|
-
// disappears from the submitted values, i.e. the user cleared the field).
|
|
101
|
-
var urlSeededRef = useRef({});
|
|
102
|
-
var initialValues = useMemo(function () {
|
|
103
|
-
var _a;
|
|
104
|
-
if (!syncToUrl) return initialValuesProp;
|
|
105
|
-
var urlParams = (_a = urlParamsAtMountRef.current) !== null && _a !== void 0 ? _a : {};
|
|
106
|
-
if (typeof syncToUrl === 'function') {
|
|
107
|
-
var fromUrl = syncToUrl(urlParams, 'get');
|
|
108
|
-
// Idempotent ref writes — same input on every invocation.
|
|
109
|
-
managedKeysRef.current = new Set(Object.keys(fromUrl));
|
|
110
|
-
return Object.assign(Object.assign({}, initialValuesProp), fromUrl);
|
|
111
|
-
}
|
|
112
|
-
urlSeededRef.current = Object.assign({}, urlParams);
|
|
113
|
-
return Object.assign(Object.assign({}, initialValuesProp), urlParams);
|
|
114
|
-
}, []);
|
|
115
|
-
var handleSyncSet = useMemoizedFn(function (values) {
|
|
116
|
-
if (!syncToUrl) return;
|
|
117
|
-
var toWrite;
|
|
118
|
-
var toClear = new Set(managedKeysRef.current);
|
|
119
|
-
if (typeof syncToUrl === 'function') {
|
|
120
|
-
toWrite = syncToUrl(values, 'set');
|
|
121
|
-
} else {
|
|
122
|
-
// Skip URL-seeded keys we never wrote whose value is unchanged — they
|
|
123
|
-
// may belong to someone else (?tab=…); leave them in the URL untouched.
|
|
124
|
-
// A seeded key whose value DID change is claimed from now on.
|
|
125
|
-
toWrite = {};
|
|
126
|
-
for (var _i2 = 0, _Object$entries2 = Object.entries(values); _i2 < _Object$entries2.length; _i2++) {
|
|
127
|
-
var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i2], 2),
|
|
128
|
-
key = _Object$entries2$_i[0],
|
|
129
|
-
value = _Object$entries2$_i[1];
|
|
130
|
-
var seeded = urlSeededRef.current[key];
|
|
131
|
-
if (seeded !== undefined && !managedKeysRef.current.has(key) && String(value) === seeded) {
|
|
132
|
-
continue;
|
|
133
|
-
}
|
|
134
|
-
delete urlSeededRef.current[key];
|
|
135
|
-
toClear.add(key);
|
|
136
|
-
toWrite[key] = value;
|
|
137
|
-
}
|
|
138
|
-
// Seeded keys missing from the submitted values were cleared by the
|
|
139
|
-
// user (omitNil strips empty values) — claim them and remove their
|
|
140
|
-
// stale params from the URL.
|
|
141
|
-
for (var _i3 = 0, _Object$keys = Object.keys(urlSeededRef.current); _i3 < _Object$keys.length; _i3++) {
|
|
142
|
-
var _key = _Object$keys[_i3];
|
|
143
|
-
if (!(_key in values)) {
|
|
144
|
-
delete urlSeededRef.current[_key];
|
|
145
|
-
toClear.add(_key);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
managedKeysRef.current = setUrlParams(toWrite, toClear);
|
|
150
|
-
});
|
|
151
|
-
var handleFinish = useMemoizedFn(function (values) {
|
|
152
|
-
handleSyncSet(values);
|
|
153
|
-
onFinish === null || onFinish === void 0 ? void 0 : onFinish(values);
|
|
154
|
-
});
|
|
155
|
-
var handleReset = useMemoizedFn(function () {
|
|
156
|
-
if (syncToUrl) {
|
|
157
|
-
managedKeysRef.current = setUrlParams({}, managedKeysRef.current);
|
|
158
|
-
}
|
|
159
|
-
onReset === null || onReset === void 0 ? void 0 : onReset();
|
|
160
|
-
});
|
|
161
57
|
var handleCollapse = useMemoizedFn(function () {
|
|
162
58
|
var next = !collapsed;
|
|
163
59
|
setCollapsed(next);
|
|
164
60
|
onCollapse === null || onCollapse === void 0 ? void 0 : onCollapse(next);
|
|
165
61
|
});
|
|
62
|
+
// A collapsed (display:none) field failing validation would block Search
|
|
63
|
+
// with an INVISIBLE error — auto-expand so the user can see and fix it.
|
|
64
|
+
var handleFinishFailed = useMemoizedFn(function (errorInfo) {
|
|
65
|
+
if (collapsed) {
|
|
66
|
+
var overflowHasError = React.Children.toArray(children).slice(defaultColsNumber).some(function (child) {
|
|
67
|
+
if (! /*#__PURE__*/React.isValidElement(child)) return false;
|
|
68
|
+
var childName = child.props.name;
|
|
69
|
+
return childName !== undefined && errorInfo.errors[childName] !== undefined;
|
|
70
|
+
});
|
|
71
|
+
if (overflowHasError) {
|
|
72
|
+
setCollapsed(false);
|
|
73
|
+
onCollapse === null || onCollapse === void 0 ? void 0 : onCollapse(false);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
onFinishFailed === null || onFinishFailed === void 0 ? void 0 : onFinishFailed(errorInfo);
|
|
77
|
+
});
|
|
166
78
|
// Count children and split visible/hidden
|
|
167
79
|
var childArray = useMemo(function () {
|
|
168
80
|
var arr = [];
|
|
@@ -173,7 +85,6 @@ var QueryFilterBase = function QueryFilterBase(props) {
|
|
|
173
85
|
});
|
|
174
86
|
return arr;
|
|
175
87
|
}, [children]);
|
|
176
|
-
var visibleChildren = collapsed ? childArray.slice(0, defaultColsNumber) : childArray;
|
|
177
88
|
var hasMore = childArray.length > defaultColsNumber;
|
|
178
89
|
var searchText = (_a = searchConfig === null || searchConfig === void 0 ? void 0 : searchConfig.searchText) !== null && _a !== void 0 ? _a : DEFAULT_TEXT.search;
|
|
179
90
|
var resetText = (_b = searchConfig === null || searchConfig === void 0 ? void 0 : searchConfig.resetText) !== null && _b !== void 0 ? _b : DEFAULT_TEXT.reset;
|
|
@@ -182,20 +93,21 @@ var QueryFilterBase = function QueryFilterBase(props) {
|
|
|
182
93
|
width: labelWidth
|
|
183
94
|
} : undefined;
|
|
184
95
|
return _jsx(ProForm, Object.assign({}, formProps, {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
96
|
+
syncToUrlAsImportant: syncToUrlAsImportant,
|
|
97
|
+
formComponentType: "QueryFilter",
|
|
98
|
+
onFinishFailed: handleFinishFailed,
|
|
188
99
|
submitter: false,
|
|
189
100
|
children: _jsxs("div", {
|
|
190
101
|
className: classes(),
|
|
191
|
-
children: [
|
|
102
|
+
children: [childArray.map(function (child, index) {
|
|
103
|
+
var hiddenByCollapse = collapsed && index >= defaultColsNumber;
|
|
192
104
|
return _jsxs(React.Fragment, {
|
|
193
|
-
children: [split && index > 0 && _jsx("div", {
|
|
105
|
+
children: [split && index > 0 && !hiddenByCollapse && _jsx("div", {
|
|
194
106
|
className: classes('split')
|
|
195
|
-
}),
|
|
196
|
-
style: labelStyle,
|
|
107
|
+
}), _jsx("div", {
|
|
108
|
+
style: hiddenByCollapse ? HIDDEN_STYLE : labelStyle !== null && labelStyle !== void 0 ? labelStyle : CONTENTS_STYLE,
|
|
197
109
|
children: child
|
|
198
|
-
})
|
|
110
|
+
})]
|
|
199
111
|
}, index);
|
|
200
112
|
}), _jsxs("div", {
|
|
201
113
|
className: classes('actions'),
|
|
@@ -205,10 +117,9 @@ var QueryFilterBase = function QueryFilterBase(props) {
|
|
|
205
117
|
size: buttonSize,
|
|
206
118
|
children: searchText
|
|
207
119
|
}), _jsx(Button, {
|
|
208
|
-
type: "
|
|
120
|
+
type: "reset",
|
|
209
121
|
color: "secondary",
|
|
210
122
|
size: buttonSize,
|
|
211
|
-
onClick: handleReset,
|
|
212
123
|
children: resetText
|
|
213
124
|
}), hasMore && _jsx(Button, {
|
|
214
125
|
type: "button",
|
|
@@ -225,4 +136,4 @@ QueryFilterBase.displayName = 'QueryFilter';
|
|
|
225
136
|
/** Generic-aware export — keeps `<QueryFilter<MyValues> …>` fully typed. */
|
|
226
137
|
export var QueryFilter = /*#__PURE__*/memo(QueryFilterBase);
|
|
227
138
|
export default QueryFilter;
|
|
228
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9sYXlvdXRzL1F1ZXJ5RmlsdGVyLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vbGF5b3V0cy9RdWVyeUZpbHRlci50c3giXSwibmFtZXMiOlsiX19yZXN0IiwicyIsImUiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwibWVtbyIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VDb250cm9sbGVkU3RhdGUiLCJ1c2VNZW1vaXplZEZuIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJCdXR0b24iLCJQcm9Gb3JtIiwiQ1NTX1BSRUZJWCIsIkRFRkFVTFRfVEVYVCIsIlJlYWN0IiwiY2xhc3NlcyIsImNvbmNhdCIsImdldFVybFBhcmFtcyIsIndpbmRvdyIsInBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsImxvY2F0aW9uIiwic2VhcmNoIiwiZm9yRWFjaCIsInYiLCJrIiwic2V0VXJsUGFyYW1zIiwibWFuYWdlZEtleXMiLCJTZXQiLCJzcCIsIndyaXR0ZW4iLCJfaSIsIl9PYmplY3QkZW50cmllcyIsImVudHJpZXMiLCJfT2JqZWN0JGVudHJpZXMkX2kiLCJfc2xpY2VkVG9BcnJheSIsInVuZGVmaW5lZCIsInNldCIsIlN0cmluZyIsImFkZCIsInRvU3RyaW5nIiwidXJsIiwicGF0aG5hbWUiLCJoaXN0b3J5IiwicmVwbGFjZVN0YXRlIiwiUXVlcnlGaWx0ZXJCYXNlIiwicHJvcHMiLCJfYSIsIl9iIiwiX3Byb3BzJGRlZmF1bHRDb2xsYXBzIiwiZGVmYXVsdENvbGxhcHNlZCIsImNvbnRyb2xsZWRDb2xsYXBzZWQiLCJjb2xsYXBzZWQiLCJvbkNvbGxhcHNlIiwiX3Byb3BzJGRlZmF1bHRDb2xzTnVtIiwiZGVmYXVsdENvbHNOdW1iZXIiLCJsYWJlbFdpZHRoIiwiX3Byb3BzJHNwbGl0Iiwic3BsaXQiLCJzZWFyY2hDb25maWciLCJzeW5jVG9VcmwiLCJvbkZpbmlzaCIsIm9uUmVzZXQiLCJjaGlsZHJlbiIsIl9wcm9wcyRzdWJtaXR0ZXIiLCJzdWJtaXR0ZXIiLCJpbml0aWFsVmFsdWVzUHJvcCIsImluaXRpYWxWYWx1ZXMiLCJmb3JtUHJvcHMiLCJfdXNlQ29udHJvbGxlZFN0YXRlIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTIiLCJzZXRDb2xsYXBzZWQiLCJ1cmxQYXJhbXNBdE1vdW50UmVmIiwiY3VycmVudCIsIm1hbmFnZWRLZXlzUmVmIiwidXJsU2VlZGVkUmVmIiwidXJsUGFyYW1zIiwiZnJvbVVybCIsImtleXMiLCJhc3NpZ24iLCJoYW5kbGVTeW5jU2V0IiwidmFsdWVzIiwidG9Xcml0ZSIsInRvQ2xlYXIiLCJfaTIiLCJfT2JqZWN0JGVudHJpZXMyIiwiX09iamVjdCRlbnRyaWVzMiRfaSIsImtleSIsInZhbHVlIiwic2VlZGVkIiwiaGFzIiwiX2kzIiwiX09iamVjdCRrZXlzIiwiaGFuZGxlRmluaXNoIiwiaGFuZGxlUmVzZXQiLCJoYW5kbGVDb2xsYXBzZSIsIm5leHQiLCJjaGlsZEFycmF5IiwiYXJyIiwiQ2hpbGRyZW4iLCJjaGlsZCIsImlzVmFsaWRFbGVtZW50IiwicHVzaCIsInZpc2libGVDaGlsZHJlbiIsInNsaWNlIiwiaGFzTW9yZSIsInNlYXJjaFRleHQiLCJyZXNldFRleHQiLCJyZXNldCIsImJ1dHRvblNpemUiLCJzaXplIiwibGFiZWxTdHlsZSIsIndpZHRoIiwiY2xhc3NOYW1lIiwibWFwIiwiaW5kZXgiLCJGcmFnbWVudCIsInN0eWxlIiwidHlwZSIsImNvbG9yIiwib25DbGljayIsInZhcmlhbnQiLCJleHBhbmQiLCJjb2xsYXBzZSIsImRpc3BsYXlOYW1lIiwiUXVlcnlGaWx0ZXIiXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFJQSxNQUFN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eW91dHMvUXVlcnlGaWx0ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUNvbnRyb2xsZWRTdGF0ZSBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUNvbnRyb2xsZWRTdGF0ZSc7XG5pbXBvcnQgdXNlTWVtb2l6ZWRGbiBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZU1lbW9pemVkRm4nO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi8uLi9CdXR0b24nO1xuaW1wb3J0IHsgUHJvRm9ybSB9IGZyb20gJy4uL1Byb0Zvcm0nO1xuaW1wb3J0IHsgQ1NTX1BSRUZJWCwgREVGQVVMVF9URVhUIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5jb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhgJHtDU1NfUFJFRklYfS1xdWVyeS1maWx0ZXJgKTtcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVVJMIHN5bmMgaGVscGVyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBnZXRVcmxQYXJhbXMoKSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICByZXR1cm4ge307XG4gICAgY29uc3QgcGFyYW1zID0ge307XG4gICAgbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKS5mb3JFYWNoKCh2LCBrKSA9PiB7XG4gICAgICAgIHBhcmFtc1trXSA9IHY7XG4gICAgfSk7XG4gICAgcmV0dXJuIHBhcmFtcztcbn1cbi8qKlxuICogV3JpdGUgdGhlIGZpbHRlciB2YWx1ZXMgaW50byB0aGUgVVJMIHdoaWxlIFBSRVNFUlZJTkcgdW5yZWxhdGVkIHF1ZXJ5IHBhcmFtc1xuICogKGUuZy4gYD90YWI9Li4uYCkuIE9ubHkga2V5cyBwcmV2aW91c2x5IHdyaXR0ZW4gYnkgdGhpcyBmaWx0ZXIgKHRyYWNrZWQgaW5cbiAqIGBtYW5hZ2VkS2V5c2ApIGFyZSBjbGVhcmVkIGJlZm9yZSB3cml0aW5nLCBzbyByZXNldCByZW1vdmVzIGV4YWN0bHkgd2hhdCB0aGVcbiAqIGZpbHRlciBhZGRlZC4gUmV0dXJucyB0aGUgbmV3IHNldCBvZiBtYW5hZ2VkIGtleXMuXG4gKi9cbmZ1bmN0aW9uIHNldFVybFBhcmFtcyhwYXJhbXMsIG1hbmFnZWRLZXlzKSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICByZXR1cm4gbmV3IFNldChtYW5hZ2VkS2V5cyk7XG4gICAgY29uc3Qgc3AgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgIG1hbmFnZWRLZXlzLmZvckVhY2goKGspID0+IHNwLmRlbGV0ZShrKSk7XG4gICAgY29uc3Qgd3JpdHRlbiA9IG5ldyBTZXQoKTtcbiAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhwYXJhbXMpKSB7XG4gICAgICAgIGlmICh2ICE9PSBudWxsICYmIHYgIT09IHVuZGVmaW5lZCAmJiB2ICE9PSAnJykge1xuICAgICAgICAgICAgc3Auc2V0KGssIFN0cmluZyh2KSk7XG4gICAgICAgICAgICB3cml0dGVuLmFkZChrKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBzZWFyY2ggPSBzcC50b1N0cmluZygpO1xuICAgIGNvbnN0IHVybCA9IHNlYXJjaCA/IGAke3dpbmRvdy5sb2NhdGlvbi5wYXRobmFtZX0/JHtzZWFyY2h9YCA6IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcbiAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgJycsIHVybCk7XG4gICAgcmV0dXJuIHdyaXR0ZW47XG59XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFF1ZXJ5RmlsdGVyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmNvbnN0IFF1ZXJ5RmlsdGVyQmFzZSA9IChwcm9wcykgPT4ge1xuICAgIHZhciBfYSwgX2I7XG4gICAgY29uc3QgeyBkZWZhdWx0Q29sbGFwc2VkID0gdHJ1ZSwgY29sbGFwc2VkOiBjb250cm9sbGVkQ29sbGFwc2VkLCBvbkNvbGxhcHNlLCBkZWZhdWx0Q29sc051bWJlciA9IDMsIGxhYmVsV2lkdGgsIHNwbGl0ID0gZmFsc2UsIHNlYXJjaENvbmZpZywgc3luY1RvVXJsLCBvbkZpbmlzaCwgb25SZXNldCwgY2hpbGRyZW4sIHN1Ym1pdHRlciA9IGZhbHNlLCBpbml0aWFsVmFsdWVzOiBpbml0aWFsVmFsdWVzUHJvcCB9ID0gcHJvcHMsIGZvcm1Qcm9wcyA9IF9fcmVzdChwcm9wcywgW1wiZGVmYXVsdENvbGxhcHNlZFwiLCBcImNvbGxhcHNlZFwiLCBcIm9uQ29sbGFwc2VcIiwgXCJkZWZhdWx0Q29sc051bWJlclwiLCBcImxhYmVsV2lkdGhcIiwgXCJzcGxpdFwiLCBcInNlYXJjaENvbmZpZ1wiLCBcInN5bmNUb1VybFwiLCBcIm9uRmluaXNoXCIsIFwib25SZXNldFwiLCBcImNoaWxkcmVuXCIsIFwic3VibWl0dGVyXCIsIFwiaW5pdGlhbFZhbHVlc1wiXSk7XG4gICAgY29uc3QgW2NvbGxhcHNlZCwgc2V0Q29sbGFwc2VkXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShkZWZhdWx0Q29sbGFwc2VkLCBjb250cm9sbGVkQ29sbGFwc2VkKTtcbiAgICAvLyDilIDilIAgc3luY1RvVXJsOiBtZXJnZSBVUkwgcGFyYW1zIGludG8gaW5pdGlhbCB2YWx1ZXMgb24gbW91bnQg4pSA4pSAXG4gICAgLy8gT25lLXRpbWUgc25hcHNob3Qgb2YgdGhlIFVSTCBwYXJhbXMgYXQgbW91bnQuIExhenkgcmVmIGluaXQgaXMgSURFTVBPVEVOVCxcbiAgICAvLyBzbyBpdCBpcyBzYWZlIHVuZGVyIFN0cmljdE1vZGUncyBkb3VibGUgcmVuZGVyIChhbiBpbXB1cmUgXCJmaXJzdCBydW5cIiBmbGFnXG4gICAgLy8gaW5zaWRlIHVzZU1lbW8gd291bGQgcmV0dXJuIHRoZSB1bm1lcmdlZCB2YWx1ZSBvbiB0aGUgcmVwbGF5IGludm9jYXRpb24pLlxuICAgIGNvbnN0IHVybFBhcmFtc0F0TW91bnRSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgaWYgKHVybFBhcmFtc0F0TW91bnRSZWYuY3VycmVudCA9PT0gbnVsbCkge1xuICAgICAgICB1cmxQYXJhbXNBdE1vdW50UmVmLmN1cnJlbnQgPSBzeW5jVG9VcmwgPyBnZXRVcmxQYXJhbXMoKSA6IHt9O1xuICAgIH1cbiAgICAvLyBLZXlzIHRoaXMgZmlsdGVyIGhhcyBXUklUVEVOIHRvIHRoZSBVUkwg4oCUIHRoZSBvbmx5IGtleXMgc3VibWl0L3Jlc2V0IGlzXG4gICAgLy8gYWxsb3dlZCB0byBjbGVhci4gVGhlIGZ1bmN0aW9uIGZvcm0gb2Ygc3luY1RvVXJsIGFsc28gc2VlZHMgdGhpcyBmcm9tIGl0c1xuICAgIC8vIGZpbHRlcmVkICdnZXQnIHJlc3VsdCAodGhvc2Uga2V5cyBhcmUgdGhlIGZpbHRlcidzIG93biBieSBkZWZpbml0aW9uKS5cbiAgICBjb25zdCBtYW5hZ2VkS2V5c1JlZiA9IHVzZVJlZihuZXcgU2V0KCkpO1xuICAgIC8vIEJvb2xlYW4tbW9kZSBvbmx5OiBVUkwgcGFyYW1zIG1lcmdlZCBpbnRvIGluaXRpYWxWYWx1ZXMgYnV0IE5PVCB5ZXRcbiAgICAvLyBjbGFpbWVkLiBUaGUgYm9vbGVhbiBmb3JtIGNhbm5vdCB0ZWxsIGl0cyBvd24gcGFyYW1zIGZyb20gZm9yZWlnbiBvbmVzXG4gICAgLy8gKD90YWI94oCmKSwgc28gYSBzZWVkZWQga2V5IGlzIGNsYWltZWQgb25seSBvbmNlIGl0cyB2YWx1ZSBjaGFuZ2VzIChvciBpdFxuICAgIC8vIGRpc2FwcGVhcnMgZnJvbSB0aGUgc3VibWl0dGVkIHZhbHVlcywgaS5lLiB0aGUgdXNlciBjbGVhcmVkIHRoZSBmaWVsZCkuXG4gICAgY29uc3QgdXJsU2VlZGVkUmVmID0gdXNlUmVmKHt9KTtcbiAgICBjb25zdCBpbml0aWFsVmFsdWVzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCFzeW5jVG9VcmwpXG4gICAgICAgICAgICByZXR1cm4gaW5pdGlhbFZhbHVlc1Byb3A7XG4gICAgICAgIGNvbnN0IHVybFBhcmFtcyA9IChfYSA9IHVybFBhcmFtc0F0TW91bnRSZWYuY3VycmVudCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDoge307XG4gICAgICAgIGlmICh0eXBlb2Ygc3luY1RvVXJsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjb25zdCBmcm9tVXJsID0gc3luY1RvVXJsKHVybFBhcmFtcywgJ2dldCcpO1xuICAgICAgICAgICAgLy8gSWRlbXBvdGVudCByZWYgd3JpdGVzIOKAlCBzYW1lIGlucHV0IG9uIGV2ZXJ5IGludm9jYXRpb24uXG4gICAgICAgICAgICBtYW5hZ2VkS2V5c1JlZi5jdXJyZW50ID0gbmV3IFNldChPYmplY3Qua2V5cyhmcm9tVXJsKSk7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBpbml0aWFsVmFsdWVzUHJvcCksIGZyb21VcmwpO1xuICAgICAgICB9XG4gICAgICAgIHVybFNlZWRlZFJlZi5jdXJyZW50ID0gT2JqZWN0LmFzc2lnbih7fSwgdXJsUGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgaW5pdGlhbFZhbHVlc1Byb3ApLCB1cmxQYXJhbXMpO1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCBoYW5kbGVTeW5jU2V0ID0gdXNlTWVtb2l6ZWRGbigodmFsdWVzKSA9PiB7XG4gICAgICAgIGlmICghc3luY1RvVXJsKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBsZXQgdG9Xcml0ZTtcbiAgICAgICAgY29uc3QgdG9DbGVhciA9IG5ldyBTZXQobWFuYWdlZEtleXNSZWYuY3VycmVudCk7XG4gICAgICAgIGlmICh0eXBlb2Ygc3luY1RvVXJsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0b1dyaXRlID0gc3luY1RvVXJsKHZhbHVlcywgJ3NldCcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gU2tpcCBVUkwtc2VlZGVkIGtleXMgd2UgbmV2ZXIgd3JvdGUgd2hvc2UgdmFsdWUgaXMgdW5jaGFuZ2VkIOKAlCB0aGV5XG4gICAgICAgICAgICAvLyBtYXkgYmVsb25nIHRvIHNvbWVvbmUgZWxzZSAoP3RhYj3igKYpOyBsZWF2ZSB0aGVtIGluIHRoZSBVUkwgdW50b3VjaGVkLlxuICAgICAgICAgICAgLy8gQSBzZWVkZWQga2V5IHdob3NlIHZhbHVlIERJRCBjaGFuZ2UgaXMgY2xhaW1lZCBmcm9tIG5vdyBvbi5cbiAgICAgICAgICAgIHRvV3JpdGUgPSB7fTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhbHVlcykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWVkZWQgPSB1cmxTZWVkZWRSZWYuY3VycmVudFtrZXldO1xuICAgICAgICAgICAgICAgIGlmIChzZWVkZWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICAhbWFuYWdlZEtleXNSZWYuY3VycmVudC5oYXMoa2V5KSAmJlxuICAgICAgICAgICAgICAgICAgICBTdHJpbmcodmFsdWUpID09PSBzZWVkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlbGV0ZSB1cmxTZWVkZWRSZWYuY3VycmVudFtrZXldO1xuICAgICAgICAgICAgICAgIHRvQ2xlYXIuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgdG9Xcml0ZVtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBTZWVkZWQga2V5cyBtaXNzaW5nIGZyb20gdGhlIHN1Ym1pdHRlZCB2YWx1ZXMgd2VyZSBjbGVhcmVkIGJ5IHRoZVxuICAgICAgICAgICAgLy8gdXNlciAob21pdE5pbCBzdHJpcHMgZW1wdHkgdmFsdWVzKSDigJQgY2xhaW0gdGhlbSBhbmQgcmVtb3ZlIHRoZWlyXG4gICAgICAgICAgICAvLyBzdGFsZSBwYXJhbXMgZnJvbSB0aGUgVVJMLlxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModXJsU2VlZGVkUmVmLmN1cnJlbnQpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCEoa2V5IGluIHZhbHVlcykpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHVybFNlZWRlZFJlZi5jdXJyZW50W2tleV07XG4gICAgICAgICAgICAgICAgICAgIHRvQ2xlYXIuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG1hbmFnZWRLZXlzUmVmLmN1cnJlbnQgPSBzZXRVcmxQYXJhbXModG9Xcml0ZSwgdG9DbGVhcik7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlRmluaXNoID0gdXNlTWVtb2l6ZWRGbigodmFsdWVzKSA9PiB7XG4gICAgICAgIGhhbmRsZVN5bmNTZXQodmFsdWVzKTtcbiAgICAgICAgb25GaW5pc2ggPT09IG51bGwgfHwgb25GaW5pc2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRmluaXNoKHZhbHVlcyk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlUmVzZXQgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgaWYgKHN5bmNUb1VybCkge1xuICAgICAgICAgICAgbWFuYWdlZEtleXNSZWYuY3VycmVudCA9IHNldFVybFBhcmFtcyh7fSwgbWFuYWdlZEtleXNSZWYuY3VycmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgb25SZXNldCA9PT0gbnVsbCB8fCBvblJlc2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblJlc2V0KCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlQ29sbGFwc2UgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dCA9ICFjb2xsYXBzZWQ7XG4gICAgICAgIHNldENvbGxhcHNlZChuZXh0KTtcbiAgICAgICAgb25Db2xsYXBzZSA9PT0gbnVsbCB8fCBvbkNvbGxhcHNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNvbGxhcHNlKG5leHQpO1xuICAgIH0pO1xuICAgIC8vIENvdW50IGNoaWxkcmVuIGFuZCBzcGxpdCB2aXNpYmxlL2hpZGRlblxuICAgIGNvbnN0IGNoaWxkQXJyYXkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgY29uc3QgYXJyID0gW107XG4gICAgICAgIFJlYWN0LkNoaWxkcmVuLmZvckVhY2goY2hpbGRyZW4sIChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkKSkge1xuICAgICAgICAgICAgICAgIGFyci5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgfSwgW2NoaWxkcmVuXSk7XG4gICAgY29uc3QgdmlzaWJsZUNoaWxkcmVuID0gY29sbGFwc2VkXG4gICAgICAgID8gY2hpbGRBcnJheS5zbGljZSgwLCBkZWZhdWx0Q29sc051bWJlcilcbiAgICAgICAgOiBjaGlsZEFycmF5O1xuICAgIGNvbnN0IGhhc01vcmUgPSBjaGlsZEFycmF5Lmxlbmd0aCA+IGRlZmF1bHRDb2xzTnVtYmVyO1xuICAgIGNvbnN0IHNlYXJjaFRleHQgPSAoX2EgPSBzZWFyY2hDb25maWcgPT09IG51bGwgfHwgc2VhcmNoQ29uZmlnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZWFyY2hDb25maWcuc2VhcmNoVGV4dCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogREVGQVVMVF9URVhULnNlYXJjaDtcbiAgICBjb25zdCByZXNldFRleHQgPSAoX2IgPSBzZWFyY2hDb25maWcgPT09IG51bGwgfHwgc2VhcmNoQ29uZmlnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZWFyY2hDb25maWcucmVzZXRUZXh0KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBERUZBVUxUX1RFWFQucmVzZXQ7XG4gICAgY29uc3QgYnV0dG9uU2l6ZSA9IHNlYXJjaENvbmZpZyA9PT0gbnVsbCB8fCBzZWFyY2hDb25maWcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNlYXJjaENvbmZpZy5zaXplO1xuICAgIGNvbnN0IGxhYmVsU3R5bGUgPSBsYWJlbFdpZHRoICE9PSB1bmRlZmluZWQgJiYgbGFiZWxXaWR0aCAhPT0gJ2F1dG8nXG4gICAgICAgID8geyB3aWR0aDogbGFiZWxXaWR0aCB9XG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiAoX2pzeChQcm9Gb3JtLCBPYmplY3QuYXNzaWduKHt9LCBmb3JtUHJvcHMsIHsgaW5pdGlhbFZhbHVlczogaW5pdGlhbFZhbHVlcywgb25GaW5pc2g6IGhhbmRsZUZpbmlzaCwgb25SZXNldDogaGFuZGxlUmVzZXQsIHN1Ym1pdHRlcjogZmFsc2UsIGNoaWxkcmVuOiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygpLCBjaGlsZHJlbjogW3Zpc2libGVDaGlsZHJlbi5tYXAoKGNoaWxkLCBpbmRleCkgPT4gKF9qc3hzKFJlYWN0LkZyYWdtZW50LCB7IGNoaWxkcmVuOiBbc3BsaXQgJiYgaW5kZXggPiAwICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3NwbGl0JykgfSksIGxhYmVsU3R5bGUgPyAoX2pzeChcImRpdlwiLCB7IHN0eWxlOiBsYWJlbFN0eWxlLCBjaGlsZHJlbjogY2hpbGQgfSkpIDogKGNoaWxkKV0gfSwgaW5kZXgpKSksIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdhY3Rpb25zJyksIGNoaWxkcmVuOiBbX2pzeChCdXR0b24sIHsgdHlwZTogXCJzdWJtaXRcIiwgY29sb3I6IFwicHJpbWFyeVwiLCBzaXplOiBidXR0b25TaXplLCBjaGlsZHJlbjogc2VhcmNoVGV4dCB9KSwgX2pzeChCdXR0b24sIHsgdHlwZTogXCJidXR0b25cIiwgY29sb3I6IFwic2Vjb25kYXJ5XCIsIHNpemU6IGJ1dHRvblNpemUsIG9uQ2xpY2s6IGhhbmRsZVJlc2V0LCBjaGlsZHJlbjogcmVzZXRUZXh0IH0pLCBoYXNNb3JlICYmIChfanN4KEJ1dHRvbiwgeyB0eXBlOiBcImJ1dHRvblwiLCB2YXJpYW50OiBcInRleHRcIiwgc2l6ZTogYnV0dG9uU2l6ZSwgb25DbGljazogaGFuZGxlQ29sbGFwc2UsIGNoaWxkcmVuOiBjb2xsYXBzZWQgPyBERUZBVUxUX1RFWFQuZXhwYW5kIDogREVGQVVMVF9URVhULmNvbGxhcHNlIH0pKV0gfSldIH0pIH0pKSk7XG59O1xuUXVlcnlGaWx0ZXJCYXNlLmRpc3BsYXlOYW1lID0gJ1F1ZXJ5RmlsdGVyJztcbi8qKiBHZW5lcmljLWF3YXJlIGV4cG9ydCDigJQga2VlcHMgYDxRdWVyeUZpbHRlcjxNeVZhbHVlcz4g4oCmPmAgZnVsbHkgdHlwZWQuICovXG5leHBvcnQgY29uc3QgUXVlcnlGaWx0ZXIgPSBtZW1vKFF1ZXJ5RmlsdGVyQmFzZSk7XG5leHBvcnQgZGVmYXVsdCBRdWVyeUZpbHRlcjsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
139
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9sYXlvdXRzL1F1ZXJ5RmlsdGVyLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vbGF5b3V0cy9RdWVyeUZpbHRlci50c3giXSwibmFtZXMiOlsiX19yZXN0IiwicyIsImUiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwibWVtbyIsInVzZU1lbW8iLCJ1c2VDb250cm9sbGVkU3RhdGUiLCJ1c2VNZW1vaXplZEZuIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJCdXR0b24iLCJQcm9Gb3JtIiwiQ1NTX1BSRUZJWCIsIkRFRkFVTFRfVEVYVCIsIlJlYWN0IiwiY2xhc3NlcyIsImNvbmNhdCIsIkhJRERFTl9TVFlMRSIsImRpc3BsYXkiLCJDT05URU5UU19TVFlMRSIsIlF1ZXJ5RmlsdGVyQmFzZSIsInByb3BzIiwiX2EiLCJfYiIsIl9wcm9wcyRkZWZhdWx0Q29sbGFwcyIsImRlZmF1bHRDb2xsYXBzZWQiLCJjb250cm9sbGVkQ29sbGFwc2VkIiwiY29sbGFwc2VkIiwib25Db2xsYXBzZSIsIl9wcm9wcyRkZWZhdWx0Q29sc051bSIsImRlZmF1bHRDb2xzTnVtYmVyIiwibGFiZWxXaWR0aCIsIl9wcm9wcyRzcGxpdCIsInNwbGl0Iiwic2VhcmNoQ29uZmlnIiwiX3Byb3BzJHN5bmNUb1VybEFzSW1wIiwic3luY1RvVXJsQXNJbXBvcnRhbnQiLCJjaGlsZHJlbiIsIm9uRmluaXNoRmFpbGVkIiwiX3N1Ym1pdHRlciIsInN1Ym1pdHRlciIsImZvcm1Qcm9wcyIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2V0Q29sbGFwc2VkIiwiaGFuZGxlQ29sbGFwc2UiLCJuZXh0IiwiaGFuZGxlRmluaXNoRmFpbGVkIiwiZXJyb3JJbmZvIiwib3ZlcmZsb3dIYXNFcnJvciIsIkNoaWxkcmVuIiwidG9BcnJheSIsInNsaWNlIiwic29tZSIsImNoaWxkIiwiaXNWYWxpZEVsZW1lbnQiLCJjaGlsZE5hbWUiLCJuYW1lIiwidW5kZWZpbmVkIiwiZXJyb3JzIiwiY2hpbGRBcnJheSIsImFyciIsImZvckVhY2giLCJwdXNoIiwiaGFzTW9yZSIsInNlYXJjaFRleHQiLCJzZWFyY2giLCJyZXNldFRleHQiLCJyZXNldCIsImJ1dHRvblNpemUiLCJzaXplIiwibGFiZWxTdHlsZSIsIndpZHRoIiwiYXNzaWduIiwiZm9ybUNvbXBvbmVudFR5cGUiLCJjbGFzc05hbWUiLCJtYXAiLCJpbmRleCIsImhpZGRlbkJ5Q29sbGFwc2UiLCJGcmFnbWVudCIsInN0eWxlIiwidHlwZSIsImNvbG9yIiwidmFyaWFudCIsIm9uQ2xpY2siLCJleHBhbmQiLCJjb2xsYXBzZSIsImRpc3BsYXlOYW1lIiwiUXVlcnlGaWx0ZXIiXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFJQSxNQUFNLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsTUFBTSxJQUFLLFVBQVVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2xELElBQUlDLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDVixLQUFLLElBQUlDLENBQUMsSUFBSUgsQ0FBQyxFQUFFLElBQUlJLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUMsSUFBSUYsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDL0VELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUdILENBQUMsQ0FBQ0csQ0FBQyxDQUFDO0VBQ2YsSUFBSUgsQ0FBQyxJQUFJLElBQUksSUFBSSxPQUFPSSxNQUFNLENBQUNLLHFCQUFxQixLQUFLLFVBQVUs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O1VBQUssQ0FBQSxDQUNGO1FBQUEsQ0FBQSxFQUphdUIsS0FBSyxDQUtUO01BRXJCLENBQUMsQ0FBQyxFQUVGM0UsS0FBQSxDQUFBLEtBQUEsRUFBQTtRQUFLeUUsU0FBUyxFQUFFN0QsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUFBc0IsUUFBQSxFQUFBLENBQ2hDcEMsSUFBQSxDQUFDUyxNQUFNLEVBQUE7VUFBQ3dFLElBQUksRUFBQyxRQUFRO1VBQUNDLEtBQUssRUFBQyxTQUFTO1VBQUNaLElBQUksRUFBRUQsVUFBVTtVQUFBakMsUUFBQSxFQUNuRDZCO1FBQVUsQ0FBQSxDQUNKLEVBR1RqRSxJQUFBLENBQUNTLE1BQU0sRUFBQTtVQUFDd0UsSUFBSSxFQUFDLE9BQU87VUFBQ0MsS0FBSyxFQUFDLFdBQVc7VUFBQ1osSUFBSSxFQUFFRCxVQUFVO1VBQUFqQyxRQUFBLEVBQ3BEK0I7UUFBUyxDQUFBLENBQ0gsRUFDUkgsT0FBTyxJQUNOaEUsSUFBQSxDQUFDUyxNQUFNLEVBQUE7VUFBQ3dFLElBQUksRUFBQyxRQUFRO1VBQUNFLE9BQU8sRUFBQyxNQUFNO1VBQUNiLElBQUksRUFBRUQsVUFBVTtVQUFFZSxPQUFPLEVBQUV2QyxjQUFjO1VBQUFULFFBQUEsRUFDM0VWLFNBQVMsR0FBR2QsWUFBWSxDQUFDeUUsTUFBTSxHQUFHekUsWUFBWSxDQUFDMEU7UUFBUSxDQUFBLENBRTNEO01BQUEsQ0FBQSxDQUNHO0lBQUEsQ0FBQTtFQUNGLENBQUEsQ0FBQSxDQUNFO0FBRWQsQ0FBQztBQUVEbkUsZUFBZSxDQUFDb0UsV0FBVyxHQUFHLGFBQWE7QUFFM0M7QUFDQSxPQUFPLElBQU1DLFdBQVcsZ0JBQUdyRixJQUFJLENBQUNnQixlQUFlLENBRUs7QUFFcEQsZUFBZXFFLFdBQVciLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2xheW91dHMvUXVlcnlGaWx0ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VDb250cm9sbGVkU3RhdGUgZnJvbSAnQDFtb25leS9ob29rcy91c2VDb250cm9sbGVkU3RhdGUnO1xuaW1wb3J0IHVzZU1lbW9pemVkRm4gZnJvbSAnQDFtb25leS9ob29rcy91c2VNZW1vaXplZEZuJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vLi4vQnV0dG9uJztcbmltcG9ydCB7IFByb0Zvcm0gfSBmcm9tICcuLi9Qcm9Gb3JtJztcbmltcG9ydCB7IENTU19QUkVGSVgsIERFRkFVTFRfVEVYVCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoYCR7Q1NTX1BSRUZJWH0tcXVlcnktZmlsdGVyYCk7XG5jb25zdCBISURERU5fU1RZTEUgPSB7IGRpc3BsYXk6ICdub25lJyB9O1xuLy8gS2VlcHMgdGhlIHdyYXBwZXIgbGF5b3V0LW5ldXRyYWw6IHRoZSBmaWVsZCBzdGF5cyBhIGRpcmVjdCBmbGV4IGl0ZW0uXG5jb25zdCBDT05URU5UU19TVFlMRSA9IHsgZGlzcGxheTogJ2NvbnRlbnRzJyB9O1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBRdWVyeUZpbHRlciDigJQgYSBjb21wYWN0IGZpbHRlciBiYXIgb24gdG9wIG9mIFByb0Zvcm0uXG4vL1xuLy8gVVJMIHN5bmNocm9uaXphdGlvbiBpcyBoYW5kbGVkIGJ5IFByb0Zvcm0gaXRzZWxmIChgc3luY1RvVXJsYCk7IFF1ZXJ5RmlsdGVyXG4vLyBvbmx5IGZsaXBzIHRoZSBkZWZhdWx0IG9mIGBzeW5jVG9VcmxBc0ltcG9ydGFudGAgdG8gdHJ1ZTogYSBmaWx0ZXIncyByZWFzb25cbi8vIHRvIHN5bmMgaXMgcmVzdG9yaW5nIHN0YXRlIGZyb20gdGhlIFVSTCBvbiByZWZyZXNoLCBzbyBVUkwgcGFyYW1zIHdpbiBvdmVyXG4vLyBgaW5pdGlhbFZhbHVlc2AgaGVyZSAocGxhaW4gUHJvRm9ybSBrZWVwcyB0aGUgb3Bwb3NpdGUgZGVmYXVsdCkuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmNvbnN0IFF1ZXJ5RmlsdGVyQmFzZSA9IChwcm9wcykgPT4ge1xuICAgIHZhciBfYSwgX2I7XG4gICAgY29uc3QgeyBkZWZhdWx0Q29sbGFwc2VkID0gdHJ1ZSwgY29sbGFwc2VkOiBjb250cm9sbGVkQ29sbGFwc2VkLCBvbkNvbGxhcHNlLCBkZWZhdWx0Q29sc051bWJlciA9IDMsIGxhYmVsV2lkdGgsIHNwbGl0ID0gZmFsc2UsIHNlYXJjaENvbmZpZywgc3luY1RvVXJsQXNJbXBvcnRhbnQgPSB0cnVlLCBjaGlsZHJlbiwgb25GaW5pc2hGYWlsZWQsIFxuICAgIC8vIFF1ZXJ5RmlsdGVyIGFsd2F5cyByZW5kZXJzIGl0cyBvd24gU2VhcmNoL1Jlc2V0L0V4cGFuZCBidXR0b25zLlxuICAgIHN1Ym1pdHRlcjogX3N1Ym1pdHRlciB9ID0gcHJvcHMsIGZvcm1Qcm9wcyA9IF9fcmVzdChwcm9wcywgW1wiZGVmYXVsdENvbGxhcHNlZFwiLCBcImNvbGxhcHNlZFwiLCBcIm9uQ29sbGFwc2VcIiwgXCJkZWZhdWx0Q29sc051bWJlclwiLCBcImxhYmVsV2lkdGhcIiwgXCJzcGxpdFwiLCBcInNlYXJjaENvbmZpZ1wiLCBcInN5bmNUb1VybEFzSW1wb3J0YW50XCIsIFwiY2hpbGRyZW5cIiwgXCJvbkZpbmlzaEZhaWxlZFwiLCBcInN1Ym1pdHRlclwiXSk7XG4gICAgY29uc3QgW2NvbGxhcHNlZCwgc2V0Q29sbGFwc2VkXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShkZWZhdWx0Q29sbGFwc2VkLCBjb250cm9sbGVkQ29sbGFwc2VkKTtcbiAgICBjb25zdCBoYW5kbGVDb2xsYXBzZSA9IHVzZU1lbW9pemVkRm4oKCkgPT4ge1xuICAgICAgICBjb25zdCBuZXh0ID0gIWNvbGxhcHNlZDtcbiAgICAgICAgc2V0Q29sbGFwc2VkKG5leHQpO1xuICAgICAgICBvbkNvbGxhcHNlID09PSBudWxsIHx8IG9uQ29sbGFwc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ29sbGFwc2UobmV4dCk7XG4gICAgfSk7XG4gICAgLy8gQSBjb2xsYXBzZWQgKGRpc3BsYXk6bm9uZSkgZmllbGQgZmFpbGluZyB2YWxpZGF0aW9uIHdvdWxkIGJsb2NrIFNlYXJjaFxuICAgIC8vIHdpdGggYW4gSU5WSVNJQkxFIGVycm9yIOKAlCBhdXRvLWV4cGFuZCBzbyB0aGUgdXNlciBjYW4gc2VlIGFuZCBmaXggaXQuXG4gICAgY29uc3QgaGFuZGxlRmluaXNoRmFpbGVkID0gdXNlTWVtb2l6ZWRGbigoZXJyb3JJbmZvKSA9PiB7XG4gICAgICAgIGlmIChjb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJmbG93SGFzRXJyb3IgPSBSZWFjdC5DaGlsZHJlbi50b0FycmF5KGNoaWxkcmVuKVxuICAgICAgICAgICAgICAgIC5zbGljZShkZWZhdWx0Q29sc051bWJlcilcbiAgICAgICAgICAgICAgICAuc29tZSgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIVJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkTmFtZSA9IGNoaWxkLnByb3BzLm5hbWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkTmFtZSAhPT0gdW5kZWZpbmVkICYmIGVycm9ySW5mby5lcnJvcnNbY2hpbGROYW1lXSAhPT0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAob3ZlcmZsb3dIYXNFcnJvcikge1xuICAgICAgICAgICAgICAgIHNldENvbGxhcHNlZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgb25Db2xsYXBzZSA9PT0gbnVsbCB8fCBvbkNvbGxhcHNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNvbGxhcHNlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBvbkZpbmlzaEZhaWxlZCA9PT0gbnVsbCB8fCBvbkZpbmlzaEZhaWxlZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25GaW5pc2hGYWlsZWQoZXJyb3JJbmZvKTtcbiAgICB9KTtcbiAgICAvLyBDb3VudCBjaGlsZHJlbiBhbmQgc3BsaXQgdmlzaWJsZS9oaWRkZW5cbiAgICBjb25zdCBjaGlsZEFycmF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGNvbnN0IGFyciA9IFtdO1xuICAgICAgICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCAoY2hpbGQpID0+IHtcbiAgICAgICAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZCkpIHtcbiAgICAgICAgICAgICAgICBhcnIucHVzaChjaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYXJyO1xuICAgIH0sIFtjaGlsZHJlbl0pO1xuICAgIGNvbnN0IGhhc01vcmUgPSBjaGlsZEFycmF5Lmxlbmd0aCA+IGRlZmF1bHRDb2xzTnVtYmVyO1xuICAgIGNvbnN0IHNlYXJjaFRleHQgPSAoX2EgPSBzZWFyY2hDb25maWcgPT09IG51bGwgfHwgc2VhcmNoQ29uZmlnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZWFyY2hDb25maWcuc2VhcmNoVGV4dCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogREVGQVVMVF9URVhULnNlYXJjaDtcbiAgICBjb25zdCByZXNldFRleHQgPSAoX2IgPSBzZWFyY2hDb25maWcgPT09IG51bGwgfHwgc2VhcmNoQ29uZmlnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZWFyY2hDb25maWcucmVzZXRUZXh0KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBERUZBVUxUX1RFWFQucmVzZXQ7XG4gICAgY29uc3QgYnV0dG9uU2l6ZSA9IHNlYXJjaENvbmZpZyA9PT0gbnVsbCB8fCBzZWFyY2hDb25maWcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNlYXJjaENvbmZpZy5zaXplO1xuICAgIGNvbnN0IGxhYmVsU3R5bGUgPSBsYWJlbFdpZHRoICE9PSB1bmRlZmluZWQgJiYgbGFiZWxXaWR0aCAhPT0gJ2F1dG8nXG4gICAgICAgID8geyB3aWR0aDogbGFiZWxXaWR0aCB9XG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiAoX2pzeChQcm9Gb3JtLCBPYmplY3QuYXNzaWduKHt9LCBmb3JtUHJvcHMsIHsgc3luY1RvVXJsQXNJbXBvcnRhbnQ6IHN5bmNUb1VybEFzSW1wb3J0YW50LCBmb3JtQ29tcG9uZW50VHlwZTogXCJRdWVyeUZpbHRlclwiLCBvbkZpbmlzaEZhaWxlZDogaGFuZGxlRmluaXNoRmFpbGVkLCBzdWJtaXR0ZXI6IGZhbHNlLCBjaGlsZHJlbjogX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoKSwgY2hpbGRyZW46IFtjaGlsZEFycmF5Lm1hcCgoY2hpbGQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhpZGRlbkJ5Q29sbGFwc2UgPSBjb2xsYXBzZWQgJiYgaW5kZXggPj0gZGVmYXVsdENvbHNOdW1iZXI7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoX2pzeHMoUmVhY3QuRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtzcGxpdCAmJiBpbmRleCA+IDAgJiYgIWhpZGRlbkJ5Q29sbGFwc2UgJiYgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygnc3BsaXQnKSB9KSwgX2pzeChcImRpdlwiLCB7IHN0eWxlOiBoaWRkZW5CeUNvbGxhcHNlID8gSElEREVOX1NUWUxFIDogKGxhYmVsU3R5bGUgIT09IG51bGwgJiYgbGFiZWxTdHlsZSAhPT0gdm9pZCAwID8gbGFiZWxTdHlsZSA6IENPTlRFTlRTX1NUWUxFKSwgY2hpbGRyZW46IGNoaWxkIH0pXSB9LCBpbmRleCkpO1xuICAgICAgICAgICAgICAgIH0pLCBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnYWN0aW9ucycpLCBjaGlsZHJlbjogW19qc3goQnV0dG9uLCB7IHR5cGU6IFwic3VibWl0XCIsIGNvbG9yOiBcInByaW1hcnlcIiwgc2l6ZTogYnV0dG9uU2l6ZSwgY2hpbGRyZW46IHNlYXJjaFRleHQgfSksIF9qc3goQnV0dG9uLCB7IHR5cGU6IFwicmVzZXRcIiwgY29sb3I6IFwic2Vjb25kYXJ5XCIsIHNpemU6IGJ1dHRvblNpemUsIGNoaWxkcmVuOiByZXNldFRleHQgfSksIGhhc01vcmUgJiYgKF9qc3goQnV0dG9uLCB7IHR5cGU6IFwiYnV0dG9uXCIsIHZhcmlhbnQ6IFwidGV4dFwiLCBzaXplOiBidXR0b25TaXplLCBvbkNsaWNrOiBoYW5kbGVDb2xsYXBzZSwgY2hpbGRyZW46IGNvbGxhcHNlZCA/IERFRkFVTFRfVEVYVC5leHBhbmQgOiBERUZBVUxUX1RFWFQuY29sbGFwc2UgfSkpXSB9KV0gfSkgfSkpKTtcbn07XG5RdWVyeUZpbHRlckJhc2UuZGlzcGxheU5hbWUgPSAnUXVlcnlGaWx0ZXInO1xuLyoqIEdlbmVyaWMtYXdhcmUgZXhwb3J0IOKAlCBrZWVwcyBgPFF1ZXJ5RmlsdGVyPE15VmFsdWVzPiDigKY+YCBmdWxseSB0eXBlZC4gKi9cbmV4cG9ydCBjb25zdCBRdWVyeUZpbHRlciA9IG1lbW8oUXVlcnlGaWx0ZXJCYXNlKTtcbmV4cG9ydCBkZWZhdWx0IFF1ZXJ5RmlsdGVyOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
@@ -9,9 +9,9 @@ interface UseOverlayFormOptions {
|
|
|
9
9
|
interface UseOverlayFormReturn {
|
|
10
10
|
mergedOpen: boolean;
|
|
11
11
|
triggerNode: ReactElement | null;
|
|
12
|
-
handleFinish: (values: Record<string, unknown>) => Promise<void>;
|
|
12
|
+
handleFinish: (values: Record<string, unknown>) => Promise<void | boolean>;
|
|
13
13
|
handleHide: () => void;
|
|
14
14
|
handleShow: () => void;
|
|
15
15
|
}
|
|
16
|
-
export declare function useOverlayForm(options: UseOverlayFormOptions, onFinish?: (values: Record<string, unknown>) => void | Promise<void>): UseOverlayFormReturn;
|
|
16
|
+
export declare function useOverlayForm(options: UseOverlayFormOptions, onFinish?: (values: Record<string, unknown>) => void | boolean | Promise<void | boolean>): UseOverlayFormReturn;
|
|
17
17
|
export default useOverlayForm;
|
|
@@ -27,7 +27,7 @@ var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, gene
|
|
|
27
27
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
28
28
|
});
|
|
29
29
|
};
|
|
30
|
-
import React from 'react';
|
|
30
|
+
import React, { useEffect, useRef } from 'react';
|
|
31
31
|
import useControlledState from '@1money/hooks/useControlledState';
|
|
32
32
|
import useDebouncedCallback from '@1money/hooks/useDebouncedCallback';
|
|
33
33
|
import useEventCallback from '@1money/hooks/useEventCallback';
|
|
@@ -45,18 +45,30 @@ export function useOverlayForm(options, onFinish) {
|
|
|
45
45
|
_useControlledState2 = _slicedToArray(_useControlledState, 2),
|
|
46
46
|
mergedOpen = _useControlledState2[0],
|
|
47
47
|
setMergedOpen = _useControlledState2[1];
|
|
48
|
+
// Session generation — every open-state change starts a new session, so a
|
|
49
|
+
// STALE in-flight submit (started in a previous session) can't auto-close
|
|
50
|
+
// the overlay the user has since closed and reopened.
|
|
51
|
+
var sessionRef = useRef(0);
|
|
48
52
|
var setOpen = useEventCallback(function (nextOpen) {
|
|
53
|
+
sessionRef.current += 1;
|
|
49
54
|
setMergedOpen(nextOpen);
|
|
50
55
|
onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(nextOpen);
|
|
51
56
|
});
|
|
52
|
-
// Deferred auto-close after submit.
|
|
53
|
-
//
|
|
57
|
+
// Deferred auto-close after submit. The fire-time session check makes a
|
|
58
|
+
// STALE timer (scheduled in a previous open/close session) a no-op;
|
|
59
|
+
// `cancel` clears any pending close and the timer also auto-cancels on
|
|
54
60
|
// unmount.
|
|
55
|
-
var _useDebouncedCallback = useDebouncedCallback(function () {
|
|
56
|
-
|
|
61
|
+
var _useDebouncedCallback = useDebouncedCallback(function (session) {
|
|
62
|
+
if (session === sessionRef.current) setOpen(false);
|
|
57
63
|
}, submitTimeout),
|
|
58
64
|
scheduleClose = _useDebouncedCallback.run,
|
|
59
65
|
cancelScheduledClose = _useDebouncedCallback.cancel;
|
|
66
|
+
// Any open-state transition — including CONTROLLED `open` prop flips that
|
|
67
|
+
// bypass setOpen — starts a new session and discards a pending close.
|
|
68
|
+
useEffect(function () {
|
|
69
|
+
sessionRef.current += 1;
|
|
70
|
+
cancelScheduledClose();
|
|
71
|
+
}, [mergedOpen, cancelScheduledClose]);
|
|
60
72
|
var handleShow = useEventCallback(function () {
|
|
61
73
|
setOpen(true);
|
|
62
74
|
});
|
|
@@ -64,21 +76,28 @@ export function useOverlayForm(options, onFinish) {
|
|
|
64
76
|
cancelScheduledClose();
|
|
65
77
|
setOpen(false);
|
|
66
78
|
});
|
|
79
|
+
// Propagate the consumer's return value — ProForm gates URL sync on it,
|
|
80
|
+
// and autoClose honors it too: an explicit `false` means the submit FAILED,
|
|
81
|
+
// so the overlay stays open instead of discarding the user's input.
|
|
67
82
|
var handleFinish = useEventCallback(function (values) {
|
|
68
83
|
return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
84
|
+
var session, result;
|
|
69
85
|
return _regeneratorRuntime.wrap(function (_context) {
|
|
70
86
|
while (1) switch (_context.prev = _context.next) {
|
|
71
87
|
case 0:
|
|
88
|
+
session = sessionRef.current;
|
|
72
89
|
_context.next = 1;
|
|
73
90
|
return onFinish === null || onFinish === void 0 ? void 0 : onFinish(values);
|
|
74
91
|
case 1:
|
|
75
|
-
|
|
92
|
+
result = _context.sent;
|
|
93
|
+
if (autoClose && result !== false && session === sessionRef.current) {
|
|
76
94
|
if (submitTimeout && submitTimeout > 0) {
|
|
77
|
-
scheduleClose();
|
|
95
|
+
scheduleClose(session);
|
|
78
96
|
} else {
|
|
79
97
|
setOpen(false);
|
|
80
98
|
}
|
|
81
99
|
}
|
|
100
|
+
return _context.abrupt("return", result);
|
|
82
101
|
case 2:
|
|
83
102
|
case "end":
|
|
84
103
|
return _context.stop();
|
|
@@ -106,4 +125,4 @@ export function useOverlayForm(options, onFinish) {
|
|
|
106
125
|
};
|
|
107
126
|
}
|
|
108
127
|
export default useOverlayForm;
|
|
109
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9sYXlvdXRzL3VzZU92ZXJsYXlGb3JtLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vbGF5b3V0cy91c2VPdmVybGF5Rm9ybS50cyJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJSZWFjdCIsInVzZUNvbnRyb2xsZWRTdGF0ZSIsInVzZURlYm91bmNlZENhbGxiYWNrIiwidXNlRXZlbnRDYWxsYmFjayIsInVzZU92ZXJsYXlGb3JtIiwib3B0aW9ucyIsIm9uRmluaXNoIiwiX3RoaXMiLCJjb250cm9sbGVkT3BlbiIsIm9wZW4iLCJvbk9wZW5DaGFuZ2UiLCJ0cmlnZ2VyIiwiX29wdGlvbnMkYXV0b0Nsb3NlIiwiYXV0b0Nsb3NlIiwic3VibWl0VGltZW91dCIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwibWVyZ2VkT3BlbiIsInNldE1lcmdlZE9wZW4iLCJzZXRPcGVuIiwibmV4dE9wZW4iLCJfdXNlRGVib3VuY2VkQ2FsbGJhY2siLCJzY2hlZHVsZUNsb3NlIiwicnVuIiwiY2FuY2VsU2NoZWR1bGVkQ2xvc2UiLCJjYW5jZWwiLCJoYW5kbGVTaG93IiwiaGFuZGxlSGlkZSIsImhhbmRsZUZpbmlzaCIsInZhbHVlcyIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJzdG9wIiwidHJpZ2dlck5vZGUiLCJjbG9uZUVsZW1lbnQiLCJvbkNsaWNrIiwiX2EiLCJvcmlnaW5hbE9u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TUFBQSxHQUFBSixPQUFBO0lBQUEsQ0FDRixFQUFBO0VBQUEsRUFBQztFQUVGO0VBQ0EsSUFBTUssV0FBVyxHQUFHM0IsT0FBTyxnQkFDdkJYLEtBQUssQ0FBQ3VDLFlBQVksQ0FBQzVCLE9BQXNELEVBQUU7SUFDekU2QixPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQSxFQUF5QjtNRDNCeEIsSUFBSUMsRUFBRTtNQzRCWmQsVUFBVSxDQUFBLENBQUU7TUFDWixJQUFNZSxlQUFlLEdBQUcsQ0FBQUQsRUFBQSxHQUFDOUIsT0FBTyxDQUFDZ0MsS0FBaUMsTUFBQSxJQUFBLElBQUFGLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFRCxPQUFPO01BQzNFLElBQUksT0FBT0UsZUFBZSxLQUFLLFVBQVUsRUFBRTtRQUN4Q0EsZUFBNkMsQ0FBQTNDLEtBQUEsU0FBQTZDLFNBQVEsQ0FBQztNQUN6RDtJQUNGO0VEMUJBLENDMkJELENBQUMsR0FDRixJQUFJO0VBRVIsT0FBTztJQUNMMUIsVUFBVSxFQUFWQSxVQUFVO0lBQ1ZvQixXQUFXLEVBQVhBLFdBQVc7SUFDWFQsWUFBWSxFQUFaQSxZQUFZO0lBQ1pELFVBQVUsRUFBVkEsVUFBVTtJQUNWRCxVQUFVLEVBQVZBO0VEM0JBLENDNEJEO0FBQ0g7QUFFQSxlQUFldkIsY0FBYyIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vbGF5b3V0cy91c2VPdmVybGF5Rm9ybS5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VDb250cm9sbGVkU3RhdGUgZnJvbSAnQDFtb25leS9ob29rcy91c2VDb250cm9sbGVkU3RhdGUnO1xuaW1wb3J0IHVzZURlYm91bmNlZENhbGxiYWNrIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlRGVib3VuY2VkQ2FsbGJhY2snO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQDFtb25leS9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmV4cG9ydCBmdW5jdGlvbiB1c2VPdmVybGF5Rm9ybShvcHRpb25zLCBvbkZpbmlzaCkge1xuICAgIGNvbnN0IHsgb3BlbjogY29udHJvbGxlZE9wZW4sIG9uT3BlbkNoYW5nZSwgdHJpZ2dlciwgYXV0b0Nsb3NlID0gdHJ1ZSwgc3VibWl0VGltZW91dCwgfSA9IG9wdGlvbnM7XG4gICAgLy8gQ29udHJvbGxlZCB3aGVuIGBjb250cm9sbGVkT3BlbmAgaXMgcGFzc2VkLCBpbnRlcm5hbCBvdGhlcndpc2Ug4oCUIGFuZCBhbHdheXNcbiAgICAvLyBmb3J3YXJkIHRoZSBjaGFuZ2UgdG8gYG9uT3BlbkNoYW5nZWAuXG4gICAgY29uc3QgW21lcmdlZE9wZW4sIHNldE1lcmdlZE9wZW5dID0gdXNlQ29udHJvbGxlZFN0YXRlKGZhbHNlLCBjb250cm9sbGVkT3Blbik7XG4gICAgY29uc3Qgc2V0T3BlbiA9IHVzZUV2ZW50Q2FsbGJhY2soKG5leHRPcGVuKSA9PiB7XG4gICAgICAgIHNldE1lcmdlZE9wZW4obmV4dE9wZW4pO1xuICAgICAgICBvbk9wZW5DaGFuZ2UgPT09IG51bGwgfHwgb25PcGVuQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbk9wZW5DaGFuZ2UobmV4dE9wZW4pO1xuICAgIH0pO1xuICAgIC8vIERlZmVycmVkIGF1dG8tY2xvc2UgYWZ0ZXIgc3VibWl0LiBgY2FuY2VsYCBjbGVhcnMgYW55IHBlbmRpbmcgY2xvc2UgKGUuZy5cbiAgICAvLyB3aGVuIHRoZSBvdmVybGF5IGlzIGhpZGRlbiBmaXJzdCk7IHRoZSB0aW1lciBpcyBhbHNvIGF1dG8tY2FuY2VsbGVkIG9uXG4gICAgLy8gdW5tb3VudC5cbiAgICBjb25zdCB7IHJ1bjogc2NoZWR1bGVDbG9zZSwgY2FuY2VsOiBjYW5jZWxTY2hlZHVsZWRDbG9zZSB9ID0gdXNlRGVib3VuY2VkQ2FsbGJhY2soKCkgPT4gc2V0T3BlbihmYWxzZSksIHN1Ym1pdFRpbWVvdXQpO1xuICAgIGNvbnN0IGhhbmRsZVNob3cgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgc2V0T3Blbih0cnVlKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVIaWRlID0gdXNlRXZlbnRDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIGNhbmNlbFNjaGVkdWxlZENsb3NlKCk7XG4gICAgICAgIHNldE9wZW4oZmFsc2UpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUZpbmlzaCA9IHVzZUV2ZW50Q2FsbGJhY2soKHZhbHVlcykgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICB5aWVsZCAob25GaW5pc2ggPT09IG51bGwgfHwgb25GaW5pc2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRmluaXNoKHZhbHVlcykpO1xuICAgICAgICBpZiAoYXV0b0Nsb3NlKSB7XG4gICAgICAgICAgICBpZiAoc3VibWl0VGltZW91dCAmJiBzdWJtaXRUaW1lb3V0ID4gMCkge1xuICAgICAgICAgICAgICAgIHNjaGVkdWxlQ2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNldE9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSkpO1xuICAgIC8vIENsb25lIHRyaWdnZXIgd2l0aCBvbkNsaWNrIGhhbmRsZXJcbiAgICBjb25zdCB0cmlnZ2VyTm9kZSA9IHRyaWdnZXJcbiAgICAgICAgPyBSZWFjdC5jbG9uZUVsZW1lbnQodHJpZ2dlciwge1xuICAgICAgICAgICAgb25DbGljazogKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgaGFuZGxlU2hvdygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsT25DbGljayA9IChfYSA9IHRyaWdnZXIucHJvcHMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vbkNsaWNrO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3JpZ2luYWxPbkNsaWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsT25DbGljayguLi5hcmdzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICA6IG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbWVyZ2VkT3BlbixcbiAgICAgICAgdHJpZ2dlck5vZGUsXG4gICAgICAgIGhhbmRsZUZpbmlzaCxcbiAgICAgICAgaGFuZGxlSGlkZSxcbiAgICAgICAgaGFuZGxlU2hvdyxcbiAgICB9O1xufVxuZXhwb3J0IGRlZmF1bHQgdXNlT3ZlcmxheUZvcm07IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
128
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9sYXlvdXRzL3VzZU92ZXJsYXlGb3JtLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vbGF5b3V0cy91c2VPdmVybGF5Rm9ybS50cyJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJSZWFjdCIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZUNvbnRyb2xsZWRTdGF0ZSIsInVzZURlYm91bmNlZENhbGxiYWNrIiwidXNlRXZlbnRDYWxsYmFjayIsInVzZU92ZXJsYXlGb3JtIiwib3B0aW9ucyIsIm9uRmluaXNoIiwiX3RoaXMiLCJjb250cm9sbGVkT3BlbiIsIm9wZW4iLCJvbk9wZW5DaGFuZ2UiLCJ0cmlnZ2VyIiwiX29wdGlvbnMkYXV0b0Nsb3NlIiwiYXV0b0Nsb3NlIiwic3VibWl0VGltZW91dCIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwibWVyZ2VkT3BlbiIsInNldE1lcmdlZE9wZW4iLCJzZXNzaW9uUmVmIiwic2V0T3BlbiIsIm5leHRPcGVuIiwiY3VycmVudCIsIl91c2VEZWJvdW5jZWRDYWxsYmFjayIsInNlc3Npb24iLCJzY2hlZHVsZUNsb3NlIiwicnVuIiwiY2FuY2VsU2NoZWR1bGVkQ2xvc2UiLCJjYW5jZWwiLCJoYW5kbGVTaG93IiwiaGFuZGxlSGlkZSIsImhhbmRsZUZpbmlzaCIsInZhbHVlcyIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJzZW50IiwiYWJydXB0Iiwic3RvcCIsInRyaWdnZXJOb2RlIiwiY2xvbmVFbGVtZW50Iiwib25DbGljayIsIl9hIiwib3JpZ2luYWxPbkNsaWNrIiwicHJvcHMiLCJhcmd1bWVudHMiXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBSUEsU0FBUyxHQUFJLElBQUksSUFBSSxJQUFJLENBQUNBLFNBQVMsSUFBSyxVQUFVQyxPQUFPLEVBQUVDLFVBQVUsRUFBRUMsQ0FBQyxFQUFFQyxTQUFTLEVBQUU7RUFDckYsU0FBU0MsS0FBS0EsQ0FBQ0MsS0FBSyxFQUFFO0lBQUUsT0FBT0EsS0FBSyxZQUFZSCxDQUFDLEdBQUdHLEtBQUssR0FBRyxJQUFJSCxDQUFDLENBQUMsVUFBVUksT0FBTyxFQUFFO01BQUVBLE9BQU8sQ0FBQ0QsS0FBSyxDQUFDO0lBQUUsQ0FBQyxDQUFDO0VBQUU7RUFDM0csT0FBTyxLQUFLSCxDQUFDLEtBQUtBLENBQUMsR0FBR0ssT0FBTyxDQUFDLEVBQUUsVUFBVUQsT0FBTyxFQUFFRSxNQUFNLEVBQUU7SUFDdkQsU0FBU0MsU0FBU0EsQ0FBQ0osS0FBSyxFQUFFO01BQUUsSUFBSTtRQUFFSyxJQUFJLENBQUNQLFNBQVMsQ0FBQ1EsSUFBSSxDQUFDTixLQUFLLENBQUMsQ0FBQztNQUFFLENBQUMsQ0FBQyxPQUFPTyxDQUFDLEVBQUU7UUFBRUosTUFBTSxDQUFDSSxDQUFDLENBQUM7TUFBRTtJQUFFO0lBQzFGLFNBQVNDLFFBQVFBLENBQUNSLEtBQUssRUFBRTtNQUFFLElBQUk7UUFBRUssSUFBSSxDQUFDUCxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUNFLEtBQUssQ0FBQyxDQUFDO01BQUUsQ0FBQyxDQUFDLE9BQU9PLENBQUMsRUFBRTtRQUFFSixNQUFNLENBQUNJLENBQUMsQ0FBQztNQUFFO0lBQUU7SUFDN0YsU0FBU0YsSUFBSUEsQ0FBQ0ksTUFBTSxFQUFFO01BQUVBLE1BQU0sQ0FBQ0MsSUFBSSxHQUFHVCxPQUFPLENBQUNRLE1BQU0sQ0FBQ1QsS0FBSyxDQUFDLEdBQUdELEtBQUssQ0FBQ1UsTUFB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S0FBQSxDQUFBLEdBQUFBLEVBQUEsQ0FBRUQsT0FBTztNQUMzRSxJQUFJLE9BQU9FLGVBQWUsS0FBSyxVQUFVLEVBQUU7UUFDeENBLGVBQTZDLENBQUFsRCxLQUFBLFNBQUFvRCxTQUFRLENBQUM7TUFDekQ7SUFDRjtFRDNCQSxDQzRCRCxDQUFDLEdBQ0YsSUFBSTtFQUVSLE9BQU87SUFDTC9CLFVBQVUsRUFBVkEsVUFBVTtJQUNWeUIsV0FBVyxFQUFYQSxXQUFXO0lBQ1hYLFlBQVksRUFBWkEsWUFBWTtJQUNaRCxVQUFVLEVBQVZBLFVBQVU7SUFDVkQsVUFBVSxFQUFWQTtFRDVCQSxDQzZCRDtBQUNIO0FBRUEsZUFBZTFCLGNBQWMiLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2xheW91dHMvdXNlT3ZlcmxheUZvcm0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VDb250cm9sbGVkU3RhdGUgZnJvbSAnQDFtb25leS9ob29rcy91c2VDb250cm9sbGVkU3RhdGUnO1xuaW1wb3J0IHVzZURlYm91bmNlZENhbGxiYWNrIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlRGVib3VuY2VkQ2FsbGJhY2snO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQDFtb25leS9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmV4cG9ydCBmdW5jdGlvbiB1c2VPdmVybGF5Rm9ybShvcHRpb25zLCBvbkZpbmlzaCkge1xuICAgIGNvbnN0IHsgb3BlbjogY29udHJvbGxlZE9wZW4sIG9uT3BlbkNoYW5nZSwgdHJpZ2dlciwgYXV0b0Nsb3NlID0gdHJ1ZSwgc3VibWl0VGltZW91dCwgfSA9IG9wdGlvbnM7XG4gICAgLy8gQ29udHJvbGxlZCB3aGVuIGBjb250cm9sbGVkT3BlbmAgaXMgcGFzc2VkLCBpbnRlcm5hbCBvdGhlcndpc2Ug4oCUIGFuZCBhbHdheXNcbiAgICAvLyBmb3J3YXJkIHRoZSBjaGFuZ2UgdG8gYG9uT3BlbkNoYW5nZWAuXG4gICAgY29uc3QgW21lcmdlZE9wZW4sIHNldE1lcmdlZE9wZW5dID0gdXNlQ29udHJvbGxlZFN0YXRlKGZhbHNlLCBjb250cm9sbGVkT3Blbik7XG4gICAgLy8gU2Vzc2lvbiBnZW5lcmF0aW9uIOKAlCBldmVyeSBvcGVuLXN0YXRlIGNoYW5nZSBzdGFydHMgYSBuZXcgc2Vzc2lvbiwgc28gYVxuICAgIC8vIFNUQUxFIGluLWZsaWdodCBzdWJtaXQgKHN0YXJ0ZWQgaW4gYSBwcmV2aW91cyBzZXNzaW9uKSBjYW4ndCBhdXRvLWNsb3NlXG4gICAgLy8gdGhlIG92ZXJsYXkgdGhlIHVzZXIgaGFzIHNpbmNlIGNsb3NlZCBhbmQgcmVvcGVuZWQuXG4gICAgY29uc3Qgc2Vzc2lvblJlZiA9IHVzZVJlZigwKTtcbiAgICBjb25zdCBzZXRPcGVuID0gdXNlRXZlbnRDYWxsYmFjaygobmV4dE9wZW4pID0+IHtcbiAgICAgICAgc2Vzc2lvblJlZi5jdXJyZW50ICs9IDE7XG4gICAgICAgIHNldE1lcmdlZE9wZW4obmV4dE9wZW4pO1xuICAgICAgICBvbk9wZW5DaGFuZ2UgPT09IG51bGwgfHwgb25PcGVuQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbk9wZW5DaGFuZ2UobmV4dE9wZW4pO1xuICAgIH0pO1xuICAgIC8vIERlZmVycmVkIGF1dG8tY2xvc2UgYWZ0ZXIgc3VibWl0LiBUaGUgZmlyZS10aW1lIHNlc3Npb24gY2hlY2sgbWFrZXMgYVxuICAgIC8vIFNUQUxFIHRpbWVyIChzY2hlZHVsZWQgaW4gYSBwcmV2aW91cyBvcGVuL2Nsb3NlIHNlc3Npb24pIGEgbm8tb3A7XG4gICAgLy8gYGNhbmNlbGAgY2xlYXJzIGFueSBwZW5kaW5nIGNsb3NlIGFuZCB0aGUgdGltZXIgYWxzbyBhdXRvLWNhbmNlbHMgb25cbiAgICAvLyB1bm1vdW50LlxuICAgIGNvbnN0IHsgcnVuOiBzY2hlZHVsZUNsb3NlLCBjYW5jZWw6IGNhbmNlbFNjaGVkdWxlZENsb3NlIH0gPSB1c2VEZWJvdW5jZWRDYWxsYmFjaygoc2Vzc2lvbikgPT4ge1xuICAgICAgICBpZiAoc2Vzc2lvbiA9PT0gc2Vzc2lvblJlZi5jdXJyZW50KVxuICAgICAgICAgICAgc2V0T3BlbihmYWxzZSk7XG4gICAgfSwgc3VibWl0VGltZW91dCk7XG4gICAgLy8gQW55IG9wZW4tc3RhdGUgdHJhbnNpdGlvbiDigJQgaW5jbHVkaW5nIENPTlRST0xMRUQgYG9wZW5gIHByb3AgZmxpcHMgdGhhdFxuICAgIC8vIGJ5cGFzcyBzZXRPcGVuIOKAlCBzdGFydHMgYSBuZXcgc2Vzc2lvbiBhbmQgZGlzY2FyZHMgYSBwZW5kaW5nIGNsb3NlLlxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHNlc3Npb25SZWYuY3VycmVudCArPSAxO1xuICAgICAgICBjYW5jZWxTY2hlZHVsZWRDbG9zZSgpO1xuICAgIH0sIFttZXJnZWRPcGVuLCBjYW5jZWxTY2hlZHVsZWRDbG9zZV0pO1xuICAgIGNvbnN0IGhhbmRsZVNob3cgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgc2V0T3Blbih0cnVlKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVIaWRlID0gdXNlRXZlbnRDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIGNhbmNlbFNjaGVkdWxlZENsb3NlKCk7XG4gICAgICAgIHNldE9wZW4oZmFsc2UpO1xuICAgIH0pO1xuICAgIC8vIFByb3BhZ2F0ZSB0aGUgY29uc3VtZXIncyByZXR1cm4gdmFsdWUg4oCUIFByb0Zvcm0gZ2F0ZXMgVVJMIHN5bmMgb24gaXQsXG4gICAgLy8gYW5kIGF1dG9DbG9zZSBob25vcnMgaXQgdG9vOiBhbiBleHBsaWNpdCBgZmFsc2VgIG1lYW5zIHRoZSBzdWJtaXQgRkFJTEVELFxuICAgIC8vIHNvIHRoZSBvdmVybGF5IHN0YXlzIG9wZW4gaW5zdGVhZCBvZiBkaXNjYXJkaW5nIHRoZSB1c2VyJ3MgaW5wdXQuXG4gICAgY29uc3QgaGFuZGxlRmluaXNoID0gdXNlRXZlbnRDYWxsYmFjaygodmFsdWVzKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHNlc3Npb24gPSBzZXNzaW9uUmVmLmN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHlpZWxkIChvbkZpbmlzaCA9PT0gbnVsbCB8fCBvbkZpbmlzaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25GaW5pc2godmFsdWVzKSk7XG4gICAgICAgIGlmIChhdXRvQ2xvc2UgJiYgcmVzdWx0ICE9PSBmYWxzZSAmJiBzZXNzaW9uID09PSBzZXNzaW9uUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGlmIChzdWJtaXRUaW1lb3V0ICYmIHN1Ym1pdFRpbWVvdXQgPiAwKSB7XG4gICAgICAgICAgICAgICAgc2NoZWR1bGVDbG9zZShzZXNzaW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNldE9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSkpO1xuICAgIC8vIENsb25lIHRyaWdnZXIgd2l0aCBvbkNsaWNrIGhhbmRsZXJcbiAgICBjb25zdCB0cmlnZ2VyTm9kZSA9IHRyaWdnZXJcbiAgICAgICAgPyBSZWFjdC5jbG9uZUVsZW1lbnQodHJpZ2dlciwge1xuICAgICAgICAgICAgb25DbGljazogKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgaGFuZGxlU2hvdygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsT25DbGljayA9IChfYSA9IHRyaWdnZXIucHJvcHMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vbkNsaWNrO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3JpZ2luYWxPbkNsaWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsT25DbGljayguLi5hcmdzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICA6IG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbWVyZ2VkT3BlbixcbiAgICAgICAgdHJpZ2dlck5vZGUsXG4gICAgICAgIGhhbmRsZUZpbmlzaCxcbiAgICAgICAgaGFuZGxlSGlkZSxcbiAgICAgICAgaGFuZGxlU2hvdyxcbiAgICB9O1xufVxuZXhwb3J0IGRlZmF1bHQgdXNlT3ZlcmxheUZvcm07IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
@@ -25,14 +25,8 @@
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
.om-component-ui-form-item {
|
|
28
|
-
margin-bottom: var(--om-spacing-300, 12px);
|
|
29
|
-
}
|
|
30
|
-
.om-component-ui-form-item-large {
|
|
31
28
|
margin-bottom: var(--om-spacing-600, 24px);
|
|
32
29
|
}
|
|
33
|
-
.om-component-ui-form-item-small {
|
|
34
|
-
margin-bottom: var(--om-spacing-200, 8px);
|
|
35
|
-
}
|
|
36
30
|
|
|
37
31
|
.om-component-ui-form-item-label-wrapper-vertical {
|
|
38
32
|
margin-bottom: var(--om-spacing-200, 8px);
|
|
@@ -72,7 +66,6 @@
|
|
|
72
66
|
display: flex;
|
|
73
67
|
gap: var(--om-spacing-200, 8px);
|
|
74
68
|
align-items: center;
|
|
75
|
-
padding-top: var(--om-spacing-300, 12px);
|
|
76
69
|
}
|
|
77
70
|
|
|
78
71
|
.om-component-ui-proform-list {
|