@1money/component-ui 0.0.70 → 0.0.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/es/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +3 -2
  2. package/es/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +2 -2
  3. package/es/business/Select/Network/NetworkSelect.js +2 -2
  4. package/es/components/Accordion/Accordion.js +3 -2
  5. package/es/components/Calendar/Calendar.js +3 -2
  6. package/es/components/Carousel/Carousel.js +3 -2
  7. package/es/components/Checkbox/BaseCheckbox.js +3 -2
  8. package/es/components/Checkbox/Checkbox.js +2 -2
  9. package/es/components/Checkbox/CheckboxGroup.js +3 -2
  10. package/es/components/CoachMark/CoachMark.js +3 -2
  11. package/es/components/Copy/Copy.js +2 -2
  12. package/es/components/Dialog/Dialog.js +2 -2
  13. package/es/components/Drawer/Drawer.js +2 -2
  14. package/es/components/Input/Amount/Amount.js +2 -2
  15. package/es/components/Input/Input/Input.js +3 -2
  16. package/es/components/Input/Mask/Mask.js +3 -2
  17. package/es/components/Input/OTP/OTP.js +3 -2
  18. package/es/components/Input/Password/Password.js +3 -2
  19. package/es/components/Input/Search/Search.js +3 -2
  20. package/es/components/Input/TextArea/TextArea.js +3 -2
  21. package/es/components/Input/Trade/Trade.js +2 -2
  22. package/es/components/Input/useAmountInput.js +4 -2
  23. package/es/components/Input/useSyncRef.js +2 -2
  24. package/es/components/Navigation/Nav.js +2 -2
  25. package/es/components/Navigation/Navigation.js +5 -2
  26. package/es/components/Pagination/Pagination.js +2 -2
  27. package/es/components/Pagination/usePagination.js +3 -2
  28. package/es/components/Popconfirm/Popconfirm.js +2 -2
  29. package/es/components/Portal/Portal.js +2 -2
  30. package/es/components/ProForm/ProForm.js +6 -3
  31. package/es/components/ProForm/ProFormGroup.js +2 -2
  32. package/es/components/ProForm/ProFormList.js +3 -2
  33. package/es/components/ProForm/Submitter.js +2 -2
  34. package/es/components/ProForm/core/constants.d.ts +6 -0
  35. package/es/components/ProForm/core/constants.js +7 -1
  36. package/es/components/ProForm/core/hooks/useForm.js +25 -195
  37. package/es/components/ProForm/core/hooks/useFormCore.js +14 -142
  38. package/es/components/ProForm/core/pathUtils.d.ts +6 -0
  39. package/es/components/ProForm/core/pathUtils.js +59 -0
  40. package/es/components/ProForm/core/runRules.d.ts +13 -0
  41. package/es/components/ProForm/core/runRules.js +186 -0
  42. package/es/components/ProForm/core/useFormItem.js +10 -28
  43. package/es/components/ProForm/fields/createProFormField.js +43 -57
  44. package/es/components/ProForm/hooks/useFieldRequest.js +7 -5
  45. package/es/components/ProForm/layouts/QueryFilter.js +3 -2
  46. package/es/components/ProForm/layouts/useOverlayForm.js +23 -21
  47. package/es/components/ProForm/utils.d.ts +2 -2
  48. package/es/components/ProForm/utils.js +5 -51
  49. package/es/components/ProTable/ProTable.js +3 -2
  50. package/es/components/ProTable/core/useAwaitableReload.js +3 -2
  51. package/es/components/ProTable/useFetchData.js +4 -2
  52. package/es/components/Radio/Radio.js +3 -2
  53. package/es/components/Radio/RadioGroup.js +3 -2
  54. package/es/components/ResizeObserver/useResizeObserver.js +2 -2
  55. package/es/components/Segment/Segment.js +4 -2
  56. package/es/components/Select/Select.js +3 -2
  57. package/es/components/Select/SelectCustom.js +2 -2
  58. package/es/components/Select/useSelectShell.js +3 -2
  59. package/es/components/Slider/Slider.js +3 -2
  60. package/es/components/Switch/Switch.js +3 -2
  61. package/es/components/Table/Table.js +14 -28
  62. package/es/components/Table/VirtualTable.js +18 -28
  63. package/es/components/Table/core/columnUtil.d.ts +9 -0
  64. package/es/components/Table/core/columnUtil.js +34 -0
  65. package/es/components/Table/core/useTableColumns.d.ts +4 -13
  66. package/es/components/Table/core/useTableColumns.js +55 -24
  67. package/es/components/Table/core/useTableDataPipeline.d.ts +11 -16
  68. package/es/components/Table/core/useTableDataPipeline.js +66 -73
  69. package/es/components/Table/core/useTableExpand.js +3 -2
  70. package/es/components/Table/core/useTableSelection.js +7 -4
  71. package/es/components/Table/core/useTableSetup.js +4 -2
  72. package/es/components/Table/features/ExpandTrigger.d.ts +9 -3
  73. package/es/components/Table/features/ExpandTrigger.js +14 -8
  74. package/es/components/Table/features/FilterTrigger.js +21 -17
  75. package/es/components/Table/features/SelectionColumn.d.ts +11 -6
  76. package/es/components/Table/features/SelectionColumn.js +12 -5
  77. package/es/components/Table/features/SortTrigger.d.ts +4 -2
  78. package/es/components/Table/features/SortTrigger.js +8 -3
  79. package/es/components/Table/internal/kernel/Body/MeasureCell.js +2 -2
  80. package/es/components/Table/internal/kernel/Cell/index.js +2 -2
  81. package/es/components/Table/internal/kernel/Table.js +3 -3
  82. package/es/components/Table/internal/kernel/VirtualTable/index.js +2 -2
  83. package/es/components/Table/internal/kernel/hooks/useRowInfo.js +2 -2
  84. package/es/components/Table/internal/kernel/selector-context/context.js +3 -3
  85. package/es/components/Table/renderers/HeaderCell.js +3 -2
  86. package/es/components/Table/renderers/TableShell.d.ts +13 -0
  87. package/es/components/Table/renderers/TableShell.js +25 -0
  88. package/es/components/Table/style/Table.css +3 -0
  89. package/es/components/Tabs/Tabs.js +4 -2
  90. package/es/components/Tooltip/Tooltip.js +3 -2
  91. package/es/components/Tour/Tour.js +3 -2
  92. package/es/components/Trigger/Trigger.js +3 -2
  93. package/es/components/Typography/Typography.js +2 -2
  94. package/es/components/Typography/useTypographyEnhancements.js +3 -2
  95. package/es/components/Upload/Upload.js +2 -2
  96. package/es/components/Upload/UploadFileBar.js +2 -2
  97. package/es/components/VirtualList/VirtualList.js +3 -2
  98. package/es/components/VirtualList/hooks/useMobileTouchMove.js +2 -2
  99. package/es/components/VirtualList/hooks/useScrollTo.js +2 -2
  100. package/es/index.css +1 -1
  101. package/lib/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +9 -8
  102. package/lib/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +3 -3
  103. package/lib/business/Select/Network/NetworkSelect.js +3 -3
  104. package/lib/components/Accordion/Accordion.js +5 -4
  105. package/lib/components/Calendar/Calendar.js +6 -5
  106. package/lib/components/Carousel/Carousel.js +5 -4
  107. package/lib/components/Checkbox/BaseCheckbox.js +5 -4
  108. package/lib/components/Checkbox/Checkbox.js +3 -3
  109. package/lib/components/Checkbox/CheckboxGroup.js +7 -6
  110. package/lib/components/CoachMark/CoachMark.js +7 -6
  111. package/lib/components/Copy/Copy.js +3 -3
  112. package/lib/components/Dialog/Dialog.js +6 -6
  113. package/lib/components/Drawer/Drawer.js +10 -10
  114. package/lib/components/Input/Amount/Amount.js +6 -5
  115. package/lib/components/Input/Input/Input.js +7 -6
  116. package/lib/components/Input/Mask/Mask.js +9 -8
  117. package/lib/components/Input/OTP/OTP.js +9 -8
  118. package/lib/components/Input/Password/Password.js +6 -5
  119. package/lib/components/Input/Search/Search.js +8 -7
  120. package/lib/components/Input/TextArea/TextArea.js +5 -4
  121. package/lib/components/Input/Trade/Trade.js +5 -4
  122. package/lib/components/Input/useAmountInput.js +13 -11
  123. package/lib/components/Input/useSyncRef.js +4 -3
  124. package/lib/components/Navigation/Nav.js +3 -3
  125. package/lib/components/Navigation/Navigation.js +10 -7
  126. package/lib/components/Pagination/Pagination.js +4 -3
  127. package/lib/components/Pagination/usePagination.js +7 -6
  128. package/lib/components/Popconfirm/Popconfirm.js +3 -3
  129. package/lib/components/Portal/Portal.js +4 -4
  130. package/lib/components/ProForm/ProForm.js +14 -11
  131. package/lib/components/ProForm/ProFormGroup.js +3 -3
  132. package/lib/components/ProForm/ProFormList.js +10 -9
  133. package/lib/components/ProForm/Submitter.js +4 -4
  134. package/lib/components/ProForm/core/constants.d.ts +6 -0
  135. package/lib/components/ProForm/core/constants.js +8 -2
  136. package/lib/components/ProForm/core/hooks/useForm.js +36 -206
  137. package/lib/components/ProForm/core/hooks/useFormCore.js +32 -160
  138. package/lib/components/ProForm/core/pathUtils.d.ts +6 -0
  139. package/lib/components/ProForm/core/pathUtils.js +68 -0
  140. package/lib/components/ProForm/core/runRules.d.ts +13 -0
  141. package/lib/components/ProForm/core/runRules.js +194 -0
  142. package/lib/components/ProForm/core/useFormItem.js +15 -33
  143. package/lib/components/ProForm/fields/createProFormField.js +42 -56
  144. package/lib/components/ProForm/hooks/useFieldRequest.js +9 -7
  145. package/lib/components/ProForm/layouts/QueryFilter.js +8 -7
  146. package/lib/components/ProForm/layouts/useOverlayForm.js +27 -27
  147. package/lib/components/ProForm/utils.d.ts +2 -2
  148. package/lib/components/ProForm/utils.js +20 -55
  149. package/lib/components/ProTable/ProTable.js +10 -9
  150. package/lib/components/ProTable/core/useAwaitableReload.js +6 -5
  151. package/lib/components/ProTable/useFetchData.js +15 -13
  152. package/lib/components/Radio/Radio.js +6 -5
  153. package/lib/components/Radio/RadioGroup.js +5 -4
  154. package/lib/components/ResizeObserver/useResizeObserver.js +4 -3
  155. package/lib/components/Segment/Segment.js +7 -5
  156. package/lib/components/Select/Select.js +23 -22
  157. package/lib/components/Select/SelectCustom.js +8 -8
  158. package/lib/components/Select/useSelectShell.js +5 -4
  159. package/lib/components/Slider/Slider.js +6 -5
  160. package/lib/components/Switch/Switch.js +5 -4
  161. package/lib/components/Table/Table.js +13 -27
  162. package/lib/components/Table/VirtualTable.js +17 -27
  163. package/lib/components/Table/core/columnUtil.d.ts +9 -0
  164. package/lib/components/Table/core/columnUtil.js +42 -0
  165. package/lib/components/Table/core/useTableColumns.d.ts +4 -13
  166. package/lib/components/Table/core/useTableColumns.js +57 -26
  167. package/lib/components/Table/core/useTableDataPipeline.d.ts +11 -16
  168. package/lib/components/Table/core/useTableDataPipeline.js +73 -80
  169. package/lib/components/Table/core/useTableExpand.js +6 -5
  170. package/lib/components/Table/core/useTableSelection.js +13 -10
  171. package/lib/components/Table/core/useTableSetup.js +8 -5
  172. package/lib/components/Table/features/ExpandTrigger.d.ts +9 -3
  173. package/lib/components/Table/features/ExpandTrigger.js +14 -8
  174. package/lib/components/Table/features/FilterTrigger.js +21 -17
  175. package/lib/components/Table/features/SelectionColumn.d.ts +11 -6
  176. package/lib/components/Table/features/SelectionColumn.js +12 -5
  177. package/lib/components/Table/features/SortTrigger.d.ts +4 -2
  178. package/lib/components/Table/features/SortTrigger.js +8 -3
  179. package/lib/components/Table/internal/kernel/Body/MeasureCell.js +3 -3
  180. package/lib/components/Table/internal/kernel/Cell/index.js +4 -4
  181. package/lib/components/Table/internal/kernel/Table.js +7 -6
  182. package/lib/components/Table/internal/kernel/VirtualTable/index.js +4 -4
  183. package/lib/components/Table/internal/kernel/hooks/useRowInfo.js +3 -3
  184. package/lib/components/Table/internal/kernel/selector-context/context.js +6 -5
  185. package/lib/components/Table/renderers/HeaderCell.js +3 -2
  186. package/lib/components/Table/renderers/TableShell.d.ts +13 -0
  187. package/lib/components/Table/renderers/TableShell.js +31 -0
  188. package/lib/components/Table/style/Table.css +3 -0
  189. package/lib/components/Tabs/Tabs.js +7 -5
  190. package/lib/components/Tooltip/Tooltip.js +5 -4
  191. package/lib/components/Tour/Tour.js +7 -6
  192. package/lib/components/Trigger/Trigger.js +5 -4
  193. package/lib/components/Typography/Typography.js +5 -4
  194. package/lib/components/Typography/useTypographyEnhancements.js +8 -7
  195. package/lib/components/Upload/Upload.js +5 -4
  196. package/lib/components/Upload/UploadFileBar.js +4 -3
  197. package/lib/components/VirtualList/VirtualList.js +8 -7
  198. package/lib/components/VirtualList/hooks/useMobileTouchMove.js +4 -3
  199. package/lib/components/VirtualList/hooks/useScrollTo.js +3 -3
  200. package/lib/index.css +1 -1
  201. package/package.json +2 -2
@@ -9,7 +9,8 @@ var __rest = this && this.__rest || function (s, e) {
9
9
  };
10
10
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
11
  import { memo } from 'react';
12
- import { useControlledState, useEventCallback } from '@1money/hooks';
12
+ import useControlledState from '@1money/hooks/useControlledState';
13
+ import useEventCallback from '@1money/hooks/useEventCallback';
13
14
  import { TypographyBody } from '../Typography';
14
15
  import { default as classnames, joinCls } from '../../utils/classnames';
15
16
  import './style';
@@ -91,4 +92,4 @@ export var Switch = function Switch(props) {
91
92
  };
92
93
  Switch.displayName = 'Switch';
93
94
  export default /*#__PURE__*/memo(Switch);
