@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
@@ -1,11 +1,13 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { memo } from 'react';
2
3
  import { Icons } from '../../Icons';
4
+ import { joinCls } from '../../../utils/classnames';
3
5
  import { TABLE_DEFAULT_PREFIX } from '../constants';
4
6
  var SORT_TRIGGER_ICON_SIZE = {
5
7
  large: 16,
6
8
  small: 12
7
9
  };
8
- export var SortTrigger = function SortTrigger(_ref) {
10
+ var SortTriggerInner = function SortTriggerInner(_ref) {
9
11
  var label = _ref.label,
10
12
  _ref$order = _ref.order,
11
13
  order = _ref$order === void 0 ? null : _ref$order,
@@ -14,7 +16,7 @@ export var SortTrigger = function SortTrigger(_ref) {
14
16
  return _jsx("button", {
15
17
  type: "button",
16
18
  "aria-label": "Sort ".concat(label),
17
- className: "".concat(TABLE_DEFAULT_PREFIX, "-sort-trigger ").concat(TABLE_DEFAULT_PREFIX, "-sort-trigger--").concat(size),
19
+ className: joinCls("".concat(TABLE_DEFAULT_PREFIX, "-sort-trigger"), "".concat(TABLE_DEFAULT_PREFIX, "-sort-trigger--").concat(size)),
18
20
  onClick: onClick,
19
21
  children: _jsx(Icons, {
20
22
  name: "sort",
@@ -23,4 +25,7 @@ export var SortTrigger = function SortTrigger(_ref) {
23
25
  })
24
26
  });
25
27
  };
26
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvZmVhdHVyZXMvU29ydFRyaWdnZXIuanMiLCJjb21wb25lbnRzL1RhYmxlL3NyYy9jb21wb25lbnRzL1RhYmxlL2ZlYXR1cmVzL1NvcnRUcmlnZ2VyLnRzeCJdLCJuYW1lcyI6WyJqc3giLCJfanN4IiwiSWNvbnMiLCJUQUJMRV9ERUZBVUxUX1BSRUZJWCIsIlNPUlRfVFJJR0dFUl9JQ09OX1NJWkUiLCJsYXJnZSIsInNtYWxsIiwiU29ydFRyaWdnZXIiLCJfcmVmIiwibGFiZWwiLCJfcmVmJG9yZGVyIiwib3JkZXIiLCJzaXplIiwib25DbGljayIsInR5cGUiLCJjb25jYXQiLCJjbGFzc05hbWUiLCJjaGlsZHJlbiIsIm5hbWUiLCJzdGF0dXMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLEdBQUcsSUFBSUMsSUFBSSxRQUFRLG1CQUFtQjtBQ0EvQyxTQUFTQyxLQUFLLFFBQVEsYUFBYTtBQUNuQyxTQUFTQyxvQkFBb0IsUUFBUSxjQUFjO0FBR25ELElBQU1DLHNCQUFzQixHQUFHO0VBQzdCQyxLQUFLLEVBQUUsRUFBRTtFQUNUQyxLQUFLLEVBQUU7QURBVCxDQ0NVO0FBRVYsT0FBTyxJQUFNQyxXQUFXLEdBQUcsU0FBZEEsV0FBV0EsQ0FBQUMsSUFBQTtFQUFBLElBQ3RCQyxLQUFLLEdBQUFELElBQUEsQ0FBTEMsS0FBSztJQUFBQyxVQUFBLEdBQUFGLElBQUEsQ0FDTEcsS0FBSztJQUFMQSxLQUFLLEdBQUFELFVBQUEsY0FBRyxJQUFJLEdBQUFBLFVBQUE7SUFDWkUsSUFBSSxHQUFBSixJQUFBLENBQUpJLElBQUk7SUFDSkMsT0FBTyxHQUFBTCxJQUFBLENBQVBLLE9BQU87RUFBQSxPQU9QWixJQUFBLENBQUEsUUFBQSxFQUFBO0lBQ0VhLElBQUksRUFBQyxRQUFRO0lBQUEsWUFBQSxVQUFBQyxNQUFBLENBQ09OLEtBQUssQ0FBRTtJQUMzQk8sU0FBUyxLQUFBRCxNQUFBLENBQUtaLG9CQUFvQixvQkFBQVksTUFBQSxDQUFpQlosb0JBQW9CLHFCQUFBWSxNQUFBLENBQWtCSCxJQUFJLENBQUU7SUFDL0ZDLE9BQU8sRUFBRUEsT0FBTztJQUFBSSxRQUFBLEVBRWhCaEIsSUFBQSxDQUFDQyxLQUFLLEVBQUE7TUFBQ2dCLElBQUksRUFBQyxNQUFNO01BQUNOLElBQUksRUFBRVIsc0JBQXNCLENBQUNRLElBQUksQ0FBQztNQUFFTyxNQUFNLEVBQUVSLEtBQUssS0FBQSxJQUFBLElBQUxBLEtBQUssS0FBQSxLQUFBLENBQUEsR0FBTEEsS0FBSyxHQUFJO0lBQVMsQ0FBQTtFQUFJLENBQUEsQ0FDOUU7QUFBQSxDQUNWIiwiZmlsZSI6ImNvbXBvbmVudHMvVGFibGUvZmVhdHVyZXMvU29ydFRyaWdnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgSWNvbnMgfSBmcm9tICcuLi8uLi9JY29ucyc7XG5pbXBvcnQgeyBUQUJMRV9ERUZBVUxUX1BSRUZJWCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5jb25zdCBTT1JUX1RSSUdHRVJfSUNPTl9TSVpFID0ge1xuICAgIGxhcmdlOiAxNixcbiAgICBzbWFsbDogMTIsXG59O1xuZXhwb3J0IGNvbnN0IFNvcnRUcmlnZ2VyID0gKHsgbGFiZWwsIG9yZGVyID0gbnVsbCwgc2l6ZSwgb25DbGljaywgfSkgPT4gKF9qc3goXCJidXR0b25cIiwgeyB0eXBlOiBcImJ1dHRvblwiLCBcImFyaWEtbGFiZWxcIjogYFNvcnQgJHtsYWJlbH1gLCBjbGFzc05hbWU6IGAke1RBQkxFX0RFRkFVTFRfUFJFRklYfS1zb3J0LXRyaWdnZXIgJHtUQUJMRV9ERUZBVUxUX1BSRUZJWH0tc29ydC10cmlnZ2VyLS0ke3NpemV9YCwgb25DbGljazogb25DbGljaywgY2hpbGRyZW46IF9qc3goSWNvbnMsIHsgbmFtZTogXCJzb3J0XCIsIHNpemU6IFNPUlRfVFJJR0dFUl9JQ09OX1NJWkVbc2l6ZV0sIHN0YXR1czogb3JkZXIgIT09IG51bGwgJiYgb3JkZXIgIT09IHZvaWQgMCA/IG9yZGVyIDogJ2RlZmF1bHQnIH0pIH0pKTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
28
+ // Props are primitives + a stable `onClick` (created inside the memoised column
29
+ // build), so memo holds.
30
+ export var SortTrigger = /*#__PURE__*/memo(SortTriggerInner);
31
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvZmVhdHVyZXMvU29ydFRyaWdnZXIuanMiLCJjb21wb25lbnRzL1RhYmxlL3NyYy9jb21wb25lbnRzL1RhYmxlL2ZlYXR1cmVzL1NvcnRUcmlnZ2VyLnRzeCJdLCJuYW1lcyI6WyJqc3giLCJfanN4IiwibWVtbyIsIkljb25zIiwiam9pbkNscyIsIlRBQkxFX0RFRkFVTFRfUFJFRklYIiwiU09SVF9UUklHR0VSX0lDT05fU0laRSIsImxhcmdlIiwic21hbGwiLCJTb3J0VHJpZ2dlcklubmVyIiwiX3JlZiIsImxhYmVsIiwiX3JlZiRvcmRlciIsIm9yZGVyIiwic2l6ZSIsIm9uQ2xpY2siLCJ0eXBlIiwiY29uY2F0IiwiY2xhc3NOYW1lIiwiY2hpbGRyZW4iLCJuYW1lIiwic3RhdHVzIiwiU29ydFRyaWdnZXIiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLEdBQUcsSUFBSUMsSUFBSSxRQUFRLG1CQUFtQjtBQ0EvQyxTQUFTQyxJQUFJLFFBQVEsT0FBTztBQUM1QixTQUFTQyxLQUFLLFFBQVEsYUFBYTtBQUNuQyxTQUFTQyxPQUFPLFFBQVEsMkJBQTJCO0FBQ25ELFNBQVNDLG9CQUFvQixRQUFRLGNBQWM7QUFHbkQsSUFBTUMsc0JBQXNCLEdBQUc7RUFDN0JDLEtBQUssRUFBRSxFQUFFO0VBQ1RDLEtBQUssRUFBRTtBREFULENDQ1U7QUFTVixJQUFNQyxnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQWdCQSxDQUFBQyxJQUFBO0VBQUEsSUFBTUMsS0FBSyxHQUFBRCxJQUFBLENBQUxDLEtBQUs7SUFBQUMsVUFBQSxHQUFBRixJQUFBLENBQUVHLEtBQUs7SUFBTEEsS0FBSyxHQUFBRCxVQUFBLGNBQUcsSUFBSSxHQUFBQSxVQUFBO0lBQUVFLElBQUksR0FBQUosSUFBQSxDQUFKSSxJQUFJO0lBQUVDLE9BQU8sR0FBQUwsSUFBQSxDQUFQSyxPQUFPO0VBQUEsT0FDNURkLElBQUEsQ0FBQSxRQUFBLEVBQUE7SUFDRWUsSUFBSSxFQUFDLFFBQVE7SUFBQSxZQUFBLFVBQUFDLE1BQUEsQ0FDT04sS0FBSyxDQUFFO0lBQzNCTyxTQUFTLEVBQUVkLE9BQU8sSUFBQWEsTUFBQSxDQUNiWixvQkFBb0IsdUJBQUFZLE1BQUEsQ0FDcEJaLG9CQUFvQixxQkFBQVksTUFBQSxDQUFrQkgsSUFBSSxDQUFFLENBQ2hEO0lBQ0RDLE9BQU8sRUFBRUEsT0FBTztJQUFBSSxRQUFBLEVBRWhCbEIsSUFBQSxDQUFDRSxLQUFLLEVBQUE7TUFBQ2lCLElBQUksRUFBQyxNQUFNO01BQUNOLElBQUksRUFBRVIsc0JBQXNCLENBQUNRLElBQUksQ0FBQztNQUFFTyxNQUFNLEVBQUVSLEtBQUssS0FBQSxJQUFBLElBQUxBLEtBQUssS0FBQSxLQUFBLENBQUEsR0FBTEEsS0FBSyxHQUFJO0lBQVMsQ0FBQTtFQUFJLENBQUEsQ0FDOUU7QUFBQSxDQUNWO0FBRUQ7QUFDQTtBQUNBLE9BQU8sSUFBTVMsV0FBVyxnQkFBR3BCLElBQUksQ0FBQ08sZ0JBQWdCLENBQUMiLCJmaWxlIjoiY29tcG9uZW50cy9UYWJsZS9mZWF0dXJlcy9Tb3J0VHJpZ2dlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSWNvbnMgfSBmcm9tICcuLi8uLi9JY29ucyc7XG5pbXBvcnQgeyBqb2luQ2xzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBUQUJMRV9ERUZBVUxUX1BSRUZJWCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5jb25zdCBTT1JUX1RSSUdHRVJfSUNPTl9TSVpFID0ge1xuICAgIGxhcmdlOiAxNixcbiAgICBzbWFsbDogMTIsXG59O1xuY29uc3QgU29ydFRyaWdnZXJJbm5lciA9ICh7IGxhYmVsLCBvcmRlciA9IG51bGwsIHNpemUsIG9uQ2xpY2sgfSkgPT4gKF9qc3goXCJidXR0b25cIiwgeyB0eXBlOiBcImJ1dHRvblwiLCBcImFyaWEtbGFiZWxcIjogYFNvcnQgJHtsYWJlbH1gLCBjbGFzc05hbWU6IGpvaW5DbHMoYCR7VEFCTEVfREVGQVVMVF9QUkVGSVh9LXNvcnQtdHJpZ2dlcmAsIGAke1RBQkxFX0RFRkFVTFRfUFJFRklYfS1zb3J0LXRyaWdnZXItLSR7c2l6ZX1gKSwgb25DbGljazogb25DbGljaywgY2hpbGRyZW46IF9qc3goSWNvbnMsIHsgbmFtZTogXCJzb3J0XCIsIHNpemU6IFNPUlRfVFJJR0dFUl9JQ09OX1NJWkVbc2l6ZV0sIHN0YXR1czogb3JkZXIgIT09IG51bGwgJiYgb3JkZXIgIT09IHZvaWQgMCA/IG9yZGVyIDogJ2RlZmF1bHQnIH0pIH0pKTtcbi8vIFByb3BzIGFyZSBwcmltaXRpdmVzICsgYSBzdGFibGUgYG9uQ2xpY2tgIChjcmVhdGVkIGluc2lkZSB0aGUgbWVtb2lzZWQgY29sdW1uXG4vLyBidWlsZCksIHNvIG1lbW8gaG9sZHMuXG5leHBvcnQgY29uc3QgU29ydFRyaWdnZXIgPSBtZW1vKFNvcnRUcmlnZ2VySW5uZXIpOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  // @ts-nocheck
3
3
  import * as React from 'react';
4
4
  import ResizeObserver from '../../../../ResizeObserver';
5
- import { useLayoutEffect } from '@1money/hooks';
5
+ import useLayoutEffect from '@1money/hooks/useLayoutEffect';
6
6
  var MeasureCell = function MeasureCell(props) {
7
7
  var columnKey = props.columnKey,
8
8
  onColumnResize = props.onColumnResize,
@@ -36,4 +36,4 @@ var MeasureCell = function MeasureCell(props) {
36
36
  });
37
37
  };
38
38
  export default MeasureCell;
39
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvaW50ZXJuYWwva2VybmVsL0JvZHkvTWVhc3VyZUNlbGwuanMiLCJjb21wb25lbnRzL1RhYmxlL2ludGVybmFsL2tlcm5lbC9zcmMvY29tcG9uZW50cy9UYWJsZS9pbnRlcm5hbC9rZXJuZWwvQm9keS9NZWFzdXJlQ2VsbC50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsIlJlYWN0IiwiUmVzaXplT2JzZXJ2ZXIiLCJ1c2VMYXlvdXRFZmZlY3QiLCJNZWFzdXJlQ2VsbCIsInByb3BzIiwiY29sdW1uS2V5Iiwib25Db2x1bW5SZXNpemUiLCJ0aXRsZSIsImNlbGxSZWYiLCJ1c2VSZWYiLCJjdXJyZW50Iiwib2Zmc2V0V2lkdGgiLCJkYXRhIiwiY2hpbGRyZW4iLCJyZWYiLCJzdHlsZSIsInBhZGRpbmdUb3AiLCJwYWRkaW5nQm90dG9tIiwiYm9yZGVyVG9wIiwiYm9yZGVyQm90dG9tIiwiaGVpZ2h0Iiwib3ZlcmZsb3ciLCJmb250V2VpZ2h0Il0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxHQUFHLElBQUlDLElBQUksUUFBUSxtQkFBbUI7QUNBL0M7QUFDQSxPQUFPLEtBQUtDLEtBQUssTUFBTSxPQUFPO0FBQzlCLE9BQU9DLGNBQWMsTUFBTSw0QkFBNEI7QUFDdkQsU0FBU0MsZUFBZSxRQUFRLGVBQWU7QUFRL0MsSUFBTUMsV0FBVyxHQUErQixTQUExQ0EsV0FBV0EsQ0FBK0JDLEtBQUssRUFBRztFQUN0RCxJQUFRQyxTQUFTLEdBQTRCRCxLQUFLLENBQTFDQyxTQUFTO0lBQUVDLGNBQWMsR0FBWUYsS0FBSyxDQUEvQkUsY0FBYztJQUFFQyxLQUFLLEdBQUtILEtBQUssQ0FBZkcsS0FBSztFQUV4QyxJQUFNQyxPQUFPLEdBQUdSLEtBQUssQ0FBQ1MsTUFBTSxDQUF1QixJQUFJLENBQUM7RUFFeERQLGVBQWUsQ0FBQyxZQUFLO0lBQ25CLElBQUlNLE9BQU8sQ0FBQ0UsT0FBTyxFQUFFO01BQ25CSixjQUFjLENBQUNELFNBQVMsRUFBRUcsT0FBTyxDQUFDRSxPQUFPLENBQUNDLFdBQVcsQ0FBQztJQUN4RDtFQUNGLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixPQUNFWixJQUFBLENBQUNFLGNBQWMsRUFBQTtJQUFDVyxJQUFJLEVBQUVQLFNBQVM7SUFBQVEsUUFBQSxFQUM3QmQsSUFBQSxDQUFBLElBQUEsRUFBQTtNQUNFZSxHQUFHLEVBQUVOLE9BQU87TUFDWk8sS0FBSyxFQUFFO1FBQUVDLFVBQVUsRUFBRSxDQUFDO1FBQUVDLGFBQWEsRUFBRSxDQUFDO1FBQUVDLFNBQVMsRUFBRSxDQUFDO1FBQUVDLFlBQVksRUFBRSxDQUFDO1FBQUVDLE1BQU0sRUFBRTtNQUFDLENBQUU7TUFBQVAsUUFBQSxFQUVwRmQsSUFBQSxDQUFBLEtBQUEsRUFBQTtRQUFLZ0IsS0FBSyxFQUFFO1VBQUVLLE1BQU0sRUFBRSxDQUFDO1VBQUVDLFFBQVEsRUFBRSxRQUFRO1VBQUVDLFVBQVUsRUFBRTtRQUFNLENBQUU7UUFBQVQsUUFBQSxFQUFHTixLQUFLLElBQUk7TUFBTSxDQUFBO0lBQU8sQ0FBQTtFQUN2RixDQUFBLENBQ1U7QUFFckIsQ0FBQztBQUVELGVBQWVKLFdBQVciLCJmaWxlIjoiY29tcG9uZW50cy9UYWJsZS9pbnRlcm5hbC9rZXJuZWwvQm9keS9NZWFzdXJlQ2VsbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG4vLyBAdHMtbm9jaGVja1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlc2l6ZU9ic2VydmVyIGZyb20gJy4uLy4uLy4uLy4uL1Jlc2l6ZU9ic2VydmVyJztcbmltcG9ydCB7IHVzZUxheW91dEVmZmVjdCB9IGZyb20gJ0AxbW9uZXkvaG9va3MnO1xuY29uc3QgTWVhc3VyZUNlbGwgPSBwcm9wcyA9PiB7XG4gICAgY29uc3QgeyBjb2x1bW5LZXksIG9uQ29sdW1uUmVzaXplLCB0aXRsZSB9ID0gcHJvcHM7XG4gICAgY29uc3QgY2VsbFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoY2VsbFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBvbkNvbHVtblJlc2l6ZShjb2x1bW5LZXksIGNlbGxSZWYuY3VycmVudC5vZmZzZXRXaWR0aCk7XG4gICAgICAgIH1cbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIChfanN4KFJlc2l6ZU9ic2VydmVyLCB7IGRhdGE6IGNvbHVtbktleSwgY2hpbGRyZW46IF9qc3goXCJ0ZFwiLCB7IHJlZjogY2VsbFJlZiwgc3R5bGU6IHsgcGFkZGluZ1RvcDogMCwgcGFkZGluZ0JvdHRvbTogMCwgYm9yZGVyVG9wOiAwLCBib3JkZXJCb3R0b206IDAsIGhlaWdodDogMCB9LCBjaGlsZHJlbjogX2pzeChcImRpdlwiLCB7IHN0eWxlOiB7IGhlaWdodDogMCwgb3ZlcmZsb3c6ICdoaWRkZW4nLCBmb250V2VpZ2h0OiAnYm9sZCcgfSwgY2hpbGRyZW46IHRpdGxlIHx8ICdcXHhhMCcgfSkgfSkgfSkpO1xufTtcbmV4cG9ydCBkZWZhdWx0IE1lYXN1cmVDZWxsOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
39
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvaW50ZXJuYWwva2VybmVsL0JvZHkvTWVhc3VyZUNlbGwuanMiLCJjb21wb25lbnRzL1RhYmxlL2ludGVybmFsL2tlcm5lbC9zcmMvY29tcG9uZW50cy9UYWJsZS9pbnRlcm5hbC9rZXJuZWwvQm9keS9NZWFzdXJlQ2VsbC50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsIlJlYWN0IiwiUmVzaXplT2JzZXJ2ZXIiLCJ1c2VMYXlvdXRFZmZlY3QiLCJNZWFzdXJlQ2VsbCIsInByb3BzIiwiY29sdW1uS2V5Iiwib25Db2x1bW5SZXNpemUiLCJ0aXRsZSIsImNlbGxSZWYiLCJ1c2VSZWYiLCJjdXJyZW50Iiwib2Zmc2V0V2lkdGgiLCJkYXRhIiwiY2hpbGRyZW4iLCJyZWYiLCJzdHlsZSIsInBhZGRpbmdUb3AiLCJwYWRkaW5nQm90dG9tIiwiYm9yZGVyVG9wIiwiYm9yZGVyQm90dG9tIiwiaGVpZ2h0Iiwib3ZlcmZsb3ciLCJmb250V2VpZ2h0Il0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxHQUFHLElBQUlDLElBQUksUUFBUSxtQkFBbUI7QUNBL0M7QUFDQSxPQUFPLEtBQUtDLEtBQUssTUFBTSxPQUFPO0FBQzlCLE9BQU9DLGNBQWMsTUFBTSw0QkFBNEI7QUFDdkQsT0FBT0MsZUFBZSxNQUFNLCtCQUErQjtBQVEzRCxJQUFNQyxXQUFXLEdBQStCLFNBQTFDQSxXQUFXQSxDQUErQkMsS0FBSyxFQUFHO0VBQ3RELElBQVFDLFNBQVMsR0FBNEJELEtBQUssQ0FBMUNDLFNBQVM7SUFBRUMsY0FBYyxHQUFZRixLQUFLLENBQS9CRSxjQUFjO0lBQUVDLEtBQUssR0FBS0gsS0FBSyxDQUFmRyxLQUFLO0VBRXhDLElBQU1DLE9BQU8sR0FBR1IsS0FBSyxDQUFDUyxNQUFNLENBQXVCLElBQUksQ0FBQztFQUV4RFAsZUFBZSxDQUFDLFlBQUs7SUFDbkIsSUFBSU0sT0FBTyxDQUFDRSxPQUFPLEVBQUU7TUFDbkJKLGNBQWMsQ0FBQ0QsU0FBUyxFQUFFRyxPQUFPLENBQUNFLE9BQU8sQ0FBQ0MsV0FBVyxDQUFDO0lBQ3hEO0VBQ0YsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOLE9BQ0VaLElBQUEsQ0FBQ0UsY0FBYyxFQUFBO0lBQUNXLElBQUksRUFBRVAsU0FBUztJQUFBUSxRQUFBLEVBQzdCZCxJQUFBLENBQUEsSUFBQSxFQUFBO01BQ0VlLEdBQUcsRUFBRU4sT0FBTztNQUNaTyxLQUFLLEVBQUU7UUFBRUMsVUFBVSxFQUFFLENBQUM7UUFBRUMsYUFBYSxFQUFFLENBQUM7UUFBRUMsU0FBUyxFQUFFLENBQUM7UUFBRUMsWUFBWSxFQUFFLENBQUM7UUFBRUMsTUFBTSxFQUFFO01BQUMsQ0FBRTtNQUFBUCxRQUFBLEVBRXBGZCxJQUFBLENBQUEsS0FBQSxFQUFBO1FBQUtnQixLQUFLLEVBQUU7VUFBRUssTUFBTSxFQUFFLENBQUM7VUFBRUMsUUFBUSxFQUFFLFFBQVE7VUFBRUMsVUFBVSxFQUFFO1FBQU0sQ0FBRTtRQUFBVCxRQUFBLEVBQUdOLEtBQUssSUFBSTtNQUFNLENBQUE7SUFBTyxDQUFBO0VBQ3ZGLENBQUEsQ0FDVTtBQUVyQixDQUFDO0FBRUQsZUFBZUosV0FBVyIsImZpbGUiOiJjb21wb25lbnRzL1RhYmxlL2ludGVybmFsL2tlcm5lbC9Cb2R5L01lYXN1cmVDZWxsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbi8vIEB0cy1ub2NoZWNrXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVzaXplT2JzZXJ2ZXIgZnJvbSAnLi4vLi4vLi4vLi4vUmVzaXplT2JzZXJ2ZXInO1xuaW1wb3J0IHVzZUxheW91dEVmZmVjdCBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUxheW91dEVmZmVjdCc7XG5jb25zdCBNZWFzdXJlQ2VsbCA9IHByb3BzID0+IHtcbiAgICBjb25zdCB7IGNvbHVtbktleSwgb25Db2x1bW5SZXNpemUsIHRpdGxlIH0gPSBwcm9wcztcbiAgICBjb25zdCBjZWxsUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChjZWxsUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIG9uQ29sdW1uUmVzaXplKGNvbHVtbktleSwgY2VsbFJlZi5jdXJyZW50Lm9mZnNldFdpZHRoKTtcbiAgICAgICAgfVxuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gKF9qc3goUmVzaXplT2JzZXJ2ZXIsIHsgZGF0YTogY29sdW1uS2V5LCBjaGlsZHJlbjogX2pzeChcInRkXCIsIHsgcmVmOiBjZWxsUmVmLCBzdHlsZTogeyBwYWRkaW5nVG9wOiAwLCBwYWRkaW5nQm90dG9tOiAwLCBib3JkZXJUb3A6IDAsIGJvcmRlckJvdHRvbTogMCwgaGVpZ2h0OiAwIH0sIGNoaWxkcmVuOiBfanN4KFwiZGl2XCIsIHsgc3R5bGU6IHsgaGVpZ2h0OiAwLCBvdmVyZmxvdzogJ2hpZGRlbicsIGZvbnRXZWlnaHQ6ICdib2xkJyB9LCBjaGlsZHJlbjogdGl0bGUgfHwgJ1xceGEwJyB9KSB9KSB9KSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgTWVhc3VyZUNlbGw7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -10,7 +10,7 @@ import TableContext from '../context/TableContext';
10
10
  import devRenderTimes from '../hooks/useRenderTimes';
11
11
  import useCellRender from './useCellRender';
12
12
  import useHoverState from './useHoverState';
13
- import { useEventCallback as useEvent } from '@1money/hooks';
13
+ import useEvent from '@1money/hooks/useEventCallback';
14
14
  var getTitleFromCellRenderChildren = function getTitleFromCellRenderChildren(_ref) {
15
15
  var ellipsis = _ref.ellipsis,
16
16
  rowType = _ref.rowType,
@@ -176,4 +176,4 @@ var Cell = function Cell(props) {
176
176
  }));
177
177
  };
178
178
  export default /*#__PURE__*/React.memo(Cell);
