@1money/component-ui 0.0.69 → 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 (219) 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/Icons/Wrapper.js +6 -4
  15. package/es/components/Icons/constants.d.ts +11 -0
  16. package/es/components/Icons/constants.js +32 -0
  17. package/es/components/Icons/index.d.ts +2 -0
  18. package/es/components/Icons/index.js +2 -1
  19. package/es/components/Icons/interface.d.ts +8 -1
  20. package/es/components/Input/Amount/Amount.js +2 -2
  21. package/es/components/Input/Input/Input.js +3 -2
  22. package/es/components/Input/Mask/Mask.js +3 -2
  23. package/es/components/Input/OTP/OTP.js +3 -2
  24. package/es/components/Input/Password/Password.js +3 -2
  25. package/es/components/Input/Search/Search.js +3 -2
  26. package/es/components/Input/TextArea/TextArea.js +3 -2
  27. package/es/components/Input/Trade/Trade.js +2 -2
  28. package/es/components/Input/useAmountInput.js +4 -2
  29. package/es/components/Input/useSyncRef.js +2 -2
  30. package/es/components/Navigation/Nav.js +2 -2
  31. package/es/components/Navigation/Navigation.js +5 -2
  32. package/es/components/Pagination/Pagination.js +2 -2
  33. package/es/components/Pagination/usePagination.js +3 -2
  34. package/es/components/Popconfirm/Popconfirm.js +2 -2
  35. package/es/components/Portal/Portal.js +2 -2
  36. package/es/components/ProForm/ProForm.js +6 -3
  37. package/es/components/ProForm/ProFormGroup.js +2 -2
  38. package/es/components/ProForm/ProFormList.js +3 -2
  39. package/es/components/ProForm/Submitter.js +2 -2
  40. package/es/components/ProForm/core/constants.d.ts +6 -0
  41. package/es/components/ProForm/core/constants.js +7 -1
  42. package/es/components/ProForm/core/hooks/useForm.js +25 -195
  43. package/es/components/ProForm/core/hooks/useFormCore.js +14 -142
  44. package/es/components/ProForm/core/pathUtils.d.ts +6 -0
  45. package/es/components/ProForm/core/pathUtils.js +59 -0
  46. package/es/components/ProForm/core/runRules.d.ts +13 -0
  47. package/es/components/ProForm/core/runRules.js +186 -0
  48. package/es/components/ProForm/core/useFormItem.js +10 -28
  49. package/es/components/ProForm/fields/createProFormField.js +43 -57
  50. package/es/components/ProForm/hooks/useFieldRequest.js +7 -5
  51. package/es/components/ProForm/layouts/QueryFilter.js +3 -2
  52. package/es/components/ProForm/layouts/useOverlayForm.js +23 -21
  53. package/es/components/ProForm/utils.d.ts +2 -2
  54. package/es/components/ProForm/utils.js +5 -51
  55. package/es/components/ProTable/ProTable.js +3 -2
  56. package/es/components/ProTable/core/useAwaitableReload.js +3 -2
  57. package/es/components/ProTable/useFetchData.js +4 -2
  58. package/es/components/Radio/Radio.js +3 -2
  59. package/es/components/Radio/RadioGroup.js +3 -2
  60. package/es/components/ResizeObserver/useResizeObserver.js +2 -2
  61. package/es/components/Segment/Segment.js +4 -2
  62. package/es/components/Select/Select.js +3 -2
  63. package/es/components/Select/SelectCustom.js +2 -2
  64. package/es/components/Select/useSelectShell.js +3 -2
  65. package/es/components/Slider/Slider.js +3 -2
  66. package/es/components/Switch/Switch.js +3 -2
  67. package/es/components/Table/Table.js +14 -28
  68. package/es/components/Table/VirtualTable.js +18 -28
  69. package/es/components/Table/core/columnUtil.d.ts +9 -0
  70. package/es/components/Table/core/columnUtil.js +34 -0
  71. package/es/components/Table/core/useTableColumns.d.ts +4 -13
  72. package/es/components/Table/core/useTableColumns.js +55 -24
  73. package/es/components/Table/core/useTableDataPipeline.d.ts +11 -16
  74. package/es/components/Table/core/useTableDataPipeline.js +66 -73
  75. package/es/components/Table/core/useTableExpand.js +3 -2
  76. package/es/components/Table/core/useTableSelection.js +7 -4
  77. package/es/components/Table/core/useTableSetup.js +4 -2
  78. package/es/components/Table/features/ExpandTrigger.d.ts +9 -3
  79. package/es/components/Table/features/ExpandTrigger.js +14 -8
  80. package/es/components/Table/features/FilterTrigger.js +21 -17
  81. package/es/components/Table/features/SelectionColumn.d.ts +11 -6
  82. package/es/components/Table/features/SelectionColumn.js +12 -5
  83. package/es/components/Table/features/SortTrigger.d.ts +4 -2
  84. package/es/components/Table/features/SortTrigger.js +8 -3
  85. package/es/components/Table/internal/kernel/Body/MeasureCell.js +2 -2
  86. package/es/components/Table/internal/kernel/Cell/index.js +2 -2
  87. package/es/components/Table/internal/kernel/Table.js +3 -3
  88. package/es/components/Table/internal/kernel/VirtualTable/index.js +2 -2
  89. package/es/components/Table/internal/kernel/hooks/useRowInfo.js +2 -2
  90. package/es/components/Table/internal/kernel/selector-context/context.js +3 -3
  91. package/es/components/Table/renderers/HeaderCell.js +3 -2
  92. package/es/components/Table/renderers/TableShell.d.ts +13 -0
  93. package/es/components/Table/renderers/TableShell.js +25 -0
  94. package/es/components/Table/style/Table.css +3 -0
  95. package/es/components/Tabs/Tabs.js +4 -2
  96. package/es/components/Tooltip/Tooltip.js +3 -2
  97. package/es/components/Tour/Tour.js +3 -2
  98. package/es/components/Trigger/Trigger.js +3 -2
  99. package/es/components/Typography/Typography.js +2 -2
  100. package/es/components/Typography/useTypographyEnhancements.js +3 -2
  101. package/es/components/Upload/Upload.js +2 -2
  102. package/es/components/Upload/UploadFileBar.js +2 -2
  103. package/es/components/VirtualList/VirtualList.js +3 -2
  104. package/es/components/VirtualList/hooks/useMobileTouchMove.js +2 -2
  105. package/es/components/VirtualList/hooks/useScrollTo.js +2 -2
  106. package/es/index.css +1 -1
  107. package/es/index.d.ts +1 -1
  108. package/es/index.js +1 -1
  109. package/lib/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +9 -8
  110. package/lib/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +3 -3
  111. package/lib/business/Select/Network/NetworkSelect.js +3 -3
  112. package/lib/components/Accordion/Accordion.js +5 -4
  113. package/lib/components/Calendar/Calendar.js +6 -5
  114. package/lib/components/Carousel/Carousel.js +5 -4
  115. package/lib/components/Checkbox/BaseCheckbox.js +5 -4
  116. package/lib/components/Checkbox/Checkbox.js +3 -3
  117. package/lib/components/Checkbox/CheckboxGroup.js +7 -6
  118. package/lib/components/CoachMark/CoachMark.js +7 -6
  119. package/lib/components/Copy/Copy.js +3 -3
  120. package/lib/components/Dialog/Dialog.js +6 -6
  121. package/lib/components/Drawer/Drawer.js +10 -10
  122. package/lib/components/Icons/Wrapper.js +6 -4
  123. package/lib/components/Icons/constants.d.ts +11 -0
  124. package/lib/components/Icons/constants.js +38 -0
  125. package/lib/components/Icons/index.d.ts +2 -0
  126. package/lib/components/Icons/index.js +10 -2
  127. package/lib/components/Icons/interface.d.ts +8 -1
  128. package/lib/components/Input/Amount/Amount.js +6 -5
  129. package/lib/components/Input/Input/Input.js +7 -6
  130. package/lib/components/Input/Mask/Mask.js +9 -8
  131. package/lib/components/Input/OTP/OTP.js +9 -8
  132. package/lib/components/Input/Password/Password.js +6 -5
  133. package/lib/components/Input/Search/Search.js +8 -7
  134. package/lib/components/Input/TextArea/TextArea.js +5 -4
  135. package/lib/components/Input/Trade/Trade.js +5 -4
  136. package/lib/components/Input/useAmountInput.js +13 -11
  137. package/lib/components/Input/useSyncRef.js +4 -3
  138. package/lib/components/Navigation/Nav.js +3 -3
  139. package/lib/components/Navigation/Navigation.js +10 -7
  140. package/lib/components/Pagination/Pagination.js +4 -3
  141. package/lib/components/Pagination/usePagination.js +7 -6
  142. package/lib/components/Popconfirm/Popconfirm.js +3 -3
  143. package/lib/components/Portal/Portal.js +4 -4
  144. package/lib/components/ProForm/ProForm.js +14 -11
  145. package/lib/components/ProForm/ProFormGroup.js +3 -3
  146. package/lib/components/ProForm/ProFormList.js +10 -9
  147. package/lib/components/ProForm/Submitter.js +4 -4
  148. package/lib/components/ProForm/core/constants.d.ts +6 -0
  149. package/lib/components/ProForm/core/constants.js +8 -2
  150. package/lib/components/ProForm/core/hooks/useForm.js +36 -206
  151. package/lib/components/ProForm/core/hooks/useFormCore.js +32 -160
  152. package/lib/components/ProForm/core/pathUtils.d.ts +6 -0
  153. package/lib/components/ProForm/core/pathUtils.js +68 -0
  154. package/lib/components/ProForm/core/runRules.d.ts +13 -0
  155. package/lib/components/ProForm/core/runRules.js +194 -0
  156. package/lib/components/ProForm/core/useFormItem.js +15 -33
  157. package/lib/components/ProForm/fields/createProFormField.js +42 -56
  158. package/lib/components/ProForm/hooks/useFieldRequest.js +9 -7
  159. package/lib/components/ProForm/layouts/QueryFilter.js +8 -7
  160. package/lib/components/ProForm/layouts/useOverlayForm.js +27 -27
  161. package/lib/components/ProForm/utils.d.ts +2 -2
  162. package/lib/components/ProForm/utils.js +20 -55
  163. package/lib/components/ProTable/ProTable.js +10 -9
  164. package/lib/components/ProTable/core/useAwaitableReload.js +6 -5
  165. package/lib/components/ProTable/useFetchData.js +15 -13
  166. package/lib/components/Radio/Radio.js +6 -5
  167. package/lib/components/Radio/RadioGroup.js +5 -4
  168. package/lib/components/ResizeObserver/useResizeObserver.js +4 -3
  169. package/lib/components/Segment/Segment.js +7 -5
  170. package/lib/components/Select/Select.js +23 -22
  171. package/lib/components/Select/SelectCustom.js +8 -8
  172. package/lib/components/Select/useSelectShell.js +5 -4
  173. package/lib/components/Slider/Slider.js +6 -5
  174. package/lib/components/Switch/Switch.js +5 -4
  175. package/lib/components/Table/Table.js +13 -27
  176. package/lib/components/Table/VirtualTable.js +17 -27
  177. package/lib/components/Table/core/columnUtil.d.ts +9 -0
  178. package/lib/components/Table/core/columnUtil.js +42 -0
  179. package/lib/components/Table/core/useTableColumns.d.ts +4 -13
  180. package/lib/components/Table/core/useTableColumns.js +57 -26
  181. package/lib/components/Table/core/useTableDataPipeline.d.ts +11 -16
  182. package/lib/components/Table/core/useTableDataPipeline.js +73 -80
  183. package/lib/components/Table/core/useTableExpand.js +6 -5
  184. package/lib/components/Table/core/useTableSelection.js +13 -10
  185. package/lib/components/Table/core/useTableSetup.js +8 -5
  186. package/lib/components/Table/features/ExpandTrigger.d.ts +9 -3
  187. package/lib/components/Table/features/ExpandTrigger.js +14 -8
  188. package/lib/components/Table/features/FilterTrigger.js +21 -17
  189. package/lib/components/Table/features/SelectionColumn.d.ts +11 -6
  190. package/lib/components/Table/features/SelectionColumn.js +12 -5
  191. package/lib/components/Table/features/SortTrigger.d.ts +4 -2
  192. package/lib/components/Table/features/SortTrigger.js +8 -3
  193. package/lib/components/Table/internal/kernel/Body/MeasureCell.js +3 -3
  194. package/lib/components/Table/internal/kernel/Cell/index.js +4 -4
  195. package/lib/components/Table/internal/kernel/Table.js +7 -6
  196. package/lib/components/Table/internal/kernel/VirtualTable/index.js +4 -4
  197. package/lib/components/Table/internal/kernel/hooks/useRowInfo.js +3 -3
  198. package/lib/components/Table/internal/kernel/selector-context/context.js +6 -5
  199. package/lib/components/Table/renderers/HeaderCell.js +3 -2
  200. package/lib/components/Table/renderers/TableShell.d.ts +13 -0
  201. package/lib/components/Table/renderers/TableShell.js +31 -0
  202. package/lib/components/Table/style/Table.css +3 -0
  203. package/lib/components/Tabs/Tabs.js +7 -5
  204. package/lib/components/Tooltip/Tooltip.js +5 -4
  205. package/lib/components/Tour/Tour.js +7 -6
  206. package/lib/components/Trigger/Trigger.js +5 -4
  207. package/lib/components/Typography/Typography.js +5 -4
  208. package/lib/components/Typography/useTypographyEnhancements.js +8 -7
  209. package/lib/components/Upload/Upload.js +5 -4
  210. package/lib/components/Upload/UploadFileBar.js +4 -3
  211. package/lib/components/VirtualList/VirtualList.js +8 -7
  212. package/lib/components/VirtualList/hooks/useMobileTouchMove.js +4 -3
  213. package/lib/components/VirtualList/hooks/useScrollTo.js +3 -3
  214. package/lib/index.css +1 -1
  215. package/lib/index.d.ts +1 -1
  216. package/lib/index.js +1 -1
  217. package/package.json +2 -2
  218. package/scripts/mcp-server/examples.generated.json +12 -6
  219. package/scripts/mcp-server/index.generated.json +45 -3