94
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvU3dpdGNoL1N3aXRjaC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU3dpdGNoL1N3aXRjaC50c3giXSwibmFtZXMiOlsiX19yZXN0IiwicyIsImUiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwibWVtbyIsInVzZUNvbnRyb2xsZWRTdGF0ZSIsInVzZUV2ZW50Q2FsbGJhY2siLCJUeXBvZ3JhcGh5Qm9keSIsImRlZmF1bHQiLCJjbGFzc25hbWVzIiwiam9pbkNscyIsIlNXSVRDSF9QUkVGSVhfQ0xTIiwiU1dJVENIX0RFRkFVTFRfTEFCRUxfUExBQ0VNRU5UIiwiU1dJVENIX0xBQkVMX1BMQUNFTUVOVCIsIlNXSVRDSF9UWVBPR1JBUEhZIiwiU3dpdGNoIiwicHJvcHMiLCJfcHJvcHMkY2xhc3NOYW1lIiwiY2xhc3NOYW1lIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsImlkIiwibmFtZSIsImNoZWNrZWQiLCJfcHJvcHMkZGVmYXVsdENoZWNrZWQiLCJkZWZhdWx0Q2hlY2tlZCIsIl9wcm9wcyRkaXNhYmxlZCIsImRpc2FibGVkIiwibGFiZWwiLCJkZXNjcmlwdGlvbiIsIl9wcm9wcyRsYWJlbFBsYWNlbWVudCIsImxhYmVsUGxhY2VtZW50Iiwib25DaGFuZ2UiLCJyZWYiLCJhcmlhTGFiZWwiLCJhcmlhTGFiZWxsZWRCeSIsInJlc3QiLCJfdXNlQ29udHJvbGxlZFN0YXRlIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlubmVyQ2hlY2tlZCIsInNldElubmVyQ2hlY2tlZCIsImNsYXNzZXMiLCJsYWJlbENvbG9yIiwiY29sb3IiLCJkZXNjcmlwdGlvbkNvbG9yIiwiaW5mZXJyZWRBcmlhTGFiZWwiLCJTdHJpbmciLCJ1bmRlZmluZWQiLCJoYW5kbGVDaGFuZ2UiLCJldmVudCIsIm5leHRDaGVja2VkIiwidGFyZ2V0Iiwic3dpdGNoRWxlbWVudCIsImNoaWxkcmVuIiwiYXNzaWduIiwidHlwZSIsInJvbGUiLCJsYWJlbEVsZW1lbnQiLCJzaXplIiwicmlnaHQiLCJkaXNwbGF5TmFtZSJdLCJtYXBwaW5ncyI6IjtBQUFBLElBQUlBLE1BQU0sR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxNQUFNLElBQUssVUFBVUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7RUFDbEQsSUFBSUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUNWLEtBQUssSUFBSUMsQ0FBQyxJQUFJSCxDQUFDLEVBQUUsSUFBSUksTUFBTSxDQUFDQyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDUCxDQUFDLEVBQUVHLENBQUMsQ0FBQyxJQUFJRixDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUMvRUQsQ0FBQyxDQUFDQyxDQUFDLENBQUMsR0FBR0gsQ0FBQyxDQUFDRyxDQUFDLENBQUM7RUFDZixJQUFJSCxDQUFDLElBQUksSUFBSSxJQUFJLE9BQU9JLE1BQU0sQ0FBQ0sscUJBQXFCLEtBQUssVUFBVSxFQUMvRCxLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVQLENBQUMsR0FBR0MsTUFBTSxDQUFDSyxxQkFBcUIsQ0FBQ1QsQ0FBQyxDQUFDLEVBQUVVLENBQUMsR0FBR1AsQ0FBQyxDQUFDUSxNQUFNLEVBQUVELENBQUMsRUFBRSxFQUFFO0lBQ3BFLElBQUlULENBQUMsQ0FBQ08sT0FBTyxDQUFDTCxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJTixNQUFNLENBQUNDLFNBQVMsQ0FBQ08sb0JBQW9CLENBQUNMLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEVBQzFFUixDQUFDLENBQUND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QUMsRUFDL0JYLGNBQWMsS0FBS2xCLHNCQUFzQixDQUFDK0MsS0FBSyxJQUFJbEIsT0FBTyxDQUFDN0Isc0JBQXNCLENBQUMrQyxLQUFLLENBQUMsRUFDeEYxQyxTQUFTLENBQ1YsQ0FDRjtJQUFBb0MsUUFBQSxFQUFBLENBRUFJLFlBQVksRUFDWkwsYUFBYTtFQUFBLENBQUEsQ0FDUjtBQUVaLENBQUM7QUFFRHRDLE1BQU0sQ0FBQzhDLFdBQVcsR0FBRyxRQUFRO0FBRTdCLDRCQUFlekQsSUFBSSxDQUFDVyxNQUFNLENBQUMiLCJmaWxlIjoiY29tcG9uZW50cy9Td2l0Y2gvU3dpdGNoLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250cm9sbGVkU3RhdGUsIHVzZUV2ZW50Q2FsbGJhY2sgfSBmcm9tICdAMW1vbmV5L2hvb2tzJztcbmltcG9ydCB7IFR5cG9ncmFwaHlCb2R5IH0gZnJvbSAnLi4vVHlwb2dyYXBoeSc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMsIGpvaW5DbHMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCAnLi9zdHlsZSc7XG5pbXBvcnQgeyBTV0lUQ0hfUFJFRklYX0NMUywgU1dJVENIX0RFRkFVTFRfTEFCRUxfUExBQ0VNRU5ULCBTV0lUQ0hfTEFCRUxfUExBQ0VNRU5ULCBTV0lUQ0hfVFlQT0dSQVBIWSwgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5leHBvcnQgY29uc3QgU3dpdGNoID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgY2xhc3NOYW1lID0gJycsIHByZWZpeENscyA9IFNXSVRDSF9QUkVGSVhfQ0xTLCBpZCwgbmFtZSwgY2hlY2tlZCwgZGVmYXVsdENoZWNrZWQgPSBmYWxzZSwgZGlzYWJsZWQgPSBmYWxzZSwgbGFiZWwsIGRlc2NyaXB0aW9uLCBsYWJlbFBsYWNlbWVudCA9IFNXSVRDSF9ERUZBVUxUX0xBQkVMX1BMQUNFTUVOVCwgb25DaGFuZ2UsIHJlZiwgJ2FyaWEtbGFiZWwnOiBhcmlhTGFiZWwsICdhcmlhLWxhYmVsbGVkYnknOiBhcmlhTGFiZWxsZWRCeSB9ID0gcHJvcHMsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcImNsYXNzTmFtZVwiLCBcInByZWZpeENsc1wiLCBcImlkXCIsIFwibmFtZVwiLCBcImNoZWNrZWRcIiwgXCJkZWZhdWx0Q2hlY2tlZFwiLCBcImRpc2FibGVkXCIsIFwibGFiZWxcIiwgXCJkZXNjcmlwdGlvblwiLCBcImxhYmVsUGxhY2VtZW50XCIsIFwib25DaGFuZ2VcIiwgXCJyZWZcIiwgJ2FyaWEtbGFiZWwnLCAnYXJpYS1sYWJlbGxlZGJ5J10pO1xuICAgIGNvbnN0IFtpbm5lckNoZWNrZWQsIHNldElubmVyQ2hlY2tlZF0gPSB1c2VDb250cm9sbGVkU3RhdGUoZGVmYXVsdENoZWNrZWQsIGNoZWNrZWQpO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKHByZWZpeENscyk7XG4gICAgY29uc3QgbGFiZWxDb2xvciA9IGRpc2FibGVkID8gU1dJVENIX1RZUE9HUkFQSFkubGFiZWwuY29sb3IuZGlzYWJsZWQgOiBTV0lUQ0hfVFlQT0dSQVBIWS5sYWJlbC5jb2xvci5kZWZhdWx0O1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uQ29sb3IgPSBkaXNhYmxlZCA/IFNXSVRDSF9UWVBPR1JBUEhZLmRlc2NyaXB0aW9uLmNvbG9yLmRpc2FibGVkIDogU1dJVENIX1RZUE9HUkFQSFkuZGVzY3JpcHRpb24uY29sb3IuZGVmYXVsdDtcbiAgICBjb25zdCBpbmZlcnJlZEFyaWFMYWJlbCA9IHR5cGVvZiBsYWJlbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGxhYmVsID09PSAnbnVtYmVyJ1xuICAgICAgICA/IFN0cmluZyhsYWJlbClcbiAgICAgICAgOiB0eXBlb2YgZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBkZXNjcmlwdGlvbiA9PT0gJ251bWJlcidcbiAgICAgICAgICAgID8gU3RyaW5nKGRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGRpc2FibGVkKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBuZXh0Q2hlY2tlZCA9IGV2ZW50LnRhcmdldC5jaGVja2VkO1xuICAgICAgICBzZXRJbm5lckNoZWNrZWQobmV4dENoZWNrZWQpO1xuICAgICAgICBvbkNoYW5nZSA9PT0gbnVsbCB8fCBvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DaGFuZ2UobmV4dENoZWNrZWQpO1xuICAgIH0pO1xuICAgIGNvbnN0IHN3aXRjaEVsZW1lbnQgPSAoX2pzeHMoXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCd0cmFjay13cmFwcGVyJyksIGNoaWxkcmVuOiBbX2pzeChcImlucHV0XCIsIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdpbnB1dCcpLCB0eXBlOiBcImNoZWNrYm94XCIsIHJvbGU6IFwic3dpdGNoXCIsIGlkOiBpZCwgbmFtZTogbmFtZSwgXCJhcmlhLWxhYmVsXCI6IGFyaWFMYWJlbCAhPT0gbnVsbCAmJiBhcmlhTGFiZWwgIT09IHZvaWQgMCA/IGFyaWFMYWJlbCA6IGluZmVycmVkQXJpYUxhYmVsLCBcImFyaWEtbGFiZWxsZWRieVwiOiBhcmlhTGFiZWxsZWRCeSwgZGlzYWJsZWQ6IGRpc2FibGVkLCBjaGVja2VkOiBpbm5lckNoZWNrZWQsIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UgfSkpLCBfanN4KFwic3BhblwiLCB7IFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCIsIGNsYXNzTmFtZTogY2xhc3NlcygndHJhY2snKSwgY2hpbGRyZW46IF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCd0aHVtYicpIH0pIH0pXSB9KSk7XG4gICAgY29uc3QgbGFiZWxFbGVtZW50ID0gKGxhYmVsIHx8IGRlc2NyaXB0aW9uKSAmJiAoX2pzeHMoXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdjb250ZW50JyksIGNoaWxkcmVuOiBbbGFiZWwgJiYgX2pzeChUeXBvZ3JhcGh5Qm9keSwgeyBzaXplOiBTV0lUQ0hfVFlQT0dSQVBIWS5sYWJlbC5zaXplLCBjb2xvcjogbGFiZWxDb2xvciwgY2hpbGRyZW46IGxhYmVsIH0pLCBkZXNjcmlwdGlvbiAmJiBfanN4KFR5cG9ncmFwaHlCb2R5LCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZGVzY3JpcHRpb24nKSwgc2l6ZTogU1dJVENIX1RZUE9HUkFQSFkuZGVzY3JpcHRpb24uc2l6ZSwgY29sb3I6IGRlc2NyaXB0aW9uQ29sb3IsIGNoaWxkcmVuOiBkZXNjcmlwdGlvbiB9KV0gfSkpO1xuICAgIHJldHVybiAoX2pzeHMoXCJsYWJlbFwiLCB7IHJlZjogcmVmLCBjbGFzc05hbWU6IGNsYXNzZXModW5kZWZpbmVkLCBqb2luQ2xzKGlubmVyQ2hlY2tlZCAmJiBjbGFzc2VzKCdjaGVja2VkJyksIGRpc2FibGVkICYmIGNsYXNzZXMoJ2Rpc2FibGVkJyksIGxhYmVsUGxhY2VtZW50ID09PSBTV0lUQ0hfTEFCRUxfUExBQ0VNRU5ULnJpZ2h0ICYmIGNsYXNzZXMoU1dJVENIX0xBQkVMX1BMQUNFTUVOVC5yaWdodCksIGNsYXNzTmFtZSkpLCBjaGlsZHJlbjogW2xhYmVsRWxlbWVudCwgc3dpdGNoRWxlbWVudF0gfSkpO1xufTtcblN3aXRjaC5kaXNwbGF5TmFtZSA9ICdTd2l0Y2gnO1xuZXhwb3J0IGRlZmF1bHQgbWVtbyhTd2l0Y2gpOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
95
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvU3dpdGNoL1N3aXRjaC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU3dpdGNoL1N3aXRjaC50c3giXSwibmFtZXMiOlsiX19yZXN0IiwicyIsImUiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwibWVtbyIsInVzZUNvbnRyb2xsZWRTdGF0ZSIsInVzZUV2ZW50Q2FsbGJhY2siLCJUeXBvZ3JhcGh5Qm9keSIsImRlZmF1bHQiLCJjbGFzc25hbWVzIiwiam9pbkNscyIsIlNXSVRDSF9QUkVGSVhfQ0xTIiwiU1dJVENIX0RFRkFVTFRfTEFCRUxfUExBQ0VNRU5UIiwiU1dJVENIX0xBQkVMX1BMQUNFTUVOVCIsIlNXSVRDSF9UWVBPR1JBUEhZIiwiU3dpdGNoIiwicHJvcHMiLCJfcHJvcHMkY2xhc3NOYW1lIiwiY2xhc3NOYW1lIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsImlkIiwibmFtZSIsImNoZWNrZWQiLCJfcHJvcHMkZGVmYXVsdENoZWNrZWQiLCJkZWZhdWx0Q2hlY2tlZCIsIl9wcm9wcyRkaXNhYmxlZCIsImRpc2FibGVkIiwibGFiZWwiLCJkZXNjcmlwdGlvbiIsIl9wcm9wcyRsYWJlbFBsYWNlbWVudCIsImxhYmVsUGxhY2VtZW50Iiwib25DaGFuZ2UiLCJyZWYiLCJhcmlhTGFiZWwiLCJhcmlhTGFiZWxsZWRCeSIsInJlc3QiLCJfdXNlQ29udHJvbGxlZFN0YXRlIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlubmVyQ2hlY2tlZCIsInNldElubmVyQ2hlY2tlZCIsImNsYXNzZXMiLCJsYWJlbENvbG9yIiwiY29sb3IiLCJkZXNjcmlwdGlvbkNvbG9yIiwiaW5mZXJyZWRBcmlhTGFiZWwiLCJTdHJpbmciLCJ1bmRlZmluZWQiLCJoYW5kbGVDaGFuZ2UiLCJldmVudCIsIm5leHRDaGVja2VkIiwidGFyZ2V0Iiwic3dpdGNoRWxlbWVudCIsImNoaWxkcmVuIiwiYXNzaWduIiwidHlwZSIsInJvbGUiLCJsYWJlbEVsZW1lbnQiLCJzaXplIiwicmlnaHQiLCJkaXNwbGF5TmFtZSJdLCJtYXBwaW5ncyI6IjtBQUFBLElBQUlBLE1BQU0sR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxNQUFNLElBQUssVUFBVUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7RUFDbEQsSUFBSUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUNWLEtBQUssSUFBSUMsQ0FBQyxJQUFJSCxDQUFDLEVBQUUsSUFBSUksTUFBTSxDQUFDQyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDUCxDQUFDLEVBQUVHLENBQUMsQ0FBQyxJQUFJRixDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUMvRUQsQ0FBQyxDQUFDQyxDQUFDLENBQUMsR0FBR0gsQ0FBQyxDQUFDRyxDQUFDLENBQUM7RUFDZixJQUFJSCxDQUFDLElBQUksSUFBSSxJQUFJLE9BQU9JLE1BQU0sQ0FBQ0sscUJBQXFCLEtBQUssVUFBVSxFQUMvRCxLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVQLENBQUMsR0FBR0MsTUFBTSxDQUFDSyxxQkFBcUIsQ0FBQ1QsQ0FBQyxDQUFDLEVBQUVVLENBQUMsR0FBR1AsQ0FBQyxDQUFDUSxNQUFNLEVBQUVELENBQUMsRUFBRSxFQUFFO0lBQ3BFLElBQUlULENBQUMsQ0FBQ08sT0FBTyxDQUFDTCxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJTixNQUFNLENBQUNDLFNBQVMsQ0FBQ08sb0JBQW9CLENBQUNMLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEVBQzFFUixDQUFDLENBQUND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SWUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUMvQlgsY0FBYyxLQUFLbEIsc0JBQXNCLENBQUMrQyxLQUFLLElBQUlsQixPQUFPLENBQUM3QixzQkFBc0IsQ0FBQytDLEtBQUssQ0FBQyxFQUN4RjFDLFNBQVMsQ0FDVixDQUNGO0lBQUFvQyxRQUFBLEVBQUEsQ0FFQUksWUFBWSxFQUNaTCxhQUFhO0VBQUEsQ0FBQSxDQUNSO0FBRVosQ0FBQztBQUVEdEMsTUFBTSxDQUFDOEMsV0FBVyxHQUFHLFFBQVE7QUFFN0IsNEJBQWV6RCxJQUFJLENBQUNXLE1BQU0sQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL1N3aXRjaC9Td2l0Y2guanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VDb250cm9sbGVkU3RhdGUgZnJvbSAnQDFtb25leS9ob29rcy91c2VDb250cm9sbGVkU3RhdGUnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQDFtb25leS9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCB7IFR5cG9ncmFwaHlCb2R5IH0gZnJvbSAnLi4vVHlwb2dyYXBoeSc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMsIGpvaW5DbHMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCAnLi9zdHlsZSc7XG5pbXBvcnQgeyBTV0lUQ0hfUFJFRklYX0NMUywgU1dJVENIX0RFRkFVTFRfTEFCRUxfUExBQ0VNRU5ULCBTV0lUQ0hfTEFCRUxfUExBQ0VNRU5ULCBTV0lUQ0hfVFlQT0dSQVBIWSwgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5leHBvcnQgY29uc3QgU3dpdGNoID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgY2xhc3NOYW1lID0gJycsIHByZWZpeENscyA9IFNXSVRDSF9QUkVGSVhfQ0xTLCBpZCwgbmFtZSwgY2hlY2tlZCwgZGVmYXVsdENoZWNrZWQgPSBmYWxzZSwgZGlzYWJsZWQgPSBmYWxzZSwgbGFiZWwsIGRlc2NyaXB0aW9uLCBsYWJlbFBsYWNlbWVudCA9IFNXSVRDSF9ERUZBVUxUX0xBQkVMX1BMQUNFTUVOVCwgb25DaGFuZ2UsIHJlZiwgJ2FyaWEtbGFiZWwnOiBhcmlhTGFiZWwsICdhcmlhLWxhYmVsbGVkYnknOiBhcmlhTGFiZWxsZWRCeSB9ID0gcHJvcHMsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcImNsYXNzTmFtZVwiLCBcInByZWZpeENsc1wiLCBcImlkXCIsIFwibmFtZVwiLCBcImNoZWNrZWRcIiwgXCJkZWZhdWx0Q2hlY2tlZFwiLCBcImRpc2FibGVkXCIsIFwibGFiZWxcIiwgXCJkZXNjcmlwdGlvblwiLCBcImxhYmVsUGxhY2VtZW50XCIsIFwib25DaGFuZ2VcIiwgXCJyZWZcIiwgJ2FyaWEtbGFiZWwnLCAnYXJpYS1sYWJlbGxlZGJ5J10pO1xuICAgIGNvbnN0IFtpbm5lckNoZWNrZWQsIHNldElubmVyQ2hlY2tlZF0gPSB1c2VDb250cm9sbGVkU3RhdGUoZGVmYXVsdENoZWNrZWQsIGNoZWNrZWQpO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKHByZWZpeENscyk7XG4gICAgY29uc3QgbGFiZWxDb2xvciA9IGRpc2FibGVkID8gU1dJVENIX1RZUE9HUkFQSFkubGFiZWwuY29sb3IuZGlzYWJsZWQgOiBTV0lUQ0hfVFlQT0dSQVBIWS5sYWJlbC5jb2xvci5kZWZhdWx0O1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uQ29sb3IgPSBkaXNhYmxlZCA/IFNXSVRDSF9UWVBPR1JBUEhZLmRlc2NyaXB0aW9uLmNvbG9yLmRpc2FibGVkIDogU1dJVENIX1RZUE9HUkFQSFkuZGVzY3JpcHRpb24uY29sb3IuZGVmYXVsdDtcbiAgICBjb25zdCBpbmZlcnJlZEFyaWFMYWJlbCA9IHR5cGVvZiBsYWJlbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGxhYmVsID09PSAnbnVtYmVyJ1xuICAgICAgICA/IFN0cmluZyhsYWJlbClcbiAgICAgICAgOiB0eXBlb2YgZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBkZXNjcmlwdGlvbiA9PT0gJ251bWJlcidcbiAgICAgICAgICAgID8gU3RyaW5nKGRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGRpc2FibGVkKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBuZXh0Q2hlY2tlZCA9IGV2ZW50LnRhcmdldC5jaGVja2VkO1xuICAgICAgICBzZXRJbm5lckNoZWNrZWQobmV4dENoZWNrZWQpO1xuICAgICAgICBvbkNoYW5nZSA9PT0gbnVsbCB8fCBvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DaGFuZ2UobmV4dENoZWNrZWQpO1xuICAgIH0pO1xuICAgIGNvbnN0IHN3aXRjaEVsZW1lbnQgPSAoX2pzeHMoXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCd0cmFjay13cmFwcGVyJyksIGNoaWxkcmVuOiBbX2pzeChcImlucHV0XCIsIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdpbnB1dCcpLCB0eXBlOiBcImNoZWNrYm94XCIsIHJvbGU6IFwic3dpdGNoXCIsIGlkOiBpZCwgbmFtZTogbmFtZSwgXCJhcmlhLWxhYmVsXCI6IGFyaWFMYWJlbCAhPT0gbnVsbCAmJiBhcmlhTGFiZWwgIT09IHZvaWQgMCA/IGFyaWFMYWJlbCA6IGluZmVycmVkQXJpYUxhYmVsLCBcImFyaWEtbGFiZWxsZWRieVwiOiBhcmlhTGFiZWxsZWRCeSwgZGlzYWJsZWQ6IGRpc2FibGVkLCBjaGVja2VkOiBpbm5lckNoZWNrZWQsIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UgfSkpLCBfanN4KFwic3BhblwiLCB7IFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCIsIGNsYXNzTmFtZTogY2xhc3NlcygndHJhY2snKSwgY2hpbGRyZW46IF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCd0aHVtYicpIH0pIH0pXSB9KSk7XG4gICAgY29uc3QgbGFiZWxFbGVtZW50ID0gKGxhYmVsIHx8IGRlc2NyaXB0aW9uKSAmJiAoX2pzeHMoXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdjb250ZW50JyksIGNoaWxkcmVuOiBbbGFiZWwgJiYgX2pzeChUeXBvZ3JhcGh5Qm9keSwgeyBzaXplOiBTV0lUQ0hfVFlQT0dSQVBIWS5sYWJlbC5zaXplLCBjb2xvcjogbGFiZWxDb2xvciwgY2hpbGRyZW46IGxhYmVsIH0pLCBkZXNjcmlwdGlvbiAmJiBfanN4KFR5cG9ncmFwaHlCb2R5LCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZGVzY3JpcHRpb24nKSwgc2l6ZTogU1dJVENIX1RZUE9HUkFQSFkuZGVzY3JpcHRpb24uc2l6ZSwgY29sb3I6IGRlc2NyaXB0aW9uQ29sb3IsIGNoaWxkcmVuOiBkZXNjcmlwdGlvbiB9KV0gfSkpO1xuICAgIHJldHVybiAoX2pzeHMoXCJsYWJlbFwiLCB7IHJlZjogcmVmLCBjbGFzc05hbWU6IGNsYXNzZXModW5kZWZpbmVkLCBqb2luQ2xzKGlubmVyQ2hlY2tlZCAmJiBjbGFzc2VzKCdjaGVja2VkJyksIGRpc2FibGVkICYmIGNsYXNzZXMoJ2Rpc2FibGVkJyksIGxhYmVsUGxhY2VtZW50ID09PSBTV0lUQ0hfTEFCRUxfUExBQ0VNRU5ULnJpZ2h0ICYmIGNsYXNzZXMoU1dJVENIX0xBQkVMX1BMQUNFTUVOVC5yaWdodCksIGNsYXNzTmFtZSkpLCBjaGlsZHJlbjogW2xhYmVsRWxlbWVudCwgc3dpdGNoRWxlbWVudF0gfSkpO1xufTtcblN3aXRjaC5kaXNwbGF5TmFtZSA9ICdTd2l0Y2gnO1xuZXhwb3J0IGRlZmF1bHQgbWVtbyhTd2l0Y2gpOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -1,41 +1,27 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { forwardRef, memo } from 'react';
3
3
  import './style';
4
4
  import { InternalRcTable } from './internal';
5
5
  import { useTableSetup } from './core/useTableSetup';
6
+ import { TableShell } from './renderers/TableShell';
6
7
  var TableInner = function TableInner(props, ref) {
7
8
  var setup = useTableSetup(props);
8
- var prefixCls = setup.prefixCls,
9
- wrapperClassName = setup.wrapperClassName,
10
- tableClassName = setup.tableClassName,
11
- loading = setup.loading,
12
- loadingIndicator = setup.loadingIndicator,
13
- renderedColumns = setup.renderedColumns,
14
- currentDataSource = setup.currentDataSource,
15
- mergedExpandable = setup.mergedExpandable,
16
- emptyText = setup.emptyText,
17
- wrapperHtmlProps = setup.wrapperHtmlProps,
18
- forwardedKernelProps = setup.forwardedKernelProps,
19
- paginationNode = setup.paginationNode;
20
- return _jsxs("div", Object.assign({}, wrapperHtmlProps, {
21
- className: wrapperClassName,
22
- children: [loading && _jsx("div", {
23
- className: "".concat(prefixCls, "-loading-overlay"),
24
- children: loadingIndicator
25
- }), _jsx(InternalRcTable, Object.assign({}, forwardedKernelProps, {
9
+ return _jsx(TableShell, {
10
+ setup: setup,
11
+ children: _jsx(InternalRcTable, Object.assign({}, setup.forwardedKernelProps, {
26
12
  ref: ref,
27
13
  scroll: props.scroll,
28
- prefixCls: prefixCls,
29
- className: tableClassName,
30
- columns: renderedColumns,
31
- data: currentDataSource,
32
- emptyText: emptyText,
33
- expandable: mergedExpandable
34
- })), paginationNode]
35
- }));
14
+ prefixCls: setup.prefixCls,
15
+ className: setup.tableClassName,
16
+ columns: setup.renderedColumns,
17
+ data: setup.currentDataSource,
18
+ emptyText: setup.emptyText,
19
+ expandable: setup.mergedExpandable
20
+ }))
21
+ });
36
22
  };
37
23
  var TableBase = /*#__PURE__*/forwardRef(TableInner);
38
24
  TableBase.displayName = 'Table';
39
25
  export var Table = /*#__PURE__*/memo(TableBase);
40
26
  export default Table;
41
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvVGFibGUuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1RhYmxlL1RhYmxlLnRzeCJdLCJuYW1lcyI6WyJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiZm9yd2FyZFJlZiIsIm1lbW8iLCJJbnRlcm5hbFJjVGFibGUiLCJ1c2VUYWJsZVNldHVwIiwiVGFibGVJbm5lciIsInByb3BzIiwicmVmIiwic2V0dXAiLCJwcmVmaXhDbHMiLCJ3cmFwcGVyQ2xhc3NOYW1lIiwidGFibGVDbGFzc05hbWUiLCJsb2FkaW5nIiwibG9hZGluZ0luZGljYXRvciIsInJlbmRlcmVkQ29sdW1ucyIsImN1cnJlbnREYXRhU291cmNlIiwibWVyZ2VkRXhwYW5kYWJsZSIsImVtcHR5VGV4dCIsIndyYXBwZXJIdG1sUHJvcHMiLCJmb3J3YXJkZWRLZXJuZWxQcm9wcyIsInBhZ2luYXRpb25Ob2RlIiwiT2JqZWN0IiwiYXNzaWduIiwiY2xhc3NOYW1lIiwiY2hpbGRyZW4iLCJjb25jYXQiLCJzY3JvbGwiLCJjb2x1bW5zIiwiZGF0YSIsImV4cGFuZGFibGUiLCJUYWJsZUJhc2UiLCJkaXNwbGF5TmFtZSIsIlRhYmxlIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxHQUFHLElBQUlDLElBQUksRUFBRUMsSUFBSSxJQUFJQyxLQUFLLFFBQVEsbUJBQW1CO0FDQTlELFNBQVNDLFVBQVUsRUFBRUMsSUFBSSxRQUFxQyxPQUFPO0FBQ3JFLE9BQU8sU0FBUztBQUNoQixTQUFTQyxlQUFlLFFBQVEsWUFBWTtBQUM1QyxTQUFTQyxhQUFhLFFBQVEsc0JBQXNCO0FBSXBELElBQU1DLFVBQVUsR0FBRyxTQUFiQSxVQUFVQSxDQUNkQyxLQUFvQixFQUNwQkMsR0FBa0IsRUFDaEI7RUFDRixJQUFNQyxLQUFLLEdBQUdKLGFBQWEsQ0FBQ0UsS0FBSyxDQUFDO0VBQ2xDLElBQ0VHLFNBQVMsR0FZUEQsS0FBSyxDQVpQQyxTQUFTO0lBQ1RDLGdCQUFnQixHQVdkRixLQUFLLENBWFBFLGdCQUFnQjtJQUNoQkMsY0FBYyxHQVVaSCxLQUFLLENBVlBHLGNBQWM7SUFDZEMsT0FBTyxHQVNMSixLQUFLLENBVFBJLE9BQU87SUFDUEMsZ0JBQWdCLEdBUWRMLEtBQUssQ0FSUEssZ0JBQWdCO0lBQ2hCQyxlQUFlLEdBT2JOLEtBQUssQ0FQUE0sZUFBZTtJQUNmQyxpQkFBaUIsR0FNZlAsS0FBSyxDQU5QTyxpQkFBaUI7SUFDakJDLGdCQUFnQixHQUtkUixLQUFLLENBTFBRLGdCQUFnQjtJQUNoQkMsU0FBUyxHQUlQVCxLQUFLLENBSlBTLFNBQVM7SUFDVEMsZ0JBQWdCLEdBR2RWLEtBQUssQ0FIUFUsZ0JBQWdCO0lBQ2hCQyxvQkFBb0IsR0FFbEJYLEtBQUssQ0FGUFcsb0JBQW9CO0lBQ3BCQyxjQUFjLEdBQ1paLEtBQUssQ0FEUFksY0FBYztFQUdoQixPQUNFcEIsS0FBQSxDQUFBLEtBQUEsRUFBQXFCLE1BQUEsQ0FBQUMsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFTSixnQkFBZ0IsRUFBQTtJQUFFSyxTQUFTLEVBQUViLGdCQUFnQjtJQUFBYyxRQUFBLEVBQUEsQ0FDbkRaLE9BQU8sSUFDTmQsSUFBQSxDQUFBLEtBQUEsRUFBQTtNQUFLeUIsU0FBUyxLQUFBRSxNQUFBLENBQUtoQixTQUFTLHFCQUFrQjtNQUFBZSxRQUFBLEVBQzNDWDtJQUFnQixDQUFBLENBRXBCLEVBQ0RmLElBQUEsQ0FBQ0ssZUFBZSxFQUFBa0IsTUFBQSxDQUFBQyxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQ1ZILG9CQUFvQixFQUFBO01BQ3hCWixHQUFHLEVBQUVBLEdBQXFCO01BQzFCbUIsTUFBTSxFQUFFcEIsS0FBSyxDQUFDb0IsTUFBTTtNQUNwQmpCLFNBQVMsRUFBRUEsU0FBUztNQUNwQmMsU0FBUyxFQUFFWixjQUFjO01BQ3pCZ0IsT0FBTyxFQUFFYixlQUFlO01BQ3hCYyxJQUFJLEVBQUViLGlCQUFpQjtNQUN2QkUsU0FBUyxFQUFFQSxTQUFTO01BQ3BCWSxVQUFVLEVBQUViO0lBQWdCLENBQUEsQ0FBQSxDQUM1QixFQUNESSxjQUFjO0VBQUEsQ0FBQSxDQUFBLENBQ1g7QUFFVixDQUFDO0FBTUQsSUFBTVUsU0FBUyxnQkFBRzdCLFVBQVUsQ0FBQ0ksVUFBVSxDQUF3QjtBQUUvRHlCLFNBQVMsQ0FBQ0MsV0FBVyxHQUFHLE9BQU87QUFFL0IsT0FBTyxJQUFNQyxLQUFLLGdCQUFHOUIsSUFBSSxDQUFDNEIsU0FBUyxDQUF3QjtBQUUzRCxlQUFlRSxLQUFLIiwiZmlsZSI6ImNvbXBvbmVudHMvVGFibGUvVGFibGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiwgbWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCAnLi9zdHlsZSc7XG5pbXBvcnQgeyBJbnRlcm5hbFJjVGFibGUgfSBmcm9tICcuL2ludGVybmFsJztcbmltcG9ydCB7IHVzZVRhYmxlU2V0dXAgfSBmcm9tICcuL2NvcmUvdXNlVGFibGVTZXR1cCc7XG5jb25zdCBUYWJsZUlubmVyID0gKHByb3BzLCByZWYpID0+IHtcbiAgICBjb25zdCBzZXR1cCA9IHVzZVRhYmxlU2V0dXAocHJvcHMpO1xuICAgIGNvbnN0IHsgcHJlZml4Q2xzLCB3cmFwcGVyQ2xhc3NOYW1lLCB0YWJsZUNsYXNzTmFtZSwgbG9hZGluZywgbG9hZGluZ0luZGljYXRvciwgcmVuZGVyZWRDb2x1bW5zLCBjdXJyZW50RGF0YVNvdXJjZSwgbWVyZ2VkRXhwYW5kYWJsZSwgZW1wdHlUZXh0LCB3cmFwcGVySHRtbFByb3BzLCBmb3J3YXJkZWRLZXJuZWxQcm9wcywgcGFnaW5hdGlvbk5vZGUsIH0gPSBzZXR1cDtcbiAgICByZXR1cm4gKF9qc3hzKFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe30sIHdyYXBwZXJIdG1sUHJvcHMsIHsgY2xhc3NOYW1lOiB3cmFwcGVyQ2xhc3NOYW1lLCBjaGlsZHJlbjogW2xvYWRpbmcgJiYgKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGAke3ByZWZpeENsc30tbG9hZGluZy1vdmVybGF5YCwgY2hpbGRyZW46IGxvYWRpbmdJbmRpY2F0b3IgfSkpLCBfanN4KEludGVybmFsUmNUYWJsZSwgT2JqZWN0LmFzc2lnbih7fSwgZm9yd2FyZGVkS2VybmVsUHJvcHMsIHsgcmVmOiByZWYsIHNjcm9sbDogcHJvcHMuc2Nyb2xsLCBwcmVmaXhDbHM6IHByZWZpeENscywgY2xhc3NOYW1lOiB0YWJsZUNsYXNzTmFtZSwgY29sdW1uczogcmVuZGVyZWRDb2x1bW5zLCBkYXRhOiBjdXJyZW50RGF0YVNvdXJjZSwgZW1wdHlUZXh0OiBlbXB0eVRleHQsIGV4cGFuZGFibGU6IG1lcmdlZEV4cGFuZGFibGUgfSkpLCBwYWdpbmF0aW9uTm9kZV0gfSkpKTtcbn07XG5jb25zdCBUYWJsZUJhc2UgPSBmb3J3YXJkUmVmKFRhYmxlSW5uZXIpO1xuVGFibGVCYXNlLmRpc3BsYXlOYW1lID0gJ1RhYmxlJztcbmV4cG9ydCBjb25zdCBUYWJsZSA9IG1lbW8oVGFibGVCYXNlKTtcbmV4cG9ydCBkZWZhdWx0IFRhYmxlOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
27
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvVGFibGUuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1RhYmxlL1RhYmxlLnRzeCJdLCJuYW1lcyI6WyJqc3giLCJfanN4IiwiZm9yd2FyZFJlZiIsIm1lbW8iLCJJbnRlcm5hbFJjVGFibGUiLCJ1c2VUYWJsZVNldHVwIiwiVGFibGVTaGVsbCIsIlRhYmxlSW5uZXIiLCJwcm9wcyIsInJlZiIsInNldHVwIiwiY2hpbGRyZW4iLCJPYmplY3QiLCJhc3NpZ24iLCJmb3J3YXJkZWRLZXJuZWxQcm9wcyIsInNjcm9sbCIsInByZWZpeENscyIsImNsYXNzTmFtZSIsInRhYmxlQ2xhc3NOYW1lIiwiY29sdW1ucyIsInJlbmRlcmVkQ29sdW1ucyIsImRhdGEiLCJjdXJyZW50RGF0YVNvdXJjZSIsImVtcHR5VGV4dCIsImV4cGFuZGFibGUiLCJtZXJnZWRFeHBhbmRhYmxlIiwiVGFibGVCYXNlIiwiZGlzcGxheU5hbWUiLCJUYWJsZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsR0FBRyxJQUFJQyxJQUFJLFFBQVEsbUJBQW1CO0FDQS9DLFNBQVNDLFVBQVUsRUFBRUMsSUFBSSxRQUFxQyxPQUFPO0FBQ3JFLE9BQU8sU0FBUztBQUNoQixTQUFTQyxlQUFlLFFBQVEsWUFBWTtBQUM1QyxTQUFTQyxhQUFhLFFBQVEsc0JBQXNCO0FBQ3BELFNBQVNDLFVBQVUsUUFBUSx3QkFBd0I7QUFJbkQsSUFBTUMsVUFBVSxHQUFHLFNBQWJBLFVBQVVBLENBQ2RDLEtBQW9CLEVBQ3BCQyxHQUFrQixFQUNoQjtFQUNGLElBQU1DLEtBQUssR0FBR0wsYUFBYSxDQUFDRyxLQUFLLENBQUM7RUFFbEMsT0FDRVAsSUFBQSxDQUFDSyxVQUFVLEVBQUE7SUFBQ0ksS0FBSyxFQUFFQSxLQUFLO0lBQUFDLFFBQUEsRUFDdEJWLElBQUEsQ0FBQ0csZUFBZSxFQUFBUSxNQUFBLENBQUFDLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFDVkgsS0FBSyxDQUFDSSxvQkFBb0IsRUFBQTtNQUM5QkwsR0FBRyxFQUFFQSxHQUFxQjtNQUMxQk0sTUFBTSxFQUFFUCxLQUFLLENBQUNPLE1BQU07TUFDcEJDLFNBQVMsRUFBRU4sS0FBSyxDQUFDTSxTQUFTO01BQzFCQyxTQUFTLEVBQUVQLEtBQUssQ0FBQ1EsY0FBYztNQUMvQkMsT0FBTyxFQUFFVCxLQUFLLENBQUNVLGVBQWU7TUFDOUJDLElBQUksRUFBRVgsS0FBSyxDQUFDWSxpQkFBaUI7TUFDN0JDLFNBQVMsRUFBRWIsS0FBSyxDQUFDYSxTQUFTO01BQzFCQyxVQUFVLEVBQUVkLEtBQUssQ0FBQ2U7SUFBZ0IsQ0FBQSxDQUFBO0VBQ2xDLENBQUEsQ0FDUztBQUVqQixDQUFDO0FBTUQsSUFBTUMsU0FBUyxnQkFBR3hCLFVBQVUsQ0FBQ0ssVUFBVSxDQUF3QjtBQUUvRG1CLFNBQVMsQ0FBQ0MsV0FBVyxHQUFHLE9BQU87QUFFL0IsT0FBTyxJQUFNQyxLQUFLLGdCQUFHekIsSUFBSSxDQUFDdUIsU0FBUyxDQUF3QjtBQUUzRCxlQUFlRSxLQUFLIiwiZmlsZSI6ImNvbXBvbmVudHMvVGFibGUvVGFibGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiwgbWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCAnLi9zdHlsZSc7XG5pbXBvcnQgeyBJbnRlcm5hbFJjVGFibGUgfSBmcm9tICcuL2ludGVybmFsJztcbmltcG9ydCB7IHVzZVRhYmxlU2V0dXAgfSBmcm9tICcuL2NvcmUvdXNlVGFibGVTZXR1cCc7XG5pbXBvcnQgeyBUYWJsZVNoZWxsIH0gZnJvbSAnLi9yZW5kZXJlcnMvVGFibGVTaGVsbCc7XG5jb25zdCBUYWJsZUlubmVyID0gKHByb3BzLCByZWYpID0+IHtcbiAgICBjb25zdCBzZXR1cCA9IHVzZVRhYmxlU2V0dXAocHJvcHMpO1xuICAgIHJldHVybiAoX2pzeChUYWJsZVNoZWxsLCB7IHNldHVwOiBzZXR1cCwgY2hpbGRyZW46IF9qc3goSW50ZXJuYWxSY1RhYmxlLCBPYmplY3QuYXNzaWduKHt9LCBzZXR1cC5mb3J3YXJkZWRLZXJuZWxQcm9wcywgeyByZWY6IHJlZiwgc2Nyb2xsOiBwcm9wcy5zY3JvbGwsIHByZWZpeENsczogc2V0dXAucHJlZml4Q2xzLCBjbGFzc05hbWU6IHNldHVwLnRhYmxlQ2xhc3NOYW1lLCBjb2x1bW5zOiBzZXR1cC5yZW5kZXJlZENvbHVtbnMsIGRhdGE6IHNldHVwLmN1cnJlbnREYXRhU291cmNlLCBlbXB0eVRleHQ6IHNldHVwLmVtcHR5VGV4dCwgZXhwYW5kYWJsZTogc2V0dXAubWVyZ2VkRXhwYW5kYWJsZSB9KSkgfSkpO1xufTtcbmNvbnN0IFRhYmxlQmFzZSA9IGZvcndhcmRSZWYoVGFibGVJbm5lcik7XG5UYWJsZUJhc2UuZGlzcGxheU5hbWUgPSAnVGFibGUnO1xuZXhwb3J0IGNvbnN0IFRhYmxlID0gbWVtbyhUYWJsZUJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgVGFibGU7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -6,48 +6,38 @@ var __rest = this && this.__rest || function (s, e) {
6
6
  }
7
7
  return t;
8
8
  };
9
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ import { jsx as _jsx } from "react/jsx-runtime";
10
10
  import { forwardRef, memo } from 'react';
11
11
  import { InternalRcVirtualTable as InternalRcVirtualTableRaw } from './internal';
12
12
  import { useTableSetup } from './core/useTableSetup';
13
+ import { TableShell } from './renderers/TableShell';
13
14
  var InternalRcVirtualTable = InternalRcVirtualTableRaw;
14
15
  var VirtualTableInner = function VirtualTableInner(props, ref) {
16
+ // `scroll` / `listItemHeight` are VirtualTable-specific and stripped before
17
+ // setup so they don't leak onto the wrapper div via `wrapperHtmlProps`. The
18
+ // virtual kernel needs the narrow numeric `scroll`, so it's passed explicitly
19
+ // rather than through the shared `forwardedKernelProps`.
15
20
  var scroll = props.scroll,
16
21
  listItemHeight = props.listItemHeight,
17
22
  rest = __rest(props, ["scroll", "listItemHeight"]);
18
23
  var setup = useTableSetup(rest);
19
- var prefixCls = setup.prefixCls,
20
- wrapperClassName = setup.wrapperClassName,
21
- tableClassName = setup.tableClassName,
22
- loading = setup.loading,
23
- loadingIndicator = setup.loadingIndicator,
24
- renderedColumns = setup.renderedColumns,
25
- currentDataSource = setup.currentDataSource,
26
- mergedExpandable = setup.mergedExpandable,
27
- emptyText = setup.emptyText,
28
- wrapperHtmlProps = setup.wrapperHtmlProps,
29
- forwardedKernelProps = setup.forwardedKernelProps,
30
- paginationNode = setup.paginationNode;
31
- return _jsxs("div", Object.assign({}, wrapperHtmlProps, {
32
- className: wrapperClassName,
33
- children: [loading && _jsx("div", {
34
- className: "".concat(prefixCls, "-loading-overlay"),
35
- children: loadingIndicator
36
- }), _jsx(InternalRcVirtualTable, Object.assign({}, forwardedKernelProps, {
24
+ return _jsx(TableShell, {
25
+ setup: setup,
26
+ children: _jsx(InternalRcVirtualTable, Object.assign({}, setup.forwardedKernelProps, {
37
27
  ref: ref,
38
- prefixCls: prefixCls,
39
- className: tableClassName,
28
+ prefixCls: setup.prefixCls,
29
+ className: setup.tableClassName,
40
30
  scroll: scroll,
41
31
  listItemHeight: listItemHeight,
42
- columns: renderedColumns,
43
- data: currentDataSource,
44
- emptyText: emptyText,
45
- expandable: mergedExpandable
46
- })), paginationNode]
47
- }));
32
+ columns: setup.renderedColumns,
33
+ data: setup.currentDataSource,
34
+ emptyText: setup.emptyText,
35
+ expandable: setup.mergedExpandable
36
+ }))
37
+ });
48
38
  };
49
39
  var VirtualTableBase = /*#__PURE__*/forwardRef(VirtualTableInner);
50
40
  VirtualTableBase.displayName = 'VirtualTable';
51
41
  export var VirtualTable = /*#__PURE__*/memo(VirtualTableBase);
52
42
  export default VirtualTable;
53
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvVmlydHVhbFRhYmxlLmpzIiwiY29tcG9uZW50cy9zcmMvY29tcG9uZW50cy9UYWJsZS9WaXJ0dWFsVGFibGUudHN4Il0sIm5hbWVzIjpbIl9fcmVzdCIsInMiLCJlIiwidCIsInAiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiaSIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsImZvcndhcmRSZWYiLCJtZW1vIiwiSW50ZXJuYWxSY1ZpcnR1YWxUYWJsZSIsIkludGVybmFsUmNWaXJ0dWFsVGFibGVSYXciLCJ1c2VUYWJsZVNldHVwIiwiVmlydHVhbFRhYmxlSW5uZXIiLCJwcm9wcyIsInJlZiIsInNjcm9sbCIsImxpc3RJdGVtSGVpZ2h0IiwicmVzdCIsInNldHVwIiwicHJlZml4Q2xzIiwid3JhcHBlckNsYXNzTmFtZSIsInRhYmxlQ2xhc3NOYW1lIiwibG9hZGluZyIsImxvYWRpbmdJbmRpY2F0b3IiLCJyZW5kZXJlZENvbHVtbnMiLCJjdXJyZW50RGF0YVNvdXJjZSIsIm1lcmdlZEV4cGFuZGFibGUiLCJlbXB0eVRleHQiLCJ3cmFwcGVySHRtbFByb3BzIiwiZm9yd2FyZGVkS2VybmVsUHJvcHMiLCJwYWdpbmF0aW9uTm9kZSIsImFzc2lnbiIsImNsYXNzTmFtZSIsImNoaWxkcmVuIiwiY29uY2F0IiwiY29sdW1ucyIsImRhdGEiLCJleHBhbmRhYmxlIiwiVmlydHVhbFRhYmxlQmFzZSIsImRpc3BsYXlOYW1lIiwiVmlydHVhbFRhYmxlIl0sIm1hcHBpbmdzIjoiQUFBQSxJQUFJQSxNQUFNLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsTUFBTSxJQUFLLFVBQVVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2xELElBQUlDLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDVixLQUFLLElBQUlDLENBQUMsSUFBSUgsQ0FBQyxFQUFFLElBQUlJLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUMsSUFBSUYsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDL0VELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUdILENBQUMsQ0FBQ0csQ0FBQyxDQUFDO0VBQ2YsSUFBSUgsQ0FBQyxJQUFJLElBQUksSUFBSSxPQUFPSSxNQUFNLENBQUNLLHFCQUFxQixLQUFLLFVBQVUsRUFDL0QsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFUCxDQUFDLEdBQUdDLE1BQU0sQ0FBQ0sscUJBQXFCLENBQUNULENBQUMsQ0FBQyxFQUFFVSxDQUFDLEdBQUdQLENBQUMsQ0FBQ1EsTUFBTSxFQUFFRCxDQUFDLEVBQUUsRUFBRTtJQUNwRSxJQUFJVCxDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSU4sTUFBTSxDQUFDQyxTQUFTLENBQUNPLG9CQUFvQixDQUFDTCxJQUFJLENBQUNQLENBQUMsRUFBRUcsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxFQUMxRVIsQ0FBQyxDQUFDQyxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEdBQUdWLENBQUMsQ0FBQ0csQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQztFQUN6QjtFQUNKLE9BQU9SLENBQUM7QUFDWixDQUFDO0FBQ0QsU0FBU1csR0FBRyxJQUFJQyxJQUFJLEVBQUVDLElBQUksSUFBSUMsS0FBSyxRQUFRLG1CQUFtQjtBQ1g5RCxTQUFTQyxVQUFVLEVBQUVDLElBQUksUUFBcUMsT0FBTztBQUNyRSxTQUFTQyxzQkFBc0IsSUFBSUMseUJBQXlCLFFBQVEsWUFBWTtBQUVoRixTQUFTQyxhQUFhLFFBQVEsc0JBQXNCO0FBWXBELElBQU1GLHNCQUFzQixHQUFHQyx5QkFBbUU7QUFFbEcsSUFBTUUsaUJBQWlCLEdBQUcsU0FBcEJBLGlCQUFpQkEsQ0FDckJDLEtBQTJCLEVBQzNCQyxHQUFrQixFQUNoQjtFQUNGLElBQVFDLE1BQU0sR0FBOEJGLEtBQUssQ0FBekNFLE1BQU07SUFBRUMsY0FBYyxHQUFjSCxLQUFLLENBQWpDRyxjQUFjO0lBQUtDLElBQUksR0FBQTVCLE1BQUEsQ0FBS3dCLEtBQUssRUFBM0MsQ0FBQSxRQUFBLEVBQUEsZ0JBQUEsQ0FBbUMsQ0FBUTtFQUNqRCxJQUFNSyxLQUFLLEdBQUdQLGFBQWEsQ0FBSU0sSUFBSSxDQUFDO0VBQ3BDLElBQ0VFLFNBQVMsR0FZUEQsS0FBSyxDQVpQQyxTQUFTO0lBQ1RDLGdCQUFnQixHQVdkRixLQUFLLENBWFBFLGdCQUFnQjtJQUNoQkMsY0FBYyxHQVVaSCxLQUFLLENBVlBHLGNBQWM7SUFDZEMsT0FBTyxHQVNMSixLQUFLLENBVFBJLE9BQU87SUFDUEMsZ0JBQWdCLEdBUWRMLEtBQUssQ0FSUEssZ0JBQWdCO0lBQ2hCQyxlQUFlLEdBT2JOLEtBQUssQ0FQUE0sZUFBZTtJQUNmQyxpQkFBaUIsR0FNZlAsS0FBSyxDQU5QTyxpQkFBaUI7SUFDakJDLGdCQUFnQixHQUtkUixLQUFLLENBTFBRLGdCQUFnQjtJQUNoQkMsU0FBUyxHQUlQVCxLQUFLLENBSlBTLFNBQVM7SUFDVEMsZ0JBQWdCLEdBR2RWLEtBQUssQ0FIUFUsZ0JBQWdCO0lBQ2hCQyxvQkFBb0IsR0FFbEJYLEtBQUssQ0FGUFcsb0JBQW9CO0lBQ3BCQyxjQUFjLEdBQ1paLEtBQUssQ0FEUFksY0FBYztFQUdoQixPQUNFeEIsS0FBQSxDQUFBLEtBQUEsRUFBQVosTUFBQSxDQUFBcUMsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFTSCxnQkFBZ0IsRUFBQTtJQUFFSSxTQUFTLEVBQUVaLGdCQUFnQjtJQUFBYSxRQUFBLEVBQUEsQ0FDbkRYLE9BQU8sSUFDTmxCLElBQUEsQ0FBQSxLQUFBLEVBQUE7TUFBSzRCLFNBQVMsS0FBQUUsTUFBQSxDQUFLZixTQUFTLHFCQUFrQjtNQUFBYyxRQUFBLEVBQzNDVjtJQUFnQixDQUFBLENBRXBCLEVBQ0RuQixJQUFBLENBQUNLLHNCQUFzQixFQUFBZixNQUFBLENBQUFxQyxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQ2pCRixvQkFBb0IsRUFBQTtNQUN4QmYsR0FBRyxFQUFFQSxHQUFxQjtNQUMxQkssU0FBUyxFQUFFQSxTQUFTO01BQ3BCYSxTQUFTLEVBQUVYLGNBQWM7TUFDekJOLE1BQU0sRUFBRUEsTUFBTTtNQUNkQyxjQUFjLEVBQUVBLGNBQWM7TUFDOUJtQixPQUFPLEVBQUVYLGVBQWU7TUFDeEJZLElBQUksRUFBRVgsaUJBQWlCO01BQ3ZCRSxTQUFTLEVBQUVBLFNBQVM7TUFDcEJVLFVBQVUsRUFBRVg7SUFBZ0IsQ0FBQSxDQUFBLENBQzVCLEVBQ0RJLGNBQWM7RUFBQSxDQUFBLENBQUEsQ0FDWDtBQUVWLENBQUM7QUFNRCxJQUFNUSxnQkFBZ0IsZ0JBQUcvQixVQUFVLENBQUNLLGlCQUFpQixDQUErQjtBQUVwRjBCLGdCQUFnQixDQUFDQyxXQUFXLEdBQUcsY0FBYztBQUU3QyxPQUFPLElBQU1DLFlBQVksZ0JBQUdoQyxJQUFJLENBQUM4QixnQkFBZ0IsQ0FBK0I7QUFFaEYsZUFBZUUsWUFBWSIsImZpbGUiOiJjb21wb25lbnRzL1RhYmxlL1ZpcnR1YWxUYWJsZS5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCBtZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSW50ZXJuYWxSY1ZpcnR1YWxUYWJsZSBhcyBJbnRlcm5hbFJjVmlydHVhbFRhYmxlUmF3IH0gZnJvbSAnLi9pbnRlcm5hbCc7XG5pbXBvcnQgeyB1c2VUYWJsZVNldHVwIH0gZnJvbSAnLi9jb3JlL3VzZVRhYmxlU2V0dXAnO1xuY29uc3QgSW50ZXJuYWxSY1ZpcnR1YWxUYWJsZSA9IEludGVybmFsUmNWaXJ0dWFsVGFibGVSYXc7XG5jb25zdCBWaXJ0dWFsVGFibGVJbm5lciA9IChwcm9wcywgcmVmKSA9PiB7XG4gICAgY29uc3QgeyBzY3JvbGwsIGxpc3RJdGVtSGVpZ2h0IH0gPSBwcm9wcywgcmVzdCA9IF9fcmVzdChwcm9wcywgW1wic2Nyb2xsXCIsIFwibGlzdEl0ZW1IZWlnaHRcIl0pO1xuICAgIGNvbnN0IHNldHVwID0gdXNlVGFibGVTZXR1cChyZXN0KTtcbiAgICBjb25zdCB7IHByZWZpeENscywgd3JhcHBlckNsYXNzTmFtZSwgdGFibGVDbGFzc05hbWUsIGxvYWRpbmcsIGxvYWRpbmdJbmRpY2F0b3IsIHJlbmRlcmVkQ29sdW1ucywgY3VycmVudERhdGFTb3VyY2UsIG1lcmdlZEV4cGFuZGFibGUsIGVtcHR5VGV4dCwgd3JhcHBlckh0bWxQcm9wcywgZm9yd2FyZGVkS2VybmVsUHJvcHMsIHBhZ2luYXRpb25Ob2RlLCB9ID0gc2V0dXA7XG4gICAgcmV0dXJuIChfanN4cyhcImRpdlwiLCBPYmplY3QuYXNzaWduKHt9LCB3cmFwcGVySHRtbFByb3BzLCB7IGNsYXNzTmFtZTogd3JhcHBlckNsYXNzTmFtZSwgY2hpbGRyZW46IFtsb2FkaW5nICYmIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBgJHtwcmVmaXhDbHN9LWxvYWRpbmctb3ZlcmxheWAsIGNoaWxkcmVuOiBsb2FkaW5nSW5kaWNhdG9yIH0pKSwgX2pzeChJbnRlcm5hbFJjVmlydHVhbFRhYmxlLCBPYmplY3QuYXNzaWduKHt9LCBmb3J3YXJkZWRLZXJuZWxQcm9wcywgeyByZWY6IHJlZiwgcHJlZml4Q2xzOiBwcmVmaXhDbHMsIGNsYXNzTmFtZTogdGFibGVDbGFzc05hbWUsIHNjcm9sbDogc2Nyb2xsLCBsaXN0SXRlbUhlaWdodDogbGlzdEl0ZW1IZWlnaHQsIGNvbHVtbnM6IHJlbmRlcmVkQ29sdW1ucywgZGF0YTogY3VycmVudERhdGFTb3VyY2UsIGVtcHR5VGV4dDogZW1wdHlUZXh0LCBleHBhbmRhYmxlOiBtZXJnZWRFeHBhbmRhYmxlIH0pKSwgcGFnaW5hdGlvbk5vZGVdIH0pKSk7XG59O1xuY29uc3QgVmlydHVhbFRhYmxlQmFzZSA9IGZvcndhcmRSZWYoVmlydHVhbFRhYmxlSW5uZXIpO1xuVmlydHVhbFRhYmxlQmFzZS5kaXNwbGF5TmFtZSA9ICdWaXJ0dWFsVGFibGUnO1xuZXhwb3J0IGNvbnN0IFZpcnR1YWxUYWJsZSA9IG1lbW8oVmlydHVhbFRhYmxlQmFzZSk7XG5leHBvcnQgZGVmYXVsdCBWaXJ0dWFsVGFibGU7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
43
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvVmlydHVhbFRhYmxlLmpzIiwiY29tcG9uZW50cy9zcmMvY29tcG9uZW50cy9UYWJsZS9WaXJ0dWFsVGFibGUudHN4Il0sIm5hbWVzIjpbIl9fcmVzdCIsInMiLCJlIiwidCIsInAiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiaSIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwianN4IiwiX2pzeCIsImZvcndhcmRSZWYiLCJtZW1vIiwiSW50ZXJuYWxSY1ZpcnR1YWxUYWJsZSIsIkludGVybmFsUmNWaXJ0dWFsVGFibGVSYXciLCJ1c2VUYWJsZVNldHVwIiwiVGFibGVTaGVsbCIsIlZpcnR1YWxUYWJsZUlubmVyIiwicHJvcHMiLCJyZWYiLCJzY3JvbGwiLCJsaXN0SXRlbUhlaWdodCIsInJlc3QiLCJzZXR1cCIsImNoaWxkcmVuIiwiYXNzaWduIiwiZm9yd2FyZGVkS2VybmVsUHJvcHMiLCJwcmVmaXhDbHMiLCJjbGFzc05hbWUiLCJ0YWJsZUNsYXNzTmFtZSIsImNvbHVtbnMiLCJyZW5kZXJlZENvbHVtbnMiLCJkYXRhIiwiY3VycmVudERhdGFTb3VyY2UiLCJlbXB0eVRleHQiLCJleHBhbmRhYmxlIiwibWVyZ2VkRXhwYW5kYWJsZSIsIlZpcnR1YWxUYWJsZUJhc2UiLCJkaXNwbGF5TmFtZSIsIlZpcnR1YWxUYWJsZSJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsTUFBTSxHQUFJLElBQUksSUFBSSxJQUFJLENBQUNBLE1BQU0sSUFBSyxVQUFVQyxDQUFDLEVBQUVDLENBQUMsRUFBRTtFQUNsRCxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQ1YsS0FBSyxJQUFJQyxDQUFDLElBQUlILENBQUMsRUFBRSxJQUFJSSxNQUFNLENBQUNDLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNQLENBQUMsRUFBRUcsQ0FBQyxDQUFDLElBQUlGLENBQUMsQ0FBQ08sT0FBTyxDQUFDTCxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQy9FRCxDQUFDLENBQUNDLENBQUMsQ0FBQyxHQUFHSCxDQUFDLENBQUNHLENBQUMsQ0FBQztFQUNmLElBQUlILENBQUMsSUFBSSxJQUFJLElBQUksT0FBT0ksTUFBTSxDQUFDSyxxQkFBcUIsS0FBSyxVQUFVLEVBQy9ELEtBQUssSUFBSUMsQ0FBQyxHQUFHLENBQUMsRUFBRVAsQ0FBQyxHQUFHQyxNQUFNLENBQUNLLHFCQUFxQixDQUFDVCxDQUFDLENBQUMsRUFBRVUsQ0FBQyxHQUFHUCxDQUFDLENBQUNRLE1BQU0sRUFBRUQsQ0FBQyxFQUFFLEVBQUU7SUFDcEUsSUFBSVQsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUlOLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDTyxvQkFBb0IsQ0FBQ0wsSUFBSSxDQUFDUCxDQUFDLEVBQUVHLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLENBQUMsRUFDMUVSLENBQUMsQ0FBQ0MsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxHQUFHVixDQUFDLENBQUNHLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLENBQUM7RUFDekI7RUFDSixPQUFPUixDQUFDO0FBQ1osQ0FBQztBQUNELFNBQVNXLEdBQUcsSUFBSUMsSUFBSSxRQUFRLG1CQUFtQjtBQ1gvQyxTQUFTQyxVQUFVLEVBQUVDLElBQUksUUFBcUMsT0FBTztBQUNyRSxTQUFTQyxzQkFBc0IsSUFBSUMseUJBQXlCLFFBQVEsWUFBWTtBQUVoRixTQUFTQyxhQUFhLFFBQVEsc0JBQXNCO0FBQ3BELFNBQVNDLFVBQVUsUUFBUSx3QkFBd0I7QUFZbkQsSUFBTUgsc0JBQXNCLEdBQUdDLHlCQUFtRTtBQUVsRyxJQUFNRyxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQWlCQSxDQUNyQkMsS0FBMkIsRUFDM0JDLEdBQWtCLEVBQ2hCO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQSxJQUFRQyxNQUFNLEdBQThCRixLQUFLLENBQXpDRSxNQUFNO0lBQUVDLGNBQWMsR0FBY0gsS0FBSyxDQUFqQ0csY0FBYztJQUFLQyxJQUFJLEdBQUEzQixNQUFBLENBQUt1QixLQUFLLEVBQTNDLENBQUEsUUFBQSxFQUFBLGdCQUFBLENBQW1DLENBQVE7RUFDakQsSUFBTUssS0FBSyxHQUFHUixhQUFhLENBQUlPLElBQUksQ0FBQztFQUVwQyxPQUNFWixJQUFBLENBQUNNLFVBQVUsRUFBQTtJQUFDTyxLQUFLLEVBQUVBLEtBQUs7SUFBQUMsUUFBQSxFQUN0QmQsSUFBQSxDQUFDRyxzQkFBc0IsRUFBQWIsTUFBQSxDQUFBeUIsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUNqQkYsS0FBSyxDQUFDRyxvQkFBb0IsRUFBQTtNQUM5QlAsR0FBRyxFQUFFQSxHQUFxQjtNQUMxQlEsU0FBUyxFQUFFSixLQUFLLENBQUNJLFNBQVM7TUFDMUJDLFNBQVMsRUFBRUwsS0FBSyxDQUFDTSxjQUFjO01BQy9CVCxNQUFNLEVBQUVBLE1BQU07TUFDZEMsY0FBYyxFQUFFQSxjQUFjO01BQzlCUyxPQUFPLEVBQUVQLEtBQUssQ0FBQ1EsZUFBZTtNQUM5QkMsSUFBSSxFQUFFVCxLQUFLLENBQUNVLGlCQUFpQjtNQUM3QkMsU0FBUyxFQUFFWCxLQUFLLENBQUNXLFNBQVM7TUFDMUJDLFVBQVUsRUFBRVosS0FBSyxDQUFDYTtJQUFnQixDQUFBLENBQUE7RUFDbEMsQ0FBQSxDQUNTO0FBRWpCLENBQUM7QUFNRCxJQUFNQyxnQkFBZ0IsZ0JBQUcxQixVQUFVLENBQUNNLGlCQUFpQixDQUErQjtBQUVwRm9CLGdCQUFnQixDQUFDQyxXQUFXLEdBQUcsY0FBYztBQUU3QyxPQUFPLElBQU1DLFlBQVksZ0JBQUczQixJQUFJLENBQUN5QixnQkFBZ0IsQ0FBK0I7QUFFaEYsZUFBZUUsWUFBWSIsImZpbGUiOiJjb21wb25lbnRzL1RhYmxlL1ZpcnR1YWxUYWJsZS5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCBtZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSW50ZXJuYWxSY1ZpcnR1YWxUYWJsZSBhcyBJbnRlcm5hbFJjVmlydHVhbFRhYmxlUmF3IH0gZnJvbSAnLi9pbnRlcm5hbCc7XG5pbXBvcnQgeyB1c2VUYWJsZVNldHVwIH0gZnJvbSAnLi9jb3JlL3VzZVRhYmxlU2V0dXAnO1xuaW1wb3J0IHsgVGFibGVTaGVsbCB9IGZyb20gJy4vcmVuZGVyZXJzL1RhYmxlU2hlbGwnO1xuY29uc3QgSW50ZXJuYWxSY1ZpcnR1YWxUYWJsZSA9IEludGVybmFsUmNWaXJ0dWFsVGFibGVSYXc7XG5jb25zdCBWaXJ0dWFsVGFibGVJbm5lciA9IChwcm9wcywgcmVmKSA9PiB7XG4gICAgLy8gYHNjcm9sbGAgLyBgbGlzdEl0ZW1IZWlnaHRgIGFyZSBWaXJ0dWFsVGFibGUtc3BlY2lmaWMgYW5kIHN0cmlwcGVkIGJlZm9yZVxuICAgIC8vIHNldHVwIHNvIHRoZXkgZG9uJ3QgbGVhayBvbnRvIHRoZSB3cmFwcGVyIGRpdiB2aWEgYHdyYXBwZXJIdG1sUHJvcHNgLiBUaGVcbiAgICAvLyB2aXJ0dWFsIGtlcm5lbCBuZWVkcyB0aGUgbmFycm93IG51bWVyaWMgYHNjcm9sbGAsIHNvIGl0J3MgcGFzc2VkIGV4cGxpY2l0bHlcbiAgICAvLyByYXRoZXIgdGhhbiB0aHJvdWdoIHRoZSBzaGFyZWQgYGZvcndhcmRlZEtlcm5lbFByb3BzYC5cbiAgICBjb25zdCB7IHNjcm9sbCwgbGlzdEl0ZW1IZWlnaHQgfSA9IHByb3BzLCByZXN0ID0gX19yZXN0KHByb3BzLCBbXCJzY3JvbGxcIiwgXCJsaXN0SXRlbUhlaWdodFwiXSk7XG4gICAgY29uc3Qgc2V0dXAgPSB1c2VUYWJsZVNldHVwKHJlc3QpO1xuICAgIHJldHVybiAoX2pzeChUYWJsZVNoZWxsLCB7IHNldHVwOiBzZXR1cCwgY2hpbGRyZW46IF9qc3goSW50ZXJuYWxSY1ZpcnR1YWxUYWJsZSwgT2JqZWN0LmFzc2lnbih7fSwgc2V0dXAuZm9yd2FyZGVkS2VybmVsUHJvcHMsIHsgcmVmOiByZWYsIHByZWZpeENsczogc2V0dXAucHJlZml4Q2xzLCBjbGFzc05hbWU6IHNldHVwLnRhYmxlQ2xhc3NOYW1lLCBzY3JvbGw6IHNjcm9sbCwgbGlzdEl0ZW1IZWlnaHQ6IGxpc3RJdGVtSGVpZ2h0LCBjb2x1bW5zOiBzZXR1cC5yZW5kZXJlZENvbHVtbnMsIGRhdGE6IHNldHVwLmN1cnJlbnREYXRhU291cmNlLCBlbXB0eVRleHQ6IHNldHVwLmVtcHR5VGV4dCwgZXhwYW5kYWJsZTogc2V0dXAubWVyZ2VkRXhwYW5kYWJsZSB9KSkgfSkpO1xufTtcbmNvbnN0IFZpcnR1YWxUYWJsZUJhc2UgPSBmb3J3YXJkUmVmKFZpcnR1YWxUYWJsZUlubmVyKTtcblZpcnR1YWxUYWJsZUJhc2UuZGlzcGxheU5hbWUgPSAnVmlydHVhbFRhYmxlJztcbmV4cG9ydCBjb25zdCBWaXJ0dWFsVGFibGUgPSBtZW1vKFZpcnR1YWxUYWJsZUJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgVmlydHVhbFRhYmxlOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -0,0 +1,9 @@
1
+ import type { TableColumn, TableColumnGroup, TableColumnType, TableRecord } from '../interface';
2
+ /** Type guard: a column that nests `children` columns (a header group). */
3
+ export declare function isColumnGroup<T extends TableRecord>(col: TableColumnType<T>): col is TableColumnGroup<T>;
4
+ /**
5
+ * Recursively flatten grouped columns into their leaf columns. Header groups
6
+ * contribute no data of their own, so sort/filter/render logic only ever cares
7
+ * about the leaves.
8
+ */
9
+ export declare function flattenColumns<T extends TableRecord>(columns: TableColumnType<T>[]): TableColumn<T>[];
@@ -0,0 +1,34 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
+ /** Type guard: a column that nests `children` columns (a header group). */
6
+ export function isColumnGroup(col) {
7
+ return 'children' in col && Array.isArray(col.children);
8
+ }
9
+ /**
10
+ * Recursively flatten grouped columns into their leaf columns. Header groups
11
+ * contribute no data of their own, so sort/filter/render logic only ever cares
12
+ * about the leaves.
13
+ */
14
+ export function flattenColumns(columns) {
15
+ var result = [];
16
+ var _iterator = _createForOfIteratorHelper(columns),
17
+ _step;
18
+ try {
19
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
20
+ var col = _step.value;
21
+ if (isColumnGroup(col)) {
22
+ result.push.apply(result, _toConsumableArray(flattenColumns(col.children)));
23
+ } else {
24
+ result.push(col);
25
+ }
26
+ }
27
+ } catch (err) {
28
+ _iterator.e(err);
29
+ } finally {
30
+ _iterator.f();
31
+ }
32
+ return result;
33
+ }
34
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvc3JjL2NvbXBvbmVudHMvVGFibGUvY29yZS9jb2x1bW5VdGlsLnRzIiwiY29tcG9uZW50cy9UYWJsZS9jb3JlL2NvbHVtblV0aWwuanMiXSwibmFtZXMiOlsiaXNDb2x1bW5Hcm91cCIsImNvbCIsIkFycmF5IiwiaXNBcnJheSIsImNoaWxkcmVuIiwiZmxhdHRlbkNvbHVtbnMiLCJjb2x1bW5zIiwicmVzdWx0IiwiX2l0ZXJhdG9yIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJfc3RlcCIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwicHVzaCIsImFwcGx5IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZXJyIiwiZSIsImYiXSwibWFwcGluZ3MiOiI7Ozs7QUFPQTtBQUNBLE9BQU0sU0FBVUEsYUFBYUEsQ0FDM0JDLEdBQXVCLEVBQUE7RUFFdkIsT0FBTyxVQUFVLElBQUlBLEdBQUcsSUFBSUMsS0FBSyxDQUFDQyxPQUFPLENBQUVGLEdBQTJCLENBQUNHLFFBQVEsQ0FBQztBQUNsRjtBQUVBO0FDVEE7QUFDQTtBQUNBO0FBQ0E7QURXQSxPQUFNLFNBQVVDLGNBQWNBLENBQzVCQyxPQUE2QixFQUFBO0VBRTdCLElBQU1DLE1BQU0sR0FBcUIsRUFBRTtFQUFDLElBQUFDLFNBQUEsR0FBQUMsMEJBQUEsQ0FDbEJILE9BQU87SUFBQUksS0FBQTtFQUFBO0lBQXpCLEtBQUFGLFNBQUEsQ0FBQUcsQ0FBQSxNQUFBRCxLQUFBLEdBQUFGLFNBQUEsQ0FBQUksQ0FBQSxJQUFBQyxJQUFBLEdBQTJCO01BQUEsSUFBaEJaLEdBQUcsR0FBQVMsS0FBQSxDQUFBSSxLQUFBO01BQ1osSUFBSWQsYUFBYSxDQUFDQyxHQUFHLENBQUMsRUFBRTtRQUN0Qk0sTUFBTSxDQUFDUSxJQUFJLENBQUFDLEtBQUEsQ0FBWFQsTUFBTSxFQUFBVSxrQkFBQSxDQUFTWixjQUFjLENBQUNKLEdBQUcsQ0FBQ0csUUFBUSxDQUFDLEVBQUM7TUFDOUMsQ0FBQyxNQUFNO1FBQ0xHLE1BQU0sQ0FBQ1EsSUFBSSxDQUFDZCxHQUFHLENBQUM7TUFDbEI7SUFDRjtFQUFDLFNBQUFpQixHQUFBO0lBQUFWLFNBQUEsQ0FBQVcsQ0FBQSxDQUFBRCxHQUFBO0VBQUE7SUFBQVYsU0FBQSxDQUFBWSxDQUFBO0VBQUE7RUFDRCxPQUFPYixNQUFNO0FBQ2YiLCJmaWxlIjoiY29tcG9uZW50cy9UYWJsZS9jb3JlL2NvbHVtblV0aWwuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsIi8qKiBUeXBlIGd1YXJkOiBhIGNvbHVtbiB0aGF0IG5lc3RzIGBjaGlsZHJlbmAgY29sdW1ucyAoYSBoZWFkZXIgZ3JvdXApLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ29sdW1uR3JvdXAoY29sKSB7XG4gICAgcmV0dXJuICdjaGlsZHJlbicgaW4gY29sICYmIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKTtcbn1cbi8qKlxuICogUmVjdXJzaXZlbHkgZmxhdHRlbiBncm91cGVkIGNvbHVtbnMgaW50byB0aGVpciBsZWFmIGNvbHVtbnMuIEhlYWRlciBncm91cHNcbiAqIGNvbnRyaWJ1dGUgbm8gZGF0YSBvZiB0aGVpciBvd24sIHNvIHNvcnQvZmlsdGVyL3JlbmRlciBsb2dpYyBvbmx5IGV2ZXIgY2FyZXNcbiAqIGFib3V0IHRoZSBsZWF2ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuQ29sdW1ucyhjb2x1bW5zKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29sdW1ucykge1xuICAgICAgICBpZiAoaXNDb2x1bW5Hcm91cChjb2wpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCguLi5mbGF0dGVuQ29sdW1ucyhjb2wuY2hpbGRyZW4pKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNvbCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn0iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -1,6 +1,6 @@
1
1
  import { type Key } from 'react';
2
- import type { TableCheckboxProps, TableColumnType, TableExpandableConfig, TableRecord, TableRowSelection, TableSize, TableSortOrder, TableVariant } from '../interface';
3
- import type { TableFilterState, TableSorterState } from './useTableDataPipeline';
2
+ import type { TableCheckboxProps, TableColumnType, TableExpandableConfig, TableRecord, TableRowSelection, TableSize, TableVariant } from '../interface';
3
+ import type { TableFilterState, TableSorterState, Updater } from './useTableDataPipeline';
4
4
  import type { ColumnsType as InternalColumnsType } from '../internal/kernel/interface';
5
5
  interface UseTableColumnsConfig<T extends TableRecord = TableRecord> {
6
6
  columns: TableColumnType<T>[];
@@ -17,18 +17,9 @@ interface UseTableColumnsConfig<T extends TableRecord = TableRecord> {
17
17
  triggerSelection: (key: Key) => void;
18
18
  triggerSelectAll: () => void;
19
19
  sorter: TableSorterState;
20
- setSorter: (updater: {
21
- columnKey?: Key;
22
- order?: TableSortOrder;
23
- } | ((current: {
24
- columnKey?: Key;
25
- order?: TableSortOrder;
26
- }) => {
27
- columnKey?: Key;
28
- order?: TableSortOrder;
29
- })) => void;
20
+ setSorter: (updater: Updater<TableSorterState>) => void;
30
21
  filters: TableFilterState;
31
- setFilters: (updater: TableFilterState | ((current: TableFilterState) => TableFilterState)) => void;
22
+ setFilters: (updater: Updater<TableFilterState>) => void;
32
23
  getRowKey: (record: T, index: number) => Key;
33
24
  }
34
25
  /**
@@ -7,9 +7,7 @@ import { ExpandTrigger } from '../features/ExpandTrigger';
7
7
  import { HeaderCell } from '../renderers/HeaderCell';
8
8
  import { BodyCell } from '../renderers/BodyCell';
9
9
  import { TABLE_DEFAULT_PREFIX } from '../constants';
10
- function isColumnGroup(col) {
11
- return 'children' in col && Array.isArray(col.children);
12
- }
10
+ import { isColumnGroup } from './columnUtil';
13
11
  function makeExpandTransform(config) {
14
12
  var expandable = config.expandable,
15
13
  mergedExpandedRowKeys = config.mergedExpandedRowKeys,
@@ -17,6 +15,8 @@ function makeExpandTransform(config) {
17
15
  getRowKey = config.getRowKey;
18
16
  var customExpandIcon = expandable === null || expandable === void 0 ? void 0 : expandable.expandIcon;
19
17
  var rowExpandable = expandable === null || expandable === void 0 ? void 0 : expandable.rowExpandable;
18
+ // O(1) per-row expansion lookup — `.includes` here ran once per rendered row.
19
+ var expandedKeySet = new Set(mergedExpandedRowKeys);
20
20
  return function (columns) {
21
21
  var _a;
22
22
  return [{
@@ -33,7 +33,7 @@ function makeExpandTransform(config) {
33
33
  var canExpand = rowExpandable ? rowExpandable(record) : true;
34
34
  if (!canExpand) return null;
35
35
  var recordKey = getRowKey(record, index);
36
- var expanded = mergedExpandedRowKeys.includes(recordKey);
36
+ var expanded = expandedKeySet.has(recordKey);
37
37
  if (customExpandIcon) {
38
38
  return customExpandIcon({
39
39
  prefixCls: TABLE_DEFAULT_PREFIX,
@@ -48,9 +48,9 @@ function makeExpandTransform(config) {
48
48
  }
49
49
  return _jsx(ExpandTrigger, {
50
50
  expanded: expanded,
51
- onToggle: function onToggle() {
52
- return triggerExpand(recordKey, record);
53
- }
51
+ recordKey: recordKey,
52
+ record: record,
53
+ onToggle: triggerExpand
54
54
  });
55
55
  }
56
56
  }].concat(_toConsumableArray(columns));
@@ -68,6 +68,8 @@ function makeSelectionTransform(config) {
68
68
  getRowKey = config.getRowKey;
69
69
  if (!rowSelection) return null;
70
70
  var selectionType = (_a = rowSelection.type) !== null && _a !== void 0 ? _a : 'checkbox';
71
+ // O(1) per-row selection lookup — `.includes` here ran once per rendered row.
72
+ var selectedKeySet = new Set(mergedSelectedRowKeys);
71
73
  return function (columns) {
72
74
  var _a;
73
75
  return [Object.assign(Object.assign({
@@ -89,11 +91,10 @@ function makeSelectionTransform(config) {
89
91
  var rowProps = checkboxPropsMap.get(recordKey);
90
92
  return _jsx(SelectionControl, {
91
93
  type: selectionType,
92
- checked: mergedSelectedRowKeys.includes(recordKey),
94
+ checked: selectedKeySet.has(recordKey),
93
95
  rowProps: rowProps,
94
- onChange: function onChange() {
95
- return triggerSelection(recordKey);
96
- }
96
+ recordKey: recordKey,
97
+ onChange: triggerSelection
97
98
  });
98
99
  }
99
100
  })].concat(_toConsumableArray(columns));
@@ -190,6 +191,12 @@ function makeRenderTransform() {
190
191
  return columns.map(function (column) {
191
192
  if (isColumnGroup(column)) return column;
192
193
  return Object.assign(Object.assign({}, column), {
194
+ // BodyCell is intentionally CALLED as a function, not rendered as
195
+ // `<BodyCell />`. The kernel's `render` contract allows returning either
196
+ // a ReactNode or a `{ children, props }` cell-spanning descriptor, and
197
+ // BodyCell forwards that descriptor through for colSpan / rowSpan support.
198
+ // Wrapping it in JSX would collapse the descriptor into an element and
199
+ // break cell merging — do not "fix" this into an element.
193
200
  render: function render(value, record, index) {
194
201
  return BodyCell({
195
202
  column: column,
@@ -234,24 +241,48 @@ export function useTableColumns(config) {
234
241
  setFilters = config.setFilters,
235
242
  size = config.size,
236
243
  getRowKey = config.getRowKey;
237
- return useMemo(function () {
238
- var transforms = [];
244
+ // The user's data columns only depend on the header / render inputs
245
+ // (sort, filter, size) — NOT on selection or expansion state. Memoising them
246
+ // on their own means toggling a checkbox or chevron no longer rebuilds and
247
+ // re-wraps the render closure of *every* data column; only the small
248
+ // selection/expand prefix below is rebuilt. `makeHeaderTransform` and
249
+ // `makeRenderTransform` are per-column independent maps, so applying them to
250
+ // the user columns and the prefix separately and concatenating is equivalent
251
+ // to the original single reduce-chain.
252
+ //
253
+ // Dep-list note: the transform factories capture the whole `config`, but
254
+ // every callback in it (`setSorter`, `triggerExpand`, `getRowKey`, …) is a
255
+ // stable `useMemoizedFn`, so listing the genuine value inputs is sufficient
256
+ // and intentional. Keep the lists in sync when adding inputs.
257
+ var baseUserColumns = useMemo(function () {
258
+ var cols = makeHeaderTransform(config)(columns);
259
+ cols = makeRenderTransform()(cols);
260
+ return cols;
261
+ }, [columns, sorter, filters, size, setSorter, setFilters]);
262
+ // The selection / expand prefix carries live selected/expanded state in its
263
+ // render output, which is the signal that re-renders the affected rows — so it
264
+ // must rebuild on every toggle. It is at most two columns, so this is cheap.
265
+ var prefixColumns = useMemo(function () {
266
+ var cols = [];
239
267
  if (expandable && expandable.showExpandColumn !== false) {
240
- transforms.push(makeExpandTransform(config));
268
+ cols = makeExpandTransform(config)(cols);
241
269
  }
242
270
  var selectionTransform = rowSelection ? makeSelectionTransform(config) : null;
243
271
  if (selectionTransform) {
244
- transforms.push(selectionTransform);
272
+ cols = selectionTransform(cols);
245
273
  }
246
- transforms.push(makeHeaderTransform(config));
247
- transforms.push(makeRenderTransform());
274
+ // Run the prefix through the same header/render maps the user columns get so
275
+ // the final array is byte-for-byte the original single-pipeline output.
276
+ cols = makeHeaderTransform(config)(cols);
277
+ cols = makeRenderTransform()(cols);
278
+ return cols;
279
+ }, [expandable, rowSelection, mergedExpandedRowKeys, mergedSelectedRowKeys, checkboxPropsMap, isAllSelected, isIndeterminate, triggerExpand, triggerSelection, triggerSelectAll, sorter, setSorter, filters, setFilters, size, getRowKey]);
280
+ return useMemo(function () {
281
+ var cols = [].concat(_toConsumableArray(prefixColumns), _toConsumableArray(baseUserColumns));
248
282
  if (variant === 'stroke') {
249
- transforms.push(makeSpacerTransform());
283
+ cols = makeSpacerTransform()(cols);
250
284
  }
251
- var transformed = transforms.reduce(function (cols, fn) {
252
- return fn(cols);
253
- }, columns);
254
- return transformed;
255
- }, [columns, variant, expandable, rowSelection, mergedExpandedRowKeys, mergedSelectedRowKeys, checkboxPropsMap, isAllSelected, isIndeterminate, triggerExpand, triggerSelection, triggerSelectAll, sorter, setSorter, filters, setFilters, size, getRowKey]);
285
+ return cols;
286
+ }, [prefixColumns, baseUserColumns, variant]);
256
287
  }
257
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZUNvbHVtbnMuanMiLCJjb21wb25lbnRzL1RhYmxlL3NyYy9jb21wb25lbnRzL1RhYmxlL2NvcmUvdXNlVGFibGVDb2x1bW5zLnRzeCJdLCJuYW1lcyI6WyJqc3giLCJfanN4IiwidXNlTWVtbyIsIlNlbGVjdGlvbkNvbnRyb2wiLCJTZWxlY3Rpb25IZWFkZXJDb250cm9sIiwiRXhwYW5kVHJpZ2dlciIsIkhlYWRlckNlbGwiLCJCb2R5Q2VsbCIsIlRBQkxFX0RFRkFVTFRfUFJFRklYIiwiaXNDb2x1bW5Hcm91cCIsImNvbCIsIkFycmF5IiwiaXNBcnJheSIsImNoaWxkcmVuIiwibWFrZUV4cGFuZFRyYW5zZm9ybSIsImNvbmZpZyIsImV4cGFuZGFibGUiLCJtZXJnZWRFeHBhbmRlZFJvd0tleXMiLCJ0cmlnZ2VyRXhwYW5kIiwiZ2V0Um93S2V5IiwiY3VzdG9tRXhwYW5kSWNvbiIsImV4cGFuZEljb24iLCJyb3dFeHBhbmRhYmxlIiwiY29sdW1ucyIsIl9hIiwia2V5IiwiY2xhc3NOYW1lIiwiRVhQQU5EX0NPTFVNTl9DTFMiLCJ3aWR0aCIsImNvbHVtbldpZHRoIiwidGl0bGUiLCJjb2x1bW5UaXRsZSIsImZpeGVkIiwidW5kZWZpbmVkIiwicmVuZGVyIiwiXyIsInJlY29yZCIsImluZGV4IiwiY2FuRXhwYW5kIiwicmVjb3JkS2V5IiwiZXhwYW5kZWQiLCJpbmNsdWRlcyIsInByZWZpeENscyIsIm9uRXhwYW5kIiwicmVjIiwiZSIsInN0b3BQcm9wYWdhdGlvbiIsIm9uVG9nZ2xlIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwibWFrZVNlbGVjdGlvblRyYW5zZm9ybSIsInJvd1NlbGVjdGlvbiIsIm1lcmdlZFNlbGVjdGVkUm93S2V5cyIsImNoZWNrYm94UHJvcHNNYXAiLCJpc0FsbFNlbGVjdGVkIiwiaXNJbmRldGVybWluYXRlIiwidHJpZ2dlclNlbGVjdGlvbiIsInRyaWdnZXJTZWxlY3RBbGwiLCJzZWxlY3Rpb25UeXBlIiwidHlwZSIsIk9iamVjdCIsImFzc2lnbiIsIlNFTEVDVElPTl9DT0xVTU5fQ0xTIiwicmVuZGVySGVhZGVyIiwiY2hlY2tlZCIsImluZGV0ZXJtaW5hdGUiLCJvbkNoYW5nZSIsInJvd1Byb3BzIiwiZ2V0IiwiYXJpYVNvcnRGb3IiLCJvcmRlciIsIkVNUFRZX0ZJTFRFUl9WQUxVRSIsIm1ha2VIZWFkZXJUcmFuc2Zvcm0iLCJzaXplIiwic29ydGVyIiwic2V0U29ydGVyIiwiZmlsdGVycyIsInNldEZpbHRlcnMiLCJtYXAiLCJjb2x1bW4iLCJfYiIsImlzU29ydGFibGUiLCJCb29sZWFuIiwiYWN0aXZlT3JkZXIiLCJjb2x1bW5LZXkiLCJTdHJpbmciLCJmaWx0ZXJTZWxlY3RlZCIsInVzZXJPbkhlYWRlckNlbGwiLCJvbkhlYWRlckNlbGwiLCJ1c2VyQXR0cnMiLCJvbkZpbHRlckNoYW5nZSIsIm5leHQiLCJjdXJyZW50IiwiX2RlZmluZVByb3BlcnR5IiwibGVuZ3RoIiwic29ydE9yZGVyIiwib25Tb3J0Q2xpY2siLCJjdXJyZW50U29ydGVyIiwiU1BBQ0VSX0NPTFVNTl9DTFMiLCJtYWtlU3BhY2VyVHJhbnNmb3JtIiwibWFrZVJlbmRlclRyYW5zZm9ybSIsInZhbHVlIiwidXNlVGFibGVDb2x1bW5zIiwidmFyaWFudCIsInRyYW5zZm9ybXMiLCJzaG93RXhwYW5kQ29sdW1uIiwicHVzaCIsInNlbGVjdGlvblRyYW5zZm9ybSIsInRyYW5zZm9ybWVkIiwicmVkdWNlIiwiY29scyIsImZuIl0sIm1hcHBpbmdzIjoiOztBQUFBLFNBQVNBLEdBQUcsSUFBSUMsSUFBSSxRQUFRLG1CQUFtQjtBQ0EvQyxTQUFTQyxPQUFPLFFBQWtCLE9BQU87QUFDekMsU0FBU0MsZ0JBQWdCLEVBQUVDLHNCQUFzQixRQUFRLDZCQUE2QjtBQUN0RixTQUFTQyxhQUFhLFFBQVEsMkJBQTJCO0FBQ3pELFNBQVNDLFVBQVUsUUFBUSx5QkFBeUI7QUFDcEQsU0FBU0MsUUFBUSxRQUFR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SUFBSSxDQUFDNUYsbUJBQW1CLENBQUNDLE1BQU0sQ0FBQyxDQUFDO0lBQzlDO0lBQ0EsSUFBTTRGLGtCQUFrQixHQUFHeEQsWUFBWSxHQUFHRCxzQkFBc0IsQ0FBQ25DLE1BQU0sQ0FBQyxHQUFHLElBQUk7SUFDL0UsSUFBSTRGLGtCQUFrQixFQUFFO01BQ3RCSCxVQUFVLENBQUNFLElBQUksQ0FBQ0Msa0JBQWtCLENBQUM7SUFDckM7SUFDQUgsVUFBVSxDQUFDRSxJQUFJLENBQUNsQyxtQkFBbUIsQ0FBQ3pELE1BQU0sQ0FBQyxDQUFDO0lBQzVDeUYsVUFBVSxDQUFDRSxJQUFJLENBQUNOLG1CQUFtQixDQUFBLENBQUssQ0FBQztJQUN6QyxJQUFJRyxPQUFPLEtBQUssUUFBUSxFQUFFO01BQ3hCQyxVQUFVLENBQUNFLElBQUksQ0FBQ1AsbUJBQW1CLENBQUEsQ0FBSyxDQUFDO0lBQzNDO0lBRUEsSUFBTVMsV0FBVyxHQUFHSixVQUFVLENBQUNLLE1BQU0sQ0FBQyxVQUFDQyxJQUFJLEVBQUVDLEVBQUU7TUFBQSxPQUFLQSxFQUFFLENBQUNELElBQUksQ0FBQztJQUFBLEdBQUV2RixPQUFPLENBQUM7SUFDdEUsT0FBT3FGLFdBQWdEO0VBQ3pELENBQUMsRUFBRSxDQUNEckYsT0FBTyxFQUNQZ0YsT0FBTyxFQUNQdkYsVUFBVSxFQUNWbUMsWUFBWSxFQUNabEMscUJBQXFCLEVBQ3JCbUMscUJBQXFCLEVBQ3JCQyxnQkFBZ0IsRUFDaEJDLGFBQWEsRUFDYkMsZUFBZSxFQUNmckMsYUFBYSxFQUNic0MsZ0JBQWdCLEVBQ2hCQyxnQkFBZ0IsRUFDaEJpQixNQUFNLEVBQ05DLFNBQVMsRUFDVEMsT0FBTyxFQUNQQyxVQUFVLEVBQ1ZKLElBQUksRUFDSnRELFNBQVMsQ0FDVixDQUFDO0FBQ0oiLCJmaWxlIjoiY29tcG9uZW50cy9UYWJsZS9jb3JlL3VzZVRhYmxlQ29sdW1ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgU2VsZWN0aW9uQ29udHJvbCwgU2VsZWN0aW9uSGVhZGVyQ29udHJvbCB9IGZyb20gJy4uL2ZlYXR1cmVzL1NlbGVjdGlvbkNvbHVtbic7XG5pbXBvcnQgeyBFeHBhbmRUcmlnZ2VyIH0gZnJvbSAnLi4vZmVhdHVyZXMvRXhwYW5kVHJpZ2dlcic7XG5pbXBvcnQgeyBIZWFkZXJDZWxsIH0gZnJvbSAnLi4vcmVuZGVyZXJzL0hlYWRlckNlbGwnO1xuaW1wb3J0IHsgQm9keUNlbGwgfSBmcm9tICcuLi9yZW5kZXJlcnMvQm9keUNlbGwnO1xuaW1wb3J0IHsgVEFCTEVfREVGQVVMVF9QUkVGSVggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuZnVuY3Rpb24gaXNDb2x1bW5Hcm91cChjb2wpIHtcbiAgICByZXR1cm4gJ2NoaWxkcmVuJyBpbiBjb2wgJiYgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pO1xufVxuZnVuY3Rpb24gbWFrZUV4cGFuZFRyYW5zZm9ybShjb25maWcpIHtcbiAgICBjb25zdCB7IGV4cGFuZGFibGUsIG1lcmdlZEV4cGFuZGVkUm93S2V5cywgdHJpZ2dlckV4cGFuZCwgZ2V0Um93S2V5IH0gPSBjb25maWc7XG4gICAgY29uc3QgY3VzdG9tRXhwYW5kSWNvbiA9IGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5leHBhbmRJY29uO1xuICAgIGNvbnN0IHJvd0V4cGFuZGFibGUgPSBleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUucm93RXhwYW5kYWJsZTtcbiAgICByZXR1cm4gKGNvbHVtbnMpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtleTogJ19fZXhwYW5kX18nLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogRVhQQU5EX0NPTFVNTl9DTFMsXG4gICAgICAgICAgICAgICAgLy8gSG9ub3IgYGV4cGFuZGFibGUuY29sdW1uV2lkdGhgIC8gYGNvbHVtblRpdGxlYCAvIGBmaXhlZGA7XG4gICAgICAgICAgICAgICAgLy8gZGVmYXVsdCB0byBhIGZpeGVkIDE2cHggY29sdW1uIChjaGV2cm9uLW9ubHksIHBhZGRpbmc6IDApLlxuICAgICAgICAgICAgICAgIHdpZHRoOiAoX2EgPSBleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUuY29sdW1uV2lkdGgpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDE2LFxuICAgICAgICAgICAgICAgIHRpdGxlOiBleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUuY29sdW1uVGl0bGUsXG4gICAgICAgICAgICAgICAgZml4ZWQ6IChleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUuZml4ZWQpID09PSB0cnVlXG4gICAgICAgICAgICAgICAgICAgID8gJ2xlZnQnXG4gICAgICAgICAgICAgICAgICAgIDogKGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5maXhlZCkgPT09IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUuZml4ZWQsXG4gICAgICAgICAgICAgICAgcmVuZGVyOiAoXywgcmVjb3JkLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBIb25vciBgcm93RXhwYW5kYWJsZWA6IHdoZW4gdGhlIHByZWRpY2F0ZSBkZW5pZXMgYSByZWNvcmQsIHJlbmRlciBub1xuICAgICAgICAgICAgICAgICAgICAvLyBjaGV2cm9uIGF0IGFsbCAodGhlIHJvdyBpcyBub24tZXhwYW5kYWJsZSkuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbkV4cGFuZCA9IHJvd0V4cGFuZGFibGUgPyByb3dFeHBhbmRhYmxlKHJlY29yZCkgOiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbkV4cGFuZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWNvcmRLZXkgPSBnZXRSb3dLZXkocmVjb3JkLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cGFuZGVkID0gbWVyZ2VkRXhwYW5kZWRSb3dLZXlzLmluY2x1ZGVzKHJlY29yZEtleSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXN0b21FeHBhbmRJY29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VzdG9tRXhwYW5kSWNvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4Q2xzOiBUQUJMRV9ERUZBVUxUX1BSRUZJWCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkV4cGFuZDogKHJlYywgZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyRXhwYW5kKGdldFJvd0tleShyZWMsIGluZGV4KSwgcmVjKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChfanN4KEV4cGFuZFRyaWdnZXIsIHsgZXhwYW5kZWQ6IGV4cGFuZGVkLCBvblRvZ2dsZTogKCkgPT4gdHJpZ2dlckV4cGFuZChyZWNvcmRLZXksIHJlY29yZCkgfSkpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLi4uY29sdW1ucyxcbiAgICAgICAgXTtcbiAgICB9O1xufVxuZnVuY3Rpb24gbWFrZVNlbGVjdGlvblRyYW5zZm9ybShjb25maWcpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgeyByb3dTZWxlY3Rpb24sIG1lcmdlZFNlbGVjdGVkUm93S2V5cywgY2hlY2tib3hQcm9wc01hcCwgaXNBbGxTZWxlY3RlZCwgaXNJbmRldGVybWluYXRlLCB0cmlnZ2VyU2VsZWN0aW9uLCB0cmlnZ2VyU2VsZWN0QWxsLCBnZXRSb3dLZXksIH0gPSBjb25maWc7XG4gICAgaWYgKCFyb3dTZWxlY3Rpb24pXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHNlbGVjdGlvblR5cGUgPSAoX2EgPSByb3dTZWxlY3Rpb24udHlwZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ2NoZWNrYm94JztcbiAgICByZXR1cm4gKGNvbHVtbnMpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHsga2V5OiAnX19zZWxlY3Rpb25fXycsIGNsYXNzTmFtZTogU0VMRUNUSU9OX0NPTFVNTl9DTFMsIHdpZHRoOiAoX2EgPSByb3dTZWxlY3Rpb24uY29sdW1uV2lkdGgpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDE2LCBmaXhlZDogcm93U2VsZWN0aW9uLmZpeGVkID8gJ2xlZnQnIDogdW5kZWZpbmVkIH0sIChzZWxlY3Rpb25UeXBlID09PSAnY2hlY2tib3gnXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgIHJlbmRlckhlYWRlcjogKCkgPT4gKF9qc3goU2VsZWN0aW9uSGVhZGVyQ29udHJvbCwgeyBjaGVja2VkOiBpc0FsbFNlbGVjdGVkLCBpbmRldGVybWluYXRlOiBpc0luZGV0ZXJtaW5hdGUsIG9uQ2hhbmdlOiB0cmlnZ2VyU2VsZWN0QWxsIH0pKSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiB7fSkpLCB7IHJlbmRlcjogKF8sIHJlY29yZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkS2V5ID0gZ2V0Um93S2V5KHJlY29yZCwgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3dQcm9wcyA9IGNoZWNrYm94UHJvcHNNYXAuZ2V0KHJlY29yZEtleSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoX2pzeChTZWxlY3Rpb25Db250cm9sLCB7IHR5cGU6IHNlbGVjdGlvblR5cGUsIGNoZWNrZWQ6IG1lcmdlZFNlbGVjdGVkUm93S2V5cy5pbmNsdWRlcyhyZWNvcmRLZXkpLCByb3dQcm9wczogcm93UHJvcHMsIG9uQ2hhbmdlOiAoKSA9PiB0cmlnZ2VyU2VsZWN0aW9uKHJlY29yZEtleSkgfSkpO1xuICAgICAgICAgICAgICAgIH0gfSksXG4gICAgICAgICAgICAuLi5jb2x1bW5zLFxuICAgICAgICBdO1xuICAgIH07XG59XG5mdW5jdGlvbiBhcmlhU29ydEZvcihvcmRlcikge1xuICAgIGlmIChvcmRlciA9PT0gJ2FzY2VuZCcpXG4gICAgICAgIHJldHVybiAnYXNjZW5kaW5nJztcbiAgICBpZiAob3JkZXIgPT09ICdkZXNjZW5kJylcbiAgICAgICAgcmV0dXJuICdkZXNjZW5kaW5nJztcbiAgICByZXR1cm4gJ25vbmUnO1xufVxuLy8gU3RhYmxlIGVtcHR5LWZpbHRlciByZWZlcmVuY2UuIFdpdGhvdXQgdGhpcywgYGZpbHRlcnNba2V5XSA/PyBbXWAgY3JlYXRlcyBhXG4vLyBmcmVzaCBgW11gIG9uIGV2ZXJ5IHJlbmRlciwgd2hpY2ggdGhyYXNoZXMgYEZpbHRlclRyaWdnZXJgJ3Ncbi8vIGB1c2VFZmZlY3QoW3NlbGVjdGVkS2V5c10pYCBhbmQgY2F1c2VzIGFuIGluZmluaXRlIHNldFN0YXRlIGxvb3AgYWZ0ZXJcbi8vIGNvbmZpcm0gLyByZXNldC5cbmNvbnN0IEVNUFRZX0ZJTFRFUl9WQUxVRSA9IFtdO1xuZnVuY3Rpb24gbWFrZUhlYWRlclRyYW5zZm9ybShjb25maWcpIHtcbiAgICBjb25zdCB7IHNpemUsIHNvcnRlciwgc2V0U29ydGVyLCBmaWx0ZXJzLCBzZXRGaWx0ZXJzIH0gPSBjb25maWc7XG4gICAgcmV0dXJuIChjb2x1bW5zKSA9PiBjb2x1bW5zLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGlmIChpc0NvbHVtbkdyb3VwKGNvbHVtbikpXG4gICAgICAgICAgICByZXR1cm4gY29sdW1uO1xuICAgICAgICBjb25zdCBpc1NvcnRhYmxlID0gQm9vbGVhbihjb2x1bW4uc29ydGVyKTtcbiAgICAgICAgY29uc3QgYWN0aXZlT3JkZXIgPSBzb3J0ZXIuY29sdW1uS2V5ID09PSBjb2x1bW4ua2V5ID8gKF9hID0gc29ydGVyLm9yZGVyKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsIDogbnVsbDtcbiAgICAgICAgY29uc3QgY29sdW1uS2V5ID0gY29sdW1uLmtleSAhPSBudWxsID8gU3RyaW5nKGNvbHVtbi5rZXkpIDogdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBmaWx0ZXJTZWxlY3RlZCA9IGNvbHVtbktleSAhPSBudWxsID8gKChfYiA9IGZpbHRlcnNbY29sdW1uS2V5XSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogRU1QVFlfRklMVEVSX1ZBTFVFKSA6IEVNUFRZX0ZJTFRFUl9WQUxVRTtcbiAgICAgICAgLy8gQ29tcG9zZSBvbkhlYWRlckNlbGwgc28gd2UgZG9uJ3QgY2xvYmJlciB1c2VyLXByb3ZpZGVkIGF0dHJpYnV0ZXMuXG4gICAgICAgIGNvbnN0IHVzZXJPbkhlYWRlckNlbGwgPSBjb2x1bW4ub25IZWFkZXJDZWxsO1xuICAgICAgICBjb25zdCBvbkhlYWRlckNlbGwgPSAoY29sLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgY29uc3QgdXNlckF0dHJzID0gKF9hID0gdXNlck9uSGVhZGVyQ2VsbCA9PT0gbnVsbCB8fCB1c2VyT25IZWFkZXJDZWxsID09PSB2b2lkIDAgPyB2b2lkIDAgOiB1c2VyT25IZWFkZXJDZWxsKGNvbCwgaW5kZXgpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB7fTtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHVzZXJBdHRycyksIChpc1NvcnRhYmxlID8geyAnYXJpYS1zb3J0JzogYXJpYVNvcnRGb3IoYWN0aXZlT3JkZXIpIH0gOiBudWxsKSk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG9uRmlsdGVyQ2hhbmdlID0gKG5leHQpID0+IHtcbiAgICAgICAgICAgIGlmIChjb2x1bW5LZXkgPT0gbnVsbClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBzZXRGaWx0ZXJzKChjdXJyZW50KSA9PiAoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBjdXJyZW50KSwgeyBbY29sdW1uS2V5XTogbmV4dC5sZW5ndGggPyBuZXh0IDogbnVsbCB9KSkpO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBjb2x1bW4pLCB7IG9uSGVhZGVyQ2VsbCwgdGl0bGU6IGNvbHVtbi5yZW5kZXJIZWFkZXJcbiAgICAgICAgICAgICAgICA/IGNvbHVtbi5yZW5kZXJIZWFkZXIoeyBjb2x1bW4gfSlcbiAgICAgICAgICAgICAgICA6IChfanN4KEhlYWRlckNlbGwsIHsgY29sdW1uOiBjb2x1bW4sIHNpemU6IHNpemUsIHNvcnRPcmRlcjogYWN0aXZlT3JkZXIsIG9uU29ydENsaWNrOiAoKSA9PiBzZXRTb3J0ZXIoKGN1cnJlbnRTb3J0ZXIpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5LZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogY3VycmVudFNvcnRlci5jb2x1bW5LZXkgIT09IGNvbHVtbi5rZXkgfHwgY3VycmVudFNvcnRlci5vcmRlciA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2FzY2VuZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGN1cnJlbnRTb3J0ZXIub3JkZXIgPT09ICdhc2NlbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2Rlc2NlbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgfSkpLCBmaWx0ZXJTZWxlY3RlZDogZmlsdGVyU2VsZWN0ZWQsIG9uRmlsdGVyQ2hhbmdlOiBvbkZpbHRlckNoYW5nZSB9KSkgfSk7XG4gICAgfSk7XG59XG5jb25zdCBTUEFDRVJfQ09MVU1OX0NMUyA9ICdvbS1jb21wb25lbnQtdWktdGFibGUtY2VsbC0tc3BhY2VyJztcbmNvbnN0IEVYUEFORF9DT0xVTU5fQ0xTID0gJ29tLWNvbXBvbmVudC11aS10YWJsZS1jZWxsLS1leHBhbmQnO1xuY29uc3QgU0VMRUNUSU9OX0NPTFVNTl9DTFMgPSAnb20tY29tcG9uZW50LXVpLXRhYmxlLWNlbGwtLXNlbGVjdGlvbic7XG5mdW5jdGlvbiBtYWtlU3BhY2VyVHJhbnNmb3JtKCkge1xuICAgIHJldHVybiAoY29sdW1ucykgPT4gW1xuICAgICAgICB7IGtleTogJ19fc3BhY2VyX3N0YXJ0X18nLCB3aWR0aDogMTYsIHRpdGxlOiAnJywgY2xhc3NOYW1lOiBTUEFDRVJfQ09MVU1OX0NMUywgcmVuZGVyOiAoKSA9PiBudWxsIH0sXG4gICAgICAgIC4uLmNvbHVtbnMsXG4gICAgICAgIHsga2V5OiAnX19zcGFjZXJfZW5kX18nLCB3aWR0aDogMTYsIHRpdGxlOiAnJywgY2xhc3NOYW1lOiBTUEFDRVJfQ09MVU1OX0NMUywgcmVuZGVyOiAoKSA9PiBudWxsIH0sXG4gICAgXTtcbn1cbmZ1bmN0aW9uIG1ha2VSZW5kZXJUcmFuc2Zvcm0oKSB7XG4gICAgcmV0dXJuIChjb2x1bW5zKSA9PiBjb2x1bW5zLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgICAgIGlmIChpc0NvbHVtbkdyb3VwKGNvbHVtbikpXG4gICAgICAgICAgICByZXR1cm4gY29sdW1uO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBjb2x1bW4pLCB7IHJlbmRlcjogKHZhbHVlLCByZWNvcmQsIGluZGV4KSA9PiBCb2R5Q2VsbCh7XG4gICAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIHJlY29yZCxcbiAgICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIH0pIH0pO1xuICAgIH0pO1xufVxuLyoqXG4gKiBSZXR1cm5zIGNvbHVtbnMgcmVhZHkgdG8gYmUgcGFzc2VkIHRvIHRoZSB0YWJsZSBrZXJuZWwuXG4gKlxuICogVGhlIHJldHVybmVkIHNoYXBlIElTIHN0cnVjdHVyYWxseSB0aGUga2VybmVsJ3MgYENvbHVtbnNUeXBlPFQ+YDpcbiAqICAgLSBFdmVyeSBsZWFmIGNvbHVtbidzIGByZW5kZXJgIGlzIHJlcGxhY2VkIGJ5IGBtYWtlUmVuZGVyVHJhbnNmb3JtYCwgd2hpY2hcbiAqICAgICBhbHdheXMgcmV0dXJucyBhIGBSZWFjdE5vZGVgIChCb2R5Q2VsbCBoYW5kbGVzIGBUYWJsZUNlbGxDb250ZW50VmFsdWVgIC9cbiAqICAgICBgVGFibGVSZW5kZXJlZENlbGxgIGV4dHJhcyBhbmQgZW1pdHMgUmVhY3ROb2RlL1JlbmRlcmVkQ2VsbCkuXG4gKiAgIC0gRXZlcnkgbGVhZiBjb2x1bW4ncyBgdGl0bGVgIGlzIGVpdGhlciBhIFJlYWN0Tm9kZSBvciByZXBsYWNlZCBieVxuICogICAgIGA8SGVhZGVyQ2VsbCAvPmAuXG4gKiBCZWNhdXNlIFRTIGNhbid0IHRyYWNrIHRoYXQgdGhvc2UgcmVwbGFjZW1lbnRzIGhhdmUgaGFwcGVuZWQgYWNyb3NzIHRoZVxuICogYHRyYW5zZm9ybXMucmVkdWNlYCBjaGFpbiwgYSBzaW5nbGUgaW50ZXJuYWwgY2FzdCBpcyByZXF1aXJlZCDigJQgY2FsbCBzaXRlcyBub1xuICogbG9uZ2VyIG5lZWQgdGhlaXIgb3duIGBhcyB1bmtub3duIGFzIEludGVybmFsQ29sdW1uc1R5cGU8VD5gIGNhc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VUYWJsZUNvbHVtbnMoY29uZmlnKSB7XG4gICAgY29uc3QgeyBjb2x1bW5zLCB2YXJpYW50LCBleHBhbmRhYmxlLCByb3dTZWxlY3Rpb24sIG1lcmdlZEV4cGFuZGVkUm93S2V5cywgbWVyZ2VkU2VsZWN0ZWRSb3dLZXlzLCBjaGVja2JveFByb3BzTWFwLCBpc0FsbFNlbGVjdGVkLCBpc0luZGV0ZXJtaW5hdGUsIHRyaWdnZXJFeHBhbmQsIHRyaWdnZXJTZWxlY3Rpb24sIHRyaWdnZXJTZWxlY3RBbGwsIHNvcnRlciwgc2V0U29ydGVyLCBmaWx0ZXJzLCBzZXRGaWx0ZXJzLCBzaXplLCBnZXRSb3dLZXksIH0gPSBjb25maWc7XG4gICAgcmV0dXJuIHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1zID0gW107XG4gICAgICAgIGlmIChleHBhbmRhYmxlICYmIGV4cGFuZGFibGUuc2hvd0V4cGFuZENvbHVtbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybXMucHVzaChtYWtlRXhwYW5kVHJhbnNmb3JtKGNvbmZpZykpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvblRyYW5zZm9ybSA9IHJvd1NlbGVjdGlvbiA/IG1ha2VTZWxlY3Rpb25UcmFuc2Zvcm0oY29uZmlnKSA6IG51bGw7XG4gICAgICAgIGlmIChzZWxlY3Rpb25UcmFuc2Zvcm0pIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybXMucHVzaChzZWxlY3Rpb25UcmFuc2Zvcm0pO1xuICAgICAgICB9XG4gICAgICAgIHRyYW5zZm9ybXMucHVzaChtYWtlSGVhZGVyVHJhbnNmb3JtKGNvbmZpZykpO1xuICAgICAgICB0cmFuc2Zvcm1zLnB1c2gobWFrZVJlbmRlclRyYW5zZm9ybSgpKTtcbiAgICAgICAgaWYgKHZhcmlhbnQgPT09ICdzdHJva2UnKSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1zLnB1c2gobWFrZVNwYWNlclRyYW5zZm9ybSgpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZCA9IHRyYW5zZm9ybXMucmVkdWNlKChjb2xzLCBmbikgPT4gZm4oY29scyksIGNvbHVtbnMpO1xuICAgICAgICByZXR1cm4gdHJhbnNmb3JtZWQ7XG4gICAgfSwgW1xuICAgICAgICBjb2x1bW5zLFxuICAgICAgICB2YXJpYW50LFxuICAgICAgICBleHBhbmRhYmxlLFxuICAgICAgICByb3dTZWxlY3Rpb24sXG4gICAgICAgIG1lcmdlZEV4cGFuZGVkUm93S2V5cyxcbiAgICAgICAgbWVyZ2VkU2VsZWN0ZWRSb3dLZXlzLFxuICAgICAgICBjaGVja2JveFByb3BzTWFwLFxuICAgICAgICBpc0FsbFNlbGVjdGVkLFxuICAgICAgICBpc0luZGV0ZXJtaW5hdGUsXG4gICAgICAgIHRyaWdnZXJFeHBhbmQsXG4gICAgICAgIHRyaWdnZXJTZWxlY3Rpb24sXG4gICAgICAgIHRyaWdnZXJTZWxlY3RBbGwsXG4gICAgICAgIHNvcnRlcixcbiAgICAgICAgc2V0U29ydGVyLFxuICAgICAgICBmaWx0ZXJzLFxuICAgICAgICBzZXRGaWx0ZXJzLFxuICAgICAgICBzaXplLFxuICAgICAgICBnZXRSb3dLZXksXG4gICAgXSk7XG59IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
288
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZUNvbHVtbnMuanMiLCJjb21wb25lbnRzL1RhYmxlL3NyYy9jb21wb25lbnRzL1RhYmxlL2NvcmUvdXNlVGFibGVDb2x1bW5zLnRzeCJdLCJuYW1lcyI6WyJqc3giLCJfanN4IiwidXNlTWVtbyIsIlNlbGVjdGlvbkNvbnRyb2wiLCJTZWxlY3Rpb25IZWFkZXJDb250cm9sIiwiRXhwYW5kVHJpZ2dlciIsIkhlYWRlckNlbGwiLCJCb2R5Q2VsbCIsIlRBQkxFX0RFRkFVTFRfUFJFRklYIiwiaXNDb2x1bW5Hcm91cCIsIm1ha2VFeHBhbmRUcmFuc2Zvcm0iLCJjb25maWciLCJleHBhbmRhYmxlIiwibWVyZ2VkRXhwYW5kZWRSb3dLZXlzIiwidHJpZ2dlckV4cGFuZCIsImdldFJvd0tleSIsImN1c3RvbUV4cGFuZEljb24iLCJleHBhbmRJY29uIiwicm93RXhwYW5kYWJsZSIsImV4cGFuZGVkS2V5U2V0IiwiU2V0IiwiY29sdW1ucyIsIl9hIiwia2V5IiwiY2xhc3NOYW1lIiwiRVhQQU5EX0NPTFVNTl9DTFMiLCJ3aWR0aCIsImNvbHVtbldpZHRoIiwidGl0bGUiLCJjb2x1bW5UaXRsZSIsImZpeGVkIiwidW5kZWZpbmVkIiwicmVuZGVyIiwiXyIsInJlY29yZCIsImluZGV4IiwiY2FuRXhwYW5kIiwicmVjb3JkS2V5IiwiZXhwYW5kZWQiLCJoYXMiLCJwcmVmaXhDbHMiLCJvbkV4cGFuZCIsInJlYyIsImUiLCJzdG9wUHJvcGFnYXRpb24iLCJvblRvZ2dsZSIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheSIsIm1ha2VTZWxlY3Rpb25UcmFuc2Zvcm0iLCJyb3dTZWxlY3Rpb24iLCJtZXJnZWRTZWxlY3RlZFJvd0tleXMiLCJjaGVja2JveFByb3BzTWFwIiwiaXNBbGxTZWxlY3RlZCIsImlzSW5kZXRlcm1pbmF0ZSIsInRyaWdnZXJTZWxlY3Rpb24iLCJ0cmlnZ2VyU2VsZWN0QWxsIiwic2VsZWN0aW9uVHlwZSIsInR5cGUiLCJzZWxlY3RlZEtleVNldCIsIk9iamVjdCIsImFzc2lnbiIsIlNFTEVDVElPTl9DT0xVTU5fQ0xTIiwicmVuZGVySGVhZGVyIiwiY2hlY2tlZCIsImluZGV0ZXJtaW5hdGUiLCJvbkNoYW5nZSIsInJvd1Byb3BzIiwiZ2V0IiwiYXJpYVNvcnRGb3IiLCJvcmRlciIsIkVNUFRZX0ZJTFRFUl9WQUxVRSIsIm1ha2VIZWFkZXJUcmFuc2Zvcm0iLCJzaXplIiwic29ydGVyIiwic2V0U29ydGVyIiwiZmlsdGVycyIsInNldEZpbHRlcnMiLCJtYXAiLCJjb2x1bW4iLCJfYiIsImlzU29ydGFibGUiLCJCb29sZWFuIiwiYWN0aXZlT3JkZXIiLCJjb2x1bW5LZXkiLCJTdHJpbmciLCJmaWx0ZXJTZWxlY3RlZCIsInVzZXJPbkhlYWRlckNlbGwiLCJvbkhlYWRlckNlbGwiLCJjb2wiLCJ1c2VyQXR0cnMiLCJvbkZpbHRlckNoYW5nZSIsIm5leHQiLCJjdXJyZW50IiwiX2RlZmluZVByb3BlcnR5IiwibGVuZ3RoIiwic29ydE9yZGVyIiwib25Tb3J0Q2xpY2siLCJjdXJyZW50U29ydGVyIiwiU1BBQ0VSX0NPTFVNTl9DTFMiLCJtYWtlU3BhY2VyVHJhbnNmb3JtIiwibWFrZVJlbmRlclRyYW5zZm9ybSIsInZhbHVlIiwidXNlVGFibGVDb2x1bW5zIiwidmFyaWFudCIsImJhc2VVc2VyQ29sdW1ucyIsImNvbHMiLCJwcmVmaXhDb2x1bW5zIiwic2hvd0V4cGFuZENvbHVtbiIsInNlbGVjdGlvblRyYW5zZm9ybSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxTQUFTQSxHQUFHLElBQUlDLElBQUksUUFBUSxtQkFBbUI7QUNBL0MsU0FBU0MsT0FBTyxRQUFrQixPQUFPO0FBQ3pDLFNBQVNDLGdCQUFnQixFQUFFQyxzQkFBc0IsUUFBUSw2QkFBNkI7QUFDdEYsU0FBU0MsYUFBYSxRQUFRLDJCQUEyQjtBQUN6RCxTQUFTQyxVQUFVLFFBQVEseUJBQXlCO0FBQ3BELFNBQVNDLFFBQVEsUUFBUSx1QkFBdUI7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LENBQUM7RUFFRixPQUFPYixPQUFPLENBQUMsWUFBSztJQUNsQixJQUFJdUcsSUFBSSxNQUFBM0QsTUFBQSxDQUFBQyxrQkFBQSxDQUFPMkQsYUFBYSxHQUFBM0Qsa0JBQUEsQ0FBS3lELGVBQWUsRUFBQztJQUNqRCxJQUFJRCxPQUFPLEtBQUssUUFBUSxFQUFFO01BQ3hCRSxJQUFJLEdBQUdOLG1CQUFtQixDQUFBLENBQUssQ0FBQ00sSUFBSSxDQUFDO0lBQ3ZDO0lBQ0EsT0FBT0EsSUFBeUM7RUFDbEQsQ0FBQyxFQUFFLENBQUNDLGFBQWEsRUFBRUYsZUFBZSxFQUFFRCxPQUFPLENBQUMsQ0FBQztBQUMvQyIsImZpbGUiOiJjb21wb25lbnRzL1RhYmxlL2NvcmUvdXNlVGFibGVDb2x1bW5zLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBTZWxlY3Rpb25Db250cm9sLCBTZWxlY3Rpb25IZWFkZXJDb250cm9sIH0gZnJvbSAnLi4vZmVhdHVyZXMvU2VsZWN0aW9uQ29sdW1uJztcbmltcG9ydCB7IEV4cGFuZFRyaWdnZXIgfSBmcm9tICcuLi9mZWF0dXJlcy9FeHBhbmRUcmlnZ2VyJztcbmltcG9ydCB7IEhlYWRlckNlbGwgfSBmcm9tICcuLi9yZW5kZXJlcnMvSGVhZGVyQ2VsbCc7XG5pbXBvcnQgeyBCb2R5Q2VsbCB9IGZyb20gJy4uL3JlbmRlcmVycy9Cb2R5Q2VsbCc7XG5pbXBvcnQgeyBUQUJMRV9ERUZBVUxUX1BSRUZJWCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBpc0NvbHVtbkdyb3VwIH0gZnJvbSAnLi9jb2x1bW5VdGlsJztcbmZ1bmN0aW9uIG1ha2VFeHBhbmRUcmFuc2Zvcm0oY29uZmlnKSB7XG4gICAgY29uc3QgeyBleHBhbmRhYmxlLCBtZXJnZWRFeHBhbmRlZFJvd0tleXMsIHRyaWdnZXJFeHBhbmQsIGdldFJvd0tleSB9ID0gY29uZmlnO1xuICAgIGNvbnN0IGN1c3RvbUV4cGFuZEljb24gPSBleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUuZXhwYW5kSWNvbjtcbiAgICBjb25zdCByb3dFeHBhbmRhYmxlID0gZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLnJvd0V4cGFuZGFibGU7XG4gICAgLy8gTygxKSBwZXItcm93IGV4cGFuc2lvbiBsb29rdXAg4oCUIGAuaW5jbHVkZXNgIGhlcmUgcmFuIG9uY2UgcGVyIHJlbmRlcmVkIHJvdy5cbiAgICBjb25zdCBleHBhbmRlZEtleVNldCA9IG5ldyBTZXQobWVyZ2VkRXhwYW5kZWRSb3dLZXlzKTtcbiAgICByZXR1cm4gKGNvbHVtbnMpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtleTogJ19fZXhwYW5kX18nLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogRVhQQU5EX0NPTFVNTl9DTFMsXG4gICAgICAgICAgICAgICAgLy8gSG9ub3IgYGV4cGFuZGFibGUuY29sdW1uV2lkdGhgIC8gYGNvbHVtblRpdGxlYCAvIGBmaXhlZGA7XG4gICAgICAgICAgICAgICAgLy8gZGVmYXVsdCB0byBhIGZpeGVkIDE2cHggY29sdW1uIChjaGV2cm9uLW9ubHksIHBhZGRpbmc6IDApLlxuICAgICAgICAgICAgICAgIHdpZHRoOiAoX2EgPSBleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUuY29sdW1uV2lkdGgpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDE2LFxuICAgICAgICAgICAgICAgIHRpdGxlOiBleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUuY29sdW1uVGl0bGUsXG4gICAgICAgICAgICAgICAgZml4ZWQ6IChleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUuZml4ZWQpID09PSB0cnVlXG4gICAgICAgICAgICAgICAgICAgID8gJ2xlZnQnXG4gICAgICAgICAgICAgICAgICAgIDogKGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5maXhlZCkgPT09IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUuZml4ZWQsXG4gICAgICAgICAgICAgICAgcmVuZGVyOiAoXywgcmVjb3JkLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBIb25vciBgcm93RXhwYW5kYWJsZWA6IHdoZW4gdGhlIHByZWRpY2F0ZSBkZW5pZXMgYSByZWNvcmQsIHJlbmRlciBub1xuICAgICAgICAgICAgICAgICAgICAvLyBjaGV2cm9uIGF0IGFsbCAodGhlIHJvdyBpcyBub24tZXhwYW5kYWJsZSkuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbkV4cGFuZCA9IHJvd0V4cGFuZGFibGUgPyByb3dFeHBhbmRhYmxlKHJlY29yZCkgOiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbkV4cGFuZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWNvcmRLZXkgPSBnZXRSb3dLZXkocmVjb3JkLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cGFuZGVkID0gZXhwYW5kZWRLZXlTZXQuaGFzKHJlY29yZEtleSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXN0b21FeHBhbmRJY29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VzdG9tRXhwYW5kSWNvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4Q2xzOiBUQUJMRV9ERUZBVUxUX1BSRUZJWCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkV4cGFuZDogKHJlYywgZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyRXhwYW5kKGdldFJvd0tleShyZWMsIGluZGV4KSwgcmVjKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChfanN4KEV4cGFuZFRyaWdnZXIsIHsgZXhwYW5kZWQ6IGV4cGFuZGVkLCByZWNvcmRLZXk6IHJlY29yZEtleSwgcmVjb3JkOiByZWNvcmQsIG9uVG9nZ2xlOiB0cmlnZ2VyRXhwYW5kIH0pKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC4uLmNvbHVtbnMsXG4gICAgICAgIF07XG4gICAgfTtcbn1cbmZ1bmN0aW9uIG1ha2VTZWxlY3Rpb25UcmFuc2Zvcm0oY29uZmlnKSB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IHsgcm93U2VsZWN0aW9uLCBtZXJnZWRTZWxlY3RlZFJvd0tleXMsIGNoZWNrYm94UHJvcHNNYXAsIGlzQWxsU2VsZWN0ZWQsIGlzSW5kZXRlcm1pbmF0ZSwgdHJpZ2dlclNlbGVjdGlvbiwgdHJpZ2dlclNlbGVjdEFsbCwgZ2V0Um93S2V5LCB9ID0gY29uZmlnO1xuICAgIGlmICghcm93U2VsZWN0aW9uKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBzZWxlY3Rpb25UeXBlID0gKF9hID0gcm93U2VsZWN0aW9uLnR5cGUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICdjaGVja2JveCc7XG4gICAgLy8gTygxKSBwZXItcm93IHNlbGVjdGlvbiBsb29rdXAg4oCUIGAuaW5jbHVkZXNgIGhlcmUgcmFuIG9uY2UgcGVyIHJlbmRlcmVkIHJvdy5cbiAgICBjb25zdCBzZWxlY3RlZEtleVNldCA9IG5ldyBTZXQobWVyZ2VkU2VsZWN0ZWRSb3dLZXlzKTtcbiAgICByZXR1cm4gKGNvbHVtbnMpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHsga2V5OiAnX19zZWxlY3Rpb25fXycsIGNsYXNzTmFtZTogU0VMRUNUSU9OX0NPTFVNTl9DTFMsIHdpZHRoOiAoX2EgPSByb3dTZWxlY3Rpb24uY29sdW1uV2lkdGgpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDE2LCBmaXhlZDogcm93U2VsZWN0aW9uLmZpeGVkID8gJ2xlZnQnIDogdW5kZWZpbmVkIH0sIChzZWxlY3Rpb25UeXBlID09PSAnY2hlY2tib3gnXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgIHJlbmRlckhlYWRlcjogKCkgPT4gKF9qc3goU2VsZWN0aW9uSGVhZGVyQ29udHJvbCwgeyBjaGVja2VkOiBpc0FsbFNlbGVjdGVkLCBpbmRldGVybWluYXRlOiBpc0luZGV0ZXJtaW5hdGUsIG9uQ2hhbmdlOiB0cmlnZ2VyU2VsZWN0QWxsIH0pKSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiB7fSkpLCB7IHJlbmRlcjogKF8sIHJlY29yZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkS2V5ID0gZ2V0Um93S2V5KHJlY29yZCwgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3dQcm9wcyA9IGNoZWNrYm94UHJvcHNNYXAuZ2V0KHJlY29yZEtleSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoX2pzeChTZWxlY3Rpb25Db250cm9sLCB7IHR5cGU6IHNlbGVjdGlvblR5cGUsIGNoZWNrZWQ6IHNlbGVjdGVkS2V5U2V0LmhhcyhyZWNvcmRLZXkpLCByb3dQcm9wczogcm93UHJvcHMsIHJlY29yZEtleTogcmVjb3JkS2V5LCBvbkNoYW5nZTogdHJpZ2dlclNlbGVjdGlvbiB9KSk7XG4gICAgICAgICAgICAgICAgfSB9KSxcbiAgICAgICAgICAgIC4uLmNvbHVtbnMsXG4gICAgICAgIF07XG4gICAgfTtcbn1cbmZ1bmN0aW9uIGFyaWFTb3J0Rm9yKG9yZGVyKSB7XG4gICAgaWYgKG9yZGVyID09PSAnYXNjZW5kJylcbiAgICAgICAgcmV0dXJuICdhc2NlbmRpbmcnO1xuICAgIGlmIChvcmRlciA9PT0gJ2Rlc2NlbmQnKVxuICAgICAgICByZXR1cm4gJ2Rlc2NlbmRpbmcnO1xuICAgIHJldHVybiAnbm9uZSc7XG59XG4vLyBTdGFibGUgZW1wdHktZmlsdGVyIHJlZmVyZW5jZS4gV2l0aG91dCB0aGlzLCBgZmlsdGVyc1trZXldID8/IFtdYCBjcmVhdGVzIGFcbi8vIGZyZXNoIGBbXWAgb24gZXZlcnkgcmVuZGVyLCB3aGljaCB0aHJhc2hlcyBgRmlsdGVyVHJpZ2dlcmAnc1xuLy8gYHVzZUVmZmVjdChbc2VsZWN0ZWRLZXlzXSlgIGFuZCBjYXVzZXMgYW4gaW5maW5pdGUgc2V0U3RhdGUgbG9vcCBhZnRlclxuLy8gY29uZmlybSAvIHJlc2V0LlxuY29uc3QgRU1QVFlfRklMVEVSX1ZBTFVFID0gW107XG5mdW5jdGlvbiBtYWtlSGVhZGVyVHJhbnNmb3JtKGNvbmZpZykge1xuICAgIGNvbnN0IHsgc2l6ZSwgc29ydGVyLCBzZXRTb3J0ZXIsIGZpbHRlcnMsIHNldEZpbHRlcnMgfSA9IGNvbmZpZztcbiAgICByZXR1cm4gKGNvbHVtbnMpID0+IGNvbHVtbnMubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgaWYgKGlzQ29sdW1uR3JvdXAoY29sdW1uKSlcbiAgICAgICAgICAgIHJldHVybiBjb2x1bW47XG4gICAgICAgIGNvbnN0IGlzU29ydGFibGUgPSBCb29sZWFuKGNvbHVtbi5zb3J0ZXIpO1xuICAgICAgICBjb25zdCBhY3RpdmVPcmRlciA9IHNvcnRlci5jb2x1bW5LZXkgPT09IGNvbHVtbi5rZXkgPyAoX2EgPSBzb3J0ZXIub3JkZXIpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG51bGwgOiBudWxsO1xuICAgICAgICBjb25zdCBjb2x1bW5LZXkgPSBjb2x1bW4ua2V5ICE9IG51bGwgPyBTdHJpbmcoY29sdW1uLmtleSkgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGZpbHRlclNlbGVjdGVkID0gY29sdW1uS2V5ICE9IG51bGwgPyAoKF9iID0gZmlsdGVyc1tjb2x1bW5LZXldKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBFTVBUWV9GSUxURVJfVkFMVUUpIDogRU1QVFlfRklMVEVSX1ZBTFVFO1xuICAgICAgICAvLyBDb21wb3NlIG9uSGVhZGVyQ2VsbCBzbyB3ZSBkb24ndCBjbG9iYmVyIHVzZXItcHJvdmlkZWQgYXR0cmlidXRlcy5cbiAgICAgICAgY29uc3QgdXNlck9uSGVhZGVyQ2VsbCA9IGNvbHVtbi5vbkhlYWRlckNlbGw7XG4gICAgICAgIGNvbnN0IG9uSGVhZGVyQ2VsbCA9IChjb2wsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBjb25zdCB1c2VyQXR0cnMgPSAoX2EgPSB1c2VyT25IZWFkZXJDZWxsID09PSBudWxsIHx8IHVzZXJPbkhlYWRlckNlbGwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHVzZXJPbkhlYWRlckNlbGwoY29sLCBpbmRleCkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHt9O1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdXNlckF0dHJzKSwgKGlzU29ydGFibGUgPyB7ICdhcmlhLXNvcnQnOiBhcmlhU29ydEZvcihhY3RpdmVPcmRlcikgfSA6IG51bGwpKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgb25GaWx0ZXJDaGFuZ2UgPSAobmV4dCkgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbHVtbktleSA9PSBudWxsKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIHNldEZpbHRlcnMoKGN1cnJlbnQpID0+IChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGN1cnJlbnQpLCB7IFtjb2x1bW5LZXldOiBuZXh0Lmxlbmd0aCA/IG5leHQgOiBudWxsIH0pKSk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGNvbHVtbiksIHsgb25IZWFkZXJDZWxsLCB0aXRsZTogY29sdW1uLnJlbmRlckhlYWRlclxuICAgICAgICAgICAgICAgID8gY29sdW1uLnJlbmRlckhlYWRlcih7IGNvbHVtbiB9KVxuICAgICAgICAgICAgICAgIDogKF9qc3goSGVhZGVyQ2VsbCwgeyBjb2x1bW46IGNvbHVtbiwgc2l6ZTogc2l6ZSwgc29ydE9yZGVyOiBhY3RpdmVPcmRlciwgb25Tb3J0Q2xpY2s6ICgpID0+IHNldFNvcnRlcigoY3VycmVudFNvcnRlcikgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbktleTogY29sdW1uLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBjdXJyZW50U29ydGVyLmNvbHVtbktleSAhPT0gY29sdW1uLmtleSB8fCBjdXJyZW50U29ydGVyLm9yZGVyID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnYXNjZW5kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY3VycmVudFNvcnRlci5vcmRlciA9PT0gJ2FzY2VuZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnZGVzY2VuZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICB9KSksIGZpbHRlclNlbGVjdGVkOiBmaWx0ZXJTZWxlY3RlZCwgb25GaWx0ZXJDaGFuZ2U6IG9uRmlsdGVyQ2hhbmdlIH0pKSB9KTtcbiAgICB9KTtcbn1cbmNvbnN0IFNQQUNFUl9DT0xVTU5fQ0xTID0gJ29tLWNvbXBvbmVudC11aS10YWJsZS1jZWxsLS1zcGFjZXInO1xuY29uc3QgRVhQQU5EX0NPTFVNTl9DTFMgPSAnb20tY29tcG9uZW50LXVpLXRhYmxlLWNlbGwtLWV4cGFuZCc7XG5jb25zdCBTRUxFQ1RJT05fQ09MVU1OX0NMUyA9ICdvbS1jb21wb25lbnQtdWktdGFibGUtY2VsbC0tc2VsZWN0aW9uJztcbmZ1bmN0aW9uIG1ha2VTcGFjZXJUcmFuc2Zvcm0oKSB7XG4gICAgcmV0dXJuIChjb2x1bW5zKSA9PiBbXG4gICAgICAgIHsga2V5OiAnX19zcGFjZXJfc3RhcnRfXycsIHdpZHRoOiAxNiwgdGl0bGU6ICcnLCBjbGFzc05hbWU6IFNQQUNFUl9DT0xVTU5fQ0xTLCByZW5kZXI6ICgpID0+IG51bGwgfSxcbiAgICAgICAgLi4uY29sdW1ucyxcbiAgICAgICAgeyBrZXk6ICdfX3NwYWNlcl9lbmRfXycsIHdpZHRoOiAxNiwgdGl0bGU6ICcnLCBjbGFzc05hbWU6IFNQQUNFUl9DT0xVTU5fQ0xTLCByZW5kZXI6ICgpID0+IG51bGwgfSxcbiAgICBdO1xufVxuZnVuY3Rpb24gbWFrZVJlbmRlclRyYW5zZm9ybSgpIHtcbiAgICByZXR1cm4gKGNvbHVtbnMpID0+IGNvbHVtbnMubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgaWYgKGlzQ29sdW1uR3JvdXAoY29sdW1uKSlcbiAgICAgICAgICAgIHJldHVybiBjb2x1bW47XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGNvbHVtbiksIHsgXG4gICAgICAgICAgICAvLyBCb2R5Q2VsbCBpcyBpbnRlbnRpb25hbGx5IENBTExFRCBhcyBhIGZ1bmN0aW9uLCBub3QgcmVuZGVyZWQgYXNcbiAgICAgICAgICAgIC8vIGA8Qm9keUNlbGwgLz5gLiBUaGUga2VybmVsJ3MgYHJlbmRlcmAgY29udHJhY3QgYWxsb3dzIHJldHVybmluZyBlaXRoZXJcbiAgICAgICAgICAgIC8vIGEgUmVhY3ROb2RlIG9yIGEgYHsgY2hpbGRyZW4sIHByb3BzIH1gIGNlbGwtc3Bhbm5pbmcgZGVzY3JpcHRvciwgYW5kXG4gICAgICAgICAgICAvLyBCb2R5Q2VsbCBmb3J3YXJkcyB0aGF0IGRlc2NyaXB0b3IgdGhyb3VnaCBmb3IgY29sU3BhbiAvIHJvd1NwYW4gc3VwcG9ydC5cbiAgICAgICAgICAgIC8vIFdyYXBwaW5nIGl0IGluIEpTWCB3b3VsZCBjb2xsYXBzZSB0aGUgZGVzY3JpcHRvciBpbnRvIGFuIGVsZW1lbnQgYW5kXG4gICAgICAgICAgICAvLyBicmVhayBjZWxsIG1lcmdpbmcg4oCUIGRvIG5vdCBcImZpeFwiIHRoaXMgaW50byBhbiBlbGVtZW50LlxuICAgICAgICAgICAgcmVuZGVyOiAodmFsdWUsIHJlY29yZCwgaW5kZXgpID0+IEJvZHlDZWxsKHtcbiAgICAgICAgICAgICAgICBjb2x1bW4sXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgcmVjb3JkLFxuICAgICAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgfSkgfSk7XG4gICAgfSk7XG59XG4vKipcbiAqIFJldHVybnMgY29sdW1ucyByZWFkeSB0byBiZSBwYXNzZWQgdG8gdGhlIHRhYmxlIGtlcm5lbC5cbiAqXG4gKiBUaGUgcmV0dXJuZWQgc2hhcGUgSVMgc3RydWN0dXJhbGx5IHRoZSBrZXJuZWwncyBgQ29sdW1uc1R5cGU8VD5gOlxuICogICAtIEV2ZXJ5IGxlYWYgY29sdW1uJ3MgYHJlbmRlcmAgaXMgcmVwbGFjZWQgYnkgYG1ha2VSZW5kZXJUcmFuc2Zvcm1gLCB3aGljaFxuICogICAgIGFsd2F5cyByZXR1cm5zIGEgYFJlYWN0Tm9kZWAgKEJvZHlDZWxsIGhhbmRsZXMgYFRhYmxlQ2VsbENvbnRlbnRWYWx1ZWAgL1xuICogICAgIGBUYWJsZVJlbmRlcmVkQ2VsbGAgZXh0cmFzIGFuZCBlbWl0cyBSZWFjdE5vZGUvUmVuZGVyZWRDZWxsKS5cbiAqICAgLSBFdmVyeSBsZWFmIGNvbHVtbidzIGB0aXRsZWAgaXMgZWl0aGVyIGEgUmVhY3ROb2RlIG9yIHJlcGxhY2VkIGJ5XG4gKiAgICAgYDxIZWFkZXJDZWxsIC8+YC5cbiAqIEJlY2F1c2UgVFMgY2FuJ3QgdHJhY2sgdGhhdCB0aG9zZSByZXBsYWNlbWVudHMgaGF2ZSBoYXBwZW5lZCBhY3Jvc3MgdGhlXG4gKiBgdHJhbnNmb3Jtcy5yZWR1Y2VgIGNoYWluLCBhIHNpbmdsZSBpbnRlcm5hbCBjYXN0IGlzIHJlcXVpcmVkIOKAlCBjYWxsIHNpdGVzIG5vXG4gKiBsb25nZXIgbmVlZCB0aGVpciBvd24gYGFzIHVua25vd24gYXMgSW50ZXJuYWxDb2x1bW5zVHlwZTxUPmAgY2FzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVRhYmxlQ29sdW1ucyhjb25maWcpIHtcbiAgICBjb25zdCB7IGNvbHVtbnMsIHZhcmlhbnQsIGV4cGFuZGFibGUsIHJvd1NlbGVjdGlvbiwgbWVyZ2VkRXhwYW5kZWRSb3dLZXlzLCBtZXJnZWRTZWxlY3RlZFJvd0tleXMsIGNoZWNrYm94UHJvcHNNYXAsIGlzQWxsU2VsZWN0ZWQsIGlzSW5kZXRlcm1pbmF0ZSwgdHJpZ2dlckV4cGFuZCwgdHJpZ2dlclNlbGVjdGlvbiwgdHJpZ2dlclNlbGVjdEFsbCwgc29ydGVyLCBzZXRTb3J0ZXIsIGZpbHRlcnMsIHNldEZpbHRlcnMsIHNpemUsIGdldFJvd0tleSwgfSA9IGNvbmZpZztcbiAgICAvLyBUaGUgdXNlcidzIGRhdGEgY29sdW1ucyBvbmx5IGRlcGVuZCBvbiB0aGUgaGVhZGVyIC8gcmVuZGVyIGlucHV0c1xuICAgIC8vIChzb3J0LCBmaWx0ZXIsIHNpemUpIOKAlCBOT1Qgb24gc2VsZWN0aW9uIG9yIGV4cGFuc2lvbiBzdGF0ZS4gTWVtb2lzaW5nIHRoZW1cbiAgICAvLyBvbiB0aGVpciBvd24gbWVhbnMgdG9nZ2xpbmcgYSBjaGVja2JveCBvciBjaGV2cm9uIG5vIGxvbmdlciByZWJ1aWxkcyBhbmRcbiAgICAvLyByZS13cmFwcyB0aGUgcmVuZGVyIGNsb3N1cmUgb2YgKmV2ZXJ5KiBkYXRhIGNvbHVtbjsgb25seSB0aGUgc21hbGxcbiAgICAvLyBzZWxlY3Rpb24vZXhwYW5kIHByZWZpeCBiZWxvdyBpcyByZWJ1aWx0LiBgbWFrZUhlYWRlclRyYW5zZm9ybWAgYW5kXG4gICAgLy8gYG1ha2VSZW5kZXJUcmFuc2Zvcm1gIGFyZSBwZXItY29sdW1uIGluZGVwZW5kZW50IG1hcHMsIHNvIGFwcGx5aW5nIHRoZW0gdG9cbiAgICAvLyB0aGUgdXNlciBjb2x1bW5zIGFuZCB0aGUgcHJlZml4IHNlcGFyYXRlbHkgYW5kIGNvbmNhdGVuYXRpbmcgaXMgZXF1aXZhbGVudFxuICAgIC8vIHRvIHRoZSBvcmlnaW5hbCBzaW5nbGUgcmVkdWNlLWNoYWluLlxuICAgIC8vXG4gICAgLy8gRGVwLWxpc3Qgbm90ZTogdGhlIHRyYW5zZm9ybSBmYWN0b3JpZXMgY2FwdHVyZSB0aGUgd2hvbGUgYGNvbmZpZ2AsIGJ1dFxuICAgIC8vIGV2ZXJ5IGNhbGxiYWNrIGluIGl0IChgc2V0U29ydGVyYCwgYHRyaWdnZXJFeHBhbmRgLCBgZ2V0Um93S2V5YCwg4oCmKSBpcyBhXG4gICAgLy8gc3RhYmxlIGB1c2VNZW1vaXplZEZuYCwgc28gbGlzdGluZyB0aGUgZ2VudWluZSB2YWx1ZSBpbnB1dHMgaXMgc3VmZmljaWVudFxuICAgIC8vIGFuZCBpbnRlbnRpb25hbC4gS2VlcCB0aGUgbGlzdHMgaW4gc3luYyB3aGVuIGFkZGluZyBpbnB1dHMuXG4gICAgY29uc3QgYmFzZVVzZXJDb2x1bW5zID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGxldCBjb2xzID0gbWFrZUhlYWRlclRyYW5zZm9ybShjb25maWcpKGNvbHVtbnMpO1xuICAgICAgICBjb2xzID0gbWFrZVJlbmRlclRyYW5zZm9ybSgpKGNvbHMpO1xuICAgICAgICByZXR1cm4gY29scztcbiAgICB9LCBbY29sdW1ucywgc29ydGVyLCBmaWx0ZXJzLCBzaXplLCBzZXRTb3J0ZXIsIHNldEZpbHRlcnNdKTtcbiAgICAvLyBUaGUgc2VsZWN0aW9uIC8gZXhwYW5kIHByZWZpeCBjYXJyaWVzIGxpdmUgc2VsZWN0ZWQvZXhwYW5kZWQgc3RhdGUgaW4gaXRzXG4gICAgLy8gcmVuZGVyIG91dHB1dCwgd2hpY2ggaXMgdGhlIHNpZ25hbCB0aGF0IHJlLXJlbmRlcnMgdGhlIGFmZmVjdGVkIHJvd3Mg4oCUIHNvIGl0XG4gICAgLy8gbXVzdCByZWJ1aWxkIG9uIGV2ZXJ5IHRvZ2dsZS4gSXQgaXMgYXQgbW9zdCB0d28gY29sdW1ucywgc28gdGhpcyBpcyBjaGVhcC5cbiAgICBjb25zdCBwcmVmaXhDb2x1bW5zID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGxldCBjb2xzID0gW107XG4gICAgICAgIGlmIChleHBhbmRhYmxlICYmIGV4cGFuZGFibGUuc2hvd0V4cGFuZENvbHVtbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGNvbHMgPSBtYWtlRXhwYW5kVHJhbnNmb3JtKGNvbmZpZykoY29scyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uVHJhbnNmb3JtID0gcm93U2VsZWN0aW9uID8gbWFrZVNlbGVjdGlvblRyYW5zZm9ybShjb25maWcpIDogbnVsbDtcbiAgICAgICAgaWYgKHNlbGVjdGlvblRyYW5zZm9ybSkge1xuICAgICAgICAgICAgY29scyA9IHNlbGVjdGlvblRyYW5zZm9ybShjb2xzKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSdW4gdGhlIHByZWZpeCB0aHJvdWdoIHRoZSBzYW1lIGhlYWRlci9yZW5kZXIgbWFwcyB0aGUgdXNlciBjb2x1bW5zIGdldCBzb1xuICAgICAgICAvLyB0aGUgZmluYWwgYXJyYXkgaXMgYnl0ZS1mb3ItYnl0ZSB0aGUgb3JpZ2luYWwgc2luZ2xlLXBpcGVsaW5lIG91dHB1dC5cbiAgICAgICAgY29scyA9IG1ha2VIZWFkZXJUcmFuc2Zvcm0oY29uZmlnKShjb2xzKTtcbiAgICAgICAgY29scyA9IG1ha2VSZW5kZXJUcmFuc2Zvcm0oKShjb2xzKTtcbiAgICAgICAgcmV0dXJuIGNvbHM7XG4gICAgfSwgW1xuICAgICAgICBleHBhbmRhYmxlLFxuICAgICAgICByb3dTZWxlY3Rpb24sXG4gICAgICAgIG1lcmdlZEV4cGFuZGVkUm93S2V5cyxcbiAgICAgICAgbWVyZ2VkU2VsZWN0ZWRSb3dLZXlzLFxuICAgICAgICBjaGVja2JveFByb3BzTWFwLFxuICAgICAgICBpc0FsbFNlbGVjdGVkLFxuICAgICAgICBpc0luZGV0ZXJtaW5hdGUsXG4gICAgICAgIHRyaWdnZXJFeHBhbmQsXG4gICAgICAgIHRyaWdnZXJTZWxlY3Rpb24sXG4gICAgICAgIHRyaWdnZXJTZWxlY3RBbGwsXG4gICAgICAgIHNvcnRlcixcbiAgICAgICAgc2V0U29ydGVyLFxuICAgICAgICBmaWx0ZXJzLFxuICAgICAgICBzZXRGaWx0ZXJzLFxuICAgICAgICBzaXplLFxuICAgICAgICBnZXRSb3dLZXksXG4gICAgXSk7XG4gICAgcmV0dXJuIHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBsZXQgY29scyA9IFsuLi5wcmVmaXhDb2x1bW5zLCAuLi5iYXNlVXNlckNvbHVtbnNdO1xuICAgICAgICBpZiAodmFyaWFudCA9PT0gJ3N0cm9rZScpIHtcbiAgICAgICAgICAgIGNvbHMgPSBtYWtlU3BhY2VyVHJhbnNmb3JtKCkoY29scyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbHM7XG4gICAgfSwgW3ByZWZpeENvbHVtbnMsIGJhc2VVc2VyQ29sdW1ucywgdmFyaWFudF0pO1xufSIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==