179
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvaW50ZXJuYWwva2VybmVsL0NlbGwvaW5kZXguanMiLCJjb21wb25lbnRzL1RhYmxlL2ludGVybmFsL2tlcm5lbC9zcmMvY29tcG9uZW50cy9UYWJsZS9pbnRlcm5hbC9rZXJuZWwvQ2VsbC9pbmRleC50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsInVzZUNvbnRleHQiLCJjbHN4IiwiUmVhY3QiLCJUYWJsZUNvbnRleHQiLCJkZXZSZW5kZXJUaW1lcyIsInVzZUNlbGxSZW5kZXIiLCJ1c2VIb3ZlclN0YXRlIiwidXNlRXZlbnRDYWxsYmFjayIsInVzZUV2ZW50IiwiZ2V0VGl0bGVGcm9tQ2VsbFJlbmRlckNoaWxkcmVuIiwiX3JlZiIsImVsbGlwc2lzIiwicm93VHlwZSIsImNoaWxkcmVuIiwiX2EiLCJfYiIsInRpdGxlIiwiZWxsaXBzaXNDb25maWciLCJzaG93VGl0bGUiLCJ0b1N0cmluZyIsImlzVmFsaWRFbGVtZW50IiwicHJvcHMiLCJDZWxsIiwiX2Nsc3giLCJfYyIsIl9kIiwiX2UiLCJfZiIsIl9nIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiQ29tcG9uZW50IiwiY29tcG9uZW50Iiwic2NvcGUiLCJwcmVmaXhDbHMiLCJjbGFzc05hbWUiLCJzdHlsZSIsImFsaWduIiwicmVjb3JkIiwicmVuZGVyIiwiZGF0YUluZGV4IiwicmVuZGVySW5kZXgiLCJzaG91bGRDZWxsVXBkYXRlIiwiaW5kZXgiLCJjb2xTcGFuIiwicm93U3BhbiIsImZpeFN0YXJ0IiwiZml4RW5kIiwiZml4ZWRTdGFydFNoYWRvdyIsImZpeGVkRW5kU2hhZG93Iiwib2Zmc2V0Rml4ZWRTdGFydFNoYWRvdyIsIm9mZnNldEZpeGVkRW5kU2hhZG93IiwiekluZGV4IiwiekluZGV4UmV2ZXJzZSIsImFwcGVuZE5vZGUiLCJfcHJvcHMkYWRkaXRpb25hbFByb3AiLCJhZGRpdGlvbmFsUHJvcHMiLCJpc1N0aWNreSIsImNlbGxQcmVmaXhDbHMiLCJjb25jYXQiLCJfdXNlQ29udGV4dCIsImFsbENvbHVtbnNGaXhlZExlZnQiLCJyb3dIb3ZlcmFibGUiLCJfdXNlQ2VsbFJlbmRlciIsIl91c2VDZWxsUmVuZGVyMiIsIl9zbGljZWRUb0FycmF5IiwiY2hpbGROb2RlIiwibGVnYWN5Q2VsbFByb3BzIiwiZml4ZWRTdHlsZSIsImlzRml4U3RhcnQiLCJpc0ZpeEVuZCIsIl91c2VDb250ZXh0MiIsIl9yZWYyIiwic2Nyb2xsSW5mbyIsIl9zY3JvbGxJbmZvIiwiYWJzU2Nyb2xsIiwic2Nyb2xsV2lkdGgiLCJzaG93U3RhcnRTaGFkb3ciLCJzaG93RW5kU2hhZG93IiwiX3VzZUNvbnRleHQzIiwic2hvd0ZpeFN0YXJ0U2hhZG93Iiwic2hvd0ZpeEVuZFNoYWRvdyIsImluc2V0SW5saW5lU3RhcnQiLCJpbnNldElubGluZUVuZCIsIm1lcmdlZENvbFNwYW4iLCJtZXJnZWRSb3dTcGFuIiwiX3VzZUhvdmVyU3RhdGUiLCJfdXNlSG92ZXJTdGF0ZTIiLCJob3ZlcmluZyIsIm9uSG92ZXIiLCJvbk1vdXNlRW50ZXIiLCJldmVudCIsImNhbGwiLCJvbk1vdXNlTGVhdmUiLCJtZXJnZWRDbGFzc05hbWUiLCJfZGVmaW5lUHJvcGVydHkiLCJhbGlnblN0eWxlIiwidGV4dEFsaWduIiwibWVyZ2VkU3R5bGUiLCJPYmplY3QiLCJhc3NpZ24iLCJtZXJnZWRDaGlsZE5vZGUiLCJfdHlwZW9mIiwiQXJyYXkiLCJpc0FycmF5IiwidW5kZWZpbmVkIiwibWVtbyJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsU0FBU0EsR0FBRyxJQUFJQyxJQUFJLEVBQUVDLElBQUksSUFBSUMsS0FBSyxRQUFRLG1CQUFtQjtBQ0E5RDtBQUNBLFNBQVNDLFVBQVUsUUFBUSxxQkFBcUI7QUFDaEQsU0FBU0MsSUFBSSxRQUFRLE1BQU07QUFDM0IsT0FBTyxLQUFLQyxLQUFLLE1BQU0sT0FBTztBQUM5QixPQUFPQyxZQUFZLE1BQU0seUJBQXlCO0FBQ2xELE9BQU9DLGNB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T0FDRXZHLEtBQUEsQ0FBQ2lDLFNBQVMsRUFBQW9FLE1BQUEsQ0FBQUMsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUNKakMsZUFBZSxFQUNmWCxlQUFlLEVBQUE7SUFDbkJyQixTQUFTLEVBQUUyRCxlQUFlO0lBQzFCMUQsS0FBSyxFQUFFOEQsV0FBVztJQUNsQjtJQUNBbkYsS0FBSyxFQUFFQSxLQUFLO0lBQ1prQixLQUFLLEVBQUVBLEtBQUs7SUFDWjtJQUNBeUQsWUFBWSxFQUFFNUIsWUFBWSxHQUFHNEIsWUFBWSxHQUFHZSxTQUFTO0lBQ3JEWixZQUFZLEVBQUUvQixZQUFZLEdBQUcrQixZQUFZLEdBQUdZLFNBQVM7SUFDckQ7SUFDQTdELE9BQU8sRUFBRXdDLGFBQWEsS0FBSyxDQUFDLEdBQUdBLGFBQWEsR0FBRyxJQUFJO0lBQ25EdkMsT0FBTyxFQUFFd0MsYUFBYSxLQUFLLENBQUMsR0FBR0EsYUFBYSxHQUFHLElBQUk7SUFBQXpFLFFBQUEsRUFBQSxDQUVsRDBDLFVBQVUsRUFDVitDLGVBQWU7RUFBQSxDQUFBLENBQUEsQ0FDTjtBQUVoQixDQUFDO0FBRUQsNEJBQWVwRyxLQUFLLENBQUN5RyxJQUFJLENBQUNyRixJQUFJLENBQWdCIiwiZmlsZSI6ImNvbXBvbmVudHMvVGFibGUvaW50ZXJuYWwva2VybmVsL0NlbGwvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuLy8gQHRzLW5vY2hlY2tcbmltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tICcuLi9zZWxlY3Rvci1jb250ZXh0JztcbmltcG9ydCB7IGNsc3ggfSBmcm9tICdjbHN4JztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBUYWJsZUNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9UYWJsZUNvbnRleHQnO1xuaW1wb3J0IGRldlJlbmRlclRpbWVzIGZyb20gJy4uL2hvb2tzL3VzZVJlbmRlclRpbWVzJztcbmltcG9ydCB1c2VDZWxsUmVuZGVyIGZyb20gJy4vdXNlQ2VsbFJlbmRlcic7XG5pbXBvcnQgdXNlSG92ZXJTdGF0ZSBmcm9tICcuL3VzZUhvdmVyU3RhdGUnO1xuaW1wb3J0IHsgdXNlRXZlbnRDYWxsYmFjayBhcyB1c2VFdmVudCB9IGZyb20gJ0AxbW9uZXkvaG9va3MnO1xuY29uc3QgZ2V0VGl0bGVGcm9tQ2VsbFJlbmRlckNoaWxkcmVuID0gKHsgZWxsaXBzaXMsIHJvd1R5cGUsIGNoaWxkcmVuLCB9KSA9PiB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBsZXQgdGl0bGU7XG4gICAgY29uc3QgZWxsaXBzaXNDb25maWcgPSBlbGxpcHNpcyA9PT0gdHJ1ZSA/IHsgc2hvd1RpdGxlOiB0cnVlIH0gOiBlbGxpcHNpcztcbiAgICBpZiAoZWxsaXBzaXNDb25maWcgJiYgKGVsbGlwc2lzQ29uZmlnLnNob3dUaXRsZSB8fCByb3dUeXBlID09PSAnaGVhZGVyJykpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGNoaWxkcmVuID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgdGl0bGUgPSBjaGlsZHJlbi50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSAmJlxuICAgICAgICAgICAgdHlwZW9mICgoX2EgPSBjaGlsZHJlbi5wcm9wcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNoaWxkcmVuKSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRpdGxlID0gKF9iID0gY2hpbGRyZW4ucHJvcHMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jaGlsZHJlbjtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGl0bGU7XG59O1xuY29uc3QgQ2VsbCA9IChwcm9wcykgPT4ge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZztcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBkZXZSZW5kZXJUaW1lcyhwcm9wcyk7XG4gICAgfVxuICAgIGNvbnN0IHsgY29tcG9uZW50OiBDb21wb25lbnQsIGNoaWxkcmVuLCBlbGxpcHNpcywgc2NvcGUsIFxuICAgIC8vIFN0eWxlXG4gICAgcHJlZml4Q2xzLCBjbGFzc05hbWUsIHN0eWxlLCBhbGlnbiwgXG4gICAgLy8gVmFsdWVcbiAgICByZWNvcmQsIHJlbmRlciwgZGF0YUluZGV4LCByZW5kZXJJbmRleCwgc2hvdWxkQ2VsbFVwZGF0ZSwgXG4gICAgLy8gUm93XG4gICAgaW5kZXgsIHJvd1R5cGUsIFxuICAgIC8vIFNwYW5cbiAgICBjb2xTcGFuLCByb3dTcGFuLCBcbiAgICAvLyBGaXhlZFxuICAgIGZpeFN0YXJ0LCBmaXhFbmQsIGZpeGVkU3RhcnRTaGFkb3csIGZpeGVkRW5kU2hhZG93LCBvZmZzZXRGaXhlZFN0YXJ0U2hhZG93LCBvZmZzZXRGaXhlZEVuZFNoYWRvdywgekluZGV4LCB6SW5kZXhSZXZlcnNlLCBcbiAgICAvLyBQcml2YXRlXG4gICAgYXBwZW5kTm9kZSwgYWRkaXRpb25hbFByb3BzID0ge30sIGlzU3RpY2t5LCB9ID0gcHJvcHM7XG4gICAgY29uc3QgY2VsbFByZWZpeENscyA9IGAke3ByZWZpeENsc30tY2VsbGA7XG4gICAgY29uc3QgeyBhbGxDb2x1bW5zRml4ZWRMZWZ0LCByb3dIb3ZlcmFibGUgfSA9IHVzZUNvbnRleHQoVGFibGVDb250ZXh0LCBbXG4gICAgICAgICdhbGxDb2x1bW5zRml4ZWRMZWZ0JyxcbiAgICAgICAgJ3Jvd0hvdmVyYWJsZScsXG4gICAgXSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PSBWYWx1ZSA9PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IFtjaGlsZE5vZGUsIGxlZ2FjeUNlbGxQcm9wc10gPSB1c2VDZWxsUmVuZGVyKHJlY29yZCwgZGF0YUluZGV4LCByZW5kZXJJbmRleCwgY2hpbGRyZW4sIHJlbmRlciwgc2hvdWxkQ2VsbFVwZGF0ZSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PSBGaXhlZCA9PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IGZpeGVkU3R5bGUgPSB7fTtcbiAgICBjb25zdCBpc0ZpeFN0YXJ0ID0gdHlwZW9mIGZpeFN0YXJ0ID09PSAnbnVtYmVyJyAmJiAhYWxsQ29sdW1uc0ZpeGVkTGVmdDtcbiAgICBjb25zdCBpc0ZpeEVuZCA9IHR5cGVvZiBmaXhFbmQgPT09ICdudW1iZXInICYmICFhbGxDb2x1bW5zRml4ZWRMZWZ0O1xuICAgIGNvbnN0IFtzaG93Rml4U3RhcnRTaGFkb3csIHNob3dGaXhFbmRTaGFkb3ddID0gdXNlQ29udGV4dChUYWJsZUNvbnRleHQsICh7IHNjcm9sbEluZm8gfSkgPT4ge1xuICAgICAgICBpZiAoIWlzRml4U3RhcnQgJiYgIWlzRml4RW5kKSB7XG4gICAgICAgICAgICByZXR1cm4gW2ZhbHNlLCBmYWxzZV07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgW2Fic1Njcm9sbCwgc2Nyb2xsV2lkdGhdID0gc2Nyb2xsSW5mbztcbiAgICAgICAgY29uc3Qgc2hvd1N0YXJ0U2hhZG93ID0gKGlzRml4U3RhcnQgJiYgZml4ZWRTdGFydFNoYWRvdyAmJiBhYnNTY3JvbGwpIC1cbiAgICAgICAgICAgIC8vIEZvciBwcmVjaXNpb24sIHdlIG5vdCBzaG93IHNoYWRvdyBieSBkZWZhdWx0IHdoaWNoIGhhcyBiZXR0ZXIgdXNlciBleHBlcmllbmNlLlxuICAgICAgICAgICAgb2Zmc2V0Rml4ZWRTdGFydFNoYWRvdyA+PVxuICAgICAgICAgICAgMTtcbiAgICAgICAgY29uc3Qgc2hvd0VuZFNoYWRvdyA9IChpc0ZpeEVuZCAmJiBmaXhlZEVuZFNoYWRvdyAmJiBzY3JvbGxXaWR0aCAtIGFic1Njcm9sbCkgLVxuICAgICAgICAgICAgLy8gU2FtZSBhcyBhYm92ZVxuICAgICAgICAgICAgb2Zmc2V0Rml4ZWRFbmRTaGFkb3cgPlxuICAgICAgICAgICAgMTtcbiAgICAgICAgcmV0dXJuIFtzaG93U3RhcnRTaGFkb3csIHNob3dFbmRTaGFkb3ddO1xuICAgIH0pO1xuICAgIGlmIChpc0ZpeFN0YXJ0KSB7XG4gICAgICAgIGZpeGVkU3R5bGUuaW5zZXRJbmxpbmVTdGFydCA9IGZpeFN0YXJ0O1xuICAgICAgICBmaXhlZFN0eWxlWyctLXotb2Zmc2V0J10gPSB6SW5kZXg7XG4gICAgICAgIGZpeGVkU3R5bGVbJy0tei1vZmZzZXQtcmV2ZXJzZSddID0gekluZGV4UmV2ZXJzZTtcbiAgICB9XG4gICAgaWYgKGlzRml4RW5kKSB7XG4gICAgICAgIGZpeGVkU3R5bGUuaW5zZXRJbmxpbmVFbmQgPSBmaXhFbmQ7XG4gICAgICAgIGZpeGVkU3R5bGVbJy0tei1vZmZzZXQnXSA9IHpJbmRleDtcbiAgICAgICAgZml4ZWRTdHlsZVsnLS16LW9mZnNldC1yZXZlcnNlJ10gPSB6SW5kZXhSZXZlcnNlO1xuICAgIH1cbiAgICAvLyA9PT09PT09PT09PT09PT09IFJvd1NwYW4gJiBDb2xTcGFuID09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgbWVyZ2VkQ29sU3BhbiA9IChfYyA9IChfYiA9IChfYSA9IGxlZ2FjeUNlbGxQcm9wcyA9PT0gbnVsbCB8fCBsZWdhY3lDZWxsUHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGxlZ2FjeUNlbGxQcm9wcy5jb2xTcGFuKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBhZGRpdGlvbmFsUHJvcHMuY29sU3BhbikgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogY29sU3BhbikgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogMTtcbiAgICBjb25zdCBtZXJnZWRSb3dTcGFuID0gKF9mID0gKF9lID0gKF9kID0gbGVnYWN5Q2VsbFByb3BzID09PSBudWxsIHx8IGxlZ2FjeUNlbGxQcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogbGVnYWN5Q2VsbFByb3BzLnJvd1NwYW4pICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IGFkZGl0aW9uYWxQcm9wcy5yb3dTcGFuKSAhPT0gbnVsbCAmJiBfZSAhPT0gdm9pZCAwID8gX2UgOiByb3dTcGFuKSAhPT0gbnVsbCAmJiBfZiAhPT0gdm9pZCAwID8gX2YgOiAxO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT0gSG92ZXIgPT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBbaG92ZXJpbmcsIG9uSG92ZXJdID0gdXNlSG92ZXJTdGF0ZShpbmRleCwgbWVyZ2VkUm93U3Bhbik7XG4gICAgY29uc3Qgb25Nb3VzZUVudGVyID0gdXNlRXZlbnQoZXZlbnQgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChyZWNvcmQpIHtcbiAgICAgICAgICAgIG9uSG92ZXIoaW5kZXgsIGluZGV4ICsgbWVyZ2VkUm93U3BhbiAtIDEpO1xuICAgICAgICB9XG4gICAgICAgIChfYSA9IGFkZGl0aW9uYWxQcm9wcyA9PT0gbnVsbCB8fCBhZGRpdGlvbmFsUHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFkZGl0aW9uYWxQcm9wcy5vbk1vdXNlRW50ZXIpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKGFkZGl0aW9uYWxQcm9wcywgZXZlbnQpO1xuICAgIH0pO1xuICAgIGNvbnN0IG9uTW91c2VMZWF2ZSA9IHVzZUV2ZW50KGV2ZW50ID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAocmVjb3JkKSB7XG4gICAgICAgICAgICBvbkhvdmVyKC0xLCAtMSk7XG4gICAgICAgIH1cbiAgICAgICAgKF9hID0gYWRkaXRpb25hbFByb3BzID09PSBudWxsIHx8IGFkZGl0aW9uYWxQcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogYWRkaXRpb25hbFByb3BzLm9uTW91c2VMZWF2ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoYWRkaXRpb25hbFByb3BzLCBldmVudCk7XG4gICAgfSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PSBSZW5kZXIgPT09PT09PT09PT09PT09PT09PT09PVxuICAgIGlmIChtZXJnZWRDb2xTcGFuID09PSAwIHx8IG1lcmdlZFJvd1NwYW4gPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIC8vID4+Pj4+IFRpdGxlXG4gICAgY29uc3QgdGl0bGUgPSAoX2cgPSBhZGRpdGlvbmFsUHJvcHMudGl0bGUpICE9PSBudWxsICYmIF9nICE9PSB2b2lkIDAgPyBfZyA6IGdldFRpdGxlRnJvbUNlbGxSZW5kZXJDaGlsZHJlbih7XG4gICAgICAgIHJvd1R5cGUsXG4gICAgICAgIGVsbGlwc2lzLFxuICAgICAgICBjaGlsZHJlbjogY2hpbGROb2RlLFxuICAgIH0pO1xuICAgIC8vID4+Pj4+IENsYXNzTmFtZVxuICAgIGNvbnN0IG1lcmdlZENsYXNzTmFtZSA9IGNsc3goY2VsbFByZWZpeENscywgY2xhc3NOYW1lLCB7XG4gICAgICAgIC8vIEZpeGVkXG4gICAgICAgIFtgJHtjZWxsUHJlZml4Q2xzfS1maXhgXTogaXNGaXhTdGFydCB8fCBpc0ZpeEVuZCxcbiAgICAgICAgW2Ake2NlbGxQcmVmaXhDbHN9LWZpeC1zdGFydGBdOiBpc0ZpeFN0YXJ0LFxuICAgICAgICBbYCR7Y2VsbFByZWZpeENsc30tZml4LWVuZGBdOiBpc0ZpeEVuZCxcbiAgICAgICAgLy8gRml4ZWQgc2hhZG93XG4gICAgICAgIFtgJHtjZWxsUHJlZml4Q2xzfS1maXgtc3RhcnQtc2hhZG93YF06IGZpeGVkU3RhcnRTaGFkb3csXG4gICAgICAgIFtgJHtjZWxsUHJlZml4Q2xzfS1maXgtc3RhcnQtc2hhZG93LXNob3dgXTogZml4ZWRTdGFydFNoYWRvdyAmJiBzaG93Rml4U3RhcnRTaGFkb3csXG4gICAgICAgIFtgJHtjZWxsUHJlZml4Q2xzfS1maXgtZW5kLXNoYWRvd2BdOiBmaXhlZEVuZFNoYWRvdyxcbiAgICAgICAgW2Ake2NlbGxQcmVmaXhDbHN9LWZpeC1lbmQtc2hhZG93LXNob3dgXTogZml4ZWRFbmRTaGFkb3cgJiYgc2hvd0ZpeEVuZFNoYWRvdyxcbiAgICAgICAgW2Ake2NlbGxQcmVmaXhDbHN9LWVsbGlwc2lzYF06IGVsbGlwc2lzLFxuICAgICAgICBbYCR7Y2VsbFByZWZpeENsc30td2l0aC1hcHBlbmRgXTogYXBwZW5kTm9kZSxcbiAgICAgICAgW2Ake2NlbGxQcmVmaXhDbHN9LWZpeC1zdGlja3lgXTogKGlzRml4U3RhcnQgfHwgaXNGaXhFbmQpICYmIGlzU3RpY2t5LFxuICAgICAgICBbYCR7Y2VsbFByZWZpeENsc30tcm93LWhvdmVyYF06ICFsZWdhY3lDZWxsUHJvcHMgJiYgaG92ZXJpbmcsXG4gICAgfSwgYWRkaXRpb25hbFByb3BzLmNsYXNzTmFtZSwgbGVnYWN5Q2VsbFByb3BzID09PSBudWxsIHx8IGxlZ2FjeUNlbGxQcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogbGVnYWN5Q2VsbFByb3BzLmNsYXNzTmFtZSk7XG4gICAgLy8gPj4+Pj4gU3R5bGVcbiAgICBjb25zdCBhbGlnblN0eWxlID0ge307XG4gICAgaWYgKGFsaWduKSB7XG4gICAgICAgIGFsaWduU3R5bGUudGV4dEFsaWduID0gYWxpZ247XG4gICAgfVxuICAgIC8vIFRoZSBvcmRlciBpcyBpbXBvcnRhbnQgc2luY2UgdXNlciBjYW4gb3ZlcndyaXRlIHN0eWxlLlxuICAgIC8vIEZvciBleGFtcGxlIGFudC1kZXNpZ24vYW50LWRlc2lnbiM1MTc2M1xuICAgIGNvbnN0IG1lcmdlZFN0eWxlID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBsZWdhY3lDZWxsUHJvcHMgPT09IG51bGwgfHwgbGVnYWN5Q2VsbFByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsZWdhY3lDZWxsUHJvcHMuc3R5bGUpLCBmaXhlZFN0eWxlKSwgYWxpZ25TdHlsZSksIGFkZGl0aW9uYWxQcm9wcy5zdHlsZSksIHN0eWxlKTtcbiAgICAvLyA+Pj4+PiBDaGlsZHJlbiBOb2RlXG4gICAgbGV0IG1lcmdlZENoaWxkTm9kZSA9IGNoaWxkTm9kZTtcbiAgICAvLyBOb3QgY3Jhc2ggaWYgZmluYWwgYGNoaWxkTm9kZWAgaXMgbm90IHZhbGlkYXRlIFJlYWN0Tm9kZVxuICAgIGlmICh0eXBlb2YgbWVyZ2VkQ2hpbGROb2RlID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAhQXJyYXkuaXNBcnJheShtZXJnZWRDaGlsZE5vZGUpICYmXG4gICAgICAgICFSZWFjdC5pc1ZhbGlkRWxlbWVudChtZXJnZWRDaGlsZE5vZGUpKSB7XG4gICAgICAgIG1lcmdlZENoaWxkTm9kZSA9IG51bGw7XG4gICAgfVxuICAgIGlmIChlbGxpcHNpcyAmJiAoZml4ZWRTdGFydFNoYWRvdyB8fCBmaXhlZEVuZFNoYWRvdykpIHtcbiAgICAgICAgbWVyZ2VkQ2hpbGROb2RlID0gX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGAke2NlbGxQcmVmaXhDbHN9LWNvbnRlbnRgLCBjaGlsZHJlbjogbWVyZ2VkQ2hpbGROb2RlIH0pO1xuICAgIH1cbiAgICByZXR1cm4gKF9qc3hzKENvbXBvbmVudCwgT2JqZWN0LmFzc2lnbih7fSwgbGVnYWN5Q2VsbFByb3BzLCBhZGRpdGlvbmFsUHJvcHMsIHsgY2xhc3NOYW1lOiBtZXJnZWRDbGFzc05hbWUsIHN0eWxlOiBtZXJnZWRTdHlsZSwgXG4gICAgICAgIC8vIEExMXlcbiAgICAgICAgdGl0bGU6IHRpdGxlLCBzY29wZTogc2NvcGUsIFxuICAgICAgICAvLyBIb3ZlclxuICAgICAgICBvbk1vdXNlRW50ZXI6IHJvd0hvdmVyYWJsZSA/IG9uTW91c2VFbnRlciA6IHVuZGVmaW5lZCwgb25Nb3VzZUxlYXZlOiByb3dIb3ZlcmFibGUgPyBvbk1vdXNlTGVhdmUgOiB1bmRlZmluZWQsIFxuICAgICAgICAvL1NwYW5cbiAgICAgICAgY29sU3BhbjogbWVyZ2VkQ29sU3BhbiAhPT0gMSA/IG1lcmdlZENvbFNwYW4gOiBudWxsLCByb3dTcGFuOiBtZXJnZWRSb3dTcGFuICE9PSAxID8gbWVyZ2VkUm93U3BhbiA6IG51bGwsIGNoaWxkcmVuOiBbYXBwZW5kTm9kZSwgbWVyZ2VkQ2hpbGROb2RlXSB9KSkpO1xufTtcbmV4cG9ydCBkZWZhdWx0IFJlYWN0Lm1lbW8oQ2VsbCk7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
179
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvaW50ZXJuYWwva2VybmVsL0NlbGwvaW5kZXguanMiLCJjb21wb25lbnRzL1RhYmxlL2ludGVybmFsL2tlcm5lbC9zcmMvY29tcG9uZW50cy9UYWJsZS9pbnRlcm5hbC9rZXJuZWwvQ2VsbC9pbmRleC50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsInVzZUNvbnRleHQiLCJjbHN4IiwiUmVhY3QiLCJUYWJsZUNvbnRleHQiLCJkZXZSZW5kZXJUaW1lcyIsInVzZUNlbGxSZW5kZXIiLCJ1c2VIb3ZlclN0YXRlIiwidXNlRXZlbnQiLCJnZXRUaXRsZUZyb21DZWxsUmVuZGVyQ2hpbGRyZW4iLCJfcmVmIiwiZWxsaXBzaXMiLCJyb3dUeXBlIiwiY2hpbGRyZW4iLCJfYSIsIl9iIiwidGl0bGUiLCJlbGxpcHNpc0NvbmZpZyIsInNob3dUaXRsZSIsInRvU3RyaW5nIiwiaXNWYWxpZEVsZW1lbnQiLCJwcm9wcyIsIkNlbGwiLCJfY2xzeCIsIl9jIiwiX2QiLCJfZSIsIl9mIiwiX2ciLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJDb21wb25lbnQiLCJjb21wb25lbnQiLCJzY29wZSIsInByZWZpeENscyIsImNsYXNzTmFtZSIsInN0eWxlIiwiYWxpZ24iLCJyZWNvcmQiLCJyZW5kZXIiLCJkYXRhSW5kZXgiLCJyZW5kZXJJbmRleCIsInNob3VsZENlbGxVcGRhdGUiLCJpbmRleCIsImNvbFNwYW4iLCJyb3dTcGFuIiwiZml4U3RhcnQiLCJmaXhFbmQiLCJmaXhlZFN0YXJ0U2hhZG93IiwiZml4ZWRFbmRTaGFkb3ciLCJvZmZzZXRGaXhlZFN0YXJ0U2hhZG93Iiwib2Zmc2V0Rml4ZWRFbmRTaGFkb3ciLCJ6SW5kZXgiLCJ6SW5kZXhSZXZlcnNlIiwiYXBwZW5kTm9kZSIsIl9wcm9wcyRhZGRpdGlvbmFsUHJvcCIsImFkZGl0aW9uYWxQcm9wcyIsImlzU3RpY2t5IiwiY2VsbFByZWZpeENscyIsImNvbmNhdCIsIl91c2VDb250ZXh0IiwiYWxsQ29sdW1uc0ZpeGVkTGVmdCIsInJvd0hvdmVyYWJsZSIsIl91c2VDZWxsUmVuZGVyIiwiX3VzZUNlbGxSZW5kZXIyIiwiX3NsaWNlZFRvQXJyYXkiLCJjaGlsZE5vZGUiLCJsZWdhY3lDZWxsUHJvcHMiLCJmaXhlZFN0eWxlIiwiaXNGaXhTdGFydCIsImlzRml4RW5kIiwiX3VzZUNvbnRleHQyIiwiX3JlZjIiLCJzY3JvbGxJbmZvIiwiX3Njcm9sbEluZm8iLCJhYnNTY3JvbGwiLCJzY3JvbGxXaWR0aCIsInNob3dTdGFydFNoYWRvdyIsInNob3dFbmRTaGFkb3ciLCJfdXNlQ29udGV4dDMiLCJzaG93Rml4U3RhcnRTaGFkb3ciLCJzaG93Rml4RW5kU2hhZG93IiwiaW5zZXRJbmxpbmVTdGFydCIsImluc2V0SW5saW5lRW5kIiwibWVyZ2VkQ29sU3BhbiIsIm1lcmdlZFJvd1NwYW4iLCJfdXNlSG92ZXJTdGF0ZSIsIl91c2VIb3ZlclN0YXRlMiIsImhvdmVyaW5nIiwib25Ib3ZlciIsIm9uTW91c2VFbnRlciIsImV2ZW50IiwiY2FsbCIsIm9uTW91c2VMZWF2ZSIsIm1lcmdlZENsYXNzTmFtZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImFsaWduU3R5bGUiLCJ0ZXh0QWxpZ24iLCJtZXJnZWRTdHlsZSIsIk9iamVjdCIsImFzc2lnbiIsIm1lcmdlZENoaWxkTm9kZSIsIl90eXBlb2YiLCJBcnJheSIsImlzQXJyYXkiLCJ1bmRlZmluZWQiLCJtZW1vIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxTQUFTQSxHQUFHLElBQUlDLElBQUksRUFBRUMsSUFBSSxJQUFJQyxLQUFLLFFBQVEsbUJBQW1CO0FDQTlEO0FBQ0EsU0FBU0MsVUFBVSxRQUFRLHFCQUFxQjtBQUNoRCxTQUFTQyxJQUFJLFFBQVEsTUFBTTtBQUMzQixPQUFPLEtBQUtDLEtBQUssTUFBTSxPQUFPO0FBQzlCLE9BQU9DLFlBQVksTUFBTSx5QkFBeUI7QUFDbEQsT0FBT0MsY0FBYyxNQUFNLHlCQUF5QjtBQVVw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LE1BQUEsQ0FBQUMsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUNKakMsZUFBZSxFQUNmWCxlQUFlLEVBQUE7SUFDbkJyQixTQUFTLEVBQUUyRCxlQUFlO0lBQzFCMUQsS0FBSyxFQUFFOEQsV0FBVztJQUNsQjtJQUNBbkYsS0FBSyxFQUFFQSxLQUFLO0lBQ1prQixLQUFLLEVBQUVBLEtBQUs7SUFDWjtJQUNBeUQsWUFBWSxFQUFFNUIsWUFBWSxHQUFHNEIsWUFBWSxHQUFHZSxTQUFTO0lBQ3JEWixZQUFZLEVBQUUvQixZQUFZLEdBQUcrQixZQUFZLEdBQUdZLFNBQVM7SUFDckQ7SUFDQTdELE9BQU8sRUFBRXdDLGFBQWEsS0FBSyxDQUFDLEdBQUdBLGFBQWEsR0FBRyxJQUFJO0lBQ25EdkMsT0FBTyxFQUFFd0MsYUFBYSxLQUFLLENBQUMsR0FBR0EsYUFBYSxHQUFHLElBQUk7SUFBQXpFLFFBQUEsRUFBQSxDQUVsRDBDLFVBQVUsRUFDVitDLGVBQWU7RUFBQSxDQUFBLENBQUEsQ0FDTjtBQUVoQixDQUFDO0FBRUQsNEJBQWVuRyxLQUFLLENBQUN3RyxJQUFJLENBQUNyRixJQUFJLENBQWdCIiwiZmlsZSI6ImNvbXBvbmVudHMvVGFibGUvaW50ZXJuYWwva2VybmVsL0NlbGwvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuLy8gQHRzLW5vY2hlY2tcbmltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tICcuLi9zZWxlY3Rvci1jb250ZXh0JztcbmltcG9ydCB7IGNsc3ggfSBmcm9tICdjbHN4JztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBUYWJsZUNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9UYWJsZUNvbnRleHQnO1xuaW1wb3J0IGRldlJlbmRlclRpbWVzIGZyb20gJy4uL2hvb2tzL3VzZVJlbmRlclRpbWVzJztcbmltcG9ydCB1c2VDZWxsUmVuZGVyIGZyb20gJy4vdXNlQ2VsbFJlbmRlcic7XG5pbXBvcnQgdXNlSG92ZXJTdGF0ZSBmcm9tICcuL3VzZUhvdmVyU3RhdGUnO1xuaW1wb3J0IHVzZUV2ZW50IGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5jb25zdCBnZXRUaXRsZUZyb21DZWxsUmVuZGVyQ2hpbGRyZW4gPSAoeyBlbGxpcHNpcywgcm93VHlwZSwgY2hpbGRyZW4sIH0pID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGxldCB0aXRsZTtcbiAgICBjb25zdCBlbGxpcHNpc0NvbmZpZyA9IGVsbGlwc2lzID09PSB0cnVlID8geyBzaG93VGl0bGU6IHRydWUgfSA6IGVsbGlwc2lzO1xuICAgIGlmIChlbGxpcHNpc0NvbmZpZyAmJiAoZWxsaXBzaXNDb25maWcuc2hvd1RpdGxlIHx8IHJvd1R5cGUgPT09ICdoZWFkZXInKSkge1xuICAgICAgICBpZiAodHlwZW9mIGNoaWxkcmVuID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgY2hpbGRyZW4gPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICB0aXRsZSA9IGNoaWxkcmVuLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pICYmXG4gICAgICAgICAgICB0eXBlb2YgKChfYSA9IGNoaWxkcmVuLnByb3BzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2hpbGRyZW4pID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGl0bGUgPSAoX2IgPSBjaGlsZHJlbi5wcm9wcykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNoaWxkcmVuO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aXRsZTtcbn07XG5jb25zdCBDZWxsID0gKHByb3BzKSA9PiB7XG4gICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGRldlJlbmRlclRpbWVzKHByb3BzKTtcbiAgICB9XG4gICAgY29uc3QgeyBjb21wb25lbnQ6IENvbXBvbmVudCwgY2hpbGRyZW4sIGVsbGlwc2lzLCBzY29wZSwgXG4gICAgLy8gU3R5bGVcbiAgICBwcmVmaXhDbHMsIGNsYXNzTmFtZSwgc3R5bGUsIGFsaWduLCBcbiAgICAvLyBWYWx1ZVxuICAgIHJlY29yZCwgcmVuZGVyLCBkYXRhSW5kZXgsIHJlbmRlckluZGV4LCBzaG91bGRDZWxsVXBkYXRlLCBcbiAgICAvLyBSb3dcbiAgICBpbmRleCwgcm93VHlwZSwgXG4gICAgLy8gU3BhblxuICAgIGNvbFNwYW4sIHJvd1NwYW4sIFxuICAgIC8vIEZpeGVkXG4gICAgZml4U3RhcnQsIGZpeEVuZCwgZml4ZWRTdGFydFNoYWRvdywgZml4ZWRFbmRTaGFkb3csIG9mZnNldEZpeGVkU3RhcnRTaGFkb3csIG9mZnNldEZpeGVkRW5kU2hhZG93LCB6SW5kZXgsIHpJbmRleFJldmVyc2UsIFxuICAgIC8vIFByaXZhdGVcbiAgICBhcHBlbmROb2RlLCBhZGRpdGlvbmFsUHJvcHMgPSB7fSwgaXNTdGlja3ksIH0gPSBwcm9wcztcbiAgICBjb25zdCBjZWxsUHJlZml4Q2xzID0gYCR7cHJlZml4Q2xzfS1jZWxsYDtcbiAgICBjb25zdCB7IGFsbENvbHVtbnNGaXhlZExlZnQsIHJvd0hvdmVyYWJsZSB9ID0gdXNlQ29udGV4dChUYWJsZUNvbnRleHQsIFtcbiAgICAgICAgJ2FsbENvbHVtbnNGaXhlZExlZnQnLFxuICAgICAgICAncm93SG92ZXJhYmxlJyxcbiAgICBdKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09IFZhbHVlID09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgW2NoaWxkTm9kZSwgbGVnYWN5Q2VsbFByb3BzXSA9IHVzZUNlbGxSZW5kZXIocmVjb3JkLCBkYXRhSW5kZXgsIHJlbmRlckluZGV4LCBjaGlsZHJlbiwgcmVuZGVyLCBzaG91bGRDZWxsVXBkYXRlKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09IEZpeGVkID09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgZml4ZWRTdHlsZSA9IHt9O1xuICAgIGNvbnN0IGlzRml4U3RhcnQgPSB0eXBlb2YgZml4U3RhcnQgPT09ICdudW1iZXInICYmICFhbGxDb2x1bW5zRml4ZWRMZWZ0O1xuICAgIGNvbnN0IGlzRml4RW5kID0gdHlwZW9mIGZpeEVuZCA9PT0gJ251bWJlcicgJiYgIWFsbENvbHVtbnNGaXhlZExlZnQ7XG4gICAgY29uc3QgW3Nob3dGaXhTdGFydFNoYWRvdywgc2hvd0ZpeEVuZFNoYWRvd10gPSB1c2VDb250ZXh0KFRhYmxlQ29udGV4dCwgKHsgc2Nyb2xsSW5mbyB9KSA9PiB7XG4gICAgICAgIGlmICghaXNGaXhTdGFydCAmJiAhaXNGaXhFbmQpIHtcbiAgICAgICAgICAgIHJldHVybiBbZmFsc2UsIGZhbHNlXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBbYWJzU2Nyb2xsLCBzY3JvbGxXaWR0aF0gPSBzY3JvbGxJbmZvO1xuICAgICAgICBjb25zdCBzaG93U3RhcnRTaGFkb3cgPSAoaXNGaXhTdGFydCAmJiBmaXhlZFN0YXJ0U2hhZG93ICYmIGFic1Njcm9sbCkgLVxuICAgICAgICAgICAgLy8gRm9yIHByZWNpc2lvbiwgd2Ugbm90IHNob3cgc2hhZG93IGJ5IGRlZmF1bHQgd2hpY2ggaGFzIGJldHRlciB1c2VyIGV4cGVyaWVuY2UuXG4gICAgICAgICAgICBvZmZzZXRGaXhlZFN0YXJ0U2hhZG93ID49XG4gICAgICAgICAgICAxO1xuICAgICAgICBjb25zdCBzaG93RW5kU2hhZG93ID0gKGlzRml4RW5kICYmIGZpeGVkRW5kU2hhZG93ICYmIHNjcm9sbFdpZHRoIC0gYWJzU2Nyb2xsKSAtXG4gICAgICAgICAgICAvLyBTYW1lIGFzIGFib3ZlXG4gICAgICAgICAgICBvZmZzZXRGaXhlZEVuZFNoYWRvdyA+XG4gICAgICAgICAgICAxO1xuICAgICAgICByZXR1cm4gW3Nob3dTdGFydFNoYWRvdywgc2hvd0VuZFNoYWRvd107XG4gICAgfSk7XG4gICAgaWYgKGlzRml4U3RhcnQpIHtcbiAgICAgICAgZml4ZWRTdHlsZS5pbnNldElubGluZVN0YXJ0ID0gZml4U3RhcnQ7XG4gICAgICAgIGZpeGVkU3R5bGVbJy0tei1vZmZzZXQnXSA9IHpJbmRleDtcbiAgICAgICAgZml4ZWRTdHlsZVsnLS16LW9mZnNldC1yZXZlcnNlJ10gPSB6SW5kZXhSZXZlcnNlO1xuICAgIH1cbiAgICBpZiAoaXNGaXhFbmQpIHtcbiAgICAgICAgZml4ZWRTdHlsZS5pbnNldElubGluZUVuZCA9IGZpeEVuZDtcbiAgICAgICAgZml4ZWRTdHlsZVsnLS16LW9mZnNldCddID0gekluZGV4O1xuICAgICAgICBmaXhlZFN0eWxlWyctLXotb2Zmc2V0LXJldmVyc2UnXSA9IHpJbmRleFJldmVyc2U7XG4gICAgfVxuICAgIC8vID09PT09PT09PT09PT09PT0gUm93U3BhbiAmIENvbFNwYW4gPT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBtZXJnZWRDb2xTcGFuID0gKF9jID0gKF9iID0gKF9hID0gbGVnYWN5Q2VsbFByb3BzID09PSBudWxsIHx8IGxlZ2FjeUNlbGxQcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogbGVnYWN5Q2VsbFByb3BzLmNvbFNwYW4pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGFkZGl0aW9uYWxQcm9wcy5jb2xTcGFuKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBjb2xTcGFuKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAxO1xuICAgIGNvbnN0IG1lcmdlZFJvd1NwYW4gPSAoX2YgPSAoX2UgPSAoX2QgPSBsZWdhY3lDZWxsUHJvcHMgPT09IG51bGwgfHwgbGVnYWN5Q2VsbFByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsZWdhY3lDZWxsUHJvcHMucm93U3BhbikgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogYWRkaXRpb25hbFByb3BzLnJvd1NwYW4pICE9PSBudWxsICYmIF9lICE9PSB2b2lkIDAgPyBfZSA6IHJvd1NwYW4pICE9PSBudWxsICYmIF9mICE9PSB2b2lkIDAgPyBfZiA6IDE7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PSBIb3ZlciA9PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IFtob3ZlcmluZywgb25Ib3Zlcl0gPSB1c2VIb3ZlclN0YXRlKGluZGV4LCBtZXJnZWRSb3dTcGFuKTtcbiAgICBjb25zdCBvbk1vdXNlRW50ZXIgPSB1c2VFdmVudChldmVudCA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKHJlY29yZCkge1xuICAgICAgICAgICAgb25Ib3ZlcihpbmRleCwgaW5kZXggKyBtZXJnZWRSb3dTcGFuIC0gMSk7XG4gICAgICAgIH1cbiAgICAgICAgKF9hID0gYWRkaXRpb25hbFByb3BzID09PSBudWxsIHx8IGFkZGl0aW9uYWxQcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogYWRkaXRpb25hbFByb3BzLm9uTW91c2VFbnRlcikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoYWRkaXRpb25hbFByb3BzLCBldmVudCk7XG4gICAgfSk7XG4gICAgY29uc3Qgb25Nb3VzZUxlYXZlID0gdXNlRXZlbnQoZXZlbnQgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChyZWNvcmQpIHtcbiAgICAgICAgICAgIG9uSG92ZXIoLTEsIC0xKTtcbiAgICAgICAgfVxuICAgICAgICAoX2EgPSBhZGRpdGlvbmFsUHJvcHMgPT09IG51bGwgfHwgYWRkaXRpb25hbFByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhZGRpdGlvbmFsUHJvcHMub25Nb3VzZUxlYXZlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChhZGRpdGlvbmFsUHJvcHMsIGV2ZW50KTtcbiAgICB9KTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09IFJlbmRlciA9PT09PT09PT09PT09PT09PT09PT09XG4gICAgaWYgKG1lcmdlZENvbFNwYW4gPT09IDAgfHwgbWVyZ2VkUm93U3BhbiA9PT0gMCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLy8gPj4+Pj4gVGl0bGVcbiAgICBjb25zdCB0aXRsZSA9IChfZyA9IGFkZGl0aW9uYWxQcm9wcy50aXRsZSkgIT09IG51bGwgJiYgX2cgIT09IHZvaWQgMCA/IF9nIDogZ2V0VGl0bGVGcm9tQ2VsbFJlbmRlckNoaWxkcmVuKHtcbiAgICAgICAgcm93VHlwZSxcbiAgICAgICAgZWxsaXBzaXMsXG4gICAgICAgIGNoaWxkcmVuOiBjaGlsZE5vZGUsXG4gICAgfSk7XG4gICAgLy8gPj4+Pj4gQ2xhc3NOYW1lXG4gICAgY29uc3QgbWVyZ2VkQ2xhc3NOYW1lID0gY2xzeChjZWxsUHJlZml4Q2xzLCBjbGFzc05hbWUsIHtcbiAgICAgICAgLy8gRml4ZWRcbiAgICAgICAgW2Ake2NlbGxQcmVmaXhDbHN9LWZpeGBdOiBpc0ZpeFN0YXJ0IHx8IGlzRml4RW5kLFxuICAgICAgICBbYCR7Y2VsbFByZWZpeENsc30tZml4LXN0YXJ0YF06IGlzRml4U3RhcnQsXG4gICAgICAgIFtgJHtjZWxsUHJlZml4Q2xzfS1maXgtZW5kYF06IGlzRml4RW5kLFxuICAgICAgICAvLyBGaXhlZCBzaGFkb3dcbiAgICAgICAgW2Ake2NlbGxQcmVmaXhDbHN9LWZpeC1zdGFydC1zaGFkb3dgXTogZml4ZWRTdGFydFNoYWRvdyxcbiAgICAgICAgW2Ake2NlbGxQcmVmaXhDbHN9LWZpeC1zdGFydC1zaGFkb3ctc2hvd2BdOiBmaXhlZFN0YXJ0U2hhZG93ICYmIHNob3dGaXhTdGFydFNoYWRvdyxcbiAgICAgICAgW2Ake2NlbGxQcmVmaXhDbHN9LWZpeC1lbmQtc2hhZG93YF06IGZpeGVkRW5kU2hhZG93LFxuICAgICAgICBbYCR7Y2VsbFByZWZpeENsc30tZml4LWVuZC1zaGFkb3ctc2hvd2BdOiBmaXhlZEVuZFNoYWRvdyAmJiBzaG93Rml4RW5kU2hhZG93LFxuICAgICAgICBbYCR7Y2VsbFByZWZpeENsc30tZWxsaXBzaXNgXTogZWxsaXBzaXMsXG4gICAgICAgIFtgJHtjZWxsUHJlZml4Q2xzfS13aXRoLWFwcGVuZGBdOiBhcHBlbmROb2RlLFxuICAgICAgICBbYCR7Y2VsbFByZWZpeENsc30tZml4LXN0aWNreWBdOiAoaXNGaXhTdGFydCB8fCBpc0ZpeEVuZCkgJiYgaXNTdGlja3ksXG4gICAgICAgIFtgJHtjZWxsUHJlZml4Q2xzfS1yb3ctaG92ZXJgXTogIWxlZ2FjeUNlbGxQcm9wcyAmJiBob3ZlcmluZyxcbiAgICB9LCBhZGRpdGlvbmFsUHJvcHMuY2xhc3NOYW1lLCBsZWdhY3lDZWxsUHJvcHMgPT09IG51bGwgfHwgbGVnYWN5Q2VsbFByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsZWdhY3lDZWxsUHJvcHMuY2xhc3NOYW1lKTtcbiAgICAvLyA+Pj4+PiBTdHlsZVxuICAgIGNvbnN0IGFsaWduU3R5bGUgPSB7fTtcbiAgICBpZiAoYWxpZ24pIHtcbiAgICAgICAgYWxpZ25TdHlsZS50ZXh0QWxpZ24gPSBhbGlnbjtcbiAgICB9XG4gICAgLy8gVGhlIG9yZGVyIGlzIGltcG9ydGFudCBzaW5jZSB1c2VyIGNhbiBvdmVyd3JpdGUgc3R5bGUuXG4gICAgLy8gRm9yIGV4YW1wbGUgYW50LWRlc2lnbi9hbnQtZGVzaWduIzUxNzYzXG4gICAgY29uc3QgbWVyZ2VkU3R5bGUgPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGxlZ2FjeUNlbGxQcm9wcyA9PT0gbnVsbCB8fCBsZWdhY3lDZWxsUHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGxlZ2FjeUNlbGxQcm9wcy5zdHlsZSksIGZpeGVkU3R5bGUpLCBhbGlnblN0eWxlKSwgYWRkaXRpb25hbFByb3BzLnN0eWxlKSwgc3R5bGUpO1xuICAgIC8vID4+Pj4+IENoaWxkcmVuIE5vZGVcbiAgICBsZXQgbWVyZ2VkQ2hpbGROb2RlID0gY2hpbGROb2RlO1xuICAgIC8vIE5vdCBjcmFzaCBpZiBmaW5hbCBgY2hpbGROb2RlYCBpcyBub3QgdmFsaWRhdGUgUmVhY3ROb2RlXG4gICAgaWYgKHR5cGVvZiBtZXJnZWRDaGlsZE5vZGUgPT09ICdvYmplY3QnICYmXG4gICAgICAgICFBcnJheS5pc0FycmF5KG1lcmdlZENoaWxkTm9kZSkgJiZcbiAgICAgICAgIVJlYWN0LmlzVmFsaWRFbGVtZW50KG1lcmdlZENoaWxkTm9kZSkpIHtcbiAgICAgICAgbWVyZ2VkQ2hpbGROb2RlID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKGVsbGlwc2lzICYmIChmaXhlZFN0YXJ0U2hhZG93IHx8IGZpeGVkRW5kU2hhZG93KSkge1xuICAgICAgICBtZXJnZWRDaGlsZE5vZGUgPSBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogYCR7Y2VsbFByZWZpeENsc30tY29udGVudGAsIGNoaWxkcmVuOiBtZXJnZWRDaGlsZE5vZGUgfSk7XG4gICAgfVxuICAgIHJldHVybiAoX2pzeHMoQ29tcG9uZW50LCBPYmplY3QuYXNzaWduKHt9LCBsZWdhY3lDZWxsUHJvcHMsIGFkZGl0aW9uYWxQcm9wcywgeyBjbGFzc05hbWU6IG1lcmdlZENsYXNzTmFtZSwgc3R5bGU6IG1lcmdlZFN0eWxlLCBcbiAgICAgICAgLy8gQTExeVxuICAgICAgICB0aXRsZTogdGl0bGUsIHNjb3BlOiBzY29wZSwgXG4gICAgICAgIC8vIEhvdmVyXG4gICAgICAgIG9uTW91c2VFbnRlcjogcm93SG92ZXJhYmxlID8gb25Nb3VzZUVudGVyIDogdW5kZWZpbmVkLCBvbk1vdXNlTGVhdmU6IHJvd0hvdmVyYWJsZSA/IG9uTW91c2VMZWF2ZSA6IHVuZGVmaW5lZCwgXG4gICAgICAgIC8vU3BhblxuICAgICAgICBjb2xTcGFuOiBtZXJnZWRDb2xTcGFuICE9PSAxID8gbWVyZ2VkQ29sU3BhbiA6IG51bGwsIHJvd1NwYW46IG1lcmdlZFJvd1NwYW4gIT09IDEgPyBtZXJnZWRSb3dTcGFuIDogbnVsbCwgY2hpbGRyZW46IFthcHBlbmROb2RlLCBtZXJnZWRDaGlsZE5vZGVdIH0pKSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgUmVhY3QubWVtbyhDZWxsKTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -4,7 +4,7 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
4
4
  import { clsx } from 'clsx';
