@1money/react-ui 1.15.3 → 1.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +393 -0
- package/es/components/CheckboxGroup/CheckboxGroup.d.ts +3 -3
- package/es/components/CheckboxGroup/CheckboxGroup.js +94 -91
- package/es/components/CheckboxGroup/interface.d.ts +21 -15
- package/es/components/CheckboxGroup/style/CheckboxGroup.scss +0 -7
- package/es/components/Flex/Flex.d.ts +5 -0
- package/es/components/Flex/Flex.js +50 -0
- package/es/components/Flex/constants.d.ts +41 -0
- package/es/components/Flex/constants.js +45 -0
- package/es/components/Flex/index.d.ts +5 -0
- package/es/components/Flex/index.js +6 -0
- package/es/components/Flex/interface.d.ts +13 -0
- package/es/components/Flex/interface.js +2 -0
- package/es/components/Flex/style/Flex.css +1 -0
- package/es/components/Flex/style/Flex.scss +70 -0
- package/es/components/Flex/style/css.js +2 -0
- package/es/components/Flex/style/index.d.ts +1 -0
- package/es/components/Flex/style/index.js +2 -0
- package/es/components/Form/Form.d.ts +29 -0
- package/es/components/Form/Form.js +188 -0
- package/es/components/Form/FormItem.d.ts +4 -0
- package/es/components/Form/FormItem.js +165 -0
- package/es/components/Form/FormItemContent.d.ts +18 -0
- package/es/components/Form/FormItemContent.js +146 -0
- package/es/components/Form/constants.d.ts +46 -0
- package/es/components/Form/constants.js +65 -0
- package/es/components/Form/helper.d.ts +120 -0
- package/es/components/Form/helper.js +284 -0
- package/es/components/Form/index.d.ts +20 -0
- package/es/components/Form/index.js +21 -0
- package/es/components/Form/interface.d.ts +238 -0
- package/es/components/Form/interface.js +2 -0
- package/es/components/Form/style/Form.css +1 -0
- package/es/components/Form/style/Form.scss +167 -0
- package/es/components/Form/style/css.js +2 -0
- package/es/components/Form/style/index.d.ts +1 -0
- package/es/components/Form/style/index.js +2 -0
- package/es/components/Form/useFormItemContext.d.ts +32 -0
- package/es/components/Form/useFormItemContext.js +55 -0
- package/es/components/Form/useFormItemWatch.d.ts +51 -0
- package/es/components/Form/useFormItemWatch.js +69 -0
- package/es/components/Form/useValidationTrigger.d.ts +40 -0
- package/es/components/Form/useValidationTrigger.js +74 -0
- package/es/components/Grid/Col.d.ts +5 -0
- package/es/components/Grid/Col.js +97 -0
- package/es/components/Grid/Grid.d.ts +12 -0
- package/es/components/Grid/Grid.js +12 -0
- package/es/components/Grid/Row.d.ts +5 -0
- package/es/components/Grid/Row.js +48 -0
- package/es/components/Grid/constants.d.ts +55 -0
- package/es/components/Grid/constants.js +66 -0
- package/es/components/Grid/helper.d.ts +10 -0
- package/es/components/Grid/helper.js +44 -0
- package/es/components/Grid/index.d.ts +7 -0
- package/es/components/Grid/index.js +8 -0
- package/es/components/Grid/interface.d.ts +38 -0
- package/es/components/Grid/interface.js +2 -0
- package/es/components/Grid/style/Grid.css +1 -0
- package/es/components/Grid/style/Grid.scss +196 -0
- package/es/components/Grid/style/css.js +2 -0
- package/es/components/Grid/style/index.d.ts +1 -0
- package/es/components/Grid/style/index.js +2 -0
- package/es/components/Input/Input.js +72 -74
- package/es/components/Input/interface.d.ts +9 -9
- package/es/components/InputAmount/InputAmount.js +228 -276
- package/es/components/InputAmount/helper.d.ts +46 -0
- package/es/components/InputAmount/helper.js +115 -0
- package/es/components/InputAmount/style/normal.css +1 -1
- package/es/components/InputAmount/style/normal.scss +2 -2
- package/es/components/InputAmount/style/primary.css +1 -1
- package/es/components/InputAmount/style/primary.scss +2 -2
- package/es/components/Message/style/Message.css +1 -1
- package/es/components/Message/style/Message.scss +3 -3
- package/es/components/ProForm/ProForm.d.ts +33 -0
- package/es/components/ProForm/ProForm.js +208 -0
- package/es/components/ProForm/ProFormDependency.d.ts +12 -0
- package/es/components/ProForm/ProFormDependency.js +61 -0
- package/es/components/ProForm/ProFormList.d.ts +19 -0
- package/es/components/ProForm/ProFormList.js +348 -0
- package/es/components/ProForm/Submitter.d.ts +21 -0
- package/es/components/ProForm/Submitter.js +76 -0
- package/es/components/ProForm/constants.d.ts +34 -0
- package/es/components/ProForm/constants.js +40 -0
- package/es/components/ProForm/fields/ProFormCheckbox.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormCheckbox.js +11 -0
- package/es/components/ProForm/fields/ProFormCheckboxGroup.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormCheckboxGroup.js +46 -0
- package/es/components/ProForm/fields/ProFormDigit.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormDigit.js +15 -0
- package/es/components/ProForm/fields/ProFormMoney.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormMoney.js +10 -0
- package/es/components/ProForm/fields/ProFormMultiSelect.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormMultiSelect.js +27 -0
- package/es/components/ProForm/fields/ProFormPassword.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormPassword.js +16 -0
- package/es/components/ProForm/fields/ProFormRadio.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormRadio.js +13 -0
- package/es/components/ProForm/fields/ProFormSelect.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormSelect.js +13 -0
- package/es/components/ProForm/fields/ProFormSwitch.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormSwitch.js +11 -0
- package/es/components/ProForm/fields/ProFormText.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormText.js +15 -0
- package/es/components/ProForm/fields/ProFormTextArea.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormTextArea.js +16 -0
- package/es/components/ProForm/fields/createProFormField.d.ts +43 -0
- package/es/components/ProForm/fields/createProFormField.js +200 -0
- package/es/components/ProForm/fields/index.d.ts +12 -0
- package/es/components/ProForm/fields/index.js +13 -0
- package/es/components/ProForm/index.d.ts +7 -0
- package/es/components/ProForm/index.js +7 -0
- package/es/components/ProForm/interface.d.ts +306 -0
- package/es/components/ProForm/interface.js +2 -0
- package/es/components/ProForm/layouts/DrawerForm.d.ts +16 -0
- package/es/components/ProForm/layouts/DrawerForm.js +79 -0
- package/es/components/ProForm/layouts/ModalForm.d.ts +16 -0
- package/es/components/ProForm/layouts/ModalForm.js +89 -0
- package/es/components/ProForm/layouts/QueryFilter.d.ts +21 -0
- package/es/components/ProForm/layouts/QueryFilter.js +132 -0
- package/es/components/ProForm/layouts/StepsForm.d.ts +13 -0
- package/es/components/ProForm/layouts/StepsForm.js +295 -0
- package/es/components/ProForm/layouts/index.d.ts +4 -0
- package/es/components/ProForm/layouts/index.js +5 -0
- package/es/components/ProForm/layouts/useOverlayForm.d.ts +53 -0
- package/es/components/ProForm/layouts/useOverlayForm.js +143 -0
- package/es/components/ProForm/style/ProForm.module.css +1 -0
- package/es/components/ProForm/style/ProForm.module.scss +59 -0
- package/es/components/ProForm/style/css.js +3 -0
- package/es/components/ProForm/style/index.d.ts +1 -0
- package/es/components/ProForm/style/index.js +3 -0
- package/es/components/ProForm/utils.d.ts +72 -0
- package/es/components/ProForm/utils.js +206 -0
- package/es/components/RadioGroup/RadioGroup.js +46 -23
- package/es/components/RadioGroup/interface.d.ts +3 -1
- package/es/components/Select/Select.d.ts +1 -1
- package/es/components/Select/Select.js +113 -106
- package/es/components/Select/constants.d.ts +18 -0
- package/es/components/Select/constants.js +19 -0
- package/es/components/Sidebar/Sidebar.js +21 -23
- package/es/components/Sidebar/SidebarLogo.d.ts +7 -0
- package/es/components/Sidebar/SidebarLogo.js +33 -0
- package/es/components/Sidebar/SimplySidebar.d.ts +2 -2
- package/es/components/Sidebar/SimplySidebar.js +18 -22
- package/es/components/Sidebar/Stepper.js +14 -14
- package/es/components/Sidebar/constants.d.ts +16 -0
- package/es/components/Sidebar/constants.js +17 -0
- package/es/components/Sidebar/style/Sidebar.css +1 -1
- package/es/components/Sidebar/style/Sidebar.scss +1 -1
- package/es/components/Sidebar/style/SimplySidebar.css +1 -1
- package/es/components/Sidebar/style/SimplySidebar.scss +1 -1
- package/es/components/Sidebar/style/Stepper.css +1 -1
- package/es/components/Sidebar/style/Stepper.scss +11 -1
- package/es/components/Space/Space.d.ts +5 -0
- package/es/components/Space/Space.js +71 -0
- package/es/components/Space/constants.d.ts +33 -0
- package/es/components/Space/constants.js +37 -0
- package/es/components/Space/index.d.ts +5 -0
- package/es/components/Space/index.js +6 -0
- package/es/components/Space/interface.d.ts +12 -0
- package/es/components/Space/interface.js +2 -0
- package/es/components/Space/style/Space.css +1 -0
- package/es/components/Space/style/Space.scss +40 -0
- package/es/components/Space/style/css.js +2 -0
- package/es/components/Space/style/index.d.ts +1 -0
- package/es/components/Space/style/index.js +2 -0
- package/es/components/Switch/Switch.js +28 -25
- package/es/components/Switch/interface.d.ts +9 -4
- package/es/components/useControlledState/index.d.ts +14 -0
- package/es/components/useControlledState/index.js +32 -0
- package/es/components/useEventCallback/index.d.ts +11 -0
- package/es/components/useEventCallback/index.js +17 -0
- package/es/components/useLayoutEffect/index.d.ts +11 -0
- package/es/components/useLayoutEffect/index.js +17 -0
- package/es/components/useLayoutState/index.d.ts +13 -0
- package/es/components/useLayoutState/index.js +71 -0
- package/es/components/useMemoizedFn/index.d.ts +12 -0
- package/es/components/useMemoizedFn/index.js +27 -0
- package/es/components/usePrevious/index.d.ts +11 -0
- package/es/components/usePrevious/index.js +19 -0
- package/es/components/useSafeState/index.d.ts +12 -0
- package/es/components/useSafeState/index.js +24 -0
- package/es/components/useSyncState/index.d.ts +14 -0
- package/es/components/useSyncState/index.js +37 -0
- package/es/components/useUpdateEffect/index.d.ts +9 -0
- package/es/components/useUpdateEffect/index.js +19 -0
- package/es/index.css +1 -1
- package/es/index.d.ts +32 -2
- package/es/index.js +30 -1
- package/jest.setup.d.ts +1 -0
- package/jest.setup.ts +1 -0
- package/lib/components/CheckboxGroup/CheckboxGroup.d.ts +3 -3
- package/lib/components/CheckboxGroup/CheckboxGroup.js +92 -89
- package/lib/components/CheckboxGroup/interface.d.ts +21 -15
- package/lib/components/CheckboxGroup/style/CheckboxGroup.scss +0 -7
- package/lib/components/Flex/Flex.d.ts +5 -0
- package/lib/components/Flex/Flex.js +60 -0
- package/lib/components/Flex/constants.d.ts +41 -0
- package/lib/components/Flex/constants.js +51 -0
- package/lib/components/Flex/index.d.ts +5 -0
- package/lib/components/Flex/index.js +60 -0
- package/lib/components/Flex/interface.d.ts +13 -0
- package/lib/components/Flex/interface.js +6 -0
- package/lib/components/Flex/style/Flex.css +1 -0
- package/lib/components/Flex/style/Flex.scss +70 -0
- package/lib/components/Flex/style/css.js +4 -0
- package/lib/components/Flex/style/index.d.ts +1 -0
- package/lib/components/Flex/style/index.js +4 -0
- package/lib/components/Form/Form.d.ts +29 -0
- package/lib/components/Form/Form.js +199 -0
- package/lib/components/Form/FormItem.d.ts +4 -0
- package/lib/components/Form/FormItem.js +176 -0
- package/lib/components/Form/FormItemContent.d.ts +18 -0
- package/lib/components/Form/FormItemContent.js +156 -0
- package/lib/components/Form/constants.d.ts +46 -0
- package/lib/components/Form/constants.js +71 -0
- package/lib/components/Form/helper.d.ts +120 -0
- package/lib/components/Form/helper.js +290 -0
- package/lib/components/Form/index.d.ts +20 -0
- package/lib/components/Form/index.js +45 -0
- package/lib/components/Form/interface.d.ts +238 -0
- package/lib/components/Form/interface.js +6 -0
- package/lib/components/Form/style/Form.css +1 -0
- package/lib/components/Form/style/Form.scss +167 -0
- package/lib/components/Form/style/css.js +4 -0
- package/lib/components/Form/style/index.d.ts +1 -0
- package/lib/components/Form/style/index.js +4 -0
- package/lib/components/Form/useFormItemContext.d.ts +32 -0
- package/lib/components/Form/useFormItemContext.js +62 -0
- package/lib/components/Form/useFormItemWatch.d.ts +51 -0
- package/lib/components/Form/useFormItemWatch.js +76 -0
- package/lib/components/Form/useValidationTrigger.d.ts +40 -0
- package/lib/components/Form/useValidationTrigger.js +81 -0
- package/lib/components/Grid/Col.d.ts +5 -0
- package/lib/components/Grid/Col.js +107 -0
- package/lib/components/Grid/Grid.d.ts +12 -0
- package/lib/components/Grid/Grid.js +18 -0
- package/lib/components/Grid/Row.d.ts +5 -0
- package/lib/components/Grid/Row.js +58 -0
- package/lib/components/Grid/constants.d.ts +55 -0
- package/lib/components/Grid/constants.js +72 -0
- package/lib/components/Grid/helper.d.ts +10 -0
- package/lib/components/Grid/helper.js +51 -0
- package/lib/components/Grid/index.d.ts +7 -0
- package/lib/components/Grid/index.js +62 -0
- package/lib/components/Grid/interface.d.ts +38 -0
- package/lib/components/Grid/interface.js +6 -0
- package/lib/components/Grid/style/Grid.css +1 -0
- package/lib/components/Grid/style/Grid.scss +196 -0
- package/lib/components/Grid/style/css.js +4 -0
- package/lib/components/Grid/style/index.d.ts +1 -0
- package/lib/components/Grid/style/index.js +4 -0
- package/lib/components/Input/Input.js +71 -73
- package/lib/components/Input/interface.d.ts +9 -9
- package/lib/components/InputAmount/InputAmount.js +230 -278
- package/lib/components/InputAmount/helper.d.ts +46 -0
- package/lib/components/InputAmount/helper.js +122 -0
- package/lib/components/InputAmount/style/normal.css +1 -1
- package/lib/components/InputAmount/style/normal.scss +2 -2
- package/lib/components/InputAmount/style/primary.css +1 -1
- package/lib/components/InputAmount/style/primary.scss +2 -2
- package/lib/components/Message/style/Message.css +1 -1
- package/lib/components/Message/style/Message.scss +3 -3
- package/lib/components/ProForm/ProForm.d.ts +33 -0
- package/lib/components/ProForm/ProForm.js +216 -0
- package/lib/components/ProForm/ProFormDependency.d.ts +12 -0
- package/lib/components/ProForm/ProFormDependency.js +67 -0
- package/lib/components/ProForm/ProFormList.d.ts +19 -0
- package/lib/components/ProForm/ProFormList.js +355 -0
- package/lib/components/ProForm/Submitter.d.ts +21 -0
- package/lib/components/ProForm/Submitter.js +83 -0
- package/lib/components/ProForm/constants.d.ts +34 -0
- package/lib/components/ProForm/constants.js +46 -0
- package/lib/components/ProForm/fields/ProFormCheckbox.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormCheckbox.js +18 -0
- package/lib/components/ProForm/fields/ProFormCheckboxGroup.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormCheckboxGroup.js +53 -0
- package/lib/components/ProForm/fields/ProFormDigit.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormDigit.js +22 -0
- package/lib/components/ProForm/fields/ProFormMoney.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormMoney.js +17 -0
- package/lib/components/ProForm/fields/ProFormMultiSelect.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormMultiSelect.js +34 -0
- package/lib/components/ProForm/fields/ProFormPassword.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormPassword.js +23 -0
- package/lib/components/ProForm/fields/ProFormRadio.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormRadio.js +20 -0
- package/lib/components/ProForm/fields/ProFormSelect.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormSelect.js +20 -0
- package/lib/components/ProForm/fields/ProFormSwitch.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormSwitch.js +18 -0
- package/lib/components/ProForm/fields/ProFormText.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormText.js +22 -0
- package/lib/components/ProForm/fields/ProFormTextArea.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormTextArea.js +23 -0
- package/lib/components/ProForm/fields/createProFormField.d.ts +43 -0
- package/lib/components/ProForm/fields/createProFormField.js +208 -0
- package/lib/components/ProForm/fields/index.d.ts +12 -0
- package/lib/components/ProForm/fields/index.js +90 -0
- package/lib/components/ProForm/index.d.ts +7 -0
- package/lib/components/ProForm/index.js +73 -0
- package/lib/components/ProForm/interface.d.ts +306 -0
- package/lib/components/ProForm/interface.js +6 -0
- package/lib/components/ProForm/layouts/DrawerForm.d.ts +16 -0
- package/lib/components/ProForm/layouts/DrawerForm.js +86 -0
- package/lib/components/ProForm/layouts/ModalForm.d.ts +16 -0
- package/lib/components/ProForm/layouts/ModalForm.js +96 -0
- package/lib/components/ProForm/layouts/QueryFilter.d.ts +21 -0
- package/lib/components/ProForm/layouts/QueryFilter.js +139 -0
- package/lib/components/ProForm/layouts/StepsForm.d.ts +13 -0
- package/lib/components/ProForm/layouts/StepsForm.js +302 -0
- package/lib/components/ProForm/layouts/index.d.ts +4 -0
- package/lib/components/ProForm/layouts/index.js +40 -0
- package/lib/components/ProForm/layouts/useOverlayForm.d.ts +53 -0
- package/lib/components/ProForm/layouts/useOverlayForm.js +150 -0
- package/lib/components/ProForm/style/ProForm.module.css +1 -0
- package/lib/components/ProForm/style/ProForm.module.scss +59 -0
- package/lib/components/ProForm/style/css.js +4 -0
- package/lib/components/ProForm/style/index.d.ts +1 -0
- package/lib/components/ProForm/style/index.js +4 -0
- package/lib/components/ProForm/utils.d.ts +72 -0
- package/lib/components/ProForm/utils.js +213 -0
- package/lib/components/RadioGroup/RadioGroup.js +45 -22
- package/lib/components/RadioGroup/interface.d.ts +3 -1
- package/lib/components/Select/Select.d.ts +1 -1
- package/lib/components/Select/Select.js +114 -107
- package/lib/components/Select/constants.d.ts +18 -0
- package/lib/components/Select/constants.js +25 -0
- package/lib/components/Sidebar/Sidebar.js +21 -23
- package/lib/components/Sidebar/SidebarLogo.d.ts +7 -0
- package/lib/components/Sidebar/SidebarLogo.js +39 -0
- package/lib/components/Sidebar/SimplySidebar.d.ts +2 -2
- package/lib/components/Sidebar/SimplySidebar.js +17 -21
- package/lib/components/Sidebar/Stepper.js +14 -14
- package/lib/components/Sidebar/constants.d.ts +16 -0
- package/lib/components/Sidebar/constants.js +23 -0
- package/lib/components/Sidebar/style/Sidebar.css +1 -1
- package/lib/components/Sidebar/style/Sidebar.scss +1 -1
- package/lib/components/Sidebar/style/SimplySidebar.css +1 -1
- package/lib/components/Sidebar/style/SimplySidebar.scss +1 -1
- package/lib/components/Sidebar/style/Stepper.css +1 -1
- package/lib/components/Sidebar/style/Stepper.scss +11 -1
- package/lib/components/Space/Space.d.ts +5 -0
- package/lib/components/Space/Space.js +81 -0
- package/lib/components/Space/constants.d.ts +33 -0
- package/lib/components/Space/constants.js +43 -0
- package/lib/components/Space/index.d.ts +5 -0
- package/lib/components/Space/index.js +53 -0
- package/lib/components/Space/interface.d.ts +12 -0
- package/lib/components/Space/interface.js +6 -0
- package/lib/components/Space/style/Space.css +1 -0
- package/lib/components/Space/style/Space.scss +40 -0
- package/lib/components/Space/style/css.js +4 -0
- package/lib/components/Space/style/index.d.ts +1 -0
- package/lib/components/Space/style/index.js +4 -0
- package/lib/components/Switch/Switch.js +27 -24
- package/lib/components/Switch/interface.d.ts +9 -4
- package/lib/components/useControlledState/index.d.ts +14 -0
- package/lib/components/useControlledState/index.js +39 -0
- package/lib/components/useEventCallback/index.d.ts +11 -0
- package/lib/components/useEventCallback/index.js +24 -0
- package/lib/components/useLayoutEffect/index.d.ts +11 -0
- package/lib/components/useLayoutEffect/index.js +23 -0
- package/lib/components/useLayoutState/index.d.ts +13 -0
- package/lib/components/useLayoutState/index.js +79 -0
- package/lib/components/useMemoizedFn/index.d.ts +12 -0
- package/lib/components/useMemoizedFn/index.js +33 -0
- package/lib/components/usePrevious/index.d.ts +11 -0
- package/lib/components/usePrevious/index.js +25 -0
- package/lib/components/useSafeState/index.d.ts +12 -0
- package/lib/components/useSafeState/index.js +31 -0
- package/lib/components/useSyncState/index.d.ts +14 -0
- package/lib/components/useSyncState/index.js +44 -0
- package/lib/components/useUpdateEffect/index.d.ts +9 -0
- package/lib/components/useUpdateEffect/index.js +25 -0
- package/lib/index.css +1 -1
- package/lib/index.d.ts +32 -2
- package/lib/index.js +251 -1
- package/package.json +31 -1
|
@@ -6,14 +6,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports["default"] = exports.InputAmount = void 0;
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
10
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
12
|
var _react = require("react");
|
|
12
|
-
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
13
|
-
var _reactNumberFormat = require("react-number-format");
|
|
14
13
|
var _skeleton = require("primereact/skeleton");
|
|
15
14
|
var _Spinner = _interopRequireDefault(require("../Spinner"));
|
|
15
|
+
var _useLatest = _interopRequireDefault(require("../useLatest"));
|
|
16
|
+
var _useEventCallback = _interopRequireDefault(require("../useEventCallback"));
|
|
16
17
|
var _classnames = _interopRequireWildcard(require("../../utils/classnames"));
|
|
18
|
+
var _helper = require("./helper");
|
|
17
19
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
18
20
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
19
21
|
var __rest = void 0 && (void 0).__rest || function (s, e) {
|
|
@@ -24,84 +26,68 @@ var __rest = void 0 && (void 0).__rest || function (s, e) {
|
|
|
24
26
|
}
|
|
25
27
|
return t;
|
|
26
28
|
};
|
|
27
|
-
var MIN_INPUT_WIDTH = 33;
|
|
28
|
-
var normalizeNumberInput = function normalizeNumberInput(val) {
|
|
29
|
-
return val.replace(/[\u3002\uff0e\uff61]/g, '.').replace(/[\uFF0C]/g, ',');
|
|
30
|
-
};
|
|
31
|
-
var calcValueInRange = function calcValueInRange(val, min, max) {
|
|
32
|
-
if (val === '' || val === '-' || isNaN(+val)) return val;
|
|
33
|
-
var calcVal = val;
|
|
34
|
-
var bnVal = (0, _bignumber["default"])(val);
|
|
35
|
-
if (typeof min === 'number' || typeof min === 'bigint') {
|
|
36
|
-
var minBn = (0, _bignumber["default"])(min);
|
|
37
|
-
if (bnVal.lt(minBn)) {
|
|
38
|
-
calcVal = '' + min;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
if (typeof max === 'number' || typeof max === 'bigint') {
|
|
42
|
-
var maxBn = (0, _bignumber["default"])(max);
|
|
43
|
-
if (bnVal.gt(maxBn)) {
|
|
44
|
-
calcVal = '' + max;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return calcVal;
|
|
48
|
-
};
|
|
49
29
|
var InputAmount = exports.InputAmount = function InputAmount(props) {
|
|
50
|
-
var
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
30
|
+
var _a, _b;
|
|
31
|
+
var type = (_a = props.type) !== null && _a !== void 0 ? _a : _helper.DEFAULT_TYPE;
|
|
32
|
+
var size = type === 'normal' ? (_b = props.size) !== null && _b !== void 0 ? _b : _helper.DEFAULT_SIZE : _helper.DEFAULT_SIZE;
|
|
33
|
+
var footnote = type === 'normal' ? undefined : props.footnote;
|
|
34
|
+
var footnoteCls = type === 'normal' ? undefined : props.footnoteCls;
|
|
35
|
+
var rawBaseProps = Object.assign({}, props);
|
|
36
|
+
delete rawBaseProps.type;
|
|
37
|
+
delete rawBaseProps.size;
|
|
38
|
+
delete rawBaseProps.footnote;
|
|
39
|
+
delete rawBaseProps.footnoteCls;
|
|
40
|
+
var baseProps = rawBaseProps;
|
|
41
|
+
var value = baseProps.value,
|
|
42
|
+
maxFractionDigits = baseProps.maxFractionDigits,
|
|
43
|
+
_baseProps$placeholde = baseProps.placeholder,
|
|
44
|
+
placeholder = _baseProps$placeholde === void 0 ? _helper.DEFAULT_PLACEHOLDER : _baseProps$placeholde,
|
|
45
|
+
min = baseProps.min,
|
|
46
|
+
max = baseProps.max,
|
|
47
|
+
className = baseProps.className,
|
|
48
|
+
wrapperCls = baseProps.wrapperCls,
|
|
49
|
+
labelCls = baseProps.labelCls,
|
|
50
|
+
_baseProps$prefixCls = baseProps.prefixCls,
|
|
51
|
+
prefixCls = _baseProps$prefixCls === void 0 ? _helper.DEFAULT_PREFIX_CLS : _baseProps$prefixCls,
|
|
52
|
+
messageCls = baseProps.messageCls,
|
|
53
|
+
prefixEleCls = baseProps.prefixEleCls,
|
|
54
|
+
suffixEleCls = baseProps.suffixEleCls,
|
|
55
|
+
invalid = baseProps.invalid,
|
|
56
|
+
negative = baseProps.negative,
|
|
57
|
+
required = baseProps.required,
|
|
58
|
+
loading = baseProps.loading,
|
|
59
|
+
success = baseProps.success,
|
|
60
|
+
disabled = baseProps.disabled,
|
|
61
|
+
readOnly = baseProps.readOnly,
|
|
62
|
+
label = baseProps.label,
|
|
63
|
+
prefix = baseProps.prefix,
|
|
64
|
+
suffix = baseProps.suffix,
|
|
65
|
+
currency = baseProps.currency,
|
|
66
|
+
message = baseProps.message,
|
|
67
|
+
onChange = baseProps.onChange,
|
|
68
|
+
onBlur = baseProps.onBlur,
|
|
69
|
+
onFocus = baseProps.onFocus,
|
|
70
|
+
rest = __rest(baseProps, ["value", "maxFractionDigits", "placeholder", "min", "max", "className", "wrapperCls", "labelCls", "prefixCls", "messageCls", "prefixEleCls", "suffixEleCls", "invalid", "negative", "required", "loading", "success", "disabled", "readOnly", "label", "prefix", "suffix", "currency", "message", "onChange", "onBlur", "onFocus"]);
|
|
71
|
+
var cls = (0, _classnames["default"])("".concat(prefixCls, "-").concat(type));
|
|
72
|
+
// ── Refs ──
|
|
88
73
|
var inputRef = (0, _react.useRef)(null);
|
|
89
74
|
var fakeEleRef = (0, _react.useRef)(null);
|
|
90
75
|
var prefixRef = (0, _react.useRef)(null);
|
|
91
76
|
var suffixRef = (0, _react.useRef)(null);
|
|
92
77
|
var currencyRef = (0, _react.useRef)(null);
|
|
93
78
|
var containerRef = (0, _react.useRef)(null);
|
|
94
|
-
var
|
|
79
|
+
var caretPosRef = (0, _react.useRef)(0);
|
|
95
80
|
var ignoreSelectRef = (0, _react.useRef)(false);
|
|
96
|
-
var onChangeRef = (0,
|
|
81
|
+
var onChangeRef = (0, _useLatest["default"])(onChange);
|
|
82
|
+
// ── State ──
|
|
97
83
|
var _useState = (0, _react.useState)(null),
|
|
98
84
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
var _useState3 = (0, _react.useState)(MIN_INPUT_WIDTH),
|
|
85
|
+
innerValue = _useState2[0],
|
|
86
|
+
setInnerValue = _useState2[1];
|
|
87
|
+
var _useState3 = (0, _react.useState)(_helper.MIN_INPUT_WIDTH),
|
|
102
88
|
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
103
|
-
|
|
104
|
-
|
|
89
|
+
inputWidth = _useState4[0],
|
|
90
|
+
setInputWidth = _useState4[1];
|
|
105
91
|
var _useState5 = (0, _react.useState)(false),
|
|
106
92
|
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
107
93
|
isMaxWidth = _useState6[0],
|
|
@@ -110,305 +96,271 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
|
|
|
110
96
|
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
111
97
|
isFocus = _useState8[0],
|
|
112
98
|
setIsFocus = _useState8[1];
|
|
113
|
-
var isFocusRef = (0,
|
|
99
|
+
var isFocusRef = (0, _useLatest["default"])(isFocus);
|
|
100
|
+
var isUncontrolled = typeof value === 'undefined';
|
|
114
101
|
var formattedValue = (0, _react.useMemo)(function () {
|
|
115
|
-
return (0,
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}, [_value, negative]);
|
|
120
|
-
var valueRef = (0, _react.useRef)({
|
|
121
|
-
value: value,
|
|
122
|
-
_value: _value,
|
|
102
|
+
return (0, _helper.formatThousands)(innerValue !== null && innerValue !== void 0 ? innerValue : '', negative);
|
|
103
|
+
}, [innerValue, negative]);
|
|
104
|
+
var stateRef = (0, _useLatest["default"])({
|
|
105
|
+
innerValue: innerValue,
|
|
123
106
|
formattedValue: formattedValue,
|
|
124
107
|
min: min,
|
|
125
108
|
max: max,
|
|
126
109
|
negative: negative,
|
|
127
110
|
maxFractionDigits: maxFractionDigits
|
|
128
111
|
});
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
isFocusRef.current = focus;
|
|
132
|
-
}, []);
|
|
133
|
-
var scrollToEnd = (0, _react.useCallback)(function () {
|
|
112
|
+
// ── Helpers ──
|
|
113
|
+
var scrollToEnd = (0, _useEventCallback["default"])(function () {
|
|
134
114
|
var sticky = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
135
115
|
var _a;
|
|
136
116
|
var input = inputRef.current;
|
|
137
117
|
if (!input) return;
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
118
|
+
if (sticky) {
|
|
119
|
+
input.setSelectionRange(caretPosRef.current, caretPosRef.current);
|
|
120
|
+
} else {
|
|
121
|
+
var len = (_a = input.value) === null || _a === void 0 ? void 0 : _a.length;
|
|
122
|
+
input.setSelectionRange(len, len);
|
|
123
|
+
input.scrollLeft = input.scrollWidth;
|
|
124
|
+
}
|
|
144
125
|
input.focus();
|
|
145
|
-
}
|
|
146
|
-
var calcCaretPos = (0,
|
|
126
|
+
});
|
|
127
|
+
var calcCaretPos = (0, _useEventCallback["default"])(function (val) {
|
|
147
128
|
var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
148
129
|
var currPos = arguments.length > 2 ? arguments[2] : undefined;
|
|
149
130
|
var _a, _b;
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
131
|
+
var input = inputRef.current;
|
|
132
|
+
if (!input) return;
|
|
133
|
+
var _stateRef$current = stateRef.current,
|
|
134
|
+
prev = _stateRef$current.innerValue,
|
|
135
|
+
negative = _stateRef$current.negative,
|
|
136
|
+
formattedValue = _stateRef$current.formattedValue;
|
|
137
|
+
var formattedNewVal = (0, _helper.formatThousands)(val, negative);
|
|
138
|
+
var originOffset = val.length - ((_a = prev === null || prev === void 0 ? void 0 : prev.length) !== null && _a !== void 0 ? _a : 0);
|
|
139
|
+
var position = (_b = currPos !== null && currPos !== void 0 ? currPos : input.selectionEnd) !== null && _b !== void 0 ? _b : 0;
|
|
140
|
+
// Map formatted position back to raw position
|
|
141
|
+
position = (0, _helper.stripCommas)(formattedValue.slice(0, Math.max(position, 0))).length;
|
|
142
|
+
// Map raw position forward to formatted position
|
|
143
|
+
var posVal = val.slice(0, position + originOffset);
|
|
144
|
+
formattedNewVal.split('').reduce(function (acc, _char, ind) {
|
|
145
|
+
if (_char === _helper.CHAR_COMMA) return acc;
|
|
146
|
+
acc.push(_char);
|
|
147
|
+
if (acc.join('') === posVal) position = ind + 1;
|
|
148
|
+
return acc;
|
|
149
|
+
}, []);
|
|
150
|
+
caretPosRef.current = position + offset;
|
|
151
|
+
});
|
|
152
|
+
var commitValue = (0, _useEventCallback["default"])(function (val, hasDecimalPoint, e) {
|
|
153
|
+
var _a;
|
|
154
|
+
if (isUncontrolled) {
|
|
155
|
+
setInnerValue(val === '' ? null : val);
|
|
156
|
+
calcCaretPos(val, hasDecimalPoint ? _helper.DECIMAL_POINT_OFFSET : 0, Math.max(caretPosRef.current, 0));
|
|
157
|
+
ignoreSelectRef.current = true;
|
|
173
158
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
159
|
+
if (e) (_a = onChangeRef.current) === null || _a === void 0 ? void 0 : _a.call(onChangeRef, e, val);
|
|
160
|
+
});
|
|
161
|
+
// ── Event Handlers ──
|
|
162
|
+
var handleChange = (0, _useEventCallback["default"])(function (e) {
|
|
163
|
+
var _a;
|
|
177
164
|
if (disabled || readOnly) return;
|
|
178
|
-
var
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
var hasDecimalPoint =
|
|
189
|
-
|
|
190
|
-
if (
|
|
191
|
-
|
|
192
|
-
if (
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
var maxDecimals = Number(maxFractionDigits);
|
|
200
|
-
if (decimal != null && decimal.length > maxDecimals) {
|
|
201
|
-
var truncatedDecimals = decimal.slice(0, maxDecimals);
|
|
202
|
-
var _formattedValue$split = formattedValue.split('.'),
|
|
165
|
+
var _stateRef$current2 = stateRef.current,
|
|
166
|
+
innerValue = _stateRef$current2.innerValue,
|
|
167
|
+
formattedValue = _stateRef$current2.formattedValue,
|
|
168
|
+
min = _stateRef$current2.min,
|
|
169
|
+
max = _stateRef$current2.max,
|
|
170
|
+
negative = _stateRef$current2.negative,
|
|
171
|
+
maxFractionDigits = _stateRef$current2.maxFractionDigits;
|
|
172
|
+
var parsed = (0, _helper.parseRawInput)((_a = e.target.value) !== null && _a !== void 0 ? _a : '', negative);
|
|
173
|
+
if (!parsed) return;
|
|
174
|
+
var val = parsed.val;
|
|
175
|
+
var hasDecimalPoint = parsed.hasDecimalPoint,
|
|
176
|
+
isStandaloneMinus = parsed.isStandaloneMinus;
|
|
177
|
+
if (val === innerValue && !hasDecimalPoint) return;
|
|
178
|
+
// Enforce fraction digit limit
|
|
179
|
+
if ((0, _helper.isNumericType)(maxFractionDigits)) {
|
|
180
|
+
var _truncateFractionDigi = (0, _helper.truncateFractionDigits)(val, Number(maxFractionDigits)),
|
|
181
|
+
_int = _truncateFractionDigi["int"],
|
|
182
|
+
truncated = _truncateFractionDigi.truncated,
|
|
183
|
+
overflow = _truncateFractionDigi.overflow;
|
|
184
|
+
if (overflow) {
|
|
185
|
+
var _formattedValue$split = formattedValue.split(_helper.CHAR_DOT),
|
|
203
186
|
_formattedValue$split2 = (0, _slicedToArray2["default"])(_formattedValue$split, 1),
|
|
204
187
|
oldInt = _formattedValue$split2[0];
|
|
205
|
-
if (
|
|
206
|
-
val =
|
|
188
|
+
if ((0, _helper.stripCommas)(oldInt) === _int) return;
|
|
189
|
+
val = truncated;
|
|
207
190
|
}
|
|
208
191
|
}
|
|
209
|
-
|
|
210
|
-
|
|
192
|
+
// Clamp to min/max range
|
|
193
|
+
if ((0, _helper.isNumericType)(min) || (0, _helper.isNumericType)(max)) {
|
|
194
|
+
val = (0, _helper.calcValueInRange)(val, min, max);
|
|
211
195
|
}
|
|
196
|
+
// Normalize the final value
|
|
212
197
|
if (val !== '') {
|
|
213
|
-
|
|
214
|
-
val = '-';
|
|
215
|
-
} else {
|
|
216
|
-
var decimals = (_c = (_b = (_a = val.match(/\.(\d+)$/)) === null || _a === void 0 ? void 0 : _a[1]) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0;
|
|
217
|
-
var bn = (0, _bignumber["default"])(val);
|
|
218
|
-
var normalized = bn.toFixed(decimals);
|
|
219
|
-
if (negative && val.trim().startsWith('-') && bn.isZero()) {
|
|
220
|
-
normalized = normalized.startsWith('-') ? normalized : "-".concat(normalized);
|
|
221
|
-
}
|
|
222
|
-
val = "".concat(normalized).concat(hasDecimalPoint ? '.' : '').trim();
|
|
223
|
-
}
|
|
198
|
+
val = isStandaloneMinus ? _helper.CHAR_MINUS : (0, _helper.normalizeValue)(val, hasDecimalPoint, negative);
|
|
224
199
|
}
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
ignoreSelectRef.current = true;
|
|
229
|
-
} else {
|
|
230
|
-
e.preventDefault();
|
|
231
|
-
e.stopPropagation();
|
|
232
|
-
}
|
|
233
|
-
(_d = onChangeRef.current) === null || _d === void 0 ? void 0 : _d.call(onChangeRef, e, val);
|
|
234
|
-
}, [disabled, readOnly]);
|
|
235
|
-
var handleSelect = (0, _react.useCallback)(function () {
|
|
200
|
+
commitValue(val, hasDecimalPoint, e);
|
|
201
|
+
});
|
|
202
|
+
var handleSelect = (0, _useEventCallback["default"])(function () {
|
|
236
203
|
var _a;
|
|
237
204
|
if (ignoreSelectRef.current) {
|
|
238
205
|
ignoreSelectRef.current = false;
|
|
239
206
|
return;
|
|
240
207
|
}
|
|
241
208
|
var currPos = (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.selectionEnd;
|
|
242
|
-
if (typeof currPos === 'number')
|
|
243
|
-
}
|
|
209
|
+
if (typeof currPos === 'number') caretPosRef.current = currPos;
|
|
210
|
+
});
|
|
211
|
+
var handleFocus = (0, _useEventCallback["default"])(function (e) {
|
|
212
|
+
setIsFocus(true);
|
|
213
|
+
onFocus === null || onFocus === void 0 ? void 0 : onFocus(e);
|
|
214
|
+
});
|
|
215
|
+
var handleBlur = (0, _useEventCallback["default"])(function (e) {
|
|
216
|
+
setIsFocus(false);
|
|
217
|
+
onBlur === null || onBlur === void 0 ? void 0 : onBlur(e);
|
|
218
|
+
});
|
|
219
|
+
var handleContainerClick = (0, _useEventCallback["default"])(function (e) {
|
|
220
|
+
var _a;
|
|
221
|
+
if (e.target instanceof HTMLInputElement) return;
|
|
222
|
+
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
223
|
+
if (isMaxWidth) scrollToEnd();
|
|
224
|
+
});
|
|
225
|
+
// ── Layout Effects ──
|
|
244
226
|
(0, _react.useLayoutEffect)(function () {
|
|
245
227
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
246
|
-
var containerWidth = (_b = (_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) !== null && _b !== void 0 ? _b : MIN_INPUT_WIDTH;
|
|
228
|
+
var containerWidth = (_b = (_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) !== null && _b !== void 0 ? _b : _helper.MIN_INPUT_WIDTH;
|
|
247
229
|
var prefixWidth = (_d = (_c = prefixRef.current) === null || _c === void 0 ? void 0 : _c.offsetWidth) !== null && _d !== void 0 ? _d : 0;
|
|
248
230
|
var suffixWidth = (_f = (_e = suffixRef.current) === null || _e === void 0 ? void 0 : _e.offsetWidth) !== null && _f !== void 0 ? _f : 0;
|
|
249
231
|
var currencyWidth = (_h = (_g = currencyRef.current) === null || _g === void 0 ? void 0 : _g.offsetWidth) !== null && _h !== void 0 ? _h : 0;
|
|
250
232
|
var fakeWidth = (_k = (_j = fakeEleRef.current) === null || _j === void 0 ? void 0 : _j.offsetWidth) !== null && _k !== void 0 ? _k : 0;
|
|
251
|
-
var gapWidth =
|
|
233
|
+
var gapWidth = (0, _helper.calcGapWidth)(!!prefixWidth, !!suffixWidth, !!currencyWidth);
|
|
252
234
|
var maxWidth = containerWidth - prefixWidth - suffixWidth - currencyWidth - gapWidth;
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
setIsMaxWidth(isMax);
|
|
235
|
+
setInputWidth(Math.min(maxWidth, Math.max(fakeWidth, _helper.MIN_INPUT_WIDTH)));
|
|
236
|
+
setIsMaxWidth(fakeWidth >= maxWidth);
|
|
256
237
|
if (isFocusRef.current) scrollToEnd(true);
|
|
257
|
-
}, [
|
|
238
|
+
}, [innerValue, prefix, suffix, currency, loading]);
|
|
258
239
|
(0, _react.useLayoutEffect)(function () {
|
|
259
|
-
var _a
|
|
260
|
-
var val =
|
|
240
|
+
var _a;
|
|
241
|
+
var val = isUncontrolled ? innerValue : value;
|
|
261
242
|
var hasDecimalPoint = false;
|
|
262
243
|
var isStandaloneMinus = false;
|
|
263
244
|
if (typeof val === 'string') {
|
|
264
245
|
if (val === '') {
|
|
265
246
|
val = null;
|
|
266
247
|
} else {
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
isStandaloneMinus =
|
|
272
|
-
if (!
|
|
273
|
-
}
|
|
274
|
-
} else if (val !== null && typeof val !== 'number' && typeof val !== 'bigint') return;
|
|
275
|
-
if (!negative) {
|
|
276
|
-
if (typeof val === 'number') {
|
|
277
|
-
val = Math.abs(val);
|
|
278
|
-
} else if (typeof val === 'bigint') {
|
|
279
|
-
var zero = BigInt(0);
|
|
280
|
-
val = val < zero ? -val : val;
|
|
248
|
+
var parsed = (0, _helper.parseRawInput)(val, negative);
|
|
249
|
+
if (!parsed) return;
|
|
250
|
+
val = parsed.val;
|
|
251
|
+
hasDecimalPoint = parsed.hasDecimalPoint;
|
|
252
|
+
isStandaloneMinus = parsed.isStandaloneMinus;
|
|
253
|
+
if (!negative) val = (0, _helper.stripMinus)(val);
|
|
281
254
|
}
|
|
255
|
+
} else if (val !== null && !(0, _helper.isNumericType)(val)) return;
|
|
256
|
+
// Ensure non-negative when negative is not allowed
|
|
257
|
+
if (!negative && (0, _helper.isNumericType)(val)) {
|
|
258
|
+
val = (0, _helper.absValue)(val);
|
|
282
259
|
}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
val = "".concat(_int2, ".").concat(truncatedDecimals);
|
|
292
|
-
if (typeof value === 'undefined') {
|
|
293
|
-
setValue(val);
|
|
260
|
+
// Enforce fraction digit limit
|
|
261
|
+
if ((typeof val === 'string' || typeof val === 'number') && (0, _helper.isNumericType)(maxFractionDigits)) {
|
|
262
|
+
var _truncateFractionDigi2 = (0, _helper.truncateFractionDigits)("".concat(val), Number(maxFractionDigits)),
|
|
263
|
+
truncated = _truncateFractionDigi2.truncated,
|
|
264
|
+
overflow = _truncateFractionDigi2.overflow;
|
|
265
|
+
if (overflow) {
|
|
266
|
+
if (isUncontrolled) {
|
|
267
|
+
setInnerValue(truncated);
|
|
294
268
|
} else {
|
|
295
|
-
|
|
269
|
+
(_a = onChangeRef.current) === null || _a === void 0 ? void 0 : _a.call(onChangeRef, {
|
|
296
270
|
target: inputRef.current
|
|
297
|
-
};
|
|
298
|
-
(_a = onChangeRef.current) === null || _a === void 0 ? void 0 : _a.call(onChangeRef, syntheticEvent, val !== null && val !== void 0 ? val : '');
|
|
271
|
+
}, truncated !== null && truncated !== void 0 ? truncated : '');
|
|
299
272
|
}
|
|
300
273
|
return;
|
|
301
274
|
}
|
|
302
275
|
}
|
|
303
|
-
|
|
304
|
-
|
|
276
|
+
// Clamp to min/max range
|
|
277
|
+
if ((0, _helper.isNumericType)(val) || typeof val === 'string') {
|
|
278
|
+
val = (0, _helper.calcValueInRange)("".concat(val), min, max);
|
|
305
279
|
}
|
|
306
280
|
if (val === '' || val == null) {
|
|
307
|
-
|
|
281
|
+
setInnerValue(null);
|
|
308
282
|
} else {
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
} else {
|
|
312
|
-
var strVal = '' + val;
|
|
313
|
-
var decimals = (_d = (_c = (_b = strVal.match(/\.(\d+)$/)) === null || _b === void 0 ? void 0 : _b[1]) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0;
|
|
314
|
-
var bn = (0, _bignumber["default"])(strVal);
|
|
315
|
-
var normalized = bn.toFixed(decimals);
|
|
316
|
-
if (negative && strVal.trim().startsWith('-') && bn.isZero()) {
|
|
317
|
-
normalized = normalized.startsWith('-') ? normalized : "-".concat(normalized);
|
|
318
|
-
}
|
|
319
|
-
val = "".concat(normalized).concat(hasDecimalPoint ? '.' : '').trim();
|
|
320
|
-
}
|
|
321
|
-
setValue(val);
|
|
283
|
+
val = isStandaloneMinus ? _helper.CHAR_MINUS : (0, _helper.normalizeValue)("".concat(val), hasDecimalPoint, negative);
|
|
284
|
+
setInnerValue(val);
|
|
322
285
|
}
|
|
323
|
-
calcCaretPos(val !== null && val !== void 0 ? val : '', hasDecimalPoint ?
|
|
286
|
+
calcCaretPos(val !== null && val !== void 0 ? val : '', hasDecimalPoint ? _helper.DECIMAL_POINT_OFFSET : 0, Math.max(caretPosRef.current, 0));
|
|
324
287
|
ignoreSelectRef.current = true;
|
|
325
288
|
}, [value, maxFractionDigits, min, max, negative]);
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
className: classes('wrapper', (0, _classnames.joinCls)(wrapperCls, classes(size), invalid && classes('invalid'), success && classes('success'), disabled && classes('disabled'), readOnly && classes('readonly'), _value && classes('filled'))),
|
|
340
|
-
children: [label ? loading ? (0, _jsxRuntime.jsx)(_skeleton.Skeleton, {
|
|
341
|
-
width: '72px',
|
|
342
|
-
height: '18px',
|
|
343
|
-
className: classes('label-loading')
|
|
344
|
-
}) : (0, _jsxRuntime.jsx)("span", {
|
|
345
|
-
className: classes('label', (0, _classnames.joinCls)(required && classes('label-required'), labelCls)),
|
|
289
|
+
// ── Render ──
|
|
290
|
+
var wrapperClassName = cls('wrapper', (0, _classnames.joinCls)(wrapperCls, cls(size), invalid && cls('invalid'), success && cls('success'), disabled && cls('disabled'), readOnly && cls('readonly'), innerValue && cls('filled')));
|
|
291
|
+
var renderLabel = function renderLabel() {
|
|
292
|
+
if (!label) return null;
|
|
293
|
+
if (loading) {
|
|
294
|
+
return (0, _jsxRuntime.jsx)(_skeleton.Skeleton, {
|
|
295
|
+
width: _helper.SKELETON_LABEL_WIDTH,
|
|
296
|
+
height: _helper.SKELETON_LABEL_HEIGHT,
|
|
297
|
+
className: cls('label-loading')
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
return (0, _jsxRuntime.jsx)("span", {
|
|
301
|
+
className: cls('label', (0, _classnames.joinCls)(required && cls('label-required'), labelCls)),
|
|
346
302
|
children: label
|
|
347
|
-
})
|
|
303
|
+
});
|
|
304
|
+
};
|
|
305
|
+
var renderSuffix = function renderSuffix() {
|
|
306
|
+
if (loading) return (0, _jsxRuntime.jsx)(_Spinner["default"], {
|
|
307
|
+
className: cls('suffix-loading'),
|
|
308
|
+
strokeWidth: _helper.SPINNER_STROKE_WIDTH
|
|
309
|
+
});
|
|
310
|
+
if (suffix) return (0, _jsxRuntime.jsx)("span", {
|
|
311
|
+
ref: suffixRef,
|
|
312
|
+
className: cls('suffix', suffixEleCls),
|
|
313
|
+
children: suffix
|
|
314
|
+
});
|
|
315
|
+
return null;
|
|
316
|
+
};
|
|
317
|
+
return (0, _jsxRuntime.jsxs)("div", {
|
|
318
|
+
className: wrapperClassName,
|
|
319
|
+
children: [renderLabel(), (0, _jsxRuntime.jsxs)("div", {
|
|
348
320
|
ref: containerRef,
|
|
349
|
-
className:
|
|
350
|
-
onClick:
|
|
351
|
-
var _a;
|
|
352
|
-
if (e.target instanceof HTMLInputElement) return;
|
|
353
|
-
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
354
|
-
if (isMaxWidth) scrollToEnd();
|
|
355
|
-
},
|
|
321
|
+
className: cls(void 0, (0, _classnames.joinCls)(className, isFocus && cls('focus'))),
|
|
322
|
+
onClick: handleContainerClick,
|
|
356
323
|
children: [prefix && (0, _jsxRuntime.jsx)("span", {
|
|
357
324
|
ref: prefixRef,
|
|
358
|
-
className:
|
|
325
|
+
className: cls('prefix', prefixEleCls),
|
|
359
326
|
children: prefix
|
|
360
327
|
}), (0, _jsxRuntime.jsx)("div", {
|
|
361
|
-
className:
|
|
328
|
+
className: cls('element', !isFocus && isMaxWidth ? cls('element-max') : ''),
|
|
362
329
|
children: (0, _jsxRuntime.jsx)("input", Object.assign({}, rest, {
|
|
363
330
|
ref: inputRef,
|
|
364
331
|
value: formattedValue,
|
|
365
332
|
placeholder: placeholder,
|
|
366
333
|
readOnly: readOnly,
|
|
367
334
|
disabled: disabled,
|
|
368
|
-
style: {
|
|
369
|
-
'--input-width': "".concat(_width, "px")
|
|
370
|
-
},
|
|
335
|
+
style: (0, _defineProperty2["default"])({}, _helper.CSS_VAR_INPUT_WIDTH, "".concat(inputWidth, "px")),
|
|
371
336
|
onChange: handleChange,
|
|
372
337
|
onSelect: handleSelect,
|
|
373
|
-
onFocus:
|
|
374
|
-
|
|
375
|
-
_onFocus === null || _onFocus === void 0 ? void 0 : _onFocus(e);
|
|
376
|
-
},
|
|
377
|
-
onBlur: function onBlur(e) {
|
|
378
|
-
changeFocus(false);
|
|
379
|
-
_onBlur === null || _onBlur === void 0 ? void 0 : _onBlur(e);
|
|
380
|
-
}
|
|
338
|
+
onFocus: handleFocus,
|
|
339
|
+
onBlur: handleBlur
|
|
381
340
|
}))
|
|
382
341
|
}), currency && (0, _jsxRuntime.jsx)("span", {
|
|
383
342
|
ref: currencyRef,
|
|
384
|
-
className:
|
|
343
|
+
className: cls('currency'),
|
|
385
344
|
children: currency
|
|
386
|
-
}),
|
|
387
|
-
className: classes('suffix-loading'),
|
|
388
|
-
strokeWidth: '4'
|
|
389
|
-
}) : suffix ? (0, _jsxRuntime.jsx)("span", {
|
|
390
|
-
ref: suffixRef,
|
|
391
|
-
className: classes('suffix', suffixEleCls),
|
|
392
|
-
children: suffix
|
|
393
|
-
}) : null, (0, _jsxRuntime.jsx)("span", {
|
|
345
|
+
}), renderSuffix(), (0, _jsxRuntime.jsx)("span", {
|
|
394
346
|
ref: fakeEleRef,
|
|
395
|
-
className:
|
|
347
|
+
className: cls('fake'),
|
|
396
348
|
onClick: function onClick(e) {
|
|
397
349
|
return e.stopPropagation();
|
|
398
350
|
},
|
|
399
351
|
children: formattedValue
|
|
400
352
|
})]
|
|
401
353
|
}), (message || footnote) && (0, _jsxRuntime.jsxs)("div", {
|
|
402
|
-
className:
|
|
354
|
+
className: cls('extra'),
|
|
403
355
|
children: [message && (0, _jsxRuntime.jsx)("div", {
|
|
404
|
-
className:
|
|
356
|
+
className: cls('message', messageCls),
|
|
405
357
|
children: message
|
|
406
358
|
}), footnote && (0, _jsxRuntime.jsx)("div", {
|
|
407
|
-
className:
|
|
359
|
+
className: cls('footnote', footnoteCls),
|
|
408
360
|
children: footnote
|
|
409
361
|
})]
|
|
410
362
|
})]
|
|
411
363
|
});
|
|
412
364
|
};
|
|
413
365
|
var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(InputAmount);
|
|
414
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfanN4UnVudGltZSIsInJlcXVpcmUiLCJfcmVhY3QiLCJfYmlnbnVtYmVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yZWFjdE51bWJlckZvcm1hdCIsIl9za2VsZXRvbiIsIl9TcGlubmVyIiwiX2NsYXNzbmFtZXMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9fcmVzdCIsInMiLCJwIiwicHJvdG90eXBlIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiTUlOX0lOUFVUX1dJRFRIIiwibm9ybWFsaXplTnVtYmVySW5wdXQiLCJ2YWwiLCJyZXBsYWNlIiwiY2FsY1ZhbHVlSW5SYW5nZSIsIm1pbiIsIm1heCIsImlzTmFOIiwiY2FsY1ZhbCIsImJuVmFsIiwiQmlnTnVtYmVyIiwibWluQm4iLCJsdCIsIm1heEJuIiwiZ3QiLCJJbnB1dEFtb3VudCIsImV4cG9ydHMiLCJwcm9wcyIsInZhbHVlIiwiX3Byb3BzJHR5cGUiLCJ0eXBlIiwibWF4RnJhY3Rpb25EaWdpdHMiLCJjaGlsZHJlbiIsIl9wcm9wcyRwbGFjZWhvbGRlciIsInBsYWNlaG9sZGVyIiwiX3Byb3BzJHNpemUiLCJzaXplIiwiZm9vdG5vdGUiLCJmb290bm90ZUNscyIsImNsYXNzTmFtZSIsIndyYXBwZXJDbHMiLCJsYWJlbENscyIsIl9wcm9wcyRwcmVmaXhDbHMiLCJwcmVmaXhDbHMiLCJtZXNzYWdlQ2xzIiwicHJlZml4RWxlQ2xzIiwic3VmZml4RWxlQ2xzIiwiaW52YWxpZCIsIm5lZ2F0aXZlIiwicmVxdWlyZWQiLCJsb2FkaW5nIiwic3VjY2VzcyIsImRpc2FibGVkIiwicmVhZE9ubHkiLCJsYWJlbCIsInByZWZpeCIsInN1ZmZpeCIsImN1cnJlbmN5IiwibWVzc2FnZSIsIm9uQ2hhbmdlIiwib25CbHVyIiwib25Gb2N1cyIsInJlc3QiLCJjbGFzc2VzIiwiY2xhc3NuYW1lcyIsImNvbmNhdCIsImlucHV0UmVmIiwidXNlUmVmIiwiZmFrZUVsZVJlZiIsInByZWZpeFJlZiIsInN1ZmZpeFJlZiIsImN1cnJlbmN5UmVmIiwiY29udGFpbmVyUmVmIiwiaW5wdXRDYXJldFBvc2l0aW9uUmVmIiwiaWdub3JlU2VsZWN0UmVmIiwib25DaGFuZ2VSZWYiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJfdmFsdWUiLCJzZXRWYWx1ZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiX3dpZHRoIiwic2V0V2lkdGgiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzTWF4V2lkdGgiLCJzZXRJc01heFdpZHRoIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJpc0ZvY3VzIiwic2V0SXNGb2N1cyIsImlzRm9jdXNSZWYiLCJmb3JtYXR0ZWRWYWx1ZSIsInVzZU1lbW8iLCJudW1lcmljRm9ybWF0dGVyIiwidGhvdXNhbmRTZXBhcmF0b3IiLCJhbGxvd05lZ2F0aXZlIiwidmFsdWVSZWYiLCJjaGFuZ2VGb2N1cyIsInVzZUNhbGxiYWNrIiwiZm9jdXMiLCJjdXJyZW50Iiwic2Nyb2xsVG9FbmQiLCJzdGlja3kiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJfYSIsImlucHV0IiwibGVuIiwicG9zaXRpb24iLCJzY3JvbGxMZWZ0Iiwic2hvdWxkVG9FbmQiLCJzdGFydCIsInNldFNlbGVjdGlvblJhbmdlIiwic2Nyb2xsV2lkdGgiLCJjYWxjQ2FyZXRQb3MiLCJvZmZzZXQiLCJjdXJyUG9zIiwiX2IiLCJfdmFsdWVSZWYkY3VycmVudCIsImZvcm1hdHRlZE5ld1ZhbCIsIm9yaWdpbk9mZnNldCIsInNlbGVjdGlvbkVuZCIsIm9sZFBvc1ZhbCIsInNsaWNlIiwiTWF0aCIsInNwbGl0Iiwiam9pbiIsInBvc1ZhbCIsInJlZHVjZSIsImFjYyIsImNoYXIiLCJpbmQiLCJwdXNoIiwiaGFuZGxlQ2hhbmdlIiwiX2MiLCJfZCIsIl92YWx1ZVJlZiRjdXJyZW50MiIsInRhcmdldCIsImhhc0RlY2ltYWxQb2ludCIsImVuZHNXaXRoIiwiaW5jbHVkZXMiLCJpc1N0YW5kYWxvbmVNaW51cyIsIl92YWwkc3BsaXQiLCJfdmFsJHNwbGl0MiIsImludCIsImRlY2ltYWwiLCJtYXhEZWNpbWFscyIsIk51bWJlciIsInRydW5jYXRlZERlY2ltYWxzIiwiX2Zvcm1hdHRlZFZhbHVlJHNwbGl0IiwiX2Zvcm1hdHRlZFZhbHVlJHNwbGl0MiIsIm9sZEludCIsImRlY2ltYWxzIiwibWF0Y2giLCJibiIsIm5vcm1hbGl6ZWQiLCJ0b0ZpeGVkIiwidHJpbSIsInN0YXJ0c1dpdGgiLCJpc1plcm8iLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsImhhbmRsZVNlbGVjdCIsInVzZUxheW91dEVmZmVjdCIsIl9lIiwiX2YiLCJfZyIsIl9oIiwiX2oiLCJfayIsImNvbnRhaW5lcldpZHRoIiwib2Zmc2V0V2lkdGgiLCJwcmVmaXhXaWR0aCIsInN1ZmZpeFdpZHRoIiwiY3VycmVuY3lXaWR0aCIsImZha2VXaWR0aCIsImdhcFdpZHRoIiwibWF4V2lkdGgiLCJpc01heCIsImFicyIsInplcm8iLCJCaWdJbnQiLCJfc3BsaXQiLCJfc3BsaXQyIiwic3ludGhldGljRXZlbnQiLCJzdHJWYWwiLCJ1c2VFZmZlY3QiLCJfanN4cyIsImpvaW5DbHMiLCJfanN4IiwiU2tlbGV0b24iLCJ3aWR0aCIsImhlaWdodCIsInJlZiIsIm9uQ2xpY2siLCJIVE1MSW5wdXRFbGVtZW50IiwiYXNzaWduIiwic3R5bGUiLCJvblNlbGVjdCIsIlNwaW5uZXIiLCJzdHJva2VXaWR0aCIsIl9kZWZhdWx0IiwibWVtbyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBV0EsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FDWEEsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsVUFBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksa0JBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFNBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFFBQUEsR0FBQUgsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFPLFdBQUEsR0FBQUMsdUJBQUEsQ0FBQVIsT0FBQTtBQUF3RSxTQUFBUyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQUYsd0JBQUFFLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUcsR0FBQSxDQUFBTixDQUFBLFVBQUFHLENBQUEsQ0FBQUksR0FBQSxDQUFBUCxDQUFBLE9BQUFRLENBQUEsS0FBQUMsU0FBQSxVQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLENBQUEsSUFBQWQs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LFNBQVMsRUFBRXdCLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDMUJ1SSxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBRXZOLENBQUM7VUFBQSxPQUFJQSxDQUFDLENBQUNzTCxlQUFlLENBQUEsQ0FBRTtRQUFBO1FBQUFySSxRQUFBLEVBRWhDK0Q7TUFBYyxDQUFBLENBQ1Y7SUFBQSxDQUFBLENBQ0gsRUFFSixDQUFDckMsT0FBTyxJQUFJckIsUUFBUSxLQUFLLElBQUEwSixnQkFBQSxFQUFBLEtBQUEsRUFBQTtNQUFLeEosU0FBUyxFQUFFd0IsT0FBTyxDQUFDLE9BQU8sQ0FBQztNQUFBL0IsUUFBQSxFQUFBLENBQ3REMEIsT0FBTyxJQUFJLElBQUF1SSxlQUFBLEVBQUEsS0FBQSxFQUFBO1FBQUsxSixTQUFTLEVBQUV3QixPQUFPLENBQUMsU0FBUyxFQUFFbkIsVUFBVSxDQUFDO1FBQUFaLFFBQUEsRUFBRzBCO01BQU8sQ0FBQSxDQUFPLEVBQzFFckIsUUFBUSxJQUFJLElBQUE0SixlQUFBLEVBQUEsS0FBQSxFQUFBO1FBQUsxSixTQUFTLEVBQUV3QixPQUFPLENBQUMsVUFBVSxFQUFFekIsV0FBVyxDQUFDO1FBQUFOLFFBQUEsRUFBR0s7TUFBUSxDQUFBLENBQU87SUFBQSxDQUFBLENBQzNFO0VBQUEsQ0FBQSxDQUVKO0FBQ1IsQ0FBQztBQUFDLElBQUF3SyxRQUFBLEdBQUFuTCxPQUFBLDJCQUVhLElBQUFvTCxXQUFJLEVBQUNyTCxXQUFXLENBQUMiLCJmaWxlIjoiY29tcG9uZW50cy9JbnB1dEFtb3VudC9JbnB1dEFtb3VudC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vLCB1c2VNZW1vLCB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlRWZmZWN0LCB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBudW1lcmljRm9ybWF0dGVyIH0gZnJvbSAncmVhY3QtbnVtYmVyLWZvcm1hdCc7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJ3ByaW1lcmVhY3Qvc2tlbGV0b24nO1xuaW1wb3J0IFNwaW5uZXIgZnJvbSAnLi4vU3Bpbm5lcic7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMsIGpvaW5DbHMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmNvbnN0IE1JTl9JTlBVVF9XSURUSCA9IDMzO1xuY29uc3Qgbm9ybWFsaXplTnVtYmVySW5wdXQgPSAodmFsKSA9PiB2YWxcbiAgICAucmVwbGFjZSgvW1xcdTMwMDJcXHVmZjBlXFx1ZmY2MV0vZywgJy4nKVxuICAgIC5yZXBsYWNlKC9bXFx1RkYwQ10vZywgJywnKTtcbmNvbnN0IGNhbGNWYWx1ZUluUmFuZ2UgPSAodmFsLCBtaW4sIG1heCkgPT4ge1xuICAgIGlmICh2YWwgPT09ICcnIHx8IHZhbCA9PT0gJy0nIHx8IGlzTmFOKCt2YWwpKVxuICAgICAgICByZXR1cm4gdmFsO1xuICAgIGxldCBjYWxjVmFsID0gdmFsO1xuICAgIGNvbnN0IGJuVmFsID0gQmlnTnVtYmVyKHZhbCk7XG4gICAgaWYgKHR5cGVvZiBtaW4gPT09ICdudW1iZXInIHx8IHR5cGVvZiBtaW4gPT09ICdiaWdpbnQnKSB7XG4gICAgICAgIGNvbnN0IG1pbkJuID0gQmlnTnVtYmVyKG1pbik7XG4gICAgICAgIGlmIChiblZhbC5sdChtaW5CbikpIHtcbiAgICAgICAgICAgIGNhbGNWYWwgPSAnJyArIG1pbjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAodHlwZW9mIG1heCA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1heCA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgY29uc3QgbWF4Qm4gPSBCaWdOdW1iZXIobWF4KTtcbiAgICAgICAgaWYgKGJuVmFsLmd0KG1heEJuKSkge1xuICAgICAgICAgICAgY2FsY1ZhbCA9ICcnICsgbWF4O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjYWxjVmFsO1xufTtcbmV4cG9ydCBjb25zdCBJbnB1dEFtb3VudCA9IHByb3BzID0+IHtcbiAgICBjb25zdCB7IHZhbHVlLCB0eXBlID0gJ3ByaW1hcnknLCBtYXhGcmFjdGlvbkRpZ2l0cywgY2hpbGRyZW4sIHBsYWNlaG9sZGVyID0gJzAnLCBtaW4sIG1heCwgXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHNpemUgPSAnbGFyZ2UnLCBmb290bm90ZSwgZm9vdG5vdGVDbHMsIGNsYXNzTmFtZSwgd3JhcHBlckNscywgbGFiZWxDbHMsIHByZWZpeENscyA9ICdpbnB1dC1hbW91bnQnLCBtZXNzYWdlQ2xzLCBwcmVmaXhFbGVDbHMsIHN1ZmZpeEVsZUNscywgaW52YWxpZCwgbmVnYXRpdmUsIHJlcXVpcmVkLCBsb2FkaW5nLCBzdWNjZXNzLCBkaXNhYmxlZCwgcmVhZE9ubHksIGxhYmVsLCBwcmVmaXgsIHN1ZmZpeCwgY3VycmVuY3ksIG1lc3NhZ2UsIG9uQ2hhbmdlLCBvbkJsdXIsIG9uRm9jdXMgfSA9IHByb3BzLCByZXN0ID0gX19yZXN0KHByb3BzLCBbXCJ2YWx1ZVwiLCBcInR5cGVcIiwgXCJtYXhGcmFjdGlvbkRpZ2l0c1wiLCBcImNoaWxkcmVuXCIsIFwicGxhY2Vob2xkZXJcIiwgXCJtaW5cIiwgXCJtYXhcIiwgXCJzaXplXCIsIFwiZm9vdG5vdGVcIiwgXCJmb290bm90ZUNsc1wiLCBcImNsYXNzTmFtZVwiLCBcIndyYXBwZXJDbHNcIiwgXCJsYWJlbENsc1wiLCBcInByZWZpeENsc1wiLCBcIm1lc3NhZ2VDbHNcIiwgXCJwcmVmaXhFbGVDbHNcIiwgXCJzdWZmaXhFbGVDbHNcIiwgXCJpbnZhbGlkXCIsIFwibmVnYXRpdmVcIiwgXCJyZXF1aXJlZFwiLCBcImxvYWRpbmdcIiwgXCJzdWNjZXNzXCIsIFwiZGlzYWJsZWRcIiwgXCJyZWFkT25seVwiLCBcImxhYmVsXCIsIFwicHJlZml4XCIsIFwic3VmZml4XCIsIFwiY3VycmVuY3lcIiwgXCJtZXNzYWdlXCIsIFwib25DaGFuZ2VcIiwgXCJvbkJsdXJcIiwgXCJvbkZvY3VzXCJdKTtcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhgJHtwcmVmaXhDbHN9LSR7dHlwZX1gKTtcbiAgICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBmYWtlRWxlUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHByZWZpeFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBzdWZmaXhSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY3VycmVuY3lSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGlucHV0Q2FyZXRQb3NpdGlvblJlZiA9IHVzZVJlZigwKTtcbiAgICBjb25zdCBpZ25vcmVTZWxlY3RSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IG9uQ2hhbmdlUmVmID0gdXNlUmVmKG9uQ2hhbmdlKTtcbiAgICBjb25zdCBbX3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbX3dpZHRoLCBzZXRXaWR0aF0gPSB1c2VTdGF0ZShNSU5fSU5QVVRfV0lEVEgpO1xuICAgIGNvbnN0IFtpc01heFdpZHRoLCBzZXRJc01heFdpZHRoXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbaXNGb2N1cywgc2V0SXNGb2N1c10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgaXNGb2N1c1JlZiA9IHVzZVJlZihpc0ZvY3VzKTtcbiAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICByZXR1cm4gbnVtZXJpY0Zvcm1hdHRlcignJyArIChfdmFsdWUgPT0gbnVsbCA/ICcnIDogX3ZhbHVlKSwge1xuICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiBuZWdhdGl2ZSxcbiAgICAgICAgfSk7XG4gICAgfSwgW192YWx1ZSwgbmVnYXRpdmVdKTtcbiAgICBjb25zdCB2YWx1ZVJlZiA9IHVzZVJlZih7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBfdmFsdWUsXG4gICAgICAgIGZvcm1hdHRlZFZhbHVlLFxuICAgICAgICBtaW4sXG4gICAgICAgIG1heCxcbiAgICAgICAgbmVnYXRpdmUsXG4gICAgICAgIG1heEZyYWN0aW9uRGlnaXRzLFxuICAgIH0pO1xuICAgIGNvbnN0IGNoYW5nZUZvY3VzID0gdXNlQ2FsbGJhY2soKGZvY3VzKSA9PiB7XG4gICAgICAgIHNldElzRm9jdXMoZm9jdXMpO1xuICAgICAgICBpc0ZvY3VzUmVmLmN1cnJlbnQgPSBmb2N1cztcbiAgICB9LCBbXSk7XG4gICAgY29uc3Qgc2Nyb2xsVG9FbmQgPSB1c2VDYWxsYmFjaygoc3RpY2t5ID0gZmFsc2UpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBpbnB1dCA9IGlucHV0UmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmICghaW5wdXQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGxlbiA9IChfYSA9IGlucHV0LnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoO1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IGlucHV0LnNjcm9sbExlZnQ7XG4gICAgICAgIGNvbnN0IHNob3VsZFRvRW5kID0gIXN0aWNreTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBzaG91bGRUb0VuZCA/IGxlbiA6IGlucHV0Q2FyZXRQb3NpdGlvblJlZi5jdXJyZW50O1xuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgc3RhcnQpO1xuICAgICAgICBpbnB1dC5zY3JvbGxMZWZ0ID0gc2hvdWxkVG9FbmQgPyBpbnB1dC5zY3JvbGxXaWR0aCA6IHBvc2l0aW9uO1xuICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCBjYWxjQ2FyZXRQb3MgPSB1c2VDYWxsYmFjaygodmFsLCBvZmZzZXQgPSAwLCBjdXJyUG9zKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGlmIChpbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBjb25zdCB7IF92YWx1ZSwgbmVnYXRpdmUsIGZvcm1hdHRlZFZhbHVlIH0gPSB2YWx1ZVJlZi5jdXJyZW50O1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkTmV3VmFsID0gbnVtZXJpY0Zvcm1hdHRlcih2YWwsIHtcbiAgICAgICAgICAgICAgICB0aG91c2FuZFNlcGFyYXRvcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiBuZWdhdGl2ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luT2Zmc2V0ID0gdmFsLmxlbmd0aCAtICgoX2EgPSBfdmFsdWUgPT09IG51bGwgfHwgX3ZhbHVlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdmFsdWUubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAwKTtcbiAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9IChfYiA9IGN1cnJQb3MgIT09IG51bGwgJiYgY3VyclBvcyAhPT0gdm9pZCAwID8gY3VyclBvcyA6IGlucHV0UmVmLmN1cnJlbnQuc2VsZWN0aW9uRW5kKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAwO1xuICAgICAgICAgICAgY29uc3Qgb2xkUG9zVmFsID0gZm9ybWF0dGVkVmFsdWUuc2xpY2UoMCwgTWF0aC5tYXgocG9zaXRpb24sIDApKTtcbiAgICAgICAgICAgIHBvc2l0aW9uID0gb2xkUG9zVmFsLnNwbGl0KCcsJykuam9pbignJykubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgcG9zVmFsID0gdmFsLnNsaWNlKDAsIChwb3NpdGlvbiArIG9yaWdpbk9mZnNldCkpO1xuICAgICAgICAgICAgZm9ybWF0dGVkTmV3VmFsLnNwbGl0KCcnKS5yZWR1Y2UoKGFjYywgY2hhciwgaW5kKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNoYXIgPT09ICcsJylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGFjYy5wdXNoKGNoYXIpO1xuICAgICAgICAgICAgICAgIGlmIChhY2Muam9pbignJykgPT09IHBvc1ZhbCkge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IGluZCArIDE7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICBpbnB1dENhcmV0UG9zaXRpb25SZWYuY3VycmVudCA9IHBvc2l0aW9uICsgb2Zmc2V0O1xuICAgICAgICB9XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgaWYgKGRpc2FibGVkIHx8IHJlYWRPbmx5KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB7IHZhbHVlLCBfdmFsdWUsIGZvcm1hdHRlZFZhbHVlLCBtaW4sIG1heCwgbmVnYXRpdmUsIG1heEZyYWN0aW9uRGlnaXRzIH0gPSB2YWx1ZVJlZi5jdXJyZW50O1xuICAgICAgICBsZXQgdmFsID0gZS50YXJnZXQudmFsdWU7XG4gICAgICAgIGlmICh2YWwgIT0gbnVsbClcbiAgICAgICAgICAgIHZhbCA9IG5vcm1hbGl6ZU51bWJlcklucHV0KHZhbCkuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICAgICAgY29uc3QgaGFzRGVjaW1hbFBvaW50ID0gISF2YWwgJiYgdmFsLmVuZHNXaXRoKCcuJyk7XG4gICAgICAgIGlmIChoYXNEZWNpbWFsUG9pbnQpXG4gICAgICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMCwgLTEpO1xuICAgICAgICBpZiAoIW5lZ2F0aXZlICYmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB2b2lkIDAgPyB2b2lkIDAgOiB2YWwuaW5jbHVkZXMoJy0nKSkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGlzU3RhbmRhbG9uZU1pbnVzID0gbmVnYXRpdmUgJiYgdmFsID09PSAnLSc7XG4gICAgICAgIGlmICghaXNTdGFuZGFsb25lTWludXMgJiYgaXNOYU4oK3ZhbCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh2YWwgPT09IF92YWx1ZSAmJiAhaGFzRGVjaW1hbFBvaW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAodHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICAgICBjb25zdCBbaW50LCBkZWNpbWFsXSA9IHZhbC5zcGxpdCgnLicpO1xuICAgICAgICAgICAgY29uc3QgbWF4RGVjaW1hbHMgPSBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpO1xuICAgICAgICAgICAgaWYgKGRlY2ltYWwgIT0gbnVsbCAmJiBkZWNpbWFsLmxlbmd0aCA+IG1heERlY2ltYWxzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHJ1bmNhdGVkRGVjaW1hbHMgPSBkZWNpbWFsLnNsaWNlKDAsIG1heERlY2ltYWxzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBbb2xkSW50LF0gPSBmb3JtYXR0ZWRWYWx1ZS5zcGxpdCgnLicpO1xuICAgICAgICAgICAgICAgIGlmIChvbGRJbnQuc3BsaXQoJywnKS5qb2luKCcnKSA9PSBpbnQpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB2YWwgPSBgJHtpbnR9LiR7dHJ1bmNhdGVkRGVjaW1hbHN9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoKHR5cGVvZiBtaW4gPT09ICdudW1iZXInIHx8IHR5cGVvZiBtaW4gPT09ICdiaWdpbnQnKSB8fCAodHlwZW9mIG1heCA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1heCA9PT0gJ2JpZ2ludCcpKSB7XG4gICAgICAgICAgICB2YWwgPSBjYWxjVmFsdWVJblJhbmdlKHZhbCwgbWluLCBtYXgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWwgIT09ICcnKSB7XG4gICAgICAgICAgICBpZiAoaXNTdGFuZGFsb25lTWludXMpIHtcbiAgICAgICAgICAgICAgICB2YWwgPSAnLSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZWNpbWFscyA9IChfYyA9IChfYiA9IChfYSA9IHZhbC5tYXRjaCgvXFwuKFxcZCspJC8pKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMV0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5sZW5ndGgpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgYm4gPSBCaWdOdW1iZXIodmFsKTtcbiAgICAgICAgICAgICAgICBsZXQgbm9ybWFsaXplZCA9IGJuLnRvRml4ZWQoZGVjaW1hbHMpO1xuICAgICAgICAgICAgICAgIGlmIChuZWdhdGl2ZSAmJiB2YWwudHJpbSgpLnN0YXJ0c1dpdGgoJy0nKSAmJiBibi5pc1plcm8oKSkge1xuICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5zdGFydHNXaXRoKCctJykgPyBub3JtYWxpemVkIDogYC0ke25vcm1hbGl6ZWR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFsID0gYCR7bm9ybWFsaXplZH0ke2hhc0RlY2ltYWxQb2ludCA/ICcuJyA6ICcnfWAudHJpbSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBzZXRWYWx1ZSh2YWwgPT09ICcnID8gbnVsbCA6IHZhbCk7XG4gICAgICAgICAgICBjYWxjQ2FyZXRQb3ModmFsLCBoYXNEZWNpbWFsUG9pbnQgPyAyIDogMCwgTWF0aC5tYXgoaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQsIDApKTtcbiAgICAgICAgICAgIGlnbm9yZVNlbGVjdFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgKF9kID0gb25DaGFuZ2VSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLmNhbGwob25DaGFuZ2VSZWYsIGUsIHZhbCk7XG4gICAgfSwgW2Rpc2FibGVkLCByZWFkT25seV0pO1xuICAgIGNvbnN0IGhhbmRsZVNlbGVjdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoaWdub3JlU2VsZWN0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGlnbm9yZVNlbGVjdFJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VyclBvcyA9IChfYSA9IGlucHV0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zZWxlY3Rpb25FbmQ7XG4gICAgICAgIGlmICh0eXBlb2YgY3VyclBvcyA9PT0gJ251bWJlcicpXG4gICAgICAgICAgICBpbnB1dENhcmV0UG9zaXRpb25SZWYuY3VycmVudCA9IGN1cnJQb3M7XG4gICAgfSwgW10pO1xuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2gsIF9qLCBfaztcbiAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSAoX2IgPSAoX2EgPSBjb250YWluZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBNSU5fSU5QVVRfV0lEVEg7XG4gICAgICAgIGNvbnN0IHByZWZpeFdpZHRoID0gKF9kID0gKF9jID0gcHJlZml4UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogMDtcbiAgICAgICAgY29uc3Qgc3VmZml4V2lkdGggPSAoX2YgPSAoX2UgPSBzdWZmaXhSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9lLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfZiAhPT0gdm9pZCAwID8gX2YgOiAwO1xuICAgICAgICBjb25zdCBjdXJyZW5jeVdpZHRoID0gKF9oID0gKF9nID0gY3VycmVuY3lSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9nLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfaCAhPT0gdm9pZCAwID8gX2ggOiAwO1xuICAgICAgICBjb25zdCBmYWtlV2lkdGggPSAoX2sgPSAoX2ogPSBmYWtlRWxlUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9qID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfai5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2sgIT09IHZvaWQgMCA/IF9rIDogMDtcbiAgICAgICAgY29uc3QgZ2FwV2lkdGggPSBwcmVmaXhXaWR0aCAmJiBzdWZmaXhXaWR0aCAmJiBjdXJyZW5jeVdpZHRoXG4gICAgICAgICAgICA/IDI0XG4gICAgICAgICAgICA6IChwcmVmaXhXaWR0aCAmJiBzdWZmaXhXaWR0aCkgfHwgKHByZWZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGgpIHx8IChzdWZmaXhXaWR0aCAmJiBjdXJyZW5jeVdpZHRoKVxuICAgICAgICAgICAgICAgID8gMTZcbiAgICAgICAgICAgICAgICA6IHByZWZpeFdpZHRoIHx8IHN1ZmZpeFdpZHRoIHx8IGN1cnJlbmN5V2lkdGhcbiAgICAgICAgICAgICAgICAgICAgPyA4XG4gICAgICAgICAgICAgICAgICAgIDogMDtcbiAgICAgICAgY29uc3QgbWF4V2lkdGggPSBjb250YWluZXJXaWR0aCAtIHByZWZpeFdpZHRoIC0gc3VmZml4V2lkdGggLSBjdXJyZW5jeVdpZHRoIC0gZ2FwV2lkdGg7XG4gICAgICAgIGNvbnN0IGlzTWF4ID0gZmFrZVdpZHRoID49IG1heFdpZHRoO1xuICAgICAgICBzZXRXaWR0aChNYXRoLm1pbihtYXhXaWR0aCwgTWF0aC5tYXgoZmFrZVdpZHRoLCBNSU5fSU5QVVRfV0lEVEgpKSk7XG4gICAgICAgIHNldElzTWF4V2lkdGgoaXNNYXgpO1xuICAgICAgICBpZiAoaXNGb2N1c1JlZi5jdXJyZW50KVxuICAgICAgICAgICAgc2Nyb2xsVG9FbmQodHJ1ZSk7XG4gICAgfSwgW192YWx1ZSwgcHJlZml4LCBzdWZmaXgsIGN1cnJlbmN5XSk7XG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgICAgICBsZXQgdmFsID0gdHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyA/IF92YWx1ZSA6IHZhbHVlO1xuICAgICAgICBsZXQgaGFzRGVjaW1hbFBvaW50ID0gZmFsc2U7XG4gICAgICAgIGxldCBpc1N0YW5kYWxvbmVNaW51cyA9IGZhbHNlO1xuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmICh2YWwgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbCA9IG5vcm1hbGl6ZU51bWJlcklucHV0KHZhbCkuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICAgICAgICAgICAgICBoYXNEZWNpbWFsUG9pbnQgPSAhIXZhbCAmJiB2YWwuZW5kc1dpdGgoJy4nKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzRGVjaW1hbFBvaW50KVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMCwgLTEpO1xuICAgICAgICAgICAgICAgIGlmICghbmVnYXRpdmUpXG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKC8tL2csICcnKTtcbiAgICAgICAgICAgICAgICBpc1N0YW5kYWxvbmVNaW51cyA9ICEhbmVnYXRpdmUgJiYgdmFsID09PSAnLSc7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1N0YW5kYWxvbmVNaW51cyAmJiBpc05hTigrdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbCAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgdmFsICE9PSAnYmlnaW50JylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKCFuZWdhdGl2ZSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gTWF0aC5hYnModmFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgemVybyA9IEJpZ0ludCgwKTtcbiAgICAgICAgICAgICAgICB2YWwgPSB2YWwgPCB6ZXJvID8gLXZhbCA6IHZhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSAmJlxuICAgICAgICAgICAgKHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnYmlnaW50JykpIHtcbiAgICAgICAgICAgIGNvbnN0IFtpbnQsIGRlY2ltYWxdID0gKCcnICsgdmFsKS5zcGxpdCgnLicpO1xuICAgICAgICAgICAgY29uc3QgbWF4RGVjaW1hbHMgPSBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpO1xuICAgICAgICAgICAgaWYgKGRlY2ltYWwgIT0gbnVsbCAmJiBkZWNpbWFsLmxlbmd0aCA+IG1heERlY2ltYWxzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHJ1bmNhdGVkRGVjaW1hbHMgPSBkZWNpbWFsLnNsaWNlKDAsIG1heERlY2ltYWxzKTtcbiAgICAgICAgICAgICAgICB2YWwgPSBgJHtpbnR9LiR7dHJ1bmNhdGVkRGVjaW1hbHN9YDtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZSh2YWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3ludGhldGljRXZlbnQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IGlucHV0UmVmLmN1cnJlbnQsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIChfYSA9IG9uQ2hhbmdlUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKG9uQ2hhbmdlUmVmLCBzeW50aGV0aWNFdmVudCwgdmFsICE9PSBudWxsICYmIHZhbCAhPT0gdm9pZCAwID8gdmFsIDogJycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWwgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICAgICB2YWwgPSBjYWxjVmFsdWVJblJhbmdlKCcnICsgdmFsLCBtaW4sIG1heCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbCA9PT0gJycgfHwgdmFsID09IG51bGwpIHtcbiAgICAgICAgICAgIHNldFZhbHVlKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzU3RhbmRhbG9uZU1pbnVzKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gJy0nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RyVmFsID0gJycgKyB2YWw7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVjaW1hbHMgPSAoX2QgPSAoX2MgPSAoX2IgPSBzdHJWYWwubWF0Y2goL1xcLihcXGQrKSQvKSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iWzFdKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MubGVuZ3RoKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJuID0gQmlnTnVtYmVyKHN0clZhbCk7XG4gICAgICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZWQgPSBibi50b0ZpeGVkKGRlY2ltYWxzKTtcbiAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUgJiYgc3RyVmFsLnRyaW0oKS5zdGFydHNXaXRoKCctJykgJiYgYm4uaXNaZXJvKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnLScpID8gbm9ybWFsaXplZCA6IGAtJHtub3JtYWxpemVkfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhbCA9IGAke25vcm1hbGl6ZWR9JHtoYXNEZWNpbWFsUG9pbnQgPyAnLicgOiAnJ31gLnRyaW0oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFZhbHVlKHZhbCk7XG4gICAgICAgIH1cbiAgICAgICAgY2FsY0NhcmV0UG9zKHZhbCAhPT0gbnVsbCAmJiB2YWwgIT09IHZvaWQgMCA/IHZhbCA6ICcnLCBoYXNEZWNpbWFsUG9pbnQgPyAyIDogMCwgTWF0aC5tYXgoaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQsIDApKTtcbiAgICAgICAgaWdub3JlU2VsZWN0UmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgIH0sIFt2YWx1ZSwgbWF4RnJhY3Rpb25EaWdpdHMsIG1pbiwgbWF4LCBuZWdhdGl2ZV0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIG9uQ2hhbmdlUmVmLmN1cnJlbnQgPSBvbkNoYW5nZTtcbiAgICAgICAgdmFsdWVSZWYuY3VycmVudCA9IHtcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgX3ZhbHVlLFxuICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUsXG4gICAgICAgICAgICBtaW4sXG4gICAgICAgICAgICBtYXgsXG4gICAgICAgICAgICBuZWdhdGl2ZSxcbiAgICAgICAgICAgIG1heEZyYWN0aW9uRGlnaXRzXG4gICAgICAgIH07XG4gICAgfSwgW192YWx1ZSwgdmFsdWUsIGZvcm1hdHRlZFZhbHVlLCBtaW4sIG1heCwgbmVnYXRpdmUsIG1heEZyYWN0aW9uRGlnaXRzLCBvbkNoYW5nZV0pO1xuICAgIHJldHVybiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygnd3JhcHBlcicsIGpvaW5DbHMod3JhcHBlckNscywgY2xhc3NlcyhzaXplKSwgaW52YWxpZCAmJiBjbGFzc2VzKCdpbnZhbGlkJyksIHN1Y2Nlc3MgJiYgY2xhc3Nlcygnc3VjY2VzcycpLCBkaXNhYmxlZCAmJiBjbGFzc2VzKCdkaXNhYmxlZCcpLCByZWFkT25seSAmJiBjbGFzc2VzKCdyZWFkb25seScpLCBfdmFsdWUgJiYgY2xhc3NlcygnZmlsbGVkJykpKSwgY2hpbGRyZW46IFtsYWJlbFxuICAgICAgICAgICAgICAgID8gbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICA/IF9qc3goU2tlbGV0b24sIHsgd2lkdGg6ICc3MnB4JywgaGVpZ2h0OiAnMThweCcsIGNsYXNzTmFtZTogY2xhc3NlcygnbGFiZWwtbG9hZGluZycpIH0pXG4gICAgICAgICAgICAgICAgICAgIDogX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2xhYmVsJywgam9pbkNscyhyZXF1aXJlZCAmJiBjbGFzc2VzKCdsYWJlbC1yZXF1aXJlZCcpLCBsYWJlbENscykpLCBjaGlsZHJlbjogbGFiZWwgfSlcbiAgICAgICAgICAgICAgICA6IG51bGwsIF9qc3hzKFwiZGl2XCIsIHsgcmVmOiBjb250YWluZXJSZWYsIGNsYXNzTmFtZTogY2xhc3Nlcyh2b2lkIDAsIGpvaW5DbHMoY2xhc3NOYW1lLCBpc0ZvY3VzICYmIGNsYXNzZXMoJ2ZvY3VzJykpKSwgb25DbGljazogKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAoX2EgPSBpbnB1dFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWF4V2lkdGgpXG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb0VuZCgpO1xuICAgICAgICAgICAgICAgIH0sIGNoaWxkcmVuOiBbcHJlZml4ICYmIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBwcmVmaXhSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygncHJlZml4JywgcHJlZml4RWxlQ2xzKSwgY2hpbGRyZW46IHByZWZpeCB9KSwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZWxlbWVudCcsICghaXNGb2N1cyAmJiBpc01heFdpZHRoKSA/IGNsYXNzZXMoJ2VsZW1lbnQtbWF4JykgOiAnJyksIGNoaWxkcmVuOiBfanN4KFwiaW5wdXRcIiwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwgeyByZWY6IGlucHV0UmVmLCB2YWx1ZTogZm9ybWF0dGVkVmFsdWUsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgcmVhZE9ubHk6IHJlYWRPbmx5LCBkaXNhYmxlZDogZGlzYWJsZWQsIHN0eWxlOiB7ICctLWlucHV0LXdpZHRoJzogYCR7X3dpZHRofXB4YCB9LCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLCBvblNlbGVjdDogaGFuZGxlU2VsZWN0LCBvbkZvY3VzOiBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlRm9jdXModHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRm9jdXMgPT09IG51bGwgfHwgb25Gb2N1cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Gb2N1cyhlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBvbkJsdXI6IGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VGb2N1cyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cihlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IH0pKSB9KSwgY3VycmVuY3kgJiYgX2pzeChcInNwYW5cIiwgeyByZWY6IGN1cnJlbmN5UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2N1cnJlbmN5JyksIGNoaWxkcmVuOiBjdXJyZW5jeSB9KSwgbG9hZGluZyA/IF9qc3goU3Bpbm5lciwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3N1ZmZpeC1sb2FkaW5nJyksIHN0cm9rZVdpZHRoOiAnNCcgfSkgOiBzdWZmaXggPyBfanN4KFwic3BhblwiLCB7IHJlZjogc3VmZml4UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ3N1ZmZpeCcsIHN1ZmZpeEVsZUNscyksIGNoaWxkcmVuOiBzdWZmaXggfSkgOiBudWxsLCBfanN4KFwic3BhblwiLCB7IHJlZjogZmFrZUVsZVJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdmYWtlJyksIG9uQ2xpY2s6IGUgPT4gZS5zdG9wUHJvcGFnYXRpb24oKSwgY2hpbGRyZW46IGZvcm1hdHRlZFZhbHVlIH0pXSB9KSwgKG1lc3NhZ2UgfHwgZm9vdG5vdGUpICYmIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdleHRyYScpLCBjaGlsZHJlbjogW21lc3NhZ2UgJiYgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnbWVzc2FnZScsIG1lc3NhZ2VDbHMpLCBjaGlsZHJlbjogbWVzc2FnZSB9KSwgZm9vdG5vdGUgJiYgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZm9vdG5vdGUnLCBmb290bm90ZUNscyksIGNoaWxkcmVuOiBmb290bm90ZSB9KV0gfSldIH0pO1xufTtcbmV4cG9ydCBkZWZhdWx0IG1lbW8oSW5wdXRBbW91bnQpOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
366
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfanN4UnVudGltZSIsInJlcXVpcmUiLCJfcmVhY3QiLCJfc2tlbGV0b24iLCJfU3Bpbm5lciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXNlTGF0ZXN0IiwiX3VzZUV2ZW50Q2FsbGJhY2siLCJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2hlbHBlciIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9fcmVzdCIsInMiLCJwIiwicHJvdG90eXBlIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiSW5wdXRBbW91bnQiLCJleHBvcnRzIiwicHJvcHMiLCJfYSIsIl9iIiwidHlwZSIsIkRFRkFVTFRfVFlQRSIsInNpemUiLCJERUZBVUxUX1NJWkUiLCJmb290bm90ZSIsInVuZGVmaW5lZCIsImZvb3Rub3RlQ2xzIiwicmF3QmFzZVByb3BzIiwiYXNzaWduIiwiYmFzZVByb3BzIiwidmFsdWUiLCJtYXhGcmFjdGlvbkRpZ2l0cyIsIl9iYXNlUHJvcHMkcGxhY2Vob2xkZSIsInBsYWNlaG9sZGVyIiwiREVGQVVMVF9QTEFDRUhPTERFUiIsIm1pbiIsIm1heCIsImNsYXNzTmFtZSIsIndyYXBwZXJDbHMiLCJsYWJlbENscyIsIl9iYXNlUHJvcHMkcHJlZml4Q2xzIiwicHJlZml4Q2xzIiwiREVGQVVMVF9QUkVGSVhfQ0xTIiwibWVzc2FnZUNscyIsInByZWZpeEVsZUNscyIsInN1ZmZpeEVsZUNscyIsImludmFsaWQiLCJuZWdhdGl2ZSIsInJlcXVpcmVkIiwibG9hZGluZyIsInN1Y2Nlc3MiLCJkaXNhYmxlZCIsInJlYWRPbmx5IiwibGFiZWwiLCJwcmVmaXgiLCJzdWZmaXgiLCJjdXJyZW5jeSIsIm1lc3NhZ2UiLCJvbkNoYW5nZSIsIm9uQmx1ciIsIm9uRm9jdXMiLCJyZXN0IiwiY2xzIiwiY2xhc3NuYW1lcyIsImNvbmNhdCIsImlucHV0UmVmIiwidXNlUmVmIiwiZmFrZUVsZVJlZiIsInByZWZpeFJlZiIsInN1ZmZpeFJlZiIsImN1cnJlbmN5UmVmIiwiY29udGFpbmVyUmVmIiwiY2FyZXRQb3NSZWYiLCJpZ25vcmVTZWxlY3RSZWYiLCJvbkNoYW5nZVJlZiIsInVzZUxhdGVzdCIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsImlubmVyVmFsdWUiLCJzZXRJbm5lclZhbHVlIiwiX3VzZVN0YXRlMyIsIk1JTl9JTlBVVF9XSURUSCIsIl91c2VTdGF0ZTQiLCJpbnB1dFdpZHRoIiwic2V0SW5wdXRXaWR0aCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNNYXhXaWR0aCIsInNldElzTWF4V2lkdGgiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImlzRm9jdXMiLCJzZXRJc0ZvY3VzIiwiaXNGb2N1c1JlZiIsImlzVW5jb250cm9sbGVkIiwiZm9ybWF0dGVkVmFsdWUiLCJ1c2VNZW1vIiwiZm9ybWF0VGhvdXNhbmRzIiwic3RhdGVSZWYiLCJzY3JvbGxUb0VuZCIsInVzZUV2ZW50Q2FsbGJhY2siLCJzdGlja3kiLCJhcmd1bWVudHMiLCJpbnB1dCIsImN1cnJlbnQiLCJzZXRTZWxlY3Rpb25SYW5nZSIsImxlbiIsInNjcm9sbExlZnQiLCJzY3JvbGxXaWR0aCIsImZvY3VzIiwiY2FsY0NhcmV0UG9zIiwidmFsIiwib2Zmc2V0IiwiY3VyclBvcyIsIl9zdGF0ZVJlZiRjdXJyZW50IiwicHJldiIsImZvcm1hdHRlZE5ld1ZhbCIsIm9yaWdpbk9mZnNldCIsInBvc2l0aW9uIiwic2VsZWN0aW9uRW5kIiwic3RyaXBDb21tYXMiLCJzbGljZSIsIk1hdGgiLCJwb3NWYWwiLCJzcGxpdCIsInJlZHVjZSIsImFjYyIsImNoYXIiLCJpbmQiLCJDSEFSX0NPTU1BIiwicHVzaCIsImpvaW4iLCJjb21taXRWYWx1ZSIsImhhc0RlY2ltYWxQb2ludCIsIkRFQ0lNQUxfUE9JTlRfT0ZGU0VUIiwiaGFuZGxlQ2hhbmdlIiwiX3N0YXRlUmVmJGN1cnJlbnQyIiwicGFyc2VkIiwicGFyc2VSYXdJbnB1dCIsInRhcmdldCIsImlzU3RhbmRhbG9uZU1pbnVzIiwiaXNOdW1lcmljVHlwZSIsIl90cnVuY2F0ZUZyYWN0aW9uRGlnaSIsInRydW5jYXRlRnJhY3Rpb25EaWdpdHMiLCJOdW1iZXIiLCJpbnQiLCJ0cnVuY2F0ZWQiLCJvdmVyZmxvdyIsIl9mb3JtYXR0ZWRWYWx1ZSRzcGxpdCIsIkNIQVJfRE9UIiwiX2Zvcm1hdHRlZFZhbHVlJHNwbGl0MiIsIm9sZEludCIsImNhbGNWYWx1ZUluUmFuZ2UiLCJDSEFSX01JTlVTIiwibm9ybWFsaXplVmFsdWUiLCJoYW5kbGVTZWxlY3QiLCJoYW5kbGVGb2N1cyIsImhhbmRsZUJsdXIiLCJoYW5kbGVDb250YWluZXJDbGljayIsIkhUTUxJbnB1dEVsZW1lbnQiLCJ1c2VMYXlvdXRFZmZlY3QiLCJfYyIsIl9kIiwiX2UiLCJfZiIsIl9nIiwiX2giLCJfaiIsIl9rIiwiY29udGFpbmVyV2lkdGgiLCJvZmZzZXRXaWR0aCIsInByZWZpeFdpZHRoIiwic3VmZml4V2lkdGgiLCJjdXJyZW5jeVdpZHRoIiwiZmFrZVdpZHRoIiwiZ2FwV2lkdGgiLCJjYWxjR2FwV2lkdGgiLCJtYXhXaWR0aCIsInN0cmlwTWludXMiLCJhYnNWYWx1ZSIsIl90cnVuY2F0ZUZyYWN0aW9uRGlnaTIiLCJ3cmFwcGVyQ2xhc3NOYW1lIiwiam9pbkNscyIsInJlbmRlckxhYmVsIiwiX2pzeCIsIlNrZWxldG9uIiwid2lkdGgiLCJTS0VMRVRPTl9MQUJFTF9XSURUSCIsImhlaWdodCIsIlNLRUxFVE9OX0xBQkVMX0hFSUdIVCIsImNoaWxkcmVuIiwicmVuZGVyU3VmZml4IiwiU3Bpbm5lciIsInN0cm9rZVdpZHRoIiwiU1BJTk5FUl9TVFJPS0VfV0lEVEgiLCJyZWYiLCJfanN4cyIsIm9uQ2xpY2siLCJzdHlsZSIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJDU1NfVkFSX0lOUFVUX1dJRFRIIiwib25TZWxlY3QiLCJzdG9wUHJvcGFnYXRpb24iLCJfZGVmYXVsdCIsIm1lbW8iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFXQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7QUNYQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxTQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBSyxVQUFBLEdBQUFELHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBTSxpQkFBQSxHQUFBRixzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQU8sV0FBQSxHQUFBQyx1QkFBQSxDQUFBUixPQUFBO0FBQ0EsSUFBQVMsT0FBQSxHQUFBVCxPQUFBO0FBd0JrQixTQUFBVSx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQUgsd0JBQUFHLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxD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bnB1dEFtb3VudC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vLCB1c2VNZW1vLCB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJ3ByaW1lcmVhY3Qvc2tlbGV0b24nO1xuaW1wb3J0IFNwaW5uZXIgZnJvbSAnLi4vU3Bpbm5lcic7XG5pbXBvcnQgdXNlTGF0ZXN0IGZyb20gJy4uL3VzZUxhdGVzdCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICcuLi91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcywgam9pbkNscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgTUlOX0lOUFVUX1dJRFRILCBERUNJTUFMX1BPSU5UX09GRlNFVCwgU0tFTEVUT05fTEFCRUxfV0lEVEgsIFNLRUxFVE9OX0xBQkVMX0hFSUdIVCwgU1BJTk5FUl9TVFJPS0VfV0lEVEgsIENTU19WQVJfSU5QVVRfV0lEVEgsIERFRkFVTFRfVFlQRSwgREVGQVVMVF9TSVpFLCBERUZBVUxUX1BMQUNFSE9MREVSLCBERUZBVUxUX1BSRUZJWF9DTFMsIENIQVJfTUlOVVMsIENIQVJfQ09NTUEsIENIQVJfRE9ULCBpc051bWVyaWNUeXBlLCBzdHJpcENvbW1hcywgc3RyaXBNaW51cywgZm9ybWF0VGhvdXNhbmRzLCBjYWxjVmFsdWVJblJhbmdlLCBub3JtYWxpemVWYWx1ZSwgdHJ1bmNhdGVGcmFjdGlvbkRpZ2l0cywgY2FsY0dhcFdpZHRoLCBwYXJzZVJhd0lucHV0LCBhYnNWYWx1ZSwgfSBmcm9tICcuL2hlbHBlcic7XG5leHBvcnQgY29uc3QgSW5wdXRBbW91bnQgPSBwcm9wcyA9PiB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBjb25zdCB0eXBlID0gKF9hID0gcHJvcHMudHlwZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogREVGQVVMVF9UWVBFO1xuICAgIGNvbnN0IHNpemUgPSB0eXBlID09PSAnbm9ybWFsJ1xuICAgICAgICA/IChfYiA9IHByb3BzLnNpemUpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IERFRkFVTFRfU0laRVxuICAgICAgICA6IERFRkFVTFRfU0laRTtcbiAgICBjb25zdCBmb290bm90ZSA9IHR5cGUgPT09ICdub3JtYWwnID8gdW5kZWZpbmVkIDogcHJvcHMuZm9vdG5vdGU7XG4gICAgY29uc3QgZm9vdG5vdGVDbHMgPSB0eXBlID09PSAnbm9ybWFsJyA/IHVuZGVmaW5lZCA6IHByb3BzLmZvb3Rub3RlQ2xzO1xuICAgIGNvbnN0IHJhd0Jhc2VQcm9wcyA9IE9iamVjdC5hc3NpZ24oe30sIHByb3BzKTtcbiAgICBkZWxldGUgcmF3QmFzZVByb3BzLnR5cGU7XG4gICAgZGVsZXRlIHJhd0Jhc2VQcm9wcy5zaXplO1xuICAgIGRlbGV0ZSByYXdCYXNlUHJvcHMuZm9vdG5vdGU7XG4gICAgZGVsZXRlIHJhd0Jhc2VQcm9wcy5mb290bm90ZUNscztcbiAgICBjb25zdCBiYXNlUHJvcHMgPSByYXdCYXNlUHJvcHM7XG4gICAgY29uc3QgeyB2YWx1ZSwgbWF4RnJhY3Rpb25EaWdpdHMsIHBsYWNlaG9sZGVyID0gREVGQVVMVF9QTEFDRUhPTERFUiwgbWluLCBtYXgsIGNsYXNzTmFtZSwgd3JhcHBlckNscywgbGFiZWxDbHMsIHByZWZpeENscyA9IERFRkFVTFRfUFJFRklYX0NMUywgbWVzc2FnZUNscywgcHJlZml4RWxlQ2xzLCBzdWZmaXhFbGVDbHMsIGludmFsaWQsIG5lZ2F0aXZlLCByZXF1aXJlZCwgbG9hZGluZywgc3VjY2VzcywgZGlzYWJsZWQsIHJlYWRPbmx5LCBsYWJlbCwgcHJlZml4LCBzdWZmaXgsIGN1cnJlbmN5LCBtZXNzYWdlLCBvbkNoYW5nZSwgb25CbHVyLCBvbkZvY3VzIH0gPSBiYXNlUHJvcHMsIHJlc3QgPSBfX3Jlc3QoYmFzZVByb3BzLCBbXCJ2YWx1ZVwiLCBcIm1heEZyYWN0aW9uRGlnaXRzXCIsIFwicGxhY2Vob2xkZXJcIiwgXCJtaW5cIiwgXCJtYXhcIiwgXCJjbGFzc05hbWVcIiwgXCJ3cmFwcGVyQ2xzXCIsIFwibGFiZWxDbHNcIiwgXCJwcmVmaXhDbHNcIiwgXCJtZXNzYWdlQ2xzXCIsIFwicHJlZml4RWxlQ2xzXCIsIFwic3VmZml4RWxlQ2xzXCIsIFwiaW52YWxpZFwiLCBcIm5lZ2F0aXZlXCIsIFwicmVxdWlyZWRcIiwgXCJsb2FkaW5nXCIsIFwic3VjY2Vzc1wiLCBcImRpc2FibGVkXCIsIFwicmVhZE9ubHlcIiwgXCJsYWJlbFwiLCBcInByZWZpeFwiLCBcInN1ZmZpeFwiLCBcImN1cnJlbmN5XCIsIFwibWVzc2FnZVwiLCBcIm9uQ2hhbmdlXCIsIFwib25CbHVyXCIsIFwib25Gb2N1c1wiXSk7XG4gICAgY29uc3QgY2xzID0gY2xhc3NuYW1lcyhgJHtwcmVmaXhDbHN9LSR7dHlwZX1gKTtcbiAgICAvLyDilIDilIAgUmVmcyDilIDilIBcbiAgICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBmYWtlRWxlUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHByZWZpeFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBzdWZmaXhSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY3VycmVuY3lSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNhcmV0UG9zUmVmID0gdXNlUmVmKDApO1xuICAgIGNvbnN0IGlnbm9yZVNlbGVjdFJlZiA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3Qgb25DaGFuZ2VSZWYgPSB1c2VMYXRlc3Qob25DaGFuZ2UpO1xuICAgIC8vIOKUgOKUgCBTdGF0ZSDilIDilIBcbiAgICBjb25zdCBbaW5uZXJWYWx1ZSwgc2V0SW5uZXJWYWx1ZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbaW5wdXRXaWR0aCwgc2V0SW5wdXRXaWR0aF0gPSB1c2VTdGF0ZShNSU5fSU5QVVRfV0lEVEgpO1xuICAgIGNvbnN0IFtpc01heFdpZHRoLCBzZXRJc01heFdpZHRoXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbaXNGb2N1cywgc2V0SXNGb2N1c10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgaXNGb2N1c1JlZiA9IHVzZUxhdGVzdChpc0ZvY3VzKTtcbiAgICBjb25zdCBpc1VuY29udHJvbGxlZCA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCc7XG4gICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSB1c2VNZW1vKCgpID0+IGZvcm1hdFRob3VzYW5kcyhpbm5lclZhbHVlICE9PSBudWxsICYmIGlubmVyVmFsdWUgIT09IHZvaWQgMCA/IGlubmVyVmFsdWUgOiAnJywgbmVnYXRpdmUpLCBbaW5uZXJWYWx1ZSwgbmVnYXRpdmVdKTtcbiAgICBjb25zdCBzdGF0ZVJlZiA9IHVzZUxhdGVzdCh7XG4gICAgICAgIGlubmVyVmFsdWUsIGZvcm1hdHRlZFZhbHVlLFxuICAgICAgICBtaW4sIG1heCwgbmVnYXRpdmUsIG1heEZyYWN0aW9uRGlnaXRzLFxuICAgIH0pO1xuICAgIC8vIOKUgOKUgCBIZWxwZXJzIOKUgOKUgFxuICAgIGNvbnN0IHNjcm9sbFRvRW5kID0gdXNlRXZlbnRDYWxsYmFjaygoc3RpY2t5ID0gZmFsc2UpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBpbnB1dCA9IGlucHV0UmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmICghaW5wdXQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChzdGlja3kpIHtcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKGNhcmV0UG9zUmVmLmN1cnJlbnQsIGNhcmV0UG9zUmVmLmN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbGVuID0gKF9hID0gaW5wdXQudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGg7XG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShsZW4sIGxlbik7XG4gICAgICAgICAgICBpbnB1dC5zY3JvbGxMZWZ0ID0gaW5wdXQuc2Nyb2xsV2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICB9KTtcbiAgICBjb25zdCBjYWxjQ2FyZXRQb3MgPSB1c2VFdmVudENhbGxiYWNrKCh2YWwsIG9mZnNldCA9IDAsIGN1cnJQb3MpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBpbnB1dFJlZi5jdXJyZW50O1xuICAgICAgICBpZiAoIWlucHV0KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB7IGlubmVyVmFsdWU6IHByZXYsIG5lZ2F0aXZlLCBmb3JtYXR0ZWRWYWx1ZSB9ID0gc3RhdGVSZWYuY3VycmVudDtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkTmV3VmFsID0gZm9ybWF0VGhvdXNhbmRzKHZhbCwgbmVnYXRpdmUpO1xuICAgICAgICBjb25zdCBvcmlnaW5PZmZzZXQgPSB2YWwubGVuZ3RoIC0gKChfYSA9IHByZXYgPT09IG51bGwgfHwgcHJldiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcHJldi5sZW5ndGgpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDApO1xuICAgICAgICBsZXQgcG9zaXRpb24gPSAoX2IgPSBjdXJyUG9zICE9PSBudWxsICYmIGN1cnJQb3MgIT09IHZvaWQgMCA/IGN1cnJQb3MgOiBpbnB1dC5zZWxlY3Rpb25FbmQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDA7XG4gICAgICAgIC8vIE1hcCBmb3JtYXR0ZWQgcG9zaXRpb24gYmFjayB0byByYXcgcG9zaXRpb25cbiAgICAgICAgcG9zaXRpb24gPSBzdHJpcENvbW1hcyhmb3JtYXR0ZWRWYWx1ZS5zbGljZSgwLCBNYXRoLm1heChwb3NpdGlvbiwgMCkpKS5sZW5ndGg7XG4gICAgICAgIC8vIE1hcCByYXcgcG9zaXRpb24gZm9yd2FyZCB0byBmb3JtYXR0ZWQgcG9zaXRpb25cbiAgICAgICAgY29uc3QgcG9zVmFsID0gdmFsLnNsaWNlKDAsIHBvc2l0aW9uICsgb3JpZ2luT2Zmc2V0KTtcbiAgICAgICAgZm9ybWF0dGVkTmV3VmFsLnNwbGl0KCcnKS5yZWR1Y2UoKGFjYywgY2hhciwgaW5kKSA9PiB7XG4gICAgICAgICAgICBpZiAoY2hhciA9PT0gQ0hBUl9DT01NQSlcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgYWNjLnB1c2goY2hhcik7XG4gICAgICAgICAgICBpZiAoYWNjLmpvaW4oJycpID09PSBwb3NWYWwpXG4gICAgICAgICAgICAgICAgcG9zaXRpb24gPSBpbmQgKyAxO1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwgW10pO1xuICAgICAgICBjYXJldFBvc1JlZi5jdXJyZW50ID0gcG9zaXRpb24gKyBvZmZzZXQ7XG4gICAgfSk7XG4gICAgY29uc3QgY29tbWl0VmFsdWUgPSB1c2VFdmVudENhbGxiYWNrKCh2YWwsIGhhc0RlY2ltYWxQb2ludCwgZSkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChpc1VuY29udHJvbGxlZCkge1xuICAgICAgICAgICAgc2V0SW5uZXJWYWx1ZSh2YWwgPT09ICcnID8gbnVsbCA6IHZhbCk7XG4gICAgICAgICAgICBjYWxjQ2FyZXRQb3ModmFsLCBoYXNEZWNpbWFsUG9pbnQgPyBERUNJTUFMX1BPSU5UX09GRlNFVCA6IDAsIE1hdGgubWF4KGNhcmV0UG9zUmVmLmN1cnJlbnQsIDApKTtcbiAgICAgICAgICAgIGlnbm9yZVNlbGVjdFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZSlcbiAgICAgICAgICAgIChfYSA9IG9uQ2hhbmdlUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKG9uQ2hhbmdlUmVmLCBlLCB2YWwpO1xuICAgIH0pO1xuICAgIC8vIOKUgOKUgCBFdmVudCBIYW5kbGVycyDilIDilIBcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VFdmVudENhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKGRpc2FibGVkIHx8IHJlYWRPbmx5KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB7IGlubmVyVmFsdWUsIGZvcm1hdHRlZFZhbHVlLCBtaW4sIG1heCwgbmVnYXRpdmUsIG1heEZyYWN0aW9uRGlnaXRzIH0gPSBzdGF0ZVJlZi5jdXJyZW50O1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZVJhd0lucHV0KChfYSA9IGUudGFyZ2V0LnZhbHVlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJywgbmVnYXRpdmUpO1xuICAgICAgICBpZiAoIXBhcnNlZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGV0IHsgdmFsIH0gPSBwYXJzZWQ7XG4gICAgICAgIGNvbnN0IHsgaGFzRGVjaW1hbFBvaW50LCBpc1N0YW5kYWxvbmVNaW51cyB9ID0gcGFyc2VkO1xuICAgICAgICBpZiAodmFsID09PSBpbm5lclZhbHVlICYmICFoYXNEZWNpbWFsUG9pbnQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIC8vIEVuZm9yY2UgZnJhY3Rpb24gZGlnaXQgbGltaXRcbiAgICAgICAgaWYgKGlzTnVtZXJpY1R5cGUobWF4RnJhY3Rpb25EaWdpdHMpKSB7XG4gICAgICAgICAgICBjb25zdCB7IGludCwgdHJ1bmNhdGVkLCBvdmVyZmxvdyB9ID0gdHJ1bmNhdGVGcmFjdGlvbkRpZ2l0cyh2YWwsIE51bWJlcihtYXhGcmFjdGlvbkRpZ2l0cykpO1xuICAgICAgICAgICAgaWYgKG92ZXJmbG93KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgW29sZEludF0gPSBmb3JtYXR0ZWRWYWx1ZS5zcGxpdChDSEFSX0RPVCk7XG4gICAgICAgICAgICAgICAgaWYgKHN0cmlwQ29tbWFzKG9sZEludCkgPT09IGludClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIHZhbCA9IHRydW5jYXRlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBDbGFtcCB0byBtaW4vbWF4IHJhbmdlXG4gICAgICAgIGlmIChpc051bWVyaWNUeXBlKG1pbikgfHwgaXNOdW1lcmljVHlwZShtYXgpKSB7XG4gICAgICAgICAgICB2YWwgPSBjYWxjVmFsdWVJblJhbmdlKHZhbCwgbWluLCBtYXgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIE5vcm1hbGl6ZSB0aGUgZmluYWwgdmFsdWVcbiAgICAgICAgaWYgKHZhbCAhPT0gJycpIHtcbiAgICAgICAgICAgIHZhbCA9IGlzU3RhbmRhbG9uZU1pbnVzID8gQ0hBUl9NSU5VUyA6IG5vcm1hbGl6ZVZhbHVlKHZhbCwgaGFzRGVjaW1hbFBvaW50LCBuZWdhdGl2ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29tbWl0VmFsdWUodmFsLCBoYXNEZWNpbWFsUG9pbnQsIGUpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlbGVjdCA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChpZ25vcmVTZWxlY3RSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgaWdub3JlU2VsZWN0UmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyUG9zID0gKF9hID0gaW5wdXRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNlbGVjdGlvbkVuZDtcbiAgICAgICAgaWYgKHR5cGVvZiBjdXJyUG9zID09PSAnbnVtYmVyJylcbiAgICAgICAgICAgIGNhcmV0UG9zUmVmLmN1cnJlbnQgPSBjdXJyUG9zO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUZvY3VzID0gdXNlRXZlbnRDYWxsYmFjaygoZSkgPT4ge1xuICAgICAgICBzZXRJc0ZvY3VzKHRydWUpO1xuICAgICAgICBvbkZvY3VzID09PSBudWxsIHx8IG9uRm9jdXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRm9jdXMoZSk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlQmx1ciA9IHVzZUV2ZW50Q2FsbGJhY2soKGUpID0+IHtcbiAgICAgICAgc2V0SXNGb2N1cyhmYWxzZSk7XG4gICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cihlKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVDb250YWluZXJDbGljayA9IHVzZUV2ZW50Q2FsbGJhY2soKGUpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoZS50YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAoX2EgPSBpbnB1dFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICAgICAgaWYgKGlzTWF4V2lkdGgpXG4gICAgICAgICAgICBzY3JvbGxUb0VuZCgpO1xuICAgIH0pO1xuICAgIC8vIOKUgOKUgCBMYXlvdXQgRWZmZWN0cyDilIDilIBcbiAgICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oLCBfaiwgX2s7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gKF9iID0gKF9hID0gY29udGFpbmVyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogTUlOX0lOUFVUX1dJRFRIO1xuICAgICAgICBjb25zdCBwcmVmaXhXaWR0aCA9IChfZCA9IChfYyA9IHByZWZpeFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Mub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IDA7XG4gICAgICAgIGNvbnN0IHN1ZmZpeFdpZHRoID0gKF9mID0gKF9lID0gc3VmZml4UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2YgIT09IHZvaWQgMCA/IF9mIDogMDtcbiAgICAgICAgY29uc3QgY3VycmVuY3lXaWR0aCA9IChfaCA9IChfZyA9IGN1cnJlbmN5UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZy5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2ggIT09IHZvaWQgMCA/IF9oIDogMDtcbiAgICAgICAgY29uc3QgZmFrZVdpZHRoID0gKF9rID0gKF9qID0gZmFrZUVsZVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfaiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2oub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9rICE9PSB2b2lkIDAgPyBfayA6IDA7XG4gICAgICAgIGNvbnN0IGdhcFdpZHRoID0gY2FsY0dhcFdpZHRoKCEhcHJlZml4V2lkdGgsICEhc3VmZml4V2lkdGgsICEhY3VycmVuY3lXaWR0aCk7XG4gICAgICAgIGNvbnN0IG1heFdpZHRoID0gY29udGFpbmVyV2lkdGggLSBwcmVmaXhXaWR0aCAtIHN1ZmZpeFdpZHRoIC0gY3VycmVuY3lXaWR0aCAtIGdhcFdpZHRoO1xuICAgICAgICBzZXRJbnB1dFdpZHRoKE1hdGgubWluKG1heFdpZHRoLCBNYXRoLm1heChmYWtlV2lkdGgsIE1JTl9JTlBVVF9XSURUSCkpKTtcbiAgICAgICAgc2V0SXNNYXhXaWR0aChmYWtlV2lkdGggPj0gbWF4V2lkdGgpO1xuICAgICAgICBpZiAoaXNGb2N1c1JlZi5jdXJyZW50KVxuICAgICAgICAgICAgc2Nyb2xsVG9FbmQodHJ1ZSk7XG4gICAgfSwgW2lubmVyVmFsdWUsIHByZWZpeCwgc3VmZml4LCBjdXJyZW5jeSwgbG9hZGluZ10pO1xuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgbGV0IHZhbCA9IGlzVW5jb250cm9sbGVkID8gaW5uZXJWYWx1ZSA6IHZhbHVlO1xuICAgICAgICBsZXQgaGFzRGVjaW1hbFBvaW50ID0gZmFsc2U7XG4gICAgICAgIGxldCBpc1N0YW5kYWxvbmVNaW51cyA9IGZhbHNlO1xuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmICh2YWwgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlUmF3SW5wdXQodmFsLCBuZWdhdGl2ZSk7XG4gICAgICAgICAgICAgICAgaWYgKCFwYXJzZWQpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB2YWwgPSBwYXJzZWQudmFsO1xuICAgICAgICAgICAgICAgIGhhc0RlY2ltYWxQb2ludCA9IHBhcnNlZC5oYXNEZWNpbWFsUG9pbnQ7XG4gICAgICAgICAgICAgICAgaXNTdGFuZGFsb25lTWludXMgPSBwYXJzZWQuaXNTdGFuZGFsb25lTWludXM7XG4gICAgICAgICAgICAgICAgaWYgKCFuZWdhdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gc3RyaXBNaW51cyh2YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbCAhPT0gbnVsbCAmJiAhaXNOdW1lcmljVHlwZSh2YWwpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAvLyBFbnN1cmUgbm9uLW5lZ2F0aXZlIHdoZW4gbmVnYXRpdmUgaXMgbm90IGFsbG93ZWRcbiAgICAgICAgaWYgKCFuZWdhdGl2ZSAmJiBpc051bWVyaWNUeXBlKHZhbCkpIHtcbiAgICAgICAgICAgIHZhbCA9IGFic1ZhbHVlKHZhbCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRW5mb3JjZSBmcmFjdGlvbiBkaWdpdCBsaW1pdFxuICAgICAgICBpZiAoKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSAmJlxuICAgICAgICAgICAgaXNOdW1lcmljVHlwZShtYXhGcmFjdGlvbkRpZ2l0cykpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdHJ1bmNhdGVkLCBvdmVyZmxvdyB9ID0gdHJ1bmNhdGVGcmFjdGlvbkRpZ2l0cyhgJHt2YWx9YCwgTnVtYmVyKG1heEZyYWN0aW9uRGlnaXRzKSk7XG4gICAgICAgICAgICBpZiAob3ZlcmZsb3cpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNVbmNvbnRyb2xsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0SW5uZXJWYWx1ZSh0cnVuY2F0ZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgKF9hID0gb25DaGFuZ2VSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwob25DaGFuZ2VSZWYsIHsgdGFyZ2V0OiBpbnB1dFJlZi5jdXJyZW50IH0sIHRydW5jYXRlZCAhPT0gbnVsbCAmJiB0cnVuY2F0ZWQgIT09IHZvaWQgMCA/IHRydW5jYXRlZCA6ICcnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIENsYW1wIHRvIG1pbi9tYXggcmFuZ2VcbiAgICAgICAgaWYgKGlzTnVtZXJpY1R5cGUodmFsKSB8fCB0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdmFsID0gY2FsY1ZhbHVlSW5SYW5nZShgJHt2YWx9YCwgbWluLCBtYXgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWwgPT09ICcnIHx8IHZhbCA9PSBudWxsKSB7XG4gICAgICAgICAgICBzZXRJbm5lclZhbHVlKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFsID0gaXNTdGFuZGFsb25lTWludXMgPyBDSEFSX01JTlVTIDogbm9ybWFsaXplVmFsdWUoYCR7dmFsfWAsIGhhc0RlY2ltYWxQb2ludCwgbmVnYXRpdmUpO1xuICAgICAgICAgICAgc2V0SW5uZXJWYWx1ZSh2YWwpO1xuICAgICAgICB9XG4gICAgICAgIGNhbGNDYXJldFBvcyh2YWwgIT09IG51bGwgJiYgdmFsICE9PSB2b2lkIDAgPyB2YWwgOiAnJywgaGFzRGVjaW1hbFBvaW50ID8gREVDSU1BTF9QT0lOVF9PRkZTRVQgOiAwLCBNYXRoLm1heChjYXJldFBvc1JlZi5jdXJyZW50LCAwKSk7XG4gICAgICAgIGlnbm9yZVNlbGVjdFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICB9LCBbdmFsdWUsIG1heEZyYWN0aW9uRGlnaXRzLCBtaW4sIG1heCwgbmVnYXRpdmVdKTtcbiAgICAvLyDilIDilIAgUmVuZGVyIOKUgOKUgFxuICAgIGNvbnN0IHdyYXBwZXJDbGFzc05hbWUgPSBjbHMoJ3dyYXBwZXInLCBqb2luQ2xzKHdyYXBwZXJDbHMsIGNscyhzaXplKSwgaW52YWxpZCAmJiBjbHMoJ2ludmFsaWQnKSwgc3VjY2VzcyAmJiBjbHMoJ3N1Y2Nlc3MnKSwgZGlzYWJsZWQgJiYgY2xzKCdkaXNhYmxlZCcpLCByZWFkT25seSAmJiBjbHMoJ3JlYWRvbmx5JyksIGlubmVyVmFsdWUgJiYgY2xzKCdmaWxsZWQnKSkpO1xuICAgIGNvbnN0IHJlbmRlckxhYmVsID0gKCkgPT4ge1xuICAgICAgICBpZiAoIWxhYmVsKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGlmIChsb2FkaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gX2pzeChTa2VsZXRvbiwgeyB3aWR0aDogU0tFTEVUT05fTEFCRUxfV0lEVEgsIGhlaWdodDogU0tFTEVUT05fTEFCRUxfSEVJR0hULCBjbGFzc05hbWU6IGNscygnbGFiZWwtbG9hZGluZycpIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xzKCdsYWJlbCcsIGpvaW5DbHMocmVxdWlyZWQgJiYgY2xzKCdsYWJlbC1yZXF1aXJlZCcpLCBsYWJlbENscykpLCBjaGlsZHJlbjogbGFiZWwgfSk7XG4gICAgfTtcbiAgICBjb25zdCByZW5kZXJTdWZmaXggPSAoKSA9PiB7XG4gICAgICAgIGlmIChsb2FkaW5nKVxuICAgICAgICAgICAgcmV0dXJuIF9qc3goU3Bpbm5lciwgeyBjbGFzc05hbWU6IGNscygnc3VmZml4LWxvYWRpbmcnKSwgc3Ryb2tlV2lkdGg6IFNQSU5ORVJfU1RST0tFX1dJRFRIIH0pO1xuICAgICAgICBpZiAoc3VmZml4KVxuICAgICAgICAgICAgcmV0dXJuIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBzdWZmaXhSZWYsIGNsYXNzTmFtZTogY2xzKCdzdWZmaXgnLCBzdWZmaXhFbGVDbHMpLCBjaGlsZHJlbjogc3VmZml4IH0pO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICAgIHJldHVybiAoX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHdyYXBwZXJDbGFzc05hbWUsIGNoaWxkcmVuOiBbcmVuZGVyTGFiZWwoKSwgX2pzeHMoXCJkaXZcIiwgeyByZWY6IGNvbnRhaW5lclJlZiwgY2xhc3NOYW1lOiBjbHModm9pZCAwLCBqb2luQ2xzKGNsYXNzTmFtZSwgaXNGb2N1cyAmJiBjbHMoJ2ZvY3VzJykpKSwgb25DbGljazogaGFuZGxlQ29udGFpbmVyQ2xpY2ssIGNoaWxkcmVuOiBbcHJlZml4ICYmIChfanN4KFwic3BhblwiLCB7IHJlZjogcHJlZml4UmVmLCBjbGFzc05hbWU6IGNscygncHJlZml4JywgcHJlZml4RWxlQ2xzKSwgY2hpbGRyZW46IHByZWZpeCB9KSksIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNscygnZWxlbWVudCcsICghaXNGb2N1cyAmJiBpc01heFdpZHRoKSA/IGNscygnZWxlbWVudC1tYXgnKSA6ICcnKSwgY2hpbGRyZW46IF9qc3goXCJpbnB1dFwiLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IHJlZjogaW5wdXRSZWYsIHZhbHVlOiBmb3JtYXR0ZWRWYWx1ZSwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCByZWFkT25seTogcmVhZE9ubHksIGRpc2FibGVkOiBkaXNhYmxlZCwgc3R5bGU6IHsgW0NTU19WQVJfSU5QVVRfV0lEVEhdOiBgJHtpbnB1dFdpZHRofXB4YCB9LCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLCBvblNlbGVjdDogaGFuZGxlU2VsZWN0LCBvbkZvY3VzOiBoYW5kbGVGb2N1cywgb25CbHVyOiBoYW5kbGVCbHVyIH0pKSB9KSwgY3VycmVuY3kgJiYgKF9qc3goXCJzcGFuXCIsIHsgcmVmOiBjdXJyZW5jeVJlZiwgY2xhc3NOYW1lOiBjbHMoJ2N1cnJlbmN5JyksIGNoaWxkcmVuOiBjdXJyZW5jeSB9KSksIHJlbmRlclN1ZmZpeCgpLCBfanN4KFwic3BhblwiLCB7IHJlZjogZmFrZUVsZVJlZiwgY2xhc3NOYW1lOiBjbHMoJ2Zha2UnKSwgb25DbGljazogZSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpLCBjaGlsZHJlbjogZm9ybWF0dGVkVmFsdWUgfSldIH0pLCAobWVzc2FnZSB8fCBmb290bm90ZSkgJiYgKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbHMoJ2V4dHJhJyksIGNoaWxkcmVuOiBbbWVzc2FnZSAmJiBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbHMoJ21lc3NhZ2UnLCBtZXNzYWdlQ2xzKSwgY2hpbGRyZW46IG1lc3NhZ2UgfSksIGZvb3Rub3RlICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNscygnZm9vdG5vdGUnLCBmb290bm90ZUNscyksIGNoaWxkcmVuOiBmb290bm90ZSB9KV0gfSkpXSB9KSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgbWVtbyhJbnB1dEFtb3VudCk7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|