@@ -12,7 +12,8 @@ var __rest = this && this.__rest || function (s, e) {
12
12
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
13
  import { clsx } from 'clsx';
14
14
  import ResizeObserver from '../ResizeObserver';
15
- import { useLayoutEffect, useEventCallback } from '@1money/hooks';
15
+ import useLayoutEffect from '@1money/hooks/useLayoutEffect';
16
+ import useEventCallback from '@1money/hooks/useEventCallback';
16
17
  import * as React from 'react';
17
18
  import { useRef, useState } from 'react';
18
19
  import { flushSync } from 'react-dom';
@@ -526,4 +527,4 @@ var VirtualListBase = /*#__PURE__*/React.forwardRef(RawList);
526
527
  VirtualListBase.displayName = VIRTUAL_LIST_COMPONENT_NAME;
527
528
  var VirtualList = /*#__PURE__*/React.memo(VirtualListBase);
528
529
  export default VirtualList;
529
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVmlydHVhbExpc3QvVmlydHVhbExpc3QuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1ZpcnR1YWxMaXN0L1ZpcnR1YWxMaXN0LnRzeCJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJjbHN4IiwiUmVzaXplT2JzZXJ2ZXIiLCJ1c2VMYXlvdXRFZmZlY3QiLCJ1c2VFdmVudENhbGxiYWNrIiwiUmVhY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImZsdXNoU3luYyIsIkZpbGxlciIsInVzZUNoaWxkcmVuIiwidXNlRGlmZkl0ZW0iLCJ1c2VGcmFtZVdoZWVsIiwidXNlR2V0U2l6ZSIsInVzZUhlaWdodHMiLCJ1c2VNb2JpbGVUb3VjaE1vdmUiLCJ1c2VPcmlnaW5TY3JvbGwiLCJ1c2VTY3JvbGxEcmFnIiwidXNlU2Nyb2xsVG8iLCJTY3JvbGxCYXIiLCJnZXRTcGluU2l6ZSIsIlZJUlRVQUxfTElTVF9DT01QT05FTlRfTkFNRSIsIlZJUlRVQUxfTElTVF9QUkVGSVhDTFMiLCJFTVBUWV9EQVRBIiwiU2Nyb2xsU3R5bGUiLCJvdmVyZmxvd1kiLCJvdmVyZmxvd0FuY2hvciIsIlJhd0xpc3QiLCJwcm9wcyIsInJlZiIsIl9wcm9wcyRwcmVmaXhDbHMiLCJwcmVmaXhDbHMiLCJjbGFzc05hbWUiLCJoZWlnaHQiLCJpdGVtSGVpZ2h0IiwiX3Byb3BzJGZ1bGxIZWlnaHQiLCJmdWxsSGVpZ2h0Iiwic3R5bGUiLCJkYXRhIiwiY2hpbGRyZW4iLCJpdGVtS2V5IiwidmlydHVhbCIsImRpcmVjdGlvbiIsInNjcm9sbFdpZHRoIiwiX3Byb3BzJGNvbXBvbmVudCIsImNvbXBvbmVudCIsIkNvbXBvbmVudCIsIm9uU2Nyb2xsIiwib25WaXJ0dWFsU2Nyb2xsIiwib25WaXNpYmxlQ2hhbmdlIiwiaW5uZXJQcm9wcyIsImV4dHJhUmVuZGVyIiwic3R5bGVzIiwiX3Byb3BzJHNob3dTY3JvbGxCYXIiLCJzaG93U2Nyb2xsQmFyIiwicmVzdFByb3BzIiwiZ2V0S2V5IiwidXNlQ2FsbGJhY2siLCJpdGVtIiwiX3VzZUhlaWdodHMiLCJ1bmRlZmluZWQiLCJfdXNlSGVpZ2h0czIiLCJfc2xpY2VkVG9BcnJheSIsInNldEluc3RhbmNlUmVmIiwiY29sbGVjdEhlaWdodCIsImhlaWdodHMiLCJoZWlnaHRVcGRhdGVkTWFyayIsInVzZVZpcnR1YWwiLCJjb250YWluZXJIZWlnaHQiLCJ1c2VNZW1vIiwidmFsdWVzIiwibWFwcyIsInJlZHVjZSIsInRvdGFsIiwiY3VyciIsImlkIiwiaW5WaXJ0dWFsIiwiTWF0aCIsIm1heCIsImlzUlRMIiwibWVyZ2VkQ2xhc3NOYW1lIiwiX2RlZmluZVByb3BlcnR5IiwiY29uY2F0IiwibWVyZ2VkRGF0YSIsImNvbXBvbmVudFJlZiIsImZpbGxlcklubmVyUmVmIiwiY29udGFpbmVyUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIm9mZnNldFRvcCIsInNldE9mZnNldFRvcCIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0Iiwib2Zmc2V0TGVmdCIsInNldE9mZnNldExlZnQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInNjcm9sbE1vdmluZyIsInNldFNjcm9sbE1vdmluZyIsIm9uU2Nyb2xsYmFyU3RhcnRNb3ZlIiwib25TY3JvbGxiYXJTdG9wTW92ZSIsInNoYXJlZENvbmZpZyIsInN5bmNTY3JvbGxUb3AiLCJuZXdUb3AiLCJvcmlnaW4iLCJ2YWx1ZSIsImFsaWduZWRUb3AiLCJrZWVwSW5SYW5nZSIsImN1cnJlbnQiLCJzY3JvbGxUb3AiLCJyYW5nZVJlZiIsInN0YXJ0IiwiZW5kIiwiZGlmZkl0ZW1SZWYiLCJfdXNlRGlmZkl0ZW0iLCJfdXNlRGlmZkl0ZW0yIiwiZGlmZkl0ZW0iLCJfUmVhY3QkdXNlTWVtbyIsIl9hIiwic2Nyb2xsSGVpZ2h0Iiwib2Zmc2V0Iiwib2Zmc2V0SGVpZ2h0IiwiaXRlbVRvcCIsInN0YXJ0SW5kZXgiLCJzdGFydE9mZnNldCIsImVuZEluZGV4IiwiZGF0YUxlbiIsImtleSIsImNhY2hlSGVpZ2h0IiwiZ2V0IiwiY3VycmVudEl0ZW1Cb3R0b20iLCJjZWlsIiwibWluIiwiZmlsbGVyT2Zmc2V0IiwiY2hhbmdlZFJlY29yZCIsImdldFJlY29yZCIsInNpemUiLCJyZWNvcmRLZXkiLCJBcnJheSIsImZyb20iLCJrZXlzIiwicHJldkNhY2hlSGVpZ2h0Iiwic3RhcnRJdGVtIiwic3RhcnRJbmRleEtleSIsInJlYWxTdGFydEhlaWdodCIsImRpZmZIZWlnaHQiLCJvcmkiLCJyZXNldFJlY29yZCIsIl9SZWFjdCR1c2VTdGF0ZSIsIndpZHRoIiwiX1JlYWN0JHVzZVN0YXRlMiIsInNldFNpemUiLCJvbkhvbGRlclJlc2l6ZSIsInNpemVJbmZvIiwib2Zmc2V0V2lkdGgiLCJ2ZXJ0aWNhbFNjcm9sbEJhclJlZiIsImhvcml6b250YWxTY3JvbGxCYXJSZWYiLCJob3Jpem9udGFsU2Nyb2xsQmFyU3BpblNpemUiLCJ2ZXJ0aWNhbFNjcm9sbEJhclNwaW5TaXplIiwibWF4U2Nyb2xsSGVpZ2h0IiwibWF4U2Nyb2xsSGVpZ2h0UmVmIiwibmV3U2Nyb2xsVG9wIiwiTnVtYmVyIiwiaXNOYU4iLCJpc1Njcm9sbEF0VG9wIiwiaXNTY3JvbGxBdEJvdHRvbSIsImlzU2Nyb2xsQXRMZWZ0IiwiaXNTY3JvbGxBdFJpZ2h0Iiwib3JpZ2luU2Nyb2xsIiwiZ2V0VmlydHVhbFNjcm9sbEluZm8iLCJ4IiwieSIsImxhc3RWaXJ0dWFsU2Nyb2xsSW5mb1JlZiIsInRyaWdnZXJTY3JvbGwiLCJwYXJhbXMiLCJuZXh0SW5mbyIsImFzc2lnbiIsIm9uU2Nyb2xsQmFyIiwibmV3U2Nyb2xsT2Zmc2V0IiwiaG9yaXpvbnRhbCIsIm5ld09mZnNldCIsIm9uRmFsbGJhY2tTY3JvbGwiLCJjdXJyZW50VGFyZ2V0Iiwia2VlcEluSG9yaXpvbnRhbFJhbmdlIiwibmV4dE9mZnNldExlZnQiLCJ0bXBPZmZzZXRMZWZ0Iiwib25XaGVlbERlbHRhIiwib2Zmc2V0WFkiLCJmcm9tSG9yaXpvbnRhbCIsImxlZnQiLCJ0b3AiLCJfdXNlRnJhbWVXaGVlbCIsIl91c2VGcmFtZVdoZWVsMiIsIm9uUmF3V2hlZWwiLCJvbkZpcmVGb3hTY3JvbGwiLCJpc0hvcml6b250YWwiLCJkZWx0YSIsInNtb290aE9mZnNldCIsImV2ZW50IiwiX3ZpcnR1YWxIYW5kbGVkIiwicHJldmVudERlZmF1bHQiLCJkZWx0YVgiLCJkZWx0YVkiLCJvbk1vek1vdXNlUGl4ZWxTY3JvbGwiLCJzY3JvbGxpbmdVcEF0VG9wIiwiZGV0YWlsIiwic2Nyb2xsaW5nRG93bkF0Qm90dG9tIiwiY29tcG9uZW50RWxlIiwiYWRkRXZlbnRMaXN0ZW5lciIsInBhc3NpdmUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwibmV3T2Zmc2V0TGVmdCIsImRlbGF5SGlkZVNjcm9sbEJhciIsIl9iIiwiZGVsYXlIaWRkZW4iLCJzY3JvbGxUbyIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJuYXRpdmVFbGVtZW50IiwiZ2V0U2Nyb2xsSW5mbyIsImNvbmZpZyIsImlzUG9zU2Nyb2xsIiwiYXJnIiwiX3R5cGVvZiIsInJlbmRlckxpc3QiLCJzbGljZSIsImdldFNpemUiLCJleHRyYUNvbnRlbnQiLCJvZmZzZXRYIiwib2Zmc2V0WSIsInJ0bCIsImxpc3RDaGlsZHJlbiIsImNvbXBvbmVudFN0eWxlIiwib3ZlcmZsb3dYIiwicG9pbnRlckV2ZW50cyIsImNvbnRhaW5lclByb3BzIiwiZGlyIiwicG9zaXRpb24iLCJvblJlc2l6ZSIsIm9uTW91c2VFbnRlciIsIm9uSW5uZXJSZXNpemUiLCJleHRyYSIsInNjcm9sbE9mZnNldCIsInNjcm9sbFJhbmdlIiwib25TdGFydE1vdmUiLCJvblN0b3BNb3ZlIiwic3BpblNpemUiLCJjb250YWluZXJTaXplIiwidmVydGljYWxTY3JvbGxCYXIiLCJ0aHVtYlN0eWxlIiwidmVydGljYWxTY3JvbGxCYXJUaHVtYiIsImhvcml6b250YWxTY3JvbGxCYXIiLCJob3Jpem9udGFsU2Nyb2xsQmFyVGh1bWIiLCJWaXJ0dWFsTGlzdEJhc2UiLCJmb3J3YXJkUmVmIiwiZGlzcGxheU5hbWUiLCJWaXJ0dWFsTGlzdCIsIm1lbW8iXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQUlBLE1BQU0sR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxNQUFNLElBQUssVUFBVUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7RUFDbEQsSUFBSUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUNWLEtBQUssSUFBSUMsQ0FBQyxJQUFJSCxDQUFDLEVBQUUsSUFBSUksTUFBTSxDQUFDQyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDUCxDQUFDLEVBQUVHLENBQUMsQ0FBQyxJQUFJRixDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUMvRUQsQ0FBQyxDQUFDQyxDQUFDLENBQUMsR0FBR0gsQ0FBQyxDQUFDRyxDQUFDLENBQUM7RUFDZixJQUFJSCxDQUFDLElBQUksSUFBSSxJQUFJLE9BQU9JLE1BQU0sQ0FBQ0sscUJBQXFCLEtBQUssVUFBVSxFQUMvRCxLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVQLENBQUMsR0FBR0MsTUFBTSxDQUFDSyxxQkFBcUIsQ0FBQ1QsQ0FBQyxDQUFDLEVBQUVVLENBQUMsR0FBR1AsQ0FBQyxDQUFDUSxNQUFNLEVBQUVELENBQUMsRUFBRSxFQUFFO0lBQ3BFLElBQUlULENBQUMsQ0FBQ08sT0FBTyxDQUFDTCxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJTixNQUFNLENBQUNDLFNBQVMsQ0FBQ08sb0JBQW9CLENBQUNMLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEVBQzFFUixD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RUE7SUFBYSxDQUFBLENBRS9CO0VBQUEsQ0FBQSxDQUFBLENBQ0c7QUFFVjtBQUVBLElBQU1zTSxlQUFlLGdCQUFHdlAsS0FBSyxDQUFDd1AsVUFBVSxDQUEwQmxPLE9BQU8sQ0FBQztBQUUxRWlPLGVBQWUsQ0FBQ0UsV0FBVyxHQUFHek8sMkJBQTJCO0FBRXpELElBQU0wTyxXQUFXLGdCQUFHMVAsS0FBSyxDQUFDMlAsSUFBSSxDQUFDSixlQUFlLENBRXZCO0FBRXZCLGVBQWVHLFdBQVciLCJmaWxlIjoiY29tcG9uZW50cy9WaXJ0dWFsTGlzdC9WaXJ0dWFsTGlzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBjbHN4IH0gZnJvbSAnY2xzeCc7XG5pbXBvcnQgUmVzaXplT2JzZXJ2ZXIgZnJvbSAnLi4vUmVzaXplT2JzZXJ2ZXInO1xuaW1wb3J0IHsgdXNlTGF5b3V0RWZmZWN0LCB1c2VFdmVudENhbGxiYWNrIH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZmx1c2hTeW5jIH0gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCBGaWxsZXIgZnJvbSAnLi9GaWxsZXInO1xuaW1wb3J0IHVzZUNoaWxkcmVuIGZyb20gJy4vaG9va3MvdXNlQ2hpbGRyZW4nO1xuaW1wb3J0IHVzZURpZmZJdGVtIGZyb20gJy4vaG9va3MvdXNlRGlmZkl0ZW0nO1xuaW1wb3J0IHVzZUZyYW1lV2hlZWwgZnJvbSAnLi9ob29rcy91c2VGcmFtZVdoZWVsJztcbmltcG9ydCB7IHVzZUdldFNpemUgfSBmcm9tICcuL2hvb2tzL3VzZUdldFNpemUnO1xuaW1wb3J0IHVzZUhlaWdodHMgZnJvbSAnLi9ob29rcy91c2VIZWlnaHRzJztcbmltcG9ydCB1c2VNb2JpbGVUb3VjaE1vdmUgZnJvbSAnLi9ob29rcy91c2VNb2JpbGVUb3VjaE1vdmUnO1xuaW1wb3J0IHVzZU9yaWdpblNjcm9sbCBmcm9tICcuL2hvb2tzL3VzZU9yaWdpblNjcm9sbCc7XG5pbXBvcnQgdXNlU2Nyb2xsRHJhZyBmcm9tICcuL2hvb2tzL3VzZVNjcm9sbERyYWcnO1xuaW1wb3J0IHVzZVNjcm9sbFRvIGZyb20gJy4vaG9va3MvdXNlU2Nyb2xsVG8nO1xuaW1wb3J0IFNjcm9sbEJhciBmcm9tICcuL1Njcm9sbEJhcic7XG5pbXBvcnQgeyBnZXRTcGluU2l6ZSB9IGZyb20gJy4vdXRpbHMvc2Nyb2xsYmFyVXRpbCc7XG5pbXBvcnQgeyBWSVJUVUFMX0xJU1RfQ09NUE9ORU5UX05BTUUsIFZJUlRVQUxfTElTVF9QUkVGSVhDTFMsIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0ICcuL3N0eWxlJztcbmNvbnN0IEVNUFRZX0RBVEEgPSBbXTtcbmNvbnN0IFNjcm9sbFN0eWxlID0ge1xuICAgIG92ZXJmbG93WTogJ2F1dG8nLFxuICAgIG92ZXJmbG93QW5jaG9yOiAnbm9uZScsXG59O1xuZXhwb3J0IGZ1bmN0aW9uIFJhd0xpc3QocHJvcHMsIHJlZikge1xuICAgIGNvbnN0IHsgcHJlZml4Q2xzID0gVklSVFVBTF9MSVNUX1BSRUZJWENMUywgY2xhc3NOYW1lLCBoZWlnaHQsIGl0ZW1IZWlnaHQsIGZ1bGxIZWlnaHQgPSB0cnVlLCBzdHlsZSwgZGF0YSwgY2hpbGRyZW4sIGl0ZW1LZXksIHZpcnR1YWwsIGRpcmVjdGlvbiwgc2Nyb2xsV2lkdGgsIGNvbXBvbmVudDogQ29tcG9uZW50ID0gJ2RpdicsIG9uU2Nyb2xsLCBvblZpcnR1YWxTY3JvbGwsIG9uVmlzaWJsZUNoYW5nZSwgaW5uZXJQcm9wcywgZXh0cmFSZW5kZXIsIHN0eWxlcywgc2hvd1Njcm9sbEJhciA9ICdvcHRpb25hbCcgfSA9IHByb3BzLCByZXN0UHJvcHMgPSBfX3Jlc3QocHJvcHMsIFtcInByZWZpeENsc1wiLCBcImNsYXNzTmFtZVwiLCBcImhlaWdodFwiLCBcIml0ZW1IZWlnaHRcIiwgXCJmdWxsSGVpZ2h0XCIsIFwic3R5bGVcIiwgXCJkYXRhXCIsIFwiY2hpbGRyZW5cIiwgXCJpdGVtS2V5XCIsIFwidmlydHVhbFwiLCBcImRpcmVjdGlvblwiLCBcInNjcm9sbFdpZHRoXCIsIFwiY29tcG9uZW50XCIsIFwib25TY3JvbGxcIiwgXCJvblZpcnR1YWxTY3JvbGxcIiwgXCJvblZpc2libGVDaGFuZ2VcIiwgXCJpbm5lclByb3BzXCIsIFwiZXh0cmFSZW5kZXJcIiwgXCJzdHlsZXNcIiwgXCJzaG93U2Nyb2xsQmFyXCJdKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IEl0ZW0gS2V5ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBnZXRLZXkgPSBSZWFjdC51c2VDYWxsYmFjaygoaXRlbSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW1LZXkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtS2V5KGl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpdGVtID09PSBudWxsIHx8IGl0ZW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGl0ZW1baXRlbUtleV07XG4gICAgfSwgW2l0ZW1LZXldKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBIZWlnaHQgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBbc2V0SW5zdGFuY2VSZWYsIGNvbGxlY3RIZWlnaHQsIGhlaWdodHMsIGhlaWdodFVwZGF0ZWRNYXJrXSA9IHVzZUhlaWdodHMoZ2V0S2V5LCB1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IE1JU0MgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgdXNlVmlydHVhbCA9ICEhKHZpcnR1YWwgIT09IGZhbHNlICYmIGhlaWdodCAmJiBpdGVtSGVpZ2h0KTtcbiAgICBjb25zdCBjb250YWluZXJIZWlnaHQgPSBSZWFjdC51c2VNZW1vKCgpID0+IE9iamVjdC52YWx1ZXMoaGVpZ2h0cy5tYXBzKS5yZWR1Y2UoKHRvdGFsLCBjdXJyKSA9PiB0b3RhbCArIGN1cnIsIDApLCBbaGVpZ2h0cy5pZF0pO1xuICAgIGNvbnN0IGluVmlydHVhbCA9IHVzZVZpcnR1YWwgJiZcbiAgICAgICAgZGF0YSAmJlxuICAgICAgICAoTWF0aC5tYXgoaXRlbUhlaWdodCAqIGRhdGEubGVuZ3RoLCBjb250YWluZXJIZWlnaHQpID4gaGVpZ2h0IHx8ICEhc2Nyb2xsV2lkdGgpO1xuICAgIGNvbnN0IGlzUlRMID0gZGlyZWN0aW9uID09PSAncnRsJztcbiAgICBjb25zdCBtZXJnZWRDbGFzc05hbWUgPSBjbHN4KHByZWZpeENscywgeyBbYCR7cHJlZml4Q2xzfS1ydGxgXTogaXNSVEwgfSwgY2xhc3NOYW1lKTtcbiAgICBjb25zdCBtZXJnZWREYXRhID0gZGF0YSB8fCBFTVBUWV9EQVRBO1xuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBmaWxsZXJJbm5lclJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBJdGVtIEtleSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgW29mZnNldFRvcCwgc2V0T2Zmc2V0VG9wXSA9IHVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtvZmZzZXRMZWZ0LCBzZXRPZmZzZXRMZWZ0XSA9IHVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtzY3JvbGxNb3ZpbmcsIHNldFNjcm9sbE1vdmluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3Qgb25TY3JvbGxiYXJTdGFydE1vdmUgPSAoKSA9PiB7XG4gICAgICAgIHNldFNjcm9sbE1vdmluZyh0cnVlKTtcbiAgICB9O1xuICAgIGNvbnN0IG9uU2Nyb2xsYmFyU3RvcE1vdmUgPSAoKSA9PiB7XG4gICAgICAgIHNldFNjcm9sbE1vdmluZyhmYWxzZSk7XG4gICAgfTtcbiAgICBjb25zdCBzaGFyZWRDb25maWcgPSB7XG4gICAgICAgIGdldEtleSxcbiAgICB9O1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IFNjcm9sbCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGZ1bmN0aW9uIHN5bmNTY3JvbGxUb3AobmV3VG9wKSB7XG4gICAgICAgIHNldE9mZnNldFRvcCgob3JpZ2luKSA9PiB7XG4gICAgICAgICAgICBsZXQgdmFsdWU7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG5ld1RvcCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3VG9wKG9yaWdpbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ld1RvcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFsaWduZWRUb3AgPSBrZWVwSW5SYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICBjb21wb25lbnRSZWYuY3VycmVudC5zY3JvbGxUb3AgPSBhbGlnbmVkVG9wO1xuICAgICAgICAgICAgcmV0dXJuIGFsaWduZWRUb3A7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBMZWdhY3kgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBQdXQgcmVmIGhlcmUgc2luY2UgdGhlIHJhbmdlIGlzIGdlbmVyYXRlIGJ5IGZvbGxvd1xuICAgIGNvbnN0IHJhbmdlUmVmID0gdXNlUmVmKHsgc3RhcnQ6IDAsIGVuZDogbWVyZ2VkRGF0YS5sZW5ndGggfSk7XG4gICAgY29uc3QgZGlmZkl0ZW1SZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgW2RpZmZJdGVtXSA9IHVzZURpZmZJdGVtKG1lcmdlZERhdGEsIGdldEtleSk7XG4gICAgZGlmZkl0ZW1SZWYuY3VycmVudCA9IGRpZmZJdGVtO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09IFZpc2libGUgQ2FsY3VsYXRpb24gPT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IHsgc2Nyb2xsSGVpZ2h0LCBzdGFydCwgZW5kLCBvZmZzZXQ6IGZpbGxlck9mZnNldCwgfSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICghdXNlVmlydHVhbCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzY3JvbGxIZWlnaHQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBzdGFydDogMCxcbiAgICAgICAgICAgICAgICBlbmQ6IG1lcmdlZERhdGEubGVuZ3RoIC0gMSxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWx3YXlzIHVzZSB2aXJ0dWFsIHNjcm9sbCBiYXIgaW4gYXZvaWQgc2hha2luZ1xuICAgICAgICBpZiAoIWluVmlydHVhbCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzY3JvbGxIZWlnaHQ6ICgoX2EgPSBmaWxsZXJJbm5lclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eub2Zmc2V0SGVpZ2h0KSB8fCAwLFxuICAgICAgICAgICAgICAgIHN0YXJ0OiAwLFxuICAgICAgICAgICAgICAgIGVuZDogbWVyZ2VkRGF0YS5sZW5ndGggLSAxLFxuICAgICAgICAgICAgICAgIG9mZnNldDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaXRlbVRvcCA9IDA7XG4gICAgICAgIGxldCBzdGFydEluZGV4O1xuICAgICAgICBsZXQgc3RhcnRPZmZzZXQ7XG4gICAgICAgIGxldCBlbmRJbmRleDtcbiAgICAgICAgY29uc3QgZGF0YUxlbiA9IG1lcmdlZERhdGEubGVuZ3RoO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGFMZW47IGkgKz0gMSkge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IG1lcmdlZERhdGFbaV07XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBnZXRLZXkoaXRlbSk7XG4gICAgICAgICAgICBjb25zdCBjYWNoZUhlaWdodCA9IGhlaWdodHMuZ2V0KGtleSk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50SXRlbUJvdHRvbSA9IGl0ZW1Ub3AgKyAoY2FjaGVIZWlnaHQgPT09IHVuZGVmaW5lZCA/IGl0ZW1IZWlnaHQgOiBjYWNoZUhlaWdodCk7XG4gICAgICAgICAgICAvLyBDaGVjayBpdGVtIHRvcCBpbiB0aGUgcmFuZ2VcbiAgICAgICAgICAgIGlmIChjdXJyZW50SXRlbUJvdHRvbSA+PSBvZmZzZXRUb3AgJiYgc3RhcnRJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQgPSBpdGVtVG9wO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQ2hlY2sgaXRlbSBib3R0b20gaW4gdGhlIHJhbmdlLiBXZSB3aWxsIHJlbmRlciBhZGRpdGlvbmFsIG9uZSBpdGVtIGZvciBtb3Rpb24gdXNhZ2VcbiAgICAgICAgICAgIGlmIChjdXJyZW50SXRlbUJvdHRvbSA+IG9mZnNldFRvcCArIGhlaWdodCAmJiBlbmRJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZW5kSW5kZXggPSBpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXRlbVRvcCA9IGN1cnJlbnRJdGVtQm90dG9tO1xuICAgICAgICB9XG4gICAgICAgIC8vIFdoZW4gc2Nyb2xsVG9wIGF0IHRoZSBlbmQgYnV0IGRhdGEgY3V0IHRvIHNtYWxsIGNvdW50IHdpbGwgcmVhY2ggdGhpc1xuICAgICAgICBpZiAoc3RhcnRJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzdGFydEluZGV4ID0gMDtcbiAgICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGVuZEluZGV4ID0gTWF0aC5jZWlsKGhlaWdodCAvIGl0ZW1IZWlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmRJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBlbmRJbmRleCA9IG1lcmdlZERhdGEubGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICAvLyBHaXZlIGNhY2hlIHRvIGltcHJvdmUgc2Nyb2xsIGV4cGVyaWVuY2VcbiAgICAgICAgZW5kSW5kZXggPSBNYXRoLm1pbihlbmRJbmRleCArIDEsIG1lcmdlZERhdGEubGVuZ3RoIC0gMSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzY3JvbGxIZWlnaHQ6IGl0ZW1Ub3AsXG4gICAgICAgICAgICBzdGFydDogc3RhcnRJbmRleCxcbiAgICAgICAgICAgIGVuZDogZW5kSW5kZXgsXG4gICAgICAgICAgICBvZmZzZXQ6IHN0YXJ0T2Zmc2V0LFxuICAgICAgICB9O1xuICAgIH0sIFtpblZpcnR1YWwsIHVzZVZpcnR1YWwsIG9mZnNldFRvcCwgbWVyZ2VkRGF0YSwgaGVpZ2h0VXBkYXRlZE1hcmssIGhlaWdodF0pO1xuICAgIHJhbmdlUmVmLmN1cnJlbnQuc3RhcnQgPSBzdGFydDtcbiAgICByYW5nZVJlZi5jdXJyZW50LmVuZCA9IGVuZDtcbiAgICAvLyBXaGVuIHNjcm9sbCB1cCwgZmlyc3QgdmlzaWJsZSBpdGVtIGdldCByZWFsIGhlaWdodCBtYXkgbm90IHNhbWUgYXMgYGl0ZW1IZWlnaHRgLFxuICAgIC8vIFdoaWNoIHdpbGwgbWFrZSBzY3JvbGwganVtcC5cbiAgICAvLyBMZXQncyBzeW5jIHNjcm9sbCB0b3AgdG8gYXZvaWQganVtcFxuICAgIFJlYWN0LnVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNoYW5nZWRSZWNvcmQgPSBoZWlnaHRzLmdldFJlY29yZCgpO1xuICAgICAgICBpZiAoY2hhbmdlZFJlY29yZC5zaXplID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCByZWNvcmRLZXkgPSBBcnJheS5mcm9tKGNoYW5nZWRSZWNvcmQua2V5cygpKVswXTtcbiAgICAgICAgICAgIGNvbnN0IHByZXZDYWNoZUhlaWdodCA9IGNoYW5nZWRSZWNvcmQuZ2V0KHJlY29yZEtleSk7XG4gICAgICAgICAgICAvLyBRdWljayBzd2l0Y2ggZGF0YSBtYXkgY2F1c2UgYHN0YXJ0YCBub3QgaW4gYG1lcmdlZERhdGFgIGFueW1vcmVcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0SXRlbSA9IG1lcmdlZERhdGFbc3RhcnRdO1xuICAgICAgICAgICAgaWYgKHN0YXJ0SXRlbSAmJiBwcmV2Q2FjaGVIZWlnaHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0SW5kZXhLZXkgPSBnZXRLZXkoc3RhcnRJdGVtKTtcbiAgICAgICAgICAgICAgICBpZiAoc3RhcnRJbmRleEtleSA9PT0gcmVjb3JkS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlYWxTdGFydEhlaWdodCA9IGhlaWdodHMuZ2V0KHJlY29yZEtleSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpZmZIZWlnaHQgPSByZWFsU3RhcnRIZWlnaHQgLSBpdGVtSGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBzeW5jU2Nyb2xsVG9wKChvcmkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcmkgKyBkaWZmSGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaGVpZ2h0cy5yZXNldFJlY29yZCgpO1xuICAgIH0sIFtzY3JvbGxIZWlnaHRdKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gU2l6ZSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBbc2l6ZSwgc2V0U2l6ZV0gPSBSZWFjdC51c2VTdGF0ZSh7IHdpZHRoOiAwLCBoZWlnaHQ6IGhlaWdodCAhPT0gbnVsbCAmJiBoZWlnaHQgIT09IHZvaWQgMCA/IGhlaWdodCA6IDAgfSk7XG4gICAgY29uc3Qgb25Ib2xkZXJSZXNpemUgPSAoc2l6ZUluZm8pID0+IHtcbiAgICAgICAgc2V0U2l6ZSh7XG4gICAgICAgICAgICB3aWR0aDogc2l6ZUluZm8ub2Zmc2V0V2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IHNpemVJbmZvLm9mZnNldEhlaWdodCxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvLyBIYWNrIG9uIHNjcm9sbGJhciB0byBlbmFibGUgZmxhc2ggY2FsbFxuICAgIGNvbnN0IHZlcnRpY2FsU2Nyb2xsQmFyUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGhvcml6b250YWxTY3JvbGxCYXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgaG9yaXpvbnRhbFNjcm9sbEJhclNwaW5TaXplID0gUmVhY3QudXNlTWVtbygoKSA9PiBnZXRTcGluU2l6ZShzaXplLndpZHRoLCBzY3JvbGxXaWR0aCksIFtzaXplLndpZHRoLCBzY3JvbGxXaWR0aF0pO1xuICAgIGNvbnN0IHZlcnRpY2FsU2Nyb2xsQmFyU3BpblNpemUgPSBSZWFjdC51c2VNZW1vKCgpID0+IGdldFNwaW5TaXplKHNpemUuaGVpZ2h0LCBzY3JvbGxIZWlnaHQpLCBbc2l6ZS5oZWlnaHQsIHNjcm9sbEhlaWdodF0pO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gSW4gUmFuZ2UgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IG1heFNjcm9sbEhlaWdodCA9IHNjcm9sbEhlaWdodCAtIGhlaWdodDtcbiAgICBjb25zdCBtYXhTY3JvbGxIZWlnaHRSZWYgPSB1c2VSZWYobWF4U2Nyb2xsSGVpZ2h0KTtcbiAgICBtYXhTY3JvbGxIZWlnaHRSZWYuY3VycmVudCA9IG1heFNjcm9sbEhlaWdodDtcbiAgICBmdW5jdGlvbiBrZWVwSW5SYW5nZShuZXdTY3JvbGxUb3ApIHtcbiAgICAgICAgbGV0IG5ld1RvcCA9IG5ld1Njcm9sbFRvcDtcbiAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4obWF4U2Nyb2xsSGVpZ2h0UmVmLmN1cnJlbnQpKSB7XG4gICAgICAgICAgICBuZXdUb3AgPSBNYXRoLm1pbihuZXdUb3AsIG1heFNjcm9sbEhlaWdodFJlZi5jdXJyZW50KTtcbiAgICAgICAgfVxuICAgICAgICBuZXdUb3AgPSBNYXRoLm1heChuZXdUb3AsIDApO1xuICAgICAgICByZXR1cm4gbmV3VG9wO1xuICAgIH1cbiAgICBjb25zdCBpc1Njcm9sbEF0VG9wID0gb2Zmc2V0VG9wIDw9IDA7XG4gICAgY29uc3QgaXNTY3JvbGxBdEJvdHRvbSA9IG9mZnNldFRvcCA+PSBtYXhTY3JvbGxIZWlnaHQ7XG4gICAgY29uc3QgaXNTY3JvbGxBdExlZnQgPSBvZmZzZXRMZWZ0IDw9IDA7XG4gICAgY29uc3QgaXNTY3JvbGxBdFJpZ2h0ID0gISFzY3JvbGxXaWR0aCAmJiBvZmZzZXRMZWZ0ID49IHNjcm9sbFdpZHRoIC0gc2l6ZS53aWR0aDtcbiAgICBjb25zdCBvcmlnaW5TY3JvbGwgPSB1c2VPcmlnaW5TY3JvbGwoaXNTY3JvbGxBdFRvcCwgaXNTY3JvbGxBdEJvdHRvbSwgaXNTY3JvbGxBdExlZnQsIGlzU2Nyb2xsQXRSaWdodCk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gU2Nyb2xsID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgZ2V0VmlydHVhbFNjcm9sbEluZm8gPSAoKSA9PiAoe1xuICAgICAgICB4OiBpc1JUTCA/IC1vZmZzZXRMZWZ0IDogb2Zmc2V0TGVmdCxcbiAgICAgICAgeTogb2Zmc2V0VG9wLFxuICAgIH0pO1xuICAgIGNvbnN0IGxhc3RWaXJ0dWFsU2Nyb2xsSW5mb1JlZiA9IHVzZVJlZihnZXRWaXJ0dWFsU2Nyb2xsSW5mbygpKTtcbiAgICBjb25zdCB0cmlnZ2VyU2Nyb2xsID0gdXNlRXZlbnRDYWxsYmFjaygocGFyYW1zKSA9PiB7XG4gICAgICAgIGlmIChvblZpcnR1YWxTY3JvbGwpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRJbmZvID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBnZXRWaXJ0dWFsU2Nyb2xsSW5mbygpKSwgcGFyYW1zKTtcbiAgICAgICAgICAgIC8vIFRyaWdnZXIgd2hlbiBvZmZzZXQgY2hhbmdlZFxuICAgICAgICAgICAgaWYgKGxhc3RWaXJ0dWFsU2Nyb2xsSW5mb1JlZi5jdXJyZW50LnggIT09IG5leHRJbmZvLnggfHxcbiAgICAgICAgICAgICAgICBsYXN0VmlydHVhbFNjcm9sbEluZm9SZWYuY3VycmVudC55ICE9PSBuZXh0SW5mby55KSB7XG4gICAgICAgICAgICAgICAgb25WaXJ0dWFsU2Nyb2xsKG5leHRJbmZvKTtcbiAgICAgICAgICAgICAgICBsYXN0VmlydHVhbFNjcm9sbEluZm9SZWYuY3VycmVudCA9IG5leHRJbmZvO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gb25TY3JvbGxCYXIobmV3U2Nyb2xsT2Zmc2V0LCBob3Jpem9udGFsKSB7XG4gICAgICAgIGNvbnN0IG5ld09mZnNldCA9IG5ld1Njcm9sbE9mZnNldDtcbiAgICAgICAgaWYgKGhvcml6b250YWwpIHtcbiAgICAgICAgICAgIGZsdXNoU3luYygoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0T2Zmc2V0TGVmdChuZXdPZmZzZXQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0cmlnZ2VyU2Nyb2xsKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzeW5jU2Nyb2xsVG9wKG5ld09mZnNldCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gV2hlbiBkYXRhIHNpemUgcmVkdWNlLiBJdCBtYXkgdHJpZ2dlciBuYXRpdmUgc2Nyb2xsIGV2ZW50IGJhY2sgdG8gZml0IHNjcm9sbCBwb3NpdGlvblxuICAgIGZ1bmN0aW9uIG9uRmFsbGJhY2tTY3JvbGwoZSkge1xuICAgICAgICBjb25zdCB7IHNjcm9sbFRvcDogbmV3U2Nyb2xsVG9wIH0gPSBlLmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgIGlmIChuZXdTY3JvbGxUb3AgIT09IG9mZnNldFRvcCkge1xuICAgICAgICAgICAgc3luY1Njcm9sbFRvcChuZXdTY3JvbGxUb3ApO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRyaWdnZXIgb3JpZ2luIG9uU2Nyb2xsXG4gICAgICAgIG9uU2Nyb2xsID09PSBudWxsIHx8IG9uU2Nyb2xsID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblNjcm9sbChlKTtcbiAgICAgICAgdHJpZ2dlclNjcm9sbCgpO1xuICAgIH1cbiAgICBjb25zdCBrZWVwSW5Ib3Jpem9udGFsUmFuZ2UgPSAobmV4dE9mZnNldExlZnQpID0+IHtcbiAgICAgICAgbGV0IHRtcE9mZnNldExlZnQgPSBuZXh0T2Zmc2V0TGVmdDtcbiAgICAgICAgY29uc3QgbWF4ID0gc2Nyb2xsV2lkdGggPyBzY3JvbGxXaWR0aCAtIHNpemUud2lkdGggOiAwO1xuICAgICAgICB0bXBPZmZzZXRMZWZ0ID0gTWF0aC5tYXgodG1wT2Zmc2V0TGVmdCwgMCk7XG4gICAgICAgIHRtcE9mZnNldExlZnQgPSBNYXRoLm1pbih0bXBPZmZzZXRMZWZ0LCBtYXgpO1xuICAgICAgICByZXR1cm4gdG1wT2Zmc2V0TGVmdDtcbiAgICB9O1xuICAgIGNvbnN0IG9uV2hlZWxEZWx0YSA9IHVzZUV2ZW50Q2FsbGJhY2soKG9mZnNldFhZLCBmcm9tSG9yaXpvbnRhbCkgPT4ge1xuICAgICAgICBpZiAoZnJvbUhvcml6b250YWwpIHtcbiAgICAgICAgICAgIGZsdXNoU3luYygoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0T2Zmc2V0TGVmdCgobGVmdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0T2Zmc2V0TGVmdCA9IGxlZnQgKyAoaXNSVEwgPyAtb2Zmc2V0WFkgOiBvZmZzZXRYWSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBrZWVwSW5Ib3Jpem9udGFsUmFuZ2UobmV4dE9mZnNldExlZnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0cmlnZ2VyU2Nyb2xsKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzeW5jU2Nyb2xsVG9wKCh0b3ApID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdUb3AgPSB0b3AgKyBvZmZzZXRYWTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3VG9wO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBTaW5jZSB0aGlzIGFkZGVkIGluIGdsb2JhbCxzaG91bGQgdXNlIHJlZiB0byBrZWVwIHVwZGF0ZVxuICAgIGNvbnN0IFtvblJhd1doZWVsLCBvbkZpcmVGb3hTY3JvbGxdID0gdXNlRnJhbWVXaGVlbCh1c2VWaXJ0dWFsLCBpc1Njcm9sbEF0VG9wLCBpc1Njcm9sbEF0Qm90dG9tLCBpc1Njcm9sbEF0TGVmdCwgaXNTY3JvbGxBdFJpZ2h0LCAhIXNjcm9sbFdpZHRoLCBvbldoZWVsRGVsdGEpO1xuICAgIC8vIE1vYmlsZSB0b3VjaCBtb3ZlXG4gICAgdXNlTW9iaWxlVG91Y2hNb3ZlKHVzZVZpcnR1YWwsIGNvbXBvbmVudFJlZiwgKGlzSG9yaXpvbnRhbCwgZGVsdGEsIHNtb290aE9mZnNldCwgZSkgPT4ge1xuICAgICAgICBjb25zdCBldmVudCA9IGU7XG4gICAgICAgIGlmIChvcmlnaW5TY3JvbGwoaXNIb3Jpem9udGFsLCBkZWx0YSwgc21vb3RoT2Zmc2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIEZpeCBuZXN0IExpc3QgdHJpZ2dlciBUb3VjaE1vdmUgZXZlbnRcbiAgICAgICAgaWYgKCFldmVudCB8fCAhZXZlbnQuX3ZpcnR1YWxIYW5kbGVkKSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBldmVudC5fdmlydHVhbEhhbmRsZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb25SYXdXaGVlbCh7XG4gICAgICAgICAgICAgICAgcHJldmVudERlZmF1bHQoKSB7IH0sXG4gICAgICAgICAgICAgICAgZGVsdGFYOiBpc0hvcml6b250YWwgPyBkZWx0YSA6IDAsXG4gICAgICAgICAgICAgICAgZGVsdGFZOiBpc0hvcml6b250YWwgPyAwIDogZGVsdGEsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgICAvLyBNb3VzZURvd24gZHJhZyBmb3Igc2Nyb2xsXG4gICAgdXNlU2Nyb2xsRHJhZyhpblZpcnR1YWwsIGNvbXBvbmVudFJlZiwgKG9mZnNldCkgPT4ge1xuICAgICAgICBzeW5jU2Nyb2xsVG9wKCh0b3ApID0+IHRvcCArIG9mZnNldCk7XG4gICAgfSk7XG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgLy8gRmlyZWZveCBvbmx5XG4gICAgICAgIGZ1bmN0aW9uIG9uTW96TW91c2VQaXhlbFNjcm9sbChlKSB7XG4gICAgICAgICAgICAvLyBzY3JvbGxpbmcgYXQgdG9wL2JvdHRvbSBsaW1pdFxuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsaW5nVXBBdFRvcCA9IGlzU2Nyb2xsQXRUb3AgJiYgZS5kZXRhaWwgPCAwO1xuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsaW5nRG93bkF0Qm90dG9tID0gaXNTY3JvbGxBdEJvdHRvbSAmJiBlLmRldGFpbCA+IDA7XG4gICAgICAgICAgICBpZiAodXNlVmlydHVhbCAmJiAhc2Nyb2xsaW5nVXBBdFRvcCAmJiAhc2Nyb2xsaW5nRG93bkF0Qm90dG9tKSB7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudEVsZSA9IGNvbXBvbmVudFJlZi5jdXJyZW50O1xuICAgICAgICBjb21wb25lbnRFbGUuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLCBvblJhd1doZWVsLCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuICAgICAgICBjb21wb25lbnRFbGUuYWRkRXZlbnRMaXN0ZW5lcignRE9NTW91c2VTY3JvbGwnLCBvbkZpcmVGb3hTY3JvbGwsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgY29tcG9uZW50RWxlLmFkZEV2ZW50TGlzdGVuZXIoJ01vek1vdXNlUGl4ZWxTY3JvbGwnLCBvbk1vek1vdXNlUGl4ZWxTY3JvbGwsIHsgcGFzc2l2ZTogZmFsc2UgfSk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBjb21wb25lbnRFbGUucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2hlZWwnLCBvblJhd1doZWVsKTtcbiAgICAgICAgICAgIGNvbXBvbmVudEVsZS5yZW1vdmVFdmVudExpc3RlbmVyKCdET01Nb3VzZVNjcm9sbCcsIG9uRmlyZUZveFNjcm9sbCk7XG4gICAgICAgICAgICBjb21wb25lbnRFbGUucmVtb3ZlRXZlbnRMaXN0ZW5lcignTW96TW91c2VQaXhlbFNjcm9sbCcsIG9uTW96TW91c2VQaXhlbFNjcm9sbCk7XG4gICAgICAgIH07XG4gICAgfSwgW3VzZVZpcnR1YWwsIGlzU2Nyb2xsQXRUb3AsIGlzU2Nyb2xsQXRCb3R0b21dKTtcbiAgICAvLyBTeW5jIHNjcm9sbCBsZWZ0XG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHNjcm9sbFdpZHRoKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdPZmZzZXRMZWZ0ID0ga2VlcEluSG9yaXpvbnRhbFJhbmdlKG9mZnNldExlZnQpO1xuICAgICAgICAgICAgc2V0T2Zmc2V0TGVmdChuZXdPZmZzZXRMZWZ0KTtcbiAgICAgICAgICAgIHRyaWdnZXJTY3JvbGwoeyB4OiBuZXdPZmZzZXRMZWZ0IH0pO1xuICAgICAgICB9XG4gICAgfSwgW3NpemUud2lkdGgsIHNjcm9sbFdpZHRoXSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IFJlZiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgZGVsYXlIaWRlU2Nyb2xsQmFyID0gKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAoX2EgPSB2ZXJ0aWNhbFNjcm9sbEJhclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGVsYXlIaWRkZW4oKTtcbiAgICAgICAgKF9iID0gaG9yaXpvbnRhbFNjcm9sbEJhclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZGVsYXlIaWRkZW4oKTtcbiAgICB9O1xuICAgIGNvbnN0IHNjcm9sbFRvID0gdXNlU2Nyb2xsVG8oY29tcG9uZW50UmVmLCBtZXJnZWREYXRhLCBoZWlnaHRzLCBpdGVtSGVpZ2h0LCBnZXRLZXksICgpID0+IGNvbGxlY3RIZWlnaHQodHJ1ZSksIHN5bmNTY3JvbGxUb3AsIGRlbGF5SGlkZVNjcm9sbEJhcik7XG4gICAgUmVhY3QudXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsICgpID0+ICh7XG4gICAgICAgIG5hdGl2ZUVsZW1lbnQ6IGNvbnRhaW5lclJlZi5jdXJyZW50LFxuICAgICAgICBnZXRTY3JvbGxJbmZvOiBnZXRWaXJ0dWFsU2Nyb2xsSW5mbyxcbiAgICAgICAgc2Nyb2xsVG86IChjb25maWcpID0+IHtcbiAgICAgICAgICAgIGZ1bmN0aW9uIGlzUG9zU2Nyb2xsKGFyZykge1xuICAgICAgICAgICAgICAgIHJldHVybiBhcmcgJiYgdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiYgKCdsZWZ0JyBpbiBhcmcgfHwgJ3RvcCcgaW4gYXJnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1Bvc1Njcm9sbChjb25maWcpKSB7XG4gICAgICAgICAgICAgICAgLy8gU2Nyb2xsIFhcbiAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmxlZnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBzZXRPZmZzZXRMZWZ0KGtlZXBJbkhvcml6b250YWxSYW5nZShjb25maWcubGVmdCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBTY3JvbGwgWVxuICAgICAgICAgICAgICAgIHNjcm9sbFRvKGNvbmZpZy50b3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2Nyb2xsVG8oY29uZmlnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gRWZmZWN0ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLyoqIFdlIG5lZWQgdG9sZCBvdXRzaWRlIHRoYXQgc29tZSBsaXN0IG5vdCByZW5kZXJlZCAqL1xuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChvblZpc2libGVDaGFuZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbmRlckxpc3QgPSBtZXJnZWREYXRhLnNsaWNlKHN0YXJ0LCBlbmQgKyAxKTtcbiAgICAgICAgICAgIG9uVmlzaWJsZUNoYW5nZShyZW5kZXJMaXN0LCBtZXJnZWREYXRhKTtcbiAgICAgICAgfVxuICAgIH0sIFtzdGFydCwgZW5kLCBtZXJnZWREYXRhXSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gRXh0cmEgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgZ2V0U2l6ZSA9IHVzZUdldFNpemUobWVyZ2VkRGF0YSwgZ2V0S2V5LCBoZWlnaHRzLCBpdGVtSGVpZ2h0KTtcbiAgICBjb25zdCBleHRyYUNvbnRlbnQgPSBleHRyYVJlbmRlciA9PT0gbnVsbCB8fCBleHRyYVJlbmRlciA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXh0cmFSZW5kZXIoe1xuICAgICAgICBzdGFydCxcbiAgICAgICAgZW5kLFxuICAgICAgICB2aXJ0dWFsOiBpblZpcnR1YWwsXG4gICAgICAgIG9mZnNldFg6IG9mZnNldExlZnQsXG4gICAgICAgIG9mZnNldFk6IGZpbGxlck9mZnNldCxcbiAgICAgICAgcnRsOiBpc1JUTCxcbiAgICAgICAgZ2V0U2l6ZSxcbiAgICB9KTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBSZW5kZXIgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBsaXN0Q2hpbGRyZW4gPSB1c2VDaGlsZHJlbihtZXJnZWREYXRhLCBzdGFydCwgZW5kLCBzY3JvbGxXaWR0aCwgb2Zmc2V0TGVmdCwgc2V0SW5zdGFuY2VSZWYsIGNoaWxkcmVuLCBzaGFyZWRDb25maWcpO1xuICAgIGxldCBjb21wb25lbnRTdHlsZSA9IHVuZGVmaW5lZDtcbiAgICBpZiAoaGVpZ2h0KSB7XG4gICAgICAgIGNvbXBvbmVudFN0eWxlID0gT2JqZWN0LmFzc2lnbih7IFtmdWxsSGVpZ2h0ID8gJ2hlaWdodCcgOiAnbWF4SGVpZ2h0J106IGhlaWdodCB9LCBTY3JvbGxTdHlsZSk7XG4gICAgICAgIGlmICh1c2VWaXJ0dWFsKSB7XG4gICAgICAgICAgICBjb21wb25lbnRTdHlsZS5vdmVyZmxvd1kgPSAnaGlkZGVuJztcbiAgICAgICAgICAgIGlmIChzY3JvbGxXaWR0aCkge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudFN0eWxlLm92ZXJmbG93WCA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNjcm9sbE1vdmluZykge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudFN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgY29udGFpbmVyUHJvcHMgPSB7fTtcbiAgICBpZiAoaXNSVEwpIHtcbiAgICAgICAgY29udGFpbmVyUHJvcHMuZGlyID0gJ3J0bCc7XG4gICAgfVxuICAgIHJldHVybiAoX2pzeHMoXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7IHJlZjogY29udGFpbmVyUmVmLCBzdHlsZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzdHlsZSksIHsgcG9zaXRpb246ICdyZWxhdGl2ZScgfSksIGNsYXNzTmFtZTogbWVyZ2VkQ2xhc3NOYW1lIH0sIGNvbnRhaW5lclByb3BzLCByZXN0UHJvcHMsIHsgY2hpbGRyZW46IFtfanN4KFJlc2l6ZU9ic2VydmVyLCB7IG9uUmVzaXplOiBvbkhvbGRlclJlc2l6ZSwgY2hpbGRyZW46IF9qc3goQ29tcG9uZW50LCB7IGNsYXNzTmFtZTogYCR7cHJlZml4Q2xzfS1ob2xkZXJgLCBzdHlsZTogY29tcG9uZW50U3R5bGUsIHJlZjogY29tcG9uZW50UmVmLCBvblNjcm9sbDogb25GYWxsYmFja1Njcm9sbCwgb25Nb3VzZUVudGVyOiBkZWxheUhpZGVTY3JvbGxCYXIsIGNoaWxkcmVuOiBfanN4KEZpbGxlciwgeyBwcmVmaXhDbHM6IHByZWZpeENscywgaGVpZ2h0OiBzY3JvbGxIZWlnaHQsIG9mZnNldFg6IG9mZnNldExlZnQsIG9mZnNldFk6IGZpbGxlck9mZnNldCwgc2Nyb2xsV2lkdGg6IHNjcm9sbFdpZHRoLCBvbklubmVyUmVzaXplOiBjb2xsZWN0SGVpZ2h0LCByZWY6IGZpbGxlcklubmVyUmVmLCBpbm5lclByb3BzOiBpbm5lclByb3BzLCBydGw6IGlzUlRMLCBleHRyYTogZXh0cmFDb250ZW50LCBjaGlsZHJlbjogbGlzdENoaWxkcmVuIH0pIH0pIH0pLCBpblZpcnR1YWwgJiYgc2Nyb2xsSGVpZ2h0ID4gaGVpZ2h0ICYmIChfanN4KFNjcm9sbEJhciwgeyByZWY6IHZlcnRpY2FsU2Nyb2xsQmFyUmVmLCBwcmVmaXhDbHM6IHByZWZpeENscywgc2Nyb2xsT2Zmc2V0OiBvZmZzZXRUb3AsIHNjcm9sbFJhbmdlOiBzY3JvbGxIZWlnaHQsIHJ0bDogaXNSVEwsIG9uU2Nyb2xsOiBvblNjcm9sbEJhciwgb25TdGFydE1vdmU6IG9uU2Nyb2xsYmFyU3RhcnRNb3ZlLCBvblN0b3BNb3ZlOiBvblNjcm9sbGJhclN0b3BNb3ZlLCBzcGluU2l6ZTogdmVydGljYWxTY3JvbGxCYXJTcGluU2l6ZSwgY29udGFpbmVyU2l6ZTogc2l6ZS5oZWlnaHQsIHN0eWxlOiBzdHlsZXMgPT09IG51bGwgfHwgc3R5bGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHlsZXMudmVydGljYWxTY3JvbGxCYXIsIHRodW1iU3R5bGU6IHN0eWxlcyA9PT0gbnVsbCB8fCBzdHlsZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0eWxlcy52ZXJ0aWNhbFNjcm9sbEJhclRodW1iLCBzaG93U2Nyb2xsQmFyOiBzaG93U2Nyb2xsQmFyIH0pKSwgaW5WaXJ0dWFsICYmIHNjcm9sbFdpZHRoID4gc2l6ZS53aWR0aCAmJiAoX2pzeChTY3JvbGxCYXIsIHsgcmVmOiBob3Jpem9udGFsU2Nyb2xsQmFyUmVmLCBwcmVmaXhDbHM6IHByZWZpeENscywgc2Nyb2xsT2Zmc2V0OiBvZmZzZXRMZWZ0LCBzY3JvbGxSYW5nZTogc2Nyb2xsV2lkdGgsIHJ0bDogaXNSVEwsIG9uU2Nyb2xsOiBvblNjcm9sbEJhciwgb25TdGFydE1vdmU6IG9uU2Nyb2xsYmFyU3RhcnRNb3ZlLCBvblN0b3BNb3ZlOiBvblNjcm9sbGJhclN0b3BNb3ZlLCBzcGluU2l6ZTogaG9yaXpvbnRhbFNjcm9sbEJhclNwaW5TaXplLCBjb250YWluZXJTaXplOiBzaXplLndpZHRoLCBob3Jpem9udGFsOiB0cnVlLCBzdHlsZTogc3R5bGVzID09PSBudWxsIHx8IHN0eWxlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGVzLmhvcml6b250YWxTY3JvbGxCYXIsIHRodW1iU3R5bGU6IHN0eWxlcyA9PT0gbnVsbCB8fCBzdHlsZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0eWxlcy5ob3Jpem9udGFsU2Nyb2xsQmFyVGh1bWIsIHNob3dTY3JvbGxCYXI6IHNob3dTY3JvbGxCYXIgfSkpXSB9KSkpO1xufVxuY29uc3QgVmlydHVhbExpc3RCYXNlID0gUmVhY3QuZm9yd2FyZFJlZihSYXdMaXN0KTtcblZpcnR1YWxMaXN0QmFzZS5kaXNwbGF5TmFtZSA9IFZJUlRVQUxfTElTVF9DT01QT05FTlRfTkFNRTtcbmNvbnN0IFZpcnR1YWxMaXN0ID0gUmVhY3QubWVtbyhWaXJ0dWFsTGlzdEJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgVmlydHVhbExpc3Q7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
530
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVmlydHVhbExpc3QvVmlydHVhbExpc3QuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1ZpcnR1YWxMaXN0L1ZpcnR1YWxMaXN0LnRzeCJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJjbHN4IiwiUmVzaXplT2JzZXJ2ZXIiLCJ1c2VMYXlvdXRFZmZlY3QiLCJ1c2VFdmVudENhbGxiYWNrIiwiUmVhY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImZsdXNoU3luYyIsIkZpbGxlciIsInVzZUNoaWxkcmVuIiwidXNlRGlmZkl0ZW0iLCJ1c2VGcmFtZVdoZWVsIiwidXNlR2V0U2l6ZSIsInVzZUhlaWdodHMiLCJ1c2VNb2JpbGVUb3VjaE1vdmUiLCJ1c2VPcmlnaW5TY3JvbGwiLCJ1c2VTY3JvbGxEcmFnIiwidXNlU2Nyb2xsVG8iLCJTY3JvbGxCYXIiLCJnZXRTcGluU2l6ZSIsIlZJUlRVQUxfTElTVF9DT01QT05FTlRfTkFNRSIsIlZJUlRVQUxfTElTVF9QUkVGSVhDTFMiLCJFTVBUWV9EQVRBIiwiU2Nyb2xsU3R5bGUiLCJvdmVyZmxvd1kiLCJvdmVyZmxvd0FuY2hvciIsIlJhd0xpc3QiLCJwcm9wcyIsInJlZiIsIl9wcm9wcyRwcmVmaXhDbHMiLCJwcmVmaXhDbHMiLCJjbGFzc05hbWUiLCJoZWlnaHQiLCJpdGVtSGVpZ2h0IiwiX3Byb3BzJGZ1bGxIZWlnaHQiLCJmdWxsSGVpZ2h0Iiwic3R5bGUiLCJkYXRhIiwiY2hpbGRyZW4iLCJpdGVtS2V5IiwidmlydHVhbCIsImRpcmVjdGlvbiIsInNjcm9sbFdpZHRoIiwiX3Byb3BzJGNvbXBvbmVudCIsImNvbXBvbmVudCIsIkNvbXBvbmVudCIsIm9uU2Nyb2xsIiwib25WaXJ0dWFsU2Nyb2xsIiwib25WaXNpYmxlQ2hhbmdlIiwiaW5uZXJQcm9wcyIsImV4dHJhUmVuZGVyIiwic3R5bGVzIiwiX3Byb3BzJHNob3dTY3JvbGxCYXIiLCJzaG93U2Nyb2xsQmFyIiwicmVzdFByb3BzIiwiZ2V0S2V5IiwidXNlQ2FsbGJhY2siLCJpdGVtIiwiX3VzZUhlaWdodHMiLCJ1bmRlZmluZWQiLCJfdXNlSGVpZ2h0czIiLCJfc2xpY2VkVG9BcnJheSIsInNldEluc3RhbmNlUmVmIiwiY29sbGVjdEhlaWdodCIsImhlaWdodHMiLCJoZWlnaHRVcGRhdGVkTWFyayIsInVzZVZpcnR1YWwiLCJjb250YWluZXJIZWlnaHQiLCJ1c2VNZW1vIiwidmFsdWVzIiwibWFwcyIsInJlZHVjZSIsInRvdGFsIiwiY3VyciIsImlkIiwiaW5WaXJ0dWFsIiwiTWF0aCIsIm1heCIsImlzUlRMIiwibWVyZ2VkQ2xhc3NOYW1lIiwiX2RlZmluZVByb3BlcnR5IiwiY29uY2F0IiwibWVyZ2VkRGF0YSIsImNvbXBvbmVudFJlZiIsImZpbGxlcklubmVyUmVmIiwiY29udGFpbmVyUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIm9mZnNldFRvcCIsInNldE9mZnNldFRvcCIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0Iiwib2Zmc2V0TGVmdCIsInNldE9mZnNldExlZnQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInNjcm9sbE1vdmluZyIsInNldFNjcm9sbE1vdmluZyIsIm9uU2Nyb2xsYmFyU3RhcnRNb3ZlIiwib25TY3JvbGxiYXJTdG9wTW92ZSIsInNoYXJlZENvbmZpZyIsInN5bmNTY3JvbGxUb3AiLCJuZXdUb3AiLCJvcmlnaW4iLCJ2YWx1ZSIsImFsaWduZWRUb3AiLCJrZWVwSW5SYW5nZSIsImN1cnJlbnQiLCJzY3JvbGxUb3AiLCJyYW5nZVJlZiIsInN0YXJ0IiwiZW5kIiwiZGlmZkl0ZW1SZWYiLCJfdXNlRGlmZkl0ZW0iLCJfdXNlRGlmZkl0ZW0yIiwiZGlmZkl0ZW0iLCJfUmVhY3QkdXNlTWVtbyIsIl9hIiwic2Nyb2xsSGVpZ2h0Iiwib2Zmc2V0Iiwib2Zmc2V0SGVpZ2h0IiwiaXRlbVRvcCIsInN0YXJ0SW5kZXgiLCJzdGFydE9mZnNldCIsImVuZEluZGV4IiwiZGF0YUxlbiIsImtleSIsImNhY2hlSGVpZ2h0IiwiZ2V0IiwiY3VycmVudEl0ZW1Cb3R0b20iLCJjZWlsIiwibWluIiwiZmlsbGVyT2Zmc2V0IiwiY2hhbmdlZFJlY29yZCIsImdldFJlY29yZCIsInNpemUiLCJyZWNvcmRLZXkiLCJBcnJheSIsImZyb20iLCJrZXlzIiwicHJldkNhY2hlSGVpZ2h0Iiwic3RhcnRJdGVtIiwic3RhcnRJbmRleEtleSIsInJlYWxTdGFydEhlaWdodCIsImRpZmZIZWlnaHQiLCJvcmkiLCJyZXNldFJlY29yZCIsIl9SZWFjdCR1c2VTdGF0ZSIsIndpZHRoIiwiX1JlYWN0JHVzZVN0YXRlMiIsInNldFNpemUiLCJvbkhvbGRlclJlc2l6ZSIsInNpemVJbmZvIiwib2Zmc2V0V2lkdGgiLCJ2ZXJ0aWNhbFNjcm9sbEJhclJlZiIsImhvcml6b250YWxTY3JvbGxCYXJSZWYiLCJob3Jpem9udGFsU2Nyb2xsQmFyU3BpblNpemUiLCJ2ZXJ0aWNhbFNjcm9sbEJhclNwaW5TaXplIiwibWF4U2Nyb2xsSGVpZ2h0IiwibWF4U2Nyb2xsSGVpZ2h0UmVmIiwibmV3U2Nyb2xsVG9wIiwiTnVtYmVyIiwiaXNOYU4iLCJpc1Njcm9sbEF0VG9wIiwiaXNTY3JvbGxBdEJvdHRvbSIsImlzU2Nyb2xsQXRMZWZ0IiwiaXNTY3JvbGxBdFJpZ2h0Iiwib3JpZ2luU2Nyb2xsIiwiZ2V0VmlydHVhbFNjcm9sbEluZm8iLCJ4IiwieSIsImxhc3RWaXJ0dWFsU2Nyb2xsSW5mb1JlZiIsInRyaWdnZXJTY3JvbGwiLCJwYXJhbXMiLCJuZXh0SW5mbyIsImFzc2lnbiIsIm9uU2Nyb2xsQmFyIiwibmV3U2Nyb2xsT2Zmc2V0IiwiaG9yaXpvbnRhbCIsIm5ld09mZnNldCIsIm9uRmFsbGJhY2tTY3JvbGwiLCJjdXJyZW50VGFyZ2V0Iiwia2VlcEluSG9yaXpvbnRhbFJhbmdlIiwibmV4dE9mZnNldExlZnQiLCJ0bXBPZmZzZXRMZWZ0Iiwib25XaGVlbERlbHRhIiwib2Zmc2V0WFkiLCJmcm9tSG9yaXpvbnRhbCIsImxlZnQiLCJ0b3AiLCJfdXNlRnJhbWVXaGVlbCIsIl91c2VGcmFtZVdoZWVsMiIsIm9uUmF3V2hlZWwiLCJvbkZpcmVGb3hTY3JvbGwiLCJpc0hvcml6b250YWwiLCJkZWx0YSIsInNtb290aE9mZnNldCIsImV2ZW50IiwiX3ZpcnR1YWxIYW5kbGVkIiwicHJldmVudERlZmF1bHQiLCJkZWx0YVgiLCJkZWx0YVkiLCJvbk1vek1vdXNlUGl4ZWxTY3JvbGwiLCJzY3JvbGxpbmdVcEF0VG9wIiwiZGV0YWlsIiwic2Nyb2xsaW5nRG93bkF0Qm90dG9tIiwiY29tcG9uZW50RWxlIiwiYWRkRXZlbnRMaXN0ZW5lciIsInBhc3NpdmUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwibmV3T2Zmc2V0TGVmdCIsImRlbGF5SGlkZVNjcm9sbEJhciIsIl9iIiwiZGVsYXlIaWRkZW4iLCJzY3JvbGxUbyIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJuYXRpdmVFbGVtZW50IiwiZ2V0U2Nyb2xsSW5mbyIsImNvbmZpZyIsImlzUG9zU2Nyb2xsIiwiYXJnIiwiX3R5cGVvZiIsInJlbmRlckxpc3QiLCJzbGljZSIsImdldFNpemUiLCJleHRyYUNvbnRlbnQiLCJvZmZzZXRYIiwib2Zmc2V0WSIsInJ0bCIsImxpc3RDaGlsZHJlbiIsImNvbXBvbmVudFN0eWxlIiwib3ZlcmZsb3dYIiwicG9pbnRlckV2ZW50cyIsImNvbnRhaW5lclByb3BzIiwiZGlyIiwicG9zaXRpb24iLCJvblJlc2l6ZSIsIm9uTW91c2VFbnRlciIsIm9uSW5uZXJSZXNpemUiLCJleHRyYSIsInNjcm9sbE9mZnNldCIsInNjcm9sbFJhbmdlIiwib25TdGFydE1vdmUiLCJvblN0b3BNb3ZlIiwic3BpblNpemUiLCJjb250YWluZXJTaXplIiwidmVydGljYWxTY3JvbGxCYXIiLCJ0aHVtYlN0eWxlIiwidmVydGljYWxTY3JvbGxCYXJUaHVtYiIsImhvcml6b250YWxTY3JvbGxCYXIiLCJob3Jpem9udGFsU2Nyb2xsQmFyVGh1bWIiLCJWaXJ0dWFsTGlzdEJhc2UiLCJmb3J3YXJkUmVmIiwiZGlzcGxheU5hbWUiLCJWaXJ0dWFsTGlzdCIsIm1lbW8iXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQUlBLE1BQU0sR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxNQUFNLElBQUssVUFBVUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7RUFDbEQsSUFBSUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUNWLEtBQUssSUFBSUMsQ0FBQyxJQUFJSCxDQUFDLEVBQUUsSUFBSUksTUFBTSxDQUFDQyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDUCxDQUFDLEVBQUVHLENBQUMsQ0FBQyxJQUFJRixDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUMvRUQsQ0FBQyxDQUFDQyxDQUFDLENBQUMsR0FBR0gsQ0FBQyxDQUFDRyxDQUFDLENBQUM7RUFDZixJQUFJSCxDQUFDLElBQUksSUFBSSxJQUFJLE9BQU9JLE1BQU0sQ0FBQ0sscUJBQXFCLEtBQUssVUFBVSxFQUMvRCxLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVQLENBQUMsR0FBR0MsTUFBTSxDQUFDSyxxQkFBcUIsQ0FBQ1QsQ0FBQyxDQUFDLEVBQUVVLENBQUMsR0FBR1AsQ0FBQyxDQUFDUSxNQUFNLEVBQUVELENBQUMsRUFBRSxFQUFFO0lBQ3BFLElBQUlULENBQUMsQ0FBQ08sT0FBTyxDQUFDTCxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJTixNQUFNLENBQUNDLFNBQVMsQ0FBQ08sb0JBQW9CLENBQUNMLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEVBQzFFUixD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QXdCO01BQzVDck0sYUFBYSxFQUFFQTtJQUFhLENBQUEsQ0FFL0I7RUFBQSxDQUFBLENBQUEsQ0FDRztBQUVWO0FBRUEsSUFBTXNNLGVBQWUsZ0JBQUd2UCxLQUFLLENBQUN3UCxVQUFVLENBQTBCbE8sT0FBTyxDQUFDO0FBRTFFaU8sZUFBZSxDQUFDRSxXQUFXLEdBQUd6TywyQkFBMkI7QUFFekQsSUFBTTBPLFdBQVcsZ0JBQUcxUCxLQUFLLENBQUMyUCxJQUFJLENBQUNKLGVBQWUsQ0FFdkI7QUFFdkIsZUFBZUcsV0FBVyIsImZpbGUiOiJjb21wb25lbnRzL1ZpcnR1YWxMaXN0L1ZpcnR1YWxMaXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGNsc3ggfSBmcm9tICdjbHN4JztcbmltcG9ydCBSZXNpemVPYnNlcnZlciBmcm9tICcuLi9SZXNpemVPYnNlcnZlcic7XG5pbXBvcnQgdXNlTGF5b3V0RWZmZWN0IGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlTGF5b3V0RWZmZWN0JztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZmx1c2hTeW5jIH0gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCBGaWxsZXIgZnJvbSAnLi9GaWxsZXInO1xuaW1wb3J0IHVzZUNoaWxkcmVuIGZyb20gJy4vaG9va3MvdXNlQ2hpbGRyZW4nO1xuaW1wb3J0IHVzZURpZmZJdGVtIGZyb20gJy4vaG9va3MvdXNlRGlmZkl0ZW0nO1xuaW1wb3J0IHVzZUZyYW1lV2hlZWwgZnJvbSAnLi9ob29rcy91c2VGcmFtZVdoZWVsJztcbmltcG9ydCB7IHVzZUdldFNpemUgfSBmcm9tICcuL2hvb2tzL3VzZUdldFNpemUnO1xuaW1wb3J0IHVzZUhlaWdodHMgZnJvbSAnLi9ob29rcy91c2VIZWlnaHRzJztcbmltcG9ydCB1c2VNb2JpbGVUb3VjaE1vdmUgZnJvbSAnLi9ob29rcy91c2VNb2JpbGVUb3VjaE1vdmUnO1xuaW1wb3J0IHVzZU9yaWdpblNjcm9sbCBmcm9tICcuL2hvb2tzL3VzZU9yaWdpblNjcm9sbCc7XG5pbXBvcnQgdXNlU2Nyb2xsRHJhZyBmcm9tICcuL2hvb2tzL3VzZVNjcm9sbERyYWcnO1xuaW1wb3J0IHVzZVNjcm9sbFRvIGZyb20gJy4vaG9va3MvdXNlU2Nyb2xsVG8nO1xuaW1wb3J0IFNjcm9sbEJhciBmcm9tICcuL1Njcm9sbEJhcic7XG5pbXBvcnQgeyBnZXRTcGluU2l6ZSB9IGZyb20gJy4vdXRpbHMvc2Nyb2xsYmFyVXRpbCc7XG5pbXBvcnQgeyBWSVJUVUFMX0xJU1RfQ09NUE9ORU5UX05BTUUsIFZJUlRVQUxfTElTVF9QUkVGSVhDTFMsIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0ICcuL3N0eWxlJztcbmNvbnN0IEVNUFRZX0RBVEEgPSBbXTtcbmNvbnN0IFNjcm9sbFN0eWxlID0ge1xuICAgIG92ZXJmbG93WTogJ2F1dG8nLFxuICAgIG92ZXJmbG93QW5jaG9yOiAnbm9uZScsXG59O1xuZXhwb3J0IGZ1bmN0aW9uIFJhd0xpc3QocHJvcHMsIHJlZikge1xuICAgIGNvbnN0IHsgcHJlZml4Q2xzID0gVklSVFVBTF9MSVNUX1BSRUZJWENMUywgY2xhc3NOYW1lLCBoZWlnaHQsIGl0ZW1IZWlnaHQsIGZ1bGxIZWlnaHQgPSB0cnVlLCBzdHlsZSwgZGF0YSwgY2hpbGRyZW4sIGl0ZW1LZXksIHZpcnR1YWwsIGRpcmVjdGlvbiwgc2Nyb2xsV2lkdGgsIGNvbXBvbmVudDogQ29tcG9uZW50ID0gJ2RpdicsIG9uU2Nyb2xsLCBvblZpcnR1YWxTY3JvbGwsIG9uVmlzaWJsZUNoYW5nZSwgaW5uZXJQcm9wcywgZXh0cmFSZW5kZXIsIHN0eWxlcywgc2hvd1Njcm9sbEJhciA9ICdvcHRpb25hbCcgfSA9IHByb3BzLCByZXN0UHJvcHMgPSBfX3Jlc3QocHJvcHMsIFtcInByZWZpeENsc1wiLCBcImNsYXNzTmFtZVwiLCBcImhlaWdodFwiLCBcIml0ZW1IZWlnaHRcIiwgXCJmdWxsSGVpZ2h0XCIsIFwic3R5bGVcIiwgXCJkYXRhXCIsIFwiY2hpbGRyZW5cIiwgXCJpdGVtS2V5XCIsIFwidmlydHVhbFwiLCBcImRpcmVjdGlvblwiLCBcInNjcm9sbFdpZHRoXCIsIFwiY29tcG9uZW50XCIsIFwib25TY3JvbGxcIiwgXCJvblZpcnR1YWxTY3JvbGxcIiwgXCJvblZpc2libGVDaGFuZ2VcIiwgXCJpbm5lclByb3BzXCIsIFwiZXh0cmFSZW5kZXJcIiwgXCJzdHlsZXNcIiwgXCJzaG93U2Nyb2xsQmFyXCJdKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IEl0ZW0gS2V5ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBnZXRLZXkgPSBSZWFjdC51c2VDYWxsYmFjaygoaXRlbSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW1LZXkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtS2V5KGl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpdGVtID09PSBudWxsIHx8IGl0ZW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGl0ZW1baXRlbUtleV07XG4gICAgfSwgW2l0ZW1LZXldKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBIZWlnaHQgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBbc2V0SW5zdGFuY2VSZWYsIGNvbGxlY3RIZWlnaHQsIGhlaWdodHMsIGhlaWdodFVwZGF0ZWRNYXJrXSA9IHVzZUhlaWdodHMoZ2V0S2V5LCB1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IE1JU0MgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgdXNlVmlydHVhbCA9ICEhKHZpcnR1YWwgIT09IGZhbHNlICYmIGhlaWdodCAmJiBpdGVtSGVpZ2h0KTtcbiAgICBjb25zdCBjb250YWluZXJIZWlnaHQgPSBSZWFjdC51c2VNZW1vKCgpID0+IE9iamVjdC52YWx1ZXMoaGVpZ2h0cy5tYXBzKS5yZWR1Y2UoKHRvdGFsLCBjdXJyKSA9PiB0b3RhbCArIGN1cnIsIDApLCBbaGVpZ2h0cy5pZF0pO1xuICAgIGNvbnN0IGluVmlydHVhbCA9IHVzZVZpcnR1YWwgJiZcbiAgICAgICAgZGF0YSAmJlxuICAgICAgICAoTWF0aC5tYXgoaXRlbUhlaWdodCAqIGRhdGEubGVuZ3RoLCBjb250YWluZXJIZWlnaHQpID4gaGVpZ2h0IHx8ICEhc2Nyb2xsV2lkdGgpO1xuICAgIGNvbnN0IGlzUlRMID0gZGlyZWN0aW9uID09PSAncnRsJztcbiAgICBjb25zdCBtZXJnZWRDbGFzc05hbWUgPSBjbHN4KHByZWZpeENscywgeyBbYCR7cHJlZml4Q2xzfS1ydGxgXTogaXNSVEwgfSwgY2xhc3NOYW1lKTtcbiAgICBjb25zdCBtZXJnZWREYXRhID0gZGF0YSB8fCBFTVBUWV9EQVRBO1xuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBmaWxsZXJJbm5lclJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBJdGVtIEtleSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgW29mZnNldFRvcCwgc2V0T2Zmc2V0VG9wXSA9IHVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtvZmZzZXRMZWZ0LCBzZXRPZmZzZXRMZWZ0XSA9IHVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtzY3JvbGxNb3ZpbmcsIHNldFNjcm9sbE1vdmluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3Qgb25TY3JvbGxiYXJTdGFydE1vdmUgPSAoKSA9PiB7XG4gICAgICAgIHNldFNjcm9sbE1vdmluZyh0cnVlKTtcbiAgICB9O1xuICAgIGNvbnN0IG9uU2Nyb2xsYmFyU3RvcE1vdmUgPSAoKSA9PiB7XG4gICAgICAgIHNldFNjcm9sbE1vdmluZyhmYWxzZSk7XG4gICAgfTtcbiAgICBjb25zdCBzaGFyZWRDb25maWcgPSB7XG4gICAgICAgIGdldEtleSxcbiAgICB9O1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IFNjcm9sbCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGZ1bmN0aW9uIHN5bmNTY3JvbGxUb3AobmV3VG9wKSB7XG4gICAgICAgIHNldE9mZnNldFRvcCgob3JpZ2luKSA9PiB7XG4gICAgICAgICAgICBsZXQgdmFsdWU7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG5ld1RvcCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3VG9wKG9yaWdpbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ld1RvcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFsaWduZWRUb3AgPSBrZWVwSW5SYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICBjb21wb25lbnRSZWYuY3VycmVudC5zY3JvbGxUb3AgPSBhbGlnbmVkVG9wO1xuICAgICAgICAgICAgcmV0dXJuIGFsaWduZWRUb3A7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBMZWdhY3kgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBQdXQgcmVmIGhlcmUgc2luY2UgdGhlIHJhbmdlIGlzIGdlbmVyYXRlIGJ5IGZvbGxvd1xuICAgIGNvbnN0IHJhbmdlUmVmID0gdXNlUmVmKHsgc3RhcnQ6IDAsIGVuZDogbWVyZ2VkRGF0YS5sZW5ndGggfSk7XG4gICAgY29uc3QgZGlmZkl0ZW1SZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgW2RpZmZJdGVtXSA9IHVzZURpZmZJdGVtKG1lcmdlZERhdGEsIGdldEtleSk7XG4gICAgZGlmZkl0ZW1SZWYuY3VycmVudCA9IGRpZmZJdGVtO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09IFZpc2libGUgQ2FsY3VsYXRpb24gPT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IHsgc2Nyb2xsSGVpZ2h0LCBzdGFydCwgZW5kLCBvZmZzZXQ6IGZpbGxlck9mZnNldCwgfSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICghdXNlVmlydHVhbCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzY3JvbGxIZWlnaHQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBzdGFydDogMCxcbiAgICAgICAgICAgICAgICBlbmQ6IG1lcmdlZERhdGEubGVuZ3RoIC0gMSxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWx3YXlzIHVzZSB2aXJ0dWFsIHNjcm9sbCBiYXIgaW4gYXZvaWQgc2hha2luZ1xuICAgICAgICBpZiAoIWluVmlydHVhbCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzY3JvbGxIZWlnaHQ6ICgoX2EgPSBmaWxsZXJJbm5lclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eub2Zmc2V0SGVpZ2h0KSB8fCAwLFxuICAgICAgICAgICAgICAgIHN0YXJ0OiAwLFxuICAgICAgICAgICAgICAgIGVuZDogbWVyZ2VkRGF0YS5sZW5ndGggLSAxLFxuICAgICAgICAgICAgICAgIG9mZnNldDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaXRlbVRvcCA9IDA7XG4gICAgICAgIGxldCBzdGFydEluZGV4O1xuICAgICAgICBsZXQgc3RhcnRPZmZzZXQ7XG4gICAgICAgIGxldCBlbmRJbmRleDtcbiAgICAgICAgY29uc3QgZGF0YUxlbiA9IG1lcmdlZERhdGEubGVuZ3RoO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGFMZW47IGkgKz0gMSkge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IG1lcmdlZERhdGFbaV07XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBnZXRLZXkoaXRlbSk7XG4gICAgICAgICAgICBjb25zdCBjYWNoZUhlaWdodCA9IGhlaWdodHMuZ2V0KGtleSk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50SXRlbUJvdHRvbSA9IGl0ZW1Ub3AgKyAoY2FjaGVIZWlnaHQgPT09IHVuZGVmaW5lZCA/IGl0ZW1IZWlnaHQgOiBjYWNoZUhlaWdodCk7XG4gICAgICAgICAgICAvLyBDaGVjayBpdGVtIHRvcCBpbiB0aGUgcmFuZ2VcbiAgICAgICAgICAgIGlmIChjdXJyZW50SXRlbUJvdHRvbSA+PSBvZmZzZXRUb3AgJiYgc3RhcnRJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQgPSBpdGVtVG9wO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQ2hlY2sgaXRlbSBib3R0b20gaW4gdGhlIHJhbmdlLiBXZSB3aWxsIHJlbmRlciBhZGRpdGlvbmFsIG9uZSBpdGVtIGZvciBtb3Rpb24gdXNhZ2VcbiAgICAgICAgICAgIGlmIChjdXJyZW50SXRlbUJvdHRvbSA+IG9mZnNldFRvcCArIGhlaWdodCAmJiBlbmRJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZW5kSW5kZXggPSBpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXRlbVRvcCA9IGN1cnJlbnRJdGVtQm90dG9tO1xuICAgICAgICB9XG4gICAgICAgIC8vIFdoZW4gc2Nyb2xsVG9wIGF0IHRoZSBlbmQgYnV0IGRhdGEgY3V0IHRvIHNtYWxsIGNvdW50IHdpbGwgcmVhY2ggdGhpc1xuICAgICAgICBpZiAoc3RhcnRJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzdGFydEluZGV4ID0gMDtcbiAgICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGVuZEluZGV4ID0gTWF0aC5jZWlsKGhlaWdodCAvIGl0ZW1IZWlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmRJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBlbmRJbmRleCA9IG1lcmdlZERhdGEubGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICAvLyBHaXZlIGNhY2hlIHRvIGltcHJvdmUgc2Nyb2xsIGV4cGVyaWVuY2VcbiAgICAgICAgZW5kSW5kZXggPSBNYXRoLm1pbihlbmRJbmRleCArIDEsIG1lcmdlZERhdGEubGVuZ3RoIC0gMSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzY3JvbGxIZWlnaHQ6IGl0ZW1Ub3AsXG4gICAgICAgICAgICBzdGFydDogc3RhcnRJbmRleCxcbiAgICAgICAgICAgIGVuZDogZW5kSW5kZXgsXG4gICAgICAgICAgICBvZmZzZXQ6IHN0YXJ0T2Zmc2V0LFxuICAgICAgICB9O1xuICAgIH0sIFtpblZpcnR1YWwsIHVzZVZpcnR1YWwsIG9mZnNldFRvcCwgbWVyZ2VkRGF0YSwgaGVpZ2h0VXBkYXRlZE1hcmssIGhlaWdodF0pO1xuICAgIHJhbmdlUmVmLmN1cnJlbnQuc3RhcnQgPSBzdGFydDtcbiAgICByYW5nZVJlZi5jdXJyZW50LmVuZCA9IGVuZDtcbiAgICAvLyBXaGVuIHNjcm9sbCB1cCwgZmlyc3QgdmlzaWJsZSBpdGVtIGdldCByZWFsIGhlaWdodCBtYXkgbm90IHNhbWUgYXMgYGl0ZW1IZWlnaHRgLFxuICAgIC8vIFdoaWNoIHdpbGwgbWFrZSBzY3JvbGwganVtcC5cbiAgICAvLyBMZXQncyBzeW5jIHNjcm9sbCB0b3AgdG8gYXZvaWQganVtcFxuICAgIFJlYWN0LnVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNoYW5nZWRSZWNvcmQgPSBoZWlnaHRzLmdldFJlY29yZCgpO1xuICAgICAgICBpZiAoY2hhbmdlZFJlY29yZC5zaXplID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCByZWNvcmRLZXkgPSBBcnJheS5mcm9tKGNoYW5nZWRSZWNvcmQua2V5cygpKVswXTtcbiAgICAgICAgICAgIGNvbnN0IHByZXZDYWNoZUhlaWdodCA9IGNoYW5nZWRSZWNvcmQuZ2V0KHJlY29yZEtleSk7XG4gICAgICAgICAgICAvLyBRdWljayBzd2l0Y2ggZGF0YSBtYXkgY2F1c2UgYHN0YXJ0YCBub3QgaW4gYG1lcmdlZERhdGFgIGFueW1vcmVcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0SXRlbSA9IG1lcmdlZERhdGFbc3RhcnRdO1xuICAgICAgICAgICAgaWYgKHN0YXJ0SXRlbSAmJiBwcmV2Q2FjaGVIZWlnaHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0SW5kZXhLZXkgPSBnZXRLZXkoc3RhcnRJdGVtKTtcbiAgICAgICAgICAgICAgICBpZiAoc3RhcnRJbmRleEtleSA9PT0gcmVjb3JkS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlYWxTdGFydEhlaWdodCA9IGhlaWdodHMuZ2V0KHJlY29yZEtleSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpZmZIZWlnaHQgPSByZWFsU3RhcnRIZWlnaHQgLSBpdGVtSGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBzeW5jU2Nyb2xsVG9wKChvcmkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcmkgKyBkaWZmSGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaGVpZ2h0cy5yZXNldFJlY29yZCgpO1xuICAgIH0sIFtzY3JvbGxIZWlnaHRdKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gU2l6ZSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBbc2l6ZSwgc2V0U2l6ZV0gPSBSZWFjdC51c2VTdGF0ZSh7IHdpZHRoOiAwLCBoZWlnaHQ6IGhlaWdodCAhPT0gbnVsbCAmJiBoZWlnaHQgIT09IHZvaWQgMCA/IGhlaWdodCA6IDAgfSk7XG4gICAgY29uc3Qgb25Ib2xkZXJSZXNpemUgPSAoc2l6ZUluZm8pID0+IHtcbiAgICAgICAgc2V0U2l6ZSh7XG4gICAgICAgICAgICB3aWR0aDogc2l6ZUluZm8ub2Zmc2V0V2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IHNpemVJbmZvLm9mZnNldEhlaWdodCxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvLyBIYWNrIG9uIHNjcm9sbGJhciB0byBlbmFibGUgZmxhc2ggY2FsbFxuICAgIGNvbnN0IHZlcnRpY2FsU2Nyb2xsQmFyUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGhvcml6b250YWxTY3JvbGxCYXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgaG9yaXpvbnRhbFNjcm9sbEJhclNwaW5TaXplID0gUmVhY3QudXNlTWVtbygoKSA9PiBnZXRTcGluU2l6ZShzaXplLndpZHRoLCBzY3JvbGxXaWR0aCksIFtzaXplLndpZHRoLCBzY3JvbGxXaWR0aF0pO1xuICAgIGNvbnN0IHZlcnRpY2FsU2Nyb2xsQmFyU3BpblNpemUgPSBSZWFjdC51c2VNZW1vKCgpID0+IGdldFNwaW5TaXplKHNpemUuaGVpZ2h0LCBzY3JvbGxIZWlnaHQpLCBbc2l6ZS5oZWlnaHQsIHNjcm9sbEhlaWdodF0pO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gSW4gUmFuZ2UgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IG1heFNjcm9sbEhlaWdodCA9IHNjcm9sbEhlaWdodCAtIGhlaWdodDtcbiAgICBjb25zdCBtYXhTY3JvbGxIZWlnaHRSZWYgPSB1c2VSZWYobWF4U2Nyb2xsSGVpZ2h0KTtcbiAgICBtYXhTY3JvbGxIZWlnaHRSZWYuY3VycmVudCA9IG1heFNjcm9sbEhlaWdodDtcbiAgICBmdW5jdGlvbiBrZWVwSW5SYW5nZShuZXdTY3JvbGxUb3ApIHtcbiAgICAgICAgbGV0IG5ld1RvcCA9IG5ld1Njcm9sbFRvcDtcbiAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4obWF4U2Nyb2xsSGVpZ2h0UmVmLmN1cnJlbnQpKSB7XG4gICAgICAgICAgICBuZXdUb3AgPSBNYXRoLm1pbihuZXdUb3AsIG1heFNjcm9sbEhlaWdodFJlZi5jdXJyZW50KTtcbiAgICAgICAgfVxuICAgICAgICBuZXdUb3AgPSBNYXRoLm1heChuZXdUb3AsIDApO1xuICAgICAgICByZXR1cm4gbmV3VG9wO1xuICAgIH1cbiAgICBjb25zdCBpc1Njcm9sbEF0VG9wID0gb2Zmc2V0VG9wIDw9IDA7XG4gICAgY29uc3QgaXNTY3JvbGxBdEJvdHRvbSA9IG9mZnNldFRvcCA+PSBtYXhTY3JvbGxIZWlnaHQ7XG4gICAgY29uc3QgaXNTY3JvbGxBdExlZnQgPSBvZmZzZXRMZWZ0IDw9IDA7XG4gICAgY29uc3QgaXNTY3JvbGxBdFJpZ2h0ID0gISFzY3JvbGxXaWR0aCAmJiBvZmZzZXRMZWZ0ID49IHNjcm9sbFdpZHRoIC0gc2l6ZS53aWR0aDtcbiAgICBjb25zdCBvcmlnaW5TY3JvbGwgPSB1c2VPcmlnaW5TY3JvbGwoaXNTY3JvbGxBdFRvcCwgaXNTY3JvbGxBdEJvdHRvbSwgaXNTY3JvbGxBdExlZnQsIGlzU2Nyb2xsQXRSaWdodCk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gU2Nyb2xsID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgZ2V0VmlydHVhbFNjcm9sbEluZm8gPSAoKSA9PiAoe1xuICAgICAgICB4OiBpc1JUTCA/IC1vZmZzZXRMZWZ0IDogb2Zmc2V0TGVmdCxcbiAgICAgICAgeTogb2Zmc2V0VG9wLFxuICAgIH0pO1xuICAgIGNvbnN0IGxhc3RWaXJ0dWFsU2Nyb2xsSW5mb1JlZiA9IHVzZVJlZihnZXRWaXJ0dWFsU2Nyb2xsSW5mbygpKTtcbiAgICBjb25zdCB0cmlnZ2VyU2Nyb2xsID0gdXNlRXZlbnRDYWxsYmFjaygocGFyYW1zKSA9PiB7XG4gICAgICAgIGlmIChvblZpcnR1YWxTY3JvbGwpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRJbmZvID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBnZXRWaXJ0dWFsU2Nyb2xsSW5mbygpKSwgcGFyYW1zKTtcbiAgICAgICAgICAgIC8vIFRyaWdnZXIgd2hlbiBvZmZzZXQgY2hhbmdlZFxuICAgICAgICAgICAgaWYgKGxhc3RWaXJ0dWFsU2Nyb2xsSW5mb1JlZi5jdXJyZW50LnggIT09IG5leHRJbmZvLnggfHxcbiAgICAgICAgICAgICAgICBsYXN0VmlydHVhbFNjcm9sbEluZm9SZWYuY3VycmVudC55ICE9PSBuZXh0SW5mby55KSB7XG4gICAgICAgICAgICAgICAgb25WaXJ0dWFsU2Nyb2xsKG5leHRJbmZvKTtcbiAgICAgICAgICAgICAgICBsYXN0VmlydHVhbFNjcm9sbEluZm9SZWYuY3VycmVudCA9IG5leHRJbmZvO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gb25TY3JvbGxCYXIobmV3U2Nyb2xsT2Zmc2V0LCBob3Jpem9udGFsKSB7XG4gICAgICAgIGNvbnN0IG5ld09mZnNldCA9IG5ld1Njcm9sbE9mZnNldDtcbiAgICAgICAgaWYgKGhvcml6b250YWwpIHtcbiAgICAgICAgICAgIGZsdXNoU3luYygoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0T2Zmc2V0TGVmdChuZXdPZmZzZXQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0cmlnZ2VyU2Nyb2xsKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzeW5jU2Nyb2xsVG9wKG5ld09mZnNldCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gV2hlbiBkYXRhIHNpemUgcmVkdWNlLiBJdCBtYXkgdHJpZ2dlciBuYXRpdmUgc2Nyb2xsIGV2ZW50IGJhY2sgdG8gZml0IHNjcm9sbCBwb3NpdGlvblxuICAgIGZ1bmN0aW9uIG9uRmFsbGJhY2tTY3JvbGwoZSkge1xuICAgICAgICBjb25zdCB7IHNjcm9sbFRvcDogbmV3U2Nyb2xsVG9wIH0gPSBlLmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgIGlmIChuZXdTY3JvbGxUb3AgIT09IG9mZnNldFRvcCkge1xuICAgICAgICAgICAgc3luY1Njcm9sbFRvcChuZXdTY3JvbGxUb3ApO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRyaWdnZXIgb3JpZ2luIG9uU2Nyb2xsXG4gICAgICAgIG9uU2Nyb2xsID09PSBudWxsIHx8IG9uU2Nyb2xsID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblNjcm9sbChlKTtcbiAgICAgICAgdHJpZ2dlclNjcm9sbCgpO1xuICAgIH1cbiAgICBjb25zdCBrZWVwSW5Ib3Jpem9udGFsUmFuZ2UgPSAobmV4dE9mZnNldExlZnQpID0+IHtcbiAgICAgICAgbGV0IHRtcE9mZnNldExlZnQgPSBuZXh0T2Zmc2V0TGVmdDtcbiAgICAgICAgY29uc3QgbWF4ID0gc2Nyb2xsV2lkdGggPyBzY3JvbGxXaWR0aCAtIHNpemUud2lkdGggOiAwO1xuICAgICAgICB0bXBPZmZzZXRMZWZ0ID0gTWF0aC5tYXgodG1wT2Zmc2V0TGVmdCwgMCk7XG4gICAgICAgIHRtcE9mZnNldExlZnQgPSBNYXRoLm1pbih0bXBPZmZzZXRMZWZ0LCBtYXgpO1xuICAgICAgICByZXR1cm4gdG1wT2Zmc2V0TGVmdDtcbiAgICB9O1xuICAgIGNvbnN0IG9uV2hlZWxEZWx0YSA9IHVzZUV2ZW50Q2FsbGJhY2soKG9mZnNldFhZLCBmcm9tSG9yaXpvbnRhbCkgPT4ge1xuICAgICAgICBpZiAoZnJvbUhvcml6b250YWwpIHtcbiAgICAgICAgICAgIGZsdXNoU3luYygoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0T2Zmc2V0TGVmdCgobGVmdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0T2Zmc2V0TGVmdCA9IGxlZnQgKyAoaXNSVEwgPyAtb2Zmc2V0WFkgOiBvZmZzZXRYWSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBrZWVwSW5Ib3Jpem9udGFsUmFuZ2UobmV4dE9mZnNldExlZnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0cmlnZ2VyU2Nyb2xsKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzeW5jU2Nyb2xsVG9wKCh0b3ApID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdUb3AgPSB0b3AgKyBvZmZzZXRYWTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3VG9wO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBTaW5jZSB0aGlzIGFkZGVkIGluIGdsb2JhbCxzaG91bGQgdXNlIHJlZiB0byBrZWVwIHVwZGF0ZVxuICAgIGNvbnN0IFtvblJhd1doZWVsLCBvbkZpcmVGb3hTY3JvbGxdID0gdXNlRnJhbWVXaGVlbCh1c2VWaXJ0dWFsLCBpc1Njcm9sbEF0VG9wLCBpc1Njcm9sbEF0Qm90dG9tLCBpc1Njcm9sbEF0TGVmdCwgaXNTY3JvbGxBdFJpZ2h0LCAhIXNjcm9sbFdpZHRoLCBvbldoZWVsRGVsdGEpO1xuICAgIC8vIE1vYmlsZSB0b3VjaCBtb3ZlXG4gICAgdXNlTW9iaWxlVG91Y2hNb3ZlKHVzZVZpcnR1YWwsIGNvbXBvbmVudFJlZiwgKGlzSG9yaXpvbnRhbCwgZGVsdGEsIHNtb290aE9mZnNldCwgZSkgPT4ge1xuICAgICAgICBjb25zdCBldmVudCA9IGU7XG4gICAgICAgIGlmIChvcmlnaW5TY3JvbGwoaXNIb3Jpem9udGFsLCBkZWx0YSwgc21vb3RoT2Zmc2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIEZpeCBuZXN0IExpc3QgdHJpZ2dlciBUb3VjaE1vdmUgZXZlbnRcbiAgICAgICAgaWYgKCFldmVudCB8fCAhZXZlbnQuX3ZpcnR1YWxIYW5kbGVkKSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBldmVudC5fdmlydHVhbEhhbmRsZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb25SYXdXaGVlbCh7XG4gICAgICAgICAgICAgICAgcHJldmVudERlZmF1bHQoKSB7IH0sXG4gICAgICAgICAgICAgICAgZGVsdGFYOiBpc0hvcml6b250YWwgPyBkZWx0YSA6IDAsXG4gICAgICAgICAgICAgICAgZGVsdGFZOiBpc0hvcml6b250YWwgPyAwIDogZGVsdGEsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgICAvLyBNb3VzZURvd24gZHJhZyBmb3Igc2Nyb2xsXG4gICAgdXNlU2Nyb2xsRHJhZyhpblZpcnR1YWwsIGNvbXBvbmVudFJlZiwgKG9mZnNldCkgPT4ge1xuICAgICAgICBzeW5jU2Nyb2xsVG9wKCh0b3ApID0+IHRvcCArIG9mZnNldCk7XG4gICAgfSk7XG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgLy8gRmlyZWZveCBvbmx5XG4gICAgICAgIGZ1bmN0aW9uIG9uTW96TW91c2VQaXhlbFNjcm9sbChlKSB7XG4gICAgICAgICAgICAvLyBzY3JvbGxpbmcgYXQgdG9wL2JvdHRvbSBsaW1pdFxuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsaW5nVXBBdFRvcCA9IGlzU2Nyb2xsQXRUb3AgJiYgZS5kZXRhaWwgPCAwO1xuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsaW5nRG93bkF0Qm90dG9tID0gaXNTY3JvbGxBdEJvdHRvbSAmJiBlLmRldGFpbCA+IDA7XG4gICAgICAgICAgICBpZiAodXNlVmlydHVhbCAmJiAhc2Nyb2xsaW5nVXBBdFRvcCAmJiAhc2Nyb2xsaW5nRG93bkF0Qm90dG9tKSB7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudEVsZSA9IGNvbXBvbmVudFJlZi5jdXJyZW50O1xuICAgICAgICBjb21wb25lbnRFbGUuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLCBvblJhd1doZWVsLCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuICAgICAgICBjb21wb25lbnRFbGUuYWRkRXZlbnRMaXN0ZW5lcignRE9NTW91c2VTY3JvbGwnLCBvbkZpcmVGb3hTY3JvbGwsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgY29tcG9uZW50RWxlLmFkZEV2ZW50TGlzdGVuZXIoJ01vek1vdXNlUGl4ZWxTY3JvbGwnLCBvbk1vek1vdXNlUGl4ZWxTY3JvbGwsIHsgcGFzc2l2ZTogZmFsc2UgfSk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBjb21wb25lbnRFbGUucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2hlZWwnLCBvblJhd1doZWVsKTtcbiAgICAgICAgICAgIGNvbXBvbmVudEVsZS5yZW1vdmVFdmVudExpc3RlbmVyKCdET01Nb3VzZVNjcm9sbCcsIG9uRmlyZUZveFNjcm9sbCk7XG4gICAgICAgICAgICBjb21wb25lbnRFbGUucmVtb3ZlRXZlbnRMaXN0ZW5lcignTW96TW91c2VQaXhlbFNjcm9sbCcsIG9uTW96TW91c2VQaXhlbFNjcm9sbCk7XG4gICAgICAgIH07XG4gICAgfSwgW3VzZVZpcnR1YWwsIGlzU2Nyb2xsQXRUb3AsIGlzU2Nyb2xsQXRCb3R0b21dKTtcbiAgICAvLyBTeW5jIHNjcm9sbCBsZWZ0XG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHNjcm9sbFdpZHRoKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdPZmZzZXRMZWZ0ID0ga2VlcEluSG9yaXpvbnRhbFJhbmdlKG9mZnNldExlZnQpO1xuICAgICAgICAgICAgc2V0T2Zmc2V0TGVmdChuZXdPZmZzZXRMZWZ0KTtcbiAgICAgICAgICAgIHRyaWdnZXJTY3JvbGwoeyB4OiBuZXdPZmZzZXRMZWZ0IH0pO1xuICAgICAgICB9XG4gICAgfSwgW3NpemUud2lkdGgsIHNjcm9sbFdpZHRoXSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IFJlZiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgZGVsYXlIaWRlU2Nyb2xsQmFyID0gKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAoX2EgPSB2ZXJ0aWNhbFNjcm9sbEJhclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGVsYXlIaWRkZW4oKTtcbiAgICAgICAgKF9iID0gaG9yaXpvbnRhbFNjcm9sbEJhclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZGVsYXlIaWRkZW4oKTtcbiAgICB9O1xuICAgIGNvbnN0IHNjcm9sbFRvID0gdXNlU2Nyb2xsVG8oY29tcG9uZW50UmVmLCBtZXJnZWREYXRhLCBoZWlnaHRzLCBpdGVtSGVpZ2h0LCBnZXRLZXksICgpID0+IGNvbGxlY3RIZWlnaHQodHJ1ZSksIHN5bmNTY3JvbGxUb3AsIGRlbGF5SGlkZVNjcm9sbEJhcik7XG4gICAgUmVhY3QudXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsICgpID0+ICh7XG4gICAgICAgIG5hdGl2ZUVsZW1lbnQ6IGNvbnRhaW5lclJlZi5jdXJyZW50LFxuICAgICAgICBnZXRTY3JvbGxJbmZvOiBnZXRWaXJ0dWFsU2Nyb2xsSW5mbyxcbiAgICAgICAgc2Nyb2xsVG86IChjb25maWcpID0+IHtcbiAgICAgICAgICAgIGZ1bmN0aW9uIGlzUG9zU2Nyb2xsKGFyZykge1xuICAgICAgICAgICAgICAgIHJldHVybiBhcmcgJiYgdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiYgKCdsZWZ0JyBpbiBhcmcgfHwgJ3RvcCcgaW4gYXJnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1Bvc1Njcm9sbChjb25maWcpKSB7XG4gICAgICAgICAgICAgICAgLy8gU2Nyb2xsIFhcbiAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmxlZnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBzZXRPZmZzZXRMZWZ0KGtlZXBJbkhvcml6b250YWxSYW5nZShjb25maWcubGVmdCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBTY3JvbGwgWVxuICAgICAgICAgICAgICAgIHNjcm9sbFRvKGNvbmZpZy50b3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2Nyb2xsVG8oY29uZmlnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gRWZmZWN0ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLyoqIFdlIG5lZWQgdG9sZCBvdXRzaWRlIHRoYXQgc29tZSBsaXN0IG5vdCByZW5kZXJlZCAqL1xuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChvblZpc2libGVDaGFuZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbmRlckxpc3QgPSBtZXJnZWREYXRhLnNsaWNlKHN0YXJ0LCBlbmQgKyAxKTtcbiAgICAgICAgICAgIG9uVmlzaWJsZUNoYW5nZShyZW5kZXJMaXN0LCBtZXJnZWREYXRhKTtcbiAgICAgICAgfVxuICAgIH0sIFtzdGFydCwgZW5kLCBtZXJnZWREYXRhXSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gRXh0cmEgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgZ2V0U2l6ZSA9IHVzZUdldFNpemUobWVyZ2VkRGF0YSwgZ2V0S2V5LCBoZWlnaHRzLCBpdGVtSGVpZ2h0KTtcbiAgICBjb25zdCBleHRyYUNvbnRlbnQgPSBleHRyYVJlbmRlciA9PT0gbnVsbCB8fCBleHRyYVJlbmRlciA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXh0cmFSZW5kZXIoe1xuICAgICAgICBzdGFydCxcbiAgICAgICAgZW5kLFxuICAgICAgICB2aXJ0dWFsOiBpblZpcnR1YWwsXG4gICAgICAgIG9mZnNldFg6IG9mZnNldExlZnQsXG4gICAgICAgIG9mZnNldFk6IGZpbGxlck9mZnNldCxcbiAgICAgICAgcnRsOiBpc1JUTCxcbiAgICAgICAgZ2V0U2l6ZSxcbiAgICB9KTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBSZW5kZXIgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBsaXN0Q2hpbGRyZW4gPSB1c2VDaGlsZHJlbihtZXJnZWREYXRhLCBzdGFydCwgZW5kLCBzY3JvbGxXaWR0aCwgb2Zmc2V0TGVmdCwgc2V0SW5zdGFuY2VSZWYsIGNoaWxkcmVuLCBzaGFyZWRDb25maWcpO1xuICAgIGxldCBjb21wb25lbnRTdHlsZSA9IHVuZGVmaW5lZDtcbiAgICBpZiAoaGVpZ2h0KSB7XG4gICAgICAgIGNvbXBvbmVudFN0eWxlID0gT2JqZWN0LmFzc2lnbih7IFtmdWxsSGVpZ2h0ID8gJ2hlaWdodCcgOiAnbWF4SGVpZ2h0J106IGhlaWdodCB9LCBTY3JvbGxTdHlsZSk7XG4gICAgICAgIGlmICh1c2VWaXJ0dWFsKSB7XG4gICAgICAgICAgICBjb21wb25lbnRTdHlsZS5vdmVyZmxvd1kgPSAnaGlkZGVuJztcbiAgICAgICAgICAgIGlmIChzY3JvbGxXaWR0aCkge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudFN0eWxlLm92ZXJmbG93WCA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNjcm9sbE1vdmluZykge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudFN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgY29udGFpbmVyUHJvcHMgPSB7fTtcbiAgICBpZiAoaXNSVEwpIHtcbiAgICAgICAgY29udGFpbmVyUHJvcHMuZGlyID0gJ3J0bCc7XG4gICAgfVxuICAgIHJldHVybiAoX2pzeHMoXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7IHJlZjogY29udGFpbmVyUmVmLCBzdHlsZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzdHlsZSksIHsgcG9zaXRpb246ICdyZWxhdGl2ZScgfSksIGNsYXNzTmFtZTogbWVyZ2VkQ2xhc3NOYW1lIH0sIGNvbnRhaW5lclByb3BzLCByZXN0UHJvcHMsIHsgY2hpbGRyZW46IFtfanN4KFJlc2l6ZU9ic2VydmVyLCB7IG9uUmVzaXplOiBvbkhvbGRlclJlc2l6ZSwgY2hpbGRyZW46IF9qc3goQ29tcG9uZW50LCB7IGNsYXNzTmFtZTogYCR7cHJlZml4Q2xzfS1ob2xkZXJgLCBzdHlsZTogY29tcG9uZW50U3R5bGUsIHJlZjogY29tcG9uZW50UmVmLCBvblNjcm9sbDogb25GYWxsYmFja1Njcm9sbCwgb25Nb3VzZUVudGVyOiBkZWxheUhpZGVTY3JvbGxCYXIsIGNoaWxkcmVuOiBfanN4KEZpbGxlciwgeyBwcmVmaXhDbHM6IHByZWZpeENscywgaGVpZ2h0OiBzY3JvbGxIZWlnaHQsIG9mZnNldFg6IG9mZnNldExlZnQsIG9mZnNldFk6IGZpbGxlck9mZnNldCwgc2Nyb2xsV2lkdGg6IHNjcm9sbFdpZHRoLCBvbklubmVyUmVzaXplOiBjb2xsZWN0SGVpZ2h0LCByZWY6IGZpbGxlcklubmVyUmVmLCBpbm5lclByb3BzOiBpbm5lclByb3BzLCBydGw6IGlzUlRMLCBleHRyYTogZXh0cmFDb250ZW50LCBjaGlsZHJlbjogbGlzdENoaWxkcmVuIH0pIH0pIH0pLCBpblZpcnR1YWwgJiYgc2Nyb2xsSGVpZ2h0ID4gaGVpZ2h0ICYmIChfanN4KFNjcm9sbEJhciwgeyByZWY6IHZlcnRpY2FsU2Nyb2xsQmFyUmVmLCBwcmVmaXhDbHM6IHByZWZpeENscywgc2Nyb2xsT2Zmc2V0OiBvZmZzZXRUb3AsIHNjcm9sbFJhbmdlOiBzY3JvbGxIZWlnaHQsIHJ0bDogaXNSVEwsIG9uU2Nyb2xsOiBvblNjcm9sbEJhciwgb25TdGFydE1vdmU6IG9uU2Nyb2xsYmFyU3RhcnRNb3ZlLCBvblN0b3BNb3ZlOiBvblNjcm9sbGJhclN0b3BNb3ZlLCBzcGluU2l6ZTogdmVydGljYWxTY3JvbGxCYXJTcGluU2l6ZSwgY29udGFpbmVyU2l6ZTogc2l6ZS5oZWlnaHQsIHN0eWxlOiBzdHlsZXMgPT09IG51bGwgfHwgc3R5bGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHlsZXMudmVydGljYWxTY3JvbGxCYXIsIHRodW1iU3R5bGU6IHN0eWxlcyA9PT0gbnVsbCB8fCBzdHlsZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0eWxlcy52ZXJ0aWNhbFNjcm9sbEJhclRodW1iLCBzaG93U2Nyb2xsQmFyOiBzaG93U2Nyb2xsQmFyIH0pKSwgaW5WaXJ0dWFsICYmIHNjcm9sbFdpZHRoID4gc2l6ZS53aWR0aCAmJiAoX2pzeChTY3JvbGxCYXIsIHsgcmVmOiBob3Jpem9udGFsU2Nyb2xsQmFyUmVmLCBwcmVmaXhDbHM6IHByZWZpeENscywgc2Nyb2xsT2Zmc2V0OiBvZmZzZXRMZWZ0LCBzY3JvbGxSYW5nZTogc2Nyb2xsV2lkdGgsIHJ0bDogaXNSVEwsIG9uU2Nyb2xsOiBvblNjcm9sbEJhciwgb25TdGFydE1vdmU6IG9uU2Nyb2xsYmFyU3RhcnRNb3ZlLCBvblN0b3BNb3ZlOiBvblNjcm9sbGJhclN0b3BNb3ZlLCBzcGluU2l6ZTogaG9yaXpvbnRhbFNjcm9sbEJhclNwaW5TaXplLCBjb250YWluZXJTaXplOiBzaXplLndpZHRoLCBob3Jpem9udGFsOiB0cnVlLCBzdHlsZTogc3R5bGVzID09PSBudWxsIHx8IHN0eWxlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGVzLmhvcml6b250YWxTY3JvbGxCYXIsIHRodW1iU3R5bGU6IHN0eWxlcyA9PT0gbnVsbCB8fCBzdHlsZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0eWxlcy5ob3Jpem9udGFsU2Nyb2xsQmFyVGh1bWIsIHNob3dTY3JvbGxCYXI6IHNob3dTY3JvbGxCYXIgfSkpXSB9KSkpO1xufVxuY29uc3QgVmlydHVhbExpc3RCYXNlID0gUmVhY3QuZm9yd2FyZFJlZihSYXdMaXN0KTtcblZpcnR1YWxMaXN0QmFzZS5kaXNwbGF5TmFtZSA9IFZJUlRVQUxfTElTVF9DT01QT05FTlRfTkFNRTtcbmNvbnN0IFZpcnR1YWxMaXN0ID0gUmVhY3QubWVtbyhWaXJ0dWFsTGlzdEJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgVmlydHVhbExpc3Q7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -1,4 +1,4 @@
1
- import { useLayoutEffect } from '@1money/hooks';
1
+ import useLayoutEffect from '@1money/hooks/useLayoutEffect';
2
2
  import { useRef } from 'react';
3
3
  var SMOOTH_PTG = 14 / 15;
4
4
  export default function useMobileTouchMove(inVirtual, listRef, callback) {
@@ -82,4 +82,4 @@ export default function useMobileTouchMove(inVirtual, listRef, callback) {
82
82
  };
83
83
  }, [inVirtual]);