5
5
  import ResizeObserver from '../../../ResizeObserver';
6
6
  import { getTargetScrollBarSize } from './utils/getScrollBarSize';
7
- import { useEventCallback as useEvent } from '@1money/hooks';
7
+ import useEvent from '@1money/hooks/useEventCallback';
8
8
  import pickAttrs from './utils/pickAttrs';
9
9
  import getValue from './utils/get';
10
10
  import warning from './utils/warning';
@@ -31,7 +31,7 @@ import ColumnGroup from './sugar/ColumnGroup';
31
31
  import { getColumnsKey, validateValue, validNumberValue } from './utils/valueUtil';
32
32
  import { getDOM } from '../../../ResizeObserver/utils/reactUtil';
33
33
  import isEqual from './selector-context/isEqual';
34
- import { useLayoutEffect } from '@1money/hooks';
34
+ import useLayoutEffect from '@1money/hooks/useLayoutEffect';
35
35
  export var DEFAULT_PREFIX = 'om-table';
36
36
  // Used for conditions cache
37
37
  var EMPTY_DATA = [];
@@ -683,4 +683,4 @@ ImmutableTable.Column = Column;
683
683
  ImmutableTable.ColumnGroup = ColumnGroup;
684
684
  ImmutableTable.Summary = FooterComponents;
685
685
  export default ImmutableTable;
