@1money/component-ui 0.0.76 → 0.0.78
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 +11 -3
- package/es/components/Dialog/interface.d.ts +1 -0
- package/es/components/Grid/Col.js +60 -4
- package/es/components/Grid/Grid.d.ts +4 -1
- package/es/components/Grid/Grid.js +5 -4
- package/es/components/Grid/Row.js +7 -5
- package/es/components/Grid/constants.d.ts +5 -3
- package/es/components/Grid/constants.js +13 -4
- package/es/components/Grid/helper.d.ts +8 -6
- package/es/components/Grid/helper.js +63 -15
- package/es/components/Grid/interface.d.ts +2 -1
- package/es/components/Grid/style/Grid.css +240 -196
- package/es/components/ProForm/ProForm.d.ts +1 -1
- package/es/components/ProForm/ProForm.js +4 -5
- package/es/components/ProForm/ProFormDependency.d.ts +2 -1
- package/es/components/ProForm/ProFormDependency.js +1 -1
- package/es/components/ProForm/ProFormItem.d.ts +7 -2
- package/es/components/ProForm/ProFormItem.js +1 -1
- package/es/components/ProForm/ProFormList.d.ts +6 -1
- package/es/components/ProForm/ProFormList.js +13 -5
- package/es/components/ProForm/SchemaForm.d.ts +1 -1
- package/es/components/ProForm/SchemaForm.js +8 -5
- package/es/components/ProForm/constants.d.ts +1 -1
- package/es/components/ProForm/constants.js +5 -2
- package/es/components/ProForm/context.d.ts +8 -7
- package/es/components/ProForm/context.js +1 -1
- package/es/components/ProForm/core/constants.d.ts +1 -1
- package/es/components/ProForm/core/constants.js +2 -2
- package/es/components/ProForm/core/devWarning.d.ts +1 -3
- package/es/components/ProForm/core/devWarning.js +5 -15
- package/es/components/ProForm/core/formStore.d.ts +4 -4
- package/es/components/ProForm/core/formStore.js +1 -1
- package/es/components/ProForm/core/hooks/useForm.d.ts +1 -1
- package/es/components/ProForm/core/hooks/useForm.js +34 -9
- package/es/components/ProForm/core/hooks/useFormCore.d.ts +2 -2
- package/es/components/ProForm/core/hooks/useFormCore.js +17 -123
- package/es/components/ProForm/core/interface.d.ts +70 -91
- package/es/components/ProForm/core/namePathType.d.ts +25 -0
- package/es/components/ProForm/core/namePathType.js +2 -0
- package/es/components/ProForm/core/pathUtils.d.ts +5 -3
- package/es/components/ProForm/core/pathUtils.js +19 -1
- package/es/components/ProForm/core/runRules.d.ts +8 -17
- package/es/components/ProForm/core/runRules.js +22 -129
- package/es/components/ProForm/core/useFormItem.d.ts +1 -1
- package/es/components/ProForm/core/useFormItem.js +14 -66
- package/es/components/ProForm/core/validationError.d.ts +2 -2
- package/es/components/ProForm/core/validationError.js +1 -1
- package/es/components/ProForm/fields/ProFormCheckbox.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormCheckboxGroup.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormCheckboxGroup.js +1 -1
- package/es/components/ProForm/fields/ProFormDatePicker.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormDatePicker.js +1 -1
- package/es/components/ProForm/fields/ProFormFieldSet.d.ts +7 -2
- package/es/components/ProForm/fields/ProFormFieldSet.js +5 -7
- package/es/components/ProForm/fields/ProFormPassword.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormRadioGroup.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormRadioGroup.js +1 -1
- package/es/components/ProForm/fields/ProFormSelect.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormSelect.js +1 -1
- package/es/components/ProForm/fields/ProFormSlider.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormSwitch.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormText.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormTextArea.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormUpload.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormUpload.js +1 -1
- package/es/components/ProForm/fields/createProFormField.d.ts +8 -2
- package/es/components/ProForm/fields/createProFormField.js +3 -3
- package/es/components/ProForm/hooks/useFieldRequest.d.ts +1 -1
- package/es/components/ProForm/hooks/useFieldRequest.js +1 -1
- package/es/components/ProForm/hooks/useUrlSync.d.ts +8 -7
- package/es/components/ProForm/hooks/useUrlSync.js +1 -1
- package/es/components/ProForm/index.d.ts +35 -26
- package/es/components/ProForm/index.js +1 -1
- package/es/components/ProForm/interface.d.ts +96 -91
- package/es/components/ProForm/layouts/DialogForm.d.ts +1 -1
- package/es/components/ProForm/layouts/DialogForm.js +2 -4
- package/es/components/ProForm/layouts/DrawerForm.d.ts +1 -1
- package/es/components/ProForm/layouts/DrawerForm.js +1 -1
- package/es/components/ProForm/layouts/QueryFilter.d.ts +1 -1
- package/es/components/ProForm/layouts/QueryFilter.js +1 -1
- package/es/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
- package/es/components/ProForm/layouts/useOverlayForm.js +1 -1
- package/es/components/ProForm/utils.d.ts +8 -8
- package/es/components/ProForm/utils.js +1 -1
- package/es/index.css +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/utils/devWarn.d.ts +4 -0
- package/es/utils/devWarn.js +23 -0
- package/lib/components/Dialog/Dialog.js +11 -3
- package/lib/components/Dialog/interface.d.ts +1 -0
- package/lib/components/Grid/Col.js +59 -3
- package/lib/components/Grid/Grid.d.ts +4 -1
- package/lib/components/Grid/Grid.js +5 -4
- package/lib/components/Grid/Row.js +6 -4
- package/lib/components/Grid/constants.d.ts +5 -3
- package/lib/components/Grid/constants.js +14 -5
- package/lib/components/Grid/helper.d.ts +8 -6
- package/lib/components/Grid/helper.js +63 -15
- package/lib/components/Grid/interface.d.ts +2 -1
- package/lib/components/Grid/style/Grid.css +240 -196
- package/lib/components/ProForm/ProForm.d.ts +1 -1
- package/lib/components/ProForm/ProForm.js +3 -4
- package/lib/components/ProForm/ProFormDependency.d.ts +2 -1
- package/lib/components/ProForm/ProFormDependency.js +1 -1
- package/lib/components/ProForm/ProFormItem.d.ts +7 -2
- package/lib/components/ProForm/ProFormItem.js +1 -1
- package/lib/components/ProForm/ProFormList.d.ts +6 -1
- package/lib/components/ProForm/ProFormList.js +13 -5
- package/lib/components/ProForm/SchemaForm.d.ts +1 -1
- package/lib/components/ProForm/SchemaForm.js +8 -5
- package/lib/components/ProForm/constants.d.ts +1 -1
- package/lib/components/ProForm/constants.js +5 -2
- package/lib/components/ProForm/context.d.ts +8 -7
- package/lib/components/ProForm/context.js +1 -1
- package/lib/components/ProForm/core/constants.d.ts +1 -1
- package/lib/components/ProForm/core/constants.js +2 -2
- package/lib/components/ProForm/core/devWarning.d.ts +1 -3
- package/lib/components/ProForm/core/devWarning.js +23 -24
- package/lib/components/ProForm/core/formStore.d.ts +4 -4
- package/lib/components/ProForm/core/formStore.js +1 -1
- package/lib/components/ProForm/core/hooks/useForm.d.ts +1 -1
- package/lib/components/ProForm/core/hooks/useForm.js +34 -9
- package/lib/components/ProForm/core/hooks/useFormCore.d.ts +2 -2
- package/lib/components/ProForm/core/hooks/useFormCore.js +16 -122
- package/lib/components/ProForm/core/interface.d.ts +70 -91
- package/lib/components/ProForm/core/namePathType.d.ts +25 -0
- package/lib/components/ProForm/core/namePathType.js +6 -0
- package/lib/components/ProForm/core/pathUtils.d.ts +5 -3
- package/lib/components/ProForm/core/pathUtils.js +20 -1
- package/lib/components/ProForm/core/runRules.d.ts +8 -17
- package/lib/components/ProForm/core/runRules.js +22 -130
- package/lib/components/ProForm/core/useFormItem.d.ts +1 -1
- package/lib/components/ProForm/core/useFormItem.js +17 -69
- package/lib/components/ProForm/core/validationError.d.ts +2 -2
- package/lib/components/ProForm/core/validationError.js +1 -1
- package/lib/components/ProForm/fields/ProFormCheckbox.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormCheckboxGroup.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormCheckboxGroup.js +1 -1
- package/lib/components/ProForm/fields/ProFormDatePicker.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormDatePicker.js +1 -1
- package/lib/components/ProForm/fields/ProFormFieldSet.d.ts +7 -2
- package/lib/components/ProForm/fields/ProFormFieldSet.js +5 -7
- package/lib/components/ProForm/fields/ProFormPassword.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormRadioGroup.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormRadioGroup.js +1 -1
- package/lib/components/ProForm/fields/ProFormSelect.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormSelect.js +1 -1
- package/lib/components/ProForm/fields/ProFormSlider.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormSwitch.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormText.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormTextArea.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormUpload.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormUpload.js +1 -1
- package/lib/components/ProForm/fields/createProFormField.d.ts +8 -2
- package/lib/components/ProForm/fields/createProFormField.js +3 -3
- package/lib/components/ProForm/hooks/useFieldRequest.d.ts +1 -1
- package/lib/components/ProForm/hooks/useFieldRequest.js +1 -1
- package/lib/components/ProForm/hooks/useUrlSync.d.ts +8 -7
- package/lib/components/ProForm/hooks/useUrlSync.js +1 -1
- package/lib/components/ProForm/index.d.ts +35 -26
- package/lib/components/ProForm/index.js +1 -1
- package/lib/components/ProForm/interface.d.ts +96 -91
- package/lib/components/ProForm/layouts/DialogForm.d.ts +1 -1
- package/lib/components/ProForm/layouts/DialogForm.js +2 -4
- package/lib/components/ProForm/layouts/DrawerForm.d.ts +1 -1
- package/lib/components/ProForm/layouts/DrawerForm.js +1 -1
- package/lib/components/ProForm/layouts/QueryFilter.d.ts +1 -1
- package/lib/components/ProForm/layouts/QueryFilter.js +1 -1
- package/lib/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
- package/lib/components/ProForm/layouts/useOverlayForm.js +1 -1
- package/lib/components/ProForm/utils.d.ts +8 -8
- package/lib/components/ProForm/utils.js +1 -1
- package/lib/index.css +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/utils/devWarn.d.ts +4 -0
- package/lib/utils/devWarn.js +31 -0
- package/package.json +1 -1
- package/scripts/mcp-server/examples.generated.json +224 -74
- package/scripts/mcp-server/index.generated.json +1758 -100
|
@@ -117,4 +117,4 @@ export function sameValidationNode(a, b) {
|
|
|
117
117
|
return Object.is(aProps[key], bProps[key]);
|
|
118
118
|
});
|
|
119
119
|
}
|
|
120
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvZm9ybVN0b3JlLnRzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvZm9ybVN0b3JlLmpzIl0sIm5hbWVzIjpbImlzVmFsaWRFbGVtZW50IiwidXNlRWZmZWN0IiwidXNlUmVkdWNlciIsInVzZVJlZiIsInVzZUxhdGVzdCIsImNyZWF0ZUZvcm1TdG9yZSIsImluaXRpYWxWYWx1ZXMiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJzdGF0ZSIsInZhbHVlcyIsImVycm9ycyIsIndhcm5pbmdzIiwidG91Y2hlZCIsInZhbGlkYXRpbmciLCJsaXN0ZW5lcnMiLCJTZXQiLCJnZXRTdGF0ZSIsInNldFN0YXRlIiwicGF0Y2giLCJPYmplY3QiLCJhc3NpZ24iLCJmb3JFYWNoIiwibGlzdGVuZXIiLCJzdWJzY3JpYmUiLCJhZGQiLCJ1c2VTdG9yZVNlbGVjdG9yIiwic3RvcmUiLCJzZWxlY3RvciIsImlzRXF1YWwiLCJpcyIsIl91c2VSZWR1Y2VyIiwiY291bnQiLCJfdXNlUmVkdWNlcjIiLCJfc2xpY2VkVG9BcnJheSIsImZvcmNlUmVuZGVyIiwic2VsZWN0ZWQiLCJsYXRlc3RSZWYiLCJjaGVja0ZvclVwZGF0ZXMiLCJsYXRlc3QiLCJjdXJyZW50IiwibmV4dCIsInNoYWxsb3dFcXVhbEFycmF5cyIsImEiLCJiIiwiaSIsInNoYWxsb3dFcXVhbE9iamVjdHMiLCJhS2V5cyIsImtleXMiLCJiS2V5cyIsIl9pIiwiX2FLZXlzIiwia2V5IiwidXNlU2hhbGxvd1N0YWJsZSIsInZhbHVlIiwicmVmIiwic2FtZVZhbGlkYXRpb25Ob2RlIiwidHlwZSIsImFQcm9wcyIsInByb3BzIiwiYlByb3BzIiwiZXZlcnkiXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTQSxjQUFjLEVBQUVDLFNBQVMsRUFBRUMsVUFBVSxFQUFFQyxNQUFNLFFBQVEsT0FBTztBQUVyRSxPQUFPQyxTQUFT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QUFDWSxNQUFNLENBQUM7RUFDakMsSUFBSWIsS0FBSyxDQUFDeEMsTUFBTSxLQUFLMEMsS0FBSyxDQUFDMUMsTUFBTSxFQUFFLE9BQU8sS0FBSztFQUMvQyxPQUFPd0MsS0FBSyxDQUFDYyxLQUFLLENBQUMsVUFBQ1QsR0FBRztJQUFBLE9BQUtoQyxNQUFNLENBQUNVLEVBQUUsQ0FBQzRCLE1BQU0sQ0FBQ04sR0FBRyxDQUFDLEVBQUVRLE1BQU0sQ0FBQ1IsR0FBRyxDQUFDLENBQUM7RUFBQSxFQUFDO0FBQ2xFIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2Zvcm1TdG9yZS5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IHsgaXNWYWxpZEVsZW1lbnQsIHVzZUVmZmVjdCwgdXNlUmVkdWNlciwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUxhdGVzdCBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUxhdGVzdCc7XG5leHBvcnQgY29uc3QgY3JlYXRlRm9ybVN0b3JlID0gKGluaXRpYWxWYWx1ZXMgPSB7fSkgPT4ge1xuICAgIGxldCBzdGF0ZSA9IHtcbiAgICAgICAgdmFsdWVzOiBpbml0aWFsVmFsdWVzLFxuICAgICAgICBlcnJvcnM6IHt9LFxuICAgICAgICB3YXJuaW5nczoge30sXG4gICAgICAgIHRvdWNoZWQ6IHt9LFxuICAgICAgICB2YWxpZGF0aW5nOiB7fSxcbiAgICB9O1xuICAgIGNvbnN0IGxpc3RlbmVycyA9IG5ldyBTZXQoKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBnZXRTdGF0ZTogKCkgPT4gc3RhdGUsXG4gICAgICAgIHNldFN0YXRlOiAocGF0Y2gpID0+IHtcbiAgICAgICAgICAgIHN0YXRlID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSksIHBhdGNoKTtcbiAgICAgICAgICAgIGxpc3RlbmVycy5mb3JFYWNoKChsaXN0ZW5lcikgPT4gbGlzdGVuZXIoKSk7XG4gICAgICAgIH0sXG4gICAgICAgIHN1YnNjcmliZTogKGxpc3RlbmVyKSA9PiB7XG4gICAgICAgICAgICBsaXN0ZW5lcnMuYWRkKGxpc3RlbmVyKTtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXJzLmRlbGV0ZShsaXN0ZW5lcik7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgIH07XG59O1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyB1c2VTdG9yZVNlbGVjdG9yIOKAlCBzdWJzY3JpYmUgdG8gYSBzZWxlY3RlZCBzbGljZSBvZiB0aGUgc3RvcmUuXG4vL1xuLy8gVGhlIGNvbXBvbmVudCByZS1yZW5kZXJzIE9OTFkgd2hlbiBgaXNFcXVhbChwcmV2U2VsZWN0ZWQsIG5leHRTZWxlY3RlZClgIGlzXG4vLyBmYWxzZS4gVGhlIHNlbGVjdG9yL2VxdWFsaXR5L3NlbGVjdGVkIHRyaW8gaXMgcmUtY2FwdHVyZWQgaW4gYSByZWYgb24gZXZlcnlcbi8vIHJlbmRlciwgc28gaW5saW5lIHNlbGVjdG9ycyAoY2xvc2luZyBvdmVyIHRoZSBsYXRlc3QgcHJvcHMpIGFyZSBzYWZlLlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5leHBvcnQgZnVuY3Rpb24gdXNlU3RvcmVTZWxlY3RvcihzdG9yZSwgc2VsZWN0b3IsIGlzRXF1YWwgPSBPYmplY3QuaXMpIHtcbiAgICBjb25zdCBbLCBmb3JjZVJlbmRlcl0gPSB1c2VSZWR1Y2VyKChjb3VudCkgPT4gY291bnQgKyAxLCAwKTtcbiAgICBjb25zdCBzZWxlY3RlZCA9IHNlbGVjdG9yKHN0b3JlLmdldFN0YXRlKCkpO1xuICAgIGNvbnN0IGxhdGVzdFJlZiA9IHVzZUxhdGVzdCh7IHNlbGVjdG9yLCBpc0VxdWFsLCBzZWxlY3RlZCB9KTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCBjaGVja0ZvclVwZGF0ZXMgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYXRlc3QgPSBsYXRlc3RSZWYuY3VycmVudDtcbiAgICAgICAgICAgIGNvbnN0IG5leHQgPSBsYXRlc3Quc2VsZWN0b3Ioc3RvcmUuZ2V0U3RhdGUoKSk7XG4gICAgICAgICAgICBpZiAoIWxhdGVzdC5pc0VxdWFsKGxhdGVzdC5zZWxlY3RlZCwgbmV4dCkpIHtcbiAgICAgICAgICAgICAgICBmb3JjZVJlbmRlcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAvLyBDYXRjaCBjb21taXRzIHRoYXQgbGFuZGVkIGJldHdlZW4gcmVuZGVyIGFuZCBzdWJzY3JpcHRpb24uXG4gICAgICAgIGNoZWNrRm9yVXBkYXRlcygpO1xuICAgICAgICByZXR1cm4gc3RvcmUuc3Vic2NyaWJlKGNoZWNrRm9yVXBkYXRlcyk7XG4gICAgfSwgW3N0b3JlXSk7XG4gICAgcmV0dXJuIHNlbGVjdGVkO1xufVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBFcXVhbGl0eSBoZWxwZXJzIGZvciBtdWx0aS12YWx1ZSBzZWxlY3RvcnMgLyBwcm9wcyBzdGFiaWxpemF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmV4cG9ydCBjb25zdCBzaGFsbG93RXF1YWxBcnJheXMgPSAoYSwgYikgPT4ge1xuICAgIGlmIChhID09PSBiKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICghT2JqZWN0LmlzKGFbaV0sIGJbaV0pKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn07XG5leHBvcnQgY29uc3Qgc2hhbGxvd0VxdWFsT2JqZWN0cyA9IChhLCBiKSA9PiB7XG4gICAgaWYgKGEgPT09IGIpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIGlmICghYSB8fCAhYilcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGFLZXlzID0gT2JqZWN0LmtleXMoYSk7XG4gICAgY29uc3QgYktleXMgPSBPYmplY3Qua2V5cyhiKTtcbiAgICBpZiAoYUtleXMubGVuZ3RoICE9PSBiS2V5cy5sZW5ndGgpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBhS2V5cykge1xuICAgICAgICBpZiAoIU9iamVjdC5pcyhhW2tleV0sIGJba2V5XSkpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufTtcbi8qKlxuICogUmV0dXJuIGEgcmVmZXJlbnRpYWxseS1zdGFibGUgdmVyc2lvbiBvZiBhbiAob2Z0ZW4gaW5saW5lLWxpdGVyYWwpIHByb3BzXG4gKiBvYmplY3Q6IHRoZSBwcmV2aW91cyByZWZlcmVuY2UgaXMga2VwdCB3aGlsZSB0aGUgY29udGVudCBzdGF5c1xuICogc2hhbGxvdy1lcXVhbCwgc28gZG93bnN0cmVhbSBtZW1vL2NvbnRleHQgZGVwcyBkb24ndCBjaHVybiBwZXIgcmVuZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU2hhbGxvd1N0YWJsZSh2YWx1ZSkge1xuICAgIGNvbnN0IHJlZiA9IHVzZVJlZih2YWx1ZSk7XG4gICAgaWYgKCFzaGFsbG93RXF1YWxPYmplY3RzKHJlZi5jdXJyZW50LCB2YWx1ZSkpIHtcbiAgICAgICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlZi5jdXJyZW50O1xufVxuLyoqXG4gKiBFcXVhbGl0eSBmb3IgZXJyb3Ivd2FybmluZyBjb250ZW50LiBTdHJpbmdzIGNvbXBhcmUgYnkgdmFsdWU7IGVsZW1lbnRzIGdldFxuICogYSBvbmUtbGV2ZWwgdHlwZS9rZXkvcHJvcHMgY29tcGFyZSBzbyBhIHJlLWNyZWF0ZWQgSlNYIG1lc3NhZ2UgKGZyZXNoXG4gKiBpZGVudGl0eSBldmVyeSByZXNvbHV0aW9uKSBkb2VzIG5vdCBjaHVybiB0aGUgc3RvcmUgd2hlbiBpdHMgY29udGVudCBpc1xuICogdW5jaGFuZ2VkLiBEZWVwbHkgbmVzdGVkIGVsZW1lbnQgY2hpbGRyZW4gc3RpbGwgY291bnQgYXMgY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhbWVWYWxpZGF0aW9uTm9kZShhLCBiKSB7XG4gICAgaWYgKE9iamVjdC5pcyhhLCBiKSlcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgaWYgKCFpc1ZhbGlkRWxlbWVudChhKSB8fCAhaXNWYWxpZEVsZW1lbnQoYikpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBpZiAoYS50eXBlICE9PSBiLnR5cGUgfHwgYS5rZXkgIT09IGIua2V5KVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgYVByb3BzID0gYS5wcm9wcztcbiAgICBjb25zdCBiUHJvcHMgPSBiLnByb3BzO1xuICAgIGNvbnN0IGFLZXlzID0gT2JqZWN0LmtleXMoYVByb3BzKTtcbiAgICBjb25zdCBiS2V5cyA9IE9iamVjdC5rZXlzKGJQcm9wcyk7XG4gICAgaWYgKGFLZXlzLmxlbmd0aCAhPT0gYktleXMubGVuZ3RoKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIGFLZXlzLmV2ZXJ5KChrZXkpID0+IE9iamVjdC5pcyhhUHJvcHNba2V5XSwgYlByb3BzW2tleV0pKTtcbn0iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
120
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvZm9ybVN0b3JlLnRzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvZm9ybVN0b3JlLmpzIl0sIm5hbWVzIjpbImlzVmFsaWRFbGVtZW50IiwidXNlRWZmZWN0IiwidXNlUmVkdWNlciIsInVzZVJlZiIsInVzZUxhdGVzdCIsImNyZWF0ZUZvcm1TdG9yZSIsImluaXRpYWxWYWx1ZXMiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJzdGF0ZSIsInZhbHVlcyIsImVycm9ycyIsIndhcm5pbmdzIiwidG91Y2hlZCIsInZhbGlkYXRpbmciLCJsaXN0ZW5lcnMiLCJTZXQiLCJnZXRTdGF0ZSIsInNldFN0YXRlIiwicGF0Y2giLCJPYmplY3QiLCJhc3NpZ24iLCJmb3JFYWNoIiwibGlzdGVuZXIiLCJzdWJzY3JpYmUiLCJhZGQiLCJ1c2VTdG9yZVNlbGVjdG9yIiwic3RvcmUiLCJzZWxlY3RvciIsImlzRXF1YWwiLCJpcyIsIl91c2VSZWR1Y2VyIiwiY291bnQiLCJfdXNlUmVkdWNlcjIiLCJfc2xpY2VkVG9BcnJheSIsImZvcmNlUmVuZGVyIiwic2VsZWN0ZWQiLCJsYXRlc3RSZWYiLCJjaGVja0ZvclVwZGF0ZXMiLCJsYXRlc3QiLCJjdXJyZW50IiwibmV4dCIsInNoYWxsb3dFcXVhbEFycmF5cyIsImEiLCJiIiwiaSIsInNoYWxsb3dFcXVhbE9iamVjdHMiLCJhS2V5cyIsImtleXMiLCJiS2V5cyIsIl9pIiwiX2FLZXlzIiwia2V5IiwidXNlU2hhbGxvd1N0YWJsZSIsInZhbHVlIiwicmVmIiwic2FtZVZhbGlkYXRpb25Ob2RlIiwidHlwZSIsImFQcm9wcyIsInByb3BzIiwiYlByb3BzIiwiZXZlcnkiXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTQSxjQUFjLEVBQUVDLFNBQVMsRUFBRUMsVUFBVSxFQUFFQyxNQUFNLFFBQVEsT0FBTztBQUVyRSxPQUFPQyxTQUFT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QUFDWSxNQUFNLENBQUM7RUFDakMsSUFBSWIsS0FBSyxDQUFDeEMsTUFBTSxLQUFLMEMsS0FBSyxDQUFDMUMsTUFBTSxFQUFFLE9BQU8sS0FBSztFQUMvQyxPQUFPd0MsS0FBSyxDQUFDYyxLQUFLLENBQUMsVUFBQ1QsR0FBRztJQUFBLE9BQUtoQyxNQUFNLENBQUNVLEVBQUUsQ0FBQzRCLE1BQU0sQ0FBQ04sR0FBRyxDQUFDLEVBQUVRLE1BQU0sQ0FBQ1IsR0FBRyxDQUFDLENBQUM7RUFBQSxFQUFDO0FBQ2xFIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2Zvcm1TdG9yZS5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IHsgaXNWYWxpZEVsZW1lbnQsIHVzZUVmZmVjdCwgdXNlUmVkdWNlciwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUxhdGVzdCBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUxhdGVzdCc7XG5leHBvcnQgY29uc3QgY3JlYXRlRm9ybVN0b3JlID0gKGluaXRpYWxWYWx1ZXMgPSB7fSkgPT4ge1xuICAgIGxldCBzdGF0ZSA9IHtcbiAgICAgICAgdmFsdWVzOiBpbml0aWFsVmFsdWVzLFxuICAgICAgICBlcnJvcnM6IHt9LFxuICAgICAgICB3YXJuaW5nczoge30sXG4gICAgICAgIHRvdWNoZWQ6IHt9LFxuICAgICAgICB2YWxpZGF0aW5nOiB7fSxcbiAgICB9O1xuICAgIGNvbnN0IGxpc3RlbmVycyA9IG5ldyBTZXQoKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBnZXRTdGF0ZTogKCkgPT4gc3RhdGUsXG4gICAgICAgIHNldFN0YXRlOiAocGF0Y2gpID0+IHtcbiAgICAgICAgICAgIHN0YXRlID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSksIHBhdGNoKTtcbiAgICAgICAgICAgIGxpc3RlbmVycy5mb3JFYWNoKChsaXN0ZW5lcikgPT4gbGlzdGVuZXIoKSk7XG4gICAgICAgIH0sXG4gICAgICAgIHN1YnNjcmliZTogKGxpc3RlbmVyKSA9PiB7XG4gICAgICAgICAgICBsaXN0ZW5lcnMuYWRkKGxpc3RlbmVyKTtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXJzLmRlbGV0ZShsaXN0ZW5lcik7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgIH07XG59O1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyB1c2VTdG9yZVNlbGVjdG9yIOKAlCBzdWJzY3JpYmUgdG8gYSBzZWxlY3RlZCBzbGljZSBvZiB0aGUgc3RvcmUuXG4vL1xuLy8gVGhlIGNvbXBvbmVudCByZS1yZW5kZXJzIE9OTFkgd2hlbiBgaXNFcXVhbChwcmV2U2VsZWN0ZWQsIG5leHRTZWxlY3RlZClgIGlzXG4vLyBmYWxzZS4gVGhlIHNlbGVjdG9yL2VxdWFsaXR5L3NlbGVjdGVkIHRyaW8gaXMgcmUtY2FwdHVyZWQgaW4gYSByZWYgb24gZXZlcnlcbi8vIHJlbmRlciwgc28gaW5saW5lIHNlbGVjdG9ycyAoY2xvc2luZyBvdmVyIHRoZSBsYXRlc3QgcHJvcHMpIGFyZSBzYWZlLlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5leHBvcnQgZnVuY3Rpb24gdXNlU3RvcmVTZWxlY3RvcihzdG9yZSwgc2VsZWN0b3IsIGlzRXF1YWwgPSBPYmplY3QuaXMpIHtcbiAgICBjb25zdCBbLCBmb3JjZVJlbmRlcl0gPSB1c2VSZWR1Y2VyKChjb3VudCkgPT4gY291bnQgKyAxLCAwKTtcbiAgICBjb25zdCBzZWxlY3RlZCA9IHNlbGVjdG9yKHN0b3JlLmdldFN0YXRlKCkpO1xuICAgIGNvbnN0IGxhdGVzdFJlZiA9IHVzZUxhdGVzdCh7IHNlbGVjdG9yLCBpc0VxdWFsLCBzZWxlY3RlZCB9KTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCBjaGVja0ZvclVwZGF0ZXMgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYXRlc3QgPSBsYXRlc3RSZWYuY3VycmVudDtcbiAgICAgICAgICAgIGNvbnN0IG5leHQgPSBsYXRlc3Quc2VsZWN0b3Ioc3RvcmUuZ2V0U3RhdGUoKSk7XG4gICAgICAgICAgICBpZiAoIWxhdGVzdC5pc0VxdWFsKGxhdGVzdC5zZWxlY3RlZCwgbmV4dCkpIHtcbiAgICAgICAgICAgICAgICBmb3JjZVJlbmRlcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAvLyBDYXRjaCBjb21taXRzIHRoYXQgbGFuZGVkIGJldHdlZW4gcmVuZGVyIGFuZCBzdWJzY3JpcHRpb24uXG4gICAgICAgIGNoZWNrRm9yVXBkYXRlcygpO1xuICAgICAgICByZXR1cm4gc3RvcmUuc3Vic2NyaWJlKGNoZWNrRm9yVXBkYXRlcyk7XG4gICAgfSwgW3N0b3JlXSk7XG4gICAgcmV0dXJuIHNlbGVjdGVkO1xufVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBFcXVhbGl0eSBoZWxwZXJzIGZvciBtdWx0aS12YWx1ZSBzZWxlY3RvcnMgLyBwcm9wcyBzdGFiaWxpemF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmV4cG9ydCBjb25zdCBzaGFsbG93RXF1YWxBcnJheXMgPSAoYSwgYikgPT4ge1xuICAgIGlmIChhID09PSBiKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICghT2JqZWN0LmlzKGFbaV0sIGJbaV0pKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn07XG5leHBvcnQgY29uc3Qgc2hhbGxvd0VxdWFsT2JqZWN0cyA9IChhLCBiKSA9PiB7XG4gICAgaWYgKGEgPT09IGIpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIGlmICghYSB8fCAhYilcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGFLZXlzID0gT2JqZWN0LmtleXMoYSk7XG4gICAgY29uc3QgYktleXMgPSBPYmplY3Qua2V5cyhiKTtcbiAgICBpZiAoYUtleXMubGVuZ3RoICE9PSBiS2V5cy5sZW5ndGgpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBhS2V5cykge1xuICAgICAgICBpZiAoIU9iamVjdC5pcyhhW2tleV0sIGJba2V5XSkpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufTtcbi8qKlxuICogUmV0dXJuIGEgcmVmZXJlbnRpYWxseS1zdGFibGUgdmVyc2lvbiBvZiBhbiAob2Z0ZW4gaW5saW5lLWxpdGVyYWwpIHByb3BzXG4gKiBvYmplY3Q6IHRoZSBwcmV2aW91cyByZWZlcmVuY2UgaXMga2VwdCB3aGlsZSB0aGUgY29udGVudCBzdGF5c1xuICogc2hhbGxvdy1lcXVhbCwgc28gZG93bnN0cmVhbSBtZW1vL2NvbnRleHQgZGVwcyBkb24ndCBjaHVybiBwZXIgcmVuZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU2hhbGxvd1N0YWJsZSh2YWx1ZSkge1xuICAgIGNvbnN0IHJlZiA9IHVzZVJlZih2YWx1ZSk7XG4gICAgaWYgKCFzaGFsbG93RXF1YWxPYmplY3RzKHJlZi5jdXJyZW50LCB2YWx1ZSkpIHtcbiAgICAgICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlZi5jdXJyZW50O1xufVxuLyoqXG4gKiBFcXVhbGl0eSBmb3IgZXJyb3Ivd2FybmluZyBjb250ZW50LiBTdHJpbmdzIGNvbXBhcmUgYnkgdmFsdWU7IGVsZW1lbnRzIGdldFxuICogYSBvbmUtbGV2ZWwgdHlwZS9rZXkvcHJvcHMgY29tcGFyZSBzbyBhIHJlLWNyZWF0ZWQgSlNYIG1lc3NhZ2UgKGZyZXNoXG4gKiBpZGVudGl0eSBldmVyeSByZXNvbHV0aW9uKSBkb2VzIG5vdCBjaHVybiB0aGUgc3RvcmUgd2hlbiBpdHMgY29udGVudCBpc1xuICogdW5jaGFuZ2VkLiBEZWVwbHkgbmVzdGVkIGVsZW1lbnQgY2hpbGRyZW4gc3RpbGwgY291bnQgYXMgY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhbWVWYWxpZGF0aW9uTm9kZShhLCBiKSB7XG4gICAgaWYgKE9iamVjdC5pcyhhLCBiKSlcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgaWYgKCFpc1ZhbGlkRWxlbWVudChhKSB8fCAhaXNWYWxpZEVsZW1lbnQoYikpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBpZiAoYS50eXBlICE9PSBiLnR5cGUgfHwgYS5rZXkgIT09IGIua2V5KVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgYVByb3BzID0gYS5wcm9wcztcbiAgICBjb25zdCBiUHJvcHMgPSBiLnByb3BzO1xuICAgIGNvbnN0IGFLZXlzID0gT2JqZWN0LmtleXMoYVByb3BzKTtcbiAgICBjb25zdCBiS2V5cyA9IE9iamVjdC5rZXlzKGJQcm9wcyk7XG4gICAgaWYgKGFLZXlzLmxlbmd0aCAhPT0gYktleXMubGVuZ3RoKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIGFLZXlzLmV2ZXJ5KChrZXkpID0+IE9iamVjdC5pcyhhUHJvcHNba2V5XSwgYlByb3BzW2tleV0pKTtcbn0iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { FormStore } from '../formStore';
|
|
2
2
|
import type { UseFormConfig, UseFormReturn } from '../interface';
|
|
3
|
-
export declare const useForm: (config?: UseFormConfig) => UseFormReturn & {
|
|
3
|
+
export declare const useForm: <Values = Record<string, any>>(config?: UseFormConfig<Values>) => UseFormReturn<Values> & {
|
|
4
4
|
store: FormStore;
|
|
5
5
|
};
|
|
6
6
|
export default useForm;
|
|
@@ -56,11 +56,31 @@ import { FormValidationError } from '../validationError';
|
|
|
56
56
|
* them would only churn subscribers without ever being visible. Decided on
|
|
57
57
|
* RESOLVED rules: a function-form rule that resolves to builtin-only checks
|
|
58
58
|
* must not flicker the flag.
|
|
59
|
+
*
|
|
60
|
+
* The async engine awaits validators nested inside `fields` / `defaultField`
|
|
61
|
+
* too, so the decision must descend the same way — otherwise a deep-only
|
|
62
|
+
* validator (e.g. `{ defaultField: { validator } }`) runs pending with the
|
|
63
|
+
* flag stuck false, and `isFieldValidating(name)` under-reports for the whole
|
|
64
|
+
* window. Over-flagging when the deep validator won't actually fire (empty /
|
|
65
|
+
* primitive value) is acceptable: the flag is decided on rule SHAPE, exactly
|
|
66
|
+
* as the top-level case already over-flags a validator short-circuited by an
|
|
67
|
+
* earlier builtin failure; the run clears it on settle either way.
|
|
59
68
|
*/
|
|
69
|
+
var asRuleArray = function asRuleArray(rule) {
|
|
70
|
+
return rule ? Array.isArray(rule) ? rule : [rule] : [];
|
|
71
|
+
};
|
|
72
|
+
var _ruleHasValidator = function ruleHasValidator(rule) {
|
|
73
|
+
if (typeof rule.validator === 'function') return true;
|
|
74
|
+
if (asRuleArray(rule.defaultField).some(_ruleHasValidator)) return true;
|
|
75
|
+
if (rule.fields) {
|
|
76
|
+
return Object.values(rule.fields).some(function (sub) {
|
|
77
|
+
return asRuleArray(sub).some(_ruleHasValidator);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
return false;
|
|
81
|
+
};
|
|
60
82
|
var hasResolvedValidator = function hasResolvedValidator(resolved) {
|
|
61
|
-
return resolved.some(
|
|
62
|
-
return typeof rule.validator === 'function';
|
|
63
|
-
});
|
|
83
|
+
return resolved.some(_ruleHasValidator);
|
|
64
84
|
};
|
|
65
85
|
// ---------------------------------------------------------------------------
|
|
66
86
|
// useForm
|
|
@@ -445,7 +465,10 @@ export var useForm = function useForm() {
|
|
|
445
465
|
}
|
|
446
466
|
var applicable = filterRulesByTrigger(resolveRules(rules, formCore.getFieldsValue(), formCore.getRuleContextInstance()), 'onChange', normalizeTriggers(fieldOptions.validateTrigger, validateTrigger), name);
|
|
447
467
|
if (applicable.length > 0) {
|
|
448
|
-
|
|
468
|
+
// Async path (matching ProForm.Item) so a Promise-returning
|
|
469
|
+
// validator is honored on change instead of being silently
|
|
470
|
+
// skipped; fire-and-forget — the result lands on the store.
|
|
471
|
+
validateFieldAsync(name, value, applicable);
|
|
449
472
|
}
|
|
450
473
|
});
|
|
451
474
|
var handleBlur = useEventCallback(function () {
|
|
@@ -483,7 +506,7 @@ export var useForm = function useForm() {
|
|
|
483
506
|
}
|
|
484
507
|
// Element children receive only DOM-safe props — error/touched/
|
|
485
508
|
// validating are field META, not control props; spreading them onto
|
|
486
|
-
// a host element would leak
|
|
509
|
+
// a host element would leak any attributes. Render-prop and
|
|
487
510
|
// function children keep the full fieldProps.
|
|
488
511
|
var domSafeProps = Object.assign({
|
|
489
512
|
name: name,
|
|
@@ -706,8 +729,11 @@ export var useForm = function useForm() {
|
|
|
706
729
|
});
|
|
707
730
|
var formInstance = useMemo(function () {
|
|
708
731
|
return Object.assign(Object.assign({}, formCore.formInstance), {
|
|
732
|
+
getFieldValue: formCore.getFieldValue,
|
|
733
|
+
getFieldsValue: formCore.getFieldsValue,
|
|
709
734
|
validateFields: validateFieldsAsync,
|
|
710
735
|
setFieldValue: formCore.setFieldValue,
|
|
736
|
+
setFieldsValue: formCore.setFieldsValue,
|
|
711
737
|
getFieldError: getFieldError,
|
|
712
738
|
getFieldWarning: getFieldWarning,
|
|
713
739
|
getFieldsError: getFieldsError,
|
|
@@ -724,7 +750,7 @@ export var useForm = function useForm() {
|
|
|
724
750
|
registerField: formCore.registerField,
|
|
725
751
|
unregisterField: formCore.unregisterField
|
|
726
752
|
});
|
|
727
|
-
}, [formCore.formInstance, formCore.setFieldValue, formCore.setFieldError, formCore.registerField, formCore.unregisterField, validateFieldsAsync, getFieldError, getFieldWarning, getFieldsError, isFieldTouched, isFieldsTouched, isFieldValidating, setFieldsError, setFieldTouched, setFieldsTouched, resetFormFields, submitWithValidation, defineField]);
|
|
753
|
+
}, [formCore.formInstance, formCore.getFieldValue, formCore.getFieldsValue, formCore.setFieldValue, formCore.setFieldsValue, formCore.setFieldError, formCore.registerField, formCore.unregisterField, validateFieldsAsync, getFieldError, getFieldWarning, getFieldsError, isFieldTouched, isFieldsTouched, isFieldValidating, setFieldsError, setFieldTouched, setFieldsTouched, resetFormFields, submitWithValidation, defineField]);
|
|
728
754
|
// Function-form rules get the FULL form instance (error getters, touched
|
|
729
755
|
// state, mutators) instead of the bare core methods. Ref write — cheap and
|
|
730
756
|
// idempotent per render.
|
|
@@ -754,7 +780,6 @@ export var useForm = function useForm() {
|
|
|
754
780
|
setFieldValue: formCore.setFieldValue,
|
|
755
781
|
setFieldError: formCore.setFieldError,
|
|
756
782
|
setFieldWarning: formCore.setFieldWarning,
|
|
757
|
-
validateField: formCore.validateField,
|
|
758
783
|
validateFieldAsync: validateFieldAsync,
|
|
759
784
|
registerField: formCore.registerField,
|
|
760
785
|
unregisterField: formCore.unregisterField,
|
|
@@ -763,7 +788,7 @@ export var useForm = function useForm() {
|
|
|
763
788
|
handleSubmit: handleSubmit,
|
|
764
789
|
handleReset: handleReset
|
|
765
790
|
};
|
|
766
|
-
}, [store, formCore.fieldRules, formCore.setFieldValue, formCore.setFieldError, formCore.setFieldWarning,
|
|
791
|
+
}, [store, formCore.fieldRules, formCore.setFieldValue, formCore.setFieldError, formCore.setFieldWarning, validateFieldAsync, formCore.registerField, formCore.unregisterField, formCore.retainField, formCore.releaseField, handleSubmit, handleReset]);
|
|
767
792
|
return {
|
|
768
793
|
formInstance: formInstance,
|
|
769
794
|
internals: internals,
|
|
@@ -771,4 +796,4 @@ export var useForm = function useForm() {
|
|
|
771
796
|
};
|
|
772
797
|
};
|
|
773
798
|
export default useForm;
|
|
774
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2hvb2tzL3VzZUZvcm0uanMiLCJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvaG9va3MvdXNlRm9ybS50cyJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJfX3Jlc3QiLCJzIiwidCIsInAiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiaSIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidXNlTWVtbyIsInVzZUVmZmVjdCIsInVzZVJlZiIsIm1lbW8iLCJGcmFnbWVudCIsIlJlYWN0IiwidXNlRXZlbnRDYWxsYmFjayIsInVzZU1lbW9pemVkRm4iLCJ1c2VGb3JtQ29yZSIsInJlc29sdmVWYWx1ZSIsInNldE5lc3RlZFZhbHVlIiwiY29lcmNlRmFpbHVyZVJlYXNvbiIsImZpbHRlclJ1bGVzQnlUcmlnZ2VyIiwibm9ybWFsaXplVHJpZ2dlcnMiLCJyZXNvbHZlUnVsZXMiLCJydW5SdWxlc0FzeW5jIiwidXNlU3RvcmVTZWxlY3RvciIsInNoYWxsb3dFcXVhbEFycmF5cyIsInNhbWVWYWxpZGF0aW9uTm9kZSIsIkZvcm1WYWxpZGF0aW9uRXJyb3IiLCJoYXNSZXNvbHZlZFZhbGlkYXRvciIsInJlc29sdmVkIiwic29tZSIsInJ1bGUiLCJ2YWxpZGF0b3IiLCJ1c2VGb3JtIiwiY29uZmlnIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwib25GaW5pc2giLCJvbkZpbmlzaEZhaWxlZCIsIm9uUmVzZXQiLCJfY29uZmlnJHZhbGlkYXRlVHJpZ2ciLCJ2YWxpZGF0ZVRyaWdnZXIiLCJmb3JtQ29yZSIsInN0b3JlIiwibGFzdEFzeW5jRXBvY2hSZWYiLCJtYXJrVmFsaWRhdGluZyIsIm5hbWVzIiwiYXNzaWduIiwiZ2V0U3RhdGUiLCJ2YWxpZGF0aW5nIiwiZm9yRWFjaCIsIm5hbWUiLCJzZXRTdGF0ZSIsImNvbW1pdFJ1bGVPdXRjb21lcyIsIm91dGNvbWVzIiwiY2xlYXJWYWxpZGF0aW5nIiwic3RhdGUiLCJlcnJvcnNDaGFuZ2VkIiwid2FybmluZ3NDaGFuZ2VkIiwibmV3RXJyb3JzIiwiZXJyb3JzIiwibmV3V2FybmluZ3MiLCJ3YXJuaW5ncyIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJuIiwiX3N0ZXAkdmFsdWUiLCJlcnJvciIsIndhcm5pbmciLCJlcnIiLCJmIiwiZmxhZ3NUb0NsZWFyIiwiZmlsdGVyIiwicGF0Y2giLCJuZXdWYWxpZGF0aW5nIiwia2V5cyIsInZhbGlkYXRlRmllbGRBc3luYyIsInJ1bGVzIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiX2EiLCJlcG9jaCIsInZhbHVlcyIsImZsYWdnZWQiLCJvdXRjb21lIiwiX3lpZWxkJHJ1blJ1bGVzQXN5bmMiLCJpc0N1cnJlbnQiLCJjbGVhckZsYWdzIiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwiYWJydXB0IiwiaXNWYWxpZCIsImJlZ2luVmFsaWRhdGlvblJ1biIsImdldEZpZWxkc1ZhbHVlIiwiZ2V0UnVsZUNvbnRleHRJbnN0YW5jZSIsImZsYWdnZWROYW1lIiwiY3VycmVudCIsInNlbnQiLCJpc1ZhbGlkYXRpb25SdW5DdXJyZW50IiwiZmluaXNoIiwic3RvcCIsImhhbmRsZUZpZWxkQmx1ciIsImZpZWxkVHJpZ2dlciIsIl9jYWxsZWUyIiwidG91Y2hlZCIsImFwcGxpY2FibGUiLCJfY29udGV4dDIiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRGaWVsZFJ1bGVzIiwidmFsaWRhdGVGaWVsZHNBc3luYyIsIm5hbWVMaXN0IiwiX2NhbGxlZTQiLCJmaWVsZHNUb1ZhbGlkYXRlIiwiZmllbGRFcnJvcnMiLCJyZXNvbHZlZEJ5RmllbGQiLCJlcG9jaEJ5RmllbGQiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiX2NvbnRleHQ0IiwiZmllbGRSdWxlcyIsIk1hcCIsInNldCIsImdldCIsImFsbCIsIm1hcCIsIl9jYWxsZWUzIiwiX3lpZWxkJHJ1blJ1bGVzQXN5bmMyIiwiX3QyIiwiX2NvbnRleHQzIiwicHVzaCIsInJlZHVjZSIsImFjYyIsImRlZmluZUZpZWxkIiwiZmllbGRPcHRpb25zIiwiX2ZpZWxkT3B0aW9ucyRydWxlcyIsIkZpZWxkQ29tcG9uZW50IiwiY2hpbGRyZW4iLCJyZW5kZXIiLCJwcm9wcyIsIl91c2VTdG9yZVNlbGVjdG9yIiwiX3VzZVN0b3JlU2VsZWN0b3IyIiwiX3NsaWNlZFRvQXJyYXkiLCJmaWVsZFZhbHVlIiwiZmllbGRFcnJvciIsImZpZWxkVG91Y2hlZCIsImZpZWxkVmFsaWRhdGluZyIsInJldGFpbkZpZWxkIiwiZXhpc3RpbmdSdWxlcyIsInJlZ2lzdGVyRmllbGQiLCJyZWxlYXNlRmllbGQiLCJoYW5kbGVGaWVsZENoYW5nZSIsInNldEZpZWxkVmFsdWUiLCJ2YWxpZGF0ZUZpZWxkIiwiaGFuZGxlQmx1ciIsImZpZWxkUHJvcHMiLCJvbkNoYW5nZSIsIm9uQmx1ciIsImhhbmRsZU1lcmdlQ2hhbmdlIiwiX3R5cGVvZiIsInRhcmdldCIsImlzVmFsaWRFbGVtZW50IiwiaGFuZGxlTWVyZ2VCbHVyIiwiZG9tU2FmZVByb3BzIiwiY2xvbmVFbGVtZW50IiwiQXJyYXkiLCJpc0FycmF5IiwiY3JlYXRlRWxlbWVudCIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheSIsImNoaWxkIiwiaW5kZXgiLCJrZXkiLCJkaXNwbGF5TmFtZSIsImhhbmRsZVN1Ym1pdCIsIl9jYWxsZWU1IiwidmFsaWRhdGVkVmFsdWVzIiwiX3QzIiwiX2NvbnRleHQ1IiwicHJldmVudERlZmF1bHQiLCJjb25zb2xlIiwiaGFuZGxlUmVzZXQiLCJyZXNldEZpZWxkcyIsImdldEZpZWxkRXJyb3IiLCJnZXRGaWVsZFdhcm5pbmciLCJnZXRGaWVsZHNFcnJvciIsImlzRmllbGRUb3VjaGVkIiwiaXNGaWVsZHNUb3VjaGVkIiwiYWxsRmllbGRzVG91Y2hlZCIsImV2ZXJ5IiwiaXNGaWVsZFZhbGlkYXRpbmciLCJzZXRGaWVsZHNFcnJvciIsImZpZWxkc0Vycm9yIiwiZW50cmllcyIsIl9yZWYiLCJfcmVmMiIsInNldEZpZWxkRXJyb3IiLCJzZXRGaWVsZFRvdWNoZWQiLCJpc1RvdWNoZWQiLCJzZXRGaWVsZHNUb3VjaGVkIiwiZmllbGRzVG91Y2giLCJyZXNldEZvcm1GaWVsZHMiLCJmaWVsZHMiLCJpbml0aWFsVmFsdWVzIiwiZ2V0SW5pdGlhbFZhbHVlcyIsIm5ld1ZhbHVlcyIsImZpZWxkIiwiaW5pdGlhbCIsImluY2x1ZGVzIiwiaW52YWxpZGF0ZVZhbGlkYXRpb25SdW5zIiwibmV3VG91Y2hlZCIsInN1Ym1pdFdpdGhWYWxpZGF0aW9uIiwiY2FsbGJhY2siLCJfY2FsbGVlNiIsIl90NCIsIl90NSIsIl9jb250ZXh0NiIsImZvcm1JbnN0YW5jZSIsInZhbGlkYXRlRmllbGRzIiwic3VibWl0IiwidW5yZWdpc3RlckZpZWxkIiwic2V0UnVsZUNvbnRleHRJbnN0YW5jZSIsImludGVybmFscyIsInNldEZpZWxkV2FybmluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFJQSxTQUFTLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsU0FBUyxJQUFLLFVBQVVDLE9BQU8sRUFBRUMsVUFBVSxFQUFFQyxDQUFDLEVBQUVDLFNBQVMsRUFBRTtFQUNyRixTQUFTQyxLQUFLQSxDQUFDQyxLQUFLLEVBQUU7SUFBRSxPQUFPQSxLQUFLLFlBQVlILENBQUMsR0FBR0csS0FBSyxHQUFHLElBQUlILENBQUMsQ0FBQyxVQUFVSSxPQUFPLEVBQUU7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USxDQUFDNEcsV0FBVyxFQUNwQjVHLFFBQVEsQ0FBQytHLFlBQVksRUFDckJ3QixZQUFZLEVBQ1pPLFdBQVcsQ0FDWixDQUNGO0VBRUQsT0FBTztJQUFFb0MsWUFBWSxFQUFaQSxZQUFZO0lBQUVLLFNBQVMsRUFBVEEsU0FBUztJQUFFdEwsS0FBSyxFQUFMQTtFQUFLLENBQUU7QUFDM0MsQ0FBQztBQUVELGVBQWVWLE9BQU8iLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvaG9va3MvdXNlRm9ybS5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsgdXNlTWVtbywgdXNlRWZmZWN0LCB1c2VSZWYsIG1lbW8sIEZyYWdtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgdXNlTWVtb2l6ZWRGbiBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZU1lbW9pemVkRm4nO1xuaW1wb3J0IHsgdXNlRm9ybUNvcmUgfSBmcm9tICcuL3VzZUZvcm1Db3JlJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSwgc2V0TmVzdGVkVmFsdWUgfSBmcm9tICcuLi9wYXRoVXRpbHMnO1xuaW1wb3J0IHsgY29lcmNlRmFpbHVyZVJlYXNvbiwgZmlsdGVyUnVsZXNCeVRyaWdnZXIsIG5vcm1hbGl6ZVRyaWdnZXJzLCByZXNvbHZlUnVsZXMsIHJ1blJ1bGVzQXN5bmMsIH0gZnJvbSAnLi4vcnVuUnVsZXMnO1xuaW1wb3J0IHsgdXNlU3RvcmVTZWxlY3Rvciwgc2hhbGxvd0VxdWFsQXJyYXlzLCBzYW1lVmFsaWRhdGlvbk5vZGUgfSBmcm9tICcuLi9mb3JtU3RvcmUnO1xuaW1wb3J0IHsgRm9ybVZhbGlkYXRpb25FcnJvciB9IGZyb20gJy4uL3ZhbGlkYXRpb25FcnJvcic7XG4vKipcbiAqIE9ubHkgcnVsZXMgd2l0aCBhIGN1c3RvbSBgdmFsaWRhdG9yYCBjYW4gYmUgZ2VudWluZWx5IGFzeW5jaHJvbm91cyDigJRcbiAqIGJ1aWx0aW4gcnVsZXMgcmVzb2x2ZSB3aXRoaW4gYSBtaWNyb3Rhc2ssIHNvIGZsaXBwaW5nIGB2YWxpZGF0aW5nYCBmb3JcbiAqIHRoZW0gd291bGQgb25seSBjaHVybiBzdWJzY3JpYmVycyB3aXRob3V0IGV2ZXIgYmVpbmcgdmlzaWJsZS4gRGVjaWRlZCBvblxuICogUkVTT0xWRUQgcnVsZXM6IGEgZnVuY3Rpb24tZm9ybSBydWxlIHRoYXQgcmVzb2x2ZXMgdG8gYnVpbHRpbi1vbmx5IGNoZWNrc1xuICogbXVzdCBub3QgZmxpY2tlciB0aGUgZmxhZy5cbiAqL1xuY29uc3QgaGFzUmVzb2x2ZWRWYWxpZGF0b3IgPSAocmVzb2x2ZWQpID0+IHJlc29sdmVkLnNvbWUoKHJ1bGUpID0+IHR5cGVvZiBydWxlLnZhbGlkYXRvciA9PT0gJ2Z1bmN0aW9uJyk7XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIHVzZUZvcm1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZXhwb3J0IGNvbnN0IHVzZUZvcm0gPSAoY29uZmlnID0ge30pID0+IHtcbiAgICBjb25zdCB7IG9uRmluaXNoLCBvbkZpbmlzaEZhaWxlZCwgb25SZXNldCwgdmFsaWRhdGVUcmlnZ2VyID0gJ29uQ2hhbmdlJywgfSA9IGNvbmZpZztcbiAgICBjb25zdCBmb3JtQ29yZSA9IHVzZUZvcm1Db3JlKGNvbmZpZyk7XG4gICAgY29uc3QgeyBzdG9yZSB9ID0gZm9ybUNvcmU7XG4gICAgLy8gRXBvY2ggb2YgdGhlIExBVEVTVCBhc3luYyBydW4gdGhhdCByYWlzZWQgZWFjaCBmaWVsZCdzIGB2YWxpZGF0aW5nYCBmbGFnLlxuICAgIC8vIEEgc2V0dGxpbmcgcnVuIGNsZWFycyB0aGUgZmxhZyBvbmx5IHdoaWxlIGl0IGlzIHN0aWxsIHRoZSBsYXRlc3QgcmFpc2VyIOKAlFxuICAgIC8vIGFuIG9sZGVyIHJ1biBtdXN0IG5vdCBibGFuayB0aGUgc3Bpbm5lciBvZiBhIG5ld2VyIG9uZSwgYW5kIGEgcnVuXG4gICAgLy8gc3VwZXJzZWRlZCBieSBhIFNZTkMgY29tbWl0ICh3aGljaCBuZXZlciB0b3VjaGVzIGZsYWdzKSBtdXN0IHN0aWxsIGNsZWFuXG4gICAgLy8gdXAgYWZ0ZXIgaXRzZWxmLlxuICAgIGNvbnN0IGxhc3RBc3luY0Vwb2NoUmVmID0gdXNlUmVmKHt9KTtcbiAgICAvLyBNYXJrIGZpZWxkcyBhcyB2YWxpZGF0aW5nIGluIE9ORSBjb21taXQuIHZhbGlkYXRpbmcgLyB0b3VjaGVkIGxpdmUgaW4gdGhlXG4gICAgLy8gc3RvcmUgYWxvbmdzaWRlIHZhbHVlcyDigJQgZmxpcHBpbmcgdGhlbSAoZS5nLiBhc3luYyB2YWxpZGF0aW9uIGFyb3VuZCBhXG4gICAgLy8gYmx1cikgbXVzdCBub3QgcmUtcmVuZGVyIHRoZSBmb3JtIHJvb3QsIG9ubHkgdGhlIGZpZWxkcyB0aGF0IHN1YnNjcmliZWQuXG4gICAgY29uc3QgbWFya1ZhbGlkYXRpbmcgPSB1c2VNZW1vaXplZEZuKChuYW1lcykgPT4ge1xuICAgICAgICBpZiAobmFtZXMubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBuZXh0ID0gT2JqZWN0LmFzc2lnbih7fSwgc3RvcmUuZ2V0U3RhdGUoKS52YWxpZGF0aW5nKTtcbiAgICAgICAgbmFtZXMuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgICAgICAgbmV4dFtuYW1lXSA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7IHZhbGlkYXRpbmc6IG5leHQgfSk7XG4gICAgfSk7XG4gICAgLy8gRm9sZCBwZXItZmllbGQgcnVsZSBvdXRjb21lcyBpbnRvIEFUIE1PU1Qgb25lIHN0b3JlIGNvbW1pdDogZXJyb3JzIGFuZFxuICAgIC8vIHdhcm5pbmdzIGFyZSBtZXJnZWQgb3ZlciB0aGUgY3VycmVudCBtYXBzIGFuZCB0aGUgYGNsZWFyVmFsaWRhdGluZ2AgZmxhZ3NcbiAgICAvLyBhcmUgcmVtb3ZlZCBpbiB0aGUgU0FNRSBwYXRjaC4gQSBuby1vcCBvdXRjb21lIGNvbW1pdHMgbm90aGluZyBhdCBhbGwg4oCUXG4gICAgLy8gcGVyLWZpZWxkIGNvbW1pdHMgaGVyZSBwcmV2aW91c2x5IG1hZGUgc3VibWl0LXRpbWUgdmFsaWRhdGlvbiBzd2VlcCBldmVyeVxuICAgIC8vIHN1YnNjcmliZXIgTyhmaWVsZHMpIHRpbWVzLlxuICAgIGNvbnN0IGNvbW1pdFJ1bGVPdXRjb21lcyA9IHVzZU1lbW9pemVkRm4oKG91dGNvbWVzLCBjbGVhclZhbGlkYXRpbmcpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICAgICAgICBsZXQgZXJyb3JzQ2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICBsZXQgd2FybmluZ3NDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IG5ld0Vycm9ycyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLmVycm9ycyk7XG4gICAgICAgIGNvbnN0IG5ld1dhcm5pbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUud2FybmluZ3MpO1xuICAgICAgICBmb3IgKGNvbnN0IHsgbmFtZSwgZXJyb3IsIHdhcm5pbmcgfSBvZiBvdXRjb21lcykge1xuICAgICAgICAgICAgaWYgKGVycm9yID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5hbWUgaW4gbmV3RXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdFcnJvcnNbbmFtZV07XG4gICAgICAgICAgICAgICAgICAgIGVycm9yc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFzYW1lVmFsaWRhdGlvbk5vZGUobmV3RXJyb3JzW25hbWVdLCBlcnJvcikpIHtcbiAgICAgICAgICAgICAgICBuZXdFcnJvcnNbbmFtZV0gPSBlcnJvcjtcbiAgICAgICAgICAgICAgICBlcnJvcnNDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh3YXJuaW5nID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5hbWUgaW4gbmV3V2FybmluZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG5ld1dhcm5pbmdzW25hbWVdO1xuICAgICAgICAgICAgICAgICAgICB3YXJuaW5nc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFzYW1lVmFsaWRhdGlvbk5vZGUobmV3V2FybmluZ3NbbmFtZV0sIHdhcm5pbmcpKSB7XG4gICAgICAgICAgICAgICAgbmV3V2FybmluZ3NbbmFtZV0gPSB3YXJuaW5nO1xuICAgICAgICAgICAgICAgIHdhcm5pbmdzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmxhZ3NUb0NsZWFyID0gY2xlYXJWYWxpZGF0aW5nLmZpbHRlcigobmFtZSkgPT4gbmFtZSBpbiBzdGF0ZS52YWxpZGF0aW5nKTtcbiAgICAgICAgY29uc3QgcGF0Y2ggPSB7fTtcbiAgICAgICAgaWYgKGVycm9yc0NoYW5nZWQpXG4gICAgICAgICAgICBwYXRjaC5lcnJvcnMgPSBuZXdFcnJvcnM7XG4gICAgICAgIGlmICh3YXJuaW5nc0NoYW5nZWQpXG4gICAgICAgICAgICBwYXRjaC53YXJuaW5ncyA9IG5ld1dhcm5pbmdzO1xuICAgICAgICBpZiAoZmxhZ3NUb0NsZWFyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbGlkYXRpbmcgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS52YWxpZGF0aW5nKTtcbiAgICAgICAgICAgIGZsYWdzVG9DbGVhci5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG5ld1ZhbGlkYXRpbmdbbmFtZV07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHBhdGNoLnZhbGlkYXRpbmcgPSBuZXdWYWxpZGF0aW5nO1xuICAgICAgICB9XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhwYXRjaCkubGVuZ3RoID4gMClcbiAgICAgICAgICAgIHN0b3JlLnNldFN0YXRlKHBhdGNoKTtcbiAgICB9KTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBBc3luYyBmaWVsZCB2YWxpZGF0aW9uIOKAkyBlYWNoIHJ1bGUgaXMgcHJvY2Vzc2VkIGV4YWN0bHkgb25jZVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IHZhbGlkYXRlRmllbGRBc3luYyA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIHZhbHVlLCBydWxlcykgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCFydWxlcyB8fCBydWxlcy5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm4geyBpc1ZhbGlkOiB0cnVlLCBlcnJvcjogbnVsbCB9O1xuICAgICAgICAvLyBDYXB0dXJlIHRoaXMgcnVuJ3MgZXBvY2g6IGlmIGEgTkVXRVIgcnVuIChzeW5jIG9yIGFzeW5jKSBzdGFydHMgZm9yXG4gICAgICAgIC8vIHRoZSBmaWVsZCBiZWZvcmUgdGhpcyBvbmUgc2V0dGxlcywgdGhlIG91dGNvbWUgYmVsb3cgaXMgc3RhbGUgYW5kIGlzXG4gICAgICAgIC8vIGRpc2NhcmRlZCBpbnN0ZWFkIG9mIG92ZXJ3cml0aW5nIHRoZSBuZXdlciByZXN1bHQuXG4gICAgICAgIGNvbnN0IGVwb2NoID0gZm9ybUNvcmUuYmVnaW5WYWxpZGF0aW9uUnVuKG5hbWUpO1xuICAgICAgICAvLyBSZXNvbHZlIG9uY2U6IHRoZSBmbGFnIGRlY2lzaW9uIG5lZWRzIHJlc29sdmVkIHJ1bGVzLCBhbmQgcGFzc2luZyB0aGVcbiAgICAgICAgLy8gcmVzb2x2ZWQgYXJyYXkgb253YXJkIHNwYXJlcyB0aGUgZW5naW5lIGEgcmUtcmVzb2x1dGlvbi5cbiAgICAgICAgY29uc3QgdmFsdWVzID0gZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUoKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlUnVsZXMocnVsZXMsIHZhbHVlcywgZm9ybUNvcmUuZ2V0UnVsZUNvbnRleHRJbnN0YW5jZSgpKTtcbiAgICAgICAgY29uc3QgZmxhZ2dlZCA9IGhhc1Jlc29sdmVkVmFsaWRhdG9yKHJlc29sdmVkKSA/IFtuYW1lXSA6IFtdO1xuICAgICAgICBtYXJrVmFsaWRhdGluZyhmbGFnZ2VkKTtcbiAgICAgICAgZmxhZ2dlZC5mb3JFYWNoKChmbGFnZ2VkTmFtZSkgPT4ge1xuICAgICAgICAgICAgbGFzdEFzeW5jRXBvY2hSZWYuY3VycmVudFtmbGFnZ2VkTmFtZV0gPSBlcG9jaDtcbiAgICAgICAgfSk7XG4gICAgICAgIGxldCBvdXRjb21lID0geyBuYW1lLCBlcnJvcjogbnVsbCwgd2FybmluZzogbnVsbCB9O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgeyBlcnJvciwgd2FybmluZyB9ID0geWllbGQgcnVuUnVsZXNBc3luYyhuYW1lLCB2YWx1ZSwgdmFsdWVzLCByZXNvbHZlZCwgZm9ybUNvcmUuZ2V0UnVsZUNvbnRleHRJbnN0YW5jZSgpKTtcbiAgICAgICAgICAgIG91dGNvbWUgPSB7IG5hbWUsIGVycm9yLCB3YXJuaW5nIH07XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgLy8gVGhlIGVuZ2luZSBjb250YWlucyBydWxlLWxldmVsIHRocm93cyBpdHNlbGY7IHRoaXMgaXMgYSBsYXN0LXJlc29ydFxuICAgICAgICAgICAgLy8gbmV0IHNvIGFuIHVuZXhwZWN0ZWQgZmFpbHVyZSBzdXJmYWNlcyBhcyBhIGZpZWxkIGVycm9yIGluc3RlYWQgb2ZcbiAgICAgICAgICAgIC8vIGxlYXZpbmcgdGhlIGZpZWxkIG1hcmtlZCB2YWxpZC5cbiAgICAgICAgICAgIG91dGNvbWUgPSB7IG5hbWUsIGVycm9yOiAoX2EgPSBjb2VyY2VGYWlsdXJlUmVhc29uKGVycikpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICdWYWxpZGF0aW9uIGZhaWxlZCcsIHdhcm5pbmc6IG51bGwgfTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIGNvbnN0IGlzQ3VycmVudCA9IGZvcm1Db3JlLmlzVmFsaWRhdGlvblJ1bkN1cnJlbnQobmFtZSwgZXBvY2gpO1xuICAgICAgICAgICAgY29uc3QgY2xlYXJGbGFncyA9IGZsYWdnZWQuZmlsdGVyKChmbGFnZ2VkTmFtZSkgPT4gbGFzdEFzeW5jRXBvY2hSZWYuY3VycmVudFtmbGFnZ2VkTmFtZV0gPT09IGVwb2NoKTtcbiAgICAgICAgICAgIGNvbW1pdFJ1bGVPdXRjb21lcyhpc0N1cnJlbnQgPyBbb3V0Y29tZV0gOiBbXSwgY2xlYXJGbGFncyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhlIENBTExFUiBnZXRzIHRoaXMgcnVuJ3Mgb3duIHJlc3VsdCBlaXRoZXIgd2F5IChpdHMgcHJvbWlzZSBpc1xuICAgICAgICAvLyBhYm91dCB0aGUgdmFsdWUgaXQgd2FzIGFza2VkIHRvIHZhbGlkYXRlKTsgb25seSB0aGUgU1RPUkUgY29tbWl0IGlzXG4gICAgICAgIC8vIHN0YWxlbmVzcy1ndWFyZGVkLlxuICAgICAgICByZXR1cm4geyBpc1ZhbGlkOiBvdXRjb21lLmVycm9yID09PSBudWxsLCBlcnJvcjogb3V0Y29tZS5lcnJvciB9O1xuICAgIH0pKTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBBc3luYyBmaWVsZCBibHVyIGhhbmRsZXJcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBoYW5kbGVGaWVsZEJsdXIgPSB1c2VFdmVudENhbGxiYWNrKChuYW1lLCBmaWVsZFRyaWdnZXIpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCB0b3VjaGVkID0gc3RvcmUuZ2V0U3RhdGUoKS50b3VjaGVkO1xuICAgICAgICBpZiAoIXRvdWNoZWRbbmFtZV0pIHtcbiAgICAgICAgICAgIHN0b3JlLnNldFN0YXRlKHsgdG91Y2hlZDogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB0b3VjaGVkKSwgeyBbbmFtZV06IHRydWUgfSkgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcnVsZXMgPSBmb3JtQ29yZS5nZXRGaWVsZFJ1bGVzKG5hbWUpO1xuICAgICAgICBpZiAoIXJ1bGVzKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSBmb3JtQ29yZS5nZXRGaWVsZHNWYWx1ZSgpO1xuICAgICAgICBjb25zdCBhcHBsaWNhYmxlID0gZmlsdGVyUnVsZXNCeVRyaWdnZXIocmVzb2x2ZVJ1bGVzKHJ1bGVzLCB2YWx1ZXMsIGZvcm1Db3JlLmdldFJ1bGVDb250ZXh0SW5zdGFuY2UoKSksICdvbkJsdXInLCBub3JtYWxpemVUcmlnZ2VycyhmaWVsZFRyaWdnZXIsIHZhbGlkYXRlVHJpZ2dlciksIG5hbWUpO1xuICAgICAgICBpZiAoYXBwbGljYWJsZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB5aWVsZCB2YWxpZGF0ZUZpZWxkQXN5bmMobmFtZSwgcmVzb2x2ZVZhbHVlKHZhbHVlcywgbmFtZSksIGFwcGxpY2FibGUpO1xuICAgICAgICB9XG4gICAgfSkpO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIFZhbGlkYXRlIGFsbCBmaWVsZHMgYXN5bmNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCB2YWxpZGF0ZUZpZWxkc0FzeW5jID0gdXNlTWVtb2l6ZWRGbigobmFtZUxpc3QpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBmaWVsZHNUb1ZhbGlkYXRlID0gbmFtZUxpc3QgfHwgT2JqZWN0LmtleXMoZm9ybUNvcmUuZmllbGRSdWxlcyk7XG4gICAgICAgIGNvbnN0IGZpZWxkRXJyb3JzID0ge307XG4gICAgICAgIC8vIFJlc29sdmUgZXZlcnkgZmllbGQgb25jZSB1cCBmcm9udDogdGhlIGZsYWcgZGVjaXNpb24gbmVlZHMgcmVzb2x2ZWRcbiAgICAgICAgLy8gcnVsZXMsIGFuZCB0aGUgcmVzb2x2ZWQgYXJyYXlzIGFyZSByZXVzZWQgZm9yIHRoZSBhY3R1YWwgcnVucy4gRWFjaFxuICAgICAgICAvLyBmaWVsZCBhbHNvIGNhcHR1cmVzIGl0cyB2YWxpZGF0aW9uIGVwb2NoIOKAlCBhIGZpZWxkIHdob3NlIHZhbHVlXG4gICAgICAgIC8vIGNoYW5nZXMgbWlkLXN1Ym1pdCBnZXRzIGEgbmV3ZXIgcnVuLCBhbmQgdGhpcyBydW4ncyBzdGFsZSBvdXRjb21lXG4gICAgICAgIC8vIG11c3Qgbm90IG92ZXJ3cml0ZSBpdCBpbiB0aGUgc3RvcmUuXG4gICAgICAgIGNvbnN0IHJlc29sdmVkQnlGaWVsZCA9IG5ldyBNYXAoKTtcbiAgICAgICAgY29uc3QgZXBvY2hCeUZpZWxkID0gbmV3IE1hcCgpO1xuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgZmllbGRzVG9WYWxpZGF0ZSkge1xuICAgICAgICAgICAgY29uc3QgcnVsZXMgPSBmb3JtQ29yZS5maWVsZFJ1bGVzW25hbWVdO1xuICAgICAgICAgICAgaWYgKHJ1bGVzKSB7XG4gICAgICAgICAgICAgICAgZXBvY2hCeUZpZWxkLnNldChuYW1lLCBmb3JtQ29yZS5iZWdpblZhbGlkYXRpb25SdW4obmFtZSkpO1xuICAgICAgICAgICAgICAgIHJlc29sdmVkQnlGaWVsZC5zZXQobmFtZSwgcmVzb2x2ZVJ1bGVzKHJ1bGVzLCBmb3JtQ29yZS5nZXRGaWVsZHNWYWx1ZSgpLCBmb3JtQ29yZS5nZXRSdWxlQ29udGV4dEluc3RhbmNlKCkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBPbmUgY29tbWl0IHRvIHJhaXNlIHRoZSB2YWxpZGF0aW5nIGZsYWdzICh2YWxpZGF0b3ItYmVhcmluZyBmaWVsZHNcbiAgICAgICAgLy8gb25seSksIG9uZSBjb21taXQgdG8gbGFuZCBldmVyeSBlcnJvci93YXJuaW5nIGFuZCBjbGVhciB0aGUgZmxhZ3MuXG4gICAgICAgIGNvbnN0IGZsYWdnZWQgPSBmaWVsZHNUb1ZhbGlkYXRlLmZpbHRlcigobmFtZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlZEJ5RmllbGQuZ2V0KG5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVkID8gaGFzUmVzb2x2ZWRWYWxpZGF0b3IocmVzb2x2ZWQpIDogZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgICBtYXJrVmFsaWRhdGluZyhmbGFnZ2VkKTtcbiAgICAgICAgZmxhZ2dlZC5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAgICAgICBsYXN0QXN5bmNFcG9jaFJlZi5jdXJyZW50W25hbWVdID0gZXBvY2hCeUZpZWxkLmdldChuYW1lKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IG91dGNvbWVzID0gW107XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB5aWVsZCBQcm9taXNlLmFsbChmaWVsZHNUb1ZhbGlkYXRlLm1hcCgobmFtZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZWRCeUZpZWxkLmdldChuYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoIXJlc29sdmVkKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgbGV0IGVycm9yID0gbnVsbDtcbiAgICAgICAgICAgICAgICBsZXQgd2FybmluZyA9IG51bGw7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgKHsgZXJyb3IsIHdhcm5pbmcgfSA9IHlpZWxkIHJ1blJ1bGVzQXN5bmMobmFtZSwgcmVzb2x2ZVZhbHVlKGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlKCksIG5hbWUpLCBmb3JtQ29yZS5nZXRGaWVsZHNWYWx1ZSgpLCByZXNvbHZlZCwgZm9ybUNvcmUuZ2V0UnVsZUNvbnRleHRJbnN0YW5jZSgpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTGFzdC1yZXNvcnQgbmV0IChzZWUgdmFsaWRhdGVGaWVsZEFzeW5jKSDigJQga2VlcCB0aGUgbm9ybWFsXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0cnVjdGVkLWVycm9yIGZsb3cgc28gb25GaW5pc2hGYWlsZWQgZ2V0cyBhIHJlYWwgcGF5bG9hZC5cbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSAoX2EgPSBjb2VyY2VGYWlsdXJlUmVhc29uKGVycikpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICdWYWxpZGF0aW9uIGZhaWxlZCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFRoZSBzdG9yZSBjb21taXQgaXMgc3RhbGVuZXNzLWd1YXJkZWQ7IHRoZSBTVUJNSVQgZGVjaXNpb25cbiAgICAgICAgICAgICAgICAvLyAoZmllbGRFcnJvcnMgLyB0aGUgdGhyb3duIEZvcm1WYWxpZGF0aW9uRXJyb3IpIHN0aWxsIHJlZmxlY3RzXG4gICAgICAgICAgICAgICAgLy8gdGhpcyBydW4ncyBvd24gcmVzdWx0cyBmb3IgdGhlIHZhbHVlcyBpdCB2YWxpZGF0ZWQuXG4gICAgICAgICAgICAgICAgY29uc3QgZXBvY2ggPSBlcG9jaEJ5RmllbGQuZ2V0KG5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChlcG9jaCAhPT0gdW5kZWZpbmVkICYmIGZvcm1Db3JlLmlzVmFsaWRhdGlvblJ1bkN1cnJlbnQobmFtZSwgZXBvY2gpKSB7XG4gICAgICAgICAgICAgICAgICAgIG91dGNvbWVzLnB1c2goeyBuYW1lLCBlcnJvciwgd2FybmluZyB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkRXJyb3JzW25hbWVdID0gZXJyb3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIGNvbnN0IGNsZWFyRmxhZ3MgPSBmbGFnZ2VkLmZpbHRlcigobmFtZSkgPT4gbGFzdEFzeW5jRXBvY2hSZWYuY3VycmVudFtuYW1lXSA9PT0gZXBvY2hCeUZpZWxkLmdldChuYW1lKSk7XG4gICAgICAgICAgICBjb21taXRSdWxlT3V0Y29tZXMob3V0Y29tZXMsIGNsZWFyRmxhZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhmaWVsZEVycm9ycykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1WYWxpZGF0aW9uRXJyb3IoZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUoKSwgZmllbGRFcnJvcnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuYW1lTGlzdCkge1xuICAgICAgICAgICAgcmV0dXJuIG5hbWVMaXN0LnJlZHVjZSgoYWNjLCBuYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgYWNjW25hbWVdID0gcmVzb2x2ZVZhbHVlKGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlKCksIG5hbWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LCB7fSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlKCk7XG4gICAgfSkpO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIGRlZmluZUZpZWxkIOKAkyB1c2VkIGJ5IHN0YW5kYWxvbmUgKG5vbi1Qcm9Gb3JtKSBjb25zdW1lcnNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBkZWZpbmVGaWVsZCA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIGZpZWxkT3B0aW9ucyA9IHt9KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgcnVsZXMgPSBbXSB9ID0gZmllbGRPcHRpb25zO1xuICAgICAgICBjb25zdCBGaWVsZENvbXBvbmVudCA9IG1lbW8oKF9hKSA9PiB7XG4gICAgICAgICAgICB2YXIgeyBjaGlsZHJlbiwgcmVuZGVyIH0gPSBfYSwgcHJvcHMgPSBfX3Jlc3QoX2EsIFtcImNoaWxkcmVuXCIsIFwicmVuZGVyXCJdKTtcbiAgICAgICAgICAgIC8vIFBlci1maWVsZCBzdG9yZSBzdWJzY3JpcHRpb246IHRoaXMgZmllbGQgcmUtcmVuZGVycyBvbmx5IHdoZW4gaXRzXG4gICAgICAgICAgICAvLyBvd24gdmFsdWUvZXJyb3IvdG91Y2hlZC92YWxpZGF0aW5nIHNsaWNlIGNoYW5nZXMuIERvdC1wYXRoc1xuICAgICAgICAgICAgLy8gcmVzb2x2ZSBpbnRvIHRoZSBuZXN0ZWQgdmFsdWVzIGxpa2UgZXZlcnl3aGVyZSBlbHNlLlxuICAgICAgICAgICAgY29uc3QgW2ZpZWxkVmFsdWUsIGZpZWxkRXJyb3IsIGZpZWxkVG91Y2hlZCwgZmllbGRWYWxpZGF0aW5nXSA9IHVzZVN0b3JlU2VsZWN0b3Ioc3RvcmUsIChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAoX2EgPSByZXNvbHZlVmFsdWUoc3RhdGUudmFsdWVzLCBuYW1lKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycsXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLmVycm9yc1tuYW1lXSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUudG91Y2hlZFtuYW1lXSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUudmFsaWRhdGluZ1tuYW1lXSxcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSwgc2hhbGxvd0VxdWFsQXJyYXlzKTtcbiAgICAgICAgICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gTW91bnQtY291bnRlZDogcmVsZWFzZUZpZWxkIHJlbW92ZXMgdGhlIHJ1bGVzIG9ubHkgd2hlbiB0aGVcbiAgICAgICAgICAgICAgICAvLyBMQVNUIHNhbWUtbmFtZSBpbnN0YW5jZSB1bm1vdW50cyDigJQgYW4gaW5zdGFuY2UgdGhhdCBwaWdneWJhY2tlZFxuICAgICAgICAgICAgICAgIC8vIG9uIGFuIGV4aXN0aW5nIHJlZ2lzdHJhdGlvbiAoZS5nLiBhIFByb0Zvcm0uSXRlbSdzKSBjYW4gbmV2ZXJcbiAgICAgICAgICAgICAgICAvLyB3aXBlIGl0IG9uIGl0cyBvd24gdW5tb3VudC5cbiAgICAgICAgICAgICAgICBmb3JtQ29yZS5yZXRhaW5GaWVsZChuYW1lKTtcbiAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ1J1bGVzID0gZm9ybUNvcmUuZ2V0RmllbGRSdWxlcyhuYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoIWV4aXN0aW5nUnVsZXMgJiYgcnVsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBmb3JtQ29yZS5yZWdpc3RlckZpZWxkKG5hbWUsIHJ1bGVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvcmUucmVsZWFzZUZpZWxkKG5hbWUpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LCBbXSk7IC8vIE9ubHkgcmVnaXN0ZXIgb24gbW91bnRcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZUZpZWxkQ2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZFZhbHVlKG5hbWUsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAvLyBUb3VjaGVkIGlzIHNldCBieSB0aGUgdXNlciBjaGFuZ2UgdHJpZ2dlciAobWF0Y2hpbmcgdGhlXG4gICAgICAgICAgICAgICAgLy8gUHJvRm9ybS5JdGVtIHBhdGgpIOKAlCBwcm9ncmFtbWF0aWMgc2V0RmllbGRzVmFsdWUgZG9lcyBub3QuXG4gICAgICAgICAgICAgICAgY29uc3QgdG91Y2hlZCA9IHN0b3JlLmdldFN0YXRlKCkudG91Y2hlZDtcbiAgICAgICAgICAgICAgICBpZiAoIXRvdWNoZWRbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgc3RvcmUuc2V0U3RhdGUoeyB0b3VjaGVkOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHRvdWNoZWQpLCB7IFtuYW1lXTogdHJ1ZSB9KSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgYXBwbGljYWJsZSA9IGZpbHRlclJ1bGVzQnlUcmlnZ2VyKHJlc29sdmVSdWxlcyhydWxlcywgZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUoKSwgZm9ybUNvcmUuZ2V0UnVsZUNvbnRleHRJbnN0YW5jZSgpKSwgJ29uQ2hhbmdlJywgbm9ybWFsaXplVHJpZ2dlcnMoZmllbGRPcHRpb25zLnZhbGlkYXRlVHJpZ2dlciwgdmFsaWRhdGVUcmlnZ2VyKSwgbmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGFwcGxpY2FibGUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBmb3JtQ29yZS52YWxpZGF0ZUZpZWxkKG5hbWUsIGFwcGxpY2FibGUsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZUJsdXIgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgICAgICAgICBoYW5kbGVGaWVsZEJsdXIobmFtZSwgZmllbGRPcHRpb25zLnZhbGlkYXRlVHJpZ2dlcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkUHJvcHMgPSBPYmplY3QuYXNzaWduKHsgbmFtZSwgdmFsdWU6IGZpZWxkVmFsdWUsIGVycm9yOiBmaWVsZEVycm9yLCB0b3VjaGVkOiBmaWVsZFRvdWNoZWQsIHZhbGlkYXRpbmc6IGZpZWxkVmFsaWRhdGluZywgb25DaGFuZ2U6IGhhbmRsZUZpZWxkQ2hhbmdlLCBvbkJsdXI6IGhhbmRsZUJsdXIgfSwgcHJvcHMpO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlTWVyZ2VDaGFuZ2UgPSAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGUgJiYgdHlwZW9mIGUgPT09ICdvYmplY3QnICYmICd0YXJnZXQnIGluIGVcbiAgICAgICAgICAgICAgICAgICAgPyBlLnRhcmdldC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICA6IGU7XG4gICAgICAgICAgICAgICAgaGFuZGxlRmllbGRDaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZHJlbikgJiZcbiAgICAgICAgICAgICAgICAgICAgKChfYSA9IGNoaWxkcmVuLnByb3BzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eub25DaGFuZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnByb3BzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlTWVyZ2VCbHVyID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBoYW5kbGVCbHVyKCk7XG4gICAgICAgICAgICAgICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSAmJlxuICAgICAgICAgICAgICAgICAgICAoKF9hID0gY2hpbGRyZW4ucHJvcHMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vbkJsdXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnByb3BzLm9uQmx1cigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAocmVuZGVyICYmIHR5cGVvZiByZW5kZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyKGZpZWxkUHJvcHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbihmaWVsZFByb3BzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEVsZW1lbnQgY2hpbGRyZW4gcmVjZWl2ZSBvbmx5IERPTS1zYWZlIHByb3BzIOKAlCBlcnJvci90b3VjaGVkL1xuICAgICAgICAgICAgLy8gdmFsaWRhdGluZyBhcmUgZmllbGQgTUVUQSwgbm90IGNvbnRyb2wgcHJvcHM7IHNwcmVhZGluZyB0aGVtIG9udG9cbiAgICAgICAgICAgIC8vIGEgaG9zdCBlbGVtZW50IHdvdWxkIGxlYWsgdW5rbm93biBhdHRyaWJ1dGVzLiBSZW5kZXItcHJvcCBhbmRcbiAgICAgICAgICAgIC8vIGZ1bmN0aW9uIGNoaWxkcmVuIGtlZXAgdGhlIGZ1bGwgZmllbGRQcm9wcy5cbiAgICAgICAgICAgIGNvbnN0IGRvbVNhZmVQcm9wcyA9IE9iamVjdC5hc3NpZ24oeyBuYW1lLCB2YWx1ZTogZmllbGRWYWx1ZSwgb25DaGFuZ2U6IGhhbmRsZU1lcmdlQ2hhbmdlLCBvbkJsdXI6IGhhbmRsZU1lcmdlQmx1ciB9LCBwcm9wcyk7XG4gICAgICAgICAgICBpZiAoUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZHJlbiwgZG9tU2FmZVByb3BzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KEZyYWdtZW50LCBudWxsLCAuLi5jaGlsZHJlbi5tYXAoKGNoaWxkLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkLCBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGRvbVNhZmVQcm9wcyksIHsga2V5OiBjaGlsZC5rZXkgfHwgaW5kZXggfSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgICAgIEZpZWxkQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gYEZpZWxkKCR7bmFtZX0pYDtcbiAgICAgICAgcmV0dXJuIEZpZWxkQ29tcG9uZW50O1xuICAgIH0pO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIGhhbmRsZVN1Ym1pdCAvIGhhbmRsZVJlc2V0IOKAkyBmb3IgPGZvcm0+IGV2ZW50IGhhbmRsZXJzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgaGFuZGxlU3VibWl0ID0gdXNlRXZlbnRDYWxsYmFjaygoZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgdmFsaWRhdGVkVmFsdWVzID0geWllbGQgdmFsaWRhdGVGaWVsZHNBc3luYygpO1xuICAgICAgICAgICAgb25GaW5pc2ggPT09IG51bGwgfHwgb25GaW5pc2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRmluaXNoKHZhbGlkYXRlZFZhbHVlcyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgLy8gT25seSBhIFZBTElEQVRJT04gZmFpbHVyZSByZWFjaGVzIG9uRmluaXNoRmFpbGVkIOKAlCBhbiBleGNlcHRpb24gb3V0XG4gICAgICAgICAgICAvLyBvZiB0aGUgY29uc3VtZXIncyBvd24gb25GaW5pc2ggaXMgbm90IGEgdmFsaWRhdGlvbiByZXN1bHQgYW5kIGlzXG4gICAgICAgICAgICAvLyBzdXJmYWNlZCBpbnN0ZWFkIG9mIGJlaW5nIG1pc3JlcG9ydGVkLlxuICAgICAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEZvcm1WYWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBvbkZpbmlzaEZhaWxlZCA9PT0gbnVsbCB8fCBvbkZpbmlzaEZhaWxlZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25GaW5pc2hGYWlsZWQoeyB2YWx1ZXM6IGVyci52YWx1ZXMsIGVycm9yczogZXJyLmVycm9ycyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tQcm9Gb3JtXSBvbkZpbmlzaCB0aHJldyBkdXJpbmcgc3VibWl0OicsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KSk7XG4gICAgY29uc3QgaGFuZGxlUmVzZXQgPSB1c2VFdmVudENhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBmb3JtQ29yZS5yZXNldEZpZWxkcygpO1xuICAgICAgICBvblJlc2V0ID09PSBudWxsIHx8IG9uUmVzZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uUmVzZXQoKTtcbiAgICB9KTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBGb3JtSW5zdGFuY2Ug4oCTIGVuaGFuY2VkIEFQSSBmb3IgY29uc3VtZXJzLlxuICAgIC8vXG4gICAgLy8gRXZlcnkgbWV0aG9kIGlzIHdyYXBwZWQgaW4gdXNlTWVtb2l6ZWRGbiAoc3RhYmxlIGlkZW50aXR5LCBhbHdheXMgcmVhZHMgdGhlXG4gICAgLy8gbGF0ZXN0IHN0b3JlIHN0YXRlKSBzbyB0aGUgaW5zdGFuY2Ugb2JqZWN0IGl0c2VsZiBpcyBJREVOVElUWS1TVEFCTEUgZm9yXG4gICAgLy8gdGhlIGxpZmV0aW1lIG9mIHRoZSBmb3JtIOKAlCB0aGlzIGlzIHdoYXQgbGV0cyBQcm9Gb3JtIHB1Ymxpc2ggaXQgdGhyb3VnaCB0aGVcbiAgICAvLyBzdGFibGUgY29udGV4dCB3aXRob3V0IHJlLXJlbmRlcmluZyBzdWJzY3JpYmVycyBvbiBlYWNoIGtleXN0cm9rZS5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBnZXRGaWVsZEVycm9yID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4gc3RvcmUuZ2V0U3RhdGUoKS5lcnJvcnNbbmFtZV0pO1xuICAgIGNvbnN0IGdldEZpZWxkV2FybmluZyA9IHVzZU1lbW9pemVkRm4oKG5hbWUpID0+IHN0b3JlLmdldFN0YXRlKCkud2FybmluZ3NbbmFtZV0pO1xuICAgIGNvbnN0IGdldEZpZWxkc0Vycm9yID0gdXNlTWVtb2l6ZWRGbigobmFtZUxpc3QpID0+IHtcbiAgICAgICAgY29uc3QgZXJyb3JzID0gc3RvcmUuZ2V0U3RhdGUoKS5lcnJvcnM7XG4gICAgICAgIGlmICghbmFtZUxpc3QpXG4gICAgICAgICAgICByZXR1cm4gZXJyb3JzO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICAgICAgbmFtZUxpc3QuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGVycm9yc1tuYW1lXSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtuYW1lXSA9IGVycm9yc1tuYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG4gICAgY29uc3QgaXNGaWVsZFRvdWNoZWQgPSB1c2VNZW1vaXplZEZuKChuYW1lKSA9PiBzdG9yZS5nZXRTdGF0ZSgpLnRvdWNoZWRbbmFtZV0gfHwgZmFsc2UpO1xuICAgIGNvbnN0IGlzRmllbGRzVG91Y2hlZCA9IHVzZU1lbW9pemVkRm4oKG5hbWVMaXN0LCBhbGxGaWVsZHNUb3VjaGVkID0gZmFsc2UpID0+IHtcbiAgICAgICAgY29uc3QgdG91Y2hlZCA9IHN0b3JlLmdldFN0YXRlKCkudG91Y2hlZDtcbiAgICAgICAgaWYgKCFuYW1lTGlzdCkge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRvdWNoZWQpLnNvbWUoKGtleSkgPT4gdG91Y2hlZFtrZXldKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWxsRmllbGRzVG91Y2hlZCkge1xuICAgICAgICAgICAgcmV0dXJuIG5hbWVMaXN0LmV2ZXJ5KChuYW1lKSA9PiB0b3VjaGVkW25hbWVdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmFtZUxpc3Quc29tZSgobmFtZSkgPT4gdG91Y2hlZFtuYW1lXSk7XG4gICAgfSk7XG4gICAgY29uc3QgaXNGaWVsZFZhbGlkYXRpbmcgPSB1c2VNZW1vaXplZEZuKChuYW1lKSA9PiBzdG9yZS5nZXRTdGF0ZSgpLnZhbGlkYXRpbmdbbmFtZV0gfHwgZmFsc2UpO1xuICAgIGNvbnN0IHNldEZpZWxkc0Vycm9yID0gdXNlTWVtb2l6ZWRGbigoZmllbGRzRXJyb3IpID0+IHtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoZmllbGRzRXJyb3IpLmZvckVhY2goKFtuYW1lLCBlcnJvcl0pID0+IHtcbiAgICAgICAgICAgIGZvcm1Db3JlLnNldEZpZWxkRXJyb3IobmFtZSwgZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICBjb25zdCBzZXRGaWVsZFRvdWNoZWQgPSB1c2VNZW1vaXplZEZuKChuYW1lLCBpc1RvdWNoZWQgPSB0cnVlKSA9PiB7XG4gICAgICAgIHN0b3JlLnNldFN0YXRlKHsgdG91Y2hlZDogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzdG9yZS5nZXRTdGF0ZSgpLnRvdWNoZWQpLCB7IFtuYW1lXTogaXNUb3VjaGVkIH0pIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IHNldEZpZWxkc1RvdWNoZWQgPSB1c2VNZW1vaXplZEZuKChmaWVsZHNUb3VjaCkgPT4ge1xuICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7IHRvdWNoZWQ6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc3RvcmUuZ2V0U3RhdGUoKS50b3VjaGVkKSwgZmllbGRzVG91Y2gpIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IHJlc2V0Rm9ybUZpZWxkcyA9IHVzZU1lbW9pemVkRm4oKGZpZWxkcykgPT4ge1xuICAgICAgICBpZiAoIWZpZWxkcykge1xuICAgICAgICAgICAgZm9ybUNvcmUucmVzZXRGaWVsZHMoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBNb3VudC1mcm96ZW4gaW5pdGlhbFZhbHVlcyDigJQgY29uc2lzdGVudCB3aXRoIHRoZSBmdWxsIHJlc2V0RmllbGRzLlxuICAgICAgICAvLyBSZWFkcyBBTkQgd3JpdGVzIGFyZSBuZXN0ZWQtcGF0aCBhd2FyZSwgc28gZG90LXBhdGggbmFtZXNcbiAgICAgICAgLy8gKGBhZGRyZXNzLmNpdHlgLCBgaXRlbXMuMC50aXRsZWApIHJlc2V0IGNvcnJlY3RseSBpbnN0ZWFkIG9mIHByb2JpbmcgYVxuICAgICAgICAvLyBsaXRlcmFsIGtleSBhbmQgc2hhbGxvdy1tZXJnaW5nIG9uZSBiYWNrLlxuICAgICAgICBjb25zdCBpbml0aWFsVmFsdWVzID0gZm9ybUNvcmUuZ2V0SW5pdGlhbFZhbHVlcygpO1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHN0b3JlLmdldFN0YXRlKCk7XG4gICAgICAgIGxldCBuZXdWYWx1ZXMgPSBzdGF0ZS52YWx1ZXM7XG4gICAgICAgIGZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5pdGlhbCA9IHJlc29sdmVWYWx1ZShpbml0aWFsVmFsdWVzLCBmaWVsZCk7XG4gICAgICAgICAgICBuZXdWYWx1ZXMgPSBmaWVsZC5pbmNsdWRlcygnLicpXG4gICAgICAgICAgICAgICAgPyBzZXROZXN0ZWRWYWx1ZShuZXdWYWx1ZXMsIGZpZWxkLCBpbml0aWFsKVxuICAgICAgICAgICAgICAgIDogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBuZXdWYWx1ZXMpLCB7IFtmaWVsZF06IGluaXRpYWwgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBMaWtlIHRoZSBmdWxsIHJlc2V0OiBjbGVhciBBTEwgcGVyLWZpZWxkIG1ldGEgKGVycm9ycyBBTkQgd2FybmluZ3MgQU5EXG4gICAgICAgIC8vIHRvdWNoZWQvdmFsaWRhdGluZyksIGludmFsaWRhdGUgaW4tZmxpZ2h0IHZhbGlkYXRpb24gcnVucywgYW5kIGxhbmRcbiAgICAgICAgLy8gZXZlcnl0aGluZyBpbiBPTkUgY29tbWl0LiBObyBvblZhbHVlc0NoYW5nZSDigJQgcmVzZXQgaXMgbm90IGEgY2hhbmdlXG4gICAgICAgIC8vIGV2ZW50IG9uIGVpdGhlciBwYXRoLlxuICAgICAgICBmb3JtQ29yZS5pbnZhbGlkYXRlVmFsaWRhdGlvblJ1bnMoZmllbGRzKTtcbiAgICAgICAgY29uc3QgbmV3RXJyb3JzID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuZXJyb3JzKTtcbiAgICAgICAgY29uc3QgbmV3V2FybmluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS53YXJuaW5ncyk7XG4gICAgICAgIGNvbnN0IG5ld1RvdWNoZWQgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS50b3VjaGVkKTtcbiAgICAgICAgY29uc3QgbmV3VmFsaWRhdGluZyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnZhbGlkYXRpbmcpO1xuICAgICAgICBmaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgIGRlbGV0ZSBuZXdFcnJvcnNbZmllbGRdO1xuICAgICAgICAgICAgZGVsZXRlIG5ld1dhcm5pbmdzW2ZpZWxkXTtcbiAgICAgICAgICAgIGRlbGV0ZSBuZXdUb3VjaGVkW2ZpZWxkXTtcbiAgICAgICAgICAgIGRlbGV0ZSBuZXdWYWxpZGF0aW5nW2ZpZWxkXTtcbiAgICAgICAgfSk7XG4gICAgICAgIHN0b3JlLnNldFN0YXRlKHtcbiAgICAgICAgICAgIHZhbHVlczogbmV3VmFsdWVzLFxuICAgICAgICAgICAgZXJyb3JzOiBuZXdFcnJvcnMsXG4gICAgICAgICAgICB3YXJuaW5nczogbmV3V2FybmluZ3MsXG4gICAgICAgICAgICB0b3VjaGVkOiBuZXdUb3VjaGVkLFxuICAgICAgICAgICAgdmFsaWRhdGluZzogbmV3VmFsaWRhdGluZyxcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc3VibWl0V2l0aFZhbGlkYXRpb24gPSB1c2VNZW1vaXplZEZuKChjYWxsYmFjaykgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGxldCB2YWxpZGF0ZWRWYWx1ZXM7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YWxpZGF0ZWRWYWx1ZXMgPSB5aWVsZCB2YWxpZGF0ZUZpZWxkc0FzeW5jKCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKF9hKSB7XG4gICAgICAgICAgICAvLyBWYWxpZGF0aW9uIGZhaWx1cmUg4oCUIHRoZSBmaWVsZCBlcnJvcnMgYXJlIGFscmVhZHkgaW4gdGhlIHN0b3JlLlxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgeWllbGQgY2FsbGJhY2sodmFsaWRhdGVkVmFsdWVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAvLyBBIHRocm93aW5nIGNhbGxiYWNrIGlzIGEgY29uc3VtZXIgYnVnLCBub3QgYSB2YWxpZGF0aW9uIGZhaWx1cmUg4oCUXG4gICAgICAgICAgICAgICAgLy8gc3VyZmFjZSBpdCAobWlycm9yaW5nIHJjLWZpZWxkLWZvcm0ncyBvbkZpbmlzaCBoYW5kbGluZykgaW5zdGVhZFxuICAgICAgICAgICAgICAgIC8vIG9mIHN3YWxsb3dpbmcgaXQgc2lsZW50bHkuXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignW1Byb0Zvcm1dIHN1Ym1pdCBjYWxsYmFjayB0aHJldzonLCBlcnIpO1xuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlZFZhbHVlcztcbiAgICB9KSk7XG4gICAgY29uc3QgZm9ybUluc3RhbmNlID0gdXNlTWVtbygoKSA9PiAoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBmb3JtQ29yZS5mb3JtSW5zdGFuY2UpLCB7IHZhbGlkYXRlRmllbGRzOiB2YWxpZGF0ZUZpZWxkc0FzeW5jLCBzZXRGaWVsZFZhbHVlOiBmb3JtQ29yZS5zZXRGaWVsZFZhbHVlLCBnZXRGaWVsZEVycm9yLFxuICAgICAgICBnZXRGaWVsZFdhcm5pbmcsXG4gICAgICAgIGdldEZpZWxkc0Vycm9yLFxuICAgICAgICBpc0ZpZWxkVG91Y2hlZCxcbiAgICAgICAgaXNGaWVsZHNUb3VjaGVkLFxuICAgICAgICBpc0ZpZWxkVmFsaWRhdGluZywgc2V0RmllbGRFcnJvcjogZm9ybUNvcmUuc2V0RmllbGRFcnJvciwgc2V0RmllbGRzRXJyb3IsXG4gICAgICAgIHNldEZpZWxkVG91Y2hlZCxcbiAgICAgICAgc2V0RmllbGRzVG91Y2hlZCwgcmVzZXRGaWVsZHM6IHJlc2V0Rm9ybUZpZWxkcywgc3VibWl0OiBzdWJtaXRXaXRoVmFsaWRhdGlvbiwgZGVmaW5lRmllbGQsIHJlZ2lzdGVyRmllbGQ6IGZvcm1Db3JlLnJlZ2lzdGVyRmllbGQsIHVucmVnaXN0ZXJGaWVsZDogZm9ybUNvcmUudW5yZWdpc3RlckZpZWxkIH0pKSwgW1xuICAgICAgICBmb3JtQ29yZS5mb3JtSW5zdGFuY2UsXG4gICAgICAgIGZvcm1Db3JlLnNldEZpZWxkVmFsdWUsXG4gICAgICAgIGZvcm1Db3JlLnNldEZpZWxkRXJyb3IsXG4gICAgICAgIGZvcm1Db3JlLnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIGZvcm1Db3JlLnVucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgdmFsaWRhdGVGaWVsZHNBc3luYyxcbiAgICAgICAgZ2V0RmllbGRFcnJvcixcbiAgICAgICAgZ2V0RmllbGRXYXJuaW5nLFxuICAgICAgICBnZXRGaWVsZHNFcnJvcixcbiAgICAgICAgaXNGaWVsZFRvdWNoZWQsXG4gICAgICAgIGlzRmllbGRzVG91Y2hlZCxcbiAgICAgICAgaXNGaWVsZFZhbGlkYXRpbmcsXG4gICAgICAgIHNldEZpZWxkc0Vycm9yLFxuICAgICAgICBzZXRGaWVsZFRvdWNoZWQsXG4gICAgICAgIHNldEZpZWxkc1RvdWNoZWQsXG4gICAgICAgIHJlc2V0Rm9ybUZpZWxkcyxcbiAgICAgICAgc3VibWl0V2l0aFZhbGlkYXRpb24sXG4gICAgICAgIGRlZmluZUZpZWxkLFxuICAgIF0pO1xuICAgIC8vIEZ1bmN0aW9uLWZvcm0gcnVsZXMgZ2V0IHRoZSBGVUxMIGZvcm0gaW5zdGFuY2UgKGVycm9yIGdldHRlcnMsIHRvdWNoZWRcbiAgICAvLyBzdGF0ZSwgbXV0YXRvcnMpIGluc3RlYWQgb2YgdGhlIGJhcmUgY29yZSBtZXRob2RzLiBSZWYgd3JpdGUg4oCUIGNoZWFwIGFuZFxuICAgIC8vIGlkZW1wb3RlbnQgcGVyIHJlbmRlci5cbiAgICBmb3JtQ29yZS5zZXRSdWxlQ29udGV4dEluc3RhbmNlKGZvcm1JbnN0YW5jZSk7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gSW50ZXJuYWxzIOKAkyBleHBvc2VkIGZvciBQcm9Gb3JtIGludGVncmF0aW9uLiBEYXRhIGZpZWxkcyBhcmUgR0VUVEVSUyB0aGF0XG4gICAgLy8gcmVhZCB0aGUgbGl2ZSBzdG9yZSwgc28gdGhlIG9iamVjdCBpcyBpZGVudGl0eS1zdGFibGUgeWV0IG5ldmVyIHN0YWxlLlxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IGludGVybmFscyA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICAgICAgZ2V0IHZhbHVlcygpIHtcbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5nZXRTdGF0ZSgpLnZhbHVlcztcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGVycm9ycygpIHtcbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5nZXRTdGF0ZSgpLmVycm9ycztcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHdhcm5pbmdzKCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0b3JlLmdldFN0YXRlKCkud2FybmluZ3M7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCB0b3VjaGVkKCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0b3JlLmdldFN0YXRlKCkudG91Y2hlZDtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHZhbGlkYXRpbmcoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuZ2V0U3RhdGUoKS52YWxpZGF0aW5nO1xuICAgICAgICB9LFxuICAgICAgICBmaWVsZFJ1bGVzOiBmb3JtQ29yZS5maWVsZFJ1bGVzLFxuICAgICAgICBzZXRGaWVsZFZhbHVlOiBmb3JtQ29yZS5zZXRGaWVsZFZhbHVlLFxuICAgICAgICBzZXRGaWVsZEVycm9yOiBmb3JtQ29yZS5zZXRGaWVsZEVycm9yLFxuICAgICAgICBzZXRGaWVsZFdhcm5pbmc6IGZvcm1Db3JlLnNldEZpZWxkV2FybmluZyxcbiAgICAgICAgdmFsaWRhdGVGaWVsZDogZm9ybUNvcmUudmFsaWRhdGVGaWVsZCxcbiAgICAgICAgdmFsaWRhdGVGaWVsZEFzeW5jLFxuICAgICAgICByZWdpc3RlckZpZWxkOiBmb3JtQ29yZS5yZWdpc3RlckZpZWxkLFxuICAgICAgICB1bnJlZ2lzdGVyRmllbGQ6IGZvcm1Db3JlLnVucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgcmV0YWluRmllbGQ6IGZvcm1Db3JlLnJldGFpbkZpZWxkLFxuICAgICAgICByZWxlYXNlRmllbGQ6IGZvcm1Db3JlLnJlbGVhc2VGaWVsZCxcbiAgICAgICAgaGFuZGxlU3VibWl0LFxuICAgICAgICBoYW5kbGVSZXNldCxcbiAgICB9KSwgW1xuICAgICAgICBzdG9yZSxcbiAgICAgICAgZm9ybUNvcmUuZmllbGRSdWxlcyxcbiAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRFcnJvcixcbiAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRXYXJuaW5nLFxuICAgICAgICBmb3JtQ29yZS52YWxpZGF0ZUZpZWxkLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkQXN5bmMsXG4gICAgICAgIGZvcm1Db3JlLnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIGZvcm1Db3JlLnVucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgZm9ybUNvcmUucmV0YWluRmllbGQsXG4gICAgICAgIGZvcm1Db3JlLnJlbGVhc2VGaWVsZCxcbiAgICAgICAgaGFuZGxlU3VibWl0LFxuICAgICAgICBoYW5kbGVSZXNldCxcbiAgICBdKTtcbiAgICByZXR1cm4geyBmb3JtSW5zdGFuY2UsIGludGVybmFscywgc3RvcmUgfTtcbn07XG5leHBvcnQgZGVmYXVsdCB1c2VGb3JtOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
799
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2hvb2tzL3VzZUZvcm0uanMiLCJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvaG9va3MvdXNlRm9ybS50cyJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJfX3Jlc3QiLCJzIiwidCIsInAiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiaSIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidXNlTWVtbyIsInVzZUVmZmVjdCIsInVzZVJlZiIsIm1lbW8iLCJGcmFnbWVudCIsIlJlYWN0IiwidXNlRXZlbnRDYWxsYmFjayIsInVzZU1lbW9pemVkRm4iLCJ1c2VGb3JtQ29yZSIsInJlc29sdmVWYWx1ZSIsInNldE5lc3RlZFZhbHVlIiwiY29lcmNlRmFpbHVyZVJlYXNvbiIsImZpbHRlclJ1bGVzQnlUcmlnZ2VyIiwibm9ybWFsaXplVHJpZ2dlcnMiLCJyZXNvbHZlUnVsZXMiLCJydW5SdWxlc0FzeW5jIiwidXNlU3RvcmVTZWxlY3RvciIsInNoYWxsb3dFcXVhbEFycmF5cyIsInNhbWVWYWxpZGF0aW9uTm9kZSIsIkZvcm1WYWxpZGF0aW9uRXJyb3IiLCJhc1J1bGVBcnJheSIsInJ1bGUiLCJBcnJheSIsImlzQXJyYXkiLCJydWxlSGFzVmFsaWRhdG9yIiwidmFsaWRhdG9yIiwiZGVmYXVsdEZpZWxkIiwic29tZSIsImZpZWxkcyIsInZhbHVlcyIsInN1YiIsImhhc1Jlc29sdmVkVmFsaWRhdG9yIiwicmVzb2x2ZWQiLCJ1c2VGb3JtIiwiY29uZmlnIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwib25GaW5pc2giLCJvbkZpbmlzaEZhaWxlZCIsIm9uUmVzZXQiLCJfY29uZmlnJHZhbGlkYXRlVHJpZ2ciLCJ2YWxpZGF0ZVRyaWdnZXIiLCJmb3JtQ29yZSIsInN0b3JlIiwibGFzdEFzeW5jRXBvY2hSZWYiLCJtYXJrVmFsaWRhdGluZyIsIm5hbWVzIiwiYXNzaWduIiwiZ2V0U3RhdGUiLCJ2YWxpZGF0aW5nIiwiZm9yRWFjaCIsIm5hbWUiLCJzZXRTdGF0ZSIsImNvbW1pdFJ1bGVPdXRjb21lcyIsIm91dGNvbWVzIiwiY2xlYXJWYWxpZGF0aW5nIiwic3RhdGUiLCJlcnJvcnNDaGFuZ2VkIiwid2FybmluZ3NDaGFuZ2VkIiwibmV3RXJyb3JzIiwiZXJyb3JzIiwibmV3V2FybmluZ3MiLCJ3YXJuaW5ncyIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJuIiwiX3N0ZXAkdmFsdWUiLCJlcnJvciIsIndhcm5pbmciLCJlcnIiLCJmIiwiZmxhZ3NUb0NsZWFyIiwiZmlsdGVyIiwicGF0Y2giLCJuZXdWYWxpZGF0aW5nIiwia2V5cyIsInZhbGlkYXRlRmllbGRBc3luYyIsInJ1bGVzIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiX2EiLCJlcG9jaCIsImZsYWdnZWQiLCJvdXRjb21lIiwiX3lpZWxkJHJ1blJ1bGVzQXN5bmMiLCJpc0N1cnJlbnQiLCJjbGVhckZsYWdzIiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwiYWJydXB0IiwiaXNWYWxpZCIsImJlZ2luVmFsaWRhdGlvblJ1biIsImdldEZpZWxkc1ZhbHVlIiwiZ2V0UnVsZUNvbnRleHRJbnN0YW5jZSIsImZsYWdnZWROYW1lIiwiY3VycmVudCIsInNlbnQiLCJpc1ZhbGlkYXRpb25SdW5DdXJyZW50IiwiZmluaXNoIiwic3RvcCIsImhhbmRsZUZpZWxkQmx1ciIsImZpZWxkVHJpZ2dlciIsIl9jYWxsZWUyIiwidG91Y2hlZCIsImFwcGxpY2FibGUiLCJfY29udGV4dDIiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRGaWVsZFJ1bGVzIiwidmFsaWRhdGVGaWVsZHNBc3luYyIsIm5hbWVMaXN0IiwiX2NhbGxlZTQiLCJmaWVsZHNUb1ZhbGlkYXRlIiwiZmllbGRFcnJvcnMiLCJyZXNvbHZlZEJ5RmllbGQiLCJlcG9jaEJ5RmllbGQiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiX2NvbnRleHQ0IiwiZmllbGRSdWxlcyIsIk1hcCIsInNldCIsImdldCIsImFsbCIsIm1hcCIsIl9jYWxsZWUzIiwiX3lpZWxkJHJ1blJ1bGVzQXN5bmMyIiwiX3QyIiwiX2NvbnRleHQzIiwicHVzaCIsInJlZHVjZSIsImFjYyIsImRlZmluZUZpZWxkIiwiZmllbGRPcHRpb25zIiwiX2ZpZWxkT3B0aW9ucyRydWxlcyIsIkZpZWxkQ29tcG9uZW50IiwiY2hpbGRyZW4iLCJyZW5kZXIiLCJwcm9wcyIsIl91c2VTdG9yZVNlbGVjdG9yIiwiX3VzZVN0b3JlU2VsZWN0b3IyIiwiX3NsaWNlZFRvQXJyYXkiLCJmaWVsZFZhbHVlIiwiZmllbGRFcnJvciIsImZpZWxkVG91Y2hlZCIsImZpZWxkVmFsaWRhdGluZyIsInJldGFpbkZpZWxkIiwiZXhpc3RpbmdSdWxlcyIsInJlZ2lzdGVyRmllbGQiLCJyZWxlYXNlRmllbGQiLCJoYW5kbGVGaWVsZENoYW5nZSIsInNldEZpZWxkVmFsdWUiLCJoYW5kbGVCbHVyIiwiZmllbGRQcm9wcyIsIm9uQ2hhbmdlIiwib25CbHVyIiwiaGFuZGxlTWVyZ2VDaGFuZ2UiLCJfdHlwZW9mIiwidGFyZ2V0IiwiaXNWYWxpZEVsZW1lbnQiLCJoYW5kbGVNZXJnZUJsdXIiLCJkb21TYWZlUHJvcHMiLCJjbG9uZUVsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiY2hpbGQiLCJpbmRleCIsImtleSIsImRpc3BsYXlOYW1lIiwiaGFuZGxlU3VibWl0IiwiX2NhbGxlZTUiLCJ2YWxpZGF0ZWRWYWx1ZXMiLCJfdDMiLCJfY29udGV4dDUiLCJwcmV2ZW50RGVmYXVsdCIsImNvbnNvbGUiLCJoYW5kbGVSZXNldCIsInJlc2V0RmllbGRzIiwiZ2V0RmllbGRFcnJvciIsImdldEZpZWxkV2FybmluZyIsImdldEZpZWxkc0Vycm9yIiwiaXNGaWVsZFRvdWNoZWQiLCJpc0ZpZWxkc1RvdWNoZWQiLCJhbGxGaWVsZHNUb3VjaGVkIiwiZXZlcnkiLCJpc0ZpZWxkVmFsaWRhdGluZyIsInNldEZpZWxkc0Vycm9yIiwiZmllbGRzRXJyb3IiLCJlbnRyaWVzIiwiX3JlZiIsIl9yZWYyIiwic2V0RmllbGRFcnJvciIsInNldEZpZWxkVG91Y2hlZCIsImlzVG91Y2hlZCIsInNldEZpZWxkc1RvdWNoZWQiLCJmaWVsZHNUb3VjaCIsInJlc2V0Rm9ybUZpZWxkcyIsImluaXRpYWxWYWx1ZXMiLCJnZXRJbml0aWFsVmFsdWVzIiwibmV3VmFsdWVzIiwiZmllbGQiLCJpbml0aWFsIiwiaW5jbHVkZXMiLCJpbnZhbGlkYXRlVmFsaWRhdGlvblJ1bnMiLCJuZXdUb3VjaGVkIiwic3VibWl0V2l0aFZhbGlkYXRpb24iLCJjYWxsYmFjayIsIl9jYWxsZWU2IiwiX3Q0IiwiX3Q1IiwiX2NvbnRleHQ2IiwiZm9ybUluc3RhbmNlIiwiZ2V0RmllbGRWYWx1ZSIsInZhbGlkYXRlRmllbGRzIiwic2V0RmllbGRzVmFsdWUiLCJzdWJtaXQiLCJ1bnJlZ2lzdGVyRmllbGQiLCJzZXRSdWxlQ29udGV4dEluc3RhbmNlIiwiaW50ZXJuYWxzIiwic2V0RmllbGRXYXJuaW5nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUlBLFNBQVMsR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxTQUFTLElBQUssVUFBVUMsT0FBTyxFQUFFQyxVQUFVLEVBQUVDLENBQUMsRUFBRUMsU0FBUyxFQUFFO0VBQ3JGLFNBQVNDLEtBQUtBLENBQUNDLEtBQUssRUFBRTtJQUFF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RU8sU0FBUyxFQUFUQSxTQUFTO0lBQUVuTCxLQUFLLEVBQUxBO0VBQUssQ0FBRTtBQUMzQyxDQUFDO0FBRUQsZUFBZVYsT0FBTyIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ob29rcy91c2VGb3JtLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyB1c2VNZW1vLCB1c2VFZmZlY3QsIHVzZVJlZiwgbWVtbywgRnJhZ21lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQDFtb25leS9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCB1c2VNZW1vaXplZEZuIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlTWVtb2l6ZWRGbic7XG5pbXBvcnQgeyB1c2VGb3JtQ29yZSB9IGZyb20gJy4vdXNlRm9ybUNvcmUnO1xuaW1wb3J0IHsgcmVzb2x2ZVZhbHVlLCBzZXROZXN0ZWRWYWx1ZSB9IGZyb20gJy4uL3BhdGhVdGlscyc7XG5pbXBvcnQgeyBjb2VyY2VGYWlsdXJlUmVhc29uLCBmaWx0ZXJSdWxlc0J5VHJpZ2dlciwgbm9ybWFsaXplVHJpZ2dlcnMsIHJlc29sdmVSdWxlcywgcnVuUnVsZXNBc3luYywgfSBmcm9tICcuLi9ydW5SdWxlcyc7XG5pbXBvcnQgeyB1c2VTdG9yZVNlbGVjdG9yLCBzaGFsbG93RXF1YWxBcnJheXMsIHNhbWVWYWxpZGF0aW9uTm9kZSB9IGZyb20gJy4uL2Zvcm1TdG9yZSc7XG5pbXBvcnQgeyBGb3JtVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnLi4vdmFsaWRhdGlvbkVycm9yJztcbi8qKlxuICogT25seSBydWxlcyB3aXRoIGEgY3VzdG9tIGB2YWxpZGF0b3JgIGNhbiBiZSBnZW51aW5lbHkgYXN5bmNocm9ub3VzIOKAlFxuICogYnVpbHRpbiBydWxlcyByZXNvbHZlIHdpdGhpbiBhIG1pY3JvdGFzaywgc28gZmxpcHBpbmcgYHZhbGlkYXRpbmdgIGZvclxuICogdGhlbSB3b3VsZCBvbmx5IGNodXJuIHN1YnNjcmliZXJzIHdpdGhvdXQgZXZlciBiZWluZyB2aXNpYmxlLiBEZWNpZGVkIG9uXG4gKiBSRVNPTFZFRCBydWxlczogYSBmdW5jdGlvbi1mb3JtIHJ1bGUgdGhhdCByZXNvbHZlcyB0byBidWlsdGluLW9ubHkgY2hlY2tzXG4gKiBtdXN0IG5vdCBmbGlja2VyIHRoZSBmbGFnLlxuICpcbiAqIFRoZSBhc3luYyBlbmdpbmUgYXdhaXRzIHZhbGlkYXRvcnMgbmVzdGVkIGluc2lkZSBgZmllbGRzYCAvIGBkZWZhdWx0RmllbGRgXG4gKiB0b28sIHNvIHRoZSBkZWNpc2lvbiBtdXN0IGRlc2NlbmQgdGhlIHNhbWUgd2F5IOKAlCBvdGhlcndpc2UgYSBkZWVwLW9ubHlcbiAqIHZhbGlkYXRvciAoZS5nLiBgeyBkZWZhdWx0RmllbGQ6IHsgdmFsaWRhdG9yIH0gfWApIHJ1bnMgcGVuZGluZyB3aXRoIHRoZVxuICogZmxhZyBzdHVjayBmYWxzZSwgYW5kIGBpc0ZpZWxkVmFsaWRhdGluZyhuYW1lKWAgdW5kZXItcmVwb3J0cyBmb3IgdGhlIHdob2xlXG4gKiB3aW5kb3cuIE92ZXItZmxhZ2dpbmcgd2hlbiB0aGUgZGVlcCB2YWxpZGF0b3Igd29uJ3QgYWN0dWFsbHkgZmlyZSAoZW1wdHkgL1xuICogcHJpbWl0aXZlIHZhbHVlKSBpcyBhY2NlcHRhYmxlOiB0aGUgZmxhZyBpcyBkZWNpZGVkIG9uIHJ1bGUgU0hBUEUsIGV4YWN0bHlcbiAqIGFzIHRoZSB0b3AtbGV2ZWwgY2FzZSBhbHJlYWR5IG92ZXItZmxhZ3MgYSB2YWxpZGF0b3Igc2hvcnQtY2lyY3VpdGVkIGJ5IGFuXG4gKiBlYXJsaWVyIGJ1aWx0aW4gZmFpbHVyZTsgdGhlIHJ1biBjbGVhcnMgaXQgb24gc2V0dGxlIGVpdGhlciB3YXkuXG4gKi9cbmNvbnN0IGFzUnVsZUFycmF5ID0gKHJ1bGUpID0+IHJ1bGUgPyAoQXJyYXkuaXNBcnJheShydWxlKSA/IHJ1bGUgOiBbcnVsZV0pIDogW107XG5jb25zdCBydWxlSGFzVmFsaWRhdG9yID0gKHJ1bGUpID0+IHtcbiAgICBpZiAodHlwZW9mIHJ1bGUudmFsaWRhdG9yID09PSAnZnVuY3Rpb24nKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoYXNSdWxlQXJyYXkocnVsZS5kZWZhdWx0RmllbGQpLnNvbWUocnVsZUhhc1ZhbGlkYXRvcikpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIGlmIChydWxlLmZpZWxkcykge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhydWxlLmZpZWxkcykuc29tZSgoc3ViKSA9PiBhc1J1bGVBcnJheShzdWIpLnNvbWUocnVsZUhhc1ZhbGlkYXRvcikpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuY29uc3QgaGFzUmVzb2x2ZWRWYWxpZGF0b3IgPSAocmVzb2x2ZWQpID0+IHJlc29sdmVkLnNvbWUocnVsZUhhc1ZhbGlkYXRvcik7XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIHVzZUZvcm1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZXhwb3J0IGNvbnN0IHVzZUZvcm0gPSAoY29uZmlnID0ge30pID0+IHtcbiAgICBjb25zdCB7IG9uRmluaXNoLCBvbkZpbmlzaEZhaWxlZCwgb25SZXNldCwgdmFsaWRhdGVUcmlnZ2VyID0gJ29uQ2hhbmdlJywgfSA9IGNvbmZpZztcbiAgICBjb25zdCBmb3JtQ29yZSA9IHVzZUZvcm1Db3JlKGNvbmZpZyk7XG4gICAgY29uc3QgeyBzdG9yZSB9ID0gZm9ybUNvcmU7XG4gICAgLy8gRXBvY2ggb2YgdGhlIExBVEVTVCBhc3luYyBydW4gdGhhdCByYWlzZWQgZWFjaCBmaWVsZCdzIGB2YWxpZGF0aW5nYCBmbGFnLlxuICAgIC8vIEEgc2V0dGxpbmcgcnVuIGNsZWFycyB0aGUgZmxhZyBvbmx5IHdoaWxlIGl0IGlzIHN0aWxsIHRoZSBsYXRlc3QgcmFpc2VyIOKAlFxuICAgIC8vIGFuIG9sZGVyIHJ1biBtdXN0IG5vdCBibGFuayB0aGUgc3Bpbm5lciBvZiBhIG5ld2VyIG9uZSwgYW5kIGEgcnVuXG4gICAgLy8gc3VwZXJzZWRlZCBieSBhIFNZTkMgY29tbWl0ICh3aGljaCBuZXZlciB0b3VjaGVzIGZsYWdzKSBtdXN0IHN0aWxsIGNsZWFuXG4gICAgLy8gdXAgYWZ0ZXIgaXRzZWxmLlxuICAgIGNvbnN0IGxhc3RBc3luY0Vwb2NoUmVmID0gdXNlUmVmKHt9KTtcbiAgICAvLyBNYXJrIGZpZWxkcyBhcyB2YWxpZGF0aW5nIGluIE9ORSBjb21taXQuIHZhbGlkYXRpbmcgLyB0b3VjaGVkIGxpdmUgaW4gdGhlXG4gICAgLy8gc3RvcmUgYWxvbmdzaWRlIHZhbHVlcyDigJQgZmxpcHBpbmcgdGhlbSAoZS5nLiBhc3luYyB2YWxpZGF0aW9uIGFyb3VuZCBhXG4gICAgLy8gYmx1cikgbXVzdCBub3QgcmUtcmVuZGVyIHRoZSBmb3JtIHJvb3QsIG9ubHkgdGhlIGZpZWxkcyB0aGF0IHN1YnNjcmliZWQuXG4gICAgY29uc3QgbWFya1ZhbGlkYXRpbmcgPSB1c2VNZW1vaXplZEZuKChuYW1lcykgPT4ge1xuICAgICAgICBpZiAobmFtZXMubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBuZXh0ID0gT2JqZWN0LmFzc2lnbih7fSwgc3RvcmUuZ2V0U3RhdGUoKS52YWxpZGF0aW5nKTtcbiAgICAgICAgbmFtZXMuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgICAgICAgbmV4dFtuYW1lXSA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7IHZhbGlkYXRpbmc6IG5leHQgfSk7XG4gICAgfSk7XG4gICAgLy8gRm9sZCBwZXItZmllbGQgcnVsZSBvdXRjb21lcyBpbnRvIEFUIE1PU1Qgb25lIHN0b3JlIGNvbW1pdDogZXJyb3JzIGFuZFxuICAgIC8vIHdhcm5pbmdzIGFyZSBtZXJnZWQgb3ZlciB0aGUgY3VycmVudCBtYXBzIGFuZCB0aGUgYGNsZWFyVmFsaWRhdGluZ2AgZmxhZ3NcbiAgICAvLyBhcmUgcmVtb3ZlZCBpbiB0aGUgU0FNRSBwYXRjaC4gQSBuby1vcCBvdXRjb21lIGNvbW1pdHMgbm90aGluZyBhdCBhbGwg4oCUXG4gICAgLy8gcGVyLWZpZWxkIGNvbW1pdHMgaGVyZSBwcmV2aW91c2x5IG1hZGUgc3VibWl0LXRpbWUgdmFsaWRhdGlvbiBzd2VlcCBldmVyeVxuICAgIC8vIHN1YnNjcmliZXIgTyhmaWVsZHMpIHRpbWVzLlxuICAgIGNvbnN0IGNvbW1pdFJ1bGVPdXRjb21lcyA9IHVzZU1lbW9pemVkRm4oKG91dGNvbWVzLCBjbGVhclZhbGlkYXRpbmcpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICAgICAgICBsZXQgZXJyb3JzQ2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICBsZXQgd2FybmluZ3NDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IG5ld0Vycm9ycyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLmVycm9ycyk7XG4gICAgICAgIGNvbnN0IG5ld1dhcm5pbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUud2FybmluZ3MpO1xuICAgICAgICBmb3IgKGNvbnN0IHsgbmFtZSwgZXJyb3IsIHdhcm5pbmcgfSBvZiBvdXRjb21lcykge1xuICAgICAgICAgICAgaWYgKGVycm9yID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5hbWUgaW4gbmV3RXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdFcnJvcnNbbmFtZV07XG4gICAgICAgICAgICAgICAgICAgIGVycm9yc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFzYW1lVmFsaWRhdGlvbk5vZGUobmV3RXJyb3JzW25hbWVdLCBlcnJvcikpIHtcbiAgICAgICAgICAgICAgICBuZXdFcnJvcnNbbmFtZV0gPSBlcnJvcjtcbiAgICAgICAgICAgICAgICBlcnJvcnNDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh3YXJuaW5nID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5hbWUgaW4gbmV3V2FybmluZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG5ld1dhcm5pbmdzW25hbWVdO1xuICAgICAgICAgICAgICAgICAgICB3YXJuaW5nc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFzYW1lVmFsaWRhdGlvbk5vZGUobmV3V2FybmluZ3NbbmFtZV0sIHdhcm5pbmcpKSB7XG4gICAgICAgICAgICAgICAgbmV3V2FybmluZ3NbbmFtZV0gPSB3YXJuaW5nO1xuICAgICAgICAgICAgICAgIHdhcm5pbmdzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmxhZ3NUb0NsZWFyID0gY2xlYXJWYWxpZGF0aW5nLmZpbHRlcigobmFtZSkgPT4gbmFtZSBpbiBzdGF0ZS52YWxpZGF0aW5nKTtcbiAgICAgICAgY29uc3QgcGF0Y2ggPSB7fTtcbiAgICAgICAgaWYgKGVycm9yc0NoYW5nZWQpXG4gICAgICAgICAgICBwYXRjaC5lcnJvcnMgPSBuZXdFcnJvcnM7XG4gICAgICAgIGlmICh3YXJuaW5nc0NoYW5nZWQpXG4gICAgICAgICAgICBwYXRjaC53YXJuaW5ncyA9IG5ld1dhcm5pbmdzO1xuICAgICAgICBpZiAoZmxhZ3NUb0NsZWFyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbGlkYXRpbmcgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS52YWxpZGF0aW5nKTtcbiAgICAgICAgICAgIGZsYWdzVG9DbGVhci5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG5ld1ZhbGlkYXRpbmdbbmFtZV07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHBhdGNoLnZhbGlkYXRpbmcgPSBuZXdWYWxpZGF0aW5nO1xuICAgICAgICB9XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhwYXRjaCkubGVuZ3RoID4gMClcbiAgICAgICAgICAgIHN0b3JlLnNldFN0YXRlKHBhdGNoKTtcbiAgICB9KTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBBc3luYyBmaWVsZCB2YWxpZGF0aW9uIOKAkyBlYWNoIHJ1bGUgaXMgcHJvY2Vzc2VkIGV4YWN0bHkgb25jZVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IHZhbGlkYXRlRmllbGRBc3luYyA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIHZhbHVlLCBydWxlcykgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCFydWxlcyB8fCBydWxlcy5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm4geyBpc1ZhbGlkOiB0cnVlLCBlcnJvcjogbnVsbCB9O1xuICAgICAgICAvLyBDYXB0dXJlIHRoaXMgcnVuJ3MgZXBvY2g6IGlmIGEgTkVXRVIgcnVuIChzeW5jIG9yIGFzeW5jKSBzdGFydHMgZm9yXG4gICAgICAgIC8vIHRoZSBmaWVsZCBiZWZvcmUgdGhpcyBvbmUgc2V0dGxlcywgdGhlIG91dGNvbWUgYmVsb3cgaXMgc3RhbGUgYW5kIGlzXG4gICAgICAgIC8vIGRpc2NhcmRlZCBpbnN0ZWFkIG9mIG92ZXJ3cml0aW5nIHRoZSBuZXdlciByZXN1bHQuXG4gICAgICAgIGNvbnN0IGVwb2NoID0gZm9ybUNvcmUuYmVnaW5WYWxpZGF0aW9uUnVuKG5hbWUpO1xuICAgICAgICAvLyBSZXNvbHZlIG9uY2U6IHRoZSBmbGFnIGRlY2lzaW9uIG5lZWRzIHJlc29sdmVkIHJ1bGVzLCBhbmQgcGFzc2luZyB0aGVcbiAgICAgICAgLy8gcmVzb2x2ZWQgYXJyYXkgb253YXJkIHNwYXJlcyB0aGUgZW5naW5lIGEgcmUtcmVzb2x1dGlvbi5cbiAgICAgICAgY29uc3QgdmFsdWVzID0gZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUoKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlUnVsZXMocnVsZXMsIHZhbHVlcywgZm9ybUNvcmUuZ2V0UnVsZUNvbnRleHRJbnN0YW5jZSgpKTtcbiAgICAgICAgY29uc3QgZmxhZ2dlZCA9IGhhc1Jlc29sdmVkVmFsaWRhdG9yKHJlc29sdmVkKSA/IFtuYW1lXSA6IFtdO1xuICAgICAgICBtYXJrVmFsaWRhdGluZyhmbGFnZ2VkKTtcbiAgICAgICAgZmxhZ2dlZC5mb3JFYWNoKChmbGFnZ2VkTmFtZSkgPT4ge1xuICAgICAgICAgICAgbGFzdEFzeW5jRXBvY2hSZWYuY3VycmVudFtmbGFnZ2VkTmFtZV0gPSBlcG9jaDtcbiAgICAgICAgfSk7XG4gICAgICAgIGxldCBvdXRjb21lID0geyBuYW1lLCBlcnJvcjogbnVsbCwgd2FybmluZzogbnVsbCB9O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgeyBlcnJvciwgd2FybmluZyB9ID0geWllbGQgcnVuUnVsZXNBc3luYyhuYW1lLCB2YWx1ZSwgdmFsdWVzLCByZXNvbHZlZCwgZm9ybUNvcmUuZ2V0UnVsZUNvbnRleHRJbnN0YW5jZSgpKTtcbiAgICAgICAgICAgIG91dGNvbWUgPSB7IG5hbWUsIGVycm9yLCB3YXJuaW5nIH07XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgLy8gVGhlIGVuZ2luZSBjb250YWlucyBydWxlLWxldmVsIHRocm93cyBpdHNlbGY7IHRoaXMgaXMgYSBsYXN0LXJlc29ydFxuICAgICAgICAgICAgLy8gbmV0IHNvIGFuIHVuZXhwZWN0ZWQgZmFpbHVyZSBzdXJmYWNlcyBhcyBhIGZpZWxkIGVycm9yIGluc3RlYWQgb2ZcbiAgICAgICAgICAgIC8vIGxlYXZpbmcgdGhlIGZpZWxkIG1hcmtlZCB2YWxpZC5cbiAgICAgICAgICAgIG91dGNvbWUgPSB7IG5hbWUsIGVycm9yOiAoX2EgPSBjb2VyY2VGYWlsdXJlUmVhc29uKGVycikpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICdWYWxpZGF0aW9uIGZhaWxlZCcsIHdhcm5pbmc6IG51bGwgfTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIGNvbnN0IGlzQ3VycmVudCA9IGZvcm1Db3JlLmlzVmFsaWRhdGlvblJ1bkN1cnJlbnQobmFtZSwgZXBvY2gpO1xuICAgICAgICAgICAgY29uc3QgY2xlYXJGbGFncyA9IGZsYWdnZWQuZmlsdGVyKChmbGFnZ2VkTmFtZSkgPT4gbGFzdEFzeW5jRXBvY2hSZWYuY3VycmVudFtmbGFnZ2VkTmFtZV0gPT09IGVwb2NoKTtcbiAgICAgICAgICAgIGNvbW1pdFJ1bGVPdXRjb21lcyhpc0N1cnJlbnQgPyBbb3V0Y29tZV0gOiBbXSwgY2xlYXJGbGFncyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhlIENBTExFUiBnZXRzIHRoaXMgcnVuJ3Mgb3duIHJlc3VsdCBlaXRoZXIgd2F5IChpdHMgcHJvbWlzZSBpc1xuICAgICAgICAvLyBhYm91dCB0aGUgdmFsdWUgaXQgd2FzIGFza2VkIHRvIHZhbGlkYXRlKTsgb25seSB0aGUgU1RPUkUgY29tbWl0IGlzXG4gICAgICAgIC8vIHN0YWxlbmVzcy1ndWFyZGVkLlxuICAgICAgICByZXR1cm4geyBpc1ZhbGlkOiBvdXRjb21lLmVycm9yID09PSBudWxsLCBlcnJvcjogb3V0Y29tZS5lcnJvciB9O1xuICAgIH0pKTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBBc3luYyBmaWVsZCBibHVyIGhhbmRsZXJcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBoYW5kbGVGaWVsZEJsdXIgPSB1c2VFdmVudENhbGxiYWNrKChuYW1lLCBmaWVsZFRyaWdnZXIpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCB0b3VjaGVkID0gc3RvcmUuZ2V0U3RhdGUoKS50b3VjaGVkO1xuICAgICAgICBpZiAoIXRvdWNoZWRbbmFtZV0pIHtcbiAgICAgICAgICAgIHN0b3JlLnNldFN0YXRlKHsgdG91Y2hlZDogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB0b3VjaGVkKSwgeyBbbmFtZV06IHRydWUgfSkgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcnVsZXMgPSBmb3JtQ29yZS5nZXRGaWVsZFJ1bGVzKG5hbWUpO1xuICAgICAgICBpZiAoIXJ1bGVzKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSBmb3JtQ29yZS5nZXRGaWVsZHNWYWx1ZSgpO1xuICAgICAgICBjb25zdCBhcHBsaWNhYmxlID0gZmlsdGVyUnVsZXNCeVRyaWdnZXIocmVzb2x2ZVJ1bGVzKHJ1bGVzLCB2YWx1ZXMsIGZvcm1Db3JlLmdldFJ1bGVDb250ZXh0SW5zdGFuY2UoKSksICdvbkJsdXInLCBub3JtYWxpemVUcmlnZ2VycyhmaWVsZFRyaWdnZXIsIHZhbGlkYXRlVHJpZ2dlciksIG5hbWUpO1xuICAgICAgICBpZiAoYXBwbGljYWJsZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB5aWVsZCB2YWxpZGF0ZUZpZWxkQXN5bmMobmFtZSwgcmVzb2x2ZVZhbHVlKHZhbHVlcywgbmFtZSksIGFwcGxpY2FibGUpO1xuICAgICAgICB9XG4gICAgfSkpO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIFZhbGlkYXRlIGFsbCBmaWVsZHMgYXN5bmNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCB2YWxpZGF0ZUZpZWxkc0FzeW5jID0gdXNlTWVtb2l6ZWRGbigobmFtZUxpc3QpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBmaWVsZHNUb1ZhbGlkYXRlID0gbmFtZUxpc3QgfHwgT2JqZWN0LmtleXMoZm9ybUNvcmUuZmllbGRSdWxlcyk7XG4gICAgICAgIGNvbnN0IGZpZWxkRXJyb3JzID0ge307XG4gICAgICAgIC8vIFJlc29sdmUgZXZlcnkgZmllbGQgb25jZSB1cCBmcm9udDogdGhlIGZsYWcgZGVjaXNpb24gbmVlZHMgcmVzb2x2ZWRcbiAgICAgICAgLy8gcnVsZXMsIGFuZCB0aGUgcmVzb2x2ZWQgYXJyYXlzIGFyZSByZXVzZWQgZm9yIHRoZSBhY3R1YWwgcnVucy4gRWFjaFxuICAgICAgICAvLyBmaWVsZCBhbHNvIGNhcHR1cmVzIGl0cyB2YWxpZGF0aW9uIGVwb2NoIOKAlCBhIGZpZWxkIHdob3NlIHZhbHVlXG4gICAgICAgIC8vIGNoYW5nZXMgbWlkLXN1Ym1pdCBnZXRzIGEgbmV3ZXIgcnVuLCBhbmQgdGhpcyBydW4ncyBzdGFsZSBvdXRjb21lXG4gICAgICAgIC8vIG11c3Qgbm90IG92ZXJ3cml0ZSBpdCBpbiB0aGUgc3RvcmUuXG4gICAgICAgIGNvbnN0IHJlc29sdmVkQnlGaWVsZCA9IG5ldyBNYXAoKTtcbiAgICAgICAgY29uc3QgZXBvY2hCeUZpZWxkID0gbmV3IE1hcCgpO1xuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgZmllbGRzVG9WYWxpZGF0ZSkge1xuICAgICAgICAgICAgY29uc3QgcnVsZXMgPSBmb3JtQ29yZS5maWVsZFJ1bGVzW25hbWVdO1xuICAgICAgICAgICAgaWYgKHJ1bGVzKSB7XG4gICAgICAgICAgICAgICAgZXBvY2hCeUZpZWxkLnNldChuYW1lLCBmb3JtQ29yZS5iZWdpblZhbGlkYXRpb25SdW4obmFtZSkpO1xuICAgICAgICAgICAgICAgIHJlc29sdmVkQnlGaWVsZC5zZXQobmFtZSwgcmVzb2x2ZVJ1bGVzKHJ1bGVzLCBmb3JtQ29yZS5nZXRGaWVsZHNWYWx1ZSgpLCBmb3JtQ29yZS5nZXRSdWxlQ29udGV4dEluc3RhbmNlKCkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBPbmUgY29tbWl0IHRvIHJhaXNlIHRoZSB2YWxpZGF0aW5nIGZsYWdzICh2YWxpZGF0b3ItYmVhcmluZyBmaWVsZHNcbiAgICAgICAgLy8gb25seSksIG9uZSBjb21taXQgdG8gbGFuZCBldmVyeSBlcnJvci93YXJuaW5nIGFuZCBjbGVhciB0aGUgZmxhZ3MuXG4gICAgICAgIGNvbnN0IGZsYWdnZWQgPSBmaWVsZHNUb1ZhbGlkYXRlLmZpbHRlcigobmFtZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlZEJ5RmllbGQuZ2V0KG5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVkID8gaGFzUmVzb2x2ZWRWYWxpZGF0b3IocmVzb2x2ZWQpIDogZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgICBtYXJrVmFsaWRhdGluZyhmbGFnZ2VkKTtcbiAgICAgICAgZmxhZ2dlZC5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAgICAgICBsYXN0QXN5bmNFcG9jaFJlZi5jdXJyZW50W25hbWVdID0gZXBvY2hCeUZpZWxkLmdldChuYW1lKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IG91dGNvbWVzID0gW107XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB5aWVsZCBQcm9taXNlLmFsbChmaWVsZHNUb1ZhbGlkYXRlLm1hcCgobmFtZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZWRCeUZpZWxkLmdldChuYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoIXJlc29sdmVkKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgbGV0IGVycm9yID0gbnVsbDtcbiAgICAgICAgICAgICAgICBsZXQgd2FybmluZyA9IG51bGw7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgKHsgZXJyb3IsIHdhcm5pbmcgfSA9IHlpZWxkIHJ1blJ1bGVzQXN5bmMobmFtZSwgcmVzb2x2ZVZhbHVlKGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlKCksIG5hbWUpLCBmb3JtQ29yZS5nZXRGaWVsZHNWYWx1ZSgpLCByZXNvbHZlZCwgZm9ybUNvcmUuZ2V0UnVsZUNvbnRleHRJbnN0YW5jZSgpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTGFzdC1yZXNvcnQgbmV0IChzZWUgdmFsaWRhdGVGaWVsZEFzeW5jKSDigJQga2VlcCB0aGUgbm9ybWFsXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0cnVjdGVkLWVycm9yIGZsb3cgc28gb25GaW5pc2hGYWlsZWQgZ2V0cyBhIHJlYWwgcGF5bG9hZC5cbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSAoX2EgPSBjb2VyY2VGYWlsdXJlUmVhc29uKGVycikpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICdWYWxpZGF0aW9uIGZhaWxlZCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFRoZSBzdG9yZSBjb21taXQgaXMgc3RhbGVuZXNzLWd1YXJkZWQ7IHRoZSBTVUJNSVQgZGVjaXNpb25cbiAgICAgICAgICAgICAgICAvLyAoZmllbGRFcnJvcnMgLyB0aGUgdGhyb3duIEZvcm1WYWxpZGF0aW9uRXJyb3IpIHN0aWxsIHJlZmxlY3RzXG4gICAgICAgICAgICAgICAgLy8gdGhpcyBydW4ncyBvd24gcmVzdWx0cyBmb3IgdGhlIHZhbHVlcyBpdCB2YWxpZGF0ZWQuXG4gICAgICAgICAgICAgICAgY29uc3QgZXBvY2ggPSBlcG9jaEJ5RmllbGQuZ2V0KG5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChlcG9jaCAhPT0gdW5kZWZpbmVkICYmIGZvcm1Db3JlLmlzVmFsaWRhdGlvblJ1bkN1cnJlbnQobmFtZSwgZXBvY2gpKSB7XG4gICAgICAgICAgICAgICAgICAgIG91dGNvbWVzLnB1c2goeyBuYW1lLCBlcnJvciwgd2FybmluZyB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkRXJyb3JzW25hbWVdID0gZXJyb3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIGNvbnN0IGNsZWFyRmxhZ3MgPSBmbGFnZ2VkLmZpbHRlcigobmFtZSkgPT4gbGFzdEFzeW5jRXBvY2hSZWYuY3VycmVudFtuYW1lXSA9PT0gZXBvY2hCeUZpZWxkLmdldChuYW1lKSk7XG4gICAgICAgICAgICBjb21taXRSdWxlT3V0Y29tZXMob3V0Y29tZXMsIGNsZWFyRmxhZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhmaWVsZEVycm9ycykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1WYWxpZGF0aW9uRXJyb3IoZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUoKSwgZmllbGRFcnJvcnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuYW1lTGlzdCkge1xuICAgICAgICAgICAgcmV0dXJuIG5hbWVMaXN0LnJlZHVjZSgoYWNjLCBuYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgYWNjW25hbWVdID0gcmVzb2x2ZVZhbHVlKGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlKCksIG5hbWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LCB7fSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlKCk7XG4gICAgfSkpO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIGRlZmluZUZpZWxkIOKAkyB1c2VkIGJ5IHN0YW5kYWxvbmUgKG5vbi1Qcm9Gb3JtKSBjb25zdW1lcnNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBkZWZpbmVGaWVsZCA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIGZpZWxkT3B0aW9ucyA9IHt9KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgcnVsZXMgPSBbXSB9ID0gZmllbGRPcHRpb25zO1xuICAgICAgICBjb25zdCBGaWVsZENvbXBvbmVudCA9IG1lbW8oKF9hKSA9PiB7XG4gICAgICAgICAgICB2YXIgeyBjaGlsZHJlbiwgcmVuZGVyIH0gPSBfYSwgcHJvcHMgPSBfX3Jlc3QoX2EsIFtcImNoaWxkcmVuXCIsIFwicmVuZGVyXCJdKTtcbiAgICAgICAgICAgIC8vIFBlci1maWVsZCBzdG9yZSBzdWJzY3JpcHRpb246IHRoaXMgZmllbGQgcmUtcmVuZGVycyBvbmx5IHdoZW4gaXRzXG4gICAgICAgICAgICAvLyBvd24gdmFsdWUvZXJyb3IvdG91Y2hlZC92YWxpZGF0aW5nIHNsaWNlIGNoYW5nZXMuIERvdC1wYXRoc1xuICAgICAgICAgICAgLy8gcmVzb2x2ZSBpbnRvIHRoZSBuZXN0ZWQgdmFsdWVzIGxpa2UgZXZlcnl3aGVyZSBlbHNlLlxuICAgICAgICAgICAgY29uc3QgW2ZpZWxkVmFsdWUsIGZpZWxkRXJyb3IsIGZpZWxkVG91Y2hlZCwgZmllbGRWYWxpZGF0aW5nXSA9IHVzZVN0b3JlU2VsZWN0b3Ioc3RvcmUsIChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAoX2EgPSByZXNvbHZlVmFsdWUoc3RhdGUudmFsdWVzLCBuYW1lKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycsXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLmVycm9yc1tuYW1lXSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUudG91Y2hlZFtuYW1lXSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUudmFsaWRhdGluZ1tuYW1lXSxcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSwgc2hhbGxvd0VxdWFsQXJyYXlzKTtcbiAgICAgICAgICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gTW91bnQtY291bnRlZDogcmVsZWFzZUZpZWxkIHJlbW92ZXMgdGhlIHJ1bGVzIG9ubHkgd2hlbiB0aGVcbiAgICAgICAgICAgICAgICAvLyBMQVNUIHNhbWUtbmFtZSBpbnN0YW5jZSB1bm1vdW50cyDigJQgYW4gaW5zdGFuY2UgdGhhdCBwaWdneWJhY2tlZFxuICAgICAgICAgICAgICAgIC8vIG9uIGFuIGV4aXN0aW5nIHJlZ2lzdHJhdGlvbiAoZS5nLiBhIFByb0Zvcm0uSXRlbSdzKSBjYW4gbmV2ZXJcbiAgICAgICAgICAgICAgICAvLyB3aXBlIGl0IG9uIGl0cyBvd24gdW5tb3VudC5cbiAgICAgICAgICAgICAgICBmb3JtQ29yZS5yZXRhaW5GaWVsZChuYW1lKTtcbiAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ1J1bGVzID0gZm9ybUNvcmUuZ2V0RmllbGRSdWxlcyhuYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoIWV4aXN0aW5nUnVsZXMgJiYgcnVsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBmb3JtQ29yZS5yZWdpc3RlckZpZWxkKG5hbWUsIHJ1bGVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvcmUucmVsZWFzZUZpZWxkKG5hbWUpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LCBbXSk7IC8vIE9ubHkgcmVnaXN0ZXIgb24gbW91bnRcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZUZpZWxkQ2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZFZhbHVlKG5hbWUsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAvLyBUb3VjaGVkIGlzIHNldCBieSB0aGUgdXNlciBjaGFuZ2UgdHJpZ2dlciAobWF0Y2hpbmcgdGhlXG4gICAgICAgICAgICAgICAgLy8gUHJvRm9ybS5JdGVtIHBhdGgpIOKAlCBwcm9ncmFtbWF0aWMgc2V0RmllbGRzVmFsdWUgZG9lcyBub3QuXG4gICAgICAgICAgICAgICAgY29uc3QgdG91Y2hlZCA9IHN0b3JlLmdldFN0YXRlKCkudG91Y2hlZDtcbiAgICAgICAgICAgICAgICBpZiAoIXRvdWNoZWRbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgc3RvcmUuc2V0U3RhdGUoeyB0b3VjaGVkOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHRvdWNoZWQpLCB7IFtuYW1lXTogdHJ1ZSB9KSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgYXBwbGljYWJsZSA9IGZpbHRlclJ1bGVzQnlUcmlnZ2VyKHJlc29sdmVSdWxlcyhydWxlcywgZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUoKSwgZm9ybUNvcmUuZ2V0UnVsZUNvbnRleHRJbnN0YW5jZSgpKSwgJ29uQ2hhbmdlJywgbm9ybWFsaXplVHJpZ2dlcnMoZmllbGRPcHRpb25zLnZhbGlkYXRlVHJpZ2dlciwgdmFsaWRhdGVUcmlnZ2VyKSwgbmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGFwcGxpY2FibGUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBBc3luYyBwYXRoIChtYXRjaGluZyBQcm9Gb3JtLkl0ZW0pIHNvIGEgUHJvbWlzZS1yZXR1cm5pbmdcbiAgICAgICAgICAgICAgICAgICAgLy8gdmFsaWRhdG9yIGlzIGhvbm9yZWQgb24gY2hhbmdlIGluc3RlYWQgb2YgYmVpbmcgc2lsZW50bHlcbiAgICAgICAgICAgICAgICAgICAgLy8gc2tpcHBlZDsgZmlyZS1hbmQtZm9yZ2V0IOKAlCB0aGUgcmVzdWx0IGxhbmRzIG9uIHRoZSBzdG9yZS5cbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVGaWVsZEFzeW5jKG5hbWUsIHZhbHVlLCBhcHBsaWNhYmxlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZUJsdXIgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgICAgICAgICBoYW5kbGVGaWVsZEJsdXIobmFtZSwgZmllbGRPcHRpb25zLnZhbGlkYXRlVHJpZ2dlcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkUHJvcHMgPSBPYmplY3QuYXNzaWduKHsgbmFtZSwgdmFsdWU6IGZpZWxkVmFsdWUsIGVycm9yOiBmaWVsZEVycm9yLCB0b3VjaGVkOiBmaWVsZFRvdWNoZWQsIHZhbGlkYXRpbmc6IGZpZWxkVmFsaWRhdGluZywgb25DaGFuZ2U6IGhhbmRsZUZpZWxkQ2hhbmdlLCBvbkJsdXI6IGhhbmRsZUJsdXIgfSwgcHJvcHMpO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlTWVyZ2VDaGFuZ2UgPSAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGUgJiYgdHlwZW9mIGUgPT09ICdvYmplY3QnICYmICd0YXJnZXQnIGluIGVcbiAgICAgICAgICAgICAgICAgICAgPyBlLnRhcmdldC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICA6IGU7XG4gICAgICAgICAgICAgICAgaGFuZGxlRmllbGRDaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZHJlbikgJiZcbiAgICAgICAgICAgICAgICAgICAgKChfYSA9IGNoaWxkcmVuLnByb3BzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eub25DaGFuZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnByb3BzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlTWVyZ2VCbHVyID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBoYW5kbGVCbHVyKCk7XG4gICAgICAgICAgICAgICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSAmJlxuICAgICAgICAgICAgICAgICAgICAoKF9hID0gY2hpbGRyZW4ucHJvcHMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vbkJsdXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnByb3BzLm9uQmx1cigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAocmVuZGVyICYmIHR5cGVvZiByZW5kZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyKGZpZWxkUHJvcHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbihmaWVsZFByb3BzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEVsZW1lbnQgY2hpbGRyZW4gcmVjZWl2ZSBvbmx5IERPTS1zYWZlIHByb3BzIOKAlCBlcnJvci90b3VjaGVkL1xuICAgICAgICAgICAgLy8gdmFsaWRhdGluZyBhcmUgZmllbGQgTUVUQSwgbm90IGNvbnRyb2wgcHJvcHM7IHNwcmVhZGluZyB0aGVtIG9udG9cbiAgICAgICAgICAgIC8vIGEgaG9zdCBlbGVtZW50IHdvdWxkIGxlYWsgYW55IGF0dHJpYnV0ZXMuIFJlbmRlci1wcm9wIGFuZFxuICAgICAgICAgICAgLy8gZnVuY3Rpb24gY2hpbGRyZW4ga2VlcCB0aGUgZnVsbCBmaWVsZFByb3BzLlxuICAgICAgICAgICAgY29uc3QgZG9tU2FmZVByb3BzID0gT2JqZWN0LmFzc2lnbih7IG5hbWUsIHZhbHVlOiBmaWVsZFZhbHVlLCBvbkNoYW5nZTogaGFuZGxlTWVyZ2VDaGFuZ2UsIG9uQmx1cjogaGFuZGxlTWVyZ2VCbHVyIH0sIHByb3BzKTtcbiAgICAgICAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZHJlbikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCBkb21TYWZlUHJvcHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRnJhZ21lbnQsIG51bGwsIC4uLmNoaWxkcmVuLm1hcCgoY2hpbGQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGQsIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZG9tU2FmZVByb3BzKSwgeyBrZXk6IGNoaWxkLmtleSB8fCBpbmRleCB9KSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9KTtcbiAgICAgICAgRmllbGRDb21wb25lbnQuZGlzcGxheU5hbWUgPSBgRmllbGQoJHtuYW1lfSlgO1xuICAgICAgICByZXR1cm4gRmllbGRDb21wb25lbnQ7XG4gICAgfSk7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gaGFuZGxlU3VibWl0IC8gaGFuZGxlUmVzZXQg4oCTIGZvciA8Zm9ybT4gZXZlbnQgaGFuZGxlcnNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBoYW5kbGVTdWJtaXQgPSB1c2VFdmVudENhbGxiYWNrKChlKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0ZWRWYWx1ZXMgPSB5aWVsZCB2YWxpZGF0ZUZpZWxkc0FzeW5jKCk7XG4gICAgICAgICAgICBvbkZpbmlzaCA9PT0gbnVsbCB8fCBvbkZpbmlzaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25GaW5pc2godmFsaWRhdGVkVmFsdWVzKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAvLyBPbmx5IGEgVkFMSURBVElPTiBmYWlsdXJlIHJlYWNoZXMgb25GaW5pc2hGYWlsZWQg4oCUIGFuIGV4Y2VwdGlvbiBvdXRcbiAgICAgICAgICAgIC8vIG9mIHRoZSBjb25zdW1lcidzIG93biBvbkZpbmlzaCBpcyBub3QgYSB2YWxpZGF0aW9uIHJlc3VsdCBhbmQgaXNcbiAgICAgICAgICAgIC8vIHN1cmZhY2VkIGluc3RlYWQgb2YgYmVpbmcgbWlzcmVwb3J0ZWQuXG4gICAgICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgRm9ybVZhbGlkYXRpb25FcnJvcikge1xuICAgICAgICAgICAgICAgIG9uRmluaXNoRmFpbGVkID09PSBudWxsIHx8IG9uRmluaXNoRmFpbGVkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZpbmlzaEZhaWxlZCh7IHZhbHVlczogZXJyLnZhbHVlcywgZXJyb3JzOiBlcnIuZXJyb3JzIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignW1Byb0Zvcm1dIG9uRmluaXNoIHRocmV3IGR1cmluZyBzdWJtaXQ6JywgZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pKTtcbiAgICBjb25zdCBoYW5kbGVSZXNldCA9IHVzZUV2ZW50Q2FsbGJhY2soKGUpID0+IHtcbiAgICAgICAgZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGZvcm1Db3JlLnJlc2V0RmllbGRzKCk7XG4gICAgICAgIG9uUmVzZXQgPT09IG51bGwgfHwgb25SZXNldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25SZXNldCgpO1xuICAgIH0pO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEZvcm1JbnN0YW5jZSDigJMgZW5oYW5jZWQgQVBJIGZvciBjb25zdW1lcnMuXG4gICAgLy9cbiAgICAvLyBFdmVyeSBtZXRob2QgaXMgd3JhcHBlZCBpbiB1c2VNZW1vaXplZEZuIChzdGFibGUgaWRlbnRpdHksIGFsd2F5cyByZWFkcyB0aGVcbiAgICAvLyBsYXRlc3Qgc3RvcmUgc3RhdGUpIHNvIHRoZSBpbnN0YW5jZSBvYmplY3QgaXRzZWxmIGlzIElERU5USVRZLVNUQUJMRSBmb3JcbiAgICAvLyB0aGUgbGlmZXRpbWUgb2YgdGhlIGZvcm0g4oCUIHRoaXMgaXMgd2hhdCBsZXRzIFByb0Zvcm0gcHVibGlzaCBpdCB0aHJvdWdoIHRoZVxuICAgIC8vIHN0YWJsZSBjb250ZXh0IHdpdGhvdXQgcmUtcmVuZGVyaW5nIHN1YnNjcmliZXJzIG9uIGVhY2gga2V5c3Ryb2tlLlxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IGdldEZpZWxkRXJyb3IgPSB1c2VNZW1vaXplZEZuKChuYW1lKSA9PiBzdG9yZS5nZXRTdGF0ZSgpLmVycm9yc1tuYW1lXSk7XG4gICAgY29uc3QgZ2V0RmllbGRXYXJuaW5nID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4gc3RvcmUuZ2V0U3RhdGUoKS53YXJuaW5nc1tuYW1lXSk7XG4gICAgY29uc3QgZ2V0RmllbGRzRXJyb3IgPSB1c2VNZW1vaXplZEZuKChuYW1lTGlzdCkgPT4ge1xuICAgICAgICBjb25zdCBlcnJvcnMgPSBzdG9yZS5nZXRTdGF0ZSgpLmVycm9ycztcbiAgICAgICAgaWYgKCFuYW1lTGlzdClcbiAgICAgICAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgICAgICBuYW1lTGlzdC5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3JzW25hbWVdKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W25hbWVdID0gZXJyb3JzW25hbWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcbiAgICBjb25zdCBpc0ZpZWxkVG91Y2hlZCA9IHVzZU1lbW9pemVkRm4oKG5hbWUpID0+IHN0b3JlLmdldFN0YXRlKCkudG91Y2hlZFtuYW1lXSB8fCBmYWxzZSk7XG4gICAgY29uc3QgaXNGaWVsZHNUb3VjaGVkID0gdXNlTWVtb2l6ZWRGbigobmFtZUxpc3QsIGFsbEZpZWxkc1RvdWNoZWQgPSBmYWxzZSkgPT4ge1xuICAgICAgICBjb25zdCB0b3VjaGVkID0gc3RvcmUuZ2V0U3RhdGUoKS50b3VjaGVkO1xuICAgICAgICBpZiAoIW5hbWVMaXN0KSB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModG91Y2hlZCkuc29tZSgoa2V5KSA9PiB0b3VjaGVkW2tleV0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhbGxGaWVsZHNUb3VjaGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gbmFtZUxpc3QuZXZlcnkoKG5hbWUpID0+IHRvdWNoZWRbbmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuYW1lTGlzdC5zb21lKChuYW1lKSA9PiB0b3VjaGVkW25hbWVdKTtcbiAgICB9KTtcbiAgICBjb25zdCBpc0ZpZWxkVmFsaWRhdGluZyA9IHVzZU1lbW9pemVkRm4oKG5hbWUpID0+IHN0b3JlLmdldFN0YXRlKCkudmFsaWRhdGluZ1tuYW1lXSB8fCBmYWxzZSk7XG4gICAgY29uc3Qgc2V0RmllbGRzRXJyb3IgPSB1c2VNZW1vaXplZEZuKChmaWVsZHNFcnJvcikgPT4ge1xuICAgICAgICBPYmplY3QuZW50cmllcyhmaWVsZHNFcnJvcikuZm9yRWFjaCgoW25hbWUsIGVycm9yXSkgPT4ge1xuICAgICAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRFcnJvcihuYW1lLCBlcnJvcik7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IHNldEZpZWxkVG91Y2hlZCA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIGlzVG91Y2hlZCA9IHRydWUpID0+IHtcbiAgICAgICAgc3RvcmUuc2V0U3RhdGUoeyB0b3VjaGVkOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHN0b3JlLmdldFN0YXRlKCkudG91Y2hlZCksIHsgW25hbWVdOiBpc1RvdWNoZWQgfSkgfSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc2V0RmllbGRzVG91Y2hlZCA9IHVzZU1lbW9pemVkRm4oKGZpZWxkc1RvdWNoKSA9PiB7XG4gICAgICAgIHN0b3JlLnNldFN0YXRlKHsgdG91Y2hlZDogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzdG9yZS5nZXRTdGF0ZSgpLnRvdWNoZWQpLCBmaWVsZHNUb3VjaCkgfSk7XG4gICAgfSk7XG4gICAgY29uc3QgcmVzZXRGb3JtRmllbGRzID0gdXNlTWVtb2l6ZWRGbigoZmllbGRzKSA9PiB7XG4gICAgICAgIGlmICghZmllbGRzKSB7XG4gICAgICAgICAgICBmb3JtQ29yZS5yZXNldEZpZWxkcygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIE1vdW50LWZyb3plbiBpbml0aWFsVmFsdWVzIOKAlCBjb25zaXN0ZW50IHdpdGggdGhlIGZ1bGwgcmVzZXRGaWVsZHMuXG4gICAgICAgIC8vIFJlYWRzIEFORCB3cml0ZXMgYXJlIG5lc3RlZC1wYXRoIGF3YXJlLCBzbyBkb3QtcGF0aCBuYW1lc1xuICAgICAgICAvLyAoYGFkZHJlc3MuY2l0eWAsIGBpdGVtcy4wLnRpdGxlYCkgcmVzZXQgY29ycmVjdGx5IGluc3RlYWQgb2YgcHJvYmluZyBhXG4gICAgICAgIC8vIGxpdGVyYWwga2V5IGFuZCBzaGFsbG93LW1lcmdpbmcgb25lIGJhY2suXG4gICAgICAgIGNvbnN0IGluaXRpYWxWYWx1ZXMgPSBmb3JtQ29yZS5nZXRJbml0aWFsVmFsdWVzKCk7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcbiAgICAgICAgbGV0IG5ld1ZhbHVlcyA9IHN0YXRlLnZhbHVlcztcbiAgICAgICAgZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbml0aWFsID0gcmVzb2x2ZVZhbHVlKGluaXRpYWxWYWx1ZXMsIGZpZWxkKTtcbiAgICAgICAgICAgIG5ld1ZhbHVlcyA9IGZpZWxkLmluY2x1ZGVzKCcuJylcbiAgICAgICAgICAgICAgICA/IHNldE5lc3RlZFZhbHVlKG5ld1ZhbHVlcywgZmllbGQsIGluaXRpYWwpXG4gICAgICAgICAgICAgICAgOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG5ld1ZhbHVlcyksIHsgW2ZpZWxkXTogaW5pdGlhbCB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIExpa2UgdGhlIGZ1bGwgcmVzZXQ6IGNsZWFyIEFMTCBwZXItZmllbGQgbWV0YSAoZXJyb3JzIEFORCB3YXJuaW5ncyBBTkRcbiAgICAgICAgLy8gdG91Y2hlZC92YWxpZGF0aW5nKSwgaW52YWxpZGF0ZSBpbi1mbGlnaHQgdmFsaWRhdGlvbiBydW5zLCBhbmQgbGFuZFxuICAgICAgICAvLyBldmVyeXRoaW5nIGluIE9ORSBjb21taXQuIE5vIG9uVmFsdWVzQ2hhbmdlIOKAlCByZXNldCBpcyBub3QgYSBjaGFuZ2VcbiAgICAgICAgLy8gZXZlbnQgb24gZWl0aGVyIHBhdGguXG4gICAgICAgIGZvcm1Db3JlLmludmFsaWRhdGVWYWxpZGF0aW9uUnVucyhmaWVsZHMpO1xuICAgICAgICBjb25zdCBuZXdFcnJvcnMgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5lcnJvcnMpO1xuICAgICAgICBjb25zdCBuZXdXYXJuaW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLndhcm5pbmdzKTtcbiAgICAgICAgY29uc3QgbmV3VG91Y2hlZCA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnRvdWNoZWQpO1xuICAgICAgICBjb25zdCBuZXdWYWxpZGF0aW5nID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUudmFsaWRhdGluZyk7XG4gICAgICAgIGZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgZGVsZXRlIG5ld0Vycm9yc1tmaWVsZF07XG4gICAgICAgICAgICBkZWxldGUgbmV3V2FybmluZ3NbZmllbGRdO1xuICAgICAgICAgICAgZGVsZXRlIG5ld1RvdWNoZWRbZmllbGRdO1xuICAgICAgICAgICAgZGVsZXRlIG5ld1ZhbGlkYXRpbmdbZmllbGRdO1xuICAgICAgICB9KTtcbiAgICAgICAgc3RvcmUuc2V0U3RhdGUoe1xuICAgICAgICAgICAgdmFsdWVzOiBuZXdWYWx1ZXMsXG4gICAgICAgICAgICBlcnJvcnM6IG5ld0Vycm9ycyxcbiAgICAgICAgICAgIHdhcm5pbmdzOiBuZXdXYXJuaW5ncyxcbiAgICAgICAgICAgIHRvdWNoZWQ6IG5ld1RvdWNoZWQsXG4gICAgICAgICAgICB2YWxpZGF0aW5nOiBuZXdWYWxpZGF0aW5nLFxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICBjb25zdCBzdWJtaXRXaXRoVmFsaWRhdGlvbiA9IHVzZU1lbW9pemVkRm4oKGNhbGxiYWNrKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgbGV0IHZhbGlkYXRlZFZhbHVlcztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhbGlkYXRlZFZhbHVlcyA9IHlpZWxkIHZhbGlkYXRlRmllbGRzQXN5bmMoKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoX2EpIHtcbiAgICAgICAgICAgIC8vIFZhbGlkYXRpb24gZmFpbHVyZSDigJQgdGhlIGZpZWxkIGVycm9ycyBhcmUgYWxyZWFkeSBpbiB0aGUgc3RvcmUuXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB5aWVsZCBjYWxsYmFjayh2YWxpZGF0ZWRWYWx1ZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIC8vIEEgdGhyb3dpbmcgY2FsbGJhY2sgaXMgYSBjb25zdW1lciBidWcsIG5vdCBhIHZhbGlkYXRpb24gZmFpbHVyZSDigJRcbiAgICAgICAgICAgICAgICAvLyBzdXJmYWNlIGl0IChtaXJyb3JpbmcgcmMtZmllbGQtZm9ybSdzIG9uRmluaXNoIGhhbmRsaW5nKSBpbnN0ZWFkXG4gICAgICAgICAgICAgICAgLy8gb2Ygc3dhbGxvd2luZyBpdCBzaWxlbnRseS5cbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbUHJvRm9ybV0gc3VibWl0IGNhbGxiYWNrIHRocmV3OicsIGVycik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsaWRhdGVkVmFsdWVzO1xuICAgIH0pKTtcbiAgICBjb25zdCBmb3JtSW5zdGFuY2UgPSB1c2VNZW1vKCgpID0+IChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGZvcm1Db3JlLmZvcm1JbnN0YW5jZSksIHsgZ2V0RmllbGRWYWx1ZTogZm9ybUNvcmUuZ2V0RmllbGRWYWx1ZSwgZ2V0RmllbGRzVmFsdWU6IGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlLCB2YWxpZGF0ZUZpZWxkczogdmFsaWRhdGVGaWVsZHNBc3luYywgc2V0RmllbGRWYWx1ZTogZm9ybUNvcmUuc2V0RmllbGRWYWx1ZSwgc2V0RmllbGRzVmFsdWU6IGZvcm1Db3JlLnNldEZpZWxkc1ZhbHVlLCBnZXRGaWVsZEVycm9yOiBnZXRGaWVsZEVycm9yLCBnZXRGaWVsZFdhcm5pbmc6IGdldEZpZWxkV2FybmluZywgZ2V0RmllbGRzRXJyb3I6IGdldEZpZWxkc0Vycm9yLCBpc0ZpZWxkVG91Y2hlZDogaXNGaWVsZFRvdWNoZWQsIGlzRmllbGRzVG91Y2hlZDogaXNGaWVsZHNUb3VjaGVkLCBpc0ZpZWxkVmFsaWRhdGluZzogaXNGaWVsZFZhbGlkYXRpbmcsIHNldEZpZWxkRXJyb3I6IGZvcm1Db3JlLnNldEZpZWxkRXJyb3IsIHNldEZpZWxkc0Vycm9yLCBzZXRGaWVsZFRvdWNoZWQ6IHNldEZpZWxkVG91Y2hlZCwgc2V0RmllbGRzVG91Y2hlZCwgcmVzZXRGaWVsZHM6IHJlc2V0Rm9ybUZpZWxkcywgc3VibWl0OiBzdWJtaXRXaXRoVmFsaWRhdGlvbiwgZGVmaW5lRmllbGQsIHJlZ2lzdGVyRmllbGQ6IGZvcm1Db3JlLnJlZ2lzdGVyRmllbGQsIHVucmVnaXN0ZXJGaWVsZDogZm9ybUNvcmUudW5yZWdpc3RlckZpZWxkIH0pKSwgW1xuICAgICAgICBmb3JtQ29yZS5mb3JtSW5zdGFuY2UsXG4gICAgICAgIGZvcm1Db3JlLmdldEZpZWxkVmFsdWUsXG4gICAgICAgIGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlLFxuICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZFZhbHVlLFxuICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRFcnJvcixcbiAgICAgICAgZm9ybUNvcmUucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgZm9ybUNvcmUudW5yZWdpc3RlckZpZWxkLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkc0FzeW5jLFxuICAgICAgICBnZXRGaWVsZEVycm9yLFxuICAgICAgICBnZXRGaWVsZFdhcm5pbmcsXG4gICAgICAgIGdldEZpZWxkc0Vycm9yLFxuICAgICAgICBpc0ZpZWxkVG91Y2hlZCxcbiAgICAgICAgaXNGaWVsZHNUb3VjaGVkLFxuICAgICAgICBpc0ZpZWxkVmFsaWRhdGluZyxcbiAgICAgICAgc2V0RmllbGRzRXJyb3IsXG4gICAgICAgIHNldEZpZWxkVG91Y2hlZCxcbiAgICAgICAgc2V0RmllbGRzVG91Y2hlZCxcbiAgICAgICAgcmVzZXRGb3JtRmllbGRzLFxuICAgICAgICBzdWJtaXRXaXRoVmFsaWRhdGlvbixcbiAgICAgICAgZGVmaW5lRmllbGQsXG4gICAgXSk7XG4gICAgLy8gRnVuY3Rpb24tZm9ybSBydWxlcyBnZXQgdGhlIEZVTEwgZm9ybSBpbnN0YW5jZSAoZXJyb3IgZ2V0dGVycywgdG91Y2hlZFxuICAgIC8vIHN0YXRlLCBtdXRhdG9ycykgaW5zdGVhZCBvZiB0aGUgYmFyZSBjb3JlIG1ldGhvZHMuIFJlZiB3cml0ZSDigJQgY2hlYXAgYW5kXG4gICAgLy8gaWRlbXBvdGVudCBwZXIgcmVuZGVyLlxuICAgIGZvcm1Db3JlLnNldFJ1bGVDb250ZXh0SW5zdGFuY2UoZm9ybUluc3RhbmNlKTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBJbnRlcm5hbHMg4oCTIGV4cG9zZWQgZm9yIFByb0Zvcm0gaW50ZWdyYXRpb24uIERhdGEgZmllbGRzIGFyZSBHRVRURVJTIHRoYXRcbiAgICAvLyByZWFkIHRoZSBsaXZlIHN0b3JlLCBzbyB0aGUgb2JqZWN0IGlzIGlkZW50aXR5LXN0YWJsZSB5ZXQgbmV2ZXIgc3RhbGUuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgaW50ZXJuYWxzID0gdXNlTWVtbygoKSA9PiAoe1xuICAgICAgICBnZXQgdmFsdWVzKCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0b3JlLmdldFN0YXRlKCkudmFsdWVzO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgZXJyb3JzKCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0b3JlLmdldFN0YXRlKCkuZXJyb3JzO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgd2FybmluZ3MoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuZ2V0U3RhdGUoKS53YXJuaW5ncztcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHRvdWNoZWQoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuZ2V0U3RhdGUoKS50b3VjaGVkO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgdmFsaWRhdGluZygpIHtcbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5nZXRTdGF0ZSgpLnZhbGlkYXRpbmc7XG4gICAgICAgIH0sXG4gICAgICAgIGZpZWxkUnVsZXM6IGZvcm1Db3JlLmZpZWxkUnVsZXMsXG4gICAgICAgIHNldEZpZWxkVmFsdWU6IGZvcm1Db3JlLnNldEZpZWxkVmFsdWUsXG4gICAgICAgIHNldEZpZWxkRXJyb3I6IGZvcm1Db3JlLnNldEZpZWxkRXJyb3IsXG4gICAgICAgIHNldEZpZWxkV2FybmluZzogZm9ybUNvcmUuc2V0RmllbGRXYXJuaW5nLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkQXN5bmMsXG4gICAgICAgIHJlZ2lzdGVyRmllbGQ6IGZvcm1Db3JlLnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHVucmVnaXN0ZXJGaWVsZDogZm9ybUNvcmUudW5yZWdpc3RlckZpZWxkLFxuICAgICAgICByZXRhaW5GaWVsZDogZm9ybUNvcmUucmV0YWluRmllbGQsXG4gICAgICAgIHJlbGVhc2VGaWVsZDogZm9ybUNvcmUucmVsZWFzZUZpZWxkLFxuICAgICAgICBoYW5kbGVTdWJtaXQsXG4gICAgICAgIGhhbmRsZVJlc2V0LFxuICAgIH0pLCBbXG4gICAgICAgIHN0b3JlLFxuICAgICAgICBmb3JtQ29yZS5maWVsZFJ1bGVzLFxuICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZFZhbHVlLFxuICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZEVycm9yLFxuICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZFdhcm5pbmcsXG4gICAgICAgIHZhbGlkYXRlRmllbGRBc3luYyxcbiAgICAgICAgZm9ybUNvcmUucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgZm9ybUNvcmUudW5yZWdpc3RlckZpZWxkLFxuICAgICAgICBmb3JtQ29yZS5yZXRhaW5GaWVsZCxcbiAgICAgICAgZm9ybUNvcmUucmVsZWFzZUZpZWxkLFxuICAgICAgICBoYW5kbGVTdWJtaXQsXG4gICAgICAgIGhhbmRsZVJlc2V0LFxuICAgIF0pO1xuICAgIHJldHVybiB7IGZvcm1JbnN0YW5jZSwgaW50ZXJuYWxzLCBzdG9yZSB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IHVzZUZvcm07IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { FormStore } from '../formStore';
|
|
2
2
|
import type { UseFormCoreConfig, UseFormCoreReturn } from '../interface';
|
|
3
|
-
export declare const useFormCore: (config?: UseFormCoreConfig) => UseFormCoreReturn & {
|
|
3
|
+
export declare const useFormCore: <Values = Record<string, any>>(config?: UseFormCoreConfig<Values>) => UseFormCoreReturn<Values> & {
|
|
4
4
|
store: FormStore;
|
|
5
|
-
getInitialValues: () => Record<string,
|
|
5
|
+
getInitialValues: () => Record<string, any>;
|
|
6
6
|
};
|
|
7
7
|
export default useFormCore;
|