84
84
  }
85
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVmlydHVhbExpc3Qvc3JjL2NvbXBvbmVudHMvVmlydHVhbExpc3QvaG9va3MvdXNlTW9iaWxlVG91Y2hNb3ZlLnRzIiwiY29tcG9uZW50cy9WaXJ0dWFsTGlzdC9ob29rcy91c2VNb2JpbGVUb3VjaE1vdmUuanMiXSwibmFtZXMiOlsidXNlTGF5b3V0RWZmZWN0IiwidXNlUmVmIiwiU01PT1RIX1BURyIsInVzZU1vYmlsZVRvdWNoTW92ZSIsImluVmlydHVhbCIsImxpc3RSZWYiLCJjYWxsYmFjayIsInRvdWNoZWRSZWYiLCJ0b3VjaFhSZWYiLCJ0b3VjaFlSZWYiLCJlbGVtZW50UmVmIiwiaW50ZXJ2YWxSZWYiLCJjbGVhblVwRXZlbnRzIiwib25Ub3VjaE1vdmUiLCJlIiwiY3VycmVudCIsImN1cnJlbnRYIiwiTWF0aCIsImNlaWwiLCJ0b3VjaGVzIiwicGFnZVgiLCJjdXJyZW50WSIsInBhZ2VZIiwib2Zmc2V0WCIsIm9mZnNldFkiLCJpc0hvcml6b250YWwiLCJhYnMiLCJzY3JvbGxIYW5kbGVkIiwicHJldmVudERlZmF1bHQiLCJjbGVhckludGVydmFsIiwic2V0SW50ZXJ2YWwiLCJvZmZzZXQiLCJmbG9vciIsIm9uVG91Y2hFbmQiLCJvblRvdWNoU3RhcnQiLCJsZW5ndGgiLCJ0YXJnZXQiLCJhZGRFdmVudExpc3RlbmVyIiwicGFzc2l2ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJfYSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsZUFBZSxRQUFRLGVBQWU7QUFFL0MsU0FBU0MsTUFBTSxRQUFRLE9BQU87QUFFOUIsSUFBTUMsVUFBVSxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBRTFCLGVBQWMsU0FBVUMsa0JBQWtCQSxDQUN4Q0MsU0FBa0IsRUFDbEJDLE9BQStDLEVBQy9DQyxRQUtZLEVBQUE7RUFFWixJQUFNQyxVQUFVLEdBQUdOLE1BQU0sQ0FBQyxLQUFLLENBQUM7RUFDaEMsSUFBTU8sU0FBUyxHQUFHUCxNQUFNLENBQUMs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QSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFRCxtQkFBbUIsQ0FBQyxZQUFZLEVBQUVMLFlBQVksQ0FBQztNQUNoRXRCLGFBQWEsQ0FBQSxDQUFFO01BQ2ZpQixhQUFhLENBQUNsQixXQUFXLENBQUNJLE9BQVEsQ0FBQztJQUNyQyxDQUFDO0VBQ0gsQ0FBQyxFQUFFLENBQUNYLFNBQVMsQ0FBQyxDQUFDO0FBQ2pCIiwiZmlsZSI6ImNvbXBvbmVudHMvVmlydHVhbExpc3QvaG9va3MvdXNlTW9iaWxlVG91Y2hNb3ZlLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgeyB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdAMW1vbmV5L2hvb2tzJztcbmltcG9ydCB7IHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmNvbnN0IFNNT09USF9QVEcgPSAxNCAvIDE1O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlTW9iaWxlVG91Y2hNb3ZlKGluVmlydHVhbCwgbGlzdFJlZiwgY2FsbGJhY2spIHtcbiAgICBjb25zdCB0b3VjaGVkUmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCB0b3VjaFhSZWYgPSB1c2VSZWYoMCk7XG4gICAgY29uc3QgdG91Y2hZUmVmID0gdXNlUmVmKDApO1xuICAgIGNvbnN0IGVsZW1lbnRSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgLy8gU21vb3RoIHNjcm9sbFxuICAgIGNvbnN0IGludGVydmFsUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGxldCBjbGVhblVwRXZlbnRzO1xuICAgIGNvbnN0IG9uVG91Y2hNb3ZlID0gKGUpID0+IHtcbiAgICAgICAgaWYgKHRvdWNoZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFggPSBNYXRoLmNlaWwoZS50b3VjaGVzWzBdLnBhZ2VYKTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRZID0gTWF0aC5jZWlsKGUudG91Y2hlc1swXS5wYWdlWSk7XG4gICAgICAgICAgICBsZXQgb2Zmc2V0WCA9IHRvdWNoWFJlZi5jdXJyZW50IC0gY3VycmVudFg7XG4gICAgICAgICAgICBsZXQgb2Zmc2V0WSA9IHRvdWNoWVJlZi5jdXJyZW50IC0gY3VycmVudFk7XG4gICAgICAgICAgICBjb25zdCBpc0hvcml6b250YWwgPSBNYXRoLmFicyhvZmZzZXRYKSA+IE1hdGguYWJzKG9mZnNldFkpO1xuICAgICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkge1xuICAgICAgICAgICAgICAgIHRvdWNoWFJlZi5jdXJyZW50ID0gY3VycmVudFg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0b3VjaFlSZWYuY3VycmVudCA9IGN1cnJlbnRZO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsSGFuZGxlZCA9IGNhbGxiYWNrKGlzSG9yaXpvbnRhbCwgaXNIb3Jpem9udGFsID8gb2Zmc2V0WCA6IG9mZnNldFksIGZhbHNlLCBlKTtcbiAgICAgICAgICAgIGlmIChzY3JvbGxIYW5kbGVkKSB7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gU21vb3RoIGludGVydmFsXG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgaWYgKHNjcm9sbEhhbmRsZWQpIHtcbiAgICAgICAgICAgICAgICBpbnRlcnZhbFJlZi5jdXJyZW50ID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYICo9IFNNT09USF9QVEc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZICo9IFNNT09USF9QVEc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gTWF0aC5mbG9vcihpc0hvcml6b250YWwgPyBvZmZzZXRYIDogb2Zmc2V0WSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY2FsbGJhY2soaXNIb3Jpem9udGFsLCBvZmZzZXQsIHRydWUpIHx8IE1hdGguYWJzKG9mZnNldCkgPD0gMC4xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgMTYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBvblRvdWNoRW5kID0gKCkgPT4ge1xuICAgICAgICB0b3VjaGVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgY2xlYW5VcEV2ZW50cygpO1xuICAgIH07XG4gICAgY29uc3Qgb25Ub3VjaFN0YXJ0ID0gKGUpID0+IHtcbiAgICAgICAgY2xlYW5VcEV2ZW50cygpO1xuICAgICAgICBpZiAoZS50b3VjaGVzLmxlbmd0aCA9PT0gMSAmJiAhdG91Y2hlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICB0b3VjaGVkUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgdG91Y2hYUmVmLmN1cnJlbnQgPSBNYXRoLmNlaWwoZS50b3VjaGVzWzBdLnBhZ2VYKTtcbiAgICAgICAgICAgIHRvdWNoWVJlZi5jdXJyZW50ID0gTWF0aC5jZWlsKGUudG91Y2hlc1swXS5wYWdlWSk7XG4gICAgICAgICAgICBlbGVtZW50UmVmLmN1cnJlbnQgPSBlLnRhcmdldDtcbiAgICAgICAgICAgIGVsZW1lbnRSZWYuY3VycmVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBvblRvdWNoTW92ZSwgeyBwYXNzaXZlOiBmYWxzZSB9KTtcbiAgICAgICAgICAgIGVsZW1lbnRSZWYuY3VycmVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIG9uVG91Y2hFbmQsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgY2xlYW5VcEV2ZW50cyA9ICgpID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgZWxlbWVudFJlZi5jdXJyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIG9uVG91Y2hNb3ZlKTtcbiAgICAgICAgICAgIGVsZW1lbnRSZWYuY3VycmVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIG9uVG91Y2hFbmQpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChpblZpcnR1YWwpIHtcbiAgICAgICAgICAgIChfYSA9IGxpc3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBvblRvdWNoU3RhcnQsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgKF9hID0gbGlzdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIG9uVG91Y2hTdGFydCk7XG4gICAgICAgICAgICBjbGVhblVwRXZlbnRzKCk7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsUmVmLmN1cnJlbnQpO1xuICAgICAgICB9O1xuICAgIH0sIFtpblZpcnR1YWxdKTtcbn0iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
85
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVmlydHVhbExpc3Qvc3JjL2NvbXBvbmVudHMvVmlydHVhbExpc3QvaG9va3MvdXNlTW9iaWxlVG91Y2hNb3ZlLnRzIiwiY29tcG9uZW50cy9WaXJ0dWFsTGlzdC9ob29rcy91c2VNb2JpbGVUb3VjaE1vdmUuanMiXSwibmFtZXMiOlsidXNlTGF5b3V0RWZmZWN0IiwidXNlUmVmIiwiU01PT1RIX1BURyIsInVzZU1vYmlsZVRvdWNoTW92ZSIsImluVmlydHVhbCIsImxpc3RSZWYiLCJjYWxsYmFjayIsInRvdWNoZWRSZWYiLCJ0b3VjaFhSZWYiLCJ0b3VjaFlSZWYiLCJlbGVtZW50UmVmIiwiaW50ZXJ2YWxSZWYiLCJjbGVhblVwRXZlbnRzIiwib25Ub3VjaE1vdmUiLCJlIiwiY3VycmVudCIsImN1cnJlbnRYIiwiTWF0aCIsImNlaWwiLCJ0b3VjaGVzIiwicGFnZVgiLCJjdXJyZW50WSIsInBhZ2VZIiwib2Zmc2V0WCIsIm9mZnNldFkiLCJpc0hvcml6b250YWwiLCJhYnMiLCJzY3JvbGxIYW5kbGVkIiwicHJldmVudERlZmF1bHQiLCJjbGVhckludGVydmFsIiwic2V0SW50ZXJ2YWwiLCJvZmZzZXQiLCJmbG9vciIsIm9uVG91Y2hFbmQiLCJvblRvdWNoU3RhcnQiLCJsZW5ndGgiLCJ0YXJnZXQiLCJhZGRFdmVudExpc3RlbmVyIiwicGFzc2l2ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJfYSJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsZUFBZSxNQUFNLCtCQUErQjtBQUUzRCxTQUFTQyxNQUFNLFFBQVEsT0FBTztBQUU5QixJQUFNQyxVQUFVLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFFMUIsZUFBYyxTQUFVQyxrQkFBa0JBLENBQ3hDQyxTQUFrQixFQUNsQkMsT0FBK0MsRUFDL0NDLFFBS1ksRUFBQTtFQUVaLElBQU1DLFVBQVUsR0FBR04sTUFBTSxDQUFDLEtBQUssQ0FBQztFQUNoQyxJQUFNTyxTQUFTLEdBQUdQLE1BQU0sQ0FB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QUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLENBQUVELG1CQUFtQixDQUFDLFlBQVksRUFBRUwsWUFBWSxDQUFDO01BQ2hFdEIsYUFBYSxDQUFBLENBQUU7TUFDZmlCLGFBQWEsQ0FBQ2xCLFdBQVcsQ0FBQ0ksT0FBUSxDQUFDO0lBQ3JDLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQ1gsU0FBUyxDQUFDLENBQUM7QUFDakIiLCJmaWxlIjoiY29tcG9uZW50cy9WaXJ0dWFsTGlzdC9ob29rcy91c2VNb2JpbGVUb3VjaE1vdmUuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCB1c2VMYXlvdXRFZmZlY3QgZnJvbSAnQDFtb25leS9ob29rcy91c2VMYXlvdXRFZmZlY3QnO1xuaW1wb3J0IHsgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuY29uc3QgU01PT1RIX1BURyA9IDE0IC8gMTU7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VNb2JpbGVUb3VjaE1vdmUoaW5WaXJ0dWFsLCBsaXN0UmVmLCBjYWxsYmFjaykge1xuICAgIGNvbnN0IHRvdWNoZWRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IHRvdWNoWFJlZiA9IHVzZVJlZigwKTtcbiAgICBjb25zdCB0b3VjaFlSZWYgPSB1c2VSZWYoMCk7XG4gICAgY29uc3QgZWxlbWVudFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICAvLyBTbW9vdGggc2Nyb2xsXG4gICAgY29uc3QgaW50ZXJ2YWxSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgbGV0IGNsZWFuVXBFdmVudHM7XG4gICAgY29uc3Qgb25Ub3VjaE1vdmUgPSAoZSkgPT4ge1xuICAgICAgICBpZiAodG91Y2hlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50WCA9IE1hdGguY2VpbChlLnRvdWNoZXNbMF0ucGFnZVgpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFkgPSBNYXRoLmNlaWwoZS50b3VjaGVzWzBdLnBhZ2VZKTtcbiAgICAgICAgICAgIGxldCBvZmZzZXRYID0gdG91Y2hYUmVmLmN1cnJlbnQgLSBjdXJyZW50WDtcbiAgICAgICAgICAgIGxldCBvZmZzZXRZID0gdG91Y2hZUmVmLmN1cnJlbnQgLSBjdXJyZW50WTtcbiAgICAgICAgICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IE1hdGguYWJzKG9mZnNldFgpID4gTWF0aC5hYnMob2Zmc2V0WSk7XG4gICAgICAgICAgICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgICAgICAgICAgICAgdG91Y2hYUmVmLmN1cnJlbnQgPSBjdXJyZW50WDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRvdWNoWVJlZi5jdXJyZW50ID0gY3VycmVudFk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzY3JvbGxIYW5kbGVkID0gY2FsbGJhY2soaXNIb3Jpem9udGFsLCBpc0hvcml6b250YWwgPyBvZmZzZXRYIDogb2Zmc2V0WSwgZmFsc2UsIGUpO1xuICAgICAgICAgICAgaWYgKHNjcm9sbEhhbmRsZWQpIHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBTbW9vdGggaW50ZXJ2YWxcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxSZWYuY3VycmVudCk7XG4gICAgICAgICAgICBpZiAoc2Nyb2xsSGFuZGxlZCkge1xuICAgICAgICAgICAgICAgIGludGVydmFsUmVmLmN1cnJlbnQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFggKj0gU01PT1RIX1BURztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFkgKj0gU01PT1RIX1BURztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBvZmZzZXQgPSBNYXRoLmZsb29yKGlzSG9yaXpvbnRhbCA/IG9mZnNldFggOiBvZmZzZXRZKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjYWxsYmFjayhpc0hvcml6b250YWwsIG9mZnNldCwgdHJ1ZSkgfHwgTWF0aC5hYnMob2Zmc2V0KSA8PSAwLjEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxSZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAxNik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IG9uVG91Y2hFbmQgPSAoKSA9PiB7XG4gICAgICAgIHRvdWNoZWRSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICBjbGVhblVwRXZlbnRzKCk7XG4gICAgfTtcbiAgICBjb25zdCBvblRvdWNoU3RhcnQgPSAoZSkgPT4ge1xuICAgICAgICBjbGVhblVwRXZlbnRzKCk7XG4gICAgICAgIGlmIChlLnRvdWNoZXMubGVuZ3RoID09PSAxICYmICF0b3VjaGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHRvdWNoZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICB0b3VjaFhSZWYuY3VycmVudCA9IE1hdGguY2VpbChlLnRvdWNoZXNbMF0ucGFnZVgpO1xuICAgICAgICAgICAgdG91Y2hZUmVmLmN1cnJlbnQgPSBNYXRoLmNlaWwoZS50b3VjaGVzWzBdLnBhZ2VZKTtcbiAgICAgICAgICAgIGVsZW1lbnRSZWYuY3VycmVudCA9IGUudGFyZ2V0O1xuICAgICAgICAgICAgZWxlbWVudFJlZi5jdXJyZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIG9uVG91Y2hNb3ZlLCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuICAgICAgICAgICAgZWxlbWVudFJlZi5jdXJyZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgb25Ub3VjaEVuZCwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBjbGVhblVwRXZlbnRzID0gKCkgPT4ge1xuICAgICAgICBpZiAoZWxlbWVudFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBlbGVtZW50UmVmLmN1cnJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgb25Ub3VjaE1vdmUpO1xuICAgICAgICAgICAgZWxlbWVudFJlZi5jdXJyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgb25Ub3VjaEVuZCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKGluVmlydHVhbCkge1xuICAgICAgICAgICAgKF9hID0gbGlzdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIG9uVG91Y2hTdGFydCwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAoX2EgPSBsaXN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0Jywgb25Ub3VjaFN0YXJ0KTtcbiAgICAgICAgICAgIGNsZWFuVXBFdmVudHMoKTtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxSZWYuY3VycmVudCk7XG4gICAgICAgIH07XG4gICAgfSwgW2luVmlydHVhbF0pO1xufSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -2,7 +2,7 @@ import _typeof from "@babel/runtime/helpers/esm/typeof";
2
2
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
3
  import * as React from 'react';
4
4
  import raf from '../utils/raf';
5
- import { useLayoutEffect } from '@1money/hooks';
5
+ import useLayoutEffect from '@1money/hooks/useLayoutEffect';
6
6
  var MAX_TIMES = 10;
7
7
  export default function useScrollTo(containerRef, data, heights, itemHeight, getKey, collectHeight, syncScrollTop, triggerFlash) {
8
8
  var scrollRef = React.useRef(undefined);
@@ -129,4 +129,4 @@ export default function useScrollTo(containerRef, data, heights, itemHeight, get
129
129
  }
130
130
  };
131
131
  }
132
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVmlydHVhbExpc3Qvc3JjL2NvbXBvbmVudHMvVmlydHVhbExpc3QvaG9va3MvdXNlU2Nyb2xsVG8udHN4IiwiY29tcG9uZW50cy9WaXJ0dWFsTGlzdC9ob29rcy91c2VTY3JvbGxUby5qcyJdLCJuYW1lcyI6WyJSZWFjdCIsInJhZiIsInVzZUxheW91dEVmZmVjdCIsIk1BWF9USU1FUyIsInVzZVNjcm9sbFRvIiwiY29udGFpbmVyUmVmIiwiZGF0YSIsImhlaWdodHMiLCJpdGVtSGVpZ2h0IiwiZ2V0S2V5IiwiY29sbGVjdEhlaWdodCIsInN5bmNTY3JvbGxUb3AiLCJ0cmlnZ2VyRmxhc2giLCJzY3JvbGxSZWYiLCJ1c2VSZWYiLCJ1bmRlZmluZWQiLCJfUmVhY3QkdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl9SZWFjdCR1c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInN5bmNTdGF0ZSIsInNldFN5bmNTdGF0ZSIsInRpbWVzIiwiY3VycmVudCIsIm9yaSIsIk9iamVjdCIsImFzc2lnbiIsInRhcmdldEFsaWduIiwib3JpZ2luQWxpZ24iLCJpbmRleCIsIm9mZnNldCIsImhlaWdodCIsImNsaWVudEhlaWdodCIsIm5lZWRDb2xsZWN0SGVpZ2h0IiwibmV3VGFyZ2V0QWxpZ24iLCJ0YXJnZXRUb3AiLCJtZXJnZWRBbGlnbiIsInN0YWNrVG9wIiwiaXRlbVRvcCIsIml0ZW1Cb3R0b20iLCJtYXhMZW4iLCJNYXRoIiwibWluIiwibGVuZ3RoIiwiaSIsImtleSIsImNhY2hlSGVpZ2h0IiwiZ2V0IiwibGVmdEhlaWdodCIsInNjcm9sbFRvcCIsInNjcm9sbEJvdHRvbSIsImxhc3RUb3AiLCJjb25zb2xlIiwid2FybiIsImFyZyIsImNhbmNlbCIsIl90eXBlb2YiLCJhbGlnbiIsImZpbmRJbmRleCIsIml0ZW0iLCJfYXJnJG9mZnNldCJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEtBQUtBLEtBQUssTUFBTSxPQUFPO0FBQzlCLE9BQU9DLEdB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V0FBQSxjQUFHLENBQUMsR0FBQUEsV0FBQTtNQUVsQnZDLFlBQVksQ0FBQztRQUNYQyxLQUFLLEVBQUUsQ0FBQztRQUNSTyxLQUFLLEVBQUxBLEtBQUs7UUFDTEMsTUFBTSxFQUFOQSxNQUFNO1FBQ05GLFdBQVcsRUFBRTZCO01DakVULENEa0VMLENBQUM7SUFDSjtFQUNGLENBQUM7QUFDSCIsImZpbGUiOiJjb21wb25lbnRzL1ZpcnR1YWxMaXN0L2hvb2tzL3VzZVNjcm9sbFRvLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgcmFmIGZyb20gJy4uL3V0aWxzL3JhZic7XG5pbXBvcnQgeyB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdAMW1vbmV5L2hvb2tzJztcbmNvbnN0IE1BWF9USU1FUyA9IDEwO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlU2Nyb2xsVG8oY29udGFpbmVyUmVmLCBkYXRhLCBoZWlnaHRzLCBpdGVtSGVpZ2h0LCBnZXRLZXksIGNvbGxlY3RIZWlnaHQsIHN5bmNTY3JvbGxUb3AsIHRyaWdnZXJGbGFzaCkge1xuICAgIGNvbnN0IHNjcm9sbFJlZiA9IFJlYWN0LnVzZVJlZih1bmRlZmluZWQpO1xuICAgIGNvbnN0IFtzeW5jU3RhdGUsIHNldFN5bmNTdGF0ZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PSBTeW5jIFNjcm9sbCA9PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChzeW5jU3RhdGUgJiYgc3luY1N0YXRlLnRpbWVzIDwgTUFYX1RJTUVTKSB7XG4gICAgICAgICAgICAvLyBOZXZlciByZWFjaFxuICAgICAgICAgICAgaWYgKCFjb250YWluZXJSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIHNldFN5bmNTdGF0ZSgob3JpKSA9PiAoT2JqZWN0LmFzc2lnbih7fSwgb3JpKSkpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbGxlY3RIZWlnaHQoKTtcbiAgICAgICAgICAgIGNvbnN0IHsgdGFyZ2V0QWxpZ24sIG9yaWdpbkFsaWduLCBpbmRleCwgb2Zmc2V0IH0gPSBzeW5jU3RhdGU7XG4gICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBjb250YWluZXJSZWYuY3VycmVudC5jbGllbnRIZWlnaHQ7XG4gICAgICAgICAgICBsZXQgbmVlZENvbGxlY3RIZWlnaHQgPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBuZXdUYXJnZXRBbGlnbiA9IHRhcmdldEFsaWduICE9PSBudWxsICYmIHRhcmdldEFsaWduICE9PSB2b2lkIDAgPyB0YXJnZXRBbGlnbiA6IG51bGw7XG4gICAgICAgICAgICBsZXQgdGFyZ2V0VG9wID0gbnVsbDtcbiAgICAgICAgICAgIC8vIEdvIHRvIG5leHQgZnJhbWUgaWYgaGVpZ2h0IG5vdCBleGlzdFxuICAgICAgICAgICAgaWYgKGhlaWdodCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lcmdlZEFsaWduID0gdGFyZ2V0QWxpZ24gfHwgb3JpZ2luQWxpZ247XG4gICAgICAgICAgICAgICAgLy8gR2V0IHRvcCAmIGJvdHRvbVxuICAgICAgICAgICAgICAgIGxldCBzdGFja1RvcCA9IDA7XG4gICAgICAgICAgICAgICAgbGV0IGl0ZW1Ub3AgPSAwO1xuICAgICAgICAgICAgICAgIGxldCBpdGVtQm90dG9tID0gMDtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXhMZW4gPSBNYXRoLm1pbihkYXRhLmxlbmd0aCAtIDEsIGluZGV4KTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBtYXhMZW47IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBnZXRLZXkoZGF0YVtpXSk7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1Ub3AgPSBzdGFja1RvcDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FjaGVIZWlnaHQgPSBoZWlnaHRzLmdldChrZXkpO1xuICAgICAgICAgICAgICAgICAgICBpdGVtQm90dG9tID0gaXRlbVRvcCArIChjYWNoZUhlaWdodCA9PT0gdW5kZWZpbmVkID8gaXRlbUhlaWdodCA6IGNhY2hlSGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhY2tUb3AgPSBpdGVtQm90dG9tO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiBuZWVkIHN5bmMgaGVpZ2h0ICh2aXNpYmxlIHJhbmdlIGhhcyBpdGVtIG5vdCByZWNvcmQgaGVpZ2h0KVxuICAgICAgICAgICAgICAgIGxldCBsZWZ0SGVpZ2h0ID0gbWVyZ2VkQWxpZ24gPT09ICd0b3AnID8gb2Zmc2V0IDogaGVpZ2h0IC0gb2Zmc2V0O1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBtYXhMZW47IGkgPj0gMDsgaSAtPSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGdldEtleShkYXRhW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FjaGVIZWlnaHQgPSBoZWlnaHRzLmdldChrZXkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVIZWlnaHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmVlZENvbGxlY3RIZWlnaHQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbGVmdEhlaWdodCAtPSBjYWNoZUhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxlZnRIZWlnaHQgPD0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gU2Nyb2xsIHRvXG4gICAgICAgICAgICAgICAgc3dpdGNoIChtZXJnZWRBbGlnbikge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VG9wID0gaXRlbVRvcCAtIG9mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VG9wID0gaXRlbUJvdHRvbSAtIGhlaWdodCArIG9mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHNjcm9sbFRvcCB9ID0gY29udGFpbmVyUmVmLmN1cnJlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzY3JvbGxCb3R0b20gPSBzY3JvbGxUb3AgKyBoZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVRvcCA8IHNjcm9sbFRvcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1RhcmdldEFsaWduID0gJ3RvcCc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpdGVtQm90dG9tID4gc2Nyb2xsQm90dG9tKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VGFyZ2V0QWxpZ24gPSAnYm90dG9tJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0VG9wICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHN5bmNTY3JvbGxUb3AodGFyZ2V0VG9wKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gT25lIG1vcmUgdGltZSBmb3Igc3luY1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXRUb3AgIT09IHN5bmNTdGF0ZS5sYXN0VG9wKSB7XG4gICAgICAgICAgICAgICAgICAgIG5lZWRDb2xsZWN0SGVpZ2h0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBUcmlnZ2VyIG5leHQgZWZmZWN0XG4gICAgICAgICAgICBpZiAobmVlZENvbGxlY3RIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBzZXRTeW5jU3RhdGUoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzeW5jU3RhdGUpLCB7IHRpbWVzOiBzeW5jU3RhdGUudGltZXMgKyAxLCB0YXJnZXRBbGlnbjogbmV3VGFyZ2V0QWxpZ24sIGxhc3RUb3A6IHRhcmdldFRvcCB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoKHN5bmNTdGF0ZSA9PT0gbnVsbCB8fCBzeW5jU3RhdGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN5bmNTdGF0ZS50aW1lcykgPT09IE1BWF9USU1FUykge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdbVmlydHVhbExpc3RdIGBzY3JvbGxUb2AgcmVhY2hlZCB0aGUgbWF4IGl0ZXJhdGlvbiBsaW1pdC4nKTtcbiAgICAgICAgfVxuICAgIH0sIFtzeW5jU3RhdGUsIGNvbnRhaW5lclJlZi5jdXJyZW50XSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09IFNjcm9sbCBUbyA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICByZXR1cm4gKGFyZykgPT4ge1xuICAgICAgICAvLyBXaGVuIG5vdCBhcmd1bWVudCBwcm92aWRlZCwgd2UgdGhpbmsgZGV2IG1heSB3YW50IHRvIHNob3cgdGhlIHNjcm9sbGJhclxuICAgICAgICBpZiAoYXJnID09PSBudWxsIHx8IGFyZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0cmlnZ2VyRmxhc2goKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBOb3JtYWwgc2Nyb2xsIGxvZ2ljXG4gICAgICAgIHJhZi5jYW5jZWwoc2Nyb2xsUmVmLmN1cnJlbnQpO1xuICAgICAgICBpZiAodHlwZW9mIGFyZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHN5bmNTY3JvbGxUb3AoYXJnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChhcmcgJiYgdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGxldCBpbmRleDtcbiAgICAgICAgICAgIGNvbnN0IHsgYWxpZ24gfSA9IGFyZztcbiAgICAgICAgICAgIGlmICgnaW5kZXgnIGluIGFyZykge1xuICAgICAgICAgICAgICAgICh7IGluZGV4IH0gPSBhcmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBkYXRhLmZpbmRJbmRleCgoaXRlbSkgPT4gZ2V0S2V5KGl0ZW0pID09PSBhcmcua2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHsgb2Zmc2V0ID0gMCB9ID0gYXJnO1xuICAgICAgICAgICAgc2V0U3luY1N0YXRlKHtcbiAgICAgICAgICAgICAgICB0aW1lczogMCxcbiAgICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgICAgICBvZmZzZXQsXG4gICAgICAgICAgICAgICAgb3JpZ2luQWxpZ246IGFsaWduLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xufSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
132
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVmlydHVhbExpc3Qvc3JjL2NvbXBvbmVudHMvVmlydHVhbExpc3QvaG9va3MvdXNlU2Nyb2xsVG8udHN4IiwiY29tcG9uZW50cy9WaXJ0dWFsTGlzdC9ob29rcy91c2VTY3JvbGxUby5qcyJdLCJuYW1lcyI6WyJSZWFjdCIsInJhZiIsInVzZUxheW91dEVmZmVjdCIsIk1BWF9USU1FUyIsInVzZVNjcm9sbFRvIiwiY29udGFpbmVyUmVmIiwiZGF0YSIsImhlaWdodHMiLCJpdGVtSGVpZ2h0IiwiZ2V0S2V5IiwiY29sbGVjdEhlaWdodCIsInN5bmNTY3JvbGxUb3AiLCJ0cmlnZ2VyRmxhc2giLCJzY3JvbGxSZWYiLCJ1c2VSZWYiLCJ1bmRlZmluZWQiLCJfUmVhY3QkdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl9SZWFjdCR1c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInN5bmNTdGF0ZSIsInNldFN5bmNTdGF0ZSIsInRpbWVzIiwiY3VycmVudCIsIm9yaSIsIk9iamVjdCIsImFzc2lnbiIsInRhcmdldEFsaWduIiwib3JpZ2luQWxpZ24iLCJpbmRleCIsIm9mZnNldCIsImhlaWdodCIsImNsaWVudEhlaWdodCIsIm5lZWRDb2xsZWN0SGVpZ2h0IiwibmV3VGFyZ2V0QWxpZ24iLCJ0YXJnZXRUb3AiLCJtZXJnZWRBbGlnbiIsInN0YWNrVG9wIiwiaXRlbVRvcCIsIml0ZW1Cb3R0b20iLCJtYXhMZW4iLCJNYXRoIiwibWluIiwibGVuZ3RoIiwiaSIsImtleSIsImNhY2hlSGVpZ2h0IiwiZ2V0IiwibGVmdEhlaWdodCIsInNjcm9sbFRvcCIsInNjcm9sbEJvdHRvbSIsImxhc3RUb3AiLCJjb25zb2xlIiwid2FybiIsImFyZyIsImNhbmNlbCIsIl90eXBlb2YiLCJhbGlnbiIsImZpbmRJbmRleCIsIml0ZW0iLCJfYXJnJG9mZnNldCJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEtBQUtBLEtBQUssTUFBTSxPQUFPO0FBQzlCLE9BQU9DLEdB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QixXQUFBLGNBQUcsQ0FBQyxHQUFBQSxXQUFBO01BRWxCdkMsWUFBWSxDQUFDO1FBQ1hDLEtBQUssRUFBRSxDQUFDO1FBQ1JPLEtBQUssRUFBTEEsS0FBSztRQUNMQyxNQUFNLEVBQU5BLE1BQU07UUFDTkYsV0FBVyxFQUFFNkI7TUNqRVQsQ0RrRUwsQ0FBQztJQUNKO0VBQ0YsQ0FBQztBQUNIIiwiZmlsZSI6ImNvbXBvbmVudHMvVmlydHVhbExpc3QvaG9va3MvdXNlU2Nyb2xsVG8uanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCByYWYgZnJvbSAnLi4vdXRpbHMvcmFmJztcbmltcG9ydCB1c2VMYXlvdXRFZmZlY3QgZnJvbSAnQDFtb25leS9ob29rcy91c2VMYXlvdXRFZmZlY3QnO1xuY29uc3QgTUFYX1RJTUVTID0gMTA7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VTY3JvbGxUbyhjb250YWluZXJSZWYsIGRhdGEsIGhlaWdodHMsIGl0ZW1IZWlnaHQsIGdldEtleSwgY29sbGVjdEhlaWdodCwgc3luY1Njcm9sbFRvcCwgdHJpZ2dlckZsYXNoKSB7XG4gICAgY29uc3Qgc2Nyb2xsUmVmID0gUmVhY3QudXNlUmVmKHVuZGVmaW5lZCk7XG4gICAgY29uc3QgW3N5bmNTdGF0ZSwgc2V0U3luY1N0YXRlXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09IFN5bmMgU2Nyb2xsID09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHN5bmNTdGF0ZSAmJiBzeW5jU3RhdGUudGltZXMgPCBNQVhfVElNRVMpIHtcbiAgICAgICAgICAgIC8vIE5ldmVyIHJlYWNoXG4gICAgICAgICAgICBpZiAoIWNvbnRhaW5lclJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgc2V0U3luY1N0YXRlKChvcmkpID0+IChPYmplY3QuYXNzaWduKHt9LCBvcmkpKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29sbGVjdEhlaWdodCgpO1xuICAgICAgICAgICAgY29uc3QgeyB0YXJnZXRBbGlnbiwgb3JpZ2luQWxpZ24sIGluZGV4LCBvZmZzZXQgfSA9IHN5bmNTdGF0ZTtcbiAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGNvbnRhaW5lclJlZi5jdXJyZW50LmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIGxldCBuZWVkQ29sbGVjdEhlaWdodCA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IG5ld1RhcmdldEFsaWduID0gdGFyZ2V0QWxpZ24gIT09IG51bGwgJiYgdGFyZ2V0QWxpZ24gIT09IHZvaWQgMCA/IHRhcmdldEFsaWduIDogbnVsbDtcbiAgICAgICAgICAgIGxldCB0YXJnZXRUb3AgPSBudWxsO1xuICAgICAgICAgICAgLy8gR28gdG8gbmV4dCBmcmFtZSBpZiBoZWlnaHQgbm90IGV4aXN0XG4gICAgICAgICAgICBpZiAoaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVyZ2VkQWxpZ24gPSB0YXJnZXRBbGlnbiB8fCBvcmlnaW5BbGlnbjtcbiAgICAgICAgICAgICAgICAvLyBHZXQgdG9wICYgYm90dG9tXG4gICAgICAgICAgICAgICAgbGV0IHN0YWNrVG9wID0gMDtcbiAgICAgICAgICAgICAgICBsZXQgaXRlbVRvcCA9IDA7XG4gICAgICAgICAgICAgICAgbGV0IGl0ZW1Cb3R0b20gPSAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1heExlbiA9IE1hdGgubWluKGRhdGEubGVuZ3RoIC0gMSwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IG1heExlbjsgaSArPSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGdldEtleShkYXRhW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgaXRlbVRvcCA9IHN0YWNrVG9wO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYWNoZUhlaWdodCA9IGhlaWdodHMuZ2V0KGtleSk7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1Cb3R0b20gPSBpdGVtVG9wICsgKGNhY2hlSGVpZ2h0ID09PSB1bmRlZmluZWQgPyBpdGVtSGVpZ2h0IDogY2FjaGVIZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICBzdGFja1RvcCA9IGl0ZW1Cb3R0b207XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIG5lZWQgc3luYyBoZWlnaHQgKHZpc2libGUgcmFuZ2UgaGFzIGl0ZW0gbm90IHJlY29yZCBoZWlnaHQpXG4gICAgICAgICAgICAgICAgbGV0IGxlZnRIZWlnaHQgPSBtZXJnZWRBbGlnbiA9PT0gJ3RvcCcgPyBvZmZzZXQgOiBoZWlnaHQgLSBvZmZzZXQ7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IG1heExlbjsgaSA+PSAwOyBpIC09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gZ2V0S2V5KGRhdGFbaV0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYWNoZUhlaWdodCA9IGhlaWdodHMuZ2V0KGtleSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZUhlaWdodCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZWVkQ29sbGVjdEhlaWdodCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsZWZ0SGVpZ2h0IC09IGNhY2hlSGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBpZiAobGVmdEhlaWdodCA8PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBTY3JvbGwgdG9cbiAgICAgICAgICAgICAgICBzd2l0Y2ggKG1lcmdlZEFsaWduKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRUb3AgPSBpdGVtVG9wIC0gb2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRUb3AgPSBpdGVtQm90dG9tIC0gaGVpZ2h0ICsgb2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wIH0gPSBjb250YWluZXJSZWYuY3VycmVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNjcm9sbEJvdHRvbSA9IHNjcm9sbFRvcCArIGhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtVG9wIDwgc2Nyb2xsVG9wKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VGFyZ2V0QWxpZ24gPSAndG9wJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGl0ZW1Cb3R0b20gPiBzY3JvbGxCb3R0b20pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdUYXJnZXRBbGlnbiA9ICdib3R0b20nO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0YXJnZXRUb3AgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgc3luY1Njcm9sbFRvcCh0YXJnZXRUb3ApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBPbmUgbW9yZSB0aW1lIGZvciBzeW5jXG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldFRvcCAhPT0gc3luY1N0YXRlLmxhc3RUb3ApIHtcbiAgICAgICAgICAgICAgICAgICAgbmVlZENvbGxlY3RIZWlnaHQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFRyaWdnZXIgbmV4dCBlZmZlY3RcbiAgICAgICAgICAgIGlmIChuZWVkQ29sbGVjdEhlaWdodCkge1xuICAgICAgICAgICAgICAgIHNldFN5bmNTdGF0ZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHN5bmNTdGF0ZSksIHsgdGltZXM6IHN5bmNTdGF0ZS50aW1lcyArIDEsIHRhcmdldEFsaWduOiBuZXdUYXJnZXRBbGlnbiwgbGFzdFRvcDogdGFyZ2V0VG9wIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICgoc3luY1N0YXRlID09PSBudWxsIHx8IHN5bmNTdGF0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3luY1N0YXRlLnRpbWVzKSA9PT0gTUFYX1RJTUVTKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1tWaXJ0dWFsTGlzdF0gYHNjcm9sbFRvYCByZWFjaGVkIHRoZSBtYXggaXRlcmF0aW9uIGxpbWl0LicpO1xuICAgICAgICB9XG4gICAgfSwgW3N5bmNTdGF0ZSwgY29udGFpbmVyUmVmLmN1cnJlbnRdKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT0gU2Nyb2xsIFRvID09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIHJldHVybiAoYXJnKSA9PiB7XG4gICAgICAgIC8vIFdoZW4gbm90IGFyZ3VtZW50IHByb3ZpZGVkLCB3ZSB0aGluayBkZXYgbWF5IHdhbnQgdG8gc2hvdyB0aGUgc2Nyb2xsYmFyXG4gICAgICAgIGlmIChhcmcgPT09IG51bGwgfHwgYXJnID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRyaWdnZXJGbGFzaCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIE5vcm1hbCBzY3JvbGwgbG9naWNcbiAgICAgICAgcmFmLmNhbmNlbChzY3JvbGxSZWYuY3VycmVudCk7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgc3luY1Njcm9sbFRvcChhcmcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGFyZyAmJiB0eXBlb2YgYXJnID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgbGV0IGluZGV4O1xuICAgICAgICAgICAgY29uc3QgeyBhbGlnbiB9ID0gYXJnO1xuICAgICAgICAgICAgaWYgKCdpbmRleCcgaW4gYXJnKSB7XG4gICAgICAgICAgICAgICAgKHsgaW5kZXggfSA9IGFyZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpbmRleCA9IGRhdGEuZmluZEluZGV4KChpdGVtKSA9PiBnZXRLZXkoaXRlbSkgPT09IGFyZy5rZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgeyBvZmZzZXQgPSAwIH0gPSBhcmc7XG4gICAgICAgICAgICBzZXRTeW5jU3RhdGUoe1xuICAgICAgICAgICAgICAgIHRpbWVzOiAwLFxuICAgICAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgICAgIG9mZnNldCxcbiAgICAgICAgICAgICAgICBvcmlnaW5BbGlnbjogYWxpZ24sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG59Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==