686
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvaW50ZXJuYWwva2VybmVsL1RhYmxlLmpzIiwiY29tcG9uZW50cy9UYWJsZS9pbnRlcm5hbC9zcmMvY29tcG9uZW50cy9UYWJsZS9pbnRlcm5hbC9rZXJuZWwvVGFibGUudHN4Il0sIm5hbWVzIjpbImpzeCIsIl9qc3giLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImpzeHMiLCJfanN4cyIsImNsc3giLCJSZXNpemVPYnNlcnZlciIsImdldFRhcmdldFNjcm9sbEJhclNpemUiLCJ1c2VFdmVudENhbGxiYWNrIiwidXNlRXZlbnQiLCJwaWNrQXR0cnMiLCJnZXRWYWx1ZSIsIndhcm5pbmciLCJSZWFjdCIsIkJvZHkiLCJDb2xHcm91cCIsIkVYUEFORF9DT0xVTU4iLCJJTlRFUk5BTF9IT09LUyIsIlRhYmxlQ29udGV4dCIsIm1ha2VJbW11dGFibGUiLCJGaXhlZEhvbGRlciIsIkZvb3RlciIsIkZvb3RlckNvbXBvbmVudHMiLCJTdW1tYXJ5IiwiSGVhZGVyIiwidXNlQ29sdW1ucyIsInVzZUV4cGFuZCIsInVzZUZpeGVkSW5mbyIsInVzZVRpbWVvdXRMb2NrIiwidXNlSG92ZXIiLCJ1c2VTdGlja3kiLCJ1c2VTdGlja3lPZmZzZXRzIiwiUGFuZWwiLCJTdGlja3lTY3JvbGxCYXIiLCJDb2x1bW4iLCJDb2x1bW5Hcm91cCIsImdldENvbHVtbnNLZXkiLCJ2YWxpZGF0ZVZhbHVlIiwidmFsaWROdW1iZXJWYWx1ZSIsImdldERPTSIsImlzRXF1YWwiLCJ1c2VMYXlvdXRFZmZlY3QiLCJERUZBVUxUX1BSRUZJWCIsIkVNUFRZX0RBVEEiLCJFTVBUWV9TQ1JPTExfVEFSR0VUIiwiZGVmYXVsdEVtcHR5IiwiVGFibGUiLCJ0YWJsZVByb3BzIiwicmVmIiwiX2Nsc3giLCJfYSIsIl9iIiwicHJvcHMiLCJPYmplY3QiLCJhc3NpZ24iLCJyb3dLZXkiLCJwcmVmaXhDbHMiLCJlbXB0eVRleHQiLCJjbGFzc05hbWUiLCJyb3dDbGFzc05hbWUiLCJzdHlsZSIsImNsYXNzTmFtZXMiLCJzdHlsZXMiLCJkYXRhIiwic2Nyb2xsIiwidGFibGVMYXlvdXQiLCJkaXJlY3Rpb24iLCJ0aXRsZSIsImZvb3RlciIsInN1bW1hcnkiLCJjYXB0aW9uIiwiaWQiLCJzaG93SGVhZGVyIiwiY29tcG9uZW50cyIsIm9uUm93Iiwib25IZWFkZXJSb3ciLCJtZWFzdXJlUm93UmVuZGVyIiwib25TY3JvbGwiLCJpbnRlcm5hbEhvb2tzIiwidHJhbnNmb3JtQ29sdW1ucyIsImludGVybmFsUmVmcyIsInRhaWxvciIsImdldENvbnRhaW5lcldpZHRoIiwic3RpY2t5IiwiX3Byb3BzJHJvd0hvdmVyYWJsZSIsInJvd0hvdmVyYWJsZSIsIm1lcmdlZERhdGEiLCJoYXNEYXRhIiwibGVuZ3RoIiwidXNlSW50ZXJuYWxIb29rcyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImZvckVhY2giLCJuYW1lIiwidW5kZWZpbmVkIiwiY29uY2F0IiwiZ2V0Q29tcG9uZW50IiwidXNlQ2FsbGJhY2siLCJwYXRoIiwiZGVmYXVsdENvbXBvbmVudCIsImdldFJvd0tleSIsInVzZU1lbW8iLCJyZWNvcmQiLCJrZXkiLCJjdXN0b21pemVTY3JvbGxCb2R5IiwiX3VzZUhvdmVyIiwiX3VzZUhvdmVyMiIsIl9zbGljZWRUb0FycmF5Iiwic3RhcnRSb3ciLCJlbmRSb3ciLCJvbkhvdmVyIiwiX3VzZUV4cGFuZCIsIl91c2VFeHBhbmQyIiwiZXhwYW5kYWJsZUNvbmZpZyIsImV4cGFuZGFibGVUeXBlIiwibWVyZ2VkRXhwYW5kZWRLZXlzIiwibWVyZ2VkRXhwYW5kSWNvbiIsIm1lcmdlZENoaWxkcmVuQ29sdW1uTmFtZSIsIm9uVHJpZ2dlckV4cGFuZCIsInNjcm9sbFgiLCJ4IiwiX1JlYWN0JHVzZVN0YXRlIiwidXNlU3RhdGUiLCJfUmVhY3QkdXNlU3RhdGUyIiwiY29tcG9uZW50V2lkdGgiLCJzZXRDb21wb25lbnRXaWR0aCIsIl91c2VDb2x1bW5zIiwiZXhwYW5kYWJsZSIsImV4cGFuZGVkUm93UmVuZGVyIiwiY29sdW1uVGl0bGUiLCJleHBhbmRlZEtleXMiLCJleHBhbmRJY29uIiwiZXhwYW5kSWNvbkNvbHVtbkluZGV4Iiwic2Nyb2xsV2lkdGgiLCJjbGllbnRXaWR0aCIsIl91c2VDb2x1bW5zMiIsImNvbHVtbnMiLCJmbGF0dGVuQ29sdW1ucyIsImZsYXR0ZW5TY3JvbGxYIiwibWVyZ2VkU2Nyb2xsWCIsImNvbHVtbkNvbnRleHQiLCJmdWxsVGFibGVSZWYiLCJ1c2VSZWYiLCJzY3JvbGxIZWFkZXJSZWYiLCJzY3JvbGxCb2R5UmVmIiwic2Nyb2xsQm9keUNvbnRhaW5lclJlZiIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJuYXRpdmVFbGVtZW50IiwiY3VycmVudCIsInNjcm9sbFRvIiwiY29uZmlnIiwiSFRNTEVsZW1lbnQiLCJpbmRleCIsInRvcCIsIm9mZnNldCIsIm1lcmdlZEtleSIsInRhcmdldEVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwic2Nyb2xsSW50b1ZpZXciLCJlbGVtZW50VG9wIiwib2Zmc2V0VG9wIiwic2Nyb2xsU3VtbWFyeVJlZiIsIl9SZWFjdCR1c2VTdGF0ZTMiLCJfUmVhY3QkdXNlU3RhdGU0Iiwic2hhZG93U3RhcnQiLCJzZXRTaGFkb3dTdGFydCIsIl9SZWFjdCR1c2VTdGF0ZTUiLCJfUmVhY3QkdXNlU3RhdGU2Iiwic2hhZG93RW5kIiwic2V0U2hhZG93RW5kIiwiX1JlYWN0JHVzZVN0YXRlNyIsIk1hcCIsIl9SZWFjdCR1c2VTdGF0ZTgiLCJjb2xzV2lkdGhzIiwidXBkYXRlQ29sc1dpZHRocyIsImNvbHNLZXlzIiwicHVyZUNvbFdpZHRocyIsIm1hcCIsImNvbHVtbktleSIsImdldCIsImNvbFdpZHRocyIsImpvaW4iLCJzdGlja3lPZmZzZXRzIiwiZml4SGVhZGVyIiwieSIsImhvcml6b25TY3JvbGwiLCJCb29sZWFuIiwiZml4ZWQiLCJmaXhDb2x1bW4iLCJzb21lIiwiX3JlZiIsInN0aWNreVJlZiIsIl91c2VTdGlja3kiLCJpc1N0aWNreSIsIm9mZnNldEhlYWRlciIsIm9mZnNldFN1bW1hcnkiLCJvZmZzZXRTY3JvbGwiLCJzdGlja3lDbGFzc05hbWUiLCJjb250YWluZXIiLCJzdW1tYXJ5Tm9kZSIsImZpeEZvb3RlciIsImlzVmFsaWRFbGVtZW50IiwidHlwZSIsInNjcm9sbFhTdHlsZSIsInNjcm9sbFlTdHlsZSIsInNjcm9sbFRhYmxlU3R5bGUiLCJvdmVyZmxvd1kiLCJtYXhIZWlnaHQiLCJvdmVyZmxvd1giLCJ3aWR0aCIsIm1pbldpZHRoIiwib25Db2x1bW5SZXNpemUiLCJ3aWR0aHMiLCJuZXdXaWR0aHMiLCJzZXQiLCJfdXNlVGltZW91dExvY2siLCJfdXNlVGltZW91dExvY2syIiwic2V0U2Nyb2xsVGFyZ2V0IiwiZ2V0U2Nyb2xsVGFyZ2V0IiwiZm9yY2VTY3JvbGwiLCJzY3JvbGxMZWZ0IiwidGFyZ2V0Iiwic2V0VGltZW91dCIsIl9SZWFjdCR1c2VTdGF0ZTkiLCJfUmVhY3QkdXNlU3RhdGUxMCIsInNjcm9sbEluZm8iLCJzZXRTY3JvbGxJbmZvIiwib25JbnRlcm5hbFNjcm9sbCIsIl9yZWYyIiwiY3VycmVudFRhcmdldCIsIm1lcmdlZFNjcm9sbExlZnQiLCJjb21wYXJlVGFyZ2V0Iiwic2V0U2Nyb2xsTGVmdCIsIm1lYXN1cmVUYXJnZXQiLCJhYnNTY3JvbGxTdGFydCIsIk1hdGgiLCJhYnMiLCJvcmkiLCJuZXh0U2Nyb2xsSW5mbyIsIm9uQm9keVNjcm9sbCIsImUiLCJ0cmlnZ2VyT25TY3JvbGwiLCJvbkZ1bGxUYWJsZVJlc2l6ZSIsIm9mZnNldFdpZHRoIiwiX2MiLCJjaGVja1Njcm9sbEJhclZpc2libGUiLCJtZXJnZWRXaWR0aCIsIm1vdW50ZWQiLCJ1c2VFZmZlY3QiLCJfUmVhY3QkdXNlU3RhdGUxMSIsIl9SZWFjdCR1c2VTdGF0ZTEyIiwic2Nyb2xsYmFyU2l6ZSIsInNldFNjcm9sbGJhclNpemUiLCJFbGVtZW50IiwiYm9keSIsInJlbmRlckZpeGVkSGVhZGVyVGFibGUiLCJmaXhlZEhvbGRlclBhc3NQcm9wcyIsImNoaWxkcmVuIiwicmVuZGVyRml4ZWRGb290ZXJUYWJsZSIsIlRhYmxlQ29tcG9uZW50IiwibWVyZ2VkVGFibGVMYXlvdXQiLCJfcmVmMyIsImVsbGlwc2lzIiwiZ3JvdXBUYWJsZU5vZGUiLCJoZWFkZXJQcm9wcyIsImNvbHVtQ291bnQiLCJlbXB0eU5vZGUiLCJib2R5VGFibGUiLCJtZWFzdXJlQ29sdW1uV2lkdGgiLCJib2R5Q29sR3JvdXAiLCJfcmVmNCIsImNhcHRpb25FbGVtZW50IiwiZGF0YVByb3BzIiwiYXJpYVByb3BzIiwiYXJpYSIsImJvZHlDb250ZW50IiwiX3JlZjUiLCJjb2xXaWR0aCIsIk51bWJlciIsImlzTmFOIiwiZml4ZWRIb2xkZXJQcm9wcyIsIm5vRGF0YSIsIm1heENvbnRlbnRTY3JvbGwiLCJzdGlja3lUb3BPZmZzZXQiLCJjb2xHcm91cCIsInN0aWNreUJvdHRvbU9mZnNldCIsImNvbnRlbnQiLCJ0YWJsZVN0eWxlIiwiZnVsbFRhYmxlIiwiX2RlZmluZVByb3BlcnR5Iiwic2VjdGlvbiIsIm9uUmVzaXplIiwiX3JlZjYiLCJmaXhlZEluZm9MaXN0IiwiVGFibGVDb250ZXh0VmFsdWUiLCJleHBhbmRlZFJvd0NsYXNzTmFtZSIsImV4cGFuZFJvd0J5Q2xpY2siLCJleHBhbmRlZFJvd09mZnNldCIsImluZGVudFNpemUiLCJhbGxDb2x1bW5zRml4ZWRMZWZ0IiwiZXZlcnkiLCJjb2wiLCJob3ZlclN0YXJ0Um93IiwiaG92ZXJFbmRSb3ciLCJyb3dFeHBhbmRhYmxlIiwiY2hpbGRyZW5Db2x1bW5OYW1lIiwiUHJvdmlkZXIiLCJ2YWx1ZSIsIlJlZlRhYmxlIiwiZm9yd2FyZFJlZiIsImRpc3BsYXlOYW1lIiwiZ2VuVGFibGUiLCJzaG91bGRUcmlnZ2VyUmVuZGVyIiwiSW1tdXRhYmxlVGFibGUiXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBU0EsR0FBRyxJQUFJQyxJQUFJLEVBQUVDLFFBQVEsSUFBSUMsU0FBUyxFQUFFQyxJQUFJLElBQUlDLEtBQUssUUFBUSxtQkFB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UUFBUSxLQUFLLFlBQVksRUFBRTtFQUN6Q3lOLFFBQVEsQ0FBQ0UsV0FBVyxHQUFHLE9BQU87QUFDaEM7QUFFQSxPQUFPLElBQU1DLFFBQVEsR0FBRyxTQUFYQSxRQUFRQSxDQUFJQyxtQkFBdUQsRUFBSTtFQUNsRixPQUFPdFMsYUFBYSxDQUFDa1MsUUFBUSxFQUFFSSxtQkFBbUIsQ0FBQztBQUNyRCxDQUFDO0FBRUQsSUFBTUMsY0FBYyxHQUFHRixRQUFRLENBQUEsQ0FBRTtBQVVoQ0UsY0FBcUMsQ0FBQzFTLGFBQWEsR0FBR0EsYUFBYTtBQUVuRTBTLGNBQXFDLENBQUN6UyxjQUFjLEdBQUdBLGNBQWM7QUFFckV5UyxjQUFxQyxDQUFDeFIsTUFBTSxHQUFHQSxNQUFNO0FBRXJEd1IsY0FBcUMsQ0FBQ3ZSLFdBQVcsR0FBR0EsV0FBVztBQUUvRHVSLGNBQXFDLENBQUNuUyxPQUFPLEdBQUdELGdCQUFnQjtBQUVqRSxlQUFlb1MsY0FBb0MiLCJmaWxlIjoiY29tcG9uZW50cy9UYWJsZS9pbnRlcm5hbC9rZXJuZWwvVGFibGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwgRnJhZ21lbnQgYXMgX0ZyYWdtZW50LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBjbHN4IH0gZnJvbSAnY2xzeCc7XG5pbXBvcnQgUmVzaXplT2JzZXJ2ZXIgZnJvbSAnLi4vLi4vLi4vUmVzaXplT2JzZXJ2ZXInO1xuaW1wb3J0IHsgZ2V0VGFyZ2V0U2Nyb2xsQmFyU2l6ZSB9IGZyb20gJy4vdXRpbHMvZ2V0U2Nyb2xsQmFyU2l6ZSc7XG5pbXBvcnQgeyB1c2VFdmVudENhbGxiYWNrIGFzIHVzZUV2ZW50IH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG5pbXBvcnQgcGlja0F0dHJzIGZyb20gJy4vdXRpbHMvcGlja0F0dHJzJztcbmltcG9ydCBnZXRWYWx1ZSBmcm9tICcuL3V0aWxzL2dldCc7XG5pbXBvcnQgd2FybmluZyBmcm9tICcuL3V0aWxzL3dhcm5pbmcnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IEJvZHkgZnJvbSAnLi9Cb2R5JztcbmltcG9ydCBDb2xHcm91cCBmcm9tICcuL0NvbEdyb3VwJztcbmltcG9ydCB7IEVYUEFORF9DT0xVTU4sIElOVEVSTkFMX0hPT0tTIH0gZnJvbSAnLi9jb25zdGFudCc7XG5pbXBvcnQgVGFibGVDb250ZXh0LCB7IG1ha2VJbW11dGFibGUgfSBmcm9tICcuL2NvbnRleHQvVGFibGVDb250ZXh0JztcbmltcG9ydCBGaXhlZEhvbGRlciBmcm9tICcuL0ZpeGVkSG9sZGVyJztcbmltcG9ydCBGb290ZXIsIHsgRm9vdGVyQ29tcG9uZW50cyB9IGZyb20gJy4vRm9vdGVyJztcbmltcG9ydCBTdW1tYXJ5IGZyb20gJy4vRm9vdGVyL1N1bW1hcnknO1xuaW1wb3J0IEhlYWRlciBmcm9tICcuL0hlYWRlci9IZWFkZXInO1xuaW1wb3J0IHVzZUNvbHVtbnMgZnJvbSAnLi9ob29rcy91c2VDb2x1bW5zJztcbmltcG9ydCB1c2VFeHBhbmQgZnJvbSAnLi9ob29rcy91c2VFeHBhbmQnO1xuaW1wb3J0IHVzZUZpeGVkSW5mbyBmcm9tICcuL2hvb2tzL3VzZUZpeGVkSW5mbyc7XG5pbXBvcnQgeyB1c2VUaW1lb3V0TG9jayB9IGZyb20gJy4vaG9va3MvdXNlRnJhbWUnO1xuaW1wb3J0IHVzZUhvdmVyIGZyb20gJy4vaG9va3MvdXNlSG92ZXInO1xuaW1wb3J0IHVzZVN0aWNreSBmcm9tICcuL2hvb2tzL3VzZVN0aWNreSc7XG5pbXBvcnQgdXNlU3RpY2t5T2Zmc2V0cyBmcm9tICcuL2hvb2tzL3VzZVN0aWNreU9mZnNldHMnO1xuaW1wb3J0IFBhbmVsIGZyb20gJy4vUGFuZWwnO1xuaW1wb3J0IFN0aWNreVNjcm9sbEJhciBmcm9tICcuL3N0aWNreVNjcm9sbEJhcic7XG5pbXBvcnQgQ29sdW1uIGZyb20gJy4vc3VnYXIvQ29sdW1uJztcbmltcG9ydCBDb2x1bW5Hcm91cCBmcm9tICcuL3N1Z2FyL0NvbHVtbkdyb3VwJztcbmltcG9ydCB7IGdldENvbHVtbnNLZXksIHZhbGlkYXRlVmFsdWUsIHZhbGlkTnVtYmVyVmFsdWUgfSBmcm9tICcuL3V0aWxzL3ZhbHVlVXRpbCc7XG5pbXBvcnQgeyBnZXRET00gfSBmcm9tICcuLi8uLi8uLi9SZXNpemVPYnNlcnZlci91dGlscy9yZWFjdFV0aWwnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnLi9zZWxlY3Rvci1jb250ZXh0L2lzRXF1YWwnO1xuaW1wb3J0IHsgdXNlTGF5b3V0RWZmZWN0IH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9QUkVGSVggPSAnb20tdGFibGUnO1xuLy8gVXNlZCBmb3IgY29uZGl0aW9ucyBjYWNoZVxuY29uc3QgRU1QVFlfREFUQSA9IFtdO1xuLy8gVXNlZCBmb3IgY3VzdG9taXplIHNjcm9sbFxuY29uc3QgRU1QVFlfU0NST0xMX1RBUkdFVCA9IHt9O1xuZnVuY3Rpb24gZGVmYXVsdEVtcHR5KCkge1xuICAgIHJldHVybiAnTm8gRGF0YSc7XG59XG5jb25zdCBUYWJsZSA9ICh0YWJsZVByb3BzLCByZWYpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IHByb3BzID0gT2JqZWN0LmFzc2lnbih7IHJvd0tleTogJ2tleScsIHByZWZpeENsczogREVGQVVMVF9QUkVGSVgsIGVtcHR5VGV4dDogZGVmYXVsdEVtcHR5IH0sIHRhYmxlUHJvcHMpO1xuICAgIGNvbnN0IHsgcHJlZml4Q2xzLCBjbGFzc05hbWUsIHJvd0NsYXNzTmFtZSwgc3R5bGUsIGNsYXNzTmFtZXMsIHN0eWxlcywgZGF0YSwgcm93S2V5LCBzY3JvbGwsIHRhYmxlTGF5b3V0LCBkaXJlY3Rpb24sIFxuICAgIC8vIEFkZGl0aW9uYWwgUGFydFxuICAgIHRpdGxlLCBmb290ZXIsIHN1bW1hcnksIGNhcHRpb24sIFxuICAgIC8vIEN1c3RvbWl6ZVxuICAgIGlkLCBzaG93SGVhZGVyLCBjb21wb25lbnRzLCBlbXB0eVRleHQsIG9uUm93LCBvbkhlYWRlclJvdywgXG4gICAgLy8gTWVhc3VyZSBSb3dcbiAgICBtZWFzdXJlUm93UmVuZGVyLCBcbiAgICAvLyBFdmVudHNcbiAgICBvblNjcm9sbCwgXG4gICAgLy8gSW50ZXJuYWxcbiAgICBpbnRlcm5hbEhvb2tzLCB0cmFuc2Zvcm1Db2x1bW5zLCBpbnRlcm5hbFJlZnMsIHRhaWxvciwgZ2V0Q29udGFpbmVyV2lkdGgsIHN0aWNreSwgcm93SG92ZXJhYmxlID0gdHJ1ZSwgfSA9IHByb3BzO1xuICAgIGNvbnN0IG1lcmdlZERhdGEgPSBkYXRhIHx8IEVNUFRZX0RBVEE7XG4gICAgY29uc3QgaGFzRGF0YSA9ICEhbWVyZ2VkRGF0YS5sZW5ndGg7XG4gICAgY29uc3QgdXNlSW50ZXJuYWxIb29rcyA9IGludGVybmFsSG9va3MgPT09IElOVEVSTkFMX0hPT0tTO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PSBXYXJuaW5nID09PT09PT09PT09PT09PT09PT09PT1cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBbXG4gICAgICAgICAgICAnb25Sb3dDbGljaycsXG4gICAgICAgICAgICAnb25Sb3dEb3VibGVDbGljaycsXG4gICAgICAgICAgICAnb25Sb3dDb250ZXh0TWVudScsXG4gICAgICAgICAgICAnb25Sb3dNb3VzZUVudGVyJyxcbiAgICAgICAgICAgICdvblJvd01vdXNlTGVhdmUnLFxuICAgICAgICBdLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICAgICAgICB3YXJuaW5nKHByb3BzW25hbWVdID09PSB1bmRlZmluZWQsIGBcXGAke25hbWV9XFxgIGlzIHJlbW92ZWQsIHBsZWFzZSB1c2UgXFxgb25Sb3dcXGAgaW5zdGVhZC5gKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHdhcm5pbmcoISgnZ2V0Qm9keVdyYXBwZXInIGluIHByb3BzKSwgJ2BnZXRCb2R5V3JhcHBlcmAgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBjdXN0b20gYGNvbXBvbmVudHNgIGluc3RlYWQuJyk7XG4gICAgfVxuICAgIC8vID09PT09PT09PT09PT09PT09PT09IEN1c3RvbWl6ZSA9PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBnZXRDb21wb25lbnQgPSBSZWFjdC51c2VDYWxsYmFjaygocGF0aCwgZGVmYXVsdENvbXBvbmVudCkgPT4gZ2V0VmFsdWUoY29tcG9uZW50cywgcGF0aCkgfHwgZGVmYXVsdENvbXBvbmVudCwgW2NvbXBvbmVudHNdKTtcbiAgICBjb25zdCBnZXRSb3dLZXkgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiByb3dLZXkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiByb3dLZXk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChyZWNvcmQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IHJlY29yZCAmJiByZWNvcmRbcm93S2V5XTtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgd2FybmluZyhrZXkgIT09IHVuZGVmaW5lZCwgJ0VhY2ggcmVjb3JkIGluIHRhYmxlIHNob3VsZCBoYXZlIGEgdW5pcXVlIGBrZXlgIHByb3AsIG9yIHNldCBgcm93S2V5YCB0byBhbiB1bmlxdWUgcHJpbWFyeSBrZXkuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICB9O1xuICAgIH0sIFtyb3dLZXldKTtcbiAgICBjb25zdCBjdXN0b21pemVTY3JvbGxCb2R5ID0gZ2V0Q29tcG9uZW50KFsnYm9keSddKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09IEhvdmVyID09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgW3N0YXJ0Um93LCBlbmRSb3csIG9uSG92ZXJdID0gdXNlSG92ZXIoKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09IEV4cGFuZCA9PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgW2V4cGFuZGFibGVDb25maWcsIGV4cGFuZGFibGVUeXBlLCBtZXJnZWRFeHBhbmRlZEtleXMsIG1lcmdlZEV4cGFuZEljb24sIG1lcmdlZENoaWxkcmVuQ29sdW1uTmFtZSwgb25UcmlnZ2VyRXhwYW5kLF0gPSB1c2VFeHBhbmQocHJvcHMsIG1lcmdlZERhdGEsIGdldFJvd0tleSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PSBDb2x1bW4gPT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IHNjcm9sbFggPSBzY3JvbGwgPT09IG51bGwgfHwgc2Nyb2xsID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzY3JvbGwueDtcbiAgICBjb25zdCBbY29tcG9uZW50V2lkdGgsIHNldENvbXBvbmVudFdpZHRoXSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtjb2x1bW5zLCBmbGF0dGVuQ29sdW1ucywgZmxhdHRlblNjcm9sbFhdID0gdXNlQ29sdW1ucyhPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMpLCBleHBhbmRhYmxlQ29uZmlnKSwgeyBleHBhbmRhYmxlOiAhIWV4cGFuZGFibGVDb25maWcuZXhwYW5kZWRSb3dSZW5kZXIsIGNvbHVtblRpdGxlOiBleHBhbmRhYmxlQ29uZmlnLmNvbHVtblRpdGxlLCBleHBhbmRlZEtleXM6IG1lcmdlZEV4cGFuZGVkS2V5cywgZ2V0Um93S2V5LFxuICAgICAgICBvblRyaWdnZXJFeHBhbmQsIGV4cGFuZEljb246IG1lcmdlZEV4cGFuZEljb24sIGV4cGFuZEljb25Db2x1bW5JbmRleDogZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRJY29uQ29sdW1uSW5kZXgsIGRpcmVjdGlvbiwgc2Nyb2xsV2lkdGg6IHVzZUludGVybmFsSG9va3MgJiYgdGFpbG9yICYmIHR5cGVvZiBzY3JvbGxYID09PSAnbnVtYmVyJyA/IHNjcm9sbFggOiBudWxsLCBjbGllbnRXaWR0aDogY29tcG9uZW50V2lkdGggfSksIHVzZUludGVybmFsSG9va3MgPyB0cmFuc2Zvcm1Db2x1bW5zIDogbnVsbCk7XG4gICAgY29uc3QgbWVyZ2VkU2Nyb2xsWCA9IGZsYXR0ZW5TY3JvbGxYICE9PSBudWxsICYmIGZsYXR0ZW5TY3JvbGxYICE9PSB2b2lkIDAgPyBmbGF0dGVuU2Nyb2xsWCA6IHNjcm9sbFg7XG4gICAgY29uc3QgY29sdW1uQ29udGV4dCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHsgY29sdW1ucywgZmxhdHRlbkNvbHVtbnMgfSksIFtjb2x1bW5zLCBmbGF0dGVuQ29sdW1uc10pO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09IFJlZnMgPT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBmdWxsVGFibGVSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3Qgc2Nyb2xsSGVhZGVyUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHNjcm9sbEJvZHlSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3Qgc2Nyb2xsQm9keUNvbnRhaW5lclJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBSZWFjdC51c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmF0aXZlRWxlbWVudDogZnVsbFRhYmxlUmVmLmN1cnJlbnQsXG4gICAgICAgICAgICBzY3JvbGxUbzogY29uZmlnID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgICAgIGlmIChzY3JvbGxCb2R5UmVmLmN1cnJlbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBOYXRpdmUgc2Nyb2xsXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgaW5kZXgsIHRvcCwga2V5LCBvZmZzZXQgfSA9IGNvbmZpZztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkTnVtYmVyVmFsdWUodG9wKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW4gdG9wIG1vZGUsIG9mZnNldCBpcyBpZ25vcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAoX2EgPSBzY3JvbGxCb2R5UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zY3JvbGxUbyh7IHRvcCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lcmdlZEtleSA9IGtleSAhPT0gbnVsbCAmJiBrZXkgIT09IHZvaWQgMCA/IGtleSA6IGdldFJvd0tleShtZXJnZWREYXRhW2luZGV4XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gc2Nyb2xsQm9keVJlZi5jdXJyZW50LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLXJvdy1rZXk9XCIke21lcmdlZEtleX1cIl1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8gb2Zmc2V0LCB1c2Ugc2Nyb2xsSW50b1ZpZXcgZm9yIGRlZmF1bHQgYmVoYXZpb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0RWxlbWVudC5zY3JvbGxJbnRvVmlldygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2l0aCBvZmZzZXQsIHVzZSBlbGVtZW50J3Mgb2Zmc2V0VG9wICsgb2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb3AgPSB0YXJnZXRFbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsQm9keVJlZi5jdXJyZW50LnNjcm9sbFRvKHsgdG9wOiBlbGVtZW50VG9wICsgb2Zmc2V0IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICgoX2IgPSBzY3JvbGxCb2R5UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5zY3JvbGxUbykge1xuICAgICAgICAgICAgICAgICAgICAvLyBQYXNzIHRvIHByb3h5XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbEJvZHlSZWYuY3VycmVudC5zY3JvbGxUbyhjb25maWcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PSBTY3JvbGwgPT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IHNjcm9sbFN1bW1hcnlSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3QgW3NoYWRvd1N0YXJ0LCBzZXRTaGFkb3dTdGFydF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3NoYWRvd0VuZCwgc2V0U2hhZG93RW5kXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbY29sc1dpZHRocywgdXBkYXRlQ29sc1dpZHRoc10gPSBSZWFjdC51c2VTdGF0ZShuZXcgTWFwKCkpO1xuICAgIC8vIENvbnZlcnQgbWFwIHRvIG51bWJlciB3aWR0aFxuICAgIGNvbnN0IGNvbHNLZXlzID0gZ2V0Q29sdW1uc0tleShmbGF0dGVuQ29sdW1ucyk7XG4gICAgY29uc3QgcHVyZUNvbFdpZHRocyA9IGNvbHNLZXlzLm1hcChjb2x1bW5LZXkgPT4gY29sc1dpZHRocy5nZXQoY29sdW1uS2V5KSk7XG4gICAgY29uc3QgY29sV2lkdGhzID0gUmVhY3QudXNlTWVtbygoKSA9PiBwdXJlQ29sV2lkdGhzLCBbcHVyZUNvbFdpZHRocy5qb2luKCdfJyldKTtcbiAgICBjb25zdCBzdGlja3lPZmZzZXRzID0gdXNlU3RpY2t5T2Zmc2V0cyhjb2xXaWR0aHMsIGZsYXR0ZW5Db2x1bW5zKTtcbiAgICBjb25zdCBmaXhIZWFkZXIgPSBzY3JvbGwgJiYgdmFsaWRhdGVWYWx1ZShzY3JvbGwueSk7XG4gICAgY29uc3QgaG9yaXpvblNjcm9sbCA9IChzY3JvbGwgJiYgdmFsaWRhdGVWYWx1ZShtZXJnZWRTY3JvbGxYKSkgfHwgQm9vbGVhbihleHBhbmRhYmxlQ29uZmlnLmZpeGVkKTtcbiAgICBjb25zdCBmaXhDb2x1bW4gPSBob3Jpem9uU2Nyb2xsICYmIGZsYXR0ZW5Db2x1bW5zLnNvbWUoKHsgZml4ZWQgfSkgPT4gZml4ZWQpO1xuICAgIC8vIFN0aWNreVxuICAgIGNvbnN0IHN0aWNreVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCB7IGlzU3RpY2t5LCBvZmZzZXRIZWFkZXIsIG9mZnNldFN1bW1hcnksIG9mZnNldFNjcm9sbCwgc3RpY2t5Q2xhc3NOYW1lLCBjb250YWluZXIgfSA9IHVzZVN0aWNreShzdGlja3ksIHByZWZpeENscyk7XG4gICAgLy8gRm9vdGVyIChGaXggZm9vdGVyIG11c3QgZml4ZWQgaGVhZGVyKVxuICAgIGNvbnN0IHN1bW1hcnlOb2RlID0gUmVhY3QudXNlTWVtbygoKSA9PiBzdW1tYXJ5ID09PSBudWxsIHx8IHN1bW1hcnkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN1bW1hcnkobWVyZ2VkRGF0YSksIFtzdW1tYXJ5LCBtZXJnZWREYXRhXSk7XG4gICAgY29uc3QgZml4Rm9vdGVyID0gKGZpeEhlYWRlciB8fCBpc1N0aWNreSkgJiZcbiAgICAgICAgUmVhY3QuaXNWYWxpZEVsZW1lbnQoc3VtbWFyeU5vZGUpICYmXG4gICAgICAgIHN1bW1hcnlOb2RlLnR5cGUgPT09IFN1bW1hcnkgJiZcbiAgICAgICAgc3VtbWFyeU5vZGUucHJvcHMuZml4ZWQ7XG4gICAgLy8gU2Nyb2xsXG4gICAgbGV0IHNjcm9sbFhTdHlsZTtcbiAgICBsZXQgc2Nyb2xsWVN0eWxlO1xuICAgIGxldCBzY3JvbGxUYWJsZVN0eWxlO1xuICAgIGlmIChmaXhIZWFkZXIpIHtcbiAgICAgICAgc2Nyb2xsWVN0eWxlID0ge1xuICAgICAgICAgICAgb3ZlcmZsb3dZOiBoYXNEYXRhID8gJ3Njcm9sbCcgOiAnYXV0bycsXG4gICAgICAgICAgICBtYXhIZWlnaHQ6IHNjcm9sbC55LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAoaG9yaXpvblNjcm9sbCkge1xuICAgICAgICBzY3JvbGxYU3R5bGUgPSB7IG92ZXJmbG93WDogJ2F1dG8nIH07XG4gICAgICAgIC8vIFdoZW4gbm8gdmVydGljYWwgc2Nyb2xsYmFyLCBzaG91bGQgaGlkZSBpdFxuICAgICAgICBpZiAoIWZpeEhlYWRlcikge1xuICAgICAgICAgICAgc2Nyb2xsWVN0eWxlID0geyBvdmVyZmxvd1k6ICdoaWRkZW4nIH07XG4gICAgICAgIH1cbiAgICAgICAgc2Nyb2xsVGFibGVTdHlsZSA9IHtcbiAgICAgICAgICAgIHdpZHRoOiBtZXJnZWRTY3JvbGxYID09PSB0cnVlID8gJ2F1dG8nIDogbWVyZ2VkU2Nyb2xsWCxcbiAgICAgICAgICAgIG1pbldpZHRoOiAnMTAwJScsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IG9uQ29sdW1uUmVzaXplID0gUmVhY3QudXNlQ2FsbGJhY2soKGNvbHVtbktleSwgd2lkdGgpID0+IHtcbiAgICAgICAgdXBkYXRlQ29sc1dpZHRocyh3aWR0aHMgPT4ge1xuICAgICAgICAgICAgaWYgKHdpZHRocy5nZXQoY29sdW1uS2V5KSAhPT0gd2lkdGgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdXaWR0aHMgPSBuZXcgTWFwKHdpZHRocyk7XG4gICAgICAgICAgICAgICAgbmV3V2lkdGhzLnNldChjb2x1bW5LZXksIHdpZHRoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3V2lkdGhzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHdpZHRocztcbiAgICAgICAgfSk7XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IFtzZXRTY3JvbGxUYXJnZXQsIGdldFNjcm9sbFRhcmdldF0gPSB1c2VUaW1lb3V0TG9jayhudWxsKTtcbiAgICBmdW5jdGlvbiBmb3JjZVNjcm9sbChzY3JvbGxMZWZ0LCB0YXJnZXQpIHtcbiAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHRhcmdldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGFyZ2V0KHNjcm9sbExlZnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRhcmdldC5zY3JvbGxMZWZ0ICE9PSBzY3JvbGxMZWZ0KSB7XG4gICAgICAgICAgICB0YXJnZXQuc2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQ7XG4gICAgICAgICAgICAvLyBEZWxheSB0byBmb3JjZSBzY3JvbGwgcG9zaXRpb24gaWYgbm90IHN5bmNcbiAgICAgICAgICAgIGlmICh0YXJnZXQuc2Nyb2xsTGVmdCAhPT0gc2Nyb2xsTGVmdCkge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQ7XG4gICAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgW3Njcm9sbEluZm8sIHNldFNjcm9sbEluZm9dID0gUmVhY3QudXNlU3RhdGUoWzAsIDBdKTtcbiAgICBjb25zdCBvbkludGVybmFsU2Nyb2xsID0gdXNlRXZlbnQoKHsgY3VycmVudFRhcmdldCwgc2Nyb2xsTGVmdCB9KSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgbWVyZ2VkU2Nyb2xsTGVmdCA9IHR5cGVvZiBzY3JvbGxMZWZ0ID09PSAnbnVtYmVyJyA/IHNjcm9sbExlZnQgOiBjdXJyZW50VGFyZ2V0LnNjcm9sbExlZnQ7XG4gICAgICAgIGNvbnN0IGNvbXBhcmVUYXJnZXQgPSBjdXJyZW50VGFyZ2V0IHx8IEVNUFRZX1NDUk9MTF9UQVJHRVQ7XG4gICAgICAgIGlmICghZ2V0U2Nyb2xsVGFyZ2V0KCkgfHwgZ2V0U2Nyb2xsVGFyZ2V0KCkgPT09IGNvbXBhcmVUYXJnZXQpIHtcbiAgICAgICAgICAgIHNldFNjcm9sbFRhcmdldChjb21wYXJlVGFyZ2V0KTtcbiAgICAgICAgICAgIGZvcmNlU2Nyb2xsKG1lcmdlZFNjcm9sbExlZnQsIHNjcm9sbEhlYWRlclJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgIGZvcmNlU2Nyb2xsKG1lcmdlZFNjcm9sbExlZnQsIHNjcm9sbEJvZHlSZWYuY3VycmVudCk7XG4gICAgICAgICAgICBmb3JjZVNjcm9sbChtZXJnZWRTY3JvbGxMZWZ0LCBzY3JvbGxTdW1tYXJ5UmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgZm9yY2VTY3JvbGwobWVyZ2VkU2Nyb2xsTGVmdCwgKF9hID0gc3RpY2t5UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zZXRTY3JvbGxMZWZ0KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtZWFzdXJlVGFyZ2V0ID0gY3VycmVudFRhcmdldCB8fCBzY3JvbGxIZWFkZXJSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKG1lYXN1cmVUYXJnZXQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbFdpZHRoID0gXG4gICAgICAgICAgICAvLyBTaG91bGQgdXNlIG1lcmdlZFNjcm9sbFggaW4gdmlydHVhbCB0YWJsZSh1c2VJbnRlcm5hbEhvb2tzICYmIHRhaWxvciA9PT0gdHJ1ZSlcbiAgICAgICAgICAgIHVzZUludGVybmFsSG9va3MgJiYgdGFpbG9yICYmIHR5cGVvZiBtZXJnZWRTY3JvbGxYID09PSAnbnVtYmVyJ1xuICAgICAgICAgICAgICAgID8gbWVyZ2VkU2Nyb2xsWFxuICAgICAgICAgICAgICAgIDogbWVhc3VyZVRhcmdldC5zY3JvbGxXaWR0aDtcbiAgICAgICAgICAgIGNvbnN0IGNsaWVudFdpZHRoID0gbWVhc3VyZVRhcmdldC5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgIGNvbnN0IGFic1Njcm9sbFN0YXJ0ID0gTWF0aC5hYnMobWVyZ2VkU2Nyb2xsTGVmdCk7XG4gICAgICAgICAgICBzZXRTY3JvbGxJbmZvKG9yaSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFNjcm9sbEluZm8gPSBbYWJzU2Nyb2xsU3RhcnQsIHNjcm9sbFdpZHRoIC0gY2xpZW50V2lkdGhdO1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0VxdWFsKG9yaSwgbmV4dFNjcm9sbEluZm8pID8gb3JpIDogbmV4dFNjcm9sbEluZm87XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIHNwYWNlIHRvIHNjcm9sbFxuICAgICAgICAgICAgaWYgKHNjcm9sbFdpZHRoID09PSBjbGllbnRXaWR0aCkge1xuICAgICAgICAgICAgICAgIHNldFNoYWRvd1N0YXJ0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICBzZXRTaGFkb3dFbmQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFNoYWRvd1N0YXJ0KGFic1Njcm9sbFN0YXJ0ID4gMCk7XG4gICAgICAgICAgICBzZXRTaGFkb3dFbmQoYWJzU2Nyb2xsU3RhcnQgPCBzY3JvbGxXaWR0aCAtIGNsaWVudFdpZHRoIC0gMSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBvbkJvZHlTY3JvbGwgPSB1c2VFdmVudCgoZSkgPT4ge1xuICAgICAgICBvbkludGVybmFsU2Nyb2xsKGUpO1xuICAgICAgICBvblNjcm9sbCA9PT0gbnVsbCB8fCBvblNjcm9sbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25TY3JvbGwoZSk7XG4gICAgfSk7XG4gICAgY29uc3QgdHJpZ2dlck9uU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChob3Jpem9uU2Nyb2xsICYmIHNjcm9sbEJvZHlSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgb25JbnRlcm5hbFNjcm9sbCh7XG4gICAgICAgICAgICAgICAgY3VycmVudFRhcmdldDogZ2V0RE9NKHNjcm9sbEJvZHlSZWYuY3VycmVudCksXG4gICAgICAgICAgICAgICAgc2Nyb2xsTGVmdDogKF9hID0gc2Nyb2xsQm9keVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc2Nyb2xsTGVmdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2V0U2hhZG93U3RhcnQoZmFsc2UpO1xuICAgICAgICAgICAgc2V0U2hhZG93RW5kKGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgY29uc3Qgb25GdWxsVGFibGVSZXNpemUgPSAob2Zmc2V0V2lkdGgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIChfYSA9IHN0aWNreVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2hlY2tTY3JvbGxCYXJWaXNpYmxlKCk7XG4gICAgICAgIGxldCBtZXJnZWRXaWR0aCA9IChfYyA9IG9mZnNldFdpZHRoICE9PSBudWxsICYmIG9mZnNldFdpZHRoICE9PSB2b2lkIDAgPyBvZmZzZXRXaWR0aCA6IChfYiA9IGZ1bGxUYWJsZVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Iub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDA7XG4gICAgICAgIGlmICh1c2VJbnRlcm5hbEhvb2tzICYmIGdldENvbnRhaW5lcldpZHRoICYmIGZ1bGxUYWJsZVJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBtZXJnZWRXaWR0aCA9IGdldENvbnRhaW5lcldpZHRoKGZ1bGxUYWJsZVJlZi5jdXJyZW50LCBtZXJnZWRXaWR0aCkgfHwgbWVyZ2VkV2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1lcmdlZFdpZHRoICE9PSBjb21wb25lbnRXaWR0aCkge1xuICAgICAgICAgICAgdHJpZ2dlck9uU2Nyb2xsKCk7XG4gICAgICAgICAgICBzZXRDb21wb25lbnRXaWR0aChtZXJnZWRXaWR0aCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChob3Jpem9uU2Nyb2xsKSB7XG4gICAgICAgICAgICBvbkZ1bGxUYWJsZVJlc2l6ZSgpO1xuICAgICAgICB9XG4gICAgfSwgW2hvcml6b25TY3JvbGxdKTtcbiAgICAvLyBTeW5jIHNjcm9sbCBiYXIgd2hlbiBpbml0IG9yIGBob3Jpem9uU2Nyb2xsYCwgYGRhdGFgIGFuZCBgY29sdW1ucy5sZW5ndGhgIGNoYW5nZWRcbiAgICBjb25zdCBtb3VudGVkID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAvLyBvbkZ1bGxUYWJsZVJlc2l6ZSB3aWxsIGJlIHRyaWdnZXIgb25jZSB3aGVuIFJlc2l6ZU9ic2VydmVyIGlzIG1vdW50ZWRcbiAgICAgICAgLy8gVGhpcyB3aWxsIHJlZHVjZSBvbmUgZHVwbGljYXRlZCB0cmlnZ2VyT25TY3JvbGwgdGltZVxuICAgICAgICBpZiAobW91bnRlZC5jdXJyZW50KSB7XG4gICAgICAgICAgICB0cmlnZ2VyT25TY3JvbGwoKTtcbiAgICAgICAgfVxuICAgIH0sIFtob3Jpem9uU2Nyb2xsLCBkYXRhLCBjb2x1bW5zLmxlbmd0aF0pO1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIG1vdW50ZWQuY3VycmVudCA9IHRydWU7XG4gICAgfSwgW10pO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PSBFZmZlY3RzID09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBbc2Nyb2xsYmFyU2l6ZSwgc2V0U2Nyb2xsYmFyU2l6ZV0gPSBSZWFjdC51c2VTdGF0ZSgwKTtcbiAgICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIXRhaWxvciB8fCAhdXNlSW50ZXJuYWxIb29rcykge1xuICAgICAgICAgICAgaWYgKHNjcm9sbEJvZHlSZWYuY3VycmVudCBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBzZXRTY3JvbGxiYXJTaXplKGdldFRhcmdldFNjcm9sbEJhclNpemUoc2Nyb2xsQm9keVJlZi5jdXJyZW50KS53aWR0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZXRTY3JvbGxiYXJTaXplKGdldFRhcmdldFNjcm9sbEJhclNpemUoc2Nyb2xsQm9keUNvbnRhaW5lclJlZi5jdXJyZW50KS53aWR0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbXSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09IElOVEVSTkFMIEhPT0tTID09PT09PT09PT09PT09PT09PVxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICh1c2VJbnRlcm5hbEhvb2tzICYmIGludGVybmFsUmVmcykge1xuICAgICAgICAgICAgaW50ZXJuYWxSZWZzLmJvZHkuY3VycmVudCA9IHNjcm9sbEJvZHlSZWYuY3VycmVudDtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vID09ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PVxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vID09PT09PT09PT09PT09PT09PT0gUmVuZGVyOiBGdW5jID09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCByZW5kZXJGaXhlZEhlYWRlclRhYmxlID0gUmVhY3QudXNlQ2FsbGJhY2soZml4ZWRIb2xkZXJQYXNzUHJvcHMgPT4gKF9qc3hzKF9GcmFnbWVudCwgeyBjaGlsZHJlbjogW19qc3goSGVhZGVyLCBPYmplY3QuYXNzaWduKHt9LCBmaXhlZEhvbGRlclBhc3NQcm9wcykpLCBmaXhGb290ZXIgPT09ICd0b3AnICYmIF9qc3goRm9vdGVyLCBPYmplY3QuYXNzaWduKHt9LCBmaXhlZEhvbGRlclBhc3NQcm9wcywgeyBjaGlsZHJlbjogc3VtbWFyeU5vZGUgfSkpXSB9KSksIFtmaXhGb290ZXIsIHN1bW1hcnlOb2RlXSk7XG4gICAgY29uc3QgcmVuZGVyRml4ZWRGb290ZXJUYWJsZSA9IFJlYWN0LnVzZUNhbGxiYWNrKGZpeGVkSG9sZGVyUGFzc1Byb3BzID0+IF9qc3goRm9vdGVyLCBPYmplY3QuYXNzaWduKHt9LCBmaXhlZEhvbGRlclBhc3NQcm9wcywgeyBjaGlsZHJlbjogc3VtbWFyeU5vZGUgfSkpLCBbc3VtbWFyeU5vZGVdKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09IFJlbmRlcjogTm9kZSA9PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgVGFibGVDb21wb25lbnQgPSBnZXRDb21wb25lbnQoWyd0YWJsZSddLCAndGFibGUnKTtcbiAgICAvLyBUYWJsZSBsYXlvdXRcbiAgICBjb25zdCBtZXJnZWRUYWJsZUxheW91dCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBpZiAodGFibGVMYXlvdXQpIHtcbiAgICAgICAgICAgIHJldHVybiB0YWJsZUxheW91dDtcbiAgICAgICAgfVxuICAgICAgICAvLyBXaGVuIHNjcm9sbC54IGlzIG1heC1jb250ZW50LCBubyBuZWVkIHRvIGZpeCB0YWJsZSBsYXlvdXRcbiAgICAgICAgLy8gaXQncyB3aWR0aCBzaG91bGQgc3RyZXRjaCBvdXQgdG8gZml0IGNvbnRlbnRcbiAgICAgICAgaWYgKGZpeENvbHVtbikge1xuICAgICAgICAgICAgcmV0dXJuIG1lcmdlZFNjcm9sbFggPT09ICdtYXgtY29udGVudCcgPyAnYXV0bycgOiAnZml4ZWQnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaXhIZWFkZXIgfHwgaXNTdGlja3kgfHwgZmxhdHRlbkNvbHVtbnMuc29tZSgoeyBlbGxpcHNpcyB9KSA9PiBlbGxpcHNpcykpIHtcbiAgICAgICAgICAgIHJldHVybiAnZml4ZWQnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnYXV0byc7XG4gICAgfSwgW2ZpeEhlYWRlciwgZml4Q29sdW1uLCBmbGF0dGVuQ29sdW1ucywgdGFibGVMYXlvdXQsIGlzU3RpY2t5XSk7XG4gICAgbGV0IGdyb3VwVGFibGVOb2RlO1xuICAgIC8vIEhlYWRlciBwcm9wc1xuICAgIGNvbnN0IGhlYWRlclByb3BzID0ge1xuICAgICAgICBjb2xXaWR0aHMsXG4gICAgICAgIGNvbHVtQ291bnQ6IGZsYXR0ZW5Db2x1bW5zLmxlbmd0aCxcbiAgICAgICAgc3RpY2t5T2Zmc2V0cyxcbiAgICAgICAgb25IZWFkZXJSb3csXG4gICAgICAgIGZpeEhlYWRlcixcbiAgICAgICAgc2Nyb2xsLFxuICAgIH07XG4gICAgLy8gRW1wdHlcbiAgICBjb25zdCBlbXB0eU5vZGUgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKGhhc0RhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgZW1wdHlUZXh0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gZW1wdHlUZXh0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVtcHR5VGV4dDtcbiAgICB9LCBbaGFzRGF0YSwgZW1wdHlUZXh0XSk7XG4gICAgLy8gQm9keVxuICAgIGNvbnN0IGJvZHlUYWJsZSA9IChfanN4KEJvZHksIHsgZGF0YTogbWVyZ2VkRGF0YSwgbWVhc3VyZUNvbHVtbldpZHRoOiBmaXhIZWFkZXIgfHwgaG9yaXpvblNjcm9sbCB8fCBpc1N0aWNreSB9KSk7XG4gICAgY29uc3QgYm9keUNvbEdyb3VwID0gKF9qc3goQ29sR3JvdXAsIHsgY29sV2lkdGhzOiBmbGF0dGVuQ29sdW1ucy5tYXAoKHsgd2lkdGggfSkgPT4gd2lkdGgpLCBjb2x1bW5zOiBmbGF0dGVuQ29sdW1ucyB9KSk7XG4gICAgY29uc3QgY2FwdGlvbkVsZW1lbnQgPSBjYXB0aW9uICE9PSBudWxsICYmIGNhcHRpb24gIT09IHVuZGVmaW5lZCA/IChfanN4KFwiY2FwdGlvblwiLCB7IGNsYXNzTmFtZTogYCR7cHJlZml4Q2xzfS1jYXB0aW9uYCwgY2hpbGRyZW46IGNhcHRpb24gfSkpIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IGRhdGFQcm9wcyA9IHBpY2tBdHRycyhwcm9wcywgeyBkYXRhOiB0cnVlIH0pO1xuICAgIGNvbnN0IGFyaWFQcm9wcyA9IHBpY2tBdHRycyhwcm9wcywgeyBhcmlhOiB0cnVlIH0pO1xuICAgIGlmIChmaXhIZWFkZXIgfHwgaXNTdGlja3kpIHtcbiAgICAgICAgLy8gPj4+Pj4+IEZpeGVkIEhlYWRlclxuICAgICAgICBsZXQgYm9keUNvbnRlbnQ7XG4gICAgICAgIGlmICh0eXBlb2YgY3VzdG9taXplU2Nyb2xsQm9keSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgYm9keUNvbnRlbnQgPSBjdXN0b21pemVTY3JvbGxCb2R5KG1lcmdlZERhdGEsIHtcbiAgICAgICAgICAgICAgICBzY3JvbGxiYXJTaXplLFxuICAgICAgICAgICAgICAgIHJlZjogc2Nyb2xsQm9keVJlZixcbiAgICAgICAgICAgICAgICBvblNjcm9sbDogb25JbnRlcm5hbFNjcm9sbCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaGVhZGVyUHJvcHMuY29sV2lkdGhzID0gZmxhdHRlbkNvbHVtbnMubWFwKCh7IHdpZHRoIH0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29sV2lkdGggPSBpbmRleCA9PT0gZmxhdHRlbkNvbHVtbnMubGVuZ3RoIC0gMSA/IHdpZHRoIC0gc2Nyb2xsYmFyU2l6ZSA6IHdpZHRoO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY29sV2lkdGggPT09ICdudW1iZXInICYmICFOdW1iZXIuaXNOYU4oY29sV2lkdGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb2xXaWR0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgd2FybmluZyhwcm9wcy5jb2x1bW5zLmxlbmd0aCA9PT0gMCwgJ1doZW4gdXNlIGBjb21wb25lbnRzLmJvZHlgIHdpdGggcmVuZGVyIHByb3BzLiBFYWNoIGNvbHVtbiBzaG91bGQgaGF2ZSBhIGZpeGVkIGB3aWR0aGAgdmFsdWUuJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBib2R5Q29udGVudCA9IChfanN4KFwiZGl2XCIsIHsgc3R5bGU6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc2Nyb2xsWFN0eWxlKSwgc2Nyb2xsWVN0eWxlKSwgb25TY3JvbGw6IG9uQm9keVNjcm9sbCwgcmVmOiBzY3JvbGxCb2R5UmVmLCBjbGFzc05hbWU6IGAke3ByZWZpeENsc30tYm9keWAsIGNoaWxkcmVuOiBfanN4cyhUYWJsZUNvbXBvbmVudCwgT2JqZWN0LmFzc2lnbih7IHN0eWxlOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHNjcm9sbFRhYmxlU3R5bGUpLCB7IHRhYmxlTGF5b3V0OiBtZXJnZWRUYWJsZUxheW91dCB9KSB9LCBhcmlhUHJvcHMsIHsgY2hpbGRyZW46IFtjYXB0aW9uRWxlbWVudCwgYm9keUNvbEdyb3VwLCBib2R5VGFibGUsICFmaXhGb290ZXIgJiYgc3VtbWFyeU5vZGUgJiYgKF9qc3goRm9vdGVyLCB7IHN0aWNreU9mZnNldHM6IHN0aWNreU9mZnNldHMsIGZsYXR0ZW5Db2x1bW5zOiBmbGF0dGVuQ29sdW1ucywgY2hpbGRyZW46IHN1bW1hcnlOb2RlIH0pKV0gfSkpIH0pKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBGaXhlZCBob2xkZXIgc2hhcmUgdGhlIHByb3BzXG4gICAgICAgIGNvbnN0IGZpeGVkSG9sZGVyUHJvcHMgPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7IG5vRGF0YTogIW1lcmdlZERhdGEubGVuZ3RoLCBtYXhDb250ZW50U2Nyb2xsOiBob3Jpem9uU2Nyb2xsICYmIG1lcmdlZFNjcm9sbFggPT09ICdtYXgtY29udGVudCcgfSwgaGVhZGVyUHJvcHMpLCBjb2x1bW5Db250ZXh0KSwgeyBkaXJlY3Rpb24sXG4gICAgICAgICAgICBzdGlja3lDbGFzc05hbWUsIHNjcm9sbFg6IG1lcmdlZFNjcm9sbFgsIHRhYmxlTGF5b3V0OiBtZXJnZWRUYWJsZUxheW91dCwgb25TY3JvbGw6IG9uSW50ZXJuYWxTY3JvbGwgfSk7XG4gICAgICAgIGdyb3VwVGFibGVOb2RlID0gKF9qc3hzKF9GcmFnbWVudCwgeyBjaGlsZHJlbjogW3Nob3dIZWFkZXIgIT09IGZhbHNlICYmIChfanN4KEZpeGVkSG9sZGVyLCBPYmplY3QuYXNzaWduKHt9LCBmaXhlZEhvbGRlclByb3BzLCB7IHN0aWNreVRvcE9mZnNldDogb2Zmc2V0SGVhZGVyLCBjbGFzc05hbWU6IGAke3ByZWZpeENsc30taGVhZGVyYCwgcmVmOiBzY3JvbGxIZWFkZXJSZWYsIGNvbEdyb3VwOiBib2R5Q29sR3JvdXAsIGNoaWxkcmVuOiByZW5kZXJGaXhlZEhlYWRlclRhYmxlIH0pKSksIGJvZHlDb250ZW50LCBmaXhGb290ZXIgJiYgZml4Rm9vdGVyICE9PSAndG9wJyAmJiAoX2pzeChGaXhlZEhvbGRlciwgT2JqZWN0LmFzc2lnbih7fSwgZml4ZWRIb2xkZXJQcm9wcywgeyBzdGlja3lCb3R0b21PZmZzZXQ6IG9mZnNldFN1bW1hcnksIGNsYXNzTmFtZTogYCR7cHJlZml4Q2xzfS1zdW1tYXJ5YCwgcmVmOiBzY3JvbGxTdW1tYXJ5UmVmLCBjb2xHcm91cDogYm9keUNvbEdyb3VwLCBjaGlsZHJlbjogcmVuZGVyRml4ZWRGb290ZXJUYWJsZSB9KSkpLCBpc1N0aWNreSAmJiBzY3JvbGxCb2R5UmVmLmN1cnJlbnQgJiYgc2Nyb2xsQm9keVJlZi5jdXJyZW50IGluc3RhbmNlb2YgRWxlbWVudCAmJiAoX2pzeChTdGlja3lTY3JvbGxCYXIsIHsgcmVmOiBzdGlja3lSZWYsIG9mZnNldFNjcm9sbDogb2Zmc2V0U2Nyb2xsLCBzY3JvbGxCb2R5UmVmOiBzY3JvbGxCb2R5UmVmLCBvblNjcm9sbDogb25JbnRlcm5hbFNjcm9sbCwgY29udGFpbmVyOiBjb250YWluZXIsIGRpcmVjdGlvbjogZGlyZWN0aW9uIH0pKV0gfSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgLy8gPj4+Pj4+IFVuaXF1ZSB0YWJsZVxuICAgICAgICBncm91cFRhYmxlTm9kZSA9IChfanN4KFwiZGl2XCIsIHsgc3R5bGU6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzY3JvbGxYU3R5bGUpLCBzY3JvbGxZU3R5bGUpLCBzdHlsZXMgPT09IG51bGwgfHwgc3R5bGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHlsZXMuY29udGVudCksIGNsYXNzTmFtZTogY2xzeChgJHtwcmVmaXhDbHN9LWNvbnRlbnRgLCBjbGFzc05hbWVzID09PSBudWxsIHx8IGNsYXNzTmFtZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNsYXNzTmFtZXMuY29udGVudCksIG9uU2Nyb2xsOiBvbkludGVybmFsU2Nyb2xsLCByZWY6IHNjcm9sbEJvZHlSZWYsIGNoaWxkcmVuOiBfanN4cyhUYWJsZUNvbXBvbmVudCwgT2JqZWN0LmFzc2lnbih7IHN0eWxlOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHNjcm9sbFRhYmxlU3R5bGUpLCB7IHRhYmxlTGF5b3V0OiBtZXJnZWRUYWJsZUxheW91dCB9KSB9LCBhcmlhUHJvcHMsIHsgY2hpbGRyZW46IFtjYXB0aW9uRWxlbWVudCwgYm9keUNvbEdyb3VwLCBzaG93SGVhZGVyICE9PSBmYWxzZSAmJiBfanN4KEhlYWRlciwgT2JqZWN0LmFzc2lnbih7fSwgaGVhZGVyUHJvcHMsIGNvbHVtbkNvbnRleHQpKSwgYm9keVRhYmxlLCBzdW1tYXJ5Tm9kZSAmJiAoX2pzeChGb290ZXIsIHsgc3RpY2t5T2Zmc2V0czogc3RpY2t5T2Zmc2V0cywgZmxhdHRlbkNvbHVtbnM6IGZsYXR0ZW5Db2x1bW5zLCBjaGlsZHJlbjogc3VtbWFyeU5vZGUgfSkpXSB9KSkgfSkpO1xuICAgIH1cbiAgICBjb25zdCB0YWJsZVN0eWxlID0gT2JqZWN0LmFzc2lnbih7fSwgc3R5bGUpO1xuICAgIC8vIEFkZCBjc3MgdmFyIGZvciBzdGlja3kgaGVhZGVyIGB6SW5kZXhgIGNhbGNcbiAgICBpZiAoaXNTdGlja3kpIHtcbiAgICAgICAgdGFibGVTdHlsZVsnLS1jb2x1bW5zLWNvdW50J10gPSBmbGF0dGVuQ29sdW1ucy5sZW5ndGg7XG4gICAgfVxuICAgIGxldCBmdWxsVGFibGUgPSAoX2pzeHMoXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7IGNsYXNzTmFtZTogY2xzeChwcmVmaXhDbHMsIGNsYXNzTmFtZSwge1xuICAgICAgICAgICAgW2Ake3ByZWZpeENsc30tcnRsYF06IGRpcmVjdGlvbiA9PT0gJ3J0bCcsXG4gICAgICAgICAgICBbYCR7cHJlZml4Q2xzfS1maXgtc3RhcnQtc2hhZG93YF06IGhvcml6b25TY3JvbGwsXG4gICAgICAgICAgICBbYCR7cHJlZml4Q2xzfS1maXgtZW5kLXNoYWRvd2BdOiBob3Jpem9uU2Nyb2xsLFxuICAgICAgICAgICAgW2Ake3ByZWZpeENsc30tZml4LXN0YXJ0LXNoYWRvdy1zaG93YF06IGhvcml6b25TY3JvbGwgJiYgc2hhZG93U3RhcnQsXG4gICAgICAgICAgICBbYCR7cHJlZml4Q2xzfS1maXgtZW5kLXNoYWRvdy1zaG93YF06IGhvcml6b25TY3JvbGwgJiYgc2hhZG93RW5kLFxuICAgICAgICAgICAgW2Ake3ByZWZpeENsc30tbGF5b3V0LWZpeGVkYF06IHRhYmxlTGF5b3V0ID09PSAnZml4ZWQnLFxuICAgICAgICAgICAgW2Ake3ByZWZpeENsc30tZml4ZWQtaGVhZGVyYF06IGZpeEhlYWRlcixcbiAgICAgICAgICAgIC8qKiBObyB1c2VkIGJ1dCBmb3IgY29tcGF0aWJsZSAqL1xuICAgICAgICAgICAgW2Ake3ByZWZpeENsc30tZml4ZWQtY29sdW1uYF06IGZpeENvbHVtbixcbiAgICAgICAgICAgIFtgJHtwcmVmaXhDbHN9LXNjcm9sbC1ob3Jpem9udGFsYF06IGhvcml6b25TY3JvbGwsXG4gICAgICAgICAgICBbYCR7cHJlZml4Q2xzfS1oYXMtZml4LXN0YXJ0YF06IChfYSA9IGZsYXR0ZW5Db2x1bW5zWzBdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZml4ZWQsXG4gICAgICAgICAgICBbYCR7cHJlZml4Q2xzfS1oYXMtZml4LWVuZGBdOiAoKF9iID0gZmxhdHRlbkNvbHVtbnNbZmxhdHRlbkNvbHVtbnMubGVuZ3RoIC0gMV0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5maXhlZCkgPT09ICdlbmQnLFxuICAgICAgICB9KSwgc3R5bGU6IHRhYmxlU3R5bGUsIGlkOiBpZCwgcmVmOiBmdWxsVGFibGVSZWYgfSwgZGF0YVByb3BzLCB7IGNoaWxkcmVuOiBbdGl0bGUgJiYgKF9qc3goUGFuZWwsIHsgY2xhc3NOYW1lOiBjbHN4KGAke3ByZWZpeENsc30tdGl0bGVgLCBjbGFzc05hbWVzID09PSBudWxsIHx8IGNsYXNzTmFtZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNsYXNzTmFtZXMudGl0bGUpLCBzdHlsZTogc3R5bGVzID09PSBudWxsIHx8IHN0eWxlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGVzLnRpdGxlLCBjaGlsZHJlbjogdGl0bGUobWVyZ2VkRGF0YSkgfSkpLCBfanN4KFwiZGl2XCIsIHsgcmVmOiBzY3JvbGxCb2R5Q29udGFpbmVyUmVmLCBjbGFzc05hbWU6IGNsc3goYCR7cHJlZml4Q2xzfS1jb250YWluZXJgLCBjbGFzc05hbWVzID09PSBudWxsIHx8IGNsYXNzTmFtZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNsYXNzTmFtZXMuc2VjdGlvbiksIHN0eWxlOiBzdHlsZXMgPT09IG51bGwgfHwgc3R5bGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHlsZXMuc2VjdGlvbiwgY2hpbGRyZW46IGdyb3VwVGFibGVOb2RlIH0pLCBmb290ZXIgJiYgKF9qc3goUGFuZWwsIHsgY2xhc3NOYW1lOiBjbHN4KGAke3ByZWZpeENsc30tZm9vdGVyYCwgY2xhc3NOYW1lcyA9PT0gbnVsbCB8fCBjbGFzc05hbWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjbGFzc05hbWVzLmZvb3RlciksIHN0eWxlOiBzdHlsZXMgPT09IG51bGwgfHwgc3R5bGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHlsZXMuZm9vdGVyLCBjaGlsZHJlbjogZm9vdGVyKG1lcmdlZERhdGEpIH0pKV0gfSkpKTtcbiAgICBpZiAoaG9yaXpvblNjcm9sbCkge1xuICAgICAgICBmdWxsVGFibGUgPSAoX2pzeChSZXNpemVPYnNlcnZlciwgeyBvblJlc2l6ZTogKHsgb2Zmc2V0V2lkdGggfSkgPT4gb25GdWxsVGFibGVSZXNpemUob2Zmc2V0V2lkdGgpLCBjaGlsZHJlbjogZnVsbFRhYmxlIH0pKTtcbiAgICB9XG4gICAgY29uc3QgZml4ZWRJbmZvTGlzdCA9IHVzZUZpeGVkSW5mbyhmbGF0dGVuQ29sdW1ucywgc3RpY2t5T2Zmc2V0cyk7XG4gICAgY29uc3QgVGFibGVDb250ZXh0VmFsdWUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgICAgIC8vIFNjcm9sbFxuICAgICAgICBzY3JvbGxYOiBtZXJnZWRTY3JvbGxYLFxuICAgICAgICBzY3JvbGxJbmZvLFxuICAgICAgICBjbGFzc05hbWVzLFxuICAgICAgICBzdHlsZXMsXG4gICAgICAgIC8vIFRhYmxlXG4gICAgICAgIHByZWZpeENscyxcbiAgICAgICAgZ2V0Q29tcG9uZW50LFxuICAgICAgICBzY3JvbGxiYXJTaXplLFxuICAgICAgICBkaXJlY3Rpb24sXG4gICAgICAgIGZpeGVkSW5mb0xpc3QsXG4gICAgICAgIGlzU3RpY2t5LFxuICAgICAgICBjb21wb25lbnRXaWR0aCxcbiAgICAgICAgZml4SGVhZGVyLFxuICAgICAgICBmaXhDb2x1bW4sXG4gICAgICAgIGhvcml6b25TY3JvbGwsXG4gICAgICAgIC8vIEJvZHlcbiAgICAgICAgdGFibGVMYXlvdXQ6IG1lcmdlZFRhYmxlTGF5b3V0LFxuICAgICAgICByb3dDbGFzc05hbWUsXG4gICAgICAgIGV4cGFuZGVkUm93Q2xhc3NOYW1lOiBleHBhbmRhYmxlQ29uZmlnLmV4cGFuZGVkUm93Q2xhc3NOYW1lLFxuICAgICAgICBleHBhbmRJY29uOiBtZXJnZWRFeHBhbmRJY29uLFxuICAgICAgICBleHBhbmRhYmxlVHlwZSxcbiAgICAgICAgZXhwYW5kUm93QnlDbGljazogZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRSb3dCeUNsaWNrLFxuICAgICAgICBleHBhbmRlZFJvd1JlbmRlcjogZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRlZFJvd1JlbmRlcixcbiAgICAgICAgZXhwYW5kZWRSb3dPZmZzZXQ6IGV4cGFuZGFibGVDb25maWcuZXhwYW5kZWRSb3dPZmZzZXQsXG4gICAgICAgIG9uVHJpZ2dlckV4cGFuZCxcbiAgICAgICAgZXhwYW5kSWNvbkNvbHVtbkluZGV4OiBleHBhbmRhYmxlQ29uZmlnLmV4cGFuZEljb25Db2x1bW5JbmRleCxcbiAgICAgICAgaW5kZW50U2l6ZTogZXhwYW5kYWJsZUNvbmZpZy5pbmRlbnRTaXplLFxuICAgICAgICBhbGxDb2x1bW5zRml4ZWRMZWZ0OiBmbGF0dGVuQ29sdW1ucy5ldmVyeShjb2wgPT4gY29sLmZpeGVkID09PSAnc3RhcnQnKSxcbiAgICAgICAgZW1wdHlOb2RlLFxuICAgICAgICAvLyBDb2x1bW5cbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgZmxhdHRlbkNvbHVtbnMsXG4gICAgICAgIG9uQ29sdW1uUmVzaXplLFxuICAgICAgICBjb2xXaWR0aHMsXG4gICAgICAgIC8vIFJvd1xuICAgICAgICBob3ZlclN0YXJ0Um93OiBzdGFydFJvdyxcbiAgICAgICAgaG92ZXJFbmRSb3c6IGVuZFJvdyxcbiAgICAgICAgb25Ib3ZlcixcbiAgICAgICAgcm93RXhwYW5kYWJsZTogZXhwYW5kYWJsZUNvbmZpZy5yb3dFeHBhbmRhYmxlLFxuICAgICAgICBvblJvdyxcbiAgICAgICAgZ2V0Um93S2V5LFxuICAgICAgICBleHBhbmRlZEtleXM6IG1lcmdlZEV4cGFuZGVkS2V5cyxcbiAgICAgICAgY2hpbGRyZW5Db2x1bW5OYW1lOiBtZXJnZWRDaGlsZHJlbkNvbHVtbk5hbWUsXG4gICAgICAgIHJvd0hvdmVyYWJsZSxcbiAgICAgICAgLy8gTWVhc3VyZSBSb3dcbiAgICAgICAgbWVhc3VyZVJvd1JlbmRlcixcbiAgICB9KSwgW1xuICAgICAgICAvLyBTY3JvbGxcbiAgICAgICAgbWVyZ2VkU2Nyb2xsWCxcbiAgICAgICAgc2Nyb2xsSW5mbyxcbiAgICAgICAgY2xhc3NOYW1lcyxcbiAgICAgICAgc3R5bGVzLFxuICAgICAgICAvLyBUYWJsZVxuICAgICAgICBwcmVmaXhDbHMsXG4gICAgICAgIGdldENvbXBvbmVudCxcbiAgICAgICAgc2Nyb2xsYmFyU2l6ZSxcbiAgICAgICAgZGlyZWN0aW9uLFxuICAgICAgICBmaXhlZEluZm9MaXN0LFxuICAgICAgICBpc1N0aWNreSxcbiAgICAgICAgY29tcG9uZW50V2lkdGgsXG4gICAgICAgIGZpeEhlYWRlcixcbiAgICAgICAgZml4Q29sdW1uLFxuICAgICAgICBob3Jpem9uU2Nyb2xsLFxuICAgICAgICAvLyBCb2R5XG4gICAgICAgIG1lcmdlZFRhYmxlTGF5b3V0LFxuICAgICAgICByb3dDbGFzc05hbWUsXG4gICAgICAgIGV4cGFuZGFibGVDb25maWcuZXhwYW5kZWRSb3dDbGFzc05hbWUsXG4gICAgICAgIG1lcmdlZEV4cGFuZEljb24sXG4gICAgICAgIGV4cGFuZGFibGVUeXBlLFxuICAgICAgICBleHBhbmRhYmxlQ29uZmlnLmV4cGFuZFJvd0J5Q2xpY2ssXG4gICAgICAgIGV4cGFuZGFibGVDb25maWcuZXhwYW5kZWRSb3dSZW5kZXIsXG4gICAgICAgIGV4cGFuZGFibGVDb25maWcuZXhwYW5kZWRSb3dPZmZzZXQsXG4gICAgICAgIG9uVHJpZ2dlckV4cGFuZCxcbiAgICAgICAgZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRJY29uQ29sdW1uSW5kZXgsXG4gICAgICAgIGV4cGFuZGFibGVDb25maWcuaW5kZW50U2l6ZSxcbiAgICAgICAgZW1wdHlOb2RlLFxuICAgICAgICAvLyBDb2x1bW5cbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgZmxhdHRlbkNvbHVtbnMsXG4gICAgICAgIG9uQ29sdW1uUmVzaXplLFxuICAgICAgICBjb2xXaWR0aHMsXG4gICAgICAgIC8vIFJvd1xuICAgICAgICBzdGFydFJvdyxcbiAgICAgICAgZW5kUm93LFxuICAgICAgICBvbkhvdmVyLFxuICAgICAgICBleHBhbmRhYmxlQ29uZmlnLnJvd0V4cGFuZGFibGUsXG4gICAgICAgIG9uUm93LFxuICAgICAgICBnZXRSb3dLZXksXG4gICAgICAgIG1lcmdlZEV4cGFuZGVkS2V5cyxcbiAgICAgICAgbWVyZ2VkQ2hpbGRyZW5Db2x1bW5OYW1lLFxuICAgICAgICByb3dIb3ZlcmFibGUsXG4gICAgICAgIG1lYXN1cmVSb3dSZW5kZXIsXG4gICAgXSk7XG4gICAgcmV0dXJuIF9qc3goVGFibGVDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBUYWJsZUNvbnRleHRWYWx1ZSwgY2hpbGRyZW46IGZ1bGxUYWJsZSB9KTtcbn07XG5jb25zdCBSZWZUYWJsZSA9IFJlYWN0LmZvcndhcmRSZWYoVGFibGUpO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBSZWZUYWJsZS5kaXNwbGF5TmFtZSA9ICdUYWJsZSc7XG59XG5leHBvcnQgY29uc3QgZ2VuVGFibGUgPSAoc2hvdWxkVHJpZ2dlclJlbmRlcikgPT4ge1xuICAgIHJldHVybiBtYWtlSW1tdXRhYmxlKFJlZlRhYmxlLCBzaG91bGRUcmlnZ2VyUmVuZGVyKTtcbn07XG5jb25zdCBJbW11dGFibGVUYWJsZSA9IGdlblRhYmxlKCk7XG5JbW11dGFibGVUYWJsZS5FWFBBTkRfQ09MVU1OID0gRVhQQU5EX0NPTFVNTjtcbkltbXV0YWJsZVRhYmxlLklOVEVSTkFMX0hPT0tTID0gSU5URVJOQUxfSE9PS1M7XG5JbW11dGFibGVUYWJsZS5Db2x1bW4gPSBDb2x1bW47XG5JbW11dGFibGVUYWJsZS5Db2x1bW5Hcm91cCA9IENvbHVtbkdyb3VwO1xuSW1tdXRhYmxlVGFibGUuU3VtbWFyeSA9IEZvb3RlckNvbXBvbmVudHM7XG5leHBvcnQgZGVmYXVsdCBJbW11dGFibGVUYWJsZTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
686
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvaW50ZXJuYWwva2VybmVsL1RhYmxlLmpzIiwiY29tcG9uZW50cy9UYWJsZS9pbnRlcm5hbC9zcmMvY29tcG9uZW50cy9UYWJsZS9pbnRlcm5hbC9rZXJuZWwvVGFibGUudHN4Il0sIm5hbWVzIjpbImpzeCIsIl9qc3giLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImpzeHMiLCJfanN4cyIsImNsc3giLCJSZXNpemVPYnNlcnZlciIsImdldFRhcmdldFNjcm9sbEJhclNpemUiLCJ1c2VFdmVudCIsInBpY2tBdHRycyIsImdldFZhbHVlIiwid2FybmluZyIsIlJlYWN0IiwiQm9keSIsIkNvbEdyb3VwIiwiRVhQQU5EX0NPTFVNTiIsIklOVEVSTkFMX0hPT0tTIiwiVGFibGVDb250ZXh0IiwibWFrZUltbXV0YWJsZSIsIkZpeGVkSG9sZGVyIiwiRm9vdGVyIiwiRm9vdGVyQ29tcG9uZW50cyIsIlN1bW1hcnkiLCJIZWFkZXIiLCJ1c2VDb2x1bW5zIiwidXNlRXhwYW5kIiwidXNlRml4ZWRJbmZvIiwidXNlVGltZW91dExvY2siLCJ1c2VIb3ZlciIsInVzZVN0aWNreSIsInVzZVN0aWNreU9mZnNldHMiLCJQYW5lbCIsIlN0aWNreVNjcm9sbEJhciIsIkNvbHVtbiIsIkNvbHVtbkdyb3VwIiwiZ2V0Q29sdW1uc0tleSIsInZhbGlkYXRlVmFsdWUiLCJ2YWxpZE51bWJlclZhbHVlIiwiZ2V0RE9NIiwiaXNFcXVhbCIsInVzZUxheW91dEVmZmVjdCIsIkRFRkFVTFRfUFJFRklYIiwiRU1QVFlfREFUQSIsIkVNUFRZX1NDUk9MTF9UQVJHRVQiLCJkZWZhdWx0RW1wdHkiLCJUYWJsZSIsInRhYmxlUHJvcHMiLCJyZWYiLCJfY2xzeCIsIl9hIiwiX2IiLCJwcm9wcyIsIk9iamVjdCIsImFzc2lnbiIsInJvd0tleSIsInByZWZpeENscyIsImVtcHR5VGV4dCIsImNsYXNzTmFtZSIsInJvd0NsYXNzTmFtZSIsInN0eWxlIiwiY2xhc3NOYW1lcyIsInN0eWxlcyIsImRhdGEiLCJzY3JvbGwiLCJ0YWJsZUxheW91dCIsImRpcmVjdGlvbiIsInRpdGxlIiwiZm9vdGVyIiwic3VtbWFyeSIsImNhcHRpb24iLCJpZCIsInNob3dIZWFkZXIiLCJjb21wb25lbnRzIiwib25Sb3ciLCJvbkhlYWRlclJvdyIsIm1lYXN1cmVSb3dSZW5kZXIiLCJvblNjcm9sbCIsImludGVybmFsSG9va3MiLCJ0cmFuc2Zvcm1Db2x1bW5zIiwiaW50ZXJuYWxSZWZzIiwidGFpbG9yIiwiZ2V0Q29udGFpbmVyV2lkdGgiLCJzdGlja3kiLCJfcHJvcHMkcm93SG92ZXJhYmxlIiwicm93SG92ZXJhYmxlIiwibWVyZ2VkRGF0YSIsImhhc0RhdGEiLCJsZW5ndGgiLCJ1c2VJbnRlcm5hbEhvb2tzIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiZm9yRWFjaCIsIm5hbWUiLCJ1bmRlZmluZWQiLCJjb25jYXQiLCJnZXRDb21wb25lbnQiLCJ1c2VDYWxsYmFjayIsInBhdGgiLCJkZWZhdWx0Q29tcG9uZW50IiwiZ2V0Um93S2V5IiwidXNlTWVtbyIsInJlY29yZCIsImtleSIsImN1c3RvbWl6ZVNjcm9sbEJvZHkiLCJfdXNlSG92ZXIiLCJfdXNlSG92ZXIyIiwiX3NsaWNlZFRvQXJyYXkiLCJzdGFydFJvdyIsImVuZFJvdyIsIm9uSG92ZXIiLCJfdXNlRXhwYW5kIiwiX3VzZUV4cGFuZDIiLCJleHBhbmRhYmxlQ29uZmlnIiwiZXhwYW5kYWJsZVR5cGUiLCJtZXJnZWRFeHBhbmRlZEtleXMiLCJtZXJnZWRFeHBhbmRJY29uIiwibWVyZ2VkQ2hpbGRyZW5Db2x1bW5OYW1lIiwib25UcmlnZ2VyRXhwYW5kIiwic2Nyb2xsWCIsIngiLCJfUmVhY3QkdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl9SZWFjdCR1c2VTdGF0ZTIiLCJjb21wb25lbnRXaWR0aCIsInNldENvbXBvbmVudFdpZHRoIiwiX3VzZUNvbHVtbnMiLCJleHBhbmRhYmxlIiwiZXhwYW5kZWRSb3dSZW5kZXIiLCJjb2x1bW5UaXRsZSIsImV4cGFuZGVkS2V5cyIsImV4cGFuZEljb24iLCJleHBhbmRJY29uQ29sdW1uSW5kZXgiLCJzY3JvbGxXaWR0aCIsImNsaWVudFdpZHRoIiwiX3VzZUNvbHVtbnMyIiwiY29sdW1ucyIsImZsYXR0ZW5Db2x1bW5zIiwiZmxhdHRlblNjcm9sbFgiLCJtZXJnZWRTY3JvbGxYIiwiY29sdW1uQ29udGV4dCIsImZ1bGxUYWJsZVJlZiIsInVzZVJlZiIsInNjcm9sbEhlYWRlclJlZiIsInNjcm9sbEJvZHlSZWYiLCJzY3JvbGxCb2R5Q29udGFpbmVyUmVmIiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsIm5hdGl2ZUVsZW1lbnQiLCJjdXJyZW50Iiwic2Nyb2xsVG8iLCJjb25maWciLCJIVE1MRWxlbWVudCIsImluZGV4IiwidG9wIiwib2Zmc2V0IiwibWVyZ2VkS2V5IiwidGFyZ2V0RWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJzY3JvbGxJbnRvVmlldyIsImVsZW1lbnRUb3AiLCJvZmZzZXRUb3AiLCJzY3JvbGxTdW1tYXJ5UmVmIiwiX1JlYWN0JHVzZVN0YXRlMyIsIl9SZWFjdCR1c2VTdGF0ZTQiLCJzaGFkb3dTdGFydCIsInNldFNoYWRvd1N0YXJ0IiwiX1JlYWN0JHVzZVN0YXRlNSIsIl9SZWFjdCR1c2VTdGF0ZTYiLCJzaGFkb3dFbmQiLCJzZXRTaGFkb3dFbmQiLCJfUmVhY3QkdXNlU3RhdGU3IiwiTWFwIiwiX1JlYWN0JHVzZVN0YXRlOCIsImNvbHNXaWR0aHMiLCJ1cGRhdGVDb2xzV2lkdGhzIiwiY29sc0tleXMiLCJwdXJlQ29sV2lkdGhzIiwibWFwIiwiY29sdW1uS2V5IiwiZ2V0IiwiY29sV2lkdGhzIiwiam9pbiIsInN0aWNreU9mZnNldHMiLCJmaXhIZWFkZXIiLCJ5IiwiaG9yaXpvblNjcm9sbCIsIkJvb2xlYW4iLCJmaXhlZCIsImZpeENvbHVtbiIsInNvbWUiLCJfcmVmIiwic3RpY2t5UmVmIiwiX3VzZVN0aWNreSIsImlzU3RpY2t5Iiwib2Zmc2V0SGVhZGVyIiwib2Zmc2V0U3VtbWFyeSIsIm9mZnNldFNjcm9sbCIsInN0aWNreUNsYXNzTmFtZSIsImNvbnRhaW5lciIsInN1bW1hcnlOb2RlIiwiZml4Rm9vdGVyIiwiaXNWYWxpZEVsZW1lbnQiLCJ0eXBlIiwic2Nyb2xsWFN0eWxlIiwic2Nyb2xsWVN0eWxlIiwic2Nyb2xsVGFibGVTdHlsZSIsIm92ZXJmbG93WSIsIm1heEhlaWdodCIsIm92ZXJmbG93WCIsIndpZHRoIiwibWluV2lkdGgiLCJvbkNvbHVtblJlc2l6ZSIsIndpZHRocyIsIm5ld1dpZHRocyIsInNldCIsIl91c2VUaW1lb3V0TG9jayIsIl91c2VUaW1lb3V0TG9jazIiLCJzZXRTY3JvbGxUYXJnZXQiLCJnZXRTY3JvbGxUYXJnZXQiLCJmb3JjZVNjcm9sbCIsInNjcm9sbExlZnQiLCJ0YXJnZXQiLCJzZXRUaW1lb3V0IiwiX1JlYWN0JHVzZVN0YXRlOSIsIl9SZWFjdCR1c2VTdGF0ZTEwIiwic2Nyb2xsSW5mbyIsInNldFNjcm9sbEluZm8iLCJvbkludGVybmFsU2Nyb2xsIiwiX3JlZjIiLCJjdXJyZW50VGFyZ2V0IiwibWVyZ2VkU2Nyb2xsTGVmdCIsImNvbXBhcmVUYXJnZXQiLCJzZXRTY3JvbGxMZWZ0IiwibWVhc3VyZVRhcmdldCIsImFic1Njcm9sbFN0YXJ0IiwiTWF0aCIsImFicyIsIm9yaSIsIm5leHRTY3JvbGxJbmZvIiwib25Cb2R5U2Nyb2xsIiwiZSIsInRyaWdnZXJPblNjcm9sbCIsIm9uRnVsbFRhYmxlUmVzaXplIiwib2Zmc2V0V2lkdGgiLCJfYyIsImNoZWNrU2Nyb2xsQmFyVmlzaWJsZSIsIm1lcmdlZFdpZHRoIiwibW91bnRlZCIsInVzZUVmZmVjdCIsIl9SZWFjdCR1c2VTdGF0ZTExIiwiX1JlYWN0JHVzZVN0YXRlMTIiLCJzY3JvbGxiYXJTaXplIiwic2V0U2Nyb2xsYmFyU2l6ZSIsIkVsZW1lbnQiLCJib2R5IiwicmVuZGVyRml4ZWRIZWFkZXJUYWJsZSIsImZpeGVkSG9sZGVyUGFzc1Byb3BzIiwiY2hpbGRyZW4iLCJyZW5kZXJGaXhlZEZvb3RlclRhYmxlIiwiVGFibGVDb21wb25lbnQiLCJtZXJnZWRUYWJsZUxheW91dCIsIl9yZWYzIiwiZWxsaXBzaXMiLCJncm91cFRhYmxlTm9kZSIsImhlYWRlclByb3BzIiwiY29sdW1Db3VudCIsImVtcHR5Tm9kZSIsImJvZHlUYWJsZSIsIm1lYXN1cmVDb2x1bW5XaWR0aCIsImJvZHlDb2xHcm91cCIsIl9yZWY0IiwiY2FwdGlvbkVsZW1lbnQiLCJkYXRhUHJvcHMiLCJhcmlhUHJvcHMiLCJhcmlhIiwiYm9keUNvbnRlbnQiLCJfcmVmNSIsImNvbFdpZHRoIiwiTnVtYmVyIiwiaXNOYU4iLCJmaXhlZEhvbGRlclByb3BzIiwibm9EYXRhIiwibWF4Q29udGVudFNjcm9sbCIsInN0aWNreVRvcE9mZnNldCIsImNvbEdyb3VwIiwic3RpY2t5Qm90dG9tT2Zmc2V0IiwiY29udGVudCIsInRhYmxlU3R5bGUiLCJmdWxsVGFibGUiLCJfZGVmaW5lUHJvcGVydHkiLCJzZWN0aW9uIiwib25SZXNpemUiLCJfcmVmNiIsImZpeGVkSW5mb0xpc3QiLCJUYWJsZUNvbnRleHRWYWx1ZSIsImV4cGFuZGVkUm93Q2xhc3NOYW1lIiwiZXhwYW5kUm93QnlDbGljayIsImV4cGFuZGVkUm93T2Zmc2V0IiwiaW5kZW50U2l6ZSIsImFsbENvbHVtbnNGaXhlZExlZnQiLCJldmVyeSIsImNvbCIsImhvdmVyU3RhcnRSb3ciLCJob3ZlckVuZFJvdyIsInJvd0V4cGFuZGFibGUiLCJjaGlsZHJlbkNvbHVtbk5hbWUiLCJQcm92aWRlciIsInZhbHVlIiwiUmVmVGFibGUiLCJmb3J3YXJkUmVmIiwiZGlzcGxheU5hbWUiLCJnZW5UYWJsZSIsInNob3VsZFRyaWdnZXJSZW5kZXIiLCJJbW11dGFibGVUYWJsZSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxTQUFTQSxHQUFHLElBQUlDLElBQUksRUFBRUMsUUFBUSxJQUFJQyxTQUFTLEVBQUVDLElBQUksSUFBSUMsS0FBSyxRQUFRLG1CQUFtQjtBQzRCckYsU0FBU0MsSUFB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UUFBUSxDQUFDRSxXQUFXLEdBQUcsT0FBTztBQUNoQztBQUVBLE9BQU8sSUFBTUMsUUFBUSxHQUFHLFNBQVhBLFFBQVFBLENBQUlDLG1CQUF1RCxFQUFJO0VBQ2xGLE9BQU90UyxhQUFhLENBQUNrUyxRQUFRLEVBQUVJLG1CQUFtQixDQUFDO0FBQ3JELENBQUM7QUFFRCxJQUFNQyxjQUFjLEdBQUdGLFFBQVEsQ0FBQSxDQUFFO0FBVWhDRSxjQUFxQyxDQUFDMVMsYUFBYSxHQUFHQSxhQUFhO0FBRW5FMFMsY0FBcUMsQ0FBQ3pTLGNBQWMsR0FBR0EsY0FBYztBQUVyRXlTLGNBQXFDLENBQUN4UixNQUFNLEdBQUdBLE1BQU07QUFFckR3UixjQUFxQyxDQUFDdlIsV0FBVyxHQUFHQSxXQUFXO0FBRS9EdVIsY0FBcUMsQ0FBQ25TLE9BQU8sR0FBR0QsZ0JBQWdCO0FBRWpFLGVBQWVvUyxjQUFvQyIsImZpbGUiOiJjb21wb25lbnRzL1RhYmxlL2ludGVybmFsL2tlcm5lbC9UYWJsZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBGcmFnbWVudCBhcyBfRnJhZ21lbnQsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGNsc3ggfSBmcm9tICdjbHN4JztcbmltcG9ydCBSZXNpemVPYnNlcnZlciBmcm9tICcuLi8uLi8uLi9SZXNpemVPYnNlcnZlcic7XG5pbXBvcnQgeyBnZXRUYXJnZXRTY3JvbGxCYXJTaXplIH0gZnJvbSAnLi91dGlscy9nZXRTY3JvbGxCYXJTaXplJztcbmltcG9ydCB1c2VFdmVudCBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHBpY2tBdHRycyBmcm9tICcuL3V0aWxzL3BpY2tBdHRycyc7XG5pbXBvcnQgZ2V0VmFsdWUgZnJvbSAnLi91dGlscy9nZXQnO1xuaW1wb3J0IHdhcm5pbmcgZnJvbSAnLi91dGlscy93YXJuaW5nJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCb2R5IGZyb20gJy4vQm9keSc7XG5pbXBvcnQgQ29sR3JvdXAgZnJvbSAnLi9Db2xHcm91cCc7XG5pbXBvcnQgeyBFWFBBTkRfQ09MVU1OLCBJTlRFUk5BTF9IT09LUyB9IGZyb20gJy4vY29uc3RhbnQnO1xuaW1wb3J0IFRhYmxlQ29udGV4dCwgeyBtYWtlSW1tdXRhYmxlIH0gZnJvbSAnLi9jb250ZXh0L1RhYmxlQ29udGV4dCc7XG5pbXBvcnQgRml4ZWRIb2xkZXIgZnJvbSAnLi9GaXhlZEhvbGRlcic7XG5pbXBvcnQgRm9vdGVyLCB7IEZvb3RlckNvbXBvbmVudHMgfSBmcm9tICcuL0Zvb3Rlcic7XG5pbXBvcnQgU3VtbWFyeSBmcm9tICcuL0Zvb3Rlci9TdW1tYXJ5JztcbmltcG9ydCBIZWFkZXIgZnJvbSAnLi9IZWFkZXIvSGVhZGVyJztcbmltcG9ydCB1c2VDb2x1bW5zIGZyb20gJy4vaG9va3MvdXNlQ29sdW1ucyc7XG5pbXBvcnQgdXNlRXhwYW5kIGZyb20gJy4vaG9va3MvdXNlRXhwYW5kJztcbmltcG9ydCB1c2VGaXhlZEluZm8gZnJvbSAnLi9ob29rcy91c2VGaXhlZEluZm8nO1xuaW1wb3J0IHsgdXNlVGltZW91dExvY2sgfSBmcm9tICcuL2hvb2tzL3VzZUZyYW1lJztcbmltcG9ydCB1c2VIb3ZlciBmcm9tICcuL2hvb2tzL3VzZUhvdmVyJztcbmltcG9ydCB1c2VTdGlja3kgZnJvbSAnLi9ob29rcy91c2VTdGlja3knO1xuaW1wb3J0IHVzZVN0aWNreU9mZnNldHMgZnJvbSAnLi9ob29rcy91c2VTdGlja3lPZmZzZXRzJztcbmltcG9ydCBQYW5lbCBmcm9tICcuL1BhbmVsJztcbmltcG9ydCBTdGlja3lTY3JvbGxCYXIgZnJvbSAnLi9zdGlja3lTY3JvbGxCYXInO1xuaW1wb3J0IENvbHVtbiBmcm9tICcuL3N1Z2FyL0NvbHVtbic7XG5pbXBvcnQgQ29sdW1uR3JvdXAgZnJvbSAnLi9zdWdhci9Db2x1bW5Hcm91cCc7XG5pbXBvcnQgeyBnZXRDb2x1bW5zS2V5LCB2YWxpZGF0ZVZhbHVlLCB2YWxpZE51bWJlclZhbHVlIH0gZnJvbSAnLi91dGlscy92YWx1ZVV0aWwnO1xuaW1wb3J0IHsgZ2V0RE9NIH0gZnJvbSAnLi4vLi4vLi4vUmVzaXplT2JzZXJ2ZXIvdXRpbHMvcmVhY3RVdGlsJztcbmltcG9ydCBpc0VxdWFsIGZyb20gJy4vc2VsZWN0b3ItY29udGV4dC9pc0VxdWFsJztcbmltcG9ydCB1c2VMYXlvdXRFZmZlY3QgZnJvbSAnQDFtb25leS9ob29rcy91c2VMYXlvdXRFZmZlY3QnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUFJFRklYID0gJ29tLXRhYmxlJztcbi8vIFVzZWQgZm9yIGNvbmRpdGlvbnMgY2FjaGVcbmNvbnN0IEVNUFRZX0RBVEEgPSBbXTtcbi8vIFVzZWQgZm9yIGN1c3RvbWl6ZSBzY3JvbGxcbmNvbnN0IEVNUFRZX1NDUk9MTF9UQVJHRVQgPSB7fTtcbmZ1bmN0aW9uIGRlZmF1bHRFbXB0eSgpIHtcbiAgICByZXR1cm4gJ05vIERhdGEnO1xufVxuY29uc3QgVGFibGUgPSAodGFibGVQcm9wcywgcmVmKSA9PiB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBjb25zdCBwcm9wcyA9IE9iamVjdC5hc3NpZ24oeyByb3dLZXk6ICdrZXknLCBwcmVmaXhDbHM6IERFRkFVTFRfUFJFRklYLCBlbXB0eVRleHQ6IGRlZmF1bHRFbXB0eSB9LCB0YWJsZVByb3BzKTtcbiAgICBjb25zdCB7IHByZWZpeENscywgY2xhc3NOYW1lLCByb3dDbGFzc05hbWUsIHN0eWxlLCBjbGFzc05hbWVzLCBzdHlsZXMsIGRhdGEsIHJvd0tleSwgc2Nyb2xsLCB0YWJsZUxheW91dCwgZGlyZWN0aW9uLCBcbiAgICAvLyBBZGRpdGlvbmFsIFBhcnRcbiAgICB0aXRsZSwgZm9vdGVyLCBzdW1tYXJ5LCBjYXB0aW9uLCBcbiAgICAvLyBDdXN0b21pemVcbiAgICBpZCwgc2hvd0hlYWRlciwgY29tcG9uZW50cywgZW1wdHlUZXh0LCBvblJvdywgb25IZWFkZXJSb3csIFxuICAgIC8vIE1lYXN1cmUgUm93XG4gICAgbWVhc3VyZVJvd1JlbmRlciwgXG4gICAgLy8gRXZlbnRzXG4gICAgb25TY3JvbGwsIFxuICAgIC8vIEludGVybmFsXG4gICAgaW50ZXJuYWxIb29rcywgdHJhbnNmb3JtQ29sdW1ucywgaW50ZXJuYWxSZWZzLCB0YWlsb3IsIGdldENvbnRhaW5lcldpZHRoLCBzdGlja3ksIHJvd0hvdmVyYWJsZSA9IHRydWUsIH0gPSBwcm9wcztcbiAgICBjb25zdCBtZXJnZWREYXRhID0gZGF0YSB8fCBFTVBUWV9EQVRBO1xuICAgIGNvbnN0IGhhc0RhdGEgPSAhIW1lcmdlZERhdGEubGVuZ3RoO1xuICAgIGNvbnN0IHVzZUludGVybmFsSG9va3MgPSBpbnRlcm5hbEhvb2tzID09PSBJTlRFUk5BTF9IT09LUztcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT0gV2FybmluZyA9PT09PT09PT09PT09PT09PT09PT09XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgW1xuICAgICAgICAgICAgJ29uUm93Q2xpY2snLFxuICAgICAgICAgICAgJ29uUm93RG91YmxlQ2xpY2snLFxuICAgICAgICAgICAgJ29uUm93Q29udGV4dE1lbnUnLFxuICAgICAgICAgICAgJ29uUm93TW91c2VFbnRlcicsXG4gICAgICAgICAgICAnb25Sb3dNb3VzZUxlYXZlJyxcbiAgICAgICAgXS5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgICAgICAgd2FybmluZyhwcm9wc1tuYW1lXSA9PT0gdW5kZWZpbmVkLCBgXFxgJHtuYW1lfVxcYCBpcyByZW1vdmVkLCBwbGVhc2UgdXNlIFxcYG9uUm93XFxgIGluc3RlYWQuYCk7XG4gICAgICAgIH0pO1xuICAgICAgICB3YXJuaW5nKCEoJ2dldEJvZHlXcmFwcGVyJyBpbiBwcm9wcyksICdgZ2V0Qm9keVdyYXBwZXJgIGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgY3VzdG9tIGBjb21wb25lbnRzYCBpbnN0ZWFkLicpO1xuICAgIH1cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PSBDdXN0b21pemUgPT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgZ2V0Q29tcG9uZW50ID0gUmVhY3QudXNlQ2FsbGJhY2soKHBhdGgsIGRlZmF1bHRDb21wb25lbnQpID0+IGdldFZhbHVlKGNvbXBvbmVudHMsIHBhdGgpIHx8IGRlZmF1bHRDb21wb25lbnQsIFtjb21wb25lbnRzXSk7XG4gICAgY29uc3QgZ2V0Um93S2V5ID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2Ygcm93S2V5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gcm93S2V5O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAocmVjb3JkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSByZWNvcmQgJiYgcmVjb3JkW3Jvd0tleV07XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgICAgIHdhcm5pbmcoa2V5ICE9PSB1bmRlZmluZWQsICdFYWNoIHJlY29yZCBpbiB0YWJsZSBzaG91bGQgaGF2ZSBhIHVuaXF1ZSBga2V5YCBwcm9wLCBvciBzZXQgYHJvd0tleWAgdG8gYW4gdW5pcXVlIHByaW1hcnkga2V5LicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgfTtcbiAgICB9LCBbcm93S2V5XSk7XG4gICAgY29uc3QgY3VzdG9taXplU2Nyb2xsQm9keSA9IGdldENvbXBvbmVudChbJ2JvZHknXSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PSBIb3ZlciA9PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IFtzdGFydFJvdywgZW5kUm93LCBvbkhvdmVyXSA9IHVzZUhvdmVyKCk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PSBFeHBhbmQgPT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IFtleHBhbmRhYmxlQ29uZmlnLCBleHBhbmRhYmxlVHlwZSwgbWVyZ2VkRXhwYW5kZWRLZXlzLCBtZXJnZWRFeHBhbmRJY29uLCBtZXJnZWRDaGlsZHJlbkNvbHVtbk5hbWUsIG9uVHJpZ2dlckV4cGFuZCxdID0gdXNlRXhwYW5kKHByb3BzLCBtZXJnZWREYXRhLCBnZXRSb3dLZXkpO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT0gQ29sdW1uID09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBzY3JvbGxYID0gc2Nyb2xsID09PSBudWxsIHx8IHNjcm9sbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2Nyb2xsLng7XG4gICAgY29uc3QgW2NvbXBvbmVudFdpZHRoLCBzZXRDb21wb25lbnRXaWR0aF0gPSBSZWFjdC51c2VTdGF0ZSgwKTtcbiAgICBjb25zdCBbY29sdW1ucywgZmxhdHRlbkNvbHVtbnMsIGZsYXR0ZW5TY3JvbGxYXSA9IHVzZUNvbHVtbnMoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHByb3BzKSwgZXhwYW5kYWJsZUNvbmZpZyksIHsgZXhwYW5kYWJsZTogISFleHBhbmRhYmxlQ29uZmlnLmV4cGFuZGVkUm93UmVuZGVyLCBjb2x1bW5UaXRsZTogZXhwYW5kYWJsZUNvbmZpZy5jb2x1bW5UaXRsZSwgZXhwYW5kZWRLZXlzOiBtZXJnZWRFeHBhbmRlZEtleXMsIGdldFJvd0tleSxcbiAgICAgICAgb25UcmlnZ2VyRXhwYW5kLCBleHBhbmRJY29uOiBtZXJnZWRFeHBhbmRJY29uLCBleHBhbmRJY29uQ29sdW1uSW5kZXg6IGV4cGFuZGFibGVDb25maWcuZXhwYW5kSWNvbkNvbHVtbkluZGV4LCBkaXJlY3Rpb24sIHNjcm9sbFdpZHRoOiB1c2VJbnRlcm5hbEhvb2tzICYmIHRhaWxvciAmJiB0eXBlb2Ygc2Nyb2xsWCA9PT0gJ251bWJlcicgPyBzY3JvbGxYIDogbnVsbCwgY2xpZW50V2lkdGg6IGNvbXBvbmVudFdpZHRoIH0pLCB1c2VJbnRlcm5hbEhvb2tzID8gdHJhbnNmb3JtQ29sdW1ucyA6IG51bGwpO1xuICAgIGNvbnN0IG1lcmdlZFNjcm9sbFggPSBmbGF0dGVuU2Nyb2xsWCAhPT0gbnVsbCAmJiBmbGF0dGVuU2Nyb2xsWCAhPT0gdm9pZCAwID8gZmxhdHRlblNjcm9sbFggOiBzY3JvbGxYO1xuICAgIGNvbnN0IGNvbHVtbkNvbnRleHQgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7IGNvbHVtbnMsIGZsYXR0ZW5Db2x1bW5zIH0pLCBbY29sdW1ucywgZmxhdHRlbkNvbHVtbnNdKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PSBSZWZzID09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgZnVsbFRhYmxlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHNjcm9sbEhlYWRlclJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCBzY3JvbGxCb2R5UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHNjcm9sbEJvZHlDb250YWluZXJSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgUmVhY3QudXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hdGl2ZUVsZW1lbnQ6IGZ1bGxUYWJsZVJlZi5jdXJyZW50LFxuICAgICAgICAgICAgc2Nyb2xsVG86IGNvbmZpZyA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsQm9keVJlZi5jdXJyZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTmF0aXZlIHNjcm9sbFxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGluZGV4LCB0b3AsIGtleSwgb2Zmc2V0IH0gPSBjb25maWc7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWxpZE51bWJlclZhbHVlKHRvcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluIHRvcCBtb2RlLCBvZmZzZXQgaXMgaWdub3JlZFxuICAgICAgICAgICAgICAgICAgICAgICAgKF9hID0gc2Nyb2xsQm9keVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc2Nyb2xsVG8oeyB0b3AgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXJnZWRLZXkgPSBrZXkgIT09IG51bGwgJiYga2V5ICE9PSB2b2lkIDAgPyBrZXkgOiBnZXRSb3dLZXkobWVyZ2VkRGF0YVtpbmRleF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IHNjcm9sbEJvZHlSZWYuY3VycmVudC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1yb3cta2V5PVwiJHttZXJnZWRLZXl9XCJdYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0RWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghb2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vIG9mZnNldCwgdXNlIHNjcm9sbEludG9WaWV3IGZvciBkZWZhdWx0IGJlaGF2aW9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdpdGggb2Zmc2V0LCB1c2UgZWxlbWVudCdzIG9mZnNldFRvcCArIG9mZnNldFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50VG9wID0gdGFyZ2V0RWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbEJvZHlSZWYuY3VycmVudC5zY3JvbGxUbyh7IHRvcDogZWxlbWVudFRvcCArIG9mZnNldCB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKF9iID0gc2Nyb2xsQm9keVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Iuc2Nyb2xsVG8pIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gUGFzcyB0byBwcm94eVxuICAgICAgICAgICAgICAgICAgICBzY3JvbGxCb2R5UmVmLmN1cnJlbnQuc2Nyb2xsVG8oY29uZmlnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH0pO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT0gU2Nyb2xsID09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBzY3JvbGxTdW1tYXJ5UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IFtzaGFkb3dTdGFydCwgc2V0U2hhZG93U3RhcnRdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtzaGFkb3dFbmQsIHNldFNoYWRvd0VuZF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2NvbHNXaWR0aHMsIHVwZGF0ZUNvbHNXaWR0aHNdID0gUmVhY3QudXNlU3RhdGUobmV3IE1hcCgpKTtcbiAgICAvLyBDb252ZXJ0IG1hcCB0byBudW1iZXIgd2lkdGhcbiAgICBjb25zdCBjb2xzS2V5cyA9IGdldENvbHVtbnNLZXkoZmxhdHRlbkNvbHVtbnMpO1xuICAgIGNvbnN0IHB1cmVDb2xXaWR0aHMgPSBjb2xzS2V5cy5tYXAoY29sdW1uS2V5ID0+IGNvbHNXaWR0aHMuZ2V0KGNvbHVtbktleSkpO1xuICAgIGNvbnN0IGNvbFdpZHRocyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gcHVyZUNvbFdpZHRocywgW3B1cmVDb2xXaWR0aHMuam9pbignXycpXSk7XG4gICAgY29uc3Qgc3RpY2t5T2Zmc2V0cyA9IHVzZVN0aWNreU9mZnNldHMoY29sV2lkdGhzLCBmbGF0dGVuQ29sdW1ucyk7XG4gICAgY29uc3QgZml4SGVhZGVyID0gc2Nyb2xsICYmIHZhbGlkYXRlVmFsdWUoc2Nyb2xsLnkpO1xuICAgIGNvbnN0IGhvcml6b25TY3JvbGwgPSAoc2Nyb2xsICYmIHZhbGlkYXRlVmFsdWUobWVyZ2VkU2Nyb2xsWCkpIHx8IEJvb2xlYW4oZXhwYW5kYWJsZUNvbmZpZy5maXhlZCk7XG4gICAgY29uc3QgZml4Q29sdW1uID0gaG9yaXpvblNjcm9sbCAmJiBmbGF0dGVuQ29sdW1ucy5zb21lKCh7IGZpeGVkIH0pID0+IGZpeGVkKTtcbiAgICAvLyBTdGlja3lcbiAgICBjb25zdCBzdGlja3lSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3QgeyBpc1N0aWNreSwgb2Zmc2V0SGVhZGVyLCBvZmZzZXRTdW1tYXJ5LCBvZmZzZXRTY3JvbGwsIHN0aWNreUNsYXNzTmFtZSwgY29udGFpbmVyIH0gPSB1c2VTdGlja3koc3RpY2t5LCBwcmVmaXhDbHMpO1xuICAgIC8vIEZvb3RlciAoRml4IGZvb3RlciBtdXN0IGZpeGVkIGhlYWRlcilcbiAgICBjb25zdCBzdW1tYXJ5Tm9kZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gc3VtbWFyeSA9PT0gbnVsbCB8fCBzdW1tYXJ5ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdW1tYXJ5KG1lcmdlZERhdGEpLCBbc3VtbWFyeSwgbWVyZ2VkRGF0YV0pO1xuICAgIGNvbnN0IGZpeEZvb3RlciA9IChmaXhIZWFkZXIgfHwgaXNTdGlja3kpICYmXG4gICAgICAgIFJlYWN0LmlzVmFsaWRFbGVtZW50KHN1bW1hcnlOb2RlKSAmJlxuICAgICAgICBzdW1tYXJ5Tm9kZS50eXBlID09PSBTdW1tYXJ5ICYmXG4gICAgICAgIHN1bW1hcnlOb2RlLnByb3BzLmZpeGVkO1xuICAgIC8vIFNjcm9sbFxuICAgIGxldCBzY3JvbGxYU3R5bGU7XG4gICAgbGV0IHNjcm9sbFlTdHlsZTtcbiAgICBsZXQgc2Nyb2xsVGFibGVTdHlsZTtcbiAgICBpZiAoZml4SGVhZGVyKSB7XG4gICAgICAgIHNjcm9sbFlTdHlsZSA9IHtcbiAgICAgICAgICAgIG92ZXJmbG93WTogaGFzRGF0YSA/ICdzY3JvbGwnIDogJ2F1dG8nLFxuICAgICAgICAgICAgbWF4SGVpZ2h0OiBzY3JvbGwueSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGhvcml6b25TY3JvbGwpIHtcbiAgICAgICAgc2Nyb2xsWFN0eWxlID0geyBvdmVyZmxvd1g6ICdhdXRvJyB9O1xuICAgICAgICAvLyBXaGVuIG5vIHZlcnRpY2FsIHNjcm9sbGJhciwgc2hvdWxkIGhpZGUgaXRcbiAgICAgICAgaWYgKCFmaXhIZWFkZXIpIHtcbiAgICAgICAgICAgIHNjcm9sbFlTdHlsZSA9IHsgb3ZlcmZsb3dZOiAnaGlkZGVuJyB9O1xuICAgICAgICB9XG4gICAgICAgIHNjcm9sbFRhYmxlU3R5bGUgPSB7XG4gICAgICAgICAgICB3aWR0aDogbWVyZ2VkU2Nyb2xsWCA9PT0gdHJ1ZSA/ICdhdXRvJyA6IG1lcmdlZFNjcm9sbFgsXG4gICAgICAgICAgICBtaW5XaWR0aDogJzEwMCUnLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBvbkNvbHVtblJlc2l6ZSA9IFJlYWN0LnVzZUNhbGxiYWNrKChjb2x1bW5LZXksIHdpZHRoKSA9PiB7XG4gICAgICAgIHVwZGF0ZUNvbHNXaWR0aHMod2lkdGhzID0+IHtcbiAgICAgICAgICAgIGlmICh3aWR0aHMuZ2V0KGNvbHVtbktleSkgIT09IHdpZHRoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3V2lkdGhzID0gbmV3IE1hcCh3aWR0aHMpO1xuICAgICAgICAgICAgICAgIG5ld1dpZHRocy5zZXQoY29sdW1uS2V5LCB3aWR0aCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ld1dpZHRocztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB3aWR0aHM7XG4gICAgICAgIH0pO1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCBbc2V0U2Nyb2xsVGFyZ2V0LCBnZXRTY3JvbGxUYXJnZXRdID0gdXNlVGltZW91dExvY2sobnVsbCk7XG4gICAgZnVuY3Rpb24gZm9yY2VTY3JvbGwoc2Nyb2xsTGVmdCwgdGFyZ2V0KSB7XG4gICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB0YXJnZXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRhcmdldChzY3JvbGxMZWZ0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0YXJnZXQuc2Nyb2xsTGVmdCAhPT0gc2Nyb2xsTGVmdCkge1xuICAgICAgICAgICAgdGFyZ2V0LnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0O1xuICAgICAgICAgICAgLy8gRGVsYXkgdG8gZm9yY2Ugc2Nyb2xsIHBvc2l0aW9uIGlmIG5vdCBzeW5jXG4gICAgICAgICAgICBpZiAodGFyZ2V0LnNjcm9sbExlZnQgIT09IHNjcm9sbExlZnQpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0O1xuICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IFtzY3JvbGxJbmZvLCBzZXRTY3JvbGxJbmZvXSA9IFJlYWN0LnVzZVN0YXRlKFswLCAwXSk7XG4gICAgY29uc3Qgb25JbnRlcm5hbFNjcm9sbCA9IHVzZUV2ZW50KCh7IGN1cnJlbnRUYXJnZXQsIHNjcm9sbExlZnQgfSkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IG1lcmdlZFNjcm9sbExlZnQgPSB0eXBlb2Ygc2Nyb2xsTGVmdCA9PT0gJ251bWJlcicgPyBzY3JvbGxMZWZ0IDogY3VycmVudFRhcmdldC5zY3JvbGxMZWZ0O1xuICAgICAgICBjb25zdCBjb21wYXJlVGFyZ2V0ID0gY3VycmVudFRhcmdldCB8fCBFTVBUWV9TQ1JPTExfVEFSR0VUO1xuICAgICAgICBpZiAoIWdldFNjcm9sbFRhcmdldCgpIHx8IGdldFNjcm9sbFRhcmdldCgpID09PSBjb21wYXJlVGFyZ2V0KSB7XG4gICAgICAgICAgICBzZXRTY3JvbGxUYXJnZXQoY29tcGFyZVRhcmdldCk7XG4gICAgICAgICAgICBmb3JjZVNjcm9sbChtZXJnZWRTY3JvbGxMZWZ0LCBzY3JvbGxIZWFkZXJSZWYuY3VycmVudCk7XG4gICAgICAgICAgICBmb3JjZVNjcm9sbChtZXJnZWRTY3JvbGxMZWZ0LCBzY3JvbGxCb2R5UmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgZm9yY2VTY3JvbGwobWVyZ2VkU2Nyb2xsTGVmdCwgc2Nyb2xsU3VtbWFyeVJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgIGZvcmNlU2Nyb2xsKG1lcmdlZFNjcm9sbExlZnQsIChfYSA9IHN0aWNreVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc2V0U2Nyb2xsTGVmdCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWVhc3VyZVRhcmdldCA9IGN1cnJlbnRUYXJnZXQgfHwgc2Nyb2xsSGVhZGVyUmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmIChtZWFzdXJlVGFyZ2V0KSB7XG4gICAgICAgICAgICBjb25zdCBzY3JvbGxXaWR0aCA9IFxuICAgICAgICAgICAgLy8gU2hvdWxkIHVzZSBtZXJnZWRTY3JvbGxYIGluIHZpcnR1YWwgdGFibGUodXNlSW50ZXJuYWxIb29rcyAmJiB0YWlsb3IgPT09IHRydWUpXG4gICAgICAgICAgICB1c2VJbnRlcm5hbEhvb2tzICYmIHRhaWxvciAmJiB0eXBlb2YgbWVyZ2VkU2Nyb2xsWCA9PT0gJ251bWJlcidcbiAgICAgICAgICAgICAgICA/IG1lcmdlZFNjcm9sbFhcbiAgICAgICAgICAgICAgICA6IG1lYXN1cmVUYXJnZXQuc2Nyb2xsV2lkdGg7XG4gICAgICAgICAgICBjb25zdCBjbGllbnRXaWR0aCA9IG1lYXN1cmVUYXJnZXQuY2xpZW50V2lkdGg7XG4gICAgICAgICAgICBjb25zdCBhYnNTY3JvbGxTdGFydCA9IE1hdGguYWJzKG1lcmdlZFNjcm9sbExlZnQpO1xuICAgICAgICAgICAgc2V0U2Nyb2xsSW5mbyhvcmkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRTY3JvbGxJbmZvID0gW2Fic1Njcm9sbFN0YXJ0LCBzY3JvbGxXaWR0aCAtIGNsaWVudFdpZHRoXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNFcXVhbChvcmksIG5leHRTY3JvbGxJbmZvKSA/IG9yaSA6IG5leHRTY3JvbGxJbmZvO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBUaGVyZSBpcyBubyBzcGFjZSB0byBzY3JvbGxcbiAgICAgICAgICAgIGlmIChzY3JvbGxXaWR0aCA9PT0gY2xpZW50V2lkdGgpIHtcbiAgICAgICAgICAgICAgICBzZXRTaGFkb3dTdGFydChmYWxzZSk7XG4gICAgICAgICAgICAgICAgc2V0U2hhZG93RW5kKGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRTaGFkb3dTdGFydChhYnNTY3JvbGxTdGFydCA+IDApO1xuICAgICAgICAgICAgc2V0U2hhZG93RW5kKGFic1Njcm9sbFN0YXJ0IDwgc2Nyb2xsV2lkdGggLSBjbGllbnRXaWR0aCAtIDEpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3Qgb25Cb2R5U2Nyb2xsID0gdXNlRXZlbnQoKGUpID0+IHtcbiAgICAgICAgb25JbnRlcm5hbFNjcm9sbChlKTtcbiAgICAgICAgb25TY3JvbGwgPT09IG51bGwgfHwgb25TY3JvbGwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uU2Nyb2xsKGUpO1xuICAgIH0pO1xuICAgIGNvbnN0IHRyaWdnZXJPblNjcm9sbCA9ICgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoaG9yaXpvblNjcm9sbCAmJiBzY3JvbGxCb2R5UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIG9uSW50ZXJuYWxTY3JvbGwoe1xuICAgICAgICAgICAgICAgIGN1cnJlbnRUYXJnZXQ6IGdldERPTShzY3JvbGxCb2R5UmVmLmN1cnJlbnQpLFxuICAgICAgICAgICAgICAgIHNjcm9sbExlZnQ6IChfYSA9IHNjcm9sbEJvZHlSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNjcm9sbExlZnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNldFNoYWRvd1N0YXJ0KGZhbHNlKTtcbiAgICAgICAgICAgIHNldFNoYWRvd0VuZChmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IG9uRnVsbFRhYmxlUmVzaXplID0gKG9mZnNldFdpZHRoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICAoX2EgPSBzdGlja3lSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNoZWNrU2Nyb2xsQmFyVmlzaWJsZSgpO1xuICAgICAgICBsZXQgbWVyZ2VkV2lkdGggPSAoX2MgPSBvZmZzZXRXaWR0aCAhPT0gbnVsbCAmJiBvZmZzZXRXaWR0aCAhPT0gdm9pZCAwID8gb2Zmc2V0V2lkdGggOiAoX2IgPSBmdWxsVGFibGVSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwO1xuICAgICAgICBpZiAodXNlSW50ZXJuYWxIb29rcyAmJiBnZXRDb250YWluZXJXaWR0aCAmJiBmdWxsVGFibGVSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgbWVyZ2VkV2lkdGggPSBnZXRDb250YWluZXJXaWR0aChmdWxsVGFibGVSZWYuY3VycmVudCwgbWVyZ2VkV2lkdGgpIHx8IG1lcmdlZFdpZHRoO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtZXJnZWRXaWR0aCAhPT0gY29tcG9uZW50V2lkdGgpIHtcbiAgICAgICAgICAgIHRyaWdnZXJPblNjcm9sbCgpO1xuICAgICAgICAgICAgc2V0Q29tcG9uZW50V2lkdGgobWVyZ2VkV2lkdGgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoaG9yaXpvblNjcm9sbCkge1xuICAgICAgICAgICAgb25GdWxsVGFibGVSZXNpemUoKTtcbiAgICAgICAgfVxuICAgIH0sIFtob3Jpem9uU2Nyb2xsXSk7XG4gICAgLy8gU3luYyBzY3JvbGwgYmFyIHdoZW4gaW5pdCBvciBgaG9yaXpvblNjcm9sbGAsIGBkYXRhYCBhbmQgYGNvbHVtbnMubGVuZ3RoYCBjaGFuZ2VkXG4gICAgY29uc3QgbW91bnRlZCA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgLy8gb25GdWxsVGFibGVSZXNpemUgd2lsbCBiZSB0cmlnZ2VyIG9uY2Ugd2hlbiBSZXNpemVPYnNlcnZlciBpcyBtb3VudGVkXG4gICAgICAgIC8vIFRoaXMgd2lsbCByZWR1Y2Ugb25lIGR1cGxpY2F0ZWQgdHJpZ2dlck9uU2Nyb2xsIHRpbWVcbiAgICAgICAgaWYgKG1vdW50ZWQuY3VycmVudCkge1xuICAgICAgICAgICAgdHJpZ2dlck9uU2Nyb2xsKCk7XG4gICAgICAgIH1cbiAgICB9LCBbaG9yaXpvblNjcm9sbCwgZGF0YSwgY29sdW1ucy5sZW5ndGhdKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBtb3VudGVkLmN1cnJlbnQgPSB0cnVlO1xuICAgIH0sIFtdKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT0gRWZmZWN0cyA9PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgW3Njcm9sbGJhclNpemUsIHNldFNjcm9sbGJhclNpemVdID0gUmVhY3QudXNlU3RhdGUoMCk7XG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCF0YWlsb3IgfHwgIXVzZUludGVybmFsSG9va3MpIHtcbiAgICAgICAgICAgIGlmIChzY3JvbGxCb2R5UmVmLmN1cnJlbnQgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgc2V0U2Nyb2xsYmFyU2l6ZShnZXRUYXJnZXRTY3JvbGxCYXJTaXplKHNjcm9sbEJvZHlSZWYuY3VycmVudCkud2lkdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2V0U2Nyb2xsYmFyU2l6ZShnZXRUYXJnZXRTY3JvbGxCYXJTaXplKHNjcm9sbEJvZHlDb250YWluZXJSZWYuY3VycmVudCkud2lkdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW10pO1xuICAgIC8vID09PT09PT09PT09PT09PT09PSBJTlRFUk5BTCBIT09LUyA9PT09PT09PT09PT09PT09PT1cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAodXNlSW50ZXJuYWxIb29rcyAmJiBpbnRlcm5hbFJlZnMpIHtcbiAgICAgICAgICAgIGludGVybmFsUmVmcy5ib2R5LmN1cnJlbnQgPSBzY3JvbGxCb2R5UmVmLmN1cnJlbnQ7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyA9PSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT1cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09IFJlbmRlcjogRnVuYyA9PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgcmVuZGVyRml4ZWRIZWFkZXJUYWJsZSA9IFJlYWN0LnVzZUNhbGxiYWNrKGZpeGVkSG9sZGVyUGFzc1Byb3BzID0+IChfanN4cyhfRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtfanN4KEhlYWRlciwgT2JqZWN0LmFzc2lnbih7fSwgZml4ZWRIb2xkZXJQYXNzUHJvcHMpKSwgZml4Rm9vdGVyID09PSAndG9wJyAmJiBfanN4KEZvb3RlciwgT2JqZWN0LmFzc2lnbih7fSwgZml4ZWRIb2xkZXJQYXNzUHJvcHMsIHsgY2hpbGRyZW46IHN1bW1hcnlOb2RlIH0pKV0gfSkpLCBbZml4Rm9vdGVyLCBzdW1tYXJ5Tm9kZV0pO1xuICAgIGNvbnN0IHJlbmRlckZpeGVkRm9vdGVyVGFibGUgPSBSZWFjdC51c2VDYWxsYmFjayhmaXhlZEhvbGRlclBhc3NQcm9wcyA9PiBfanN4KEZvb3RlciwgT2JqZWN0LmFzc2lnbih7fSwgZml4ZWRIb2xkZXJQYXNzUHJvcHMsIHsgY2hpbGRyZW46IHN1bW1hcnlOb2RlIH0pKSwgW3N1bW1hcnlOb2RlXSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PSBSZW5kZXI6IE5vZGUgPT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IFRhYmxlQ29tcG9uZW50ID0gZ2V0Q29tcG9uZW50KFsndGFibGUnXSwgJ3RhYmxlJyk7XG4gICAgLy8gVGFibGUgbGF5b3V0XG4gICAgY29uc3QgbWVyZ2VkVGFibGVMYXlvdXQgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKHRhYmxlTGF5b3V0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGFibGVMYXlvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gV2hlbiBzY3JvbGwueCBpcyBtYXgtY29udGVudCwgbm8gbmVlZCB0byBmaXggdGFibGUgbGF5b3V0XG4gICAgICAgIC8vIGl0J3Mgd2lkdGggc2hvdWxkIHN0cmV0Y2ggb3V0IHRvIGZpdCBjb250ZW50XG4gICAgICAgIGlmIChmaXhDb2x1bW4pIHtcbiAgICAgICAgICAgIHJldHVybiBtZXJnZWRTY3JvbGxYID09PSAnbWF4LWNvbnRlbnQnID8gJ2F1dG8nIDogJ2ZpeGVkJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoZml4SGVhZGVyIHx8IGlzU3RpY2t5IHx8IGZsYXR0ZW5Db2x1bW5zLnNvbWUoKHsgZWxsaXBzaXMgfSkgPT4gZWxsaXBzaXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2ZpeGVkJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ2F1dG8nO1xuICAgIH0sIFtmaXhIZWFkZXIsIGZpeENvbHVtbiwgZmxhdHRlbkNvbHVtbnMsIHRhYmxlTGF5b3V0LCBpc1N0aWNreV0pO1xuICAgIGxldCBncm91cFRhYmxlTm9kZTtcbiAgICAvLyBIZWFkZXIgcHJvcHNcbiAgICBjb25zdCBoZWFkZXJQcm9wcyA9IHtcbiAgICAgICAgY29sV2lkdGhzLFxuICAgICAgICBjb2x1bUNvdW50OiBmbGF0dGVuQ29sdW1ucy5sZW5ndGgsXG4gICAgICAgIHN0aWNreU9mZnNldHMsXG4gICAgICAgIG9uSGVhZGVyUm93LFxuICAgICAgICBmaXhIZWFkZXIsXG4gICAgICAgIHNjcm9sbCxcbiAgICB9O1xuICAgIC8vIEVtcHR5XG4gICAgY29uc3QgZW1wdHlOb2RlID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmIChoYXNEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGVtcHR5VGV4dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIGVtcHR5VGV4dCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbXB0eVRleHQ7XG4gICAgfSwgW2hhc0RhdGEsIGVtcHR5VGV4dF0pO1xuICAgIC8vIEJvZHlcbiAgICBjb25zdCBib2R5VGFibGUgPSAoX2pzeChCb2R5LCB7IGRhdGE6IG1lcmdlZERhdGEsIG1lYXN1cmVDb2x1bW5XaWR0aDogZml4SGVhZGVyIHx8IGhvcml6b25TY3JvbGwgfHwgaXNTdGlja3kgfSkpO1xuICAgIGNvbnN0IGJvZHlDb2xHcm91cCA9IChfanN4KENvbEdyb3VwLCB7IGNvbFdpZHRoczogZmxhdHRlbkNvbHVtbnMubWFwKCh7IHdpZHRoIH0pID0+IHdpZHRoKSwgY29sdW1uczogZmxhdHRlbkNvbHVtbnMgfSkpO1xuICAgIGNvbnN0IGNhcHRpb25FbGVtZW50ID0gY2FwdGlvbiAhPT0gbnVsbCAmJiBjYXB0aW9uICE9PSB1bmRlZmluZWQgPyAoX2pzeChcImNhcHRpb25cIiwgeyBjbGFzc05hbWU6IGAke3ByZWZpeENsc30tY2FwdGlvbmAsIGNoaWxkcmVuOiBjYXB0aW9uIH0pKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBkYXRhUHJvcHMgPSBwaWNrQXR0cnMocHJvcHMsIHsgZGF0YTogdHJ1ZSB9KTtcbiAgICBjb25zdCBhcmlhUHJvcHMgPSBwaWNrQXR0cnMocHJvcHMsIHsgYXJpYTogdHJ1ZSB9KTtcbiAgICBpZiAoZml4SGVhZGVyIHx8IGlzU3RpY2t5KSB7XG4gICAgICAgIC8vID4+Pj4+PiBGaXhlZCBIZWFkZXJcbiAgICAgICAgbGV0IGJvZHlDb250ZW50O1xuICAgICAgICBpZiAodHlwZW9mIGN1c3RvbWl6ZVNjcm9sbEJvZHkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGJvZHlDb250ZW50ID0gY3VzdG9taXplU2Nyb2xsQm9keShtZXJnZWREYXRhLCB7XG4gICAgICAgICAgICAgICAgc2Nyb2xsYmFyU2l6ZSxcbiAgICAgICAgICAgICAgICByZWY6IHNjcm9sbEJvZHlSZWYsXG4gICAgICAgICAgICAgICAgb25TY3JvbGw6IG9uSW50ZXJuYWxTY3JvbGwsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGhlYWRlclByb3BzLmNvbFdpZHRocyA9IGZsYXR0ZW5Db2x1bW5zLm1hcCgoeyB3aWR0aCB9LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbFdpZHRoID0gaW5kZXggPT09IGZsYXR0ZW5Db2x1bW5zLmxlbmd0aCAtIDEgPyB3aWR0aCAtIHNjcm9sbGJhclNpemUgOiB3aWR0aDtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbFdpZHRoID09PSAnbnVtYmVyJyAmJiAhTnVtYmVyLmlzTmFOKGNvbFdpZHRoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29sV2lkdGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHdhcm5pbmcocHJvcHMuY29sdW1ucy5sZW5ndGggPT09IDAsICdXaGVuIHVzZSBgY29tcG9uZW50cy5ib2R5YCB3aXRoIHJlbmRlciBwcm9wcy4gRWFjaCBjb2x1bW4gc2hvdWxkIGhhdmUgYSBmaXhlZCBgd2lkdGhgIHZhbHVlLicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYm9keUNvbnRlbnQgPSAoX2pzeChcImRpdlwiLCB7IHN0eWxlOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHNjcm9sbFhTdHlsZSksIHNjcm9sbFlTdHlsZSksIG9uU2Nyb2xsOiBvbkJvZHlTY3JvbGwsIHJlZjogc2Nyb2xsQm9keVJlZiwgY2xhc3NOYW1lOiBgJHtwcmVmaXhDbHN9LWJvZHlgLCBjaGlsZHJlbjogX2pzeHMoVGFibGVDb21wb25lbnQsIE9iamVjdC5hc3NpZ24oeyBzdHlsZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzY3JvbGxUYWJsZVN0eWxlKSwgeyB0YWJsZUxheW91dDogbWVyZ2VkVGFibGVMYXlvdXQgfSkgfSwgYXJpYVByb3BzLCB7IGNoaWxkcmVuOiBbY2FwdGlvbkVsZW1lbnQsIGJvZHlDb2xHcm91cCwgYm9keVRhYmxlLCAhZml4Rm9vdGVyICYmIHN1bW1hcnlOb2RlICYmIChfanN4KEZvb3RlciwgeyBzdGlja3lPZmZzZXRzOiBzdGlja3lPZmZzZXRzLCBmbGF0dGVuQ29sdW1uczogZmxhdHRlbkNvbHVtbnMsIGNoaWxkcmVuOiBzdW1tYXJ5Tm9kZSB9KSldIH0pKSB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRml4ZWQgaG9sZGVyIHNoYXJlIHRoZSBwcm9wc1xuICAgICAgICBjb25zdCBmaXhlZEhvbGRlclByb3BzID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oeyBub0RhdGE6ICFtZXJnZWREYXRhLmxlbmd0aCwgbWF4Q29udGVudFNjcm9sbDogaG9yaXpvblNjcm9sbCAmJiBtZXJnZWRTY3JvbGxYID09PSAnbWF4LWNvbnRlbnQnIH0sIGhlYWRlclByb3BzKSwgY29sdW1uQ29udGV4dCksIHsgZGlyZWN0aW9uLFxuICAgICAgICAgICAgc3RpY2t5Q2xhc3NOYW1lLCBzY3JvbGxYOiBtZXJnZWRTY3JvbGxYLCB0YWJsZUxheW91dDogbWVyZ2VkVGFibGVMYXlvdXQsIG9uU2Nyb2xsOiBvbkludGVybmFsU2Nyb2xsIH0pO1xuICAgICAgICBncm91cFRhYmxlTm9kZSA9IChfanN4cyhfRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtzaG93SGVhZGVyICE9PSBmYWxzZSAmJiAoX2pzeChGaXhlZEhvbGRlciwgT2JqZWN0LmFzc2lnbih7fSwgZml4ZWRIb2xkZXJQcm9wcywgeyBzdGlja3lUb3BPZmZzZXQ6IG9mZnNldEhlYWRlciwgY2xhc3NOYW1lOiBgJHtwcmVmaXhDbHN9LWhlYWRlcmAsIHJlZjogc2Nyb2xsSGVhZGVyUmVmLCBjb2xHcm91cDogYm9keUNvbEdyb3VwLCBjaGlsZHJlbjogcmVuZGVyRml4ZWRIZWFkZXJUYWJsZSB9KSkpLCBib2R5Q29udGVudCwgZml4Rm9vdGVyICYmIGZpeEZvb3RlciAhPT0gJ3RvcCcgJiYgKF9qc3goRml4ZWRIb2xkZXIsIE9iamVjdC5hc3NpZ24oe30sIGZpeGVkSG9sZGVyUHJvcHMsIHsgc3RpY2t5Qm90dG9tT2Zmc2V0OiBvZmZzZXRTdW1tYXJ5LCBjbGFzc05hbWU6IGAke3ByZWZpeENsc30tc3VtbWFyeWAsIHJlZjogc2Nyb2xsU3VtbWFyeVJlZiwgY29sR3JvdXA6IGJvZHlDb2xHcm91cCwgY2hpbGRyZW46IHJlbmRlckZpeGVkRm9vdGVyVGFibGUgfSkpKSwgaXNTdGlja3kgJiYgc2Nyb2xsQm9keVJlZi5jdXJyZW50ICYmIHNjcm9sbEJvZHlSZWYuY3VycmVudCBpbnN0YW5jZW9mIEVsZW1lbnQgJiYgKF9qc3goU3RpY2t5U2Nyb2xsQmFyLCB7IHJlZjogc3RpY2t5UmVmLCBvZmZzZXRTY3JvbGw6IG9mZnNldFNjcm9sbCwgc2Nyb2xsQm9keVJlZjogc2Nyb2xsQm9keVJlZiwgb25TY3JvbGw6IG9uSW50ZXJuYWxTY3JvbGwsIGNvbnRhaW5lcjogY29udGFpbmVyLCBkaXJlY3Rpb246IGRpcmVjdGlvbiB9KSldIH0pKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vID4+Pj4+PiBVbmlxdWUgdGFibGVcbiAgICAgICAgZ3JvdXBUYWJsZU5vZGUgPSAoX2pzeChcImRpdlwiLCB7IHN0eWxlOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc2Nyb2xsWFN0eWxlKSwgc2Nyb2xsWVN0eWxlKSwgc3R5bGVzID09PSBudWxsIHx8IHN0eWxlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGVzLmNvbnRlbnQpLCBjbGFzc05hbWU6IGNsc3goYCR7cHJlZml4Q2xzfS1jb250ZW50YCwgY2xhc3NOYW1lcyA9PT0gbnVsbCB8fCBjbGFzc05hbWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjbGFzc05hbWVzLmNvbnRlbnQpLCBvblNjcm9sbDogb25JbnRlcm5hbFNjcm9sbCwgcmVmOiBzY3JvbGxCb2R5UmVmLCBjaGlsZHJlbjogX2pzeHMoVGFibGVDb21wb25lbnQsIE9iamVjdC5hc3NpZ24oeyBzdHlsZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzY3JvbGxUYWJsZVN0eWxlKSwgeyB0YWJsZUxheW91dDogbWVyZ2VkVGFibGVMYXlvdXQgfSkgfSwgYXJpYVByb3BzLCB7IGNoaWxkcmVuOiBbY2FwdGlvbkVsZW1lbnQsIGJvZHlDb2xHcm91cCwgc2hvd0hlYWRlciAhPT0gZmFsc2UgJiYgX2pzeChIZWFkZXIsIE9iamVjdC5hc3NpZ24oe30sIGhlYWRlclByb3BzLCBjb2x1bW5Db250ZXh0KSksIGJvZHlUYWJsZSwgc3VtbWFyeU5vZGUgJiYgKF9qc3goRm9vdGVyLCB7IHN0aWNreU9mZnNldHM6IHN0aWNreU9mZnNldHMsIGZsYXR0ZW5Db2x1bW5zOiBmbGF0dGVuQ29sdW1ucywgY2hpbGRyZW46IHN1bW1hcnlOb2RlIH0pKV0gfSkpIH0pKTtcbiAgICB9XG4gICAgY29uc3QgdGFibGVTdHlsZSA9IE9iamVjdC5hc3NpZ24oe30sIHN0eWxlKTtcbiAgICAvLyBBZGQgY3NzIHZhciBmb3Igc3RpY2t5IGhlYWRlciBgekluZGV4YCBjYWxjXG4gICAgaWYgKGlzU3RpY2t5KSB7XG4gICAgICAgIHRhYmxlU3R5bGVbJy0tY29sdW1ucy1jb3VudCddID0gZmxhdHRlbkNvbHVtbnMubGVuZ3RoO1xuICAgIH1cbiAgICBsZXQgZnVsbFRhYmxlID0gKF9qc3hzKFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oeyBjbGFzc05hbWU6IGNsc3gocHJlZml4Q2xzLCBjbGFzc05hbWUsIHtcbiAgICAgICAgICAgIFtgJHtwcmVmaXhDbHN9LXJ0bGBdOiBkaXJlY3Rpb24gPT09ICdydGwnLFxuICAgICAgICAgICAgW2Ake3ByZWZpeENsc30tZml4LXN0YXJ0LXNoYWRvd2BdOiBob3Jpem9uU2Nyb2xsLFxuICAgICAgICAgICAgW2Ake3ByZWZpeENsc30tZml4LWVuZC1zaGFkb3dgXTogaG9yaXpvblNjcm9sbCxcbiAgICAgICAgICAgIFtgJHtwcmVmaXhDbHN9LWZpeC1zdGFydC1zaGFkb3ctc2hvd2BdOiBob3Jpem9uU2Nyb2xsICYmIHNoYWRvd1N0YXJ0LFxuICAgICAgICAgICAgW2Ake3ByZWZpeENsc30tZml4LWVuZC1zaGFkb3ctc2hvd2BdOiBob3Jpem9uU2Nyb2xsICYmIHNoYWRvd0VuZCxcbiAgICAgICAgICAgIFtgJHtwcmVmaXhDbHN9LWxheW91dC1maXhlZGBdOiB0YWJsZUxheW91dCA9PT0gJ2ZpeGVkJyxcbiAgICAgICAgICAgIFtgJHtwcmVmaXhDbHN9LWZpeGVkLWhlYWRlcmBdOiBmaXhIZWFkZXIsXG4gICAgICAgICAgICAvKiogTm8gdXNlZCBidXQgZm9yIGNvbXBhdGlibGUgKi9cbiAgICAgICAgICAgIFtgJHtwcmVmaXhDbHN9LWZpeGVkLWNvbHVtbmBdOiBmaXhDb2x1bW4sXG4gICAgICAgICAgICBbYCR7cHJlZml4Q2xzfS1zY3JvbGwtaG9yaXpvbnRhbGBdOiBob3Jpem9uU2Nyb2xsLFxuICAgICAgICAgICAgW2Ake3ByZWZpeENsc30taGFzLWZpeC1zdGFydGBdOiAoX2EgPSBmbGF0dGVuQ29sdW1uc1swXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZpeGVkLFxuICAgICAgICAgICAgW2Ake3ByZWZpeENsc30taGFzLWZpeC1lbmRgXTogKChfYiA9IGZsYXR0ZW5Db2x1bW5zW2ZsYXR0ZW5Db2x1bW5zLmxlbmd0aCAtIDFdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZml4ZWQpID09PSAnZW5kJyxcbiAgICAgICAgfSksIHN0eWxlOiB0YWJsZVN0eWxlLCBpZDogaWQsIHJlZjogZnVsbFRhYmxlUmVmIH0sIGRhdGFQcm9wcywgeyBjaGlsZHJlbjogW3RpdGxlICYmIChfanN4KFBhbmVsLCB7IGNsYXNzTmFtZTogY2xzeChgJHtwcmVmaXhDbHN9LXRpdGxlYCwgY2xhc3NOYW1lcyA9PT0gbnVsbCB8fCBjbGFzc05hbWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjbGFzc05hbWVzLnRpdGxlKSwgc3R5bGU6IHN0eWxlcyA9PT0gbnVsbCB8fCBzdHlsZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0eWxlcy50aXRsZSwgY2hpbGRyZW46IHRpdGxlKG1lcmdlZERhdGEpIH0pKSwgX2pzeChcImRpdlwiLCB7IHJlZjogc2Nyb2xsQm9keUNvbnRhaW5lclJlZiwgY2xhc3NOYW1lOiBjbHN4KGAke3ByZWZpeENsc30tY29udGFpbmVyYCwgY2xhc3NOYW1lcyA9PT0gbnVsbCB8fCBjbGFzc05hbWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjbGFzc05hbWVzLnNlY3Rpb24pLCBzdHlsZTogc3R5bGVzID09PSBudWxsIHx8IHN0eWxlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGVzLnNlY3Rpb24sIGNoaWxkcmVuOiBncm91cFRhYmxlTm9kZSB9KSwgZm9vdGVyICYmIChfanN4KFBhbmVsLCB7IGNsYXNzTmFtZTogY2xzeChgJHtwcmVmaXhDbHN9LWZvb3RlcmAsIGNsYXNzTmFtZXMgPT09IG51bGwgfHwgY2xhc3NOYW1lcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2xhc3NOYW1lcy5mb290ZXIpLCBzdHlsZTogc3R5bGVzID09PSBudWxsIHx8IHN0eWxlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGVzLmZvb3RlciwgY2hpbGRyZW46IGZvb3RlcihtZXJnZWREYXRhKSB9KSldIH0pKSk7XG4gICAgaWYgKGhvcml6b25TY3JvbGwpIHtcbiAgICAgICAgZnVsbFRhYmxlID0gKF9qc3goUmVzaXplT2JzZXJ2ZXIsIHsgb25SZXNpemU6ICh7IG9mZnNldFdpZHRoIH0pID0+IG9uRnVsbFRhYmxlUmVzaXplKG9mZnNldFdpZHRoKSwgY2hpbGRyZW46IGZ1bGxUYWJsZSB9KSk7XG4gICAgfVxuICAgIGNvbnN0IGZpeGVkSW5mb0xpc3QgPSB1c2VGaXhlZEluZm8oZmxhdHRlbkNvbHVtbnMsIHN0aWNreU9mZnNldHMpO1xuICAgIGNvbnN0IFRhYmxlQ29udGV4dFZhbHVlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgICAgICAvLyBTY3JvbGxcbiAgICAgICAgc2Nyb2xsWDogbWVyZ2VkU2Nyb2xsWCxcbiAgICAgICAgc2Nyb2xsSW5mbyxcbiAgICAgICAgY2xhc3NOYW1lcyxcbiAgICAgICAgc3R5bGVzLFxuICAgICAgICAvLyBUYWJsZVxuICAgICAgICBwcmVmaXhDbHMsXG4gICAgICAgIGdldENvbXBvbmVudCxcbiAgICAgICAgc2Nyb2xsYmFyU2l6ZSxcbiAgICAgICAgZGlyZWN0aW9uLFxuICAgICAgICBmaXhlZEluZm9MaXN0LFxuICAgICAgICBpc1N0aWNreSxcbiAgICAgICAgY29tcG9uZW50V2lkdGgsXG4gICAgICAgIGZpeEhlYWRlcixcbiAgICAgICAgZml4Q29sdW1uLFxuICAgICAgICBob3Jpem9uU2Nyb2xsLFxuICAgICAgICAvLyBCb2R5XG4gICAgICAgIHRhYmxlTGF5b3V0OiBtZXJnZWRUYWJsZUxheW91dCxcbiAgICAgICAgcm93Q2xhc3NOYW1lLFxuICAgICAgICBleHBhbmRlZFJvd0NsYXNzTmFtZTogZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRlZFJvd0NsYXNzTmFtZSxcbiAgICAgICAgZXhwYW5kSWNvbjogbWVyZ2VkRXhwYW5kSWNvbixcbiAgICAgICAgZXhwYW5kYWJsZVR5cGUsXG4gICAgICAgIGV4cGFuZFJvd0J5Q2xpY2s6IGV4cGFuZGFibGVDb25maWcuZXhwYW5kUm93QnlDbGljayxcbiAgICAgICAgZXhwYW5kZWRSb3dSZW5kZXI6IGV4cGFuZGFibGVDb25maWcuZXhwYW5kZWRSb3dSZW5kZXIsXG4gICAgICAgIGV4cGFuZGVkUm93T2Zmc2V0OiBleHBhbmRhYmxlQ29uZmlnLmV4cGFuZGVkUm93T2Zmc2V0LFxuICAgICAgICBvblRyaWdnZXJFeHBhbmQsXG4gICAgICAgIGV4cGFuZEljb25Db2x1bW5JbmRleDogZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRJY29uQ29sdW1uSW5kZXgsXG4gICAgICAgIGluZGVudFNpemU6IGV4cGFuZGFibGVDb25maWcuaW5kZW50U2l6ZSxcbiAgICAgICAgYWxsQ29sdW1uc0ZpeGVkTGVmdDogZmxhdHRlbkNvbHVtbnMuZXZlcnkoY29sID0+IGNvbC5maXhlZCA9PT0gJ3N0YXJ0JyksXG4gICAgICAgIGVtcHR5Tm9kZSxcbiAgICAgICAgLy8gQ29sdW1uXG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIGZsYXR0ZW5Db2x1bW5zLFxuICAgICAgICBvbkNvbHVtblJlc2l6ZSxcbiAgICAgICAgY29sV2lkdGhzLFxuICAgICAgICAvLyBSb3dcbiAgICAgICAgaG92ZXJTdGFydFJvdzogc3RhcnRSb3csXG4gICAgICAgIGhvdmVyRW5kUm93OiBlbmRSb3csXG4gICAgICAgIG9uSG92ZXIsXG4gICAgICAgIHJvd0V4cGFuZGFibGU6IGV4cGFuZGFibGVDb25maWcucm93RXhwYW5kYWJsZSxcbiAgICAgICAgb25Sb3csXG4gICAgICAgIGdldFJvd0tleSxcbiAgICAgICAgZXhwYW5kZWRLZXlzOiBtZXJnZWRFeHBhbmRlZEtleXMsXG4gICAgICAgIGNoaWxkcmVuQ29sdW1uTmFtZTogbWVyZ2VkQ2hpbGRyZW5Db2x1bW5OYW1lLFxuICAgICAgICByb3dIb3ZlcmFibGUsXG4gICAgICAgIC8vIE1lYXN1cmUgUm93XG4gICAgICAgIG1lYXN1cmVSb3dSZW5kZXIsXG4gICAgfSksIFtcbiAgICAgICAgLy8gU2Nyb2xsXG4gICAgICAgIG1lcmdlZFNjcm9sbFgsXG4gICAgICAgIHNjcm9sbEluZm8sXG4gICAgICAgIGNsYXNzTmFtZXMsXG4gICAgICAgIHN0eWxlcyxcbiAgICAgICAgLy8gVGFibGVcbiAgICAgICAgcHJlZml4Q2xzLFxuICAgICAgICBnZXRDb21wb25lbnQsXG4gICAgICAgIHNjcm9sbGJhclNpemUsXG4gICAgICAgIGRpcmVjdGlvbixcbiAgICAgICAgZml4ZWRJbmZvTGlzdCxcbiAgICAgICAgaXNTdGlja3ksXG4gICAgICAgIGNvbXBvbmVudFdpZHRoLFxuICAgICAgICBmaXhIZWFkZXIsXG4gICAgICAgIGZpeENvbHVtbixcbiAgICAgICAgaG9yaXpvblNjcm9sbCxcbiAgICAgICAgLy8gQm9keVxuICAgICAgICBtZXJnZWRUYWJsZUxheW91dCxcbiAgICAgICAgcm93Q2xhc3NOYW1lLFxuICAgICAgICBleHBhbmRhYmxlQ29uZmlnLmV4cGFuZGVkUm93Q2xhc3NOYW1lLFxuICAgICAgICBtZXJnZWRFeHBhbmRJY29uLFxuICAgICAgICBleHBhbmRhYmxlVHlwZSxcbiAgICAgICAgZXhwYW5kYWJsZUNvbmZpZy5leHBhbmRSb3dCeUNsaWNrLFxuICAgICAgICBleHBhbmRhYmxlQ29uZmlnLmV4cGFuZGVkUm93UmVuZGVyLFxuICAgICAgICBleHBhbmRhYmxlQ29uZmlnLmV4cGFuZGVkUm93T2Zmc2V0LFxuICAgICAgICBvblRyaWdnZXJFeHBhbmQsXG4gICAgICAgIGV4cGFuZGFibGVDb25maWcuZXhwYW5kSWNvbkNvbHVtbkluZGV4LFxuICAgICAgICBleHBhbmRhYmxlQ29uZmlnLmluZGVudFNpemUsXG4gICAgICAgIGVtcHR5Tm9kZSxcbiAgICAgICAgLy8gQ29sdW1uXG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIGZsYXR0ZW5Db2x1bW5zLFxuICAgICAgICBvbkNvbHVtblJlc2l6ZSxcbiAgICAgICAgY29sV2lkdGhzLFxuICAgICAgICAvLyBSb3dcbiAgICAgICAgc3RhcnRSb3csXG4gICAgICAgIGVuZFJvdyxcbiAgICAgICAgb25Ib3ZlcixcbiAgICAgICAgZXhwYW5kYWJsZUNvbmZpZy5yb3dFeHBhbmRhYmxlLFxuICAgICAgICBvblJvdyxcbiAgICAgICAgZ2V0Um93S2V5LFxuICAgICAgICBtZXJnZWRFeHBhbmRlZEtleXMsXG4gICAgICAgIG1lcmdlZENoaWxkcmVuQ29sdW1uTmFtZSxcbiAgICAgICAgcm93SG92ZXJhYmxlLFxuICAgICAgICBtZWFzdXJlUm93UmVuZGVyLFxuICAgIF0pO1xuICAgIHJldHVybiBfanN4KFRhYmxlQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogVGFibGVDb250ZXh0VmFsdWUsIGNoaWxkcmVuOiBmdWxsVGFibGUgfSk7XG59O1xuY29uc3QgUmVmVGFibGUgPSBSZWFjdC5mb3J3YXJkUmVmKFRhYmxlKTtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgUmVmVGFibGUuZGlzcGxheU5hbWUgPSAnVGFibGUnO1xufVxuZXhwb3J0IGNvbnN0IGdlblRhYmxlID0gKHNob3VsZFRyaWdnZXJSZW5kZXIpID0+IHtcbiAgICByZXR1cm4gbWFrZUltbXV0YWJsZShSZWZUYWJsZSwgc2hvdWxkVHJpZ2dlclJlbmRlcik7XG59O1xuY29uc3QgSW1tdXRhYmxlVGFibGUgPSBnZW5UYWJsZSgpO1xuSW1tdXRhYmxlVGFibGUuRVhQQU5EX0NPTFVNTiA9IEVYUEFORF9DT0xVTU47XG5JbW11dGFibGVUYWJsZS5JTlRFUk5BTF9IT09LUyA9IElOVEVSTkFMX0hPT0tTO1xuSW1tdXRhYmxlVGFibGUuQ29sdW1uID0gQ29sdW1uO1xuSW1tdXRhYmxlVGFibGUuQ29sdW1uR3JvdXAgPSBDb2x1bW5Hcm91cDtcbkltbXV0YWJsZVRhYmxlLlN1bW1hcnkgPSBGb290ZXJDb21wb25lbnRzO1xuZXhwb3J0IGRlZmF1bHQgSW1tdXRhYmxlVGFibGU7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9