@1money/component-ui 0.0.71 → 0.0.74
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/ProForm/ProForm.d.ts +10 -2
- package/es/components/ProForm/ProForm.js +241 -55
- package/es/components/ProForm/ProFormDependency.d.ts +11 -2
- package/es/components/ProForm/ProFormDependency.js +29 -133
- package/es/components/ProForm/ProFormItem.js +146 -52
- package/es/components/ProForm/ProFormList.js +114 -62
- package/es/components/ProForm/SchemaForm.d.ts +7 -0
- package/es/components/ProForm/SchemaForm.js +103 -0
- package/es/components/ProForm/Submitter.js +26 -5
- package/es/components/ProForm/context.d.ts +30 -3
- package/es/components/ProForm/context.js +69 -10
- package/es/components/ProForm/core/constants.d.ts +12 -3
- package/es/components/ProForm/core/constants.js +18 -7
- 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 +336 -212
- package/es/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
- package/es/components/ProForm/core/hooks/useFormCore.js +151 -93
- package/es/components/ProForm/core/interface.d.ts +33 -12
- package/es/components/ProForm/core/runRules.d.ts +20 -8
- package/es/components/ProForm/core/runRules.js +105 -50
- package/es/components/ProForm/core/useFormItem.d.ts +10 -1
- package/es/components/ProForm/core/useFormItem.js +141 -56
- package/es/components/ProForm/fields/ProFormDatePicker.js +4 -1
- package/es/components/ProForm/fields/ProFormFieldSet.js +20 -7
- package/es/components/ProForm/fields/createProFormField.js +61 -32
- 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 +12 -5
- package/es/components/ProForm/index.js +7 -2
- package/es/components/ProForm/interface.d.ts +185 -28
- package/es/components/ProForm/layouts/DialogForm.d.ts +5 -1
- package/es/components/ProForm/layouts/DialogForm.js +18 -7
- package/es/components/ProForm/layouts/DrawerForm.d.ts +5 -1
- package/es/components/ProForm/layouts/DrawerForm.js +17 -7
- package/es/components/ProForm/layouts/QueryFilter.d.ts +5 -2
- package/es/components/ProForm/layouts/QueryFilter.js +47 -71
- 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 +4 -4
- package/es/components/ProForm/utils.d.ts +12 -1
- package/es/components/ProForm/utils.js +101 -28
- package/es/components/ProTable/ProTable.js +3 -3
- package/es/components/Tooltip/style/Tooltip.css +1 -0
- package/es/index.css +1 -1
- package/es/index.d.ts +2 -2
- package/es/index.js +2 -2
- package/lib/components/ProForm/ProForm.d.ts +10 -2
- package/lib/components/ProForm/ProForm.js +239 -53
- package/lib/components/ProForm/ProFormDependency.d.ts +11 -2
- package/lib/components/ProForm/ProFormDependency.js +30 -135
- package/lib/components/ProForm/ProFormItem.js +143 -48
- package/lib/components/ProForm/ProFormList.js +112 -60
- package/lib/components/ProForm/SchemaForm.d.ts +7 -0
- package/lib/components/ProForm/SchemaForm.js +110 -0
- package/lib/components/ProForm/Submitter.js +26 -5
- package/lib/components/ProForm/context.d.ts +30 -3
- package/lib/components/ProForm/context.js +69 -10
- package/lib/components/ProForm/core/constants.d.ts +12 -3
- package/lib/components/ProForm/core/constants.js +19 -8
- 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 +336 -212
- package/lib/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
- package/lib/components/ProForm/core/hooks/useFormCore.js +150 -92
- package/lib/components/ProForm/core/interface.d.ts +33 -12
- package/lib/components/ProForm/core/runRules.d.ts +20 -8
- package/lib/components/ProForm/core/runRules.js +106 -50
- package/lib/components/ProForm/core/useFormItem.d.ts +10 -1
- package/lib/components/ProForm/core/useFormItem.js +138 -53
- package/lib/components/ProForm/fields/ProFormDatePicker.js +4 -1
- package/lib/components/ProForm/fields/ProFormFieldSet.js +19 -6
- package/lib/components/ProForm/fields/createProFormField.js +61 -32
- 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 +12 -5
- package/lib/components/ProForm/index.js +16 -1
- package/lib/components/ProForm/interface.d.ts +185 -28
- package/lib/components/ProForm/layouts/DialogForm.d.ts +5 -1
- package/lib/components/ProForm/layouts/DialogForm.js +18 -7
- package/lib/components/ProForm/layouts/DrawerForm.d.ts +5 -1
- package/lib/components/ProForm/layouts/DrawerForm.js +17 -7
- package/lib/components/ProForm/layouts/QueryFilter.d.ts +5 -2
- package/lib/components/ProForm/layouts/QueryFilter.js +46 -70
- 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 +4 -4
- package/lib/components/ProForm/utils.d.ts +12 -1
- package/lib/components/ProForm/utils.js +104 -28
- package/lib/components/ProTable/ProTable.js +3 -3
- package/lib/components/Tooltip/style/Tooltip.css +1 -0
- package/lib/index.css +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +13 -1
- package/package.json +1 -1
- package/scripts/mcp-server/examples.generated.json +90 -0
- package/scripts/mcp-server/index.generated.json +1866 -212
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
2
2
|
import type { ProFormDependencyProps } from './interface';
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Generic-aware component type — `memo()` erases generics, so the export is
|
|
5
|
+
* re-asserted to keep `<ProForm.Dependency<MyValues> name={['a']}>` fully
|
|
6
|
+
* typed (autocompleted `name`, typed `form` in children).
|
|
7
|
+
*/
|
|
8
|
+
export interface ProFormDependencyComponent {
|
|
9
|
+
<Values = Record<string, unknown>>(props: ProFormDependencyProps<Values>): ReactElement | null;
|
|
10
|
+
displayName?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare const ProFormDependency: ProFormDependencyComponent;
|
|
4
13
|
export default ProFormDependency;
|
|
@@ -1,53 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
3
|
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports["default"] = exports.ProFormDependency = void 0;
|
|
9
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
8
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
|
-
var
|
|
10
|
+
var _context = require("./context");
|
|
11
|
+
var _formStore = require("./core/formStore");
|
|
13
12
|
var _utils = require("./utils");
|
|
14
13
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
15
14
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
16
|
-
var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
|
|
17
|
-
function adopt(value) {
|
|
18
|
-
return value instanceof P ? value : new P(function (resolve) {
|
|
19
|
-
resolve(value);
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
23
|
-
function fulfilled(value) {
|
|
24
|
-
try {
|
|
25
|
-
step(generator.next(value));
|
|
26
|
-
} catch (e) {
|
|
27
|
-
reject(e);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
function rejected(value) {
|
|
31
|
-
try {
|
|
32
|
-
step(generator["throw"](value));
|
|
33
|
-
} catch (e) {
|
|
34
|
-
reject(e);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
function step(result) {
|
|
38
|
-
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
39
|
-
}
|
|
40
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
41
|
-
});
|
|
42
|
-
};
|
|
43
15
|
var ProFormDependencyBase = function ProFormDependencyBase(_ref) {
|
|
44
16
|
var name = _ref.name,
|
|
45
17
|
ignoreFormListField = _ref.ignoreFormListField,
|
|
46
18
|
children = _ref.children;
|
|
47
|
-
var
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
var formListCtx = (0,
|
|
19
|
+
var _useProFormStable = (0, _context.useProFormStable)(),
|
|
20
|
+
formInstance = _useProFormStable.formInstance;
|
|
21
|
+
var store = (0, _context.useProFormStore)();
|
|
22
|
+
var formListCtx = (0, _context.useFormListContext)();
|
|
51
23
|
// Resolve the actual paths to watch, considering FormList scope
|
|
52
24
|
var resolvedPaths = (0, _react.useMemo)(function () {
|
|
53
25
|
var shouldPrefix = !ignoreFormListField && formListCtx.listName !== undefined;
|
|
@@ -55,116 +27,39 @@ var ProFormDependencyBase = function ProFormDependencyBase(_ref) {
|
|
|
55
27
|
return shouldPrefix ? "".concat(formListCtx.listName, ".").concat(fieldName) : fieldName;
|
|
56
28
|
});
|
|
57
29
|
}, [name, ignoreFormListField, formListCtx.listName]);
|
|
30
|
+
// Subscribe ONLY to the watched paths: a commit that leaves every watched
|
|
31
|
+
// value Object.is-equal short-circuits, so children are NOT re-invoked when
|
|
32
|
+
// unrelated fields change. Reactivity tracks the RAW values; the payload
|
|
33
|
+
// below is derived from the FORMATTED values.
|
|
34
|
+
var watchedArray = (0, _formStore.useStoreSelector)(store, function (state) {
|
|
35
|
+
return resolvedPaths.map(function (path) {
|
|
36
|
+
return path.includes('.') ? (0, _utils.getNestedValue)(state.values, path) : state.values[path];
|
|
37
|
+
});
|
|
38
|
+
}, _formStore.shallowEqualArrays);
|
|
58
39
|
var watchedValues = (0, _react.useMemo)(function () {
|
|
40
|
+
// Children receive FORMATTED values (dateFormatter + transform applied),
|
|
41
|
+
// matching what onFinish would submit for those fields. A transform that
|
|
42
|
+
// RENAMES its key deletes the original path from the formatted object —
|
|
43
|
+
// fall back to the raw value so the watcher still sees the field.
|
|
44
|
+
var formatted = formInstance.getFieldFormatValueObject();
|
|
59
45
|
var result = {};
|
|
60
46
|
for (var i = 0; i < name.length; i++) {
|
|
61
|
-
var originalName = name[i];
|
|
62
|
-
var resolvedPath = resolvedPaths[i];
|
|
63
47
|
// Use the original name as key so children get clean keys
|
|
64
|
-
|
|
48
|
+
var path = resolvedPaths[i];
|
|
49
|
+
var value = watchedArray[i];
|
|
50
|
+
var formattedValue = path.includes('.') ? (0, _utils.getNestedValue)(formatted, path) : path in formatted ? formatted[path] : undefined;
|
|
51
|
+
if (formattedValue !== undefined) {
|
|
52
|
+
value = formattedValue;
|
|
53
|
+
}
|
|
54
|
+
result[name[i]] = value;
|
|
65
55
|
}
|
|
66
56
|
return result;
|
|
67
|
-
}, [name, resolvedPaths,
|
|
68
|
-
// Fallback form instance for standalone usage (outside ProForm)
|
|
69
|
-
var fallbackInstance = (0, _react.useMemo)(function () {
|
|
70
|
-
return {
|
|
71
|
-
submit: function submit() {
|
|
72
|
-
return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
73
|
-
return _regenerator["default"].wrap(function (_context) {
|
|
74
|
-
while (1) switch (_context.prev = _context.next) {
|
|
75
|
-
case 0:
|
|
76
|
-
return _context.abrupt("return", undefined);
|
|
77
|
-
case 1:
|
|
78
|
-
case "end":
|
|
79
|
-
return _context.stop();
|
|
80
|
-
}
|
|
81
|
-
}, _callee);
|
|
82
|
-
}));
|
|
83
|
-
},
|
|
84
|
-
resetFields: function resetFields() {},
|
|
85
|
-
getFieldValue: function getFieldValue(n) {
|
|
86
|
-
return n.includes('.') ? (0, _utils.getNestedValue)(values, n) : values[n];
|
|
87
|
-
},
|
|
88
|
-
getFieldsValue: function getFieldsValue() {
|
|
89
|
-
return values;
|
|
90
|
-
},
|
|
91
|
-
setFieldsValue: function setFieldsValue() {},
|
|
92
|
-
setFieldValue: function setFieldValue() {},
|
|
93
|
-
validateFields: function validateFields() {
|
|
94
|
-
return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
95
|
-
return _regenerator["default"].wrap(function (_context2) {
|
|
96
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
97
|
-
case 0:
|
|
98
|
-
return _context2.abrupt("return", values);
|
|
99
|
-
case 1:
|
|
100
|
-
case "end":
|
|
101
|
-
return _context2.stop();
|
|
102
|
-
}
|
|
103
|
-
}, _callee2);
|
|
104
|
-
}));
|
|
105
|
-
},
|
|
106
|
-
getFieldError: function getFieldError() {
|
|
107
|
-
return undefined;
|
|
108
|
-
},
|
|
109
|
-
getFieldsError: function getFieldsError() {
|
|
110
|
-
return {};
|
|
111
|
-
},
|
|
112
|
-
isFieldTouched: function isFieldTouched() {
|
|
113
|
-
return false;
|
|
114
|
-
},
|
|
115
|
-
isFieldsTouched: function isFieldsTouched() {
|
|
116
|
-
return false;
|
|
117
|
-
},
|
|
118
|
-
isFieldValidating: function isFieldValidating() {
|
|
119
|
-
return false;
|
|
120
|
-
},
|
|
121
|
-
setFieldError: function setFieldError() {},
|
|
122
|
-
setFieldsError: function setFieldsError() {},
|
|
123
|
-
setFieldTouched: function setFieldTouched() {},
|
|
124
|
-
setFieldsTouched: function setFieldsTouched() {},
|
|
125
|
-
defineField: function defineField() {
|
|
126
|
-
return function () {
|
|
127
|
-
return null;
|
|
128
|
-
};
|
|
129
|
-
},
|
|
130
|
-
registerField: function registerField() {},
|
|
131
|
-
unregisterField: function unregisterField() {},
|
|
132
|
-
getFieldsFormatValue: function getFieldsFormatValue() {
|
|
133
|
-
return values;
|
|
134
|
-
},
|
|
135
|
-
validateFieldsReturnFormatValue: function validateFieldsReturnFormatValue() {
|
|
136
|
-
return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
137
|
-
return _regenerator["default"].wrap(function (_context3) {
|
|
138
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
139
|
-
case 0:
|
|
140
|
-
return _context3.abrupt("return", {
|
|
141
|
-
success: false
|
|
142
|
-
});
|
|
143
|
-
case 1:
|
|
144
|
-
case "end":
|
|
145
|
-
return _context3.stop();
|
|
146
|
-
}
|
|
147
|
-
}, _callee3);
|
|
148
|
-
}));
|
|
149
|
-
},
|
|
150
|
-
submitForm: function submitForm() {
|
|
151
|
-
return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
152
|
-
return _regenerator["default"].wrap(function (_context4) {
|
|
153
|
-
while (1) switch (_context4.prev = _context4.next) {
|
|
154
|
-
case 0:
|
|
155
|
-
case "end":
|
|
156
|
-
return _context4.stop();
|
|
157
|
-
}
|
|
158
|
-
}, _callee4);
|
|
159
|
-
}));
|
|
160
|
-
}
|
|
161
|
-
};
|
|
162
|
-
}, [values]);
|
|
57
|
+
}, [name, resolvedPaths, watchedArray, formInstance]);
|
|
163
58
|
return (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
164
|
-
children: children(watchedValues, formInstance
|
|
59
|
+
children: children(watchedValues, formInstance)
|
|
165
60
|
});
|
|
166
61
|
};
|
|
167
62
|
ProFormDependencyBase.displayName = 'ProFormDependency';
|
|
168
63
|
var ProFormDependency = exports.ProFormDependency = /*#__PURE__*/(0, _react.memo)(ProFormDependencyBase);
|
|
169
64
|
var _default = exports["default"] = ProFormDependency;
|
|
170
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfY29udGV4dDUiLCJfdXRpbHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsInJlamVjdGVkIiwicmVzdWx0IiwiZG9uZSIsInRoZW4iLCJhcHBseSIsIlByb0Zvcm1EZXBlbmRlbmN5QmFzZSIsIl9yZWYiLCJuYW1lIiwiaWdub3JlRm9ybUxpc3RGaWVsZCIsImNoaWxkcmVuIiwiX3VzZVByb0Zvcm1Db250ZXh0IiwidXNlUHJvRm9ybUNvbnRleHQiLCJ2YWx1ZXMiLCJmb3JtSW5zdGFuY2UiLCJmb3JtTGlzdEN0eCIsInVzZUZvcm1MaXN0Q29udGV4dCIsInJlc29sdmVkUGF0aHMiLCJ1c2VNZW1vIiwic2hvdWxkUHJlZml4IiwibGlzdE5hbWUiLCJ1bmRlZmluZWQiLCJtYXAiLCJmaWVsZE5hbWUiLCJjb25jYXQiLCJ3YXRjaGVkVmFsdWVzIiwibGVuZ3RoIiwib3JpZ2luYWxOYW1lIiwicmVzb2x2ZWRQYXRoIiwiaW5jbHVkZXMiLCJnZXROZXN0ZWRWYWx1ZSIsImZhbGxiYWNrSW5zdGFuY2UiLCJzdWJtaXQiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJhYnJ1cHQiLCJzdG9wIiwicmVzZXRGaWVsZHMiLCJnZXRGaWVsZFZhbHVlIiwiZ2V0RmllbGRzVmFsdWUiLCJzZXRGaWVsZHNWYWx1ZSIsInNldEZpZWxkVmFsdWUiLCJ2YWxpZGF0ZUZpZWxkcyIsIl9jYWxsZWUyIiwiX2NvbnRleHQyIiwiZ2V0RmllbGRFcnJvciIsImdldEZpZWxkc0Vycm9yIiwiaXNGaWVsZFRvdWNoZWQiLCJpc0ZpZWxkc1RvdWNoZWQiLCJpc0ZpZWxkVmFsaWRhdGluZyIsInNldEZpZWxkRXJyb3IiLCJzZXRGaWVsZHNFcnJvciIsInNldEZpZWxkVG91Y2hlZCIsInNldEZpZWxkc1RvdWNoZWQiLCJkZWZpbmVGaWVsZCIsInJlZ2lzdGVyRmllbGQiLCJ1bnJlZ2lzdGVyRmllbGQiLCJnZXRGaWVsZHNGb3JtYXRWYWx1ZSIsInZhbGlkYXRlRmllbGRzUmV0dXJuRm9ybWF0VmFsdWUiLCJfY2FsbGVlMyIsIl9jb250ZXh0MyIsInN1Y2Nlc3MiLCJzdWJtaXRGb3JtIiwiX2NhbGxlZTQiLCJfY29udGV4dDQiLCJfanN4IiwiX0ZyYWdtZW50IiwiZGlzcGxheU5hbWUiLCJQcm9Gb3JtRGVwZW5kZW5jeSIsImV4cG9ydHMiLCJtZW1vIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVNBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ1RBLElBQUFDLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFHLFNBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQUF5QyxTQUFBSyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMs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Q0FBQTVCLElBQUE7WUFBQTtVQUFBLEdBQUEyQixRQUFBO1FBQUEsQ0FBRyxFQUFBO01BQUE7SURMNUIsQ0NNQztFQUFBLENBQUMsRUFDRixDQUFDdEQsTUFBTSxDQUFDLENBQ1Q7RUFFRCxPQUFPLElBQUF3RCxlQUFBLEVBQUFDLG9CQUFBLEVBQUE7SUFBQTVELFFBQUEsRUFBR0EsUUFBUSxDQUFDZSxhQUFhLEVBQUVYLFlBQVksS0FBQSxJQUFBLElBQVpBLFlBQVksS0FBQSxLQUFBLENBQUEsR0FBWkEsWUFBWSxHQUFJaUIsZ0JBQWdCO0VBQUMsQ0FBQSxDQUFJO0FBQ3pFLENBQUM7QUFFRHpCLHFCQUFxQixDQUFDaUUsV0FBVyxHQUFHLG1CQUFtQjtBQUVoRCxJQUFNQyxpQkFBaUIsR0FBQUMsT0FBQSxDQUFBRCxpQkFBQSxnQkFBRyxJQUFBRSxXQUFJLEVBQUNwRSxxQkFBcUIsQ0FBQztBQUFDLElBQUFxRSxRQUFBLEdBQUFGLE9BQUEsY0FFOUNELGlCQUFpQiIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vUHJvRm9ybURlcGVuZGVuY3kuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCB7IEZyYWdtZW50IGFzIF9GcmFnbWVudCwganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBSZWFjdCwgeyBtZW1vLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlUHJvRm9ybUNvbnRleHQsIHVzZUZvcm1MaXN0Q29udGV4dCB9IGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQgeyBnZXROZXN0ZWRWYWx1ZSB9IGZyb20gJy4vdXRpbHMnO1xuY29uc3QgUHJvRm9ybURlcGVuZGVuY3lCYXNlID0gKHsgbmFtZSwgaWdub3JlRm9ybUxpc3RGaWVsZCwgY2hpbGRyZW4sIH0pID0+IHtcbiAgICBjb25zdCB7IHZhbHVlcywgZm9ybUluc3RhbmNlIH0gPSB1c2VQcm9Gb3JtQ29udGV4dCgpO1xuICAgIGNvbnN0IGZvcm1MaXN0Q3R4ID0gdXNlRm9ybUxpc3RDb250ZXh0KCk7XG4gICAgLy8gUmVzb2x2ZSB0aGUgYWN0dWFsIHBhdGhzIHRvIHdhdGNoLCBjb25zaWRlcmluZyBGb3JtTGlzdCBzY29wZVxuICAgIGNvbnN0IHJlc29sdmVkUGF0aHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgY29uc3Qgc2hvdWxkUHJlZml4ID0gIWlnbm9yZUZvcm1MaXN0RmllbGQgJiYgZm9ybUxpc3RDdHgubGlzdE5hbWUgIT09IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIG5hbWUubWFwKChmaWVsZE5hbWUpID0+IHNob3VsZFByZWZpeCA/IGAke2Zvcm1MaXN0Q3R4Lmxpc3ROYW1lfS4ke2ZpZWxkTmFtZX1gIDogZmllbGROYW1lKTtcbiAgICB9LCBbbmFtZSwgaWdub3JlRm9ybUxpc3RGaWVsZCwgZm9ybUxpc3RDdHgubGlzdE5hbWVdKTtcbiAgICBjb25zdCB3YXRjaGVkVmFsdWVzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsTmFtZSA9IG5hbWVbaV07XG4gICAgICAgICAgICBjb25zdCByZXNvbHZlZFBhdGggPSByZXNvbHZlZFBhdGhzW2ldO1xuICAgICAgICAgICAgLy8gVXNlIHRoZSBvcmlnaW5hbCBuYW1lIGFzIGtleSBzbyBjaGlsZHJlbiBnZXQgY2xlYW4ga2V5c1xuICAgICAgICAgICAgcmVzdWx0W29yaWdpbmFsTmFtZV0gPSByZXNvbHZlZFBhdGguaW5jbHVkZXMoJy4nKVxuICAgICAgICAgICAgICAgID8gZ2V0TmVzdGVkVmFsdWUodmFsdWVzLCByZXNvbHZlZFBhdGgpXG4gICAgICAgICAgICAgICAgOiB2YWx1ZXNbcmVzb2x2ZWRQYXRoXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sIFtuYW1lLCByZXNvbHZlZFBhdGhzLCB2YWx1ZXNdKTtcbiAgICAvLyBGYWxsYmFjayBmb3JtIGluc3RhbmNlIGZvciBzdGFuZGFsb25lIHVzYWdlIChvdXRzaWRlIFByb0Zvcm0pXG4gICAgY29uc3QgZmFsbGJhY2tJbnN0YW5jZSA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICAgICAgc3VibWl0OiAoKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSksXG4gICAgICAgIHJlc2V0RmllbGRzOiAoKSA9PiB7IH0sXG4gICAgICAgIGdldEZpZWxkVmFsdWU6IChuKSA9PiBuLmluY2x1ZGVzKCcuJykgPyBnZXROZXN0ZWRWYWx1ZSh2YWx1ZXMsIG4pIDogdmFsdWVzW25dLFxuICAgICAgICBnZXRGaWVsZHNWYWx1ZTogKCkgPT4gdmFsdWVzLFxuICAgICAgICBzZXRGaWVsZHNWYWx1ZTogKCkgPT4geyB9LFxuICAgICAgICBzZXRGaWVsZFZhbHVlOiAoKSA9PiB7IH0sXG4gICAgICAgIHZhbGlkYXRlRmllbGRzOiAoKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHsgcmV0dXJuIHZhbHVlczsgfSksXG4gICAgICAgIGdldEZpZWxkRXJyb3I6ICgpID0+IHVuZGVmaW5lZCxcbiAgICAgICAgZ2V0RmllbGRzRXJyb3I6ICgpID0+ICh7fSksXG4gICAgICAgIGlzRmllbGRUb3VjaGVkOiAoKSA9PiBmYWxzZSxcbiAgICAgICAgaXNGaWVsZHNUb3VjaGVkOiAoKSA9PiBmYWxzZSxcbiAgICAgICAgaXNGaWVsZFZhbGlkYXRpbmc6ICgpID0+IGZhbHNlLFxuICAgICAgICBzZXRGaWVsZEVycm9yOiAoKSA9PiB7IH0sXG4gICAgICAgIHNldEZpZWxkc0Vycm9yOiAoKSA9PiB7IH0sXG4gICAgICAgIHNldEZpZWxkVG91Y2hlZDogKCkgPT4geyB9LFxuICAgICAgICBzZXRGaWVsZHNUb3VjaGVkOiAoKSA9PiB7IH0sXG4gICAgICAgIGRlZmluZUZpZWxkOiAoKSA9PiAoKCkgPT4gbnVsbCksXG4gICAgICAgIHJlZ2lzdGVyRmllbGQ6ICgpID0+IHsgfSxcbiAgICAgICAgdW5yZWdpc3RlckZpZWxkOiAoKSA9PiB7IH0sXG4gICAgICAgIGdldEZpZWxkc0Zvcm1hdFZhbHVlOiAoKSA9PiB2YWx1ZXMsXG4gICAgICAgIHZhbGlkYXRlRmllbGRzUmV0dXJuRm9ybWF0VmFsdWU6ICgpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgeyByZXR1cm4gKHsgc3VjY2VzczogZmFsc2UgfSk7IH0pLFxuICAgICAgICBzdWJtaXRGb3JtOiAoKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHsgfSksXG4gICAgfSksIFt2YWx1ZXNdKTtcbiAgICByZXR1cm4gX2pzeChfRnJhZ21lbnQsIHsgY2hpbGRyZW46IGNoaWxkcmVuKHdhdGNoZWRWYWx1ZXMsIGZvcm1JbnN0YW5jZSAhPT0gbnVsbCAmJiBmb3JtSW5zdGFuY2UgIT09IHZvaWQgMCA/IGZvcm1JbnN0YW5jZSA6IGZhbGxiYWNrSW5zdGFuY2UpIH0pO1xufTtcblByb0Zvcm1EZXBlbmRlbmN5QmFzZS5kaXNwbGF5TmFtZSA9ICdQcm9Gb3JtRGVwZW5kZW5jeSc7XG5leHBvcnQgY29uc3QgUHJvRm9ybURlcGVuZGVuY3kgPSBtZW1vKFByb0Zvcm1EZXBlbmRlbmN5QmFzZSk7XG5leHBvcnQgZGVmYXVsdCBQcm9Gb3JtRGVwZW5kZW5jeTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
65
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfY29udGV4dCIsIl9mb3JtU3RvcmUiLCJfdXRpbHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJQcm9Gb3JtRGVwZW5kZW5jeUJhc2UiLCJfcmVmIiwibmFtZSIsImlnbm9yZUZvcm1MaXN0RmllbGQiLCJjaGlsZHJlbiIsIl91c2VQcm9Gb3JtU3RhYmxlIiwidXNlUHJvRm9ybVN0YWJsZSIsImZvcm1JbnN0YW5jZSIsInN0b3JlIiwidXNlUHJvRm9ybVN0b3JlIiwiZm9ybUxpc3RDdHgiLCJ1c2VGb3JtTGlzdENvbnRleHQiLCJyZXNvbHZlZFBhdGhzIiwidXNlTWVtbyIsInNob3VsZFByZWZpeCIsImxpc3ROYW1lIiwidW5kZWZpbmVkIiwibWFwIiwiZmllbGROYW1lIiwiY29uY2F0Iiwid2F0Y2hlZEFycmF5IiwidXNlU3RvcmVTZWxlY3RvciIsInN0YXRlIiwicGF0aCIsImluY2x1ZGVzIiwiZ2V0TmVzdGVkVmFsdWUiLCJ2YWx1ZXMiLCJzaGFsbG93RXF1YWxBcnJheXMiLCJ3YXRjaGVkVmFsdWVzIiwiZm9ybWF0dGVkIiwiZ2V0RmllbGRGb3JtYXRWYWx1ZU9iamVjdCIsInJlc3VsdCIsImxlbmd0aCIsInZhbHVlIiwiZm9ybWF0dGVkVmFsdWUiLCJfanN4IiwiX0ZyYWdtZW50IiwiZGlzcGxheU5hbWUiLCJQcm9Gb3JtRGVwZW5kZW5jeSIsImV4cG9ydHMiLCJtZW1vIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7QUNBQSxJQUFBQyxNQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBRyxRQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxVQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxNQUFBLEdBQUFMLE9BQUE7QUFBeUMsU0FBQU0seUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFMLHdCQUFBSyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEsT0FBQUMsQ0FBQSxJQUFBQSxDQUFBLENBQUFHLEdBQUEsQ0FBQU4sQ0FBQSxVQUFBRyxDQUFBLENBQUFJLEdBQUEsQ0FBQVAsQ0FBQSxPQUFBUSxDQUFBLEtBQUFDLFNBQUEsVUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLGNBQUEsSUFBQUQsTUFBQSxDQUFBRSx3QkFBQSxXQUFBQyxDQUFBLElBQUFkLENBQUEsb0JBQUFjLENBQUEsT0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFoQixDQUFBLEVBQUFjLENBQUEsU0FBQUcsQ0FBQSxHQUFBUCxDQUFBLEdBQUFDLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWIsQ0FBQSxFQUFBYyxDQUFBLFVBQUFHLENBQUEs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R21DLEtBQUs7SUFDekI7SUFDQSxPQUFPRixNQUFNO0VBQ2YsQ0FBQyxFQUFFLENBQUM3QixJQUFJLEVBQUVVLGFBQWEsRUFBRVEsWUFBWSxFQUFFYixZQUFZLENBQUMsQ0FBQztFQUVyRCxPQUFPLElBQUE0QixlQUFBLEVBQUFDLG9CQUFBLEVBQUE7SUFBQWhDLFFBQUEsRUFBR0EsUUFBUSxDQUFDd0IsYUFBYSxFQUFFckIsWUFBWTtFQUFDLENBQUEsQ0FBSTtBQUNyRCxDQUFDO0FBRURQLHFCQUFxQixDQUFDcUMsV0FBVyxHQUFHLG1CQUFtQjtBQWNoRCxJQUFNQyxpQkFBaUIsR0FBQUMsT0FBQSxDQUFBRCxpQkFBQSxnQkFBRyxJQUFBRSxXQUFJLEVBQ25DeEMscUJBQXFCLENBQ21CO0FBQUMsSUFBQXlDLFFBQUEsR0FBQUYsT0FBQSxjQUU1QkQsaUJBQWlCIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZyYWdtZW50IGFzIF9GcmFnbWVudCwganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBSZWFjdCwgeyBtZW1vLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlUHJvRm9ybVN0YWJsZSwgdXNlUHJvRm9ybVN0b3JlLCB1c2VGb3JtTGlzdENvbnRleHQgfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHsgdXNlU3RvcmVTZWxlY3Rvciwgc2hhbGxvd0VxdWFsQXJyYXlzIH0gZnJvbSAnLi9jb3JlL2Zvcm1TdG9yZSc7XG5pbXBvcnQgeyBnZXROZXN0ZWRWYWx1ZSB9IGZyb20gJy4vdXRpbHMnO1xuY29uc3QgUHJvRm9ybURlcGVuZGVuY3lCYXNlID0gKHsgbmFtZSwgaWdub3JlRm9ybUxpc3RGaWVsZCwgY2hpbGRyZW4sIH0pID0+IHtcbiAgICBjb25zdCB7IGZvcm1JbnN0YW5jZSB9ID0gdXNlUHJvRm9ybVN0YWJsZSgpO1xuICAgIGNvbnN0IHN0b3JlID0gdXNlUHJvRm9ybVN0b3JlKCk7XG4gICAgY29uc3QgZm9ybUxpc3RDdHggPSB1c2VGb3JtTGlzdENvbnRleHQoKTtcbiAgICAvLyBSZXNvbHZlIHRoZSBhY3R1YWwgcGF0aHMgdG8gd2F0Y2gsIGNvbnNpZGVyaW5nIEZvcm1MaXN0IHNjb3BlXG4gICAgY29uc3QgcmVzb2x2ZWRQYXRocyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBjb25zdCBzaG91bGRQcmVmaXggPSAhaWdub3JlRm9ybUxpc3RGaWVsZCAmJiBmb3JtTGlzdEN0eC5saXN0TmFtZSAhPT0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gbmFtZS5tYXAoKGZpZWxkTmFtZSkgPT4gc2hvdWxkUHJlZml4ID8gYCR7Zm9ybUxpc3RDdHgubGlzdE5hbWV9LiR7ZmllbGROYW1lfWAgOiBmaWVsZE5hbWUpO1xuICAgIH0sIFtuYW1lLCBpZ25vcmVGb3JtTGlzdEZpZWxkLCBmb3JtTGlzdEN0eC5saXN0TmFtZV0pO1xuICAgIC8vIFN1YnNjcmliZSBPTkxZIHRvIHRoZSB3YXRjaGVkIHBhdGhzOiBhIGNvbW1pdCB0aGF0IGxlYXZlcyBldmVyeSB3YXRjaGVkXG4gICAgLy8gdmFsdWUgT2JqZWN0LmlzLWVxdWFsIHNob3J0LWNpcmN1aXRzLCBzbyBjaGlsZHJlbiBhcmUgTk9UIHJlLWludm9rZWQgd2hlblxuICAgIC8vIHVucmVsYXRlZCBmaWVsZHMgY2hhbmdlLiBSZWFjdGl2aXR5IHRyYWNrcyB0aGUgUkFXIHZhbHVlczsgdGhlIHBheWxvYWRcbiAgICAvLyBiZWxvdyBpcyBkZXJpdmVkIGZyb20gdGhlIEZPUk1BVFRFRCB2YWx1ZXMuXG4gICAgY29uc3Qgd2F0Y2hlZEFycmF5ID0gdXNlU3RvcmVTZWxlY3RvcihzdG9yZSwgKHN0YXRlKSA9PiByZXNvbHZlZFBhdGhzLm1hcCgocGF0aCkgPT4gcGF0aC5pbmNsdWRlcygnLicpID8gZ2V0TmVzdGVkVmFsdWUoc3RhdGUudmFsdWVzLCBwYXRoKSA6IHN0YXRlLnZhbHVlc1twYXRoXSksIHNoYWxsb3dFcXVhbEFycmF5cyk7XG4gICAgY29uc3Qgd2F0Y2hlZFZhbHVlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICAvLyBDaGlsZHJlbiByZWNlaXZlIEZPUk1BVFRFRCB2YWx1ZXMgKGRhdGVGb3JtYXR0ZXIgKyB0cmFuc2Zvcm0gYXBwbGllZCksXG4gICAgICAgIC8vIG1hdGNoaW5nIHdoYXQgb25GaW5pc2ggd291bGQgc3VibWl0IGZvciB0aG9zZSBmaWVsZHMuIEEgdHJhbnNmb3JtIHRoYXRcbiAgICAgICAgLy8gUkVOQU1FUyBpdHMga2V5IGRlbGV0ZXMgdGhlIG9yaWdpbmFsIHBhdGggZnJvbSB0aGUgZm9ybWF0dGVkIG9iamVjdCDigJRcbiAgICAgICAgLy8gZmFsbCBiYWNrIHRvIHRoZSByYXcgdmFsdWUgc28gdGhlIHdhdGNoZXIgc3RpbGwgc2VlcyB0aGUgZmllbGQuXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGZvcm1JbnN0YW5jZS5nZXRGaWVsZEZvcm1hdFZhbHVlT2JqZWN0KCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIC8vIFVzZSB0aGUgb3JpZ2luYWwgbmFtZSBhcyBrZXkgc28gY2hpbGRyZW4gZ2V0IGNsZWFuIGtleXNcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSByZXNvbHZlZFBhdGhzW2ldO1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gd2F0Y2hlZEFycmF5W2ldO1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSBwYXRoLmluY2x1ZGVzKCcuJylcbiAgICAgICAgICAgICAgICA/IGdldE5lc3RlZFZhbHVlKGZvcm1hdHRlZCwgcGF0aClcbiAgICAgICAgICAgICAgICA6IChwYXRoIGluIGZvcm1hdHRlZCA/IGZvcm1hdHRlZFtwYXRoXSA6IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICBpZiAoZm9ybWF0dGVkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gZm9ybWF0dGVkVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHRbbmFtZVtpXV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sIFtuYW1lLCByZXNvbHZlZFBhdGhzLCB3YXRjaGVkQXJyYXksIGZvcm1JbnN0YW5jZV0pO1xuICAgIHJldHVybiBfanN4KF9GcmFnbWVudCwgeyBjaGlsZHJlbjogY2hpbGRyZW4od2F0Y2hlZFZhbHVlcywgZm9ybUluc3RhbmNlKSB9KTtcbn07XG5Qcm9Gb3JtRGVwZW5kZW5jeUJhc2UuZGlzcGxheU5hbWUgPSAnUHJvRm9ybURlcGVuZGVuY3knO1xuZXhwb3J0IGNvbnN0IFByb0Zvcm1EZXBlbmRlbmN5ID0gbWVtbyhQcm9Gb3JtRGVwZW5kZW5jeUJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgUHJvRm9ybURlcGVuZGVuY3k7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|