w-component-vue 2.3.0 → 2.3.1

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 (1135) hide show
  1. package/README.md +1 -1
  2. package/dist/w-component-vue.umd.js +11 -11
  3. package/dist/w-component-vue.umd.js.map +1 -1
  4. package/docs/binarySearch.mjs.html +1 -1
  5. package/docs/examples/app.html +1 -1
  6. package/docs/examples/app.umd.js +3 -3
  7. package/docs/examples/app.umd.js.map +1 -1
  8. package/docs/examples/w-aggrid-vue-dyn_defCellEditable.html +1 -1
  9. package/docs/examples/w-aggrid-vue-dyn_kpCellEditable_kpRowStyle.html +1 -1
  10. package/docs/examples/w-aggrid-vue-dyn_kpHeadTooltip_kpCellTooltip.html +1 -1
  11. package/docs/examples/w-aggrid-vue-dyn_large data (1,000,000 items).html +1 -1
  12. package/docs/examples/w-aggrid-vue-dyn_simple data.html +1 -1
  13. package/docs/examples/w-alert_backgroundColor.html +1 -1
  14. package/docs/examples/w-alert_borderColor.html +1 -1
  15. package/docs/examples/w-alert_borderRadius.html +1 -1
  16. package/docs/examples/w-alert_borderWidth.html +1 -1
  17. package/docs/examples/w-alert_default.html +1 -1
  18. package/docs/examples/w-alert_icon.html +1 -1
  19. package/docs/examples/w-alert_position.html +1 -1
  20. package/docs/examples/w-alert_recive closed event by promise.html +1 -1
  21. package/docs/examples/w-alert_shadowStyle.html +1 -1
  22. package/docs/examples/w-alert_textColor.html +1 -1
  23. package/docs/examples/w-alert_time (6s).html +1 -1
  24. package/docs/examples/w-alert_type error.html +1 -1
  25. package/docs/examples/w-alert_type infor.html +1 -1
  26. package/docs/examples/w-alert_type warning.html +1 -1
  27. package/docs/examples/w-badge_backgroundColor.html +1 -1
  28. package/docs/examples/w-badge_badgeAlign.html +1 -1
  29. package/docs/examples/w-badge_borderColor_textColor_backgroundColor.html +1 -1
  30. package/docs/examples/w-badge_borderRadius.html +1 -1
  31. package/docs/examples/w-badge_default.html +1 -1
  32. package/docs/examples/w-badge_textColor_backgroundColor.html +1 -1
  33. package/docs/examples/w-badge_textFontSize.html +1 -1
  34. package/docs/examples/w-button-chip_active_backgroundColorActive.html +1 -1
  35. package/docs/examples/w-button-chip_active_borderColorActive.html +1 -1
  36. package/docs/examples/w-button-chip_active_iconColorActive.html +1 -1
  37. package/docs/examples/w-button-chip_active_no shadow_no shadowActive.html +1 -1
  38. package/docs/examples/w-button-chip_active_shadowActiveStyle.html +1 -1
  39. package/docs/examples/w-button-chip_active_textColorActive.html +1 -1
  40. package/docs/examples/w-button-chip_backgroundColor_backgroundColorHover.html +1 -1
  41. package/docs/examples/w-button-chip_borderColor_borderColorHover.html +1 -1
  42. package/docs/examples/w-button-chip_borderRadius.html +1 -1
  43. package/docs/examples/w-button-chip_borderRadiusStyle.html +1 -1
  44. package/docs/examples/w-button-chip_borderRadiusStyle_borderWidth_borderColor_borderColorHover.html +1 -1
  45. package/docs/examples/w-button-chip_borderWidth.html +1 -1
  46. package/docs/examples/w-button-chip_close.html +1 -1
  47. package/docs/examples/w-button-chip_close_shiftRight.html +1 -1
  48. package/docs/examples/w-button-chip_default.html +1 -1
  49. package/docs/examples/w-button-chip_icon (fontawesome).html +1 -1
  50. package/docs/examples/w-button-chip_icon (material).html +1 -1
  51. package/docs/examples/w-button-chip_icon_iconColor_iconColorHover_close.html +1 -1
  52. package/docs/examples/w-button-chip_icon_no text.html +1 -1
  53. package/docs/examples/w-button-chip_loading.html +1 -1
  54. package/docs/examples/w-button-chip_loading_loadingColor.html +1 -1
  55. package/docs/examples/w-button-chip_loading_textColor_textColorHover.html +1 -1
  56. package/docs/examples/w-button-chip_modify loading by callback in click.html +1 -1
  57. package/docs/examples/w-button-chip_modify prog by callback in click.html +1 -1
  58. package/docs/examples/w-button-chip_no shadow.html +1 -1
  59. package/docs/examples/w-button-chip_not editable.html +1 -1
  60. package/docs/examples/w-button-chip_not editable_disabledColor.html +1 -1
  61. package/docs/examples/w-button-chip_paddingStyle (equal height to using icon).html +1 -1
  62. package/docs/examples/w-button-chip_paddingStyle (thin style).html +1 -1
  63. package/docs/examples/w-button-chip_paddingStyle_icon_iconSize_textFontSize.html +1 -1
  64. package/docs/examples/w-button-chip_prog.html +1 -1
  65. package/docs/examples/w-button-chip_prog_progColor_progBackgroundColor.html +1 -1
  66. package/docs/examples/w-button-chip_promiseUnlock.html +1 -1
  67. package/docs/examples/w-button-chip_rippleColor.html +1 -1
  68. package/docs/examples/w-button-chip_shadowStyle.html +1 -1
  69. package/docs/examples/w-button-chip_shiftLeft.html +1 -1
  70. package/docs/examples/w-button-chip_slot_close.html +1 -1
  71. package/docs/examples/w-button-chip_textColor.html +1 -1
  72. package/docs/examples/w-button-chip_textColor_textColorHover.html +1 -1
  73. package/docs/examples/w-button-chip_tooltip.html +1 -1
  74. package/docs/examples/w-button-chip_tooltip_tooltipBorderRadius.html +1 -1
  75. package/docs/examples/w-button-chip_tooltip_tooltipPaddingStyle.html +1 -1
  76. package/docs/examples/w-button-chip_tooltip_tooltipTextColor_tooltipBackgroundColor.html +1 -1
  77. package/docs/examples/w-button-chip_tooltip_tooltipTextFontSize.html +1 -1
  78. package/docs/examples/w-button-circle_backgroundColor_backgroundColorHover_backgroundColorFocus.html +1 -1
  79. package/docs/examples/w-button-circle_borderWidth_borderColor_borderColorHover_borderColorFocus.html +1 -1
  80. package/docs/examples/w-button-circle_icon (fontawesome).html +1 -1
  81. package/docs/examples/w-button-circle_icon (material).html +1 -1
  82. package/docs/examples/w-button-circle_iconColor_iconColorHover_iconColorFocus.html +1 -1
  83. package/docs/examples/w-button-circle_loading.html +1 -1
  84. package/docs/examples/w-button-circle_loading_loadingColor.html +1 -1
  85. package/docs/examples/w-button-circle_no shadow.html +1 -1
  86. package/docs/examples/w-button-circle_not editable.html +1 -1
  87. package/docs/examples/w-button-circle_not editable_disabledColor.html +1 -1
  88. package/docs/examples/w-button-circle_paddingStyle.html +1 -1
  89. package/docs/examples/w-button-circle_paddingStyle_iconSize.html +1 -1
  90. package/docs/examples/w-button-circle_promiseUnlock.html +1 -1
  91. package/docs/examples/w-button-circle_rippleColor.html +1 -1
  92. package/docs/examples/w-button-circle_shadowStyle.html +1 -1
  93. package/docs/examples/w-button-circle_tooltip.html +1 -1
  94. package/docs/examples/w-button-circle_tooltip_tooltipBorderRadius.html +1 -1
  95. package/docs/examples/w-button-circle_tooltip_tooltipPaddingStyle.html +1 -1
  96. package/docs/examples/w-button-circle_tooltip_tooltipTextColor_tooltipBackgroundColor.html +1 -1
  97. package/docs/examples/w-button-circle_tooltip_tooltipTextFontSize.html +1 -1
  98. package/docs/examples/w-checkbox_checkedIconColor_checkedIconColorHover_uncheckedIconColor_uncheckedIconColorHover.html +1 -1
  99. package/docs/examples/w-checkbox_checkedIcon_uncheckedIcon.html +1 -1
  100. package/docs/examples/w-checkbox_default.html +1 -1
  101. package/docs/examples/w-checkbox_iconSize_textFontSize.html +1 -1
  102. package/docs/examples/w-checkbox_not editable.html +1 -1
  103. package/docs/examples/w-checkbox_not editable_checkedIconColorDisabled_uncheckedIconColorDisabled.html +1 -1
  104. package/docs/examples/w-checkbox_text.html +1 -1
  105. package/docs/examples/w-checkbox_text_textColor_textColorHover.html +1 -1
  106. package/docs/examples/w-checkbox_use string (y or n).html +1 -1
  107. package/docs/examples/w-ckeditor-vue-dyn_default.html +1 -1
  108. package/docs/examples/w-ckeditor-vue-dyn_height.html +1 -1
  109. package/docs/examples/w-ckeditor-vue-dyn_not editable.html +1 -1
  110. package/docs/examples/w-ckeditor-vue-dyn_settings.html +1 -1
  111. package/docs/examples/w-confirm_contentColor_contentIconColor_contentBackgroundColor.html +1 -1
  112. package/docs/examples/w-confirm_contentIcon (fontawesome).html +1 -1
  113. package/docs/examples/w-confirm_contentIconColor.html +1 -1
  114. package/docs/examples/w-confirm_contentIconSize.html +1 -1
  115. package/docs/examples/w-confirm_hasNoBtn_yesBtnText.html +1 -1
  116. package/docs/examples/w-confirm_maxWidth.html +1 -1
  117. package/docs/examples/w-confirm_noBtnTextColor_noBtnTextColorHover_noBtnBackgroundColor_noBtnBackgroundColorHover.html +1 -1
  118. package/docs/examples/w-confirm_noBtnText_yesBtnText.html +1 -1
  119. package/docs/examples/w-confirm_scrollable (slot content).html +1 -1
  120. package/docs/examples/w-confirm_scrollable.html +1 -1
  121. package/docs/examples/w-confirm_slot content.html +1 -1
  122. package/docs/examples/w-confirm_slot footer.html +1 -1
  123. package/docs/examples/w-confirm_slot header.html +1 -1
  124. package/docs/examples/w-confirm_titleColor_headerBackgroundColor_footerBackgroundColor.html +1 -1
  125. package/docs/examples/w-confirm_title_content.html +1 -1
  126. package/docs/examples/w-dialog_closeWithInterceptor.html +1 -1
  127. package/docs/examples/w-dialog_contentTextColor_contentBackgroundColor.html +1 -1
  128. package/docs/examples/w-dialog_dialogZIndex.html +1 -1
  129. package/docs/examples/w-dialog_fullscreen.html +1 -1
  130. package/docs/examples/w-dialog_hasSaveBtn (no save button).html +1 -1
  131. package/docs/examples/w-dialog_hasSaveBtn_hasCloseBtn_isModal (no save and close button).html +1 -1
  132. package/docs/examples/w-dialog_headerBackgroundColor.html +1 -1
  133. package/docs/examples/w-dialog_headerBtns.html +1 -1
  134. package/docs/examples/w-dialog_headerShadow (no shadow).html +1 -1
  135. package/docs/examples/w-dialog_headerShadowStyle.html +1 -1
  136. package/docs/examples/w-dialog_icon (fontawesome).html +1 -1
  137. package/docs/examples/w-dialog_isModal (not persistent).html +1 -1
  138. package/docs/examples/w-dialog_long title.html +1 -1
  139. package/docs/examples/w-dialog_maxWidth (narrow width).html +1 -1
  140. package/docs/examples/w-dialog_multi dialogs.html +1 -1
  141. package/docs/examples/w-dialog_panelBorderRadius.html +1 -1
  142. package/docs/examples/w-dialog_panelShadow (no shadow).html +1 -1
  143. package/docs/examples/w-dialog_panelShadowStyle.html +1 -1
  144. package/docs/examples/w-dialog_saveBtnTooltip_closeBtnTooltip.html +1 -1
  145. package/docs/examples/w-dialog_scrollable.html +1 -1
  146. package/docs/examples/w-dialog_slot content (separate line).html +1 -1
  147. package/docs/examples/w-dialog_slot content (table).html +1 -1
  148. package/docs/examples/w-dialog_slot content.html +1 -1
  149. package/docs/examples/w-dialog_slot header-left_header-right.html +1 -1
  150. package/docs/examples/w-dialog_slot panel.html +1 -1
  151. package/docs/examples/w-dialog_title.html +1 -1
  152. package/docs/examples/w-dialog_titleColor_headerIconColor_headerBackgroundColor.html +1 -1
  153. package/docs/examples/w-drawer_afloat.html +1 -1
  154. package/docs/examples/w-drawer_afloat_afloatByFix.html +1 -1
  155. package/docs/examples/w-drawer_afloat_afloatByFix_dragDrawerWidth.html +1 -1
  156. package/docs/examples/w-drawer_afloat_afloatByFix_mode.html +1 -1
  157. package/docs/examples/w-drawer_afloat_afloatByFix_mode_dragDrawerWidth.html +1 -1
  158. package/docs/examples/w-drawer_afloat_dragDrawerWidth.html +1 -1
  159. package/docs/examples/w-drawer_afloat_dragDrawerWidth_drawerWidthMin_drawerWidthMax.html +1 -1
  160. package/docs/examples/w-drawer_afloat_mode.html +1 -1
  161. package/docs/examples/w-drawer_afloat_mode_dragDrawerWidth.html +1 -1
  162. package/docs/examples/w-drawer_afloat_mode_dragDrawerWidth_drawerWidthMin.html +1 -1
  163. package/docs/examples/w-drawer_afloat_overlayOpacity.html +1 -1
  164. package/docs/examples/w-drawer_default.html +1 -1
  165. package/docs/examples/w-drawer_dragDrawerWidth_drawerBarBorderColor_drawerBarBorderSize.html +1 -1
  166. package/docs/examples/w-drawer_dragDrawerWidth_drawerBarColor_drawerBarSize.html +1 -1
  167. package/docs/examples/w-drawer_dragDrawerWidth_drawerWidth(sync).html +1 -1
  168. package/docs/examples/w-drawer_dragDrawerWidth_drawerWidthMin_drawerWidthMax.html +1 -1
  169. package/docs/examples/w-drawer_drawerWidth.html +1 -1
  170. package/docs/examples/w-drawer_mode.html +1 -1
  171. package/docs/examples/w-drawer_mode_dragDrawerWidth.html +1 -1
  172. package/docs/examples/w-drawer_multiple_dragDrawerWidth_drawerWidthMin_drawerWidthMax.html +1 -1
  173. package/docs/examples/w-dropfiles_backgroundColor_backgroundColorDropIn_backgroundColorHover.html +1 -1
  174. package/docs/examples/w-dropfiles_borderColor_borderColorDropIn_borderColorHover_backgroundColorDropIn.html +1 -1
  175. package/docs/examples/w-dropfiles_borderRadius.html +1 -1
  176. package/docs/examples/w-dropfiles_borderWidth.html +1 -1
  177. package/docs/examples/w-dropfiles_default.html +1 -1
  178. package/docs/examples/w-dropfiles_timeTransition.html +1 -1
  179. package/docs/examples/w-dynamic-list_change rows.html +1 -1
  180. package/docs/examples/w-dynamic-list_change slot.html +1 -1
  181. package/docs/examples/w-dynamic-list_default.html +1 -1
  182. package/docs/examples/w-dynamic-list_filterKeywords_noResultsText.html +1 -1
  183. package/docs/examples/w-dynamic-list_large data (1,000,000 items).html +1 -1
  184. package/docs/examples/w-dynamic-list_processItems.html +1 -1
  185. package/docs/examples/w-dynamic-list_render.html +1 -1
  186. package/docs/examples/w-dynamic-list_slot item with image.html +1 -1
  187. package/docs/examples/w-dynamic-list_viewHeightMax.html +1 -1
  188. package/docs/examples/w-echarts-vue-dyn_area.html +1 -1
  189. package/docs/examples/w-echarts-vue-dyn_bar3D.html +1 -1
  190. package/docs/examples/w-echarts-vue-dyn_continuous.html +1 -1
  191. package/docs/examples/w-echarts-vue-dyn_heatmap.html +1 -1
  192. package/docs/examples/w-echarts-vue-dyn_line.html +1 -1
  193. package/docs/examples/w-echarts-vue-dyn_line3D.html +1 -1
  194. package/docs/examples/w-echarts-vue-dyn_parallel.html +1 -1
  195. package/docs/examples/w-echarts-vue-dyn_polar heatmap.html +1 -1
  196. package/docs/examples/w-echarts-vue-dyn_polar.html +1 -1
  197. package/docs/examples/w-echarts-vue-dyn_radar.html +1 -1
  198. package/docs/examples/w-echarts-vue-dyn_scatter.html +1 -1
  199. package/docs/examples/w-echarts-vue-dyn_stack.html +1 -1
  200. package/docs/examples/w-echarts-vue-dyn_surface.html +1 -1
  201. package/docs/examples/w-echarts-vue-dyn_tree.html +1 -1
  202. package/docs/examples/w-echarts-vue-dyn_treemap.html +1 -1
  203. package/docs/examples/w-explorer_bindRoot.html +34 -4
  204. package/docs/examples/w-explorer_btnDisplayTreeBackgroundColor_btnDisplayTreeBackgroundColorHover_btnDisplayTreeBackgroundColorFocus.html +34 -4
  205. package/docs/examples/w-explorer_btnDisplayTreeIconColor_btnDisplayTreeIconColorHover_btnDisplayTreeIconColorFocus.html +34 -4
  206. package/docs/examples/w-explorer_btnDisplayTreeIconShow_btnDisplayTreeIconHide_btnDisplayTreeIconSize.html +34 -4
  207. package/docs/examples/w-explorer_dark mode.html +34 -4
  208. package/docs/examples/w-explorer_default.html +34 -4
  209. package/docs/examples/w-explorer_defaultShowTreeFirst.html +34 -4
  210. package/docs/examples/w-explorer_defaultShowTreeFirst_noSelectedText.html +34 -4
  211. package/docs/examples/w-explorer_draggable.html +679 -0
  212. package/docs/examples/w-explorer_draggable_dgInsertLineColor_dgInsertBackgroundColor_dgBelongBackgroundColor.html +684 -0
  213. package/docs/examples/w-explorer_draggable_dgPreviewOpacity_dgPreviewBorderWidth_dgBelongBackgroundColor.html +685 -0
  214. package/docs/examples/w-explorer_draggable_dgTextDisabled_dgTextDisabledColor_dgTextDisabledPaddingLeft.html +686 -0
  215. package/docs/examples/w-explorer_events.html +34 -4
  216. package/docs/examples/w-explorer_funSortTree.html +34 -4
  217. package/docs/examples/w-explorer_lineBetweenPathAndListWidth_lineBetweenPathAndListColor.html +34 -4
  218. package/docs/examples/w-explorer_listBackgroundColor.html +34 -4
  219. package/docs/examples/w-explorer_listFolderIcon_listFileIcon_listIconSize.html +34 -4
  220. package/docs/examples/w-explorer_listItemBackgroundColor_listItemBackgroundColorHover_listItemBackgroundColorActive.html +34 -4
  221. package/docs/examples/w-explorer_listItemIconColor_listItemIconColorHover_listItemIconColorActive.html +34 -4
  222. package/docs/examples/w-explorer_listItemRippleColor.html +34 -4
  223. package/docs/examples/w-explorer_listItemTextColor_listItemTextColorHover_listItemTextColorActive.html +34 -4
  224. package/docs/examples/w-explorer_listItemTextFontSize.html +34 -4
  225. package/docs/examples/w-explorer_listPaddingStyle.html +34 -4
  226. package/docs/examples/w-explorer_operatable.html +679 -0
  227. package/docs/examples/w-explorer_operatable_draggable.html +680 -0
  228. package/docs/examples/w-explorer_operatable_editorRenameCancelBtnBackgroundColor_editorRenameCancelBtnBackgroundColorHover.html +683 -0
  229. package/docs/examples/w-explorer_operatable_editorRenameCancelBtnIcon_editorRenameCancelBtnIconSize_editorRenameCancelBtnIconColor.html +686 -0
  230. package/docs/examples/w-explorer_operatable_editorRenameCancelBtnText_editorRenameCancelBtnTextColor_editorRenameCancelBtnTextColorHover.html +684 -0
  231. package/docs/examples/w-explorer_operatable_editorRenameContentBackgroundColor_editorRenameFooterBackgroundColor.html +683 -0
  232. package/docs/examples/w-explorer_operatable_editorRenameInputTextColor_editorRenameInputTextBottomLineBorderColor_editorRenameInputTextBottomLineBorderColorHover.html +685 -0
  233. package/docs/examples/w-explorer_operatable_editorRenameSaveBtnBackgroundColor_editorRenameSaveBtnBackgroundColorHover.html +683 -0
  234. package/docs/examples/w-explorer_operatable_editorRenameSaveBtnIcon_editorRenameSaveBtnIconSize_editorRenameSaveBtnIconColor.html +686 -0
  235. package/docs/examples/w-explorer_operatable_editorRenameSaveBtnText_editorRenameSaveBtnTextColor_editorRenameSaveBtnTextColorHover.html +684 -0
  236. package/docs/examples/w-explorer_operatable_operateBtnBackgroundColor_operateBtnBackgroundColorHover_operateBtnBackgroundColorFocus.html +684 -0
  237. package/docs/examples/w-explorer_operatable_operateBtnTooltip_operateItemTextForRename_perateItemTextForInsertChild.html +685 -0
  238. package/docs/examples/w-explorer_operatable_operateItemBackgroundColor_operateItemBackgroundColorHover_operateItemTextColor.html +687 -0
  239. package/docs/examples/w-explorer_operatable_operateItemHeight_operateItemIconSize_operateItemPaddingStyle.html +684 -0
  240. package/docs/examples/w-explorer_operatable_operateItemIconForRename_operateItemIconForInsertChild_operateItemIconForDelete.html +684 -0
  241. package/docs/examples/w-explorer_operatable_operatePanelWidth_operatePanelHeight_operateItemIconSize.html +685 -0
  242. package/docs/examples/w-explorer_pathBackgroundColor.html +34 -4
  243. package/docs/examples/w-explorer_pathBtnBackgroundColor_pathBtnBackgroundColorHover.html +34 -4
  244. package/docs/examples/w-explorer_pathBtnTextColor_pathBtnTextColorHover.html +34 -4
  245. package/docs/examples/w-explorer_pathBtnTextFontSize.html +34 -4
  246. package/docs/examples/w-explorer_pathSepIcon_pathSepIconColor_pathSepIconSize.html +34 -4
  247. package/docs/examples/w-explorer_showTree.html +34 -4
  248. package/docs/examples/w-explorer_slot list-item-cover.html +34 -4
  249. package/docs/examples/w-explorer_slot list-item-sub.html +34 -4
  250. package/docs/examples/w-explorer_slot list-item-text-left.html +34 -4
  251. package/docs/examples/w-explorer_slot list-item-text-right.html +34 -4
  252. package/docs/examples/w-explorer_slot list-item_list-item-cover_list-head_list-foot.html +34 -4
  253. package/docs/examples/w-explorer_small text.html +34 -4
  254. package/docs/examples/w-explorer_toggleTreeFoldersAll.html +34 -4
  255. package/docs/examples/w-explorer_toggleTreeFoldersByFun.html +34 -4
  256. package/docs/examples/w-explorer_treeAfloat.html +34 -4
  257. package/docs/examples/w-explorer_treeBackgroundColor.html +34 -4
  258. package/docs/examples/w-explorer_treeDefItemHeight_listDefItemHeight.html +34 -4
  259. package/docs/examples/w-explorer_treeDefaultDisplayLevel.html +34 -4
  260. package/docs/examples/w-explorer_treeDrawerBarSize_treeDrawerBarColor.html +34 -4
  261. package/docs/examples/w-explorer_treeFolderIconColor_treeFolderIconColorHover_treeFolderIconColorActive.html +34 -4
  262. package/docs/examples/w-explorer_treeFolderIcon_treeFolderIconSize.html +34 -4
  263. package/docs/examples/w-explorer_treeIndent.html +34 -4
  264. package/docs/examples/w-explorer_treeItemBackgroundColor_treeItemBackgroundColorHover_treeItemBackgroundColorActive.html +34 -4
  265. package/docs/examples/w-explorer_treeItemRippleColor.html +34 -4
  266. package/docs/examples/w-explorer_treeItemTextColor_treeItemTextColorHover_treeItemTextColorActive.html +34 -4
  267. package/docs/examples/w-explorer_treeItemTextFontSize.html +34 -4
  268. package/docs/examples/w-explorer_treePaddingStyle.html +34 -4
  269. package/docs/examples/w-explorer_treeToggleIconColor_treeToggleIconBackgroundColor_treeToggleIconBackgroundColorHover.html +34 -4
  270. package/docs/examples/w-explorer_treeToggleIconSize.html +34 -4
  271. package/docs/examples/w-explorer_treeWidth.html +34 -4
  272. package/docs/examples/w-explorer_treeWidthMin_treeWidthMax.html +34 -4
  273. package/docs/examples/w-explorer_triggerClickTreeFolderByFun.html +34 -4
  274. package/docs/examples/w-explorer_triggerClickTreeFolderById.html +34 -4
  275. package/docs/examples/w-group-baggage_connLineColor.html +1 -1
  276. package/docs/examples/w-group-baggage_connLineWidth.html +1 -1
  277. package/docs/examples/w-group-baggage_connLineZoneWidth.html +1 -1
  278. package/docs/examples/w-group-baggage_contentBackgroundColor_contentBackgroundColorHover.html +1 -1
  279. package/docs/examples/w-group-baggage_contentBorderColor_contentBorderColorHover.html +1 -1
  280. package/docs/examples/w-group-baggage_contentBorderRadius.html +1 -1
  281. package/docs/examples/w-group-baggage_contentBorderWidth.html +1 -1
  282. package/docs/examples/w-group-baggage_contentPaddingStyle.html +1 -1
  283. package/docs/examples/w-group-baggage_contentTextColor_contentTextColorHover.html +1 -1
  284. package/docs/examples/w-group-baggage_contentTextFontSize.html +1 -1
  285. package/docs/examples/w-group-baggage_default.html +1 -1
  286. package/docs/examples/w-group-baggage_keyTag_keyText.html +1 -1
  287. package/docs/examples/w-group-baggage_slot tag.html +1 -1
  288. package/docs/examples/w-group-baggage_slot text-sub.html +1 -1
  289. package/docs/examples/w-group-baggage_slot text_contentPaddingStyle.html +1 -1
  290. package/docs/examples/w-group-baggage_tagBackgroundColor_tagBackgroundColorHover.html +1 -1
  291. package/docs/examples/w-group-baggage_tagBorderColor_tagBorderColorHover.html +1 -1
  292. package/docs/examples/w-group-baggage_tagBorderRadius.html +1 -1
  293. package/docs/examples/w-group-baggage_tagBorderWidth.html +1 -1
  294. package/docs/examples/w-group-baggage_tagClickable_contentClickable_events.html +1 -1
  295. package/docs/examples/w-group-baggage_tagDistBetweenTopAndBaseline.html +1 -1
  296. package/docs/examples/w-group-baggage_tagPaddingStyle_contentShiftTopFromBaseline.html +1 -1
  297. package/docs/examples/w-group-baggage_tagTextColor_tagTextColorHover.html +1 -1
  298. package/docs/examples/w-group-baggage_tagTextFontSize_contentShiftTopFromBaseline.html +1 -1
  299. package/docs/examples/w-group-check_backgroundColorActive.html +1 -1
  300. package/docs/examples/w-group-check_backgroundColor_backgroundColorHover.html +1 -1
  301. package/docs/examples/w-group-check_borderColor_borderColorHover_borderColorActive.html +1 -1
  302. package/docs/examples/w-group-check_borderRadius.html +1 -1
  303. package/docs/examples/w-group-check_borderRadius_borderRadiusStyle_paddingStyle.html +1 -1
  304. package/docs/examples/w-group-check_borderWidth_borderColor_borderColorHover_borderColorActive.html +1 -1
  305. package/docs/examples/w-group-check_click (console.log).html +1 -1
  306. package/docs/examples/w-group-check_default.html +1 -1
  307. package/docs/examples/w-group-check_group (only one).html +1 -1
  308. package/docs/examples/w-group-check_group_borderColor_borderColorHover_borderColorActive.html +1 -1
  309. package/docs/examples/w-group-check_group_groupBorderRadiusStyle_groupShift_borderRadius.html +1 -1
  310. package/docs/examples/w-group-check_icon (fontawesome).html +1 -1
  311. package/docs/examples/w-group-check_icon (material).html +1 -1
  312. package/docs/examples/w-group-check_iconColorActive.html +1 -1
  313. package/docs/examples/w-group-check_iconColor_iconColorHover.html +1 -1
  314. package/docs/examples/w-group-check_loading.html +1 -1
  315. package/docs/examples/w-group-check_loading_loadingColor.html +1 -1
  316. package/docs/examples/w-group-check_marginStyle.html +1 -1
  317. package/docs/examples/w-group-check_no shadowActive.html +1 -1
  318. package/docs/examples/w-group-check_not editable.html +1 -1
  319. package/docs/examples/w-group-check_paddingStyle_borderRadius_textColor_iconColor.html +1 -1
  320. package/docs/examples/w-group-check_paddingStyle_iconSize_textFontSize.html +1 -1
  321. package/docs/examples/w-group-check_shadow.html +1 -1
  322. package/docs/examples/w-group-check_shadowActiveStyle.html +1 -1
  323. package/docs/examples/w-group-check_shadow_shadowStyle.html +1 -1
  324. package/docs/examples/w-group-check_shiftLeft.html +1 -1
  325. package/docs/examples/w-group-check_shiftLeft_shiftRight.html +1 -1
  326. package/docs/examples/w-group-check_slot_shadow.html +1 -1
  327. package/docs/examples/w-group-check_textColor.html +1 -1
  328. package/docs/examples/w-group-check_textColorActive.html +1 -1
  329. package/docs/examples/w-group-check_textColor_textColorHover.html +1 -1
  330. package/docs/examples/w-group-check_tooltip.html +1 -1
  331. package/docs/examples/w-group-dragdrop_default.html +1 -1
  332. package/docs/examples/w-group-dragdrop_event (dragdrop).html +1 -1
  333. package/docs/examples/w-group-dragdrop_items(string array).html +1 -1
  334. package/docs/examples/w-group-dragdrop_keyBinder.html +1 -1
  335. package/docs/examples/w-group-dragdrop_not draggable.html +1 -1
  336. package/docs/examples/w-group-dragdrop_not itemStyleInline (block).html +1 -1
  337. package/docs/examples/w-group-radio_backgroundColorActive.html +1 -1
  338. package/docs/examples/w-group-radio_backgroundColor_backgroundColorHover.html +1 -1
  339. package/docs/examples/w-group-radio_borderColor_borderColorHover_borderColorActive.html +1 -1
  340. package/docs/examples/w-group-radio_borderRadius.html +1 -1
  341. package/docs/examples/w-group-radio_borderRadius_borderRadiusStyle_paddingStyle.html +1 -1
  342. package/docs/examples/w-group-radio_borderWidth_borderColor_borderColorHover_borderColorActive.html +1 -1
  343. package/docs/examples/w-group-radio_click (console.log).html +1 -1
  344. package/docs/examples/w-group-radio_default.html +1 -1
  345. package/docs/examples/w-group-radio_group (only one).html +1 -1
  346. package/docs/examples/w-group-radio_group_borderColor_borderColorHover_borderColorActive.html +1 -1
  347. package/docs/examples/w-group-radio_group_groupBorderRadiusStyle_groupShift_borderRadius.html +1 -1
  348. package/docs/examples/w-group-radio_icon (fontawesome).html +1 -1
  349. package/docs/examples/w-group-radio_icon (material).html +1 -1
  350. package/docs/examples/w-group-radio_iconColorActive.html +1 -1
  351. package/docs/examples/w-group-radio_iconColor_iconColorHover.html +1 -1
  352. package/docs/examples/w-group-radio_loading.html +1 -1
  353. package/docs/examples/w-group-radio_loading_loadingColor.html +1 -1
  354. package/docs/examples/w-group-radio_marginStyle.html +1 -1
  355. package/docs/examples/w-group-radio_no shadowActive.html +1 -1
  356. package/docs/examples/w-group-radio_not editable.html +1 -1
  357. package/docs/examples/w-group-radio_paddingStyle_borderRadius_textColor_iconColor.html +1 -1
  358. package/docs/examples/w-group-radio_paddingStyle_iconSize_textFontSize.html +1 -1
  359. package/docs/examples/w-group-radio_shadow.html +1 -1
  360. package/docs/examples/w-group-radio_shadowActiveStyle.html +1 -1
  361. package/docs/examples/w-group-radio_shadow_shadowStyle.html +1 -1
  362. package/docs/examples/w-group-radio_shiftLeft.html +1 -1
  363. package/docs/examples/w-group-radio_shiftLeft_shiftRight.html +1 -1
  364. package/docs/examples/w-group-radio_slot_shadow.html +1 -1
  365. package/docs/examples/w-group-radio_textColor.html +1 -1
  366. package/docs/examples/w-group-radio_textColorActive.html +1 -1
  367. package/docs/examples/w-group-radio_textColor_textColorHover.html +1 -1
  368. package/docs/examples/w-group-radio_tooltip.html +1 -1
  369. package/docs/examples/w-group-tags_backgroundColor_backgroundColorHover.html +1 -1
  370. package/docs/examples/w-group-tags_borderColor_borderColorHover.html +1 -1
  371. package/docs/examples/w-group-tags_borderRadius.html +1 -1
  372. package/docs/examples/w-group-tags_closeWithInterceptor.html +1 -1
  373. package/docs/examples/w-group-tags_default.html +1 -1
  374. package/docs/examples/w-group-tags_editableClose(no close button).html +1 -1
  375. package/docs/examples/w-group-tags_editableInput(no slot input).html +1 -1
  376. package/docs/examples/w-group-tags_enableCloseEventOnly.html +1 -1
  377. package/docs/examples/w-group-tags_icon (fontawesome).html +1 -1
  378. package/docs/examples/w-group-tags_icon (material).html +1 -1
  379. package/docs/examples/w-group-tags_iconColor_iconColorHover_textColor_textColorHover.html +1 -1
  380. package/docs/examples/w-group-tags_icon_iconColor_iconColorHover.html +1 -1
  381. package/docs/examples/w-group-tags_inputTextButtonTooltip.html +1 -1
  382. package/docs/examples/w-group-tags_inputTextColor_inputTextBorderColor_inputTextBorderColorHover_inputTextBorderColorFocus.html +1 -1
  383. package/docs/examples/w-group-tags_inputTextWidth.html +1 -1
  384. package/docs/examples/w-group-tags_marginStyle.html +1 -1
  385. package/docs/examples/w-group-tags_modify loading by callback in click.html +1 -1
  386. package/docs/examples/w-group-tags_modify loading_textColor_textColorHover.html +1 -1
  387. package/docs/examples/w-group-tags_modify prog by callback in click.html +1 -1
  388. package/docs/examples/w-group-tags_no shadow_borderColor_borderColorHover.html +1 -1
  389. package/docs/examples/w-group-tags_not draggable.html +1 -1
  390. package/docs/examples/w-group-tags_not editable.html +1 -1
  391. package/docs/examples/w-group-tags_not editable_nodata.html +1 -1
  392. package/docs/examples/w-group-tags_object items.html +1 -1
  393. package/docs/examples/w-group-tags_object items_addButtonTextColor_addButtonTextColorHover_addButtonIconColor.html +1 -1
  394. package/docs/examples/w-group-tags_object items_addButtonText_addButtonTooltip.html +1 -1
  395. package/docs/examples/w-group-tags_object items_keyIcon.html +1 -1
  396. package/docs/examples/w-group-tags_object items_keyText.html +1 -1
  397. package/docs/examples/w-group-tags_object items_keyTooltip.html +1 -1
  398. package/docs/examples/w-group-tags_object items_slot item.html +1 -1
  399. package/docs/examples/w-group-tags_object items_slot item_editableInput(no slot input)_useActive.html +1 -1
  400. package/docs/examples/w-group-tags_object items_slot item_useColorsFromItem_editableInput(no slot input).html +1 -1
  401. package/docs/examples/w-group-tags_paddingStyle_icon_iconSize_textFontSize.html +1 -1
  402. package/docs/examples/w-group-tags_progColor_progBackgroundColor.html +1 -1
  403. package/docs/examples/w-group-tags_shadowStyle.html +1 -1
  404. package/docs/examples/w-group-tags_shiftLeft.html +1 -1
  405. package/docs/examples/w-group-tags_slot input.html +1 -1
  406. package/docs/examples/w-group-tags_slot item.html +1 -1
  407. package/docs/examples/w-group-tags_slot item_useActive_valueActive_paddingStyle.html +1 -1
  408. package/docs/examples/w-group-tags_suggests.html +1 -1
  409. package/docs/examples/w-group-tags_suggests_inputTextColor_inputExpansionIconColor.html +1 -1
  410. package/docs/examples/w-group-tags_suggests_placeholder_noResultsText.html +1 -1
  411. package/docs/examples/w-group-tags_suggests_suggectItemFontSize_suggectItemTextColor_suggectItemTextColorHover.html +1 -1
  412. package/docs/examples/w-group-tags_textColor.html +1 -1
  413. package/docs/examples/w-group-tags_textColor_textColorHover.html +1 -1
  414. package/docs/examples/w-group-tags_useActive_valueActive.html +1 -1
  415. package/docs/examples/w-highcharts-bitmap-dyn_render (need w-hc2png-server).html +1 -1
  416. package/docs/examples/w-highcharts-vue-dyn_area.html +1 -1
  417. package/docs/examples/w-highcharts-vue-dyn_bar.html +1 -1
  418. package/docs/examples/w-highcharts-vue-dyn_heatmap.html +1 -1
  419. package/docs/examples/w-highcharts-vue-dyn_large heatmap.html +1 -1
  420. package/docs/examples/w-highcharts-vue-dyn_line.html +1 -1
  421. package/docs/examples/w-highcharts-vue-dyn_pie.html +1 -1
  422. package/docs/examples/w-highstock-vue-dyn_area.html +1 -1
  423. package/docs/examples/w-highstock-vue-dyn_line.html +1 -1
  424. package/docs/examples/w-icon-svg_path (mdi-access-point)_size.html +1 -1
  425. package/docs/examples/w-icon-svg_path (mdi-account-badge-horizontal)_timeTransition.html +1 -1
  426. package/docs/examples/w-icon-svg_path (mdi-fruit-cherries).html +1 -1
  427. package/docs/examples/w-icon-svg_path (mdi-graph-outline)_color_colorHover.html +1 -1
  428. package/docs/examples/w-icon-svg_path (use 3 paths)_sizeOriginal.html +1 -1
  429. package/docs/examples/w-icon-svg_path_sizeOriginal.html +1 -1
  430. package/docs/examples/w-image-cascading-dyn_arrangeWhenFinish.html +1 -1
  431. package/docs/examples/w-image-cascading-dyn_colNum.html +1 -1
  432. package/docs/examples/w-image-cascading-dyn_default(imageWidth=300).html +1 -1
  433. package/docs/examples/w-image-cascading-dyn_imageWidth.html +1 -1
  434. package/docs/examples/w-image-cascading-dyn_imageWidthSoft.html +1 -1
  435. package/docs/examples/w-image-viewer-dyn_multiple image with navbar.html +1 -1
  436. package/docs/examples/w-image-viewer-dyn_one image.html +1 -1
  437. package/docs/examples/w-input-checkbox_arrange_marginStyle.html +1 -1
  438. package/docs/examples/w-input-checkbox_arrange_paddingStyle.html +1 -1
  439. package/docs/examples/w-input-checkbox_click (console.log).html +1 -1
  440. package/docs/examples/w-input-checkbox_default.html +1 -1
  441. package/docs/examples/w-input-checkbox_marginStyle.html +1 -1
  442. package/docs/examples/w-input-checkbox_not editable.html +1 -1
  443. package/docs/examples/w-input-checkbox_object items_keyText.html +1 -1
  444. package/docs/examples/w-input-checkbox_paddingStyle.html +1 -1
  445. package/docs/examples/w-input-checkbox_slot_paddingStyle_verticalAlign_inputHeight.html +1 -1
  446. package/docs/examples/w-input-checkbox_textColor_textColorHover_textColorActive.html +1 -1
  447. package/docs/examples/w-input-radio_arrange_marginStyle.html +1 -1
  448. package/docs/examples/w-input-radio_arrange_paddingStyle.html +1 -1
  449. package/docs/examples/w-input-radio_click (console.log).html +1 -1
  450. package/docs/examples/w-input-radio_default.html +1 -1
  451. package/docs/examples/w-input-radio_marginStyle.html +1 -1
  452. package/docs/examples/w-input-radio_not editable.html +1 -1
  453. package/docs/examples/w-input-radio_object items_keyText.html +1 -1
  454. package/docs/examples/w-input-radio_paddingStyle.html +1 -1
  455. package/docs/examples/w-input-radio_slot_paddingStyle_verticalAlign_inputHeight.html +1 -1
  456. package/docs/examples/w-input-radio_textColor_textColorHover_textColorActive.html +1 -1
  457. package/docs/examples/w-json-view_default.html +1 -1
  458. package/docs/examples/w-json-view_events.html +1 -1
  459. package/docs/examples/w-json-view_filterKeywords_filterFunction.html +1 -1
  460. package/docs/examples/w-json-view_filterKeywords_noResultsText.html +1 -1
  461. package/docs/examples/w-json-view_iconColor_keyColor_keyNumbersColor_numColor.html +1 -1
  462. package/docs/examples/w-json-view_iconSize(24)_defItemHeight(32).html +1 -1
  463. package/docs/examples/w-json-view_large data (15,500 lines).html +1 -1
  464. package/docs/examples/w-json-view_no viewHeightMax.html +1 -1
  465. package/docs/examples/w-json-view_rippleColor.html +1 -1
  466. package/docs/examples/w-json-view_toggleItemsAll.html +1 -1
  467. package/docs/examples/w-json-view_toggleItemsByFun.html +1 -1
  468. package/docs/examples/w-json-view_viewHeightMax.html +1 -1
  469. package/docs/examples/w-leaflet-vue-dyn_contourSet for rain data.html +1 -1
  470. package/docs/examples/w-leaflet-vue-dyn_contourSets.html +1 -1
  471. package/docs/examples/w-leaflet-vue-dyn_pointSets.html +1 -1
  472. package/docs/examples/w-leaflet-vue-dyn_polygonSets.html +1 -1
  473. package/docs/examples/w-list-expand_activeMode(multi).html +1 -1
  474. package/docs/examples/w-list-expand_auto scroll.html +1 -1
  475. package/docs/examples/w-list-expand_default.html +1 -1
  476. package/docs/examples/w-list-expand_itemBackgroundColor_itemBackgroundColorHover_itemBackgroundColorActive.html +1 -1
  477. package/docs/examples/w-list-expand_keyText_keyIcon_keyDsp.html +1 -1
  478. package/docs/examples/w-list-expand_paddingStyle.html +1 -1
  479. package/docs/examples/w-list-expand_slot footer.html +1 -1
  480. package/docs/examples/w-list-expand_slot header.html +1 -1
  481. package/docs/examples/w-list-expand_slot item-content_itemTextColor_itemTextColorHover_itemTextColorActive.html +1 -1
  482. package/docs/examples/w-list-expand_slot item-header_item-content.html +1 -1
  483. package/docs/examples/w-list-horizontal_borderBottomSize.html +1 -1
  484. package/docs/examples/w-list-horizontal_default.html +1 -1
  485. package/docs/examples/w-list-horizontal_itemBackgroundColor_itemBackgroundColorHover_itemBackgroundColorActive.html +1 -1
  486. package/docs/examples/w-list-horizontal_itemBorderRadius.html +1 -1
  487. package/docs/examples/w-list-horizontal_itemBorderRadius_space.html +1 -1
  488. package/docs/examples/w-list-horizontal_itemRippleColor.html +1 -1
  489. package/docs/examples/w-list-horizontal_itemRippleColor_borderBottomColor_itemTextColorActive_itemIconColorActive.html +1 -1
  490. package/docs/examples/w-list-horizontal_itemTextFontSize_itemIconSize.html +1 -1
  491. package/docs/examples/w-list-horizontal_keyText_keyIcon.html +1 -1
  492. package/docs/examples/w-list-horizontal_no borderBottom.html +1 -1
  493. package/docs/examples/w-list-horizontal_paddingStyle.html +1 -1
  494. package/docs/examples/w-list-horizontal_paddingStyle_borderBottomColor_itemRippleColor_itemTextColor.html +1 -1
  495. package/docs/examples/w-list-horizontal_slot.html +1 -1
  496. package/docs/examples/w-list-horizontal_space.html +1 -1
  497. package/docs/examples/w-list-horizontal_string items.html +1 -1
  498. package/docs/examples/w-list-vertical_auto scroll.html +1 -1
  499. package/docs/examples/w-list-vertical_default.html +1 -1
  500. package/docs/examples/w-list-vertical_itemActive.html +1 -1
  501. package/docs/examples/w-list-vertical_itemActive_itemBackgroundColor_itemBackgroundColorHover_itemBackgroundColorActive.html +1 -1
  502. package/docs/examples/w-list-vertical_itemActive_itemTextColor_itemTextColorHover_itemTextColorActive.html +1 -1
  503. package/docs/examples/w-list-vertical_keyText_keyIcon.html +1 -1
  504. package/docs/examples/w-list-vertical_paddingStyle.html +1 -1
  505. package/docs/examples/w-list-vertical_slot footer.html +1 -1
  506. package/docs/examples/w-list-vertical_slot header.html +1 -1
  507. package/docs/examples/w-list-vertical_slot item.html +1 -1
  508. package/docs/examples/w-list-vertical_string items.html +1 -1
  509. package/docs/examples/w-list-vertical_useActive (no active).html +1 -1
  510. package/docs/examples/w-list-vertical_useActive (no active)_itemRippleColor.html +1 -1
  511. package/docs/examples/w-panel-avatar_avatarBackgroundColor.html +1 -1
  512. package/docs/examples/w-panel-avatar_avatarBorderRadius.html +1 -1
  513. package/docs/examples/w-panel-avatar_avatarBorderWidth_avatarBorderColor_avatarBackgroundColor.html +1 -1
  514. package/docs/examples/w-panel-avatar_avatarIcon (fontawesome).html +1 -1
  515. package/docs/examples/w-panel-avatar_avatarIcon (material).html +1 -1
  516. package/docs/examples/w-panel-avatar_avatarIcon_avatarIconSize_avatarIconColor_avatarBackgroundColor.html +1 -1
  517. package/docs/examples/w-panel-avatar_avatarOuterPadding_avatarInnerPadding.html +1 -1
  518. package/docs/examples/w-panel-avatar_contentBackgroundColor.html +1 -1
  519. package/docs/examples/w-panel-avatar_contentBorderRadius.html +1 -1
  520. package/docs/examples/w-panel-avatar_contentShadow.html +1 -1
  521. package/docs/examples/w-panel-avatar_default.html +1 -1
  522. package/docs/examples/w-panel-avatar_headerPadding_headerTextColor_headerTextSize_subHeaderTextColor.html +1 -1
  523. package/docs/examples/w-panel-avatar_headerVerticalAlign_spaceVBetweenHeaderAndContent.html +1 -1
  524. package/docs/examples/w-panel-avatar_no avatarShadow.html +1 -1
  525. package/docs/examples/w-panel-avatar_sepLineWidth_sepLineColor.html +1 -1
  526. package/docs/examples/w-panel-avatar_shiftVFromAvaterCenter.html +1 -1
  527. package/docs/examples/w-panel-avatar_slot avatar_avatarBackgroundColor.html +1 -1
  528. package/docs/examples/w-panel-avatar_spaceHBetweenAvatarAndHeader_spaceVBetweenHeaderAndContent.html +1 -1
  529. package/docs/examples/w-panel-bulge_contentBackgroundColor.html +1 -1
  530. package/docs/examples/w-panel-bulge_contentBorderRadius.html +1 -1
  531. package/docs/examples/w-panel-bulge_default.html +1 -1
  532. package/docs/examples/w-panel-bulge_headerBorderRadius.html +1 -1
  533. package/docs/examples/w-panel-bulge_headerTextColor_headerBackgroundColor.html +1 -1
  534. package/docs/examples/w-panel-bulge_no headerShadow_no contentShadow, with green outer.html +1 -1
  535. package/docs/examples/w-panel-bulge_paddingStyle.html +1 -1
  536. package/docs/examples/w-panel-bulge_slot for header_headerBorderRadius_headerBackgroundColor(linear-gradient).html +1 -1
  537. package/docs/examples/w-panel-bulge_with grey outer.html +1 -1
  538. package/docs/examples/w-panel-divide-horizontal_barBorderSize_barBorderColor.html +1 -1
  539. package/docs/examples/w-panel-divide-horizontal_barColor.html +1 -1
  540. package/docs/examples/w-panel-divide-horizontal_barSize.html +1 -1
  541. package/docs/examples/w-panel-divide-horizontal_default.html +1 -1
  542. package/docs/examples/w-panel-divide-horizontal_leftWidthMin_leftWidthMax.html +1 -1
  543. package/docs/examples/w-panel-divide-horizontal_ratio.html +1 -1
  544. package/docs/examples/w-panel-divide-horizontal_ratioMin_ratioMax.html +1 -1
  545. package/docs/examples/w-panel-divide-horizontal_rightWidthMin_rightWidthMax.html +1 -1
  546. package/docs/examples/w-panel-divide-vertical_barBorderSize_barBorderColor.html +1 -1
  547. package/docs/examples/w-panel-divide-vertical_barColor.html +1 -1
  548. package/docs/examples/w-panel-divide-vertical_barSize.html +1 -1
  549. package/docs/examples/w-panel-divide-vertical_bottomHeightMin_bottomHeightMax.html +1 -1
  550. package/docs/examples/w-panel-divide-vertical_default.html +1 -1
  551. package/docs/examples/w-panel-divide-vertical_ratio.html +1 -1
  552. package/docs/examples/w-panel-divide-vertical_ratioMin_ratioMax.html +1 -1
  553. package/docs/examples/w-panel-divide-vertical_topHeightMin_topHeightMax.html +1 -1
  554. package/docs/examples/w-panel-scale_for select.html +1 -1
  555. package/docs/examples/w-panel-scale_for v-btn.html +1 -1
  556. package/docs/examples/w-panel-scale_for w-panel-bulge.html +1 -1
  557. package/docs/examples/w-panel-scale_for w-panel-scrolly.html +1 -1
  558. package/docs/examples/w-panel-scale_for w-text-suggest.html +1 -1
  559. package/docs/examples/w-panel-scrolly_barOpacity_barOpacityHover.html +1 -1
  560. package/docs/examples/w-panel-scrolly_default.html +1 -1
  561. package/docs/examples/w-panel-scrolly_events.html +1 -1
  562. package/docs/examples/w-panel-scrolly_scrollTop.html +1 -1
  563. package/docs/examples/w-panel-stripe_borderRadius.html +1 -1
  564. package/docs/examples/w-panel-stripe_buttons in slot footer.html +1 -1
  565. package/docs/examples/w-panel-stripe_headerBackgroundColor_footerBackgroundColor.html +1 -1
  566. package/docs/examples/w-panel-stripe_no footer.html +1 -1
  567. package/docs/examples/w-panel-stripe_no header.html +1 -1
  568. package/docs/examples/w-panel-stripe_no shadow, with crimson outer.html +1 -1
  569. package/docs/examples/w-panel-stripe_only slot icon and slot title in header.html +1 -1
  570. package/docs/examples/w-panel-stripe_only slot title in header.html +1 -1
  571. package/docs/examples/w-panel-stripe_padding.html +1 -1
  572. package/docs/examples/w-panel-stripe_separate for slot content.html +1 -1
  573. package/docs/examples/w-panel-stripe_slot icon (fontawesome).html +1 -1
  574. package/docs/examples/w-panel-stripe_slot icon, slot title, slot description, slot content and slot footer.html +1 -1
  575. package/docs/examples/w-panel-stripe_table in slot content.html +1 -1
  576. package/docs/examples/w-panel-stripe_with grey outer.html +1 -1
  577. package/docs/examples/w-popup-edit-text_default.html +1 -1
  578. package/docs/examples/w-popup-edit-text_in table.html +1 -1
  579. package/docs/examples/w-popup-edit-text_minWidthForPopup.html +1 -1
  580. package/docs/examples/w-popup-edit-text_minWidthForValue.html +1 -1
  581. package/docs/examples/w-popup-edit-text_no title.html +1 -1
  582. package/docs/examples/w-popup-edit-text_title_contentIcon_contentIconColor_contentIconSize.html +1 -1
  583. package/docs/examples/w-popup-edit-text_title_footerBackgroundColor.html +1 -1
  584. package/docs/examples/w-popup-edit-text_title_inputTextColor_contentIconColor_contentBackgroundColor.html +1 -1
  585. package/docs/examples/w-popup-edit-text_title_saveBtnText_saveBtnTextColor_saveBtnTextColorHover.html +3 -2
  586. package/docs/examples/w-popup-edit-text_title_titleColor_titleFontSize_headerBackgroundColor.html +1 -1
  587. package/docs/examples/w-popup_auto flipping in dialog.html +1 -1
  588. package/docs/examples/w-popup_auto flipping in scroll panel.html +1 -1
  589. package/docs/examples/w-popup_autoFitMaxWidth.html +1 -1
  590. package/docs/examples/w-popup_autoFitMinWidth.html +1 -1
  591. package/docs/examples/w-popup_backgroundColor.html +1 -1
  592. package/docs/examples/w-popup_borderRadius.html +1 -1
  593. package/docs/examples/w-popup_click item by latency hiding.html +1 -1
  594. package/docs/examples/w-popup_default.html +1 -1
  595. package/docs/examples/w-popup_in popup.html +1 -1
  596. package/docs/examples/w-popup_in scroll panel.html +1 -1
  597. package/docs/examples/w-popup_isolated.html +1 -1
  598. package/docs/examples/w-popup_maxWidth.html +1 -1
  599. package/docs/examples/w-popup_minWidth.html +1 -1
  600. package/docs/examples/w-popup_no shadow_backgroundColor.html +1 -1
  601. package/docs/examples/w-popup_not editable.html +1 -1
  602. package/docs/examples/w-popup_paddingStyle.html +1 -1
  603. package/docs/examples/w-popup_placement.html +1 -1
  604. package/docs/examples/w-popup_placementDist.html +1 -1
  605. package/docs/examples/w-popup_shadowStyle.html +1 -1
  606. package/docs/examples/w-popup_slot for table_maxWidth.html +1 -1
  607. package/docs/examples/w-popup_textColor_backgroundColor.html +1 -1
  608. package/docs/examples/w-popup_textFontSize.html +1 -1
  609. package/docs/examples/w-popup_transitionTime.html +1 -1
  610. package/docs/examples/w-progress-bar_decimal.html +1 -1
  611. package/docs/examples/w-progress-bar_default.html +1 -1
  612. package/docs/examples/w-progress-bar_enableContinuous.html +1 -1
  613. package/docs/examples/w-progress-bar_enableContinuous_continuousIncrease_continuousPeriod.html +1 -1
  614. package/docs/examples/w-progress-bar_enableContinuous_progColor_progBackgroundColor.html +1 -1
  615. package/docs/examples/w-progress-bar_enableIconFinish (no iconFinish).html +1 -1
  616. package/docs/examples/w-progress-bar_enableIconWaiting (no iconWaiting).html +1 -1
  617. package/docs/examples/w-progress-bar_height.html +1 -1
  618. package/docs/examples/w-progress-bar_height_borderRadius.html +1 -1
  619. package/docs/examples/w-progress-bar_iconFinish (fontawesome).html +1 -1
  620. package/docs/examples/w-progress-bar_iconFinishColor.html +1 -1
  621. package/docs/examples/w-progress-bar_iconSize.html +1 -1
  622. package/docs/examples/w-progress-bar_iconWaiting (fontawesome).html +1 -1
  623. package/docs/examples/w-progress-bar_iconWaitingColor.html +1 -1
  624. package/docs/examples/w-progress-bar_progColor.html +1 -1
  625. package/docs/examples/w-progress-bar_progColor_progBackgroundColor.html +1 -1
  626. package/docs/examples/w-progress-bar_title.html +1 -1
  627. package/docs/examples/w-progress-bar_title_titleTextColor.html +1 -1
  628. package/docs/examples/w-progress-bar_title_titleTextFontSize.html +1 -1
  629. package/docs/examples/w-progress-bar_value=0 (waiting).html +1 -1
  630. package/docs/examples/w-progress-bar_value=100 (finish).html +1 -1
  631. package/docs/examples/w-progress-bar_valueTextColor.html +1 -1
  632. package/docs/examples/w-progress-bar_valueTextFontSize.html +1 -1
  633. package/docs/examples/w-progress-circle_color.html +1 -1
  634. package/docs/examples/w-progress-circle_color_trackColor.html +1 -1
  635. package/docs/examples/w-progress-circle_color_trackColor_textColor.html +1 -1
  636. package/docs/examples/w-progress-circle_default.html +1 -1
  637. package/docs/examples/w-progress-circle_small size.html +1 -1
  638. package/docs/examples/w-progress-circle_tooltip.html +1 -1
  639. package/docs/examples/w-progress-circle_tooltip_tooltipBorderRadius.html +1 -1
  640. package/docs/examples/w-progress-circle_tooltip_tooltipPaddingStyle.html +1 -1
  641. package/docs/examples/w-progress-circle_tooltip_tooltipTextColor_tooltipBackgroundColor.html +1 -1
  642. package/docs/examples/w-progress-circle_tooltip_tooltipTextFontSize.html +1 -1
  643. package/docs/examples/w-progress-circle_very small size.html +1 -1
  644. package/docs/examples/w-progress-circle_width.html +1 -1
  645. package/docs/examples/w-progress-circle_/344/270/255/346/226/207text.html +1 -1
  646. package/docs/examples/w-quill-vue-dyn_default.html +1 -1
  647. package/docs/examples/w-quill-vue-dyn_height.html +1 -1
  648. package/docs/examples/w-quill-vue-dyn_not editable.html +1 -1
  649. package/docs/examples/w-quill-vue-dyn_settings.html +1 -1
  650. package/docs/examples/w-switch_checkedSwitchCircleColor_checkedSwitchCircleColorHover_checkedSwitchBarColor_checkedSwitchBarColorHover.html +1 -1
  651. package/docs/examples/w-switch_default.html +1 -1
  652. package/docs/examples/w-switch_not editable.html +1 -1
  653. package/docs/examples/w-switch_not editable_checkedSwitchCircleColorDisabled_checkedSwitchBarColorDisabled_uncheckedSwitchCircleColorDisabled.html +1 -1
  654. package/docs/examples/w-switch_switchSize_textFontSize.html +1 -1
  655. package/docs/examples/w-switch_text.html +1 -1
  656. package/docs/examples/w-switch_text_textColor_textColorHover.html +1 -1
  657. package/docs/examples/w-switch_uncheckedSwitchCircleColor_uncheckedSwitchCircleColorHover_uncheckedSwitchBarColor_uncheckedSwitchBarColorHover.html +1 -1
  658. package/docs/examples/w-switch_use string (y or n).html +1 -1
  659. package/docs/examples/w-table-dyn_default.html +1 -1
  660. package/docs/examples/w-table-dyn_editable.html +1 -1
  661. package/docs/examples/w-table-dyn_editable_checkId.html +1 -1
  662. package/docs/examples/w-table-dyn_editable_checkId_opt.modifyDataWhenSave_save(call cmp. method).html +1 -1
  663. package/docs/examples/w-table-dyn_editable_checkId_successMsgFromAddRow_errorMsgFromAddRow.html +1 -1
  664. package/docs/examples/w-table-dyn_editable_checkId_tooltipAddRow_tooltipDeleteSelectedRows.html +1 -1
  665. package/docs/examples/w-table-dyn_editable_inforPaddingStyle_menuBackgroundColor.html +1 -1
  666. package/docs/examples/w-table-dyn_editable_opt.beforeAddRow.html +1 -1
  667. package/docs/examples/w-table-dyn_editable_opt.kpConvertKeysWhenUploadData.html +1 -1
  668. package/docs/examples/w-table-dyn_editable_opt.optForUploadData.html +1 -1
  669. package/docs/examples/w-table-dyn_editable_slot btns.html +1 -1
  670. package/docs/examples/w-table-dyn_editable_textLabelDataName_textPlaceholderDataName_textLabelDataDescription.html +1 -1
  671. package/docs/examples/w-table-dyn_fixIds (fix id).html +1 -1
  672. package/docs/examples/w-table-dyn_hideIds (hide mappingId).html +1 -1
  673. package/docs/examples/w-table-dyn_name_description.html +1 -1
  674. package/docs/examples/w-table-dyn_opt.kpHead.html +1 -1
  675. package/docs/examples/w-table-dyn_removeIdsWhenDownload (remove id, mappingId, order, isActive).html +1 -1
  676. package/docs/examples/w-table-dyn_slot btns.html +1 -1
  677. package/docs/examples/w-table-dyn_slot infor (name_description).html +1 -1
  678. package/docs/examples/w-table-dyn_sortColIds (sort by order).html +1 -1
  679. package/docs/examples/w-text-int_borderRadius.html +1 -1
  680. package/docs/examples/w-text-int_border_backgroundColor_backgroundColorHover_backgroundColorFocus.html +1 -1
  681. package/docs/examples/w-text-int_border_borderRadius.html +1 -1
  682. package/docs/examples/w-text-int_border_buttonColor_buttonColorHover_buttonColorFocus.html +1 -1
  683. package/docs/examples/w-text-int_border_default.html +1 -1
  684. package/docs/examples/w-text-int_border_not editable.html +1 -1
  685. package/docs/examples/w-text-int_border_width.html +1 -1
  686. package/docs/examples/w-text-int_buttonColor_buttonColorHover_buttonColorFocus.html +1 -1
  687. package/docs/examples/w-text-int_buttonIconSize.html +1 -1
  688. package/docs/examples/w-text-int_default.html +1 -1
  689. package/docs/examples/w-text-int_not editable.html +1 -1
  690. package/docs/examples/w-text-int_textColor.html +1 -1
  691. package/docs/examples/w-text-int_textFontSize.html +1 -1
  692. package/docs/examples/w-text-int_width.html +1 -1
  693. package/docs/examples/w-text-select_a lot of items.html +1 -1
  694. package/docs/examples/w-text-select_borderRadius.html +1 -1
  695. package/docs/examples/w-text-select_border_a lot of items.html +1 -1
  696. package/docs/examples/w-text-select_border_backgroundColor_backgroundColorHover_backgroundColorFocus.html +1 -1
  697. package/docs/examples/w-text-select_border_borderRadius.html +1 -1
  698. package/docs/examples/w-text-select_border_default.html +1 -1
  699. package/docs/examples/w-text-select_border_events.html +1 -1
  700. package/docs/examples/w-text-select_border_expansionIconSize.html +1 -1
  701. package/docs/examples/w-text-select_border_fullwidth.html +1 -1
  702. package/docs/examples/w-text-select_border_itemPaddingStyle.html +1 -1
  703. package/docs/examples/w-text-select_border_itemTextColor_itemTextColorHover_itemBackgroundColor.html +1 -1
  704. package/docs/examples/w-text-select_border_itemTextFontSize_defItemHeight.html +1 -1
  705. package/docs/examples/w-text-select_border_items(string array).html +1 -1
  706. package/docs/examples/w-text-select_border_keyText.html +1 -1
  707. package/docs/examples/w-text-select_border_leftIcon (fontawesome).html +1 -1
  708. package/docs/examples/w-text-select_border_leftIcon (material).html +1 -1
  709. package/docs/examples/w-text-select_border_leftIcon_leftIconColor_leftIconColorHover.html +1 -1
  710. package/docs/examples/w-text-select_border_leftIcon_leftIconSize.html +1 -1
  711. package/docs/examples/w-text-select_border_maxHeight.html +1 -1
  712. package/docs/examples/w-text-select_border_maxWidth_autoFitMinWidth_autoFitMaxWidth.html +1 -1
  713. package/docs/examples/w-text-select_border_minWidth_autoFitMinWidth_autoFitMaxWidth.html +1 -1
  714. package/docs/examples/w-text-select_border_not editable.html +1 -1
  715. package/docs/examples/w-text-select_border_paddingStyle (equal height to using icon).html +1 -1
  716. package/docs/examples/w-text-select_border_paddingStyle (thin style).html +1 -1
  717. package/docs/examples/w-text-select_border_rightIcon_rightIconColor_rightIconColorHover.html +1 -1
  718. package/docs/examples/w-text-select_border_rightIcon_rightIconSize.html +1 -1
  719. package/docs/examples/w-text-select_border_showExpansionIcon.html +1 -1
  720. package/docs/examples/w-text-select_border_slot item.html +1 -1
  721. package/docs/examples/w-text-select_border_slot select.html +1 -1
  722. package/docs/examples/w-text-select_border_textColor_expansionIconColor.html +1 -1
  723. package/docs/examples/w-text-select_border_textFontSize.html +1 -1
  724. package/docs/examples/w-text-select_border_with popup.html +1 -1
  725. package/docs/examples/w-text-select_default.html +1 -1
  726. package/docs/examples/w-text-select_events.html +1 -1
  727. package/docs/examples/w-text-select_expansionIconSize.html +1 -1
  728. package/docs/examples/w-text-select_fullwidth.html +1 -1
  729. package/docs/examples/w-text-select_itemPaddingStyle.html +1 -1
  730. package/docs/examples/w-text-select_itemTextColor_itemTextColorHover_itemBackgroundColor_itemBackgroundColorHover.html +1 -1
  731. package/docs/examples/w-text-select_itemTextFontSize_defItemHeight.html +1 -1
  732. package/docs/examples/w-text-select_items(string array).html +1 -1
  733. package/docs/examples/w-text-select_keyText.html +1 -1
  734. package/docs/examples/w-text-select_leftIcon (fontawesome).html +1 -1
  735. package/docs/examples/w-text-select_leftIcon (material).html +1 -1
  736. package/docs/examples/w-text-select_leftIcon_leftIconColor_leftIconColorHover_leftIconColorFocus.html +1 -1
  737. package/docs/examples/w-text-select_leftIcon_leftIconSize.html +1 -1
  738. package/docs/examples/w-text-select_maxHeight.html +1 -1
  739. package/docs/examples/w-text-select_maxWidth_autoFitMinWidth_autoFitMaxWidth.html +1 -1
  740. package/docs/examples/w-text-select_minWidth_autoFitMinWidth_autoFitMaxWidth.html +1 -1
  741. package/docs/examples/w-text-select_not editable.html +1 -1
  742. package/docs/examples/w-text-select_paddingStyle (equal height to using icon).html +1 -1
  743. package/docs/examples/w-text-select_paddingStyle (thin style).html +1 -1
  744. package/docs/examples/w-text-select_rightIcon_rightIconColor_rightIconColorHover_rightIconColorFocus.html +1 -1
  745. package/docs/examples/w-text-select_rightIcon_rightIconSize.html +1 -1
  746. package/docs/examples/w-text-select_showExpansionIcon.html +1 -1
  747. package/docs/examples/w-text-select_slot item.html +1 -1
  748. package/docs/examples/w-text-select_slot select.html +1 -1
  749. package/docs/examples/w-text-select_textColor_expansionIconColor.html +1 -1
  750. package/docs/examples/w-text-select_textFontSize.html +1 -1
  751. package/docs/examples/w-text-select_with popup.html +1 -1
  752. package/docs/examples/w-text-suggest_a lot of items.html +1 -1
  753. package/docs/examples/w-text-suggest_borderRadius.html +1 -1
  754. package/docs/examples/w-text-suggest_border_a lot of items.html +1 -1
  755. package/docs/examples/w-text-suggest_border_backgroundColor_backgroundColorHover_backgroundColorFocus.html +1 -1
  756. package/docs/examples/w-text-suggest_border_borderRadius.html +1 -1
  757. package/docs/examples/w-text-suggest_border_default.html +1 -1
  758. package/docs/examples/w-text-suggest_border_events.html +1 -1
  759. package/docs/examples/w-text-suggest_border_expansionIconSize.html +1 -1
  760. package/docs/examples/w-text-suggest_border_fullwidth.html +1 -1
  761. package/docs/examples/w-text-suggest_border_itemPaddingStyle.html +1 -1
  762. package/docs/examples/w-text-suggest_border_itemTextColor_itemTextColorHover_itemBackgroundColor.html +1 -1
  763. package/docs/examples/w-text-suggest_border_itemTextFontSize_defItemHeight.html +1 -1
  764. package/docs/examples/w-text-suggest_border_items(string array).html +1 -1
  765. package/docs/examples/w-text-suggest_border_keyText.html +1 -1
  766. package/docs/examples/w-text-suggest_border_leftIcon (fontawesome).html +1 -1
  767. package/docs/examples/w-text-suggest_border_leftIcon (material).html +1 -1
  768. package/docs/examples/w-text-suggest_border_leftIcon_leftIconColor_leftIconColorHover.html +1 -1
  769. package/docs/examples/w-text-suggest_border_leftIcon_leftIconSize.html +1 -1
  770. package/docs/examples/w-text-suggest_border_noResultsText.html +1 -1
  771. package/docs/examples/w-text-suggest_border_not editable.html +1 -1
  772. package/docs/examples/w-text-suggest_border_paddingStyle (equal height to using icon).html +1 -1
  773. package/docs/examples/w-text-suggest_border_paddingStyle (thin style).html +1 -1
  774. package/docs/examples/w-text-suggest_border_placeholder.html +1 -1
  775. package/docs/examples/w-text-suggest_border_rightIcon_rightIconColor_rightIconColorHover.html +1 -1
  776. package/docs/examples/w-text-suggest_border_rightIcon_rightIconSize.html +1 -1
  777. package/docs/examples/w-text-suggest_border_showExpansionIcon.html +1 -1
  778. package/docs/examples/w-text-suggest_border_showPanel(press enter to hide panel)_focused.html +1 -1
  779. package/docs/examples/w-text-suggest_border_slot item.html +1 -1
  780. package/docs/examples/w-text-suggest_border_textColor_expansionIconColor.html +1 -1
  781. package/docs/examples/w-text-suggest_border_textFontSize.html +1 -1
  782. package/docs/examples/w-text-suggest_border_with popup.html +1 -1
  783. package/docs/examples/w-text-suggest_default.html +1 -1
  784. package/docs/examples/w-text-suggest_events.html +1 -1
  785. package/docs/examples/w-text-suggest_expansionIconSize.html +1 -1
  786. package/docs/examples/w-text-suggest_fullwidth.html +1 -1
  787. package/docs/examples/w-text-suggest_itemPaddingStyle.html +1 -1
  788. package/docs/examples/w-text-suggest_itemTextColor_itemTextColorHover_itemBackgroundColor_itemBackgroundColorHover.html +1 -1
  789. package/docs/examples/w-text-suggest_itemTextFontSize_defItemHeight.html +1 -1
  790. package/docs/examples/w-text-suggest_items(string array).html +1 -1
  791. package/docs/examples/w-text-suggest_keyText.html +1 -1
  792. package/docs/examples/w-text-suggest_leftIcon (fontawesome).html +1 -1
  793. package/docs/examples/w-text-suggest_leftIcon (material).html +1 -1
  794. package/docs/examples/w-text-suggest_leftIcon_leftIconColor_leftIconColorHover_leftIconColorFocus.html +1 -1
  795. package/docs/examples/w-text-suggest_leftIcon_leftIconSize.html +1 -1
  796. package/docs/examples/w-text-suggest_maxHeight.html +1 -1
  797. package/docs/examples/w-text-suggest_maxWidth_autoFitMinWidth_autoFitMaxWidth.html +1 -1
  798. package/docs/examples/w-text-suggest_minWidth_autoFitMinWidth_autoFitMaxWidth.html +1 -1
  799. package/docs/examples/w-text-suggest_noResultsText.html +1 -1
  800. package/docs/examples/w-text-suggest_not editable.html +1 -1
  801. package/docs/examples/w-text-suggest_paddingStyle (equal height to using icon).html +1 -1
  802. package/docs/examples/w-text-suggest_paddingStyle (thin style).html +1 -1
  803. package/docs/examples/w-text-suggest_placeholder.html +1 -1
  804. package/docs/examples/w-text-suggest_rightIcon_rightIconColor_rightIconColorHover_rightIconColorFocus.html +1 -1
  805. package/docs/examples/w-text-suggest_rightIcon_rightIconSize.html +1 -1
  806. package/docs/examples/w-text-suggest_showExpansionIcon.html +1 -1
  807. package/docs/examples/w-text-suggest_showPanel(press enter to hide panel)_focused.html +1 -1
  808. package/docs/examples/w-text-suggest_slot item.html +1 -1
  809. package/docs/examples/w-text-suggest_textColor_expansionIconColor.html +1 -1
  810. package/docs/examples/w-text-suggest_textFontSize.html +1 -1
  811. package/docs/examples/w-text-suggest_with popup.html +1 -1
  812. package/docs/examples/w-text_border_backgroundColor_backgroundColorHover_backgroundColorFocus.html +1 -1
  813. package/docs/examples/w-text_border_borderRadius_paddingStyle.html +1 -1
  814. package/docs/examples/w-text_border_default.html +1 -1
  815. package/docs/examples/w-text_border_events.html +1 -1
  816. package/docs/examples/w-text_border_fullwidth.html +1 -1
  817. package/docs/examples/w-text_border_leftIcon (fontawesome).html +1 -1
  818. package/docs/examples/w-text_border_leftIcon (material).html +1 -1
  819. package/docs/examples/w-text_border_leftIcon_leftIconColor_leftIconColorHover.html +1 -1
  820. package/docs/examples/w-text_border_not editable.html +1 -1
  821. package/docs/examples/w-text_border_placeholder.html +1 -1
  822. package/docs/examples/w-text_border_rightIcon_rightIconColor_rightIconColorHover.html +1 -1
  823. package/docs/examples/w-text_border_textAlign.html +1 -1
  824. package/docs/examples/w-text_border_textColor.html +1 -1
  825. package/docs/examples/w-text_bottomLineBorderColor_bottomLineBorderColorHover_bottomLineBorderColorFocus.html +1 -1
  826. package/docs/examples/w-text_default.html +1 -1
  827. package/docs/examples/w-text_events.html +1 -1
  828. package/docs/examples/w-text_fullwidth.html +1 -1
  829. package/docs/examples/w-text_leftIcon (fontawesome).html +1 -1
  830. package/docs/examples/w-text_leftIcon (material).html +1 -1
  831. package/docs/examples/w-text_leftIcon_leftIconColor_leftIconColorHover_leftIconColorFocus.html +1 -1
  832. package/docs/examples/w-text_leftIcon_leftIconSize.html +1 -1
  833. package/docs/examples/w-text_leftIcon_leftIconTooltip.html +1 -1
  834. package/docs/examples/w-text_not editable.html +1 -1
  835. package/docs/examples/w-text_placeholder.html +1 -1
  836. package/docs/examples/w-text_rightIcon.html +1 -1
  837. package/docs/examples/w-text_rightIcon_rightIconColor_rightIconColorHover_rightIconColorFocus.html +1 -1
  838. package/docs/examples/w-text_rightIcon_rightIconSize.html +1 -1
  839. package/docs/examples/w-text_rightIcon_rightIconTooltip.html +1 -1
  840. package/docs/examples/w-text_textAlign.html +1 -1
  841. package/docs/examples/w-text_textColor.html +1 -1
  842. package/docs/examples/w-text_textFontSize.html +1 -1
  843. package/docs/examples/w-textarea_borderColorFocus.html +1 -1
  844. package/docs/examples/w-textarea_default.html +1 -1
  845. package/docs/examples/w-textarea_fullwidth.html +1 -1
  846. package/docs/examples/w-textarea_not editable.html +1 -1
  847. package/docs/examples/w-textarea_placeholder.html +1 -1
  848. package/docs/examples/w-timeday-range_between.html +1 -1
  849. package/docs/examples/w-timeday-range_borderRadius.html +1 -1
  850. package/docs/examples/w-timeday-range_border_between.html +1 -1
  851. package/docs/examples/w-timeday-range_border_borderRadius.html +1 -1
  852. package/docs/examples/w-timeday-range_border_default.html +1 -1
  853. package/docs/examples/w-timeday-range_border_icon (fontawesome).html +1 -1
  854. package/docs/examples/w-timeday-range_border_icon (material).html +1 -1
  855. package/docs/examples/w-timeday-range_border_iconColor_iconColorFoucs_borderColor.html +1 -1
  856. package/docs/examples/w-timeday-range_border_iconTooltip.html +1 -1
  857. package/docs/examples/w-timeday-range_border_not editable.html +1 -1
  858. package/docs/examples/w-timeday-range_border_paddingStyle (equal height to using icon).html +1 -1
  859. package/docs/examples/w-timeday-range_border_paddingStyle (thin style)_placementDist.html +1 -1
  860. package/docs/examples/w-timeday-range_border_paddingStyle (thin style)_textFontSize_placementDist.html +1 -1
  861. package/docs/examples/w-timeday-range_border_pickColor.html +1 -1
  862. package/docs/examples/w-timeday-range_border_textColor.html +1 -1
  863. package/docs/examples/w-timeday-range_default.html +1 -1
  864. package/docs/examples/w-timeday-range_icon (fontawesome).html +1 -1
  865. package/docs/examples/w-timeday-range_icon (material).html +1 -1
  866. package/docs/examples/w-timeday-range_iconColor_iconColorFoucs.html +1 -1
  867. package/docs/examples/w-timeday-range_iconTooltip.html +1 -1
  868. package/docs/examples/w-timeday-range_icon_iconSize_placementDist.html +1 -1
  869. package/docs/examples/w-timeday-range_not editable.html +1 -1
  870. package/docs/examples/w-timeday-range_paddingStyle (equal height to using icon).html +1 -1
  871. package/docs/examples/w-timeday-range_paddingStyle (thin style)_placementDist.html +1 -1
  872. package/docs/examples/w-timeday-range_paddingStyle (thin style)_textFontSize_placementDist.html +1 -1
  873. package/docs/examples/w-timeday-range_pickColor.html +1 -1
  874. package/docs/examples/w-timeday-range_textColor.html +1 -1
  875. package/docs/examples/w-timeday_borderRadius.html +1 -1
  876. package/docs/examples/w-timeday_border_borderRadius.html +1 -1
  877. package/docs/examples/w-timeday_border_default.html +1 -1
  878. package/docs/examples/w-timeday_border_icon (fontawesome).html +1 -1
  879. package/docs/examples/w-timeday_border_icon (material).html +1 -1
  880. package/docs/examples/w-timeday_border_iconColor_iconColorFoucs_borderColor.html +1 -1
  881. package/docs/examples/w-timeday_border_iconTooltip.html +1 -1
  882. package/docs/examples/w-timeday_border_not editable.html +1 -1
  883. package/docs/examples/w-timeday_border_paddingStyle (equal height to using icon).html +1 -1
  884. package/docs/examples/w-timeday_border_paddingStyle (thin style)_placementDist.html +1 -1
  885. package/docs/examples/w-timeday_border_paddingStyle (thin style)_textFontSize_placementDist.html +1 -1
  886. package/docs/examples/w-timeday_border_pickColor.html +1 -1
  887. package/docs/examples/w-timeday_border_textColor.html +1 -1
  888. package/docs/examples/w-timeday_default.html +1 -1
  889. package/docs/examples/w-timeday_icon (fontawesome).html +1 -1
  890. package/docs/examples/w-timeday_icon (material).html +1 -1
  891. package/docs/examples/w-timeday_iconColor_iconColorFoucs.html +1 -1
  892. package/docs/examples/w-timeday_iconTooltip.html +1 -1
  893. package/docs/examples/w-timeday_icon_iconSize_placementDist.html +1 -1
  894. package/docs/examples/w-timeday_not editable.html +1 -1
  895. package/docs/examples/w-timeday_paddingStyle (equal height to using icon).html +1 -1
  896. package/docs/examples/w-timeday_paddingStyle (thin style)_placementDist.html +1 -1
  897. package/docs/examples/w-timeday_paddingStyle (thin style)_textFontSize_placementDist.html +1 -1
  898. package/docs/examples/w-timeday_pickColor.html +1 -1
  899. package/docs/examples/w-timeday_textColor.html +1 -1
  900. package/docs/examples/w-timeminute-range_between.html +1 -1
  901. package/docs/examples/w-timeminute-range_borderRadius.html +1 -1
  902. package/docs/examples/w-timeminute-range_border_between.html +1 -1
  903. package/docs/examples/w-timeminute-range_border_borderRadius.html +1 -1
  904. package/docs/examples/w-timeminute-range_border_default.html +1 -1
  905. package/docs/examples/w-timeminute-range_border_hourMin_hourMax.html +1 -1
  906. package/docs/examples/w-timeminute-range_border_icon (fontawesome).html +1 -1
  907. package/docs/examples/w-timeminute-range_border_icon (material).html +1 -1
  908. package/docs/examples/w-timeminute-range_border_iconColor_iconColorFoucs_borderColor.html +1 -1
  909. package/docs/examples/w-timeminute-range_border_iconTooltip.html +1 -1
  910. package/docs/examples/w-timeminute-range_border_minuteInter.html +1 -1
  911. package/docs/examples/w-timeminute-range_border_minutesCustom.html +1 -1
  912. package/docs/examples/w-timeminute-range_border_not editable.html +1 -1
  913. package/docs/examples/w-timeminute-range_border_paddingStyle (equal height to using icon).html +1 -1
  914. package/docs/examples/w-timeminute-range_border_paddingStyle (thin style)_placementDist.html +1 -1
  915. package/docs/examples/w-timeminute-range_border_paddingStyle (thin style)_textFontSize_placementDist.html +1 -1
  916. package/docs/examples/w-timeminute-range_border_pickColor.html +1 -1
  917. package/docs/examples/w-timeminute-range_border_textColor_expansionIconColor.html +1 -1
  918. package/docs/examples/w-timeminute-range_default.html +1 -1
  919. package/docs/examples/w-timeminute-range_hourMin_hourMax.html +1 -1
  920. package/docs/examples/w-timeminute-range_icon (fontawesome).html +1 -1
  921. package/docs/examples/w-timeminute-range_icon (material).html +1 -1
  922. package/docs/examples/w-timeminute-range_iconColor_iconColorFoucs.html +1 -1
  923. package/docs/examples/w-timeminute-range_iconTooltip.html +1 -1
  924. package/docs/examples/w-timeminute-range_icon_iconSize_placementDist.html +1 -1
  925. package/docs/examples/w-timeminute-range_minuteInter.html +1 -1
  926. package/docs/examples/w-timeminute-range_minutesCustom.html +1 -1
  927. package/docs/examples/w-timeminute-range_not editable.html +1 -1
  928. package/docs/examples/w-timeminute-range_paddingStyle (equal height to using icon).html +1 -1
  929. package/docs/examples/w-timeminute-range_paddingStyle (thin style)_placementDist.html +1 -1
  930. package/docs/examples/w-timeminute-range_paddingStyle (thin style)_textFontSize_placementDist.html +1 -1
  931. package/docs/examples/w-timeminute-range_pickColor.html +1 -1
  932. package/docs/examples/w-timeminute-range_textColor_expansionIconColor.html +1 -1
  933. package/docs/examples/w-timeminute_borderRadius.html +1 -1
  934. package/docs/examples/w-timeminute_border_borderRadius.html +1 -1
  935. package/docs/examples/w-timeminute_border_default.html +1 -1
  936. package/docs/examples/w-timeminute_border_hourMin_hourMax.html +1 -1
  937. package/docs/examples/w-timeminute_border_icon (fontawesome).html +1 -1
  938. package/docs/examples/w-timeminute_border_icon (material).html +1 -1
  939. package/docs/examples/w-timeminute_border_iconColor_iconColorFoucs_borderColor.html +1 -1
  940. package/docs/examples/w-timeminute_border_iconTooltip.html +1 -1
  941. package/docs/examples/w-timeminute_border_minuteInter.html +1 -1
  942. package/docs/examples/w-timeminute_border_minutesCustom.html +1 -1
  943. package/docs/examples/w-timeminute_border_not editable.html +1 -1
  944. package/docs/examples/w-timeminute_border_paddingStyle (equal height to using icon).html +1 -1
  945. package/docs/examples/w-timeminute_border_paddingStyle (thin style)_placementDist.html +1 -1
  946. package/docs/examples/w-timeminute_border_paddingStyle (thin style)_textFontSize_placementDist.html +1 -1
  947. package/docs/examples/w-timeminute_border_pickColor.html +1 -1
  948. package/docs/examples/w-timeminute_border_textColor_expansionIconColor.html +1 -1
  949. package/docs/examples/w-timeminute_default.html +1 -1
  950. package/docs/examples/w-timeminute_hourMin_hourMax.html +1 -1
  951. package/docs/examples/w-timeminute_icon (fontawesome).html +1 -1
  952. package/docs/examples/w-timeminute_icon (material).html +1 -1
  953. package/docs/examples/w-timeminute_iconColor_iconColorFoucs.html +1 -1
  954. package/docs/examples/w-timeminute_iconTooltip.html +1 -1
  955. package/docs/examples/w-timeminute_icon_iconSize_placementDist.html +1 -1
  956. package/docs/examples/w-timeminute_minuteInter.html +1 -1
  957. package/docs/examples/w-timeminute_minutesCustom.html +1 -1
  958. package/docs/examples/w-timeminute_not editable.html +1 -1
  959. package/docs/examples/w-timeminute_paddingStyle (equal height to using icon).html +1 -1
  960. package/docs/examples/w-timeminute_paddingStyle (thin style)_placementDist.html +1 -1
  961. package/docs/examples/w-timeminute_paddingStyle (thin style)_textFontSize_placementDist.html +1 -1
  962. package/docs/examples/w-timeminute_pickColor.html +1 -1
  963. package/docs/examples/w-timeminute_textColor_expansionIconColor.html +1 -1
  964. package/docs/examples/w-tinymce-vue-dyn_default.html +1 -1
  965. package/docs/examples/w-tinymce-vue-dyn_height.html +1 -1
  966. package/docs/examples/w-tinymce-vue-dyn_not editable.html +1 -1
  967. package/docs/examples/w-tinymce-vue-dyn_settings.html +1 -1
  968. package/docs/examples/w-tooltip_auto flipping in dialog.html +1 -1
  969. package/docs/examples/w-tooltip_auto flipping in popup.html +1 -1
  970. package/docs/examples/w-tooltip_auto flipping in scroll panel.html +1 -1
  971. package/docs/examples/w-tooltip_autoFitMaxWidth.html +1 -1
  972. package/docs/examples/w-tooltip_autoFitMinWidth.html +1 -1
  973. package/docs/examples/w-tooltip_backgroundColor.html +1 -1
  974. package/docs/examples/w-tooltip_borderRadius.html +1 -1
  975. package/docs/examples/w-tooltip_default.html +1 -1
  976. package/docs/examples/w-tooltip_in scroll panel.html +1 -1
  977. package/docs/examples/w-tooltip_maxWidth.html +1 -1
  978. package/docs/examples/w-tooltip_minWidth.html +1 -1
  979. package/docs/examples/w-tooltip_no shadow_backgroundColor.html +1 -1
  980. package/docs/examples/w-tooltip_not editable.html +1 -1
  981. package/docs/examples/w-tooltip_paddingStyle.html +1 -1
  982. package/docs/examples/w-tooltip_placement.html +1 -1
  983. package/docs/examples/w-tooltip_placementDist.html +1 -1
  984. package/docs/examples/w-tooltip_scroll in large zone.html +1 -1
  985. package/docs/examples/w-tooltip_shadowStyle.html +1 -1
  986. package/docs/examples/w-tooltip_slot for table_maxWidth.html +1 -1
  987. package/docs/examples/w-tooltip_textColor_backgroundColor.html +1 -1
  988. package/docs/examples/w-tooltip_textFontSize.html +1 -1
  989. package/docs/examples/w-tooltip_transitionTime.html +1 -1
  990. package/docs/examples/w-tree_activable_itemActive.html +12 -2
  991. package/docs/examples/w-tree_activable_itemActive_funActive.html +12 -2
  992. package/docs/examples/w-tree_activable_itemActive_itemTextColor_itemTextColorHover.html +12 -2
  993. package/docs/examples/w-tree_default.html +12 -2
  994. package/docs/examples/w-tree_defaultDisplayLevel.html +12 -2
  995. package/docs/examples/w-tree_draggable.html +15 -3
  996. package/docs/examples/w-tree_draggable_dgInsertLineColor_dgInsertBackgroundColor_dgBelongBackgroundColor.html +13 -3
  997. package/docs/examples/w-tree_draggable_dgPreviewOpacity_dgPreviewBorderWidth_dgBelongBackgroundColor.html +13 -3
  998. package/docs/examples/w-tree_draggable_dgTextDisabled_dgTextDisabledColor_dgTextDisabledPaddingLeft.html +13 -3
  999. package/docs/examples/w-tree_events.html +14 -2
  1000. package/docs/examples/w-tree_filterKeywords_filterFunction.html +12 -2
  1001. package/docs/examples/w-tree_filterKeywords_noResultsText.html +12 -2
  1002. package/docs/examples/w-tree_filterKeywords_noResultsText_selectable.html +12 -2
  1003. package/docs/examples/w-tree_iconSize(20).html +12 -2
  1004. package/docs/examples/w-tree_iconSize(20)_defItemHeight(24).html +12 -2
  1005. package/docs/examples/w-tree_iconSize(30)_defItemHeight(36).html +12 -2
  1006. package/docs/examples/w-tree_iconToggleColor_iconToggleBackgroundColor_iconToggleBackgroundColorHover.html +12 -2
  1007. package/docs/examples/w-tree_indent.html +12 -2
  1008. package/docs/examples/w-tree_itemRippleColor.html +12 -2
  1009. package/docs/examples/w-tree_itemTextColor_itemTextColorHover_itemBackgroundColor_itemBackgroundColorHover.html +12 -2
  1010. package/docs/examples/w-tree_keyPrimary_keyText_keyChildren.html +12 -2
  1011. package/docs/examples/w-tree_no viewHeightMax.html +12 -2
  1012. package/docs/examples/w-tree_operatable.html +14 -2
  1013. package/docs/examples/{w-tree_operatable_operateBtnTooltip_operateItemTextForInsertBefore_perateItemTextForInsertChild.html → w-tree_operatable_draggable.html} +17 -11
  1014. package/docs/examples/w-tree_operatable_editorRenameCancelBtnBackgroundColor_editorRenameCancelBtnBackgroundColorHover.html +699 -0
  1015. package/docs/examples/w-tree_operatable_editorRenameCancelBtnIcon_editorRenameCancelBtnIconSize_editorRenameCancelBtnIconColor.html +702 -0
  1016. package/docs/examples/w-tree_operatable_editorRenameCancelBtnText_editorRenameCancelBtnTextColor_editorRenameCancelBtnTextColorHover.html +700 -0
  1017. package/docs/examples/w-tree_operatable_editorRenameContentBackgroundColor_editorRenameFooterBackgroundColor.html +699 -0
  1018. package/docs/examples/w-tree_operatable_editorRenameInputTextColor_editorRenameInputTextBottomLineBorderColor_editorRenameInputTextBottomLineBorderColorHover.html +701 -0
  1019. package/docs/examples/w-tree_operatable_editorRenameSaveBtnBackgroundColor_editorRenameSaveBtnBackgroundColorHover.html +699 -0
  1020. package/docs/examples/w-tree_operatable_editorRenameSaveBtnIcon_editorRenameSaveBtnIconSize_editorRenameSaveBtnIconColor.html +702 -0
  1021. package/docs/examples/w-tree_operatable_editorRenameSaveBtnText_editorRenameSaveBtnTextColor_editorRenameSaveBtnTextColorHover.html +700 -0
  1022. package/docs/examples/{w-tree_operatable_operateItemIconSize_operateItemPaddingStyle_operatePanelWidth.html → w-tree_operatable_funOperateItem.html} +14 -9
  1023. package/docs/examples/w-tree_operatable_operateBtnBackgroundColor_operateBtnBackgroundColorHover_operateBtnBackgroundColorFocus.html +12 -2
  1024. package/docs/examples/w-tree_operatable_operateBtnTooltip_operateItemTextForRename_operateItemTextForInsertBefore.html +701 -0
  1025. package/docs/examples/w-tree_operatable_operateItemBackgroundColor_operateItemBackgroundColorHover_operateItemTextColor.html +12 -2
  1026. package/docs/examples/w-tree_operatable_operateItemHeight_operateItemIconSize_operateItemPaddingStyle.html +698 -0
  1027. package/docs/examples/w-tree_operatable_operateItemIconForRename_operateItemIconForInsertBefore_operateItemIconForInsertChild.html +700 -0
  1028. package/docs/examples/w-tree_operatable_operatePanelWidth_operatePanelHeight_operateItemIconSize.html +699 -0
  1029. package/docs/examples/w-tree_paddingStyle.html +12 -2
  1030. package/docs/examples/w-tree_selectable.html +12 -2
  1031. package/docs/examples/w-tree_selectable_draggable.html +13 -3
  1032. package/docs/examples/w-tree_slot.html +12 -2
  1033. package/docs/examples/w-tree_slot_edit-text.html +699 -0
  1034. package/docs/examples/w-tree_slot_iconUncheckedColor_iconUncheckedDisabledColor_iconCheckedColor.html +12 -2
  1035. package/docs/examples/w-tree_slot_locked_selectable.html +12 -2
  1036. package/docs/examples/w-tree_slot_operatable.html +12 -2
  1037. package/docs/examples/w-tree_slot_selectable.html +12 -2
  1038. package/docs/examples/w-tree_slot_selectable_draggable.html +13 -3
  1039. package/docs/examples/w-tree_slot_selectable_iconSize(20)_defItemHeight(24).html +12 -2
  1040. package/docs/examples/w-tree_slot_selectable_large data (100,000 items).html +12 -2
  1041. package/docs/examples/w-tree_toggleItemsAll.html +12 -2
  1042. package/docs/examples/w-tree_toggleItemsByFun.html +12 -2
  1043. package/docs/examples/w-tree_viewHeightMax.html +12 -2
  1044. package/docs/global.html +1 -1
  1045. package/docs/index.html +1 -1
  1046. package/docs/module-WAggridVueDyn.html +1 -1
  1047. package/docs/module-WBadge.html +1 -1
  1048. package/docs/module-WButtonChip.html +1 -1
  1049. package/docs/module-WButtonCircle.html +1 -1
  1050. package/docs/module-WCheckbox.html +1 -1
  1051. package/docs/module-WCkeditorVueDyn.html +1 -1
  1052. package/docs/module-WConfirm.html +1 -1
  1053. package/docs/module-WDialog.html +1 -1
  1054. package/docs/module-WDrawer.html +1 -1
  1055. package/docs/module-WDropfiles.html +1 -1
  1056. package/docs/module-WDynamicList.html +1 -1
  1057. package/docs/module-WEchartsVueDyn.html +1 -1
  1058. package/docs/module-WExplorer.html +749 -5
  1059. package/docs/module-WGroupBaggage.html +1 -1
  1060. package/docs/module-WGroupCheck.html +1 -1
  1061. package/docs/module-WGroupDragdrop.html +1 -1
  1062. package/docs/module-WGroupRadio.html +1 -1
  1063. package/docs/module-WGroupTags.html +1 -1
  1064. package/docs/module-WHighchartsBitmapDyn.html +1 -1
  1065. package/docs/module-WHighchartsVueDyn.html +1 -1
  1066. package/docs/module-WHighstockVueDyn.html +1 -1
  1067. package/docs/module-WIcon.html +1 -1
  1068. package/docs/module-WIconLoading.html +1 -1
  1069. package/docs/module-WIconSvg.html +1 -1
  1070. package/docs/module-WImageCascadingDyn.html +1 -1
  1071. package/docs/module-WImageViewerDyn.html +1 -1
  1072. package/docs/module-WInputCheckbox.html +1 -1
  1073. package/docs/module-WInputRadio.html +1 -1
  1074. package/docs/module-WJsonView.html +1 -1
  1075. package/docs/module-WLeafletVueDyn.html +1 -1
  1076. package/docs/module-WListExpand.html +1 -1
  1077. package/docs/module-WListExpandItem.html +1 -1
  1078. package/docs/module-WListHorizontal.html +1 -1
  1079. package/docs/module-WListItem.html +1 -1
  1080. package/docs/module-WListVertical.html +1 -1
  1081. package/docs/module-WPanelAvatar.html +1 -1
  1082. package/docs/module-WPanelBulge.html +1 -1
  1083. package/docs/module-WPanelDivideHorizontal.html +1 -1
  1084. package/docs/module-WPanelDivideVertical.html +1 -1
  1085. package/docs/module-WPanelScrolly.html +1 -1
  1086. package/docs/module-WPanelScrollyCore.html +1 -1
  1087. package/docs/module-WPanelStripe.html +1 -1
  1088. package/docs/module-WPopup.html +1 -1
  1089. package/docs/module-WPopupEditText.html +9 -9
  1090. package/docs/module-WProgressBar.html +1 -1
  1091. package/docs/module-WProgressCircle.html +1 -1
  1092. package/docs/module-WQuillVueDyn.html +1 -1
  1093. package/docs/module-WShellBottomLine.html +1 -1
  1094. package/docs/module-WShellEllipse.html +1 -1
  1095. package/docs/module-WSwitch.html +1 -1
  1096. package/docs/module-WTableDyn.html +1 -1
  1097. package/docs/module-WText.html +1 -1
  1098. package/docs/module-WTextCore.html +1 -1
  1099. package/docs/module-WTextInt.html +1 -1
  1100. package/docs/module-WTextIntCore.html +1 -1
  1101. package/docs/module-WTextSelect.html +1 -1
  1102. package/docs/module-WTextSuggest.html +1 -1
  1103. package/docs/module-WTextSuggestCore.html +1 -1
  1104. package/docs/module-WTextarea.html +1 -1
  1105. package/docs/module-WTimeday.html +1 -1
  1106. package/docs/module-WTimedayCore.html +1 -1
  1107. package/docs/module-WTimedayRange.html +1 -1
  1108. package/docs/module-WTimedayRangeCore.html +1 -1
  1109. package/docs/module-WTimeminute.html +1 -1
  1110. package/docs/module-WTimeminuteCore.html +1 -1
  1111. package/docs/module-WTimeminuteRange.html +1 -1
  1112. package/docs/module-WTimeminuteRangeCore.html +1 -1
  1113. package/docs/module-WTinymceVueDyn.html +1 -1
  1114. package/docs/module-WTooltip.html +1 -1
  1115. package/docs/module-WTree.html +423 -15
  1116. package/docs/module-WTreeIconCheckbox.html +1 -1
  1117. package/docs/module-WTreeIconToggle.html +1 -1
  1118. package/docs/vuetifyColor.mjs.html +1 -1
  1119. package/package.json +2 -2
  1120. package/src/AppZoneWExplorer.vue +551 -54
  1121. package/src/AppZoneWPopupEditText.vue +2 -1
  1122. package/src/AppZoneWTree.vue +330 -11
  1123. package/src/components/Teleport.vue +73 -0
  1124. package/src/components/WComponentVue.vue +2 -0
  1125. package/src/components/WDynamicList.vue +87 -71
  1126. package/src/components/WExplorer.vue +709 -57
  1127. package/src/components/WPopupEditText.vue +8 -6
  1128. package/src/components/WTooltip.vue +100 -89
  1129. package/src/components/WTree.vue +813 -120
  1130. package/src/js/convertToTreeWk.wk.umd.js +1 -1
  1131. package/src/js/filepathToTreeWk.mjs +7 -0
  1132. package/src/js/filepathToTreeWk.wk.umd.js +1 -0
  1133. package/src/js/flattenTreeWk.mjs +7 -0
  1134. package/src/js/flattenTreeWk.wk.umd.js +1 -0
  1135. package/toolg/gDistRollupWorkerFuncs.mjs +29 -0
@@ -1 +1 @@
1
- function d(d,i){(null==i||i>d.length)&&(i=d.length);for(var l=0,c=new Array(i);l<i;l++)c[l]=d[l];return c}function i(i){return function(i){if(Array.isArray(i))return d(i)}(i)||function(d){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(d))return Array.from(d)}(i)||function(i,l){if(i){if("string"==typeof i)return d(i,l);var c=Object.prototype.toString.call(i).slice(8,-1);return"Object"===c&&i.constructor&&(c=i.constructor.name),"Map"===c||"Set"===c?Array.from(i):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?d(i,l):void 0}}(i)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(d,i,l,c,t,m,I){try{var b=d[m](I),Z=b.value}catch(d){return void l(d)}b.done?i(Z):Promise.resolve(Z).then(c,t)}function c(d){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(d){return typeof d}:function(d){return d&&"function"==typeof Symbol&&d.constructor===Symbol&&d!==Symbol.prototype?"symbol":typeof d})(d)}var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function m(d){var i={exports:{}};return d(i,i.exports),i.exports}var I,b=m((function(d){var i=function(d){var i,l=Object.prototype,t=l.hasOwnProperty,m="function"==typeof Symbol?Symbol:{},I=m.iterator||"@@iterator",b=m.asyncIterator||"@@asyncIterator",Z=m.toStringTag||"@@toStringTag";function n(d,i,l){return Object.defineProperty(d,i,{value:l,enumerable:!0,configurable:!0,writable:!0}),d[i]}try{n({},"")}catch(d){n=function(d,i,l){return d[i]=l}}function X(d,i,l,c){var t=i&&i.prototype instanceof W?i:W,m=Object.create(t.prototype),I=new S(c||[]);return m._invoke=function(d,i,l){var c=u;return function(t,m){if(c===y)throw new Error("Generator is already running");if(c===p){if("throw"===t)throw m;return x()}for(l.method=t,l.arg=m;;){var I=l.delegate;if(I){var b=g(I,l);if(b){if(b===h)continue;return b}}if("next"===l.method)l.sent=l._sent=l.arg;else if("throw"===l.method){if(c===u)throw c=p,l.arg;l.dispatchException(l.arg)}else"return"===l.method&&l.abrupt("return",l.arg);c=y;var Z=o(d,i,l);if("normal"===Z.type){if(c=l.done?p:e,Z.arg===h)continue;return{value:Z.arg,done:l.done}}"throw"===Z.type&&(c=p,l.method="throw",l.arg=Z.arg)}}}(d,l,I),m}function o(d,i,l){try{return{type:"normal",arg:d.call(i,l)}}catch(d){return{type:"throw",arg:d}}}d.wrap=X;var u="suspendedStart",e="suspendedYield",y="executing",p="completed",h={};function W(){}function K(){}function C(){}var G={};G[I]=function(){return this};var r=Object.getPrototypeOf,a=r&&r(r(P([])));a&&a!==l&&t.call(a,I)&&(G=a);var V=C.prototype=W.prototype=Object.create(G);function H(d){["next","throw","return"].forEach((function(i){n(d,i,(function(d){return this._invoke(i,d)}))}))}function Y(d,i){function l(m,I,b,Z){var n=o(d[m],d,I);if("throw"!==n.type){var X=n.arg,u=X.value;return u&&"object"===c(u)&&t.call(u,"__await")?i.resolve(u.__await).then((function(d){l("next",d,b,Z)}),(function(d){l("throw",d,b,Z)})):i.resolve(u).then((function(d){X.value=d,b(X)}),(function(d){return l("throw",d,b,Z)}))}Z(n.arg)}var m;this._invoke=function(d,c){function t(){return new i((function(i,t){l(d,c,i,t)}))}return m=m?m.then(t,t):t()}}function g(d,l){var c=d.iterator[l.method];if(c===i){if(l.delegate=null,"throw"===l.method){if(d.iterator.return&&(l.method="return",l.arg=i,g(d,l),"throw"===l.method))return h;l.method="throw",l.arg=new TypeError("The iterator does not provide a 'throw' method")}return h}var t=o(c,d.iterator,l.arg);if("throw"===t.type)return l.method="throw",l.arg=t.arg,l.delegate=null,h;var m=t.arg;return m?m.done?(l[d.resultName]=m.value,l.next=d.nextLoc,"return"!==l.method&&(l.method="next",l.arg=i),l.delegate=null,h):m:(l.method="throw",l.arg=new TypeError("iterator result is not an object"),l.delegate=null,h)}function s(d){var i={tryLoc:d[0]};1 in d&&(i.catchLoc=d[1]),2 in d&&(i.finallyLoc=d[2],i.afterLoc=d[3]),this.tryEntries.push(i)}function J(d){var i=d.completion||{};i.type="normal",delete i.arg,d.completion=i}function S(d){this.tryEntries=[{tryLoc:"root"}],d.forEach(s,this),this.reset(!0)}function P(d){if(d){var l=d[I];if(l)return l.call(d);if("function"==typeof d.next)return d;if(!isNaN(d.length)){var c=-1,m=function l(){for(;++c<d.length;)if(t.call(d,c))return l.value=d[c],l.done=!1,l;return l.value=i,l.done=!0,l};return m.next=m}}return{next:x}}function x(){return{value:i,done:!0}}return K.prototype=V.constructor=C,C.constructor=K,K.displayName=n(C,Z,"GeneratorFunction"),d.isGeneratorFunction=function(d){var i="function"==typeof d&&d.constructor;return!!i&&(i===K||"GeneratorFunction"===(i.displayName||i.name))},d.mark=function(d){return Object.setPrototypeOf?Object.setPrototypeOf(d,C):(d.__proto__=C,n(d,Z,"GeneratorFunction")),d.prototype=Object.create(V),d},d.awrap=function(d){return{__await:d}},H(Y.prototype),Y.prototype[b]=function(){return this},d.AsyncIterator=Y,d.async=function(i,l,c,t,m){void 0===m&&(m=Promise);var I=new Y(X(i,l,c,t),m);return d.isGeneratorFunction(l)?I:I.next().then((function(d){return d.done?d.value:I.next()}))},H(V),n(V,Z,"Generator"),V[I]=function(){return this},V.toString=function(){return"[object Generator]"},d.keys=function(d){var i=[];for(var l in d)i.push(l);return i.reverse(),function l(){for(;i.length;){var c=i.pop();if(c in d)return l.value=c,l.done=!1,l}return l.done=!0,l}},d.values=P,S.prototype={constructor:S,reset:function(d){if(this.prev=0,this.next=0,this.sent=this._sent=i,this.done=!1,this.delegate=null,this.method="next",this.arg=i,this.tryEntries.forEach(J),!d)for(var l in this)"t"===l.charAt(0)&&t.call(this,l)&&!isNaN(+l.slice(1))&&(this[l]=i)},stop:function(){this.done=!0;var d=this.tryEntries[0].completion;if("throw"===d.type)throw d.arg;return this.rval},dispatchException:function(d){if(this.done)throw d;var l=this;function c(c,t){return b.type="throw",b.arg=d,l.next=c,t&&(l.method="next",l.arg=i),!!t}for(var m=this.tryEntries.length-1;m>=0;--m){var I=this.tryEntries[m],b=I.completion;if("root"===I.tryLoc)return c("end");if(I.tryLoc<=this.prev){var Z=t.call(I,"catchLoc"),n=t.call(I,"finallyLoc");if(Z&&n){if(this.prev<I.catchLoc)return c(I.catchLoc,!0);if(this.prev<I.finallyLoc)return c(I.finallyLoc)}else if(Z){if(this.prev<I.catchLoc)return c(I.catchLoc,!0)}else{if(!n)throw new Error("try statement without catch or finally");if(this.prev<I.finallyLoc)return c(I.finallyLoc)}}}},abrupt:function(d,i){for(var l=this.tryEntries.length-1;l>=0;--l){var c=this.tryEntries[l];if(c.tryLoc<=this.prev&&t.call(c,"finallyLoc")&&this.prev<c.finallyLoc){var m=c;break}}m&&("break"===d||"continue"===d)&&m.tryLoc<=i&&i<=m.finallyLoc&&(m=null);var I=m?m.completion:{};return I.type=d,I.arg=i,m?(this.method="next",this.next=m.finallyLoc,h):this.complete(I)},complete:function(d,i){if("throw"===d.type)throw d.arg;return"break"===d.type||"continue"===d.type?this.next=d.arg:"return"===d.type?(this.rval=this.arg=d.arg,this.method="return",this.next="end"):"normal"===d.type&&i&&(this.next=i),h},finish:function(d){for(var i=this.tryEntries.length-1;i>=0;--i){var l=this.tryEntries[i];if(l.finallyLoc===d)return this.complete(l.completion,l.afterLoc),J(l),h}},catch:function(d){for(var i=this.tryEntries.length-1;i>=0;--i){var l=this.tryEntries[i];if(l.tryLoc===d){var c=l.completion;if("throw"===c.type){var t=c.arg;J(l)}return t}}throw new Error("illegal catch attempt")},delegateYield:function(d,l,c){return this.delegate={iterator:P(d),resultName:l,nextLoc:c},"next"===this.method&&(this.arg=i),h}},d}(d.exports);try{regeneratorRuntime=i}catch(d){Function("r","regeneratorRuntime = r")(i)}})),Z=m((function(d,i){!function(i,l){d.exports=function(i){var l,c=(i=i||{}).Base64,t="2.6.4",m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",I=function(d){for(var i={},l=0,c=d.length;l<c;l++)i[d.charAt(l)]=l;return i}(m),b=String.fromCharCode,Z=function(d){if(d.length<2)return(i=d.charCodeAt(0))<128?d:i<2048?b(192|i>>>6)+b(128|63&i):b(224|i>>>12&15)+b(128|i>>>6&63)+b(128|63&i);var i=65536+1024*(d.charCodeAt(0)-55296)+(d.charCodeAt(1)-56320);return b(240|i>>>18&7)+b(128|i>>>12&63)+b(128|i>>>6&63)+b(128|63&i)},n=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,X=function(d){return d.replace(n,Z)},o=function(d){var i=[0,2,1][d.length%3],l=d.charCodeAt(0)<<16|(d.length>1?d.charCodeAt(1):0)<<8|(d.length>2?d.charCodeAt(2):0);return[m.charAt(l>>>18),m.charAt(l>>>12&63),i>=2?"=":m.charAt(l>>>6&63),i>=1?"=":m.charAt(63&l)].join("")},u=i.btoa&&"function"==typeof i.btoa?function(d){return i.btoa(d)}:function(d){if(d.match(/[^\x00-\xFF]/))throw new RangeError("The string contains invalid characters.");return d.replace(/[\s\S]{1,3}/g,o)},e=function(d){return u(X(String(d)))},y=function(d){return d.replace(/[+\/]/g,(function(d){return"+"==d?"-":"_"})).replace(/=/g,"")},p=function(d,i){return i?y(e(d)):e(d)},h=function(d){return p(d,!0)};i.Uint8Array&&(l=function(d,i){for(var l="",c=0,t=d.length;c<t;c+=3){var I=d[c],b=d[c+1],Z=d[c+2],n=I<<16|b<<8|Z;l+=m.charAt(n>>>18)+m.charAt(n>>>12&63)+(void 0!==b?m.charAt(n>>>6&63):"=")+(void 0!==Z?m.charAt(63&n):"=")}return i?y(l):l});var W,K=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,C=function(d){switch(d.length){case 4:var i=((7&d.charCodeAt(0))<<18|(63&d.charCodeAt(1))<<12|(63&d.charCodeAt(2))<<6|63&d.charCodeAt(3))-65536;return b(55296+(i>>>10))+b(56320+(1023&i));case 3:return b((15&d.charCodeAt(0))<<12|(63&d.charCodeAt(1))<<6|63&d.charCodeAt(2));default:return b((31&d.charCodeAt(0))<<6|63&d.charCodeAt(1))}},G=function(d){return d.replace(K,C)},r=function(d){var i=d.length,l=i%4,c=(i>0?I[d.charAt(0)]<<18:0)|(i>1?I[d.charAt(1)]<<12:0)|(i>2?I[d.charAt(2)]<<6:0)|(i>3?I[d.charAt(3)]:0),t=[b(c>>>16),b(c>>>8&255),b(255&c)];return t.length-=[0,0,2,1][l],t.join("")},a=i.atob&&"function"==typeof i.atob?function(d){return i.atob(d)}:function(d){return d.replace(/\S{1,4}/g,r)},V=function(d){return a(String(d).replace(/[^A-Za-z0-9\+\/]/g,""))},H=function(d){return G(a(d))},Y=function(d){return String(d).replace(/[-_]/g,(function(d){return"-"==d?"+":"/"})).replace(/[^A-Za-z0-9\+\/]/g,"")},g=function(d){return H(Y(d))};i.Uint8Array&&(W=function(d){return Uint8Array.from(V(Y(d)),(function(d){return d.charCodeAt(0)}))});var s=function(){var d=i.Base64;return i.Base64=c,d};if(i.Base64={VERSION:t,atob:V,btoa:u,fromBase64:g,toBase64:p,utob:X,encode:p,encodeURI:h,btou:G,decode:g,noConflict:s,fromUint8Array:l,toUint8Array:W},"function"==typeof Object.defineProperty){var J=function(d){return{value:d,enumerable:!1,writable:!0,configurable:!0}};i.Base64.extendString=function(){Object.defineProperty(String.prototype,"fromBase64",J((function(){return g(this)}))),Object.defineProperty(String.prototype,"toBase64",J((function(d){return p(this,d)}))),Object.defineProperty(String.prototype,"toBase64URI",J((function(){return p(this,!0)})))}}i.Meteor&&(Base64=i.Base64);d.exports&&(d.exports.Base64=i.Base64);return{Base64:i.Base64}}(i)}("undefined"!=typeof self?self:"undefined"!=typeof window?window:t)})),n=m((function(d){var i=Object.prototype.hasOwnProperty,l="~";function c(){}function t(d,i,l){this.fn=d,this.context=i,this.once=l||!1}function m(d,i,c,m,I){if("function"!=typeof c)throw new TypeError("The listener must be a function");var b=new t(c,m||d,I),Z=l?l+i:i;return d._events[Z]?d._events[Z].fn?d._events[Z]=[d._events[Z],b]:d._events[Z].push(b):(d._events[Z]=b,d._eventsCount++),d}function I(d,i){0==--d._eventsCount?d._events=new c:delete d._events[i]}function b(){this._events=new c,this._eventsCount=0}Object.create&&(c.prototype=Object.create(null),(new c).__proto__||(l=!1)),b.prototype.eventNames=function(){var d,c,t=[];if(0===this._eventsCount)return t;for(c in d=this._events)i.call(d,c)&&t.push(l?c.slice(1):c);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(d)):t},b.prototype.listeners=function(d){var i=l?l+d:d,c=this._events[i];if(!c)return[];if(c.fn)return[c.fn];for(var t=0,m=c.length,I=new Array(m);t<m;t++)I[t]=c[t].fn;return I},b.prototype.listenerCount=function(d){var i=l?l+d:d,c=this._events[i];return c?c.fn?1:c.length:0},b.prototype.emit=function(d,i,c,t,m,I){var b=l?l+d:d;if(!this._events[b])return!1;var Z,n,X=this._events[b],o=arguments.length;if(X.fn){switch(X.once&&this.removeListener(d,X.fn,void 0,!0),o){case 1:return X.fn.call(X.context),!0;case 2:return X.fn.call(X.context,i),!0;case 3:return X.fn.call(X.context,i,c),!0;case 4:return X.fn.call(X.context,i,c,t),!0;case 5:return X.fn.call(X.context,i,c,t,m),!0;case 6:return X.fn.call(X.context,i,c,t,m,I),!0}for(n=1,Z=new Array(o-1);n<o;n++)Z[n-1]=arguments[n];X.fn.apply(X.context,Z)}else{var u,e=X.length;for(n=0;n<e;n++)switch(X[n].once&&this.removeListener(d,X[n].fn,void 0,!0),o){case 1:X[n].fn.call(X[n].context);break;case 2:X[n].fn.call(X[n].context,i);break;case 3:X[n].fn.call(X[n].context,i,c);break;case 4:X[n].fn.call(X[n].context,i,c,t);break;default:if(!Z)for(u=1,Z=new Array(o-1);u<o;u++)Z[u-1]=arguments[u];X[n].fn.apply(X[n].context,Z)}}return!0},b.prototype.on=function(d,i,l){return m(this,d,i,l,!1)},b.prototype.once=function(d,i,l){return m(this,d,i,l,!0)},b.prototype.removeListener=function(d,i,c,t){var m=l?l+d:d;if(!this._events[m])return this;if(!i)return I(this,m),this;var b=this._events[m];if(b.fn)b.fn!==i||t&&!b.once||c&&b.context!==c||I(this,m);else{for(var Z=0,n=[],X=b.length;Z<X;Z++)(b[Z].fn!==i||t&&!b[Z].once||c&&b[Z].context!==c)&&n.push(b[Z]);n.length?this._events[m]=1===n.length?n[0]:n:I(this,m)}return this},b.prototype.removeAllListeners=function(d){var i;return d?(i=l?l+d:d,this._events[i]&&I(this,i)):(this._events=new c,this._eventsCount=0),this},b.prototype.off=b.prototype.removeListener,b.prototype.addListener=b.prototype.on,b.prefixed=l,b.EventEmitter=b,d.exports=b}));!function(){if("browser"!==("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;function d(){return new n}function c(){var d,i,l=new Promise((function(){d=arguments[0],i=arguments[1]}));return l.resolve=d,l.reject=i,l}function t(){for(var d=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,i=[],l="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),c=l.length,t=0;t<d;t++)i[t]=l[0|Math.random()*c];var m=i.join("");return m}var m,X=(m="CgoKdmFyIHQ9QXJyYXkuaXNBcnJheSxyPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e307ZnVuY3Rpb24gZSh0KXt2YXIgcj17ZXhwb3J0czp7fX07cmV0dXJuIHQocixyLmV4cG9ydHMpLHIuZXhwb3J0c312YXIgbj0ib2JqZWN0Ij09dHlwZW9mIHImJnImJnIuT2JqZWN0PT09T2JqZWN0JiZyLG89Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZix1PW58fG98fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksYT11LlN5bWJvbCxpPU9iamVjdC5wcm90b3R5cGUsYz1pLmhhc093blByb3BlcnR5LGY9aS50b1N0cmluZyxsPWE/YS50b1N0cmluZ1RhZzp2b2lkIDA7dmFyIHY9ZnVuY3Rpb24odCl7dmFyIHI9Yy5jYWxsKHQsbCksZT10W2xdO3RyeXt0W2xdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89Zi5jYWxsKHQpO3JldHVybiBuJiYocj90W2xdPWU6ZGVsZXRlIHRbbF0pLG99LHM9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgYj1mdW5jdGlvbih0KXtyZXR1cm4gcy5jYWxsKHQpfSxwPWE/YS50b1N0cmluZ1RhZzp2b2lkIDA7dmFyIHk9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD8iW29iamVjdCBVbmRlZmluZWRdIjoiW29iamVjdCBOdWxsXSI6cCYmcCBpbiBPYmplY3QodCk/dih0KTpiKHQpfTt2YXIgaD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fTt2YXIgZD1mdW5jdGlvbih0KXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHR8fGgodCkmJiJbb2JqZWN0IFN5bWJvbF0iPT15KHQpfSxqPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLGc9L15cdyokLzt2YXIgXz1mdW5jdGlvbihyLGUpe2lmKHQocikpcmV0dXJuITE7dmFyIG49dHlwZW9mIHI7cmV0dXJuISgibnVtYmVyIiE9biYmInN5bWJvbCIhPW4mJiJib29sZWFuIiE9biYmbnVsbCE9ciYmIWQocikpfHwoZy50ZXN0KHIpfHwhai50ZXN0KHIpfHxudWxsIT1lJiZyIGluIE9iamVjdChlKSl9O3ZhciBPPWZ1bmN0aW9uKHQpe3ZhciByPXR5cGVvZiB0O3JldHVybiBudWxsIT10JiYoIm9iamVjdCI9PXJ8fCJmdW5jdGlvbiI9PXIpfTt2YXIgdyxtPWZ1bmN0aW9uKHQpe2lmKCFPKHQpKXJldHVybiExO3ZhciByPXkodCk7cmV0dXJuIltvYmplY3QgRnVuY3Rpb25dIj09cnx8IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIj09cnx8IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iPT1yfHwiW29iamVjdCBQcm94eV0iPT1yfSxBPXVbIl9fY29yZS1qc19zaGFyZWRfXyJdLFM9KHc9L1teLl0rJC8uZXhlYyhBJiZBLmtleXMmJkEua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iK3c6IiI7dmFyIFA9ZnVuY3Rpb24odCl7cmV0dXJuISFTJiZTIGluIHR9LHg9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO3ZhciB6PWZ1bmN0aW9uKHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4geC5jYWxsKHQpfWNhdGNoKHQpe310cnl7cmV0dXJuIHQrIiJ9Y2F0Y2godCl7fX1yZXR1cm4iIn0sRT0vXlxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXF0kLyxJPUZ1bmN0aW9uLnByb3RvdHlwZSwkPU9iamVjdC5wcm90b3R5cGUsTj1JLnRvU3RyaW5nLFQ9JC5oYXNPd25Qcm9wZXJ0eSxNPVJlZ0V4cCgiXiIrTi5jYWxsKFQpLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCJcXCQmIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywiJDEuKj8iKSsiJCIpO3ZhciBrPWZ1bmN0aW9uKHQpe3JldHVybiEoIU8odCl8fFAodCkpJiYobSh0KT9NOkUpLnRlc3Qoeih0KSl9O3ZhciBGPWZ1bmN0aW9uKHQscil7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbcl19O3ZhciBDPWZ1bmN0aW9uKHQscil7dmFyIGU9Rih0LHIpO3JldHVybiBrKGUpP2U6dm9pZCAwfSxEPUMoT2JqZWN0LCJjcmVhdGUiKTt2YXIgVT1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189RD9EKG51bGwpOnt9LHRoaXMuc2l6ZT0wfTt2YXIgQj1mdW5jdGlvbih0KXt2YXIgcj10aGlzLmhhcyh0KSYmZGVsZXRlIHRoaXMuX19kYXRhX19bdF07cmV0dXJuIHRoaXMuc2l6ZS09cj8xOjAscn0sUj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBMPWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX19kYXRhX187aWYoRCl7dmFyIGU9clt0XTtyZXR1cm4iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI9PT1lP3ZvaWQgMDplfXJldHVybiBSLmNhbGwocix0KT9yW3RdOnZvaWQgMH0sVj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBLPWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX19kYXRhX187cmV0dXJuIEQ/dm9pZCAwIT09clt0XTpWLmNhbGwocix0KX07dmFyIFc9ZnVuY3Rpb24odCxyKXt2YXIgZT10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKHQpPzA6MSxlW3RdPUQmJnZvaWQgMD09PXI/Il9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iOnIsdGhpc307ZnVuY3Rpb24gcSh0KXt2YXIgcj0tMSxlPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrcjxlOyl7dmFyIG49dFtyXTt0aGlzLnNldChuWzBdLG5bMV0pfX1xLnByb3RvdHlwZS5jbGVhcj1VLHEucHJvdG90eXBlLmRlbGV0ZT1CLHEucHJvdG90eXBlLmdldD1MLHEucHJvdG90eXBlLmhhcz1LLHEucHJvdG90eXBlLnNldD1XO3ZhciBHPXE7dmFyIEg9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfTt2YXIgSj1mdW5jdGlvbih0LHIpe3JldHVybiB0PT09cnx8dCE9dCYmciE9cn07dmFyIFE9ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9dC5sZW5ndGg7ZS0tOylpZihKKHRbZV1bMF0scikpcmV0dXJuIGU7cmV0dXJuLTF9LFg9QXJyYXkucHJvdG90eXBlLnNwbGljZTt2YXIgWT1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fLGU9UShyLHQpO3JldHVybiEoZTwwKSYmKGU9PXIubGVuZ3RoLTE/ci5wb3AoKTpYLmNhbGwocixlLDEpLC0tdGhpcy5zaXplLCEwKX07dmFyIFo9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxlPVEocix0KTtyZXR1cm4gZTwwP3ZvaWQgMDpyW2VdWzFdfTt2YXIgdHQ9ZnVuY3Rpb24odCl7cmV0dXJuIFEodGhpcy5fX2RhdGFfXyx0KT4tMX07dmFyIHJ0PWZ1bmN0aW9uKHQscil7dmFyIGU9dGhpcy5fX2RhdGFfXyxuPVEoZSx0KTtyZXR1cm4gbjwwPygrK3RoaXMuc2l6ZSxlLnB1c2goW3Qscl0pKTplW25dWzFdPXIsdGhpc307ZnVuY3Rpb24gZXQodCl7dmFyIHI9LTEsZT1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK3I8ZTspe3ZhciBuPXRbcl07dGhpcy5zZXQoblswXSxuWzFdKX19ZXQucHJvdG90eXBlLmNsZWFyPUgsZXQucHJvdG90eXBlLmRlbGV0ZT1ZLGV0LnByb3RvdHlwZS5nZXQ9WixldC5wcm90b3R5cGUuaGFzPXR0LGV0LnByb3RvdHlwZS5zZXQ9cnQ7dmFyIG50PWV0LG90PUModSwiTWFwIik7dmFyIHV0PWZ1bmN0aW9uKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgRyxtYXA6bmV3KG90fHxudCksc3RyaW5nOm5ldyBHfX07dmFyIGF0PWZ1bmN0aW9uKHQpe3ZhciByPXR5cGVvZiB0O3JldHVybiJzdHJpbmciPT1yfHwibnVtYmVyIj09cnx8InN5bWJvbCI9PXJ8fCJib29sZWFuIj09cj8iX19wcm90b19fIiE9PXQ6bnVsbD09PXR9O3ZhciBpdD1mdW5jdGlvbih0LHIpe3ZhciBlPXQuX19kYXRhX187cmV0dXJuIGF0KHIpP2VbInN0cmluZyI9PXR5cGVvZiByPyJzdHJpbmciOiJoYXNoIl06ZS5tYXB9O3ZhciBjdD1mdW5jdGlvbih0KXt2YXIgcj1pdCh0aGlzLHQpLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplLT1yPzE6MCxyfTt2YXIgZnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGl0KHRoaXMsdCkuZ2V0KHQpfTt2YXIgbHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGl0KHRoaXMsdCkuaGFzKHQpfTt2YXIgdnQ9ZnVuY3Rpb24odCxyKXt2YXIgZT1pdCh0aGlzLHQpLG49ZS5zaXplO3JldHVybiBlLnNldCh0LHIpLHRoaXMuc2l6ZSs9ZS5zaXplPT1uPzA6MSx0aGlzfTtmdW5jdGlvbiBzdCh0KXt2YXIgcj0tMSxlPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrcjxlOyl7dmFyIG49dFtyXTt0aGlzLnNldChuWzBdLG5bMV0pfX1zdC5wcm90b3R5cGUuY2xlYXI9dXQsc3QucHJvdG90eXBlLmRlbGV0ZT1jdCxzdC5wcm90b3R5cGUuZ2V0PWZ0LHN0LnByb3RvdHlwZS5oYXM9bHQsc3QucHJvdG90eXBlLnNldD12dDt2YXIgYnQ9c3Q7ZnVuY3Rpb24gcHQodCxyKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ciYmImZ1bmN0aW9uIiE9dHlwZW9mIHIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgYSBmdW5jdGlvbiIpO3ZhciBlPWZ1bmN0aW9uKCl7dmFyIG49YXJndW1lbnRzLG89cj9yLmFwcGx5KHRoaXMsbik6blswXSx1PWUuY2FjaGU7aWYodS5oYXMobykpcmV0dXJuIHUuZ2V0KG8pO3ZhciBhPXQuYXBwbHkodGhpcyxuKTtyZXR1cm4gZS5jYWNoZT11LnNldChvLGEpfHx1LGF9O3JldHVybiBlLmNhY2hlPW5ldyhwdC5DYWNoZXx8YnQpLGV9cHQuQ2FjaGU9YnQ7dmFyIHl0PXB0O3ZhciBodD0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxkdD0vXFwoXFwpPy9nLGp0PWZ1bmN0aW9uKHQpe3ZhciByPXl0KHQsKGZ1bmN0aW9uKHQpe3JldHVybiA1MDA9PT1lLnNpemUmJmUuY2xlYXIoKSx0fSkpLGU9ci5jYWNoZTtyZXR1cm4gcn0oKGZ1bmN0aW9uKHQpe3ZhciByPVtdO3JldHVybiA0Nj09PXQuY2hhckNvZGVBdCgwKSYmci5wdXNoKCIiKSx0LnJlcGxhY2UoaHQsKGZ1bmN0aW9uKHQsZSxuLG8pe3IucHVzaChuP28ucmVwbGFjZShkdCwiJDEiKTplfHx0KX0pKSxyfSkpO3ZhciBndD1mdW5jdGlvbih0LHIpe2Zvcih2YXIgZT0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPUFycmF5KG4pOysrZTxuOylvW2VdPXIodFtlXSxlLHQpO3JldHVybiBvfSxfdD1hP2EucHJvdG90eXBlOnZvaWQgMCxPdD1fdD9fdC50b1N0cmluZzp2b2lkIDA7dmFyIHd0PWZ1bmN0aW9uIHIoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBlO2lmKHQoZSkpcmV0dXJuIGd0KGUscikrIiI7aWYoZChlKSlyZXR1cm4gT3Q/T3QuY2FsbChlKToiIjt2YXIgbj1lKyIiO3JldHVybiIwIj09biYmMS9lPT0tSW5maW5pdHk/Ii0wIjpufTt2YXIgbXQ9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/IiI6d3QodCl9O3ZhciBBdD1mdW5jdGlvbihyLGUpe3JldHVybiB0KHIpP3I6XyhyLGUpP1tyXTpqdChtdChyKSl9O3ZhciBTdD1mdW5jdGlvbih0KXtpZigic3RyaW5nIj09dHlwZW9mIHR8fGQodCkpcmV0dXJuIHQ7dmFyIHI9dCsiIjtyZXR1cm4iMCI9PXImJjEvdD09LUluZmluaXR5PyItMCI6cn07dmFyIFB0PWZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPTAsbj0ocj1BdChyLHQpKS5sZW5ndGg7bnVsbCE9dCYmZTxuOyl0PXRbU3QocltlKytdKV07cmV0dXJuIGUmJmU9PW4/dDp2b2lkIDB9O3ZhciB4dD1mdW5jdGlvbih0LHIsZSl7dmFyIG49bnVsbD09dD92b2lkIDA6UHQodCxyKTtyZXR1cm4gdm9pZCAwPT09bj9lOm59O2Z1bmN0aW9uIHp0KHQpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIEV0KHQpe3JldHVybiEoIXp0KHQpfHwiIj09PXQpfWZ1bmN0aW9uIEl0KHQpe3JldHVybiJbb2JqZWN0IE9iamVjdF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uICR0KHQpe2lmKEl0KHQpKXtmb3IobGV0IHIgaW4gdClyZXR1cm4hMDtyZXR1cm4hMX1yZXR1cm4hMX1mdW5jdGlvbiBOdCh0KXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIFR0KHQpe3JldHVybiEhZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgVW5kZWZpbmVkXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdWxsXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFmdW5jdGlvbih0KXtpZihJdCh0KSl7Zm9yKGxldCByIGluIHQpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuITF9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4hKCF6dCh0KXx8IiIhPT10KX0odCl8fCEhZnVuY3Rpb24odCl7cmV0dXJuISFOdCh0KSYmMD09PXQubGVuZ3RofSh0KSkpKX1mdW5jdGlvbiBNdCh0KXtyZXR1cm4hIU50KHQpJiYoMCE9PXQubGVuZ3RoJiYoMSE9PXQubGVuZ3RofHwhVHQodFswXSkpKX12YXIga3Q9ZnVuY3Rpb24odCl7cmV0dXJuITA9PT10fHwhMT09PXR8fGgodCkmJiJbb2JqZWN0IEJvb2xlYW5dIj09eSh0KX07ZnVuY3Rpb24gRnQodCl7cmV0dXJuIGt0KHQpfXZhciBDdD1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189bmV3IG50LHRoaXMuc2l6ZT0wfTt2YXIgRHQ9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxlPXIuZGVsZXRlKHQpO3JldHVybiB0aGlzLnNpemU9ci5zaXplLGV9O3ZhciBVdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9O3ZhciBCdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModCl9O3ZhciBSdD1mdW5jdGlvbih0LHIpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoZSBpbnN0YW5jZW9mIG50KXt2YXIgbj1lLl9fZGF0YV9fO2lmKCFvdHx8bi5sZW5ndGg8MTk5KXJldHVybiBuLnB1c2goW3Qscl0pLHRoaXMuc2l6ZT0rK2Uuc2l6ZSx0aGlzO2U9dGhpcy5fX2RhdGFfXz1uZXcgYnQobil9cmV0dXJuIGUuc2V0KHQsciksdGhpcy5zaXplPWUuc2l6ZSx0aGlzfTtmdW5jdGlvbiBMdCh0KXt2YXIgcj10aGlzLl9fZGF0YV9fPW5ldyBudCh0KTt0aGlzLnNpemU9ci5zaXplfUx0LnByb3RvdHlwZS5jbGVhcj1DdCxMdC5wcm90b3R5cGUuZGVsZXRlPUR0LEx0LnByb3RvdHlwZS5nZXQ9VXQsTHQucHJvdG90eXBlLmhhcz1CdCxMdC5wcm90b3R5cGUuc2V0PVJ0O3ZhciBWdD1MdDt2YXIgS3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KHQsIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iKSx0aGlzfTt2YXIgV3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfTtmdW5jdGlvbiBxdCh0KXt2YXIgcj0tMSxlPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5fX2RhdGFfXz1uZXcgYnQ7KytyPGU7KXRoaXMuYWRkKHRbcl0pfXF0LnByb3RvdHlwZS5hZGQ9cXQucHJvdG90eXBlLnB1c2g9S3QscXQucHJvdG90eXBlLmhhcz1XdDt2YXIgR3Q9cXQ7dmFyIEh0PWZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoOysrZTxuOylpZihyKHRbZV0sZSx0KSlyZXR1cm4hMDtyZXR1cm4hMX07dmFyIEp0PWZ1bmN0aW9uKHQscil7cmV0dXJuIHQuaGFzKHIpfTt2YXIgUXQ9ZnVuY3Rpb24odCxyLGUsbixvLHUpe3ZhciBhPTEmZSxpPXQubGVuZ3RoLGM9ci5sZW5ndGg7aWYoaSE9YyYmIShhJiZjPmkpKXJldHVybiExO3ZhciBmPXUuZ2V0KHQpLGw9dS5nZXQocik7aWYoZiYmbClyZXR1cm4gZj09ciYmbD09dDt2YXIgdj0tMSxzPSEwLGI9MiZlP25ldyBHdDp2b2lkIDA7Zm9yKHUuc2V0KHQsciksdS5zZXQocix0KTsrK3Y8aTspe3ZhciBwPXRbdl0seT1yW3ZdO2lmKG4pdmFyIGg9YT9uKHkscCx2LHIsdCx1KTpuKHAseSx2LHQscix1KTtpZih2b2lkIDAhPT1oKXtpZihoKWNvbnRpbnVlO3M9ITE7YnJlYWt9aWYoYil7aWYoIUh0KHIsKGZ1bmN0aW9uKHQscil7aWYoIUp0KGIscikmJihwPT09dHx8byhwLHQsZSxuLHUpKSlyZXR1cm4gYi5wdXNoKHIpfSkpKXtzPSExO2JyZWFrfX1lbHNlIGlmKHAhPT15JiYhbyhwLHksZSxuLHUpKXtzPSExO2JyZWFrfX1yZXR1cm4gdS5kZWxldGUodCksdS5kZWxldGUociksc30sWHQ9dS5VaW50OEFycmF5O3ZhciBZdD1mdW5jdGlvbih0KXt2YXIgcj0tMSxlPUFycmF5KHQuc2l6ZSk7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCxuKXtlWysrcl09W24sdF19KSksZX07dmFyIFp0PWZ1bmN0aW9uKHQpe3ZhciByPS0xLGU9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtlWysrcl09dH0pKSxlfSx0cj1hP2EucHJvdG90eXBlOnZvaWQgMCxycj10cj90ci52YWx1ZU9mOnZvaWQgMDt2YXIgZXI9ZnVuY3Rpb24odCxyLGUsbixvLHUsYSl7c3dpdGNoKGUpe2Nhc2UiW29iamVjdCBEYXRhVmlld10iOmlmKHQuYnl0ZUxlbmd0aCE9ci5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPXIuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLHI9ci5idWZmZXI7Y2FzZSJbb2JqZWN0IEFycmF5QnVmZmVyXSI6cmV0dXJuISh0LmJ5dGVMZW5ndGghPXIuYnl0ZUxlbmd0aHx8IXUobmV3IFh0KHQpLG5ldyBYdChyKSkpO2Nhc2UiW29iamVjdCBCb29sZWFuXSI6Y2FzZSJbb2JqZWN0IERhdGVdIjpjYXNlIltvYmplY3QgTnVtYmVyXSI6cmV0dXJuIEooK3QsK3IpO2Nhc2UiW29iamVjdCBFcnJvcl0iOnJldHVybiB0Lm5hbWU9PXIubmFtZSYmdC5tZXNzYWdlPT1yLm1lc3NhZ2U7Y2FzZSJbb2JqZWN0IFJlZ0V4cF0iOmNhc2UiW29iamVjdCBTdHJpbmddIjpyZXR1cm4gdD09cisiIjtjYXNlIltvYmplY3QgTWFwXSI6dmFyIGk9WXQ7Y2FzZSJbb2JqZWN0IFNldF0iOnZhciBjPTEmbjtpZihpfHwoaT1adCksdC5zaXplIT1yLnNpemUmJiFjKXJldHVybiExO3ZhciBmPWEuZ2V0KHQpO2lmKGYpcmV0dXJuIGY9PXI7bnw9MixhLnNldCh0LHIpO3ZhciBsPVF0KGkodCksaShyKSxuLG8sdSxhKTtyZXR1cm4gYS5kZWxldGUodCksbDtjYXNlIltvYmplY3QgU3ltYm9sXSI6aWYocnIpcmV0dXJuIHJyLmNhbGwodCk9PXJyLmNhbGwocil9cmV0dXJuITF9O3ZhciBucj1mdW5jdGlvbih0LHIpe2Zvcih2YXIgZT0tMSxuPXIubGVuZ3RoLG89dC5sZW5ndGg7KytlPG47KXRbbytlXT1yW2VdO3JldHVybiB0fTt2YXIgb3I9ZnVuY3Rpb24ocixlLG4pe3ZhciBvPWUocik7cmV0dXJuIHQocik/bzpucihvLG4ocikpfTt2YXIgdXI9ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGgsbz0wLHU9W107KytlPG47KXt2YXIgYT10W2VdO3IoYSxlLHQpJiYodVtvKytdPWEpfXJldHVybiB1fTt2YXIgYXI9ZnVuY3Rpb24oKXtyZXR1cm5bXX0saXI9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxjcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLGZyPWNyP2Z1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P1tdOih0PU9iamVjdCh0KSx1cihjcih0KSwoZnVuY3Rpb24ocil7cmV0dXJuIGlyLmNhbGwodCxyKX0pKSl9OmFyO3ZhciBscj1mdW5jdGlvbih0LHIpe2Zvcih2YXIgZT0tMSxuPUFycmF5KHQpOysrZTx0OyluW2VdPXIoZSk7cmV0dXJuIG59O3ZhciB2cj1mdW5jdGlvbih0KXtyZXR1cm4gaCh0KSYmIltvYmplY3QgQXJndW1lbnRzXSI9PXkodCl9LHNyPU9iamVjdC5wcm90b3R5cGUsYnI9c3IuaGFzT3duUHJvcGVydHkscHI9c3IucHJvcGVydHlJc0VudW1lcmFibGUseXI9dnIoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpKT92cjpmdW5jdGlvbih0KXtyZXR1cm4gaCh0KSYmYnIuY2FsbCh0LCJjYWxsZWUiKSYmIXByLmNhbGwodCwiY2FsbGVlIil9O3ZhciBocj1mdW5jdGlvbigpe3JldHVybiExfSxkcj1lKChmdW5jdGlvbih0LHIpe3ZhciBlPXImJiFyLm5vZGVUeXBlJiZyLG49ZSYmdCYmIXQubm9kZVR5cGUmJnQsbz1uJiZuLmV4cG9ydHM9PT1lP3UuQnVmZmVyOnZvaWQgMCxhPShvP28uaXNCdWZmZXI6dm9pZCAwKXx8aHI7dC5leHBvcnRzPWF9KSksanI9L14oPzowfFsxLTldXGQqKSQvO3ZhciBncj1mdW5jdGlvbih0LHIpe3ZhciBlPXR5cGVvZiB0O3JldHVybiEhKHI9bnVsbD09cj85MDA3MTk5MjU0NzQwOTkxOnIpJiYoIm51bWJlciI9PWV8fCJzeW1ib2wiIT1lJiZqci50ZXN0KHQpKSYmdD4tMSYmdCUxPT0wJiZ0PHJ9O3ZhciBfcj1mdW5jdGlvbih0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJnQ+LTEmJnQlMT09MCYmdDw9OTAwNzE5OTI1NDc0MDk5MX0sT3I9e307T3JbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPU9yWyJbb2JqZWN0IEZsb2F0NjRBcnJheV0iXT1PclsiW29iamVjdCBJbnQ4QXJyYXldIl09T3JbIltvYmplY3QgSW50MTZBcnJheV0iXT1PclsiW29iamVjdCBJbnQzMkFycmF5XSJdPU9yWyJbb2JqZWN0IFVpbnQ4QXJyYXldIl09T3JbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09T3JbIltvYmplY3QgVWludDE2QXJyYXldIl09T3JbIltvYmplY3QgVWludDMyQXJyYXldIl09ITAsT3JbIltvYmplY3QgQXJndW1lbnRzXSJdPU9yWyJbb2JqZWN0IEFycmF5XSJdPU9yWyJbb2JqZWN0IEFycmF5QnVmZmVyXSJdPU9yWyJbb2JqZWN0IEJvb2xlYW5dIl09T3JbIltvYmplY3QgRGF0YVZpZXddIl09T3JbIltvYmplY3QgRGF0ZV0iXT1PclsiW29iamVjdCBFcnJvcl0iXT1PclsiW29iamVjdCBGdW5jdGlvbl0iXT1PclsiW29iamVjdCBNYXBdIl09T3JbIltvYmplY3QgTnVtYmVyXSJdPU9yWyJbb2JqZWN0IE9iamVjdF0iXT1PclsiW29iamVjdCBSZWdFeHBdIl09T3JbIltvYmplY3QgU2V0XSJdPU9yWyJbb2JqZWN0IFN0cmluZ10iXT1PclsiW29iamVjdCBXZWFrTWFwXSJdPSExO3ZhciB3cj1mdW5jdGlvbih0KXtyZXR1cm4gaCh0KSYmX3IodC5sZW5ndGgpJiYhIU9yW3kodCldfTt2YXIgbXI9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiB0KHIpfX0sQXI9ZSgoZnVuY3Rpb24odCxyKXt2YXIgZT1yJiYhci5ub2RlVHlwZSYmcixvPWUmJnQmJiF0Lm5vZGVUeXBlJiZ0LHU9byYmby5leHBvcnRzPT09ZSYmbi5wcm9jZXNzLGE9ZnVuY3Rpb24oKXt0cnl7dmFyIHQ9byYmby5yZXF1aXJlJiZvLnJlcXVpcmUoInV0aWwiKS50eXBlcztyZXR1cm4gdHx8dSYmdS5iaW5kaW5nJiZ1LmJpbmRpbmcoInV0aWwiKX1jYXRjaCh0KXt9fSgpO3QuZXhwb3J0cz1hfSkpLFNyPUFyJiZBci5pc1R5cGVkQXJyYXksUHI9U3I/bXIoU3IpOndyLHhyPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIHpyPWZ1bmN0aW9uKHIsZSl7dmFyIG49dChyKSxvPSFuJiZ5cihyKSx1PSFuJiYhbyYmZHIociksYT0hbiYmIW8mJiF1JiZQcihyKSxpPW58fG98fHV8fGEsYz1pP2xyKHIubGVuZ3RoLFN0cmluZyk6W10sZj1jLmxlbmd0aDtmb3IodmFyIGwgaW4gcikhZSYmIXhyLmNhbGwocixsKXx8aSYmKCJsZW5ndGgiPT1sfHx1JiYoIm9mZnNldCI9PWx8fCJwYXJlbnQiPT1sKXx8YSYmKCJidWZmZXIiPT1sfHwiYnl0ZUxlbmd0aCI9PWx8fCJieXRlT2Zmc2V0Ij09bCl8fGdyKGwsZikpfHxjLnB1c2gobCk7cmV0dXJuIGN9LEVyPU9iamVjdC5wcm90b3R5cGU7dmFyIElyPWZ1bmN0aW9uKHQpe3ZhciByPXQmJnQuY29uc3RydWN0b3I7cmV0dXJuIHQ9PT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHxFcil9O3ZhciAkcj1mdW5jdGlvbih0LHIpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdChyKGUpKX19LE5yPSRyKE9iamVjdC5rZXlzLE9iamVjdCksVHI9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgTXI9ZnVuY3Rpb24odCl7aWYoIUlyKHQpKXJldHVybiBOcih0KTt2YXIgcj1bXTtmb3IodmFyIGUgaW4gT2JqZWN0KHQpKVRyLmNhbGwodCxlKSYmImNvbnN0cnVjdG9yIiE9ZSYmci5wdXNoKGUpO3JldHVybiByfTt2YXIga3I9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPXQmJl9yKHQubGVuZ3RoKSYmIW0odCl9O3ZhciBGcj1mdW5jdGlvbih0KXtyZXR1cm4ga3IodCk/enIodCk6TXIodCl9O3ZhciBDcj1mdW5jdGlvbih0KXtyZXR1cm4gb3IodCxGcixmcil9LERyPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIFVyPWZ1bmN0aW9uKHQscixlLG4sbyx1KXt2YXIgYT0xJmUsaT1Dcih0KSxjPWkubGVuZ3RoO2lmKGMhPUNyKHIpLmxlbmd0aCYmIWEpcmV0dXJuITE7Zm9yKHZhciBmPWM7Zi0tOyl7dmFyIGw9aVtmXTtpZighKGE/bCBpbiByOkRyLmNhbGwocixsKSkpcmV0dXJuITF9dmFyIHY9dS5nZXQodCkscz11LmdldChyKTtpZih2JiZzKXJldHVybiB2PT1yJiZzPT10O3ZhciBiPSEwO3Uuc2V0KHQsciksdS5zZXQocix0KTtmb3IodmFyIHA9YTsrK2Y8Yzspe3ZhciB5PXRbbD1pW2ZdXSxoPXJbbF07aWYobil2YXIgZD1hP24oaCx5LGwscix0LHUpOm4oeSxoLGwsdCxyLHUpO2lmKCEodm9pZCAwPT09ZD95PT09aHx8byh5LGgsZSxuLHUpOmQpKXtiPSExO2JyZWFrfXB8fChwPSJjb25zdHJ1Y3RvciI9PWwpfWlmKGImJiFwKXt2YXIgaj10LmNvbnN0cnVjdG9yLGc9ci5jb25zdHJ1Y3RvcjtqPT1nfHwhKCJjb25zdHJ1Y3RvciJpbiB0KXx8ISgiY29uc3RydWN0b3IiaW4gcil8fCJmdW5jdGlvbiI9PXR5cGVvZiBqJiZqIGluc3RhbmNlb2YgaiYmImZ1bmN0aW9uIj09dHlwZW9mIGcmJmcgaW5zdGFuY2VvZiBnfHwoYj0hMSl9cmV0dXJuIHUuZGVsZXRlKHQpLHUuZGVsZXRlKHIpLGJ9LEJyPUModSwiRGF0YVZpZXciKSxScj1DKHUsIlByb21pc2UiKSxMcj1DKHUsIlNldCIpLFZyPUModSwiV2Vha01hcCIpLEtyPXooQnIpLFdyPXoob3QpLHFyPXooUnIpLEdyPXooTHIpLEhyPXooVnIpLEpyPXk7KEJyJiYiW29iamVjdCBEYXRhVmlld10iIT1KcihuZXcgQnIobmV3IEFycmF5QnVmZmVyKDEpKSl8fG90JiYiW29iamVjdCBNYXBdIiE9SnIobmV3IG90KXx8UnImJiJbb2JqZWN0IFByb21pc2VdIiE9SnIoUnIucmVzb2x2ZSgpKXx8THImJiJbb2JqZWN0IFNldF0iIT1KcihuZXcgTHIpfHxWciYmIltvYmplY3QgV2Vha01hcF0iIT1KcihuZXcgVnIpKSYmKEpyPWZ1bmN0aW9uKHQpe3ZhciByPXkodCksZT0iW29iamVjdCBPYmplY3RdIj09cj90LmNvbnN0cnVjdG9yOnZvaWQgMCxuPWU/eihlKToiIjtpZihuKXN3aXRjaChuKXtjYXNlIEtyOnJldHVybiJbb2JqZWN0IERhdGFWaWV3XSI7Y2FzZSBXcjpyZXR1cm4iW29iamVjdCBNYXBdIjtjYXNlIHFyOnJldHVybiJbb2JqZWN0IFByb21pc2VdIjtjYXNlIEdyOnJldHVybiJbb2JqZWN0IFNldF0iO2Nhc2UgSHI6cmV0dXJuIltvYmplY3QgV2Vha01hcF0ifXJldHVybiByfSk7dmFyIFFyPUpyLFhyPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIFlyPWZ1bmN0aW9uKHIsZSxuLG8sdSxhKXt2YXIgaT10KHIpLGM9dChlKSxmPWk/IltvYmplY3QgQXJyYXldIjpRcihyKSxsPWM/IltvYmplY3QgQXJyYXldIjpRcihlKSx2PSJbb2JqZWN0IE9iamVjdF0iPT0oZj0iW29iamVjdCBBcmd1bWVudHNdIj09Zj8iW29iamVjdCBPYmplY3RdIjpmKSxzPSJbb2JqZWN0IE9iamVjdF0iPT0obD0iW29iamVjdCBBcmd1bWVudHNdIj09bD8iW29iamVjdCBPYmplY3RdIjpsKSxiPWY9PWw7aWYoYiYmZHIocikpe2lmKCFkcihlKSlyZXR1cm4hMTtpPSEwLHY9ITF9aWYoYiYmIXYpcmV0dXJuIGF8fChhPW5ldyBWdCksaXx8UHIocik/UXQocixlLG4sbyx1LGEpOmVyKHIsZSxmLG4sbyx1LGEpO2lmKCEoMSZuKSl7dmFyIHA9diYmWHIuY2FsbChyLCJfX3dyYXBwZWRfXyIpLHk9cyYmWHIuY2FsbChlLCJfX3dyYXBwZWRfXyIpO2lmKHB8fHkpe3ZhciBoPXA/ci52YWx1ZSgpOnIsZD15P2UudmFsdWUoKTplO3JldHVybiBhfHwoYT1uZXcgVnQpLHUoaCxkLG4sbyxhKX19cmV0dXJuISFiJiYoYXx8KGE9bmV3IFZ0KSxVcihyLGUsbixvLHUsYSkpfTt2YXIgWnI9ZnVuY3Rpb24gdChyLGUsbixvLHUpe3JldHVybiByPT09ZXx8KG51bGw9PXJ8fG51bGw9PWV8fCFoKHIpJiYhaChlKT9yIT1yJiZlIT1lOllyKHIsZSxuLG8sdCx1KSl9O3ZhciB0ZT1mdW5jdGlvbih0LHIsZSxuKXt2YXIgbz1lLmxlbmd0aCx1PW8sYT0hbjtpZihudWxsPT10KXJldHVybiF1O2Zvcih0PU9iamVjdCh0KTtvLS07KXt2YXIgaT1lW29dO2lmKGEmJmlbMl0/aVsxXSE9PXRbaVswXV06IShpWzBdaW4gdCkpcmV0dXJuITF9Zm9yKDsrK288dTspe3ZhciBjPShpPWVbb10pWzBdLGY9dFtjXSxsPWlbMV07aWYoYSYmaVsyXSl7aWYodm9pZCAwPT09ZiYmIShjIGluIHQpKXJldHVybiExfWVsc2V7dmFyIHY9bmV3IFZ0O2lmKG4pdmFyIHM9bihmLGwsYyx0LHIsdik7aWYoISh2b2lkIDA9PT1zP1pyKGwsZiwzLG4sdik6cykpcmV0dXJuITF9fXJldHVybiEwfTt2YXIgcmU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PXQmJiFPKHQpfTt2YXIgZWU9ZnVuY3Rpb24odCl7Zm9yKHZhciByPUZyKHQpLGU9ci5sZW5ndGg7ZS0tOyl7dmFyIG49cltlXSxvPXRbbl07cltlXT1bbixvLHJlKG8pXX1yZXR1cm4gcn07dmFyIG5lPWZ1bmN0aW9uKHQscil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiYoZVt0XT09PXImJih2b2lkIDAhPT1yfHx0IGluIE9iamVjdChlKSkpfX07dmFyIG9lPWZ1bmN0aW9uKHQpe3ZhciByPWVlKHQpO3JldHVybiAxPT1yLmxlbmd0aCYmclswXVsyXT9uZShyWzBdWzBdLHJbMF1bMV0pOmZ1bmN0aW9uKGUpe3JldHVybiBlPT09dHx8dGUoZSx0LHIpfX07dmFyIHVlPWZ1bmN0aW9uKHQscil7cmV0dXJuIG51bGwhPXQmJnIgaW4gT2JqZWN0KHQpfTt2YXIgYWU9ZnVuY3Rpb24ocixlLG4pe2Zvcih2YXIgbz0tMSx1PShlPUF0KGUscikpLmxlbmd0aCxhPSExOysrbzx1Oyl7dmFyIGk9U3QoZVtvXSk7aWYoIShhPW51bGwhPXImJm4ocixpKSkpYnJlYWs7cj1yW2ldfXJldHVybiBhfHwrK28hPXU/YTohISh1PW51bGw9PXI/MDpyLmxlbmd0aCkmJl9yKHUpJiZncihpLHUpJiYodChyKXx8eXIocikpfTt2YXIgaWU9ZnVuY3Rpb24odCxyKXtyZXR1cm4gbnVsbCE9dCYmYWUodCxyLHVlKX07dmFyIGNlPWZ1bmN0aW9uKHQscil7cmV0dXJuIF8odCkmJnJlKHIpP25lKFN0KHQpLHIpOmZ1bmN0aW9uKGUpe3ZhciBuPXh0KGUsdCk7cmV0dXJuIHZvaWQgMD09PW4mJm49PT1yP2llKGUsdCk6WnIocixuLDMpfX07dmFyIGZlPWZ1bmN0aW9uKHQpe3JldHVybiB0fTt2YXIgbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBudWxsPT1yP3ZvaWQgMDpyW3RdfX07dmFyIHZlPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gUHQocix0KX19O3ZhciBzZT1mdW5jdGlvbih0KXtyZXR1cm4gXyh0KT9sZShTdCh0KSk6dmUodCl9O3ZhciBiZT1mdW5jdGlvbihyKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygcj9yOm51bGw9PXI/ZmU6Im9iamVjdCI9PXR5cGVvZiByP3Qocik/Y2UoclswXSxyWzFdKTpvZShyKTpzZShyKX07dmFyIHBlPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihyLGUsbil7Zm9yKHZhciBvPS0xLHU9T2JqZWN0KHIpLGE9bihyKSxpPWEubGVuZ3RoO2ktLTspe3ZhciBjPWFbdD9pOisrb107aWYoITE9PT1lKHVbY10sYyx1KSlicmVha31yZXR1cm4gcn19KCk7dmFyIHllPWZ1bmN0aW9uKHQscil7cmV0dXJuIGZ1bmN0aW9uKGUsbil7aWYobnVsbD09ZSlyZXR1cm4gZTtpZigha3IoZSkpcmV0dXJuIHQoZSxuKTtmb3IodmFyIG89ZS5sZW5ndGgsdT1yP286LTEsYT1PYmplY3QoZSk7KHI/dS0tOisrdTxvKSYmITEhPT1uKGFbdV0sdSxhKTspO3JldHVybiBlfX0oKGZ1bmN0aW9uKHQscil7cmV0dXJuIHQmJnBlKHQscixGcil9KSk7dmFyIGhlPWZ1bmN0aW9uKHQscil7dmFyIGU9LTEsbj1rcih0KT9BcnJheSh0Lmxlbmd0aCk6W107cmV0dXJuIHllKHQsKGZ1bmN0aW9uKHQsbyx1KXtuWysrZV09cih0LG8sdSl9KSksbn07dmFyIGRlPWZ1bmN0aW9uKHIsZSl7cmV0dXJuKHQocik/Z3Q6aGUpKHIsYmUoZSkpfSxqZT1BcnJheS5wcm90b3R5cGUuam9pbjt2YXIgZ2U9ZnVuY3Rpb24odCxyKXtyZXR1cm4gbnVsbD09dD8iIjpqZS5jYWxsKHQscil9O3ZhciBfZT1mdW5jdGlvbihyKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHJ8fCF0KHIpJiZoKHIpJiYiW29iamVjdCBTdHJpbmddIj09eShyKX0sT2U9bGUoImxlbmd0aCIpLHdlPVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTt2YXIgbWU9ZnVuY3Rpb24odCl7cmV0dXJuIHdlLnRlc3QodCl9LEFlPSJbXFx1ZDgwMC1cXHVkZmZmXSIsU2U9IltcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZdIixQZT0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIix4ZT0iW15cXHVkODAwLVxcdWRmZmZdIix6ZT0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIsRWU9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLEllPSIoPzoiK1NlKyJ8IitQZSsiKSIrIj8iLCRlPSJbXFx1ZmUwZVxcdWZlMGZdPyIrSWUrKCIoPzpcXHUyMDBkKD86IitbeGUsemUsRWVdLmpvaW4oInwiKSsiKVtcXHVmZTBlXFx1ZmUwZl0/IitJZSsiKSoiKSxOZT0iKD86IitbeGUrU2UrIj8iLFNlLHplLEVlLEFlXS5qb2luKCJ8IikrIikiLFRlPVJlZ0V4cChQZSsiKD89IitQZSsiKXwiK05lKyRlLCJnIik7dmFyIE1lPWZ1bmN0aW9uKHQpe2Zvcih2YXIgcj1UZS5sYXN0SW5kZXg9MDtUZS50ZXN0KHQpOykrK3I7cmV0dXJuIHJ9O3ZhciBrZT1mdW5jdGlvbih0KXtyZXR1cm4gbWUodCk/TWUodCk6T2UodCl9O3ZhciBGZT1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiAwO2lmKGtyKHQpKXJldHVybiBfZSh0KT9rZSh0KTp0Lmxlbmd0aDt2YXIgcj1Rcih0KTtyZXR1cm4iW29iamVjdCBNYXBdIj09cnx8IltvYmplY3QgU2V0XSI9PXI/dC5zaXplOk1yKHQpLmxlbmd0aH07dmFyIENlPWZ1bmN0aW9uKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdHx8aCh0KSYmIltvYmplY3QgTnVtYmVyXSI9PXkodCl9O3ZhciBEZT1mdW5jdGlvbih0LHIpe2Zvcih2YXIgZT0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK2U8biYmITEhPT1yKHRbZV0sZSx0KTspO3JldHVybiB0fSxVZT1mdW5jdGlvbigpe3RyeXt2YXIgdD1DKE9iamVjdCwiZGVmaW5lUHJvcGVydHkiKTtyZXR1cm4gdCh7fSwiIix7fSksdH1jYXRjaCh0KXt9fSgpO3ZhciBCZT1mdW5jdGlvbih0LHIsZSl7Il9fcHJvdG9fXyI9PXImJlVlP1VlKHQscix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6ZSx3cml0YWJsZTohMH0pOnRbcl09ZX0sUmU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgTGU9ZnVuY3Rpb24odCxyLGUpe3ZhciBuPXRbcl07UmUuY2FsbCh0LHIpJiZKKG4sZSkmJih2b2lkIDAhPT1lfHxyIGluIHQpfHxCZSh0LHIsZSl9O3ZhciBWZT1mdW5jdGlvbih0LHIsZSxuKXt2YXIgbz0hZTtlfHwoZT17fSk7Zm9yKHZhciB1PS0xLGE9ci5sZW5ndGg7Kyt1PGE7KXt2YXIgaT1yW3VdLGM9bj9uKGVbaV0sdFtpXSxpLGUsdCk6dm9pZCAwO3ZvaWQgMD09PWMmJihjPXRbaV0pLG8/QmUoZSxpLGMpOkxlKGUsaSxjKX1yZXR1cm4gZX07dmFyIEtlPWZ1bmN0aW9uKHQscil7cmV0dXJuIHQmJlZlKHIsRnIociksdCl9O3ZhciBXZT1mdW5jdGlvbih0KXt2YXIgcj1bXTtpZihudWxsIT10KWZvcih2YXIgZSBpbiBPYmplY3QodCkpci5wdXNoKGUpO3JldHVybiByfSxxZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBHZT1mdW5jdGlvbih0KXtpZighTyh0KSlyZXR1cm4gV2UodCk7dmFyIHI9SXIodCksZT1bXTtmb3IodmFyIG4gaW4gdCkoImNvbnN0cnVjdG9yIiE9bnx8IXImJnFlLmNhbGwodCxuKSkmJmUucHVzaChuKTtyZXR1cm4gZX07dmFyIEhlPWZ1bmN0aW9uKHQpe3JldHVybiBrcih0KT96cih0LCEwKTpHZSh0KX07dmFyIEplPWZ1bmN0aW9uKHQscil7cmV0dXJuIHQmJlZlKHIsSGUociksdCl9LFFlPWUoKGZ1bmN0aW9uKHQscil7dmFyIGU9ciYmIXIubm9kZVR5cGUmJnIsbj1lJiZ0JiYhdC5ub2RlVHlwZSYmdCxvPW4mJm4uZXhwb3J0cz09PWU/dS5CdWZmZXI6dm9pZCAwLGE9bz9vLmFsbG9jVW5zYWZlOnZvaWQgMDt0LmV4cG9ydHM9ZnVuY3Rpb24odCxyKXtpZihyKXJldHVybiB0LnNsaWNlKCk7dmFyIGU9dC5sZW5ndGgsbj1hP2EoZSk6bmV3IHQuY29uc3RydWN0b3IoZSk7cmV0dXJuIHQuY29weShuKSxufX0pKTt2YXIgWGU9ZnVuY3Rpb24odCxyKXt2YXIgZT0tMSxuPXQubGVuZ3RoO2ZvcihyfHwocj1BcnJheShuKSk7KytlPG47KXJbZV09dFtlXTtyZXR1cm4gcn07dmFyIFllPWZ1bmN0aW9uKHQscil7cmV0dXJuIFZlKHQsZnIodCkscil9LFplPSRyKE9iamVjdC5nZXRQcm90b3R5cGVPZixPYmplY3QpLHRuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM/ZnVuY3Rpb24odCl7Zm9yKHZhciByPVtdO3Q7KW5yKHIsZnIodCkpLHQ9WmUodCk7cmV0dXJuIHJ9OmFyO3ZhciBybj1mdW5jdGlvbih0LHIpe3JldHVybiBWZSh0LHRuKHQpLHIpfTt2YXIgZW49ZnVuY3Rpb24odCl7cmV0dXJuIG9yKHQsSGUsdG4pfSxubj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBvbj1mdW5jdGlvbih0KXt2YXIgcj10Lmxlbmd0aCxlPW5ldyB0LmNvbnN0cnVjdG9yKHIpO3JldHVybiByJiYic3RyaW5nIj09dHlwZW9mIHRbMF0mJm5uLmNhbGwodCwiaW5kZXgiKSYmKGUuaW5kZXg9dC5pbmRleCxlLmlucHV0PXQuaW5wdXQpLGV9O3ZhciB1bj1mdW5jdGlvbih0KXt2YXIgcj1uZXcgdC5jb25zdHJ1Y3Rvcih0LmJ5dGVMZW5ndGgpO3JldHVybiBuZXcgWHQocikuc2V0KG5ldyBYdCh0KSkscn07dmFyIGFuPWZ1bmN0aW9uKHQscil7dmFyIGU9cj91bih0LmJ1ZmZlcik6dC5idWZmZXI7cmV0dXJuIG5ldyB0LmNvbnN0cnVjdG9yKGUsdC5ieXRlT2Zmc2V0LHQuYnl0ZUxlbmd0aCl9LGNuPS9cdyokLzt2YXIgZm49ZnVuY3Rpb24odCl7dmFyIHI9bmV3IHQuY29uc3RydWN0b3IodC5zb3VyY2UsY24uZXhlYyh0KSk7cmV0dXJuIHIubGFzdEluZGV4PXQubGFzdEluZGV4LHJ9LGxuPWE/YS5wcm90b3R5cGU6dm9pZCAwLHZuPWxuP2xuLnZhbHVlT2Y6dm9pZCAwO3ZhciBzbj1mdW5jdGlvbih0KXtyZXR1cm4gdm4/T2JqZWN0KHZuLmNhbGwodCkpOnt9fTt2YXIgYm49ZnVuY3Rpb24odCxyKXt2YXIgZT1yP3VuKHQuYnVmZmVyKTp0LmJ1ZmZlcjtyZXR1cm4gbmV3IHQuY29uc3RydWN0b3IoZSx0LmJ5dGVPZmZzZXQsdC5sZW5ndGgpfTt2YXIgcG49ZnVuY3Rpb24odCxyLGUpe3ZhciBuPXQuY29uc3RydWN0b3I7c3dpdGNoKHIpe2Nhc2UiW29iamVjdCBBcnJheUJ1ZmZlcl0iOnJldHVybiB1bih0KTtjYXNlIltvYmplY3QgQm9vbGVhbl0iOmNhc2UiW29iamVjdCBEYXRlXSI6cmV0dXJuIG5ldyBuKCt0KTtjYXNlIltvYmplY3QgRGF0YVZpZXddIjpyZXR1cm4gYW4odCxlKTtjYXNlIltvYmplY3QgRmxvYXQzMkFycmF5XSI6Y2FzZSJbb2JqZWN0IEZsb2F0NjRBcnJheV0iOmNhc2UiW29iamVjdCBJbnQ4QXJyYXldIjpjYXNlIltvYmplY3QgSW50MTZBcnJheV0iOmNhc2UiW29iamVjdCBJbnQzMkFycmF5XSI6Y2FzZSJbb2JqZWN0IFVpbnQ4QXJyYXldIjpjYXNlIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIjpjYXNlIltvYmplY3QgVWludDE2QXJyYXldIjpjYXNlIltvYmplY3QgVWludDMyQXJyYXldIjpyZXR1cm4gYm4odCxlKTtjYXNlIltvYmplY3QgTWFwXSI6cmV0dXJuIG5ldyBuO2Nhc2UiW29iamVjdCBOdW1iZXJdIjpjYXNlIltvYmplY3QgU3RyaW5nXSI6cmV0dXJuIG5ldyBuKHQpO2Nhc2UiW29iamVjdCBSZWdFeHBdIjpyZXR1cm4gZm4odCk7Y2FzZSJbb2JqZWN0IFNldF0iOnJldHVybiBuZXcgbjtjYXNlIltvYmplY3QgU3ltYm9sXSI6cmV0dXJuIHNuKHQpfX0seW49T2JqZWN0LmNyZWF0ZSxobj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIGZ1bmN0aW9uKHIpe2lmKCFPKHIpKXJldHVybnt9O2lmKHluKXJldHVybiB5bihyKTt0LnByb3RvdHlwZT1yO3ZhciBlPW5ldyB0O3JldHVybiB0LnByb3RvdHlwZT12b2lkIDAsZX19KCk7dmFyIGRuPWZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0LmNvbnN0cnVjdG9yfHxJcih0KT97fTpobihaZSh0KSl9O3ZhciBqbj1mdW5jdGlvbih0KXtyZXR1cm4gaCh0KSYmIltvYmplY3QgTWFwXSI9PVFyKHQpfSxnbj1BciYmQXIuaXNNYXAsX249Z24/bXIoZ24pOmpuO3ZhciBPbj1mdW5jdGlvbih0KXtyZXR1cm4gaCh0KSYmIltvYmplY3QgU2V0XSI9PVFyKHQpfSx3bj1BciYmQXIuaXNTZXQsbW49d24/bXIod24pOk9uLEFuPXt9O0FuWyJbb2JqZWN0IEFyZ3VtZW50c10iXT1BblsiW29iamVjdCBBcnJheV0iXT1BblsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1BblsiW29iamVjdCBEYXRhVmlld10iXT1BblsiW29iamVjdCBCb29sZWFuXSJdPUFuWyJbb2JqZWN0IERhdGVdIl09QW5bIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPUFuWyJbb2JqZWN0IEZsb2F0NjRBcnJheV0iXT1BblsiW29iamVjdCBJbnQ4QXJyYXldIl09QW5bIltvYmplY3QgSW50MTZBcnJheV0iXT1BblsiW29iamVjdCBJbnQzMkFycmF5XSJdPUFuWyJbb2JqZWN0IE1hcF0iXT1BblsiW29iamVjdCBOdW1iZXJdIl09QW5bIltvYmplY3QgT2JqZWN0XSJdPUFuWyJbb2JqZWN0IFJlZ0V4cF0iXT1BblsiW29iamVjdCBTZXRdIl09QW5bIltvYmplY3QgU3RyaW5nXSJdPUFuWyJbb2JqZWN0IFN5bWJvbF0iXT1BblsiW29iamVjdCBVaW50OEFycmF5XSJdPUFuWyJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSJdPUFuWyJbb2JqZWN0IFVpbnQxNkFycmF5XSJdPUFuWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLEFuWyJbb2JqZWN0IEVycm9yXSJdPUFuWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPUFuWyJbb2JqZWN0IFdlYWtNYXBdIl09ITE7dmFyIFNuPWZ1bmN0aW9uIHIoZSxuLG8sdSxhLGkpe3ZhciBjLGY9MSZuLGw9MiZuLHY9NCZuO2lmKG8mJihjPWE/byhlLHUsYSxpKTpvKGUpKSx2b2lkIDAhPT1jKXJldHVybiBjO2lmKCFPKGUpKXJldHVybiBlO3ZhciBzPXQoZSk7aWYocyl7aWYoYz1vbihlKSwhZilyZXR1cm4gWGUoZSxjKX1lbHNle3ZhciBiPVFyKGUpLHA9IltvYmplY3QgRnVuY3Rpb25dIj09Ynx8IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIj09YjtpZihkcihlKSlyZXR1cm4gUWUoZSxmKTtpZigiW29iamVjdCBPYmplY3RdIj09Ynx8IltvYmplY3QgQXJndW1lbnRzXSI9PWJ8fHAmJiFhKXtpZihjPWx8fHA/e306ZG4oZSksIWYpcmV0dXJuIGw/cm4oZSxKZShjLGUpKTpZZShlLEtlKGMsZSkpfWVsc2V7aWYoIUFuW2JdKXJldHVybiBhP2U6e307Yz1wbihlLGIsZil9fWl8fChpPW5ldyBWdCk7dmFyIHk9aS5nZXQoZSk7aWYoeSlyZXR1cm4geTtpLnNldChlLGMpLG1uKGUpP2UuZm9yRWFjaCgoZnVuY3Rpb24odCl7Yy5hZGQocih0LG4sbyx0LGUsaSkpfSkpOl9uKGUpJiZlLmZvckVhY2goKGZ1bmN0aW9uKHQsdSl7Yy5zZXQodSxyKHQsbixvLHUsZSxpKSl9KSk7dmFyIGg9cz92b2lkIDA6KHY/bD9lbjpDcjpsP0hlOkZyKShlKTtyZXR1cm4gRGUoaHx8ZSwoZnVuY3Rpb24odCx1KXtoJiYodD1lW3U9dF0pLExlKGMsdSxyKHQsbixvLHUsZSxpKSl9KSksY307dmFyIFBuPWZ1bmN0aW9uKHQpe3JldHVybiBTbih0LDUpfTtmdW5jdGlvbiB4bih0KXtsZXQgcj0hMTtyZXR1cm4gRXQodCk/cj0haXNOYU4oTnVtYmVyKHQpKTpmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkmJihyPSEwKSxyfWZ1bmN0aW9uIHpuKHQpe2lmKCFFdCh0KSYmIXhuKHQpJiYhZCh0KSlyZXR1cm4iIjtsZXQgcj0iIjt0cnl7cj1TdHJpbmcodCl9Y2F0Y2godCl7fXRyeXtyPXQudG9TdHJpbmcoKX1jYXRjaCh0KXt9cmV0dXJuIHJ9dmFyIEVuPU1hdGguY2VpbCxJbj1NYXRoLm1heDt2YXIgJG49ZnVuY3Rpb24odCxyLGUsbil7Zm9yKHZhciBvPS0xLHU9SW4oRW4oKHItdCkvKGV8fDEpKSwwKSxhPUFycmF5KHUpO3UtLTspYVtuP3U6KytvXT10LHQrPWU7cmV0dXJuIGF9O3ZhciBObj1mdW5jdGlvbih0LHIsZSl7aWYoIU8oZSkpcmV0dXJuITE7dmFyIG49dHlwZW9mIHI7cmV0dXJuISEoIm51bWJlciI9PW4/a3IoZSkmJmdyKHIsZS5sZW5ndGgpOiJzdHJpbmciPT1uJiZyIGluIGUpJiZKKGVbcl0sdCl9LFRuPS9ccy87dmFyIE1uPWZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10Lmxlbmd0aDtyLS0mJlRuLnRlc3QodC5jaGFyQXQocikpOyk7cmV0dXJuIHJ9LGtuPS9eXHMrLzt2YXIgRm49ZnVuY3Rpb24odCl7cmV0dXJuIHQ/dC5zbGljZSgwLE1uKHQpKzEpLnJlcGxhY2Uoa24sIiIpOnR9LENuPS9eWy0rXTB4WzAtOWEtZl0rJC9pLERuPS9eMGJbMDFdKyQvaSxVbj0vXjBvWzAtN10rJC9pLEJuPXBhcnNlSW50O3ZhciBSbj1mdW5jdGlvbih0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYoZCh0KSlyZXR1cm4gTmFOO2lmKE8odCkpe3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PU8ocik/cisiIjpyfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PUZuKHQpO3ZhciBlPURuLnRlc3QodCk7cmV0dXJuIGV8fFVuLnRlc3QodCk/Qm4odC5zbGljZSgyKSxlPzI6OCk6Q24udGVzdCh0KT9OYU46K3R9O3ZhciBMbj1mdW5jdGlvbih0KXtyZXR1cm4gdD9JbmZpbml0eT09PSh0PVJuKHQpKXx8LUluZmluaXR5PT09dD8xNzk3NjkzMTM0ODYyMzE1N2UyOTIqKHQ8MD8tMToxKTp0PT10P3Q6MDowPT09dD90OjB9O3ZhciBWbj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24ocixlLG4pe3JldHVybiBuJiYibnVtYmVyIiE9dHlwZW9mIG4mJk5uKHIsZSxuKSYmKGU9bj12b2lkIDApLHI9TG4ociksdm9pZCAwPT09ZT8oZT1yLHI9MCk6ZT1MbihlKSxuPXZvaWQgMD09PW4/cjxlPzE6LTE6TG4obiksJG4ocixlLG4sdCl9fSgpO2Z1bmN0aW9uIEtuKHQscj1udWxsLGU9e30pe20ocil8fChyPXQ9PnQpO2xldCBuPXh0KGUsImZvcmNlIiwhMSk7cmV0dXJuIEZ0KG4pfHwobj0hMSksZnVuY3Rpb24odCxyLGU9ITEpe2xldCBuPVtdO2lmKCFOdCh0KSYmIUl0KHQpKXJldHVybiByKHQsbnVsbCxbXSk7ZnVuY3Rpb24gbyh0KXtpZihOdCh0KSlyZXR1cm4gVm4oRmUodCkpO2lmKEl0KHQpKXtsZXQgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KSxuPW51bGw7cmV0dXJuIGUmJihuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCkpLE50KHIpfHwocj1bXSksTnQobil8fChuPVtdKSxbLi4uciwuLi5uXX1yZXR1cm4gdH1yZXR1cm4gZnVuY3Rpb24gdChlLHUpe2lmKE50KGUpKXJldHVybiBvKGUpLm1hcCgobz0+e2xldCB1PWVbb10sYT1QbihuKTtyZXR1cm4gbi5wdXNoKG8pLHU9cih1LG8sYSksdT10KHUpLG4ucG9wKCksdX0pKTtpZihJdChlKSl7bGV0IHU9byhlKSxhPXt9O3JldHVybiB1Lm1hcCgobz0+e2xldCB1PWVbb10saT1QbihuKTtuLnB1c2gobyksdT1yKHUsbyxpKSx1PXQodSksbi5wb3AoKSxhW29dPXV9KSksYX1yZXR1cm4gZX0odCl9KHQscixuKX1mdW5jdGlvbiBXbih0LHIsZSl7cmV0dXJuIHIgaW4gdD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLHt2YWx1ZTplLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtyXT1lLHR9dmFyIHFuPWZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZmV9O3ZhciBHbj1mdW5jdGlvbihyLGUpe3JldHVybih0KHIpP0RlOnllKShyLHFuKGUpKX07dmFyIEhuPWZ1bmN0aW9uKHQscixlLG4pe2lmKCFPKHQpKXJldHVybiB0O2Zvcih2YXIgbz0tMSx1PShyPUF0KHIsdCkpLmxlbmd0aCxhPXUtMSxpPXQ7bnVsbCE9aSYmKytvPHU7KXt2YXIgYz1TdChyW29dKSxmPWU7aWYoIl9fcHJvdG9fXyI9PT1jfHwiY29uc3RydWN0b3IiPT09Y3x8InByb3RvdHlwZSI9PT1jKXJldHVybiB0O2lmKG8hPWEpe3ZhciBsPWlbY107dm9pZCAwPT09KGY9bj9uKGwsYyxpKTp2b2lkIDApJiYoZj1PKGwpP2w6Z3IocltvKzFdKT9bXTp7fSl9TGUoaSxjLGYpLGk9aVtjXX1yZXR1cm4gdH07dmFyIEpuPWZ1bmN0aW9uKHQscixlKXtyZXR1cm4gbnVsbD09dD90OkhuKHQscixlKX07dmFyIFFuPWZ1bmN0aW9uKHQpe3ZhciByPW51bGw9PXQ/MDp0Lmxlbmd0aDtyZXR1cm4gcj90W3ItMV06dm9pZCAwfTt2YXIgWG49ZnVuY3Rpb24odCxyLGUpe3ZhciBuPS0xLG89dC5sZW5ndGg7cjwwJiYocj0tcj5vPzA6bytyKSwoZT1lPm8/bzplKTwwJiYoZSs9byksbz1yPmU/MDplLXI+Pj4wLHI+Pj49MDtmb3IodmFyIHU9QXJyYXkobyk7KytuPG87KXVbbl09dFtuK3JdO3JldHVybiB1fTt2YXIgWW49ZnVuY3Rpb24odCxyKXtyZXR1cm4gci5sZW5ndGg8Mj90OlB0KHQsWG4ociwwLC0xKSl9O3ZhciBabj1mdW5jdGlvbih0LHIpe3JldHVybiByPUF0KHIsdCksbnVsbD09KHQ9WW4odCxyKSl8fGRlbGV0ZSB0W1N0KFFuKHIpKV19LHRvPUZ1bmN0aW9uLnByb3RvdHlwZSxybz1PYmplY3QucHJvdG90eXBlLGVvPXRvLnRvU3RyaW5nLG5vPXJvLmhhc093blByb3BlcnR5LG9vPWVvLmNhbGwoT2JqZWN0KTt2YXIgdW89ZnVuY3Rpb24odCl7aWYoIWgodCl8fCJbb2JqZWN0IE9iamVjdF0iIT15KHQpKXJldHVybiExO3ZhciByPVplKHQpO2lmKG51bGw9PT1yKXJldHVybiEwO3ZhciBlPW5vLmNhbGwociwiY29uc3RydWN0b3IiKSYmci5jb25zdHJ1Y3RvcjtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZSYmZSBpbnN0YW5jZW9mIGUmJmVvLmNhbGwoZSk9PW9vfTt2YXIgYW89ZnVuY3Rpb24odCl7cmV0dXJuIHVvKHQpP3ZvaWQgMDp0fSxpbz1hP2EuaXNDb25jYXRTcHJlYWRhYmxlOnZvaWQgMDt2YXIgY289ZnVuY3Rpb24ocil7cmV0dXJuIHQocil8fHlyKHIpfHwhIShpbyYmciYmcltpb10pfTt2YXIgZm89ZnVuY3Rpb24gdChyLGUsbixvLHUpe3ZhciBhPS0xLGk9ci5sZW5ndGg7Zm9yKG58fChuPWNvKSx1fHwodT1bXSk7KythPGk7KXt2YXIgYz1yW2FdO2U+MCYmbihjKT9lPjE/dChjLGUtMSxuLG8sdSk6bnIodSxjKTpvfHwodVt1Lmxlbmd0aF09Yyl9cmV0dXJuIHV9O3ZhciBsbz1mdW5jdGlvbih0KXtyZXR1cm4obnVsbD09dD8wOnQubGVuZ3RoKT9mbyh0LDEpOltdfTt2YXIgdm89ZnVuY3Rpb24odCxyLGUpe3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnJldHVybiB0LmNhbGwocik7Y2FzZSAxOnJldHVybiB0LmNhbGwocixlWzBdKTtjYXNlIDI6cmV0dXJuIHQuY2FsbChyLGVbMF0sZVsxXSk7Y2FzZSAzOnJldHVybiB0LmNhbGwocixlWzBdLGVbMV0sZVsyXSl9cmV0dXJuIHQuYXBwbHkocixlKX0sc289TWF0aC5tYXg7dmFyIGJvPWZ1bmN0aW9uKHQscixlKXtyZXR1cm4gcj1zbyh2b2lkIDA9PT1yP3QubGVuZ3RoLTE6ciwwKSxmdW5jdGlvbigpe2Zvcih2YXIgbj1hcmd1bWVudHMsbz0tMSx1PXNvKG4ubGVuZ3RoLXIsMCksYT1BcnJheSh1KTsrK288dTspYVtvXT1uW3Irb107bz0tMTtmb3IodmFyIGk9QXJyYXkocisxKTsrK288cjspaVtvXT1uW29dO3JldHVybiBpW3JdPWUoYSksdm8odCx0aGlzLGkpfX07dmFyIHBvPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0seW89VWU/ZnVuY3Rpb24odCxyKXtyZXR1cm4gVWUodCwidG9TdHJpbmciLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTpwbyhyKSx3cml0YWJsZTohMH0pfTpmZSxobz1EYXRlLm5vdzt2YXIgam89ZnVuY3Rpb24odCl7dmFyIHI9MCxlPTA7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49aG8oKSxvPTE2LShuLWUpO2lmKGU9bixvPjApe2lmKCsrcj49ODAwKXJldHVybiBhcmd1bWVudHNbMF19ZWxzZSByPTA7cmV0dXJuIHQuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9fSh5byk7dmFyIGdvPWZ1bmN0aW9uKHQpe3JldHVybiBqbyhibyh0LHZvaWQgMCxsbyksdCsiIil9KChmdW5jdGlvbih0LHIpe3ZhciBlPXt9O2lmKG51bGw9PXQpcmV0dXJuIGU7dmFyIG49ITE7cj1ndChyLChmdW5jdGlvbihyKXtyZXR1cm4gcj1BdChyLHQpLG58fChuPXIubGVuZ3RoPjEpLHJ9KSksVmUodCxlbih0KSxlKSxuJiYoZT1TbihlLDcsYW8pKTtmb3IodmFyIG89ci5sZW5ndGg7by0tOylabihlLHJbb10pO3JldHVybiBlfSkpO2Z1bmN0aW9uIF9vKHQscil7dmFyIGU9T2JqZWN0LmtleXModCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtyJiYobj1uLmZpbHRlcigoZnVuY3Rpb24ocil7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKS5lbnVtZXJhYmxlfSkpKSxlLnB1c2guYXBwbHkoZSxuKX1yZXR1cm4gZX1mdW5jdGlvbiBPbyh0KXtmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXt2YXIgZT1udWxsIT1hcmd1bWVudHNbcl0/YXJndW1lbnRzW3JdOnt9O3IlMj9fbyhPYmplY3QoZSksITApLmZvckVhY2goKGZ1bmN0aW9uKHIpe1duKHQscixlW3JdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGUpKTpfbyhPYmplY3QoZSkpLmZvckVhY2goKGZ1bmN0aW9uKHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHIpKX0pKX1yZXR1cm4gdH1mdW5jdGlvbiB3byh0LHI9e30pe2xldCBlPSIkbGV2ZWwiLG49IiRwYXJlbnRzIjtpZighTXQodCkpcmV0dXJuW107bGV0IG89eHQociwiYmluZEtleSIsbnVsbCk7RXQobyl8fChvPSJpZCIpO2xldCB1PXh0KHIsImJpbmRQYXJlbnQiLG51bGwpO0V0KHUpfHwodT0icGFyZW50SWQiKTtsZXQgYT14dChyLCJiaW5kQ2hpbGRyZW4iLG51bGwpO0V0KGEpfHwoYT0iY2hpbGRyZW4iKTtsZXQgaT14dChyLCJzYXZlRXh0UHJvcHMiLG51bGwpO3JldHVybiBGdChpKXx8KGk9ITEpLGZ1bmN0aW9uKHQpe2xldCByPVtdO2Z1bmN0aW9uIGModCl7cmV0dXJuIGk/dDpnbyh0LFtlLG5dKX1sZXQgZj17fTtyZXR1cm4gR24odCwoKGUsbik9PntpZigwPT09ZS4kbGV2ZWwpe2xldCB0PWMoZSk7ci5wdXNoKHQpLGZbZVtvXV09W25dfWVsc2V7bGV0IG49ZnVuY3Rpb24ocil7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2xldCBuPXRbZV07aWYoclt1XT09PW5bb10pcmV0dXJuIG59cmV0dXJuIG51bGx9KGUpO2lmKG51bGwhPT1uKXtsZXQgdD1mW25bb11dO3Q9Wy4uLnQsYV07bGV0IHU9eHQocix0LFtdKSxpPWMoZSk7dS5wdXNoKGkpLGZbZVtvXV09Wy4uLnQsdS5sZW5ndGgtMV0sSm4ocix0LHUpfWVsc2UgY29uc29sZS5sb2coYGNhbiBub3QgZmluZCBwYXJlbnQgZm9yICR7eHQoZSx1KX1gKX19KSkscn0odD1mdW5jdGlvbih0KXtsZXQgcj1bXTtmdW5jdGlvbiBhKGEpe2xldCBpPVtdO0duKHQsKCh0LGMpPT57bGV0IGY9eHQodCx1KSxsPXh0KGEsbyk7aWYoZiYmbCYmZj09PWwpe2xldCB1PXh0KGEsbixbXSk7dT1Qbih1KSx1LnB1c2goYVtvXSksci5wdXNoKE9vKHtbZV06YS4kbGV2ZWwrMSxbbl06dX0sdCkpfWVsc2UgaS5wdXNoKHQpfSkpLHQ9aX1pZih0PVBuKHQpLGZ1bmN0aW9uKCl7bGV0IG89W107R24odCwoKHQsYSk9PntUdCh0W3VdKT9yLnB1c2goT28oe1tlXTowLFtuXTpbXX0sdCkpOm8ucHVzaCh0KX0pKSx0PW99KCksMD09PXIubGVuZ3RoKXJldHVybiByO2xldCBpPS0xO2Zvcig7aSs9MSwhKGk+ci5sZW5ndGgtMSk7KXtpZihhKHJbaV0pLDA9PT10Lmxlbmd0aClicmVha31yZXR1cm4gcn0odCkpfWZ1bmN0aW9uIG1vKHQscj17fSl7aWYoISR0KHQpJiYhTXQodCkpcmV0dXJuW107bGV0IGU9eHQociwiYmluZEtleSIsbnVsbCk7RXQoZSl8fChlPSJpZCIpO2xldCBuPXh0KHIsImJpbmRQYXJlbnQiLG51bGwpO0V0KG4pfHwobj0icGFyZW50SWQiKTtsZXQgbz14dChyLCJiaW5kVGV4dCIsbnVsbCk7RXQobyl8fChvPSJ0ZXh0Iik7bGV0IHU9eHQociwiYmluZENoaWxkcmVuIixudWxsKTtFdCh1KXx8KHU9ImNoaWxkcmVuIik7bGV0IGE9eHQociwiYmluZFR5cGUiLG51bGwpO0V0KGEpfHwoYT0idHlwZSIpO2xldCBpPXh0KHIsImJpbmROdW1PZkNoaWxyZW4iLG51bGwpO0V0KGkpfHwoaT0ibnVtT2ZDaGlscmVuIik7bGV0IGM9eHQociwiYmluZFJvb3QiLG51bGwpO0V0KGMpfHwoYz0icm9vdCIpO2xldCBmPXh0KHIsInNhdmVFeHRQcm9wcyIsbnVsbCk7cmV0dXJuIEZ0KGYpfHwoZj0hMSksRXQoYykmJih0PXtbY106dH0pLHdvKGZ1bmN0aW9uKHQscj17fSl7aWYoISR0KHQpJiYhTXQodCkpcmV0dXJuW107bGV0IGU9eHQociwiYmluZEtleSIsbnVsbCk7RXQoZSl8fChlPSJpZCIpO2xldCBuPXh0KHIsImJpbmRQYXJlbnQiLG51bGwpO0V0KG4pfHwobj0icGFyZW50SWQiKTtsZXQgbz14dChyLCJiaW5kQmVsb25nIixudWxsKTtFdChvKXx8KG89ImtleSIpO2xldCB1PXh0KHIsImJpbmRUZXh0IixudWxsKTtFdCh1KXx8KHU9InRleHQiKTtsZXQgYT14dChyLCJiaW5kVHlwZSIsbnVsbCk7RXQoYSl8fChhPSJ0eXBlIik7bGV0IGk9eHQociwiYmluZE51bU9mQ2hpbHJlbiIsbnVsbCk7ZnVuY3Rpb24gYyh0LHIsZSl7dD1Qbih0KSx0PWRlKHQsKHQ9PmQodCk/em4odCk6dCkpLGQocikmJihyPXpuKHIpKSxkKGUpJiYoZT16bihlKSksKEV0KHIpfHx4bihyKSkmJnQucHVzaChyKTtsZXQgbj1nZSh0LCItIik7cmV0dXJuKEV0KGUpfHx4bihlKSkmJihuPWAke2V9LSR7bn1gKSxufUV0KGkpfHwoaT0ibnVtT2ZDaGlscmVuIik7bGV0IGY9W107cmV0dXJuIEtuKHQsKCh0LHIsbCk9PntsZXQgdj1jKGwscikscz1jKGwsbnVsbCksYj0ibm9kZSI7SXQodCk/Yj0ib2JqZWN0IjpOdCh0KSYmKGI9ImFycmF5Iik7bGV0IHA9e1tlXTp2LFtuXTpzLFthXTpifTtpZigoRXQocil8fENlKHIpKSYmKHBbb109ciksSXQodCl8fE50KHQpfHwocFt1XT10KSxJdCh0KXx8TnQodCkpe2xldCByPUZlKHQpO3BbaV09cn1yZXR1cm4gZi5wdXNoKHApLHR9KSx7Zm9yY2U6ITB9KSxmfSh0LHtiaW5kS2V5OmUsYmluZFBhcmVudDpuLGJpbmRUZXh0Om8sYmluZFR5cGU6YSxiaW5kTnVtT2ZDaGlscmVuOml9KSx7YmluZEtleTplLGJpbmRQYXJlbnQ6bixiaW5kQ2hpbGRyZW46dSxzYXZlRXh0UHJvcHM6Zn0pfWFzeW5jIGZ1bmN0aW9uIGNvbnZlcnRUb1RyZWVXayh0LHI9e30pe3JldHVybiBtbyh0LHIpfQoKbGV0IGluc3RhbmNlID0gbnVsbApmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBjb252ZXJ0VG9UcmVlV2sKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gY29udmVydFRvVHJlZVdrCiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgCiAgICAgICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdlbWl0JywKICAgICAgICAgICAgICAgIGV2TmFtZTogJ2Vycm9yJywKICAgICAgICAgICAgICAgIG1zZzogZXJyLAogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICAgICAgfQogICAgICAgICAgICAKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9mdW4KICAgICAgICAgICAgbGV0IGZ1biA9IGluc3RhbmNlW2RhdGEuZnVuXQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CgogICAgICAgICAgICAvL2V4ZWMKICAgICAgICAgICAgYXdhaXQgZnVuKC4uLmlucHV0KQogICAgICAgICAgICAgICAgLnRoZW4oKHN1YykgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdzdWNjZXNzJwogICAgICAgICAgICAgICAgICAgIG1zZz1zdWMKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdlcnJvcicKICAgICAgICAgICAgICAgICAgICBtc2c9ZXJyCiAgICAgICAgICAgICAgICB9KQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KICAgICAgICAKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBzZWxmLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIHJlY3ZNZXNzYWdlKGUuZGF0YSkKICAgICAgICB9CiAgICAgICAgCgo=",Z.Base64.decode(m));function o(){var i=d();function l(d){try{var i=new Blob([d]),l=window.URL||window.webkitURL;return new Worker(l.createObjectURL(i))}catch(d){o(d)}}var m=l(X);if(!m)return o("invalid worker"),null;function I(){m?(m.terminate(),m=void 0):o("worker has been terminated")}function b(){var d={mode:"init",type:"function",input:Array.prototype.slice.call(arguments)};m.postMessage(d)}function Z(){var d=c(),l=t(),I={mode:"call",id:l,fun:"main",input:Array.prototype.slice.call(arguments)};return m.postMessage(I),i.once(l,(function(i){"success"===i.state?d.resolve(i.msg):d.reject(i.msg)})),d}function n(d){var l=d,c=l.mode;"emit"!==c&&"return"!==c||("emit"===c&&i.emit(l.evName,l.msg),"return"===c&&i.emit(l.id,l))}function o(d){i.emit("error",d)}return m.onmessage=function(d){n(d.data)},m.onerror=o,b(Array.prototype.slice.call(arguments)),i.main=Z,i.main=Z,i.terminate=I,i}I=function(){var d,c=(d=b.mark((function d(){var l,c,t,m=arguments;return b.wrap((function(d){for(;;)switch(d.prev=d.next){case 0:return l=Array.prototype.slice.call(m),c=o(),d.next=4,c.main.apply(c,i(l)).finally((function(){c.terminate()}));case 4:return t=d.sent,d.abrupt("return",t);case 6:case"end":return d.stop()}}),d)})),function(){var i=this,c=arguments;return new Promise((function(t,m){var I=d.apply(i,c);function b(d){l(I,t,m,b,Z,"next",d)}function Z(d){l(I,t,m,b,Z,"throw",d)}b(void 0)}))});return function(){return c.apply(this,arguments)}}()}();var X=I;export default X;
1
+ const d="function"==typeof atob,m="function"==typeof Buffer,l="function"==typeof TextDecoder?new TextDecoder:void 0,Z=("function"==typeof TextEncoder&&new TextEncoder,Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=")),I=(d=>{let m={};return Z.forEach(((d,l)=>m[d]=l)),m})(),b=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,X=String.fromCharCode.bind(String),i="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):d=>new Uint8Array(Array.prototype.slice.call(d,0)),c=d=>d.replace(/[^A-Za-z0-9\+\/]/g,""),y=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,W=d=>{switch(d.length){case 4:var m=((7&d.charCodeAt(0))<<18|(63&d.charCodeAt(1))<<12|(63&d.charCodeAt(2))<<6|63&d.charCodeAt(3))-65536;return X(55296+(m>>>10))+X(56320+(1023&m));case 3:return X((15&d.charCodeAt(0))<<12|(63&d.charCodeAt(1))<<6|63&d.charCodeAt(2));default:return X((31&d.charCodeAt(0))<<6|63&d.charCodeAt(1))}},p=d=>d.replace(y,W),V=d=>{if(d=d.replace(/\s+/g,""),!b.test(d))throw new TypeError("malformed base64.");d+="==".slice(2-(3&d.length));let m,l,Z,i="";for(let b=0;b<d.length;)m=I[d.charAt(b++)]<<18|I[d.charAt(b++)]<<12|(l=I[d.charAt(b++)])<<6|(Z=I[d.charAt(b++)]),i+=64===l?X(m>>16&255):64===Z?X(m>>16&255,m>>8&255):X(m>>16&255,m>>8&255,255&m);return i},G=d?d=>atob(c(d)):m?d=>Buffer.from(d,"base64").toString("binary"):V,Y=m?d=>i(Buffer.from(d,"base64")):d=>i(G(d).split("").map((d=>d.charCodeAt(0)))),K=m?d=>Buffer.from(d,"base64").toString("utf8"):l?d=>l.decode(Y(d)):d=>p(G(d)),C=d=>c(d.replace(/[-_]/g,(d=>"-"==d?"+":"/"))),H=d=>K(C(d)),h=H;var u={};!function(d){var m=Object.prototype.hasOwnProperty,l="~";function Z(){}function I(d,m,l){this.fn=d,this.context=m,this.once=l||!1}function b(d,m,Z,b,X){if("function"!=typeof Z)throw new TypeError("The listener must be a function");var i=new I(Z,b||d,X),c=l?l+m:m;return d._events[c]?d._events[c].fn?d._events[c]=[d._events[c],i]:d._events[c].push(i):(d._events[c]=i,d._eventsCount++),d}function X(d,m){0==--d._eventsCount?d._events=new Z:delete d._events[m]}function i(){this._events=new Z,this._eventsCount=0}Object.create&&(Z.prototype=Object.create(null),(new Z).__proto__||(l=!1)),i.prototype.eventNames=function(){var d,Z,I=[];if(0===this._eventsCount)return I;for(Z in d=this._events)m.call(d,Z)&&I.push(l?Z.slice(1):Z);return Object.getOwnPropertySymbols?I.concat(Object.getOwnPropertySymbols(d)):I},i.prototype.listeners=function(d){var m=l?l+d:d,Z=this._events[m];if(!Z)return[];if(Z.fn)return[Z.fn];for(var I=0,b=Z.length,X=new Array(b);I<b;I++)X[I]=Z[I].fn;return X},i.prototype.listenerCount=function(d){var m=l?l+d:d,Z=this._events[m];return Z?Z.fn?1:Z.length:0},i.prototype.emit=function(d,m,Z,I,b,X){var i=l?l+d:d;if(!this._events[i])return!1;var c,y,W=this._events[i],p=arguments.length;if(W.fn){switch(W.once&&this.removeListener(d,W.fn,void 0,!0),p){case 1:return W.fn.call(W.context),!0;case 2:return W.fn.call(W.context,m),!0;case 3:return W.fn.call(W.context,m,Z),!0;case 4:return W.fn.call(W.context,m,Z,I),!0;case 5:return W.fn.call(W.context,m,Z,I,b),!0;case 6:return W.fn.call(W.context,m,Z,I,b,X),!0}for(y=1,c=new Array(p-1);y<p;y++)c[y-1]=arguments[y];W.fn.apply(W.context,c)}else{var V,G=W.length;for(y=0;y<G;y++)switch(W[y].once&&this.removeListener(d,W[y].fn,void 0,!0),p){case 1:W[y].fn.call(W[y].context);break;case 2:W[y].fn.call(W[y].context,m);break;case 3:W[y].fn.call(W[y].context,m,Z);break;case 4:W[y].fn.call(W[y].context,m,Z,I);break;default:if(!c)for(V=1,c=new Array(p-1);V<p;V++)c[V-1]=arguments[V];W[y].fn.apply(W[y].context,c)}}return!0},i.prototype.on=function(d,m,l){return b(this,d,m,l,!1)},i.prototype.once=function(d,m,l){return b(this,d,m,l,!0)},i.prototype.removeListener=function(d,m,Z,I){var b=l?l+d:d;if(!this._events[b])return this;if(!m)return X(this,b),this;var i=this._events[b];if(i.fn)i.fn!==m||I&&!i.once||Z&&i.context!==Z||X(this,b);else{for(var c=0,y=[],W=i.length;c<W;c++)(i[c].fn!==m||I&&!i[c].once||Z&&i[c].context!==Z)&&y.push(i[c]);y.length?this._events[b]=1===y.length?y[0]:y:X(this,b)}return this},i.prototype.removeAllListeners=function(d){var m;return d?(m=l?l+d:d,this._events[m]&&X(this,m)):(this._events=new Z,this._eventsCount=0),this},i.prototype.off=i.prototype.removeListener,i.prototype.addListener=i.prototype.on,i.prefixed=l,i.EventEmitter=i,d.exports=i}({get exports(){return u},set exports(d){u=d}});var t=u;let J;!function(){if("browser"!==("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let d=h("CgoKdmFyIHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjp7fTtmdW5jdGlvbiByKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LCJkZWZhdWx0Iik/dC5kZWZhdWx0OnR9dmFyIGU9QXJyYXkuaXNBcnJheSxuPSJvYmplY3QiPT10eXBlb2YgdCYmdCYmdC5PYmplY3Q9PT1PYmplY3QmJnQsbz1uLHU9Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixhPW98fHV8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksaT1hLlN5bWJvbCxjPWksZj1PYmplY3QucHJvdG90eXBlLGw9Zi5oYXNPd25Qcm9wZXJ0eSx2PWYudG9TdHJpbmcscz1jP2MudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBwPWZ1bmN0aW9uKHQpe3ZhciByPWwuY2FsbCh0LHMpLGU9dFtzXTt0cnl7dFtzXT12b2lkIDA7dmFyIG49ITB9Y2F0Y2godCl7fXZhciBvPXYuY2FsbCh0KTtyZXR1cm4gbiYmKHI/dFtzXT1lOmRlbGV0ZSB0W3NdKSxvfSxiPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIHk9cCxoPWZ1bmN0aW9uKHQpe3JldHVybiBiLmNhbGwodCl9LGQ9aT9pLnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgaj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD92b2lkIDA9PT10PyJbb2JqZWN0IFVuZGVmaW5lZF0iOiJbb2JqZWN0IE51bGxdIjpkJiZkIGluIE9iamVjdCh0KT95KHQpOmgodCl9O3ZhciBnPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9LF89aixPPWc7dmFyIHc9ZnVuY3Rpb24odCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxPKHQpJiYiW29iamVjdCBTeW1ib2xdIj09Xyh0KX0sbT1lLEE9dyxTPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLHg9L15cdyokLzt2YXIgUD1mdW5jdGlvbih0LHIpe2lmKG0odCkpcmV0dXJuITE7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuISgibnVtYmVyIiE9ZSYmInN5bWJvbCIhPWUmJiJib29sZWFuIiE9ZSYmbnVsbCE9dCYmIUEodCkpfHwoeC50ZXN0KHQpfHwhUy50ZXN0KHQpfHxudWxsIT1yJiZ0IGluIE9iamVjdChyKSl9O3ZhciB6PWZ1bmN0aW9uKHQpe3ZhciByPXR5cGVvZiB0O3JldHVybiBudWxsIT10JiYoIm9iamVjdCI9PXJ8fCJmdW5jdGlvbiI9PXIpfSxFPWosST16O3ZhciBOLFQ9ZnVuY3Rpb24odCl7aWYoIUkodCkpcmV0dXJuITE7dmFyIHI9RSh0KTtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT1yfHwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iPT1yfHwiW29iamVjdCBBc3luY0Z1bmN0aW9uXSI9PXJ8fCJbb2JqZWN0IFByb3h5XSI9PXJ9LE09YVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sJD0oTj0vW14uXSskLy5leGVjKE0mJk0ua2V5cyYmTS5rZXlzLklFX1BST1RPfHwiIikpPyJTeW1ib2woc3JjKV8xLiIrTjoiIjt2YXIgaz1mdW5jdGlvbih0KXtyZXR1cm4hISQmJiQgaW4gdH0sQz1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7dmFyIEY9ZnVuY3Rpb24odCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiBDLmNhbGwodCl9Y2F0Y2godCl7fXRyeXtyZXR1cm4gdCsiIn1jYXRjaCh0KXt9fXJldHVybiIifSxVPVQsRD1rLEI9eixSPUYsTD0vXlxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXF0kLyxWPUZ1bmN0aW9uLnByb3RvdHlwZSxLPU9iamVjdC5wcm90b3R5cGUsVz1WLnRvU3RyaW5nLHE9Sy5oYXNPd25Qcm9wZXJ0eSxHPVJlZ0V4cCgiXiIrVy5jYWxsKHEpLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCJcXCQmIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywiJDEuKj8iKSsiJCIpO3ZhciBIPWZ1bmN0aW9uKHQpe3JldHVybiEoIUIodCl8fEQodCkpJiYoVSh0KT9HOkwpLnRlc3QoUih0KSl9LEo9ZnVuY3Rpb24odCxyKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtyXX07dmFyIFE9ZnVuY3Rpb24odCxyKXt2YXIgZT1KKHQscik7cmV0dXJuIEgoZSk/ZTp2b2lkIDB9LFg9UShPYmplY3QsImNyZWF0ZSIpLFk9WDt2YXIgWj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189WT9ZKG51bGwpOnt9LHRoaXMuc2l6ZT0wfTt2YXIgdHQ9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5oYXModCkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW3RdO3JldHVybiB0aGlzLnNpemUtPXI/MTowLHJ9LHJ0PVgsZXQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgbnQ9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihydCl7dmFyIGU9clt0XTtyZXR1cm4iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI9PT1lP3ZvaWQgMDplfXJldHVybiBldC5jYWxsKHIsdCk/clt0XTp2b2lkIDB9LG90PVgsdXQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgYXQ9WDt2YXIgaXQ9WixjdD10dCxmdD1udCxsdD1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fO3JldHVybiBvdD92b2lkIDAhPT1yW3RdOnV0LmNhbGwocix0KX0sdnQ9ZnVuY3Rpb24odCxyKXt2YXIgZT10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKHQpPzA6MSxlW3RdPWF0JiZ2b2lkIDA9PT1yPyJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjpyLHRoaXN9O2Z1bmN0aW9uIHN0KHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytyPGU7KXt2YXIgbj10W3JdO3RoaXMuc2V0KG5bMF0sblsxXSl9fXN0LnByb3RvdHlwZS5jbGVhcj1pdCxzdC5wcm90b3R5cGUuZGVsZXRlPWN0LHN0LnByb3RvdHlwZS5nZXQ9ZnQsc3QucHJvdG90eXBlLmhhcz1sdCxzdC5wcm90b3R5cGUuc2V0PXZ0O3ZhciBwdD1zdDt2YXIgYnQ9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfTt2YXIgeXQ9ZnVuY3Rpb24odCxyKXtyZXR1cm4gdD09PXJ8fHQhPXQmJnIhPXJ9LGh0PXl0O3ZhciBkdD1mdW5jdGlvbih0LHIpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS07KWlmKGh0KHRbZV1bMF0scikpcmV0dXJuIGU7cmV0dXJuLTF9LGp0PWR0LGd0PUFycmF5LnByb3RvdHlwZS5zcGxpY2U7dmFyIF90PWR0O3ZhciBPdD1kdDt2YXIgd3Q9ZHQ7dmFyIG10PWJ0LEF0PWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX19kYXRhX18sZT1qdChyLHQpO3JldHVybiEoZTwwKSYmKGU9PXIubGVuZ3RoLTE/ci5wb3AoKTpndC5jYWxsKHIsZSwxKSwtLXRoaXMuc2l6ZSwhMCl9LFN0PWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX19kYXRhX18sZT1fdChyLHQpO3JldHVybiBlPDA/dm9pZCAwOnJbZV1bMV19LHh0PWZ1bmN0aW9uKHQpe3JldHVybiBPdCh0aGlzLl9fZGF0YV9fLHQpPi0xfSxQdD1mdW5jdGlvbih0LHIpe3ZhciBlPXRoaXMuX19kYXRhX18sbj13dChlLHQpO3JldHVybiBuPDA/KCsrdGhpcy5zaXplLGUucHVzaChbdCxyXSkpOmVbbl1bMV09cix0aGlzfTtmdW5jdGlvbiB6dCh0KXt2YXIgcj0tMSxlPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrcjxlOyl7dmFyIG49dFtyXTt0aGlzLnNldChuWzBdLG5bMV0pfX16dC5wcm90b3R5cGUuY2xlYXI9bXQsenQucHJvdG90eXBlLmRlbGV0ZT1BdCx6dC5wcm90b3R5cGUuZ2V0PVN0LHp0LnByb3RvdHlwZS5oYXM9eHQsenQucHJvdG90eXBlLnNldD1QdDt2YXIgRXQ9enQsSXQ9UShhLCJNYXAiKSxOdD1wdCxUdD1FdCxNdD1JdDt2YXIgJHQ9ZnVuY3Rpb24odCl7dmFyIHI9dHlwZW9mIHQ7cmV0dXJuInN0cmluZyI9PXJ8fCJudW1iZXIiPT1yfHwic3ltYm9sIj09cnx8ImJvb2xlYW4iPT1yPyJfX3Byb3RvX18iIT09dDpudWxsPT09dH07dmFyIGt0PWZ1bmN0aW9uKHQscil7dmFyIGU9dC5fX2RhdGFfXztyZXR1cm4gJHQocik/ZVsic3RyaW5nIj09dHlwZW9mIHI/InN0cmluZyI6Imhhc2giXTplLm1hcH0sQ3Q9a3Q7dmFyIEZ0PWt0O3ZhciBVdD1rdDt2YXIgRHQ9a3Q7dmFyIEJ0PWZ1bmN0aW9uKHQscil7dmFyIGU9RHQodGhpcyx0KSxuPWUuc2l6ZTtyZXR1cm4gZS5zZXQodCxyKSx0aGlzLnNpemUrPWUuc2l6ZT09bj8wOjEsdGhpc30sUnQ9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBOdCxtYXA6bmV3KE10fHxUdCksc3RyaW5nOm5ldyBOdH19LEx0PWZ1bmN0aW9uKHQpe3ZhciByPUN0KHRoaXMsdCkuZGVsZXRlKHQpO3JldHVybiB0aGlzLnNpemUtPXI/MTowLHJ9LFZ0PWZ1bmN0aW9uKHQpe3JldHVybiBGdCh0aGlzLHQpLmdldCh0KX0sS3Q9ZnVuY3Rpb24odCl7cmV0dXJuIFV0KHRoaXMsdCkuaGFzKHQpfSxXdD1CdDtmdW5jdGlvbiBxdCh0KXt2YXIgcj0tMSxlPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrcjxlOyl7dmFyIG49dFtyXTt0aGlzLnNldChuWzBdLG5bMV0pfX1xdC5wcm90b3R5cGUuY2xlYXI9UnQscXQucHJvdG90eXBlLmRlbGV0ZT1MdCxxdC5wcm90b3R5cGUuZ2V0PVZ0LHF0LnByb3RvdHlwZS5oYXM9S3QscXQucHJvdG90eXBlLnNldD1XdDt2YXIgR3Q9cXQsSHQ9R3Q7ZnVuY3Rpb24gSnQodCxyKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ciYmImZ1bmN0aW9uIiE9dHlwZW9mIHIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgYSBmdW5jdGlvbiIpO3ZhciBlPWZ1bmN0aW9uKCl7dmFyIG49YXJndW1lbnRzLG89cj9yLmFwcGx5KHRoaXMsbik6blswXSx1PWUuY2FjaGU7aWYodS5oYXMobykpcmV0dXJuIHUuZ2V0KG8pO3ZhciBhPXQuYXBwbHkodGhpcyxuKTtyZXR1cm4gZS5jYWNoZT11LnNldChvLGEpfHx1LGF9O3JldHVybiBlLmNhY2hlPW5ldyhKdC5DYWNoZXx8SHQpLGV9SnQuQ2FjaGU9SHQ7dmFyIFF0PUp0O3ZhciBYdD0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxZdD0vXFwoXFwpPy9nLFp0PWZ1bmN0aW9uKHQpe3ZhciByPVF0KHQsKGZ1bmN0aW9uKHQpe3JldHVybiA1MDA9PT1lLnNpemUmJmUuY2xlYXIoKSx0fSkpLGU9ci5jYWNoZTtyZXR1cm4gcn0oKGZ1bmN0aW9uKHQpe3ZhciByPVtdO3JldHVybiA0Nj09PXQuY2hhckNvZGVBdCgwKSYmci5wdXNoKCIiKSx0LnJlcGxhY2UoWHQsKGZ1bmN0aW9uKHQsZSxuLG8pe3IucHVzaChuP28ucmVwbGFjZShZdCwiJDEiKTplfHx0KX0pKSxyfSkpO3ZhciB0cj1mdW5jdGlvbih0LHIpe2Zvcih2YXIgZT0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPUFycmF5KG4pOysrZTxuOylvW2VdPXIodFtlXSxlLHQpO3JldHVybiBvfSxycj10cixlcj1lLG5yPXcsb3I9aT9pLnByb3RvdHlwZTp2b2lkIDAsdXI9b3I/b3IudG9TdHJpbmc6dm9pZCAwO3ZhciBhcj1mdW5jdGlvbiB0KHIpe2lmKCJzdHJpbmciPT10eXBlb2YgcilyZXR1cm4gcjtpZihlcihyKSlyZXR1cm4gcnIocix0KSsiIjtpZihucihyKSlyZXR1cm4gdXI/dXIuY2FsbChyKToiIjt2YXIgZT1yKyIiO3JldHVybiIwIj09ZSYmMS9yPT0tSW5maW5pdHk/Ii0wIjplfSxpcj1hcjt2YXIgY3I9ZSxmcj1QLGxyPVp0LHZyPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10PyIiOmlyKHQpfTt2YXIgc3I9ZnVuY3Rpb24odCxyKXtyZXR1cm4gY3IodCk/dDpmcih0LHIpP1t0XTpscih2cih0KSl9LHByPXc7dmFyIGJyPWZ1bmN0aW9uKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdHx8cHIodCkpcmV0dXJuIHQ7dmFyIHI9dCsiIjtyZXR1cm4iMCI9PXImJjEvdD09LUluZmluaXR5PyItMCI6cn0seXI9c3IsaHI9YnI7dmFyIGRyPWZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPTAsbj0ocj15cihyLHQpKS5sZW5ndGg7bnVsbCE9dCYmZTxuOyl0PXRbaHIocltlKytdKV07cmV0dXJuIGUmJmU9PW4/dDp2b2lkIDB9LGpyPWRyO3ZhciBncj1mdW5jdGlvbih0LHIsZSl7dmFyIG49bnVsbD09dD92b2lkIDA6anIodCxyKTtyZXR1cm4gdm9pZCAwPT09bj9lOm59O2Z1bmN0aW9uIF9yKHQpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIE9yKHQpe3JldHVybiEoIV9yKHQpfHwiIj09PXQpfWZ1bmN0aW9uIHdyKHQpe3JldHVybiJbb2JqZWN0IE9iamVjdF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIG1yKHQpe2lmKHdyKHQpKXtmb3IobGV0IHIgaW4gdClyZXR1cm4hMDtyZXR1cm4hMX1yZXR1cm4hMX1mdW5jdGlvbiBBcih0KXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIFNyKHQpe3JldHVybiEhZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgVW5kZWZpbmVkXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdWxsXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFmdW5jdGlvbih0KXtpZih3cih0KSl7Zm9yKGxldCByIGluIHQpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuITF9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4hKCFfcih0KXx8IiIhPT10KX0odCl8fCEhZnVuY3Rpb24odCl7cmV0dXJuISFBcih0KSYmMD09PXQubGVuZ3RofSh0KSkpKX1mdW5jdGlvbiB4cih0KXtyZXR1cm4hIUFyKHQpJiYoMCE9PXQubGVuZ3RoJiYoMSE9PXQubGVuZ3RofHwhU3IodFswXSkpKX12YXIgUHI9aix6cj1nO3ZhciBFcj1mdW5jdGlvbih0KXtyZXR1cm4hMD09PXR8fCExPT09dHx8enIodCkmJiJbb2JqZWN0IEJvb2xlYW5dIj09UHIodCl9O2Z1bmN0aW9uIElyKHQpe3JldHVybiBFcih0KX12YXIgTnI9RXQ7dmFyIFRyPUV0LE1yPUl0LCRyPUd0O3ZhciBrcj1FdCxDcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189bmV3IE5yLHRoaXMuc2l6ZT0wfSxGcj1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fLGU9ci5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1yLnNpemUsZX0sVXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KHQpfSxEcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModCl9LEJyPWZ1bmN0aW9uKHQscil7dmFyIGU9dGhpcy5fX2RhdGFfXztpZihlIGluc3RhbmNlb2YgVHIpe3ZhciBuPWUuX19kYXRhX187aWYoIU1yfHxuLmxlbmd0aDwxOTkpcmV0dXJuIG4ucHVzaChbdCxyXSksdGhpcy5zaXplPSsrZS5zaXplLHRoaXM7ZT10aGlzLl9fZGF0YV9fPW5ldyAkcihuKX1yZXR1cm4gZS5zZXQodCxyKSx0aGlzLnNpemU9ZS5zaXplLHRoaXN9O2Z1bmN0aW9uIFJyKHQpe3ZhciByPXRoaXMuX19kYXRhX189bmV3IGtyKHQpO3RoaXMuc2l6ZT1yLnNpemV9UnIucHJvdG90eXBlLmNsZWFyPUNyLFJyLnByb3RvdHlwZS5kZWxldGU9RnIsUnIucHJvdG90eXBlLmdldD1VcixSci5wcm90b3R5cGUuaGFzPURyLFJyLnByb3RvdHlwZS5zZXQ9QnI7dmFyIExyPVJyO3ZhciBWcj1HdCxLcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5zZXQodCwiX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIpLHRoaXN9LFdyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX07ZnVuY3Rpb24gcXIodCl7dmFyIHI9LTEsZT1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuX19kYXRhX189bmV3IFZyOysrcjxlOyl0aGlzLmFkZCh0W3JdKX1xci5wcm90b3R5cGUuYWRkPXFyLnByb3RvdHlwZS5wdXNoPUtyLHFyLnByb3RvdHlwZS5oYXM9V3I7dmFyIEdyPXFyLEhyPWZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoOysrZTxuOylpZihyKHRbZV0sZSx0KSlyZXR1cm4hMDtyZXR1cm4hMX0sSnI9ZnVuY3Rpb24odCxyKXtyZXR1cm4gdC5oYXMocil9O3ZhciBRcj1mdW5jdGlvbih0LHIsZSxuLG8sdSl7dmFyIGE9MSZlLGk9dC5sZW5ndGgsYz1yLmxlbmd0aDtpZihpIT1jJiYhKGEmJmM+aSkpcmV0dXJuITE7dmFyIGY9dS5nZXQodCksbD11LmdldChyKTtpZihmJiZsKXJldHVybiBmPT1yJiZsPT10O3ZhciB2PS0xLHM9ITAscD0yJmU/bmV3IEdyOnZvaWQgMDtmb3IodS5zZXQodCxyKSx1LnNldChyLHQpOysrdjxpOyl7dmFyIGI9dFt2XSx5PXJbdl07aWYobil2YXIgaD1hP24oeSxiLHYscix0LHUpOm4oYix5LHYsdCxyLHUpO2lmKHZvaWQgMCE9PWgpe2lmKGgpY29udGludWU7cz0hMTticmVha31pZihwKXtpZighSHIociwoZnVuY3Rpb24odCxyKXtpZighSnIocCxyKSYmKGI9PT10fHxvKGIsdCxlLG4sdSkpKXJldHVybiBwLnB1c2gocil9KSkpe3M9ITE7YnJlYWt9fWVsc2UgaWYoYiE9PXkmJiFvKGIseSxlLG4sdSkpe3M9ITE7YnJlYWt9fXJldHVybiB1LmRlbGV0ZSh0KSx1LmRlbGV0ZShyKSxzfSxYcj1hLlVpbnQ4QXJyYXk7dmFyIFlyPWZ1bmN0aW9uKHQpe3ZhciByPS0xLGU9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LG4pe2VbKytyXT1bbix0XX0pKSxlfTt2YXIgWnI9ZnVuY3Rpb24odCl7dmFyIHI9LTEsZT1BcnJheSh0LnNpemUpO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2VbKytyXT10fSkpLGV9LHRlPVhyLHJlPXl0LGVlPVFyLG5lPVlyLG9lPVpyLHVlPWk/aS5wcm90b3R5cGU6dm9pZCAwLGFlPXVlP3VlLnZhbHVlT2Y6dm9pZCAwO3ZhciBpZT1mdW5jdGlvbih0LHIsZSxuLG8sdSxhKXtzd2l0Y2goZSl7Y2FzZSJbb2JqZWN0IERhdGFWaWV3XSI6aWYodC5ieXRlTGVuZ3RoIT1yLmJ5dGVMZW5ndGh8fHQuYnl0ZU9mZnNldCE9ci5ieXRlT2Zmc2V0KXJldHVybiExO3Q9dC5idWZmZXIscj1yLmJ1ZmZlcjtjYXNlIltvYmplY3QgQXJyYXlCdWZmZXJdIjpyZXR1cm4hKHQuYnl0ZUxlbmd0aCE9ci5ieXRlTGVuZ3RofHwhdShuZXcgdGUodCksbmV3IHRlKHIpKSk7Y2FzZSJbb2JqZWN0IEJvb2xlYW5dIjpjYXNlIltvYmplY3QgRGF0ZV0iOmNhc2UiW29iamVjdCBOdW1iZXJdIjpyZXR1cm4gcmUoK3QsK3IpO2Nhc2UiW29iamVjdCBFcnJvcl0iOnJldHVybiB0Lm5hbWU9PXIubmFtZSYmdC5tZXNzYWdlPT1yLm1lc3NhZ2U7Y2FzZSJbb2JqZWN0IFJlZ0V4cF0iOmNhc2UiW29iamVjdCBTdHJpbmddIjpyZXR1cm4gdD09cisiIjtjYXNlIltvYmplY3QgTWFwXSI6dmFyIGk9bmU7Y2FzZSJbb2JqZWN0IFNldF0iOnZhciBjPTEmbjtpZihpfHwoaT1vZSksdC5zaXplIT1yLnNpemUmJiFjKXJldHVybiExO3ZhciBmPWEuZ2V0KHQpO2lmKGYpcmV0dXJuIGY9PXI7bnw9MixhLnNldCh0LHIpO3ZhciBsPWVlKGkodCksaShyKSxuLG8sdSxhKTtyZXR1cm4gYS5kZWxldGUodCksbDtjYXNlIltvYmplY3QgU3ltYm9sXSI6aWYoYWUpcmV0dXJuIGFlLmNhbGwodCk9PWFlLmNhbGwocil9cmV0dXJuITF9O3ZhciBjZT1mdW5jdGlvbih0LHIpe2Zvcih2YXIgZT0tMSxuPXIubGVuZ3RoLG89dC5sZW5ndGg7KytlPG47KXRbbytlXT1yW2VdO3JldHVybiB0fSxmZT1jZSxsZT1lO3ZhciB2ZT1mdW5jdGlvbih0LHIsZSl7dmFyIG49cih0KTtyZXR1cm4gbGUodCk/bjpmZShuLGUodCkpfTt2YXIgc2U9ZnVuY3Rpb24oKXtyZXR1cm5bXX0scGU9ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGgsbz0wLHU9W107KytlPG47KXt2YXIgYT10W2VdO3IoYSxlLHQpJiYodVtvKytdPWEpfXJldHVybiB1fSxiZT1zZSx5ZT1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLGhlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsZGU9aGU/ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/W106KHQ9T2JqZWN0KHQpLHBlKGhlKHQpLChmdW5jdGlvbihyKXtyZXR1cm4geWUuY2FsbCh0LHIpfSkpKX06YmU7dmFyIGplPWZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPS0xLG49QXJyYXkodCk7KytlPHQ7KW5bZV09cihlKTtyZXR1cm4gbn0sZ2U9aixfZT1nO3ZhciBPZT1mdW5jdGlvbih0KXtyZXR1cm4gX2UodCkmJiJbb2JqZWN0IEFyZ3VtZW50c10iPT1nZSh0KX0sd2U9ZyxtZT1PYmplY3QucHJvdG90eXBlLEFlPW1lLmhhc093blByb3BlcnR5LFNlPW1lLnByb3BlcnR5SXNFbnVtZXJhYmxlLHhlPU9lKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSk/T2U6ZnVuY3Rpb24odCl7cmV0dXJuIHdlKHQpJiZBZS5jYWxsKHQsImNhbGxlZSIpJiYhU2UuY2FsbCh0LCJjYWxsZWUiKX0sUGU9e307dmFyIHplPWZ1bmN0aW9uKCl7cmV0dXJuITF9OyFmdW5jdGlvbih0LHIpe3ZhciBlPWEsbj16ZSxvPXImJiFyLm5vZGVUeXBlJiZyLHU9byYmdCYmIXQubm9kZVR5cGUmJnQsaT11JiZ1LmV4cG9ydHM9PT1vP2UuQnVmZmVyOnZvaWQgMCxjPShpP2kuaXNCdWZmZXI6dm9pZCAwKXx8bjt0LmV4cG9ydHM9Y30oe2dldCBleHBvcnRzKCl7cmV0dXJuIFBlfSxzZXQgZXhwb3J0cyh0KXtQZT10fX0sUGUpO3ZhciBFZT0vXig/OjB8WzEtOV1cZCopJC87dmFyIEllPWZ1bmN0aW9uKHQscil7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuISEocj1udWxsPT1yPzkwMDcxOTkyNTQ3NDA5OTE6cikmJigibnVtYmVyIj09ZXx8InN5bWJvbCIhPWUmJkVlLnRlc3QodCkpJiZ0Pi0xJiZ0JTE9PTAmJnQ8cn07dmFyIE5lPWZ1bmN0aW9uKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD4tMSYmdCUxPT0wJiZ0PD05MDA3MTk5MjU0NzQwOTkxfSxUZT1qLE1lPU5lLCRlPWcsa2U9e307a2VbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPWtlWyJbb2JqZWN0IEZsb2F0NjRBcnJheV0iXT1rZVsiW29iamVjdCBJbnQ4QXJyYXldIl09a2VbIltvYmplY3QgSW50MTZBcnJheV0iXT1rZVsiW29iamVjdCBJbnQzMkFycmF5XSJdPWtlWyJbb2JqZWN0IFVpbnQ4QXJyYXldIl09a2VbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09a2VbIltvYmplY3QgVWludDE2QXJyYXldIl09a2VbIltvYmplY3QgVWludDMyQXJyYXldIl09ITAsa2VbIltvYmplY3QgQXJndW1lbnRzXSJdPWtlWyJbb2JqZWN0IEFycmF5XSJdPWtlWyJbb2JqZWN0IEFycmF5QnVmZmVyXSJdPWtlWyJbb2JqZWN0IEJvb2xlYW5dIl09a2VbIltvYmplY3QgRGF0YVZpZXddIl09a2VbIltvYmplY3QgRGF0ZV0iXT1rZVsiW29iamVjdCBFcnJvcl0iXT1rZVsiW29iamVjdCBGdW5jdGlvbl0iXT1rZVsiW29iamVjdCBNYXBdIl09a2VbIltvYmplY3QgTnVtYmVyXSJdPWtlWyJbb2JqZWN0IE9iamVjdF0iXT1rZVsiW29iamVjdCBSZWdFeHBdIl09a2VbIltvYmplY3QgU2V0XSJdPWtlWyJbb2JqZWN0IFN0cmluZ10iXT1rZVsiW29iamVjdCBXZWFrTWFwXSJdPSExO3ZhciBDZT1mdW5jdGlvbih0KXtyZXR1cm4gJGUodCkmJk1lKHQubGVuZ3RoKSYmISFrZVtUZSh0KV19O3ZhciBGZT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQocil9fSxVZT17fTshZnVuY3Rpb24odCxyKXt2YXIgZT1uLG89ciYmIXIubm9kZVR5cGUmJnIsdT1vJiZ0JiYhdC5ub2RlVHlwZSYmdCxhPXUmJnUuZXhwb3J0cz09PW8mJmUucHJvY2VzcyxpPWZ1bmN0aW9uKCl7dHJ5e3ZhciB0PXUmJnUucmVxdWlyZSYmdS5yZXF1aXJlKCJ1dGlsIikudHlwZXM7cmV0dXJuIHR8fGEmJmEuYmluZGluZyYmYS5iaW5kaW5nKCJ1dGlsIil9Y2F0Y2godCl7fX0oKTt0LmV4cG9ydHM9aX0oe2dldCBleHBvcnRzKCl7cmV0dXJuIFVlfSxzZXQgZXhwb3J0cyh0KXtVZT10fX0sVWUpO3ZhciBEZT1DZSxCZT1GZSxSZT1VZSYmVWUuaXNUeXBlZEFycmF5LExlPVJlP0JlKFJlKTpEZSxWZT1qZSxLZT14ZSxXZT1lLHFlPVBlLEdlPUllLEhlPUxlLEplPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIFFlPWZ1bmN0aW9uKHQscil7dmFyIGU9V2UodCksbj0hZSYmS2UodCksbz0hZSYmIW4mJnFlKHQpLHU9IWUmJiFuJiYhbyYmSGUodCksYT1lfHxufHxvfHx1LGk9YT9WZSh0Lmxlbmd0aCxTdHJpbmcpOltdLGM9aS5sZW5ndGg7Zm9yKHZhciBmIGluIHQpIXImJiFKZS5jYWxsKHQsZil8fGEmJigibGVuZ3RoIj09Znx8byYmKCJvZmZzZXQiPT1mfHwicGFyZW50Ij09Zil8fHUmJigiYnVmZmVyIj09Znx8ImJ5dGVMZW5ndGgiPT1mfHwiYnl0ZU9mZnNldCI9PWYpfHxHZShmLGMpKXx8aS5wdXNoKGYpO3JldHVybiBpfSxYZT1PYmplY3QucHJvdG90eXBlO3ZhciBZZT1mdW5jdGlvbih0KXt2YXIgcj10JiZ0LmNvbnN0cnVjdG9yO3JldHVybiB0PT09KCJmdW5jdGlvbiI9PXR5cGVvZiByJiZyLnByb3RvdHlwZXx8WGUpfTt2YXIgWmU9ZnVuY3Rpb24odCxyKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQocihlKSl9fSx0bj1aZShPYmplY3Qua2V5cyxPYmplY3QpLHJuPVllLGVuPXRuLG5uPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIG9uPWZ1bmN0aW9uKHQpe2lmKCFybih0KSlyZXR1cm4gZW4odCk7dmFyIHI9W107Zm9yKHZhciBlIGluIE9iamVjdCh0KSlubi5jYWxsKHQsZSkmJiJjb25zdHJ1Y3RvciIhPWUmJnIucHVzaChlKTtyZXR1cm4gcn0sdW49VCxhbj1OZTt2YXIgY249ZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPXQmJmFuKHQubGVuZ3RoKSYmIXVuKHQpfSxmbj1RZSxsbj1vbix2bj1jbjt2YXIgc249ZnVuY3Rpb24odCl7cmV0dXJuIHZuKHQpP2ZuKHQpOmxuKHQpfSxwbj12ZSxibj1kZSx5bj1zbjt2YXIgaG49ZnVuY3Rpb24odCl7cmV0dXJuIHBuKHQseW4sYm4pfSxkbj1obixqbj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBnbj1mdW5jdGlvbih0LHIsZSxuLG8sdSl7dmFyIGE9MSZlLGk9ZG4odCksYz1pLmxlbmd0aDtpZihjIT1kbihyKS5sZW5ndGgmJiFhKXJldHVybiExO2Zvcih2YXIgZj1jO2YtLTspe3ZhciBsPWlbZl07aWYoIShhP2wgaW4gcjpqbi5jYWxsKHIsbCkpKXJldHVybiExfXZhciB2PXUuZ2V0KHQpLHM9dS5nZXQocik7aWYodiYmcylyZXR1cm4gdj09ciYmcz09dDt2YXIgcD0hMDt1LnNldCh0LHIpLHUuc2V0KHIsdCk7Zm9yKHZhciBiPWE7KytmPGM7KXt2YXIgeT10W2w9aVtmXV0saD1yW2xdO2lmKG4pdmFyIGQ9YT9uKGgseSxsLHIsdCx1KTpuKHksaCxsLHQscix1KTtpZighKHZvaWQgMD09PWQ/eT09PWh8fG8oeSxoLGUsbix1KTpkKSl7cD0hMTticmVha31ifHwoYj0iY29uc3RydWN0b3IiPT1sKX1pZihwJiYhYil7dmFyIGo9dC5jb25zdHJ1Y3RvcixnPXIuY29uc3RydWN0b3I7aj09Z3x8ISgiY29uc3RydWN0b3IiaW4gdCl8fCEoImNvbnN0cnVjdG9yImluIHIpfHwiZnVuY3Rpb24iPT10eXBlb2YgaiYmaiBpbnN0YW5jZW9mIGomJiJmdW5jdGlvbiI9PXR5cGVvZiBnJiZnIGluc3RhbmNlb2YgZ3x8KHA9ITEpfXJldHVybiB1LmRlbGV0ZSh0KSx1LmRlbGV0ZShyKSxwfSxfbj1RKGEsIkRhdGFWaWV3IiksT249SXQsd249UShhLCJQcm9taXNlIiksbW49UShhLCJTZXQiKSxBbj1RKGEsIldlYWtNYXAiKSxTbj1qLHhuPUYsUG49IltvYmplY3QgTWFwXSIsem49IltvYmplY3QgUHJvbWlzZV0iLEVuPSJbb2JqZWN0IFNldF0iLEluPSJbb2JqZWN0IFdlYWtNYXBdIixObj0iW29iamVjdCBEYXRhVmlld10iLFRuPXhuKF9uKSxNbj14bihPbiksJG49eG4od24pLGtuPXhuKG1uKSxDbj14bihBbiksRm49U247KF9uJiZGbihuZXcgX24obmV3IEFycmF5QnVmZmVyKDEpKSkhPU5ufHxPbiYmRm4obmV3IE9uKSE9UG58fHduJiZGbih3bi5yZXNvbHZlKCkpIT16bnx8bW4mJkZuKG5ldyBtbikhPUVufHxBbiYmRm4obmV3IEFuKSE9SW4pJiYoRm49ZnVuY3Rpb24odCl7dmFyIHI9U24odCksZT0iW29iamVjdCBPYmplY3RdIj09cj90LmNvbnN0cnVjdG9yOnZvaWQgMCxuPWU/eG4oZSk6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBUbjpyZXR1cm4gTm47Y2FzZSBNbjpyZXR1cm4gUG47Y2FzZSAkbjpyZXR1cm4gem47Y2FzZSBrbjpyZXR1cm4gRW47Y2FzZSBDbjpyZXR1cm4gSW59cmV0dXJuIHJ9KTt2YXIgVW49Rm4sRG49THIsQm49UXIsUm49aWUsTG49Z24sVm49VW4sS249ZSxXbj1QZSxxbj1MZSxHbj0iW29iamVjdCBBcmd1bWVudHNdIixIbj0iW29iamVjdCBBcnJheV0iLEpuPSJbb2JqZWN0IE9iamVjdF0iLFFuPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIFhuPWZ1bmN0aW9uKHQscixlLG4sbyx1KXt2YXIgYT1Lbih0KSxpPUtuKHIpLGM9YT9IbjpWbih0KSxmPWk/SG46Vm4ociksbD0oYz1jPT1Hbj9KbjpjKT09Sm4sdj0oZj1mPT1Hbj9KbjpmKT09Sm4scz1jPT1mO2lmKHMmJlduKHQpKXtpZighV24ocikpcmV0dXJuITE7YT0hMCxsPSExfWlmKHMmJiFsKXJldHVybiB1fHwodT1uZXcgRG4pLGF8fHFuKHQpP0JuKHQscixlLG4sbyx1KTpSbih0LHIsYyxlLG4sbyx1KTtpZighKDEmZSkpe3ZhciBwPWwmJlFuLmNhbGwodCwiX193cmFwcGVkX18iKSxiPXYmJlFuLmNhbGwociwiX193cmFwcGVkX18iKTtpZihwfHxiKXt2YXIgeT1wP3QudmFsdWUoKTp0LGg9Yj9yLnZhbHVlKCk6cjtyZXR1cm4gdXx8KHU9bmV3IERuKSxvKHksaCxlLG4sdSl9fXJldHVybiEhcyYmKHV8fCh1PW5ldyBEbiksTG4odCxyLGUsbixvLHUpKX0sWW49Zzt2YXIgWm49ZnVuY3Rpb24gdChyLGUsbixvLHUpe3JldHVybiByPT09ZXx8KG51bGw9PXJ8fG51bGw9PWV8fCFZbihyKSYmIVluKGUpP3IhPXImJmUhPWU6WG4ocixlLG4sbyx0LHUpKX0sdG89THIscm89Wm47dmFyIGVvPXo7dmFyIG5vPWZ1bmN0aW9uKHQpe3JldHVybiB0PT10JiYhZW8odCl9LG9vPW5vLHVvPXNuO3ZhciBhbz1mdW5jdGlvbih0LHIpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmKGVbdF09PT1yJiYodm9pZCAwIT09cnx8dCBpbiBPYmplY3QoZSkpKX19LGlvPWZ1bmN0aW9uKHQscixlLG4pe3ZhciBvPWUubGVuZ3RoLHU9byxhPSFuO2lmKG51bGw9PXQpcmV0dXJuIXU7Zm9yKHQ9T2JqZWN0KHQpO28tLTspe3ZhciBpPWVbb107aWYoYSYmaVsyXT9pWzFdIT09dFtpWzBdXTohKGlbMF1pbiB0KSlyZXR1cm4hMX1mb3IoOysrbzx1Oyl7dmFyIGM9KGk9ZVtvXSlbMF0sZj10W2NdLGw9aVsxXTtpZihhJiZpWzJdKXtpZih2b2lkIDA9PT1mJiYhKGMgaW4gdCkpcmV0dXJuITF9ZWxzZXt2YXIgdj1uZXcgdG87aWYobil2YXIgcz1uKGYsbCxjLHQscix2KTtpZighKHZvaWQgMD09PXM/cm8obCxmLDMsbix2KTpzKSlyZXR1cm4hMX19cmV0dXJuITB9LGNvPWZ1bmN0aW9uKHQpe2Zvcih2YXIgcj11byh0KSxlPXIubGVuZ3RoO2UtLTspe3ZhciBuPXJbZV0sbz10W25dO3JbZV09W24sbyxvbyhvKV19cmV0dXJuIHJ9LGZvPWFvO3ZhciBsbz1zcix2bz14ZSxzbz1lLHBvPUllLGJvPU5lLHlvPWJyO3ZhciBobz1mdW5jdGlvbih0LHIpe3JldHVybiBudWxsIT10JiZyIGluIE9iamVjdCh0KX0sam89ZnVuY3Rpb24odCxyLGUpe2Zvcih2YXIgbj0tMSxvPShyPWxvKHIsdCkpLmxlbmd0aCx1PSExOysrbjxvOyl7dmFyIGE9eW8ocltuXSk7aWYoISh1PW51bGwhPXQmJmUodCxhKSkpYnJlYWs7dD10W2FdfXJldHVybiB1fHwrK24hPW8/dTohIShvPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJmJvKG8pJiZwbyhhLG8pJiYoc28odCl8fHZvKHQpKX07dmFyIGdvPVpuLF9vPWdyLE9vPWZ1bmN0aW9uKHQscil7cmV0dXJuIG51bGwhPXQmJmpvKHQscixobyl9LHdvPVAsbW89bm8sQW89YW8sU289YnI7dmFyIHhvPWZ1bmN0aW9uKHQpe3JldHVybiB0fTt2YXIgUG89ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBudWxsPT1yP3ZvaWQgMDpyW3RdfX0sem89ZHI7dmFyIEVvPVBvLElvPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gem8ocix0KX19LE5vPVAsVG89YnI7dmFyIE1vPWZ1bmN0aW9uKHQpe3ZhciByPWNvKHQpO3JldHVybiAxPT1yLmxlbmd0aCYmclswXVsyXT9mbyhyWzBdWzBdLHJbMF1bMV0pOmZ1bmN0aW9uKGUpe3JldHVybiBlPT09dHx8aW8oZSx0LHIpfX0sJG89ZnVuY3Rpb24odCxyKXtyZXR1cm4gd28odCkmJm1vKHIpP0FvKFNvKHQpLHIpOmZ1bmN0aW9uKGUpe3ZhciBuPV9vKGUsdCk7cmV0dXJuIHZvaWQgMD09PW4mJm49PT1yP09vKGUsdCk6Z28ocixuLDMpfX0sa289eG8sQ289ZSxGbz1mdW5jdGlvbih0KXtyZXR1cm4gTm8odCk/RW8oVG8odCkpOklvKHQpfTt2YXIgVW89ZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpudWxsPT10P2tvOiJvYmplY3QiPT10eXBlb2YgdD9Dbyh0KT8kbyh0WzBdLHRbMV0pOk1vKHQpOkZvKHQpfTt2YXIgRG89ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHIsZSxuKXtmb3IodmFyIG89LTEsdT1PYmplY3QociksYT1uKHIpLGk9YS5sZW5ndGg7aS0tOyl7dmFyIGM9YVt0P2k6KytvXTtpZighMT09PWUodVtjXSxjLHUpKWJyZWFrfXJldHVybiByfX0oKSxCbz1zbjt2YXIgUm89Y247dmFyIExvPWZ1bmN0aW9uKHQscil7cmV0dXJuIGZ1bmN0aW9uKGUsbil7aWYobnVsbD09ZSlyZXR1cm4gZTtpZighUm8oZSkpcmV0dXJuIHQoZSxuKTtmb3IodmFyIG89ZS5sZW5ndGgsdT1yP286LTEsYT1PYmplY3QoZSk7KHI/dS0tOisrdTxvKSYmITEhPT1uKGFbdV0sdSxhKTspO3JldHVybiBlfX0oKGZ1bmN0aW9uKHQscil7cmV0dXJuIHQmJkRvKHQscixCbyl9KSksVm89TG8sS289Y247dmFyIFdvPXRyLHFvPVVvLEdvPWZ1bmN0aW9uKHQscil7dmFyIGU9LTEsbj1Lbyh0KT9BcnJheSh0Lmxlbmd0aCk6W107cmV0dXJuIFZvKHQsKGZ1bmN0aW9uKHQsbyx1KXtuWysrZV09cih0LG8sdSl9KSksbn0sSG89ZTt2YXIgSm89ZnVuY3Rpb24odCxyKXtyZXR1cm4oSG8odCk/V286R28pKHQscW8ocikpfSxRbz1BcnJheS5wcm90b3R5cGUuam9pbjt2YXIgWG89ZnVuY3Rpb24odCxyKXtyZXR1cm4gbnVsbD09dD8iIjpRby5jYWxsKHQscil9LFlvPWosWm89ZSx0dT1nO3ZhciBydT1mdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHR8fCFabyh0KSYmdHUodCkmJiJbb2JqZWN0IFN0cmluZ10iPT1Zbyh0KX0sZXU9UG8oImxlbmd0aCIpLG51PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTt2YXIgb3U9ZnVuY3Rpb24odCl7cmV0dXJuIG51LnRlc3QodCl9LHV1PSJcXHVkODAwLVxcdWRmZmYiLGF1PSJbIit1dSsiXSIsaXU9IltcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZdIixjdT0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixmdT0iW14iK3V1KyJdIixsdT0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIsdnU9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLHN1PSIoPzoiK2l1KyJ8IitjdSsiKSIrIj8iLHB1PSJbXFx1ZmUwZVxcdWZlMGZdPyIsYnU9cHUrc3UrKCIoPzpcXHUyMDBkKD86IitbZnUsbHUsdnVdLmpvaW4oInwiKSsiKSIrcHUrc3UrIikqIikseXU9Iig/OiIrW2Z1K2l1KyI/IixpdSxsdSx2dSxhdV0uam9pbigifCIpKyIpIixodT1SZWdFeHAoY3UrIig/PSIrY3UrIil8Iit5dStidSwiZyIpO3ZhciBkdT1ldSxqdT1vdSxndT1mdW5jdGlvbih0KXtmb3IodmFyIHI9aHUubGFzdEluZGV4PTA7aHUudGVzdCh0KTspKytyO3JldHVybiByfTt2YXIgX3U9b24sT3U9VW4sd3U9Y24sbXU9cnUsQXU9ZnVuY3Rpb24odCl7cmV0dXJuIGp1KHQpP2d1KHQpOmR1KHQpfTt2YXIgU3U9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gMDtpZih3dSh0KSlyZXR1cm4gbXUodCk/QXUodCk6dC5sZW5ndGg7dmFyIHI9T3UodCk7cmV0dXJuIltvYmplY3QgTWFwXSI9PXJ8fCJbb2JqZWN0IFNldF0iPT1yP3Quc2l6ZTpfdSh0KS5sZW5ndGh9LHh1PWosUHU9Zzt2YXIgenU9ZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0fHxQdSh0KSYmIltvYmplY3QgTnVtYmVyXSI9PXh1KHQpfTt2YXIgRXU9ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytlPG4mJiExIT09cih0W2VdLGUsdCk7KTtyZXR1cm4gdH0sSXU9USxOdT1mdW5jdGlvbigpe3RyeXt2YXIgdD1JdShPYmplY3QsImRlZmluZVByb3BlcnR5Iik7cmV0dXJuIHQoe30sIiIse30pLHR9Y2F0Y2godCl7fX0oKSxUdT1OdTt2YXIgTXU9ZnVuY3Rpb24odCxyLGUpeyJfX3Byb3RvX18iPT1yJiZUdT9UdSh0LHIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOmUsd3JpdGFibGU6ITB9KTp0W3JdPWV9LCR1PU11LGt1PXl0LEN1PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIEZ1PWZ1bmN0aW9uKHQscixlKXt2YXIgbj10W3JdO0N1LmNhbGwodCxyKSYma3UobixlKSYmKHZvaWQgMCE9PWV8fHIgaW4gdCl8fCR1KHQscixlKX0sVXU9RnUsRHU9TXU7dmFyIEJ1PWZ1bmN0aW9uKHQscixlLG4pe3ZhciBvPSFlO2V8fChlPXt9KTtmb3IodmFyIHU9LTEsYT1yLmxlbmd0aDsrK3U8YTspe3ZhciBpPXJbdV0sYz1uP24oZVtpXSx0W2ldLGksZSx0KTp2b2lkIDA7dm9pZCAwPT09YyYmKGM9dFtpXSksbz9EdShlLGksYyk6VXUoZSxpLGMpfXJldHVybiBlfSxSdT1CdSxMdT1zbjt2YXIgVnU9ZnVuY3Rpb24odCxyKXtyZXR1cm4gdCYmUnUocixMdShyKSx0KX07dmFyIEt1PXosV3U9WWUscXU9ZnVuY3Rpb24odCl7dmFyIHI9W107aWYobnVsbCE9dClmb3IodmFyIGUgaW4gT2JqZWN0KHQpKXIucHVzaChlKTtyZXR1cm4gcn0sR3U9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgSHU9UWUsSnU9ZnVuY3Rpb24odCl7aWYoIUt1KHQpKXJldHVybiBxdSh0KTt2YXIgcj1XdSh0KSxlPVtdO2Zvcih2YXIgbiBpbiB0KSgiY29uc3RydWN0b3IiIT1ufHwhciYmR3UuY2FsbCh0LG4pKSYmZS5wdXNoKG4pO3JldHVybiBlfSxRdT1jbjt2YXIgWHU9ZnVuY3Rpb24odCl7cmV0dXJuIFF1KHQpP0h1KHQsITApOkp1KHQpfSxZdT1CdSxadT1YdTt2YXIgdGE9ZnVuY3Rpb24odCxyKXtyZXR1cm4gdCYmWXUocixadShyKSx0KX0scmE9e307IWZ1bmN0aW9uKHQscil7dmFyIGU9YSxuPXImJiFyLm5vZGVUeXBlJiZyLG89biYmdCYmIXQubm9kZVR5cGUmJnQsdT1vJiZvLmV4cG9ydHM9PT1uP2UuQnVmZmVyOnZvaWQgMCxpPXU/dS5hbGxvY1Vuc2FmZTp2b2lkIDA7dC5leHBvcnRzPWZ1bmN0aW9uKHQscil7aWYocilyZXR1cm4gdC5zbGljZSgpO3ZhciBlPXQubGVuZ3RoLG49aT9pKGUpOm5ldyB0LmNvbnN0cnVjdG9yKGUpO3JldHVybiB0LmNvcHkobiksbn19KHtnZXQgZXhwb3J0cygpe3JldHVybiByYX0sc2V0IGV4cG9ydHModCl7cmE9dH19LHJhKTt2YXIgZWE9ZnVuY3Rpb24odCxyKXt2YXIgZT0tMSxuPXQubGVuZ3RoO2ZvcihyfHwocj1BcnJheShuKSk7KytlPG47KXJbZV09dFtlXTtyZXR1cm4gcn0sbmE9QnUsb2E9ZGU7dmFyIHVhPWZ1bmN0aW9uKHQscil7cmV0dXJuIG5hKHQsb2EodCkscil9LGFhPVplKE9iamVjdC5nZXRQcm90b3R5cGVPZixPYmplY3QpLGlhPWNlLGNhPWFhLGZhPWRlLGxhPXNlLHZhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM/ZnVuY3Rpb24odCl7Zm9yKHZhciByPVtdO3Q7KWlhKHIsZmEodCkpLHQ9Y2EodCk7cmV0dXJuIHJ9OmxhLHNhPUJ1LHBhPXZhO3ZhciBiYT1mdW5jdGlvbih0LHIpe3JldHVybiBzYSh0LHBhKHQpLHIpfSx5YT12ZSxoYT12YSxkYT1YdTt2YXIgamE9ZnVuY3Rpb24odCl7cmV0dXJuIHlhKHQsZGEsaGEpfSxnYT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBfYT1mdW5jdGlvbih0KXt2YXIgcj10Lmxlbmd0aCxlPW5ldyB0LmNvbnN0cnVjdG9yKHIpO3JldHVybiByJiYic3RyaW5nIj09dHlwZW9mIHRbMF0mJmdhLmNhbGwodCwiaW5kZXgiKSYmKGUuaW5kZXg9dC5pbmRleCxlLmlucHV0PXQuaW5wdXQpLGV9LE9hPVhyO3ZhciB3YT1mdW5jdGlvbih0KXt2YXIgcj1uZXcgdC5jb25zdHJ1Y3Rvcih0LmJ5dGVMZW5ndGgpO3JldHVybiBuZXcgT2Eocikuc2V0KG5ldyBPYSh0KSkscn0sbWE9d2E7dmFyIEFhPWZ1bmN0aW9uKHQscil7dmFyIGU9cj9tYSh0LmJ1ZmZlcik6dC5idWZmZXI7cmV0dXJuIG5ldyB0LmNvbnN0cnVjdG9yKGUsdC5ieXRlT2Zmc2V0LHQuYnl0ZUxlbmd0aCl9LFNhPS9cdyokLzt2YXIgeGE9ZnVuY3Rpb24odCl7dmFyIHI9bmV3IHQuY29uc3RydWN0b3IodC5zb3VyY2UsU2EuZXhlYyh0KSk7cmV0dXJuIHIubGFzdEluZGV4PXQubGFzdEluZGV4LHJ9LFBhPWk/aS5wcm90b3R5cGU6dm9pZCAwLHphPVBhP1BhLnZhbHVlT2Y6dm9pZCAwO3ZhciBFYT13YTt2YXIgSWE9d2EsTmE9QWEsVGE9eGEsTWE9ZnVuY3Rpb24odCl7cmV0dXJuIHphP09iamVjdCh6YS5jYWxsKHQpKTp7fX0sJGE9ZnVuY3Rpb24odCxyKXt2YXIgZT1yP0VhKHQuYnVmZmVyKTp0LmJ1ZmZlcjtyZXR1cm4gbmV3IHQuY29uc3RydWN0b3IoZSx0LmJ5dGVPZmZzZXQsdC5sZW5ndGgpfTt2YXIga2E9ZnVuY3Rpb24odCxyLGUpe3ZhciBuPXQuY29uc3RydWN0b3I7c3dpdGNoKHIpe2Nhc2UiW29iamVjdCBBcnJheUJ1ZmZlcl0iOnJldHVybiBJYSh0KTtjYXNlIltvYmplY3QgQm9vbGVhbl0iOmNhc2UiW29iamVjdCBEYXRlXSI6cmV0dXJuIG5ldyBuKCt0KTtjYXNlIltvYmplY3QgRGF0YVZpZXddIjpyZXR1cm4gTmEodCxlKTtjYXNlIltvYmplY3QgRmxvYXQzMkFycmF5XSI6Y2FzZSJbb2JqZWN0IEZsb2F0NjRBcnJheV0iOmNhc2UiW29iamVjdCBJbnQ4QXJyYXldIjpjYXNlIltvYmplY3QgSW50MTZBcnJheV0iOmNhc2UiW29iamVjdCBJbnQzMkFycmF5XSI6Y2FzZSJbb2JqZWN0IFVpbnQ4QXJyYXldIjpjYXNlIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIjpjYXNlIltvYmplY3QgVWludDE2QXJyYXldIjpjYXNlIltvYmplY3QgVWludDMyQXJyYXldIjpyZXR1cm4gJGEodCxlKTtjYXNlIltvYmplY3QgTWFwXSI6Y2FzZSJbb2JqZWN0IFNldF0iOnJldHVybiBuZXcgbjtjYXNlIltvYmplY3QgTnVtYmVyXSI6Y2FzZSJbb2JqZWN0IFN0cmluZ10iOnJldHVybiBuZXcgbih0KTtjYXNlIltvYmplY3QgUmVnRXhwXSI6cmV0dXJuIFRhKHQpO2Nhc2UiW29iamVjdCBTeW1ib2xdIjpyZXR1cm4gTWEodCl9fSxDYT16LEZhPU9iamVjdC5jcmVhdGUsVWE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiBmdW5jdGlvbihyKXtpZighQ2EocikpcmV0dXJue307aWYoRmEpcmV0dXJuIEZhKHIpO3QucHJvdG90eXBlPXI7dmFyIGU9bmV3IHQ7cmV0dXJuIHQucHJvdG90eXBlPXZvaWQgMCxlfX0oKSxEYT1hYSxCYT1ZZTt2YXIgUmE9ZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQuY29uc3RydWN0b3J8fEJhKHQpP3t9OlVhKERhKHQpKX0sTGE9VW4sVmE9Zzt2YXIgS2E9ZnVuY3Rpb24odCl7cmV0dXJuIFZhKHQpJiYiW29iamVjdCBNYXBdIj09TGEodCl9LFdhPUZlLHFhPVVlJiZVZS5pc01hcCxHYT1xYT9XYShxYSk6S2EsSGE9VW4sSmE9Zzt2YXIgUWE9ZnVuY3Rpb24odCl7cmV0dXJuIEphKHQpJiYiW29iamVjdCBTZXRdIj09SGEodCl9LFhhPUZlLFlhPVVlJiZVZS5pc1NldCxaYT1ZYT9YYShZYSk6UWEsdGk9THIscmk9RXUsZWk9RnUsbmk9VnUsb2k9dGEsdWk9cmEsYWk9ZWEsaWk9dWEsY2k9YmEsZmk9aG4sbGk9amEsdmk9VW4sc2k9X2EscGk9a2EsYmk9UmEseWk9ZSxoaT1QZSxkaT1HYSxqaT16LGdpPVphLF9pPXNuLE9pPVh1LHdpPSJbb2JqZWN0IEFyZ3VtZW50c10iLG1pPSJbb2JqZWN0IEZ1bmN0aW9uXSIsQWk9IltvYmplY3QgT2JqZWN0XSIsU2k9e307U2lbd2ldPVNpWyJbb2JqZWN0IEFycmF5XSJdPVNpWyJbb2JqZWN0IEFycmF5QnVmZmVyXSJdPVNpWyJbb2JqZWN0IERhdGFWaWV3XSJdPVNpWyJbb2JqZWN0IEJvb2xlYW5dIl09U2lbIltvYmplY3QgRGF0ZV0iXT1TaVsiW29iamVjdCBGbG9hdDMyQXJyYXldIl09U2lbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPVNpWyJbb2JqZWN0IEludDhBcnJheV0iXT1TaVsiW29iamVjdCBJbnQxNkFycmF5XSJdPVNpWyJbb2JqZWN0IEludDMyQXJyYXldIl09U2lbIltvYmplY3QgTWFwXSJdPVNpWyJbb2JqZWN0IE51bWJlcl0iXT1TaVtBaV09U2lbIltvYmplY3QgUmVnRXhwXSJdPVNpWyJbb2JqZWN0IFNldF0iXT1TaVsiW29iamVjdCBTdHJpbmddIl09U2lbIltvYmplY3QgU3ltYm9sXSJdPVNpWyJbb2JqZWN0IFVpbnQ4QXJyYXldIl09U2lbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09U2lbIltvYmplY3QgVWludDE2QXJyYXldIl09U2lbIltvYmplY3QgVWludDMyQXJyYXldIl09ITAsU2lbIltvYmplY3QgRXJyb3JdIl09U2lbbWldPVNpWyJbb2JqZWN0IFdlYWtNYXBdIl09ITE7dmFyIHhpPWZ1bmN0aW9uIHQocixlLG4sbyx1LGEpe3ZhciBpLGM9MSZlLGY9MiZlLGw9NCZlO2lmKG4mJihpPXU/bihyLG8sdSxhKTpuKHIpKSx2b2lkIDAhPT1pKXJldHVybiBpO2lmKCFqaShyKSlyZXR1cm4gcjt2YXIgdj15aShyKTtpZih2KXtpZihpPXNpKHIpLCFjKXJldHVybiBhaShyLGkpfWVsc2V7dmFyIHM9dmkocikscD1zPT1taXx8IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIj09cztpZihoaShyKSlyZXR1cm4gdWkocixjKTtpZihzPT1BaXx8cz09d2l8fHAmJiF1KXtpZihpPWZ8fHA/e306YmkociksIWMpcmV0dXJuIGY/Y2kocixvaShpLHIpKTppaShyLG5pKGkscikpfWVsc2V7aWYoIVNpW3NdKXJldHVybiB1P3I6e307aT1waShyLHMsYyl9fWF8fChhPW5ldyB0aSk7dmFyIGI9YS5nZXQocik7aWYoYilyZXR1cm4gYjthLnNldChyLGkpLGdpKHIpP3IuZm9yRWFjaCgoZnVuY3Rpb24obyl7aS5hZGQodChvLGUsbixvLHIsYSkpfSkpOmRpKHIpJiZyLmZvckVhY2goKGZ1bmN0aW9uKG8sdSl7aS5zZXQodSx0KG8sZSxuLHUscixhKSl9KSk7dmFyIHk9dj92b2lkIDA6KGw/Zj9saTpmaTpmP09pOl9pKShyKTtyZXR1cm4gcmkoeXx8ciwoZnVuY3Rpb24obyx1KXt5JiYobz1yW3U9b10pLGVpKGksdSx0KG8sZSxuLHUscixhKSl9KSksaX0sUGk9eGk7dmFyIHppPWZ1bmN0aW9uKHQpe3JldHVybiBQaSh0LDUpfTtmdW5jdGlvbiBFaSh0KXtsZXQgcj0hMTtyZXR1cm4gT3IodCk/cj0haXNOYU4oTnVtYmVyKHQpKTpmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkmJihyPSEwKSxyfWZ1bmN0aW9uIElpKHQpe2lmKCFPcih0KSYmIUVpKHQpJiYhdyh0KSlyZXR1cm4iIjtsZXQgcj0iIjt0cnl7cj1TdHJpbmcodCl9Y2F0Y2godCl7fXRyeXtyPXQudG9TdHJpbmcoKX1jYXRjaCh0KXt9cmV0dXJuIHJ9dmFyIE5pPU1hdGguY2VpbCxUaT1NYXRoLm1heDt2YXIgTWk9eXQsJGk9Y24sa2k9SWUsQ2k9ejt2YXIgRmk9L1xzLzt2YXIgVWk9ZnVuY3Rpb24odCl7Zm9yKHZhciByPXQubGVuZ3RoO3ItLSYmRmkudGVzdCh0LmNoYXJBdChyKSk7KTtyZXR1cm4gcn0sRGk9L15ccysvO3ZhciBCaT1mdW5jdGlvbih0KXtyZXR1cm4gdD90LnNsaWNlKDAsVWkodCkrMSkucmVwbGFjZShEaSwiIik6dH0sUmk9eixMaT13LFZpPS9eWy0rXTB4WzAtOWEtZl0rJC9pLEtpPS9eMGJbMDFdKyQvaSxXaT0vXjBvWzAtN10rJC9pLHFpPXBhcnNlSW50O3ZhciBHaT1mdW5jdGlvbih0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYoTGkodCkpcmV0dXJuIE5hTjtpZihSaSh0KSl7dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQudmFsdWVPZj90LnZhbHVlT2YoKTp0O3Q9Umkocik/cisiIjpyfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PUJpKHQpO3ZhciBlPUtpLnRlc3QodCk7cmV0dXJuIGV8fFdpLnRlc3QodCk/cWkodC5zbGljZSgyKSxlPzI6OCk6VmkudGVzdCh0KT9OYU46K3R9LEhpPTEvMDt2YXIgSmk9ZnVuY3Rpb24odCxyLGUsbil7Zm9yKHZhciBvPS0xLHU9VGkoTmkoKHItdCkvKGV8fDEpKSwwKSxhPUFycmF5KHUpO3UtLTspYVtuP3U6KytvXT10LHQrPWU7cmV0dXJuIGF9LFFpPWZ1bmN0aW9uKHQscixlKXtpZighQ2koZSkpcmV0dXJuITE7dmFyIG49dHlwZW9mIHI7cmV0dXJuISEoIm51bWJlciI9PW4/JGkoZSkmJmtpKHIsZS5sZW5ndGgpOiJzdHJpbmciPT1uJiZyIGluIGUpJiZNaShlW3JdLHQpfSxYaT1mdW5jdGlvbih0KXtyZXR1cm4gdD8odD1HaSh0KSk9PT1IaXx8dD09PS0xLzA/MTc5NzY5MzEzNDg2MjMxNTdlMjkyKih0PDA/LTE6MSk6dD09dD90OjA6MD09PXQ/dDowfTt2YXIgWWk9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHIsZSxuKXtyZXR1cm4gbiYmIm51bWJlciIhPXR5cGVvZiBuJiZRaShyLGUsbikmJihlPW49dm9pZCAwKSxyPVhpKHIpLHZvaWQgMD09PWU/KGU9cixyPTApOmU9WGkoZSksbj12b2lkIDA9PT1uP3I8ZT8xOi0xOlhpKG4pLEppKHIsZSxuLHQpfX0oKTtmdW5jdGlvbiBaaSh0LHI9bnVsbCxlPXt9KXtUKHIpfHwocj10PT50KTtsZXQgbj1ncihlLCJmb3JjZSIsITEpO3JldHVybiBJcihuKXx8KG49ITEpLGZ1bmN0aW9uKHQscixlPSExKXtsZXQgbj1bXTtpZighQXIodCkmJiF3cih0KSlyZXR1cm4gcih0LG51bGwsW10pO2Z1bmN0aW9uIG8odCl7aWYoQXIodCkpcmV0dXJuIFlpKFN1KHQpKTtpZih3cih0KSl7bGV0IHI9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCksbj1udWxsO3JldHVybiBlJiYobj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpKSxBcihyKXx8KHI9W10pLEFyKG4pfHwobj1bXSksWy4uLnIsLi4ubl19cmV0dXJuIHR9cmV0dXJuIGZ1bmN0aW9uIHQoZSx1KXtpZihBcihlKSlyZXR1cm4gbyhlKS5tYXAoKG89PntsZXQgdT1lW29dLGE9emkobik7cmV0dXJuIG4ucHVzaChvKSx1PXIodSxvLGEpLHU9dCh1KSxuLnBvcCgpLHV9KSk7aWYod3IoZSkpe2xldCB1PW8oZSksYT17fTtyZXR1cm4gdS5tYXAoKG89PntsZXQgdT1lW29dLGk9emkobik7bi5wdXNoKG8pLHU9cih1LG8saSksdT10KHUpLG4ucG9wKCksYVtvXT11fSkpLGF9cmV0dXJuIGV9KHQpfSh0LHIsbil9ZnVuY3Rpb24gdGModCl7cmV0dXJuIHRjPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSx0Yyh0KX1mdW5jdGlvbiByYyh0KXt2YXIgcj1mdW5jdGlvbih0LHIpe2lmKCJvYmplY3QiIT09dGModCl8fG51bGw9PT10KXJldHVybiB0O3ZhciBlPXRbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1lKXt2YXIgbj1lLmNhbGwodCxyfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09dGMobikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1yP1N0cmluZzpOdW1iZXIpKHQpfSh0LCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PXRjKHIpP3I6U3RyaW5nKHIpfWZ1bmN0aW9uIGVjKHQscixlKXtyZXR1cm4ocj1yYyhyKSlpbiB0P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIse3ZhbHVlOmUsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTp0W3JdPWUsdH12YXIgbmM9e30sb2M9eG87dmFyIHVjPUV1LGFjPUxvLGljPWZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6b2N9LGNjPWU7dmFyIGZjPWZ1bmN0aW9uKHQscil7cmV0dXJuKGNjKHQpP3VjOmFjKSh0LGljKHIpKX07KHtnZXQgZXhwb3J0cygpe3JldHVybiBuY30sc2V0IGV4cG9ydHModCl7bmM9dH19KS5leHBvcnRzPWZjO3ZhciBsYz1yKG5jKSx2Yz1GdSxzYz1zcixwYz1JZSxiYz16LHljPWJyO3ZhciBoYz1mdW5jdGlvbih0LHIsZSxuKXtpZighYmModCkpcmV0dXJuIHQ7Zm9yKHZhciBvPS0xLHU9KHI9c2Mocix0KSkubGVuZ3RoLGE9dS0xLGk9dDtudWxsIT1pJiYrK288dTspe3ZhciBjPXljKHJbb10pLGY9ZTtpZigiX19wcm90b19fIj09PWN8fCJjb25zdHJ1Y3RvciI9PT1jfHwicHJvdG90eXBlIj09PWMpcmV0dXJuIHQ7aWYobyE9YSl7dmFyIGw9aVtjXTt2b2lkIDA9PT0oZj1uP24obCxjLGkpOnZvaWQgMCkmJihmPWJjKGwpP2w6cGMocltvKzFdKT9bXTp7fSl9dmMoaSxjLGYpLGk9aVtjXX1yZXR1cm4gdH07dmFyIGRjPWZ1bmN0aW9uKHQscixlKXtyZXR1cm4gbnVsbD09dD90OmhjKHQscixlKX07dmFyIGpjPWRyLGdjPWZ1bmN0aW9uKHQscixlKXt2YXIgbj0tMSxvPXQubGVuZ3RoO3I8MCYmKHI9LXI+bz8wOm8rciksKGU9ZT5vP286ZSk8MCYmKGUrPW8pLG89cj5lPzA6ZS1yPj4+MCxyPj4+PTA7Zm9yKHZhciB1PUFycmF5KG8pOysrbjxvOyl1W25dPXRbbityXTtyZXR1cm4gdX07dmFyIF9jPXNyLE9jPWZ1bmN0aW9uKHQpe3ZhciByPW51bGw9PXQ/MDp0Lmxlbmd0aDtyZXR1cm4gcj90W3ItMV06dm9pZCAwfSx3Yz1mdW5jdGlvbih0LHIpe3JldHVybiByLmxlbmd0aDwyP3Q6amModCxnYyhyLDAsLTEpKX0sbWM9YnI7dmFyIEFjPWZ1bmN0aW9uKHQscil7cmV0dXJuIHI9X2Mocix0KSxudWxsPT0odD13Yyh0LHIpKXx8ZGVsZXRlIHRbbWMoT2MocikpXX0sU2M9aix4Yz1hYSxQYz1nLHpjPUZ1bmN0aW9uLnByb3RvdHlwZSxFYz1PYmplY3QucHJvdG90eXBlLEljPXpjLnRvU3RyaW5nLE5jPUVjLmhhc093blByb3BlcnR5LFRjPUljLmNhbGwoT2JqZWN0KTt2YXIgTWM9ZnVuY3Rpb24odCl7aWYoIVBjKHQpfHwiW29iamVjdCBPYmplY3RdIiE9U2ModCkpcmV0dXJuITE7dmFyIHI9eGModCk7aWYobnVsbD09PXIpcmV0dXJuITA7dmFyIGU9TmMuY2FsbChyLCJjb25zdHJ1Y3RvciIpJiZyLmNvbnN0cnVjdG9yO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlIGluc3RhbmNlb2YgZSYmSWMuY2FsbChlKT09VGN9O3ZhciAkYz1mdW5jdGlvbih0KXtyZXR1cm4gTWModCk/dm9pZCAwOnR9LGtjPXhlLENjPWUsRmM9aT9pLmlzQ29uY2F0U3ByZWFkYWJsZTp2b2lkIDA7dmFyIFVjPWNlLERjPWZ1bmN0aW9uKHQpe3JldHVybiBDYyh0KXx8a2ModCl8fCEhKEZjJiZ0JiZ0W0ZjXSl9O3ZhciBCYz1mdW5jdGlvbiB0KHIsZSxuLG8sdSl7dmFyIGE9LTEsaT1yLmxlbmd0aDtmb3Iobnx8KG49RGMpLHV8fCh1PVtdKTsrK2E8aTspe3ZhciBjPXJbYV07ZT4wJiZuKGMpP2U+MT90KGMsZS0xLG4sbyx1KTpVYyh1LGMpOm98fCh1W3UubGVuZ3RoXT1jKX1yZXR1cm4gdX0sUmM9QmM7dmFyIExjPWZ1bmN0aW9uKHQpe3JldHVybihudWxsPT10PzA6dC5sZW5ndGgpP1JjKHQsMSk6W119O3ZhciBWYz1mdW5jdGlvbih0LHIsZSl7c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIHQuY2FsbChyKTtjYXNlIDE6cmV0dXJuIHQuY2FsbChyLGVbMF0pO2Nhc2UgMjpyZXR1cm4gdC5jYWxsKHIsZVswXSxlWzFdKTtjYXNlIDM6cmV0dXJuIHQuY2FsbChyLGVbMF0sZVsxXSxlWzJdKX1yZXR1cm4gdC5hcHBseShyLGUpfSxLYz1NYXRoLm1heDt2YXIgV2M9ZnVuY3Rpb24odCxyLGUpe3JldHVybiByPUtjKHZvaWQgMD09PXI/dC5sZW5ndGgtMTpyLDApLGZ1bmN0aW9uKCl7Zm9yKHZhciBuPWFyZ3VtZW50cyxvPS0xLHU9S2Mobi5sZW5ndGgtciwwKSxhPUFycmF5KHUpOysrbzx1OylhW29dPW5bcitvXTtvPS0xO2Zvcih2YXIgaT1BcnJheShyKzEpOysrbzxyOylpW29dPW5bb107cmV0dXJuIGlbcl09ZShhKSxWYyh0LHRoaXMsaSl9fTt2YXIgcWM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSxHYz1OdSxIYz1HYz9mdW5jdGlvbih0LHIpe3JldHVybiBHYyh0LCJ0b1N0cmluZyIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHZhbHVlOnFjKHIpLHdyaXRhYmxlOiEwfSl9OnhvLEpjPURhdGUubm93O3ZhciBRYz1mdW5jdGlvbih0KXt2YXIgcj0wLGU9MDtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1KYygpLG89MTYtKG4tZSk7aWYoZT1uLG8+MCl7aWYoKytyPj04MDApcmV0dXJuIGFyZ3VtZW50c1swXX1lbHNlIHI9MDtyZXR1cm4gdC5hcHBseSh2b2lkIDAsYXJndW1lbnRzKX19KEhjKSxYYz1MYyxZYz1XYyxaYz1RYzt2YXIgdGY9dHIscmY9eGksZWY9QWMsbmY9c3Isb2Y9QnUsdWY9JGMsYWY9amEsY2Y9ZnVuY3Rpb24odCl7cmV0dXJuIFpjKFljKHQsdm9pZCAwLFhjKSx0KyIiKX0oKGZ1bmN0aW9uKHQscil7dmFyIGU9e307aWYobnVsbD09dClyZXR1cm4gZTt2YXIgbj0hMTtyPXRmKHIsKGZ1bmN0aW9uKHIpe3JldHVybiByPW5mKHIsdCksbnx8KG49ci5sZW5ndGg+MSkscn0pKSxvZih0LGFmKHQpLGUpLG4mJihlPXJmKGUsNyx1ZikpO2Zvcih2YXIgbz1yLmxlbmd0aDtvLS07KWVmKGUscltvXSk7cmV0dXJuIGV9KSk7ZnVuY3Rpb24gZmYodCxyKXt2YXIgZT1PYmplY3Qua2V5cyh0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO3ImJihuPW4uZmlsdGVyKChmdW5jdGlvbihyKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LHIpLmVudW1lcmFibGV9KSkpLGUucHVzaC5hcHBseShlLG4pfXJldHVybiBlfWZ1bmN0aW9uIGxmKHQpe2Zvcih2YXIgcj0xO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspe3ZhciBlPW51bGwhPWFyZ3VtZW50c1tyXT9hcmd1bWVudHNbcl06e307ciUyP2ZmKE9iamVjdChlKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24ocil7ZWModCxyLGVbcl0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoZSkpOmZmKE9iamVjdChlKSkuZm9yRWFjaCgoZnVuY3Rpb24ocil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQscixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUscikpfSkpfXJldHVybiB0fWZ1bmN0aW9uIHZmKHQscj17fSl7bGV0IGU9IiRsZXZlbCIsbj0iJHBhcmVudHMiO2lmKCF4cih0KSlyZXR1cm5bXTtsZXQgbz1ncihyLCJiaW5kS2V5IixudWxsKTtPcihvKXx8KG89ImlkIik7bGV0IHU9Z3IociwiYmluZFBhcmVudCIsbnVsbCk7T3IodSl8fCh1PSJwYXJlbnRJZCIpO2xldCBhPWdyKHIsImJpbmRDaGlsZHJlbiIsbnVsbCk7T3IoYSl8fChhPSJjaGlsZHJlbiIpO2xldCBpPWdyKHIsInNhdmVFeHRQcm9wcyIsbnVsbCk7SXIoaSl8fChpPSExKSx0PWZ1bmN0aW9uKHQpe2xldCByPVtdO2Z1bmN0aW9uIGEoYSl7bGV0IGk9W107bGModCwoKHQsYyk9PntsZXQgZj1ncih0LHUpLGw9Z3IoYSxvKTtpZihmJiZsJiZmPT09bCl7bGV0IHU9Z3IoYSxuLFtdKTt1PXppKHUpLHUucHVzaChhW29dKSxyLnB1c2gobGYoe1tlXTphW2VdKzEsW25dOnV9LHQpKX1lbHNlIGkucHVzaCh0KX0pKSx0PWl9aWYodD16aSh0KSxmdW5jdGlvbigpe2xldCBvPVtdO2xjKHQsKCh0LGEpPT57U3IodFt1XSk/ci5wdXNoKGxmKHtbZV06MCxbbl06W119LHQpKTpvLnB1c2godCl9KSksdD1vfSgpLDA9PT1yLmxlbmd0aClyZXR1cm4gcjtsZXQgaT0tMTtmb3IoO2krPTEsIShpPnIubGVuZ3RoLTEpOyl7aWYoYShyW2ldKSwwPT09dC5sZW5ndGgpYnJlYWt9cmV0dXJuIHJ9KHQpO2xldCBjPWZ1bmN0aW9uKHQpe2xldCByPVtdO2Z1bmN0aW9uIGModCl7cmV0dXJuIGk/dDpjZih0LFtlLG5dKX1sZXQgZj17fTtyZXR1cm4gbGModCwoKG4saSk9PntpZigwPT09bltlXSl7bGV0IHQ9YyhuKTtyLnB1c2godCksZltuW29dXT1baV19ZWxzZXtsZXQgZT1mdW5jdGlvbihyKXtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7bGV0IG49dFtlXTtpZihyW3VdPT09bltvXSlyZXR1cm4gbn1yZXR1cm4gbnVsbH0obik7aWYobnVsbCE9PWUpe2xldCB0PWZbZVtvXV07dD1bLi4udCxhXTtsZXQgdT1ncihyLHQsW10pLGk9YyhuKTt1LnB1c2goaSksZltuW29dXT1bLi4udCx1Lmxlbmd0aC0xXSxkYyhyLHQsdSl9ZWxzZSBjb25zb2xlLmxvZyhgY2FuIG5vdCBmaW5kIHBhcmVudCBmb3IgJHtncihuLHUpfWApfX0pKSxyfSh0KTtyZXR1cm4gY31mdW5jdGlvbiBzZih0LHI9e30pe2lmKCFtcih0KSYmIXhyKHQpKXJldHVybltdO2xldCBlPWdyKHIsImJpbmRLZXkiLG51bGwpO09yKGUpfHwoZT0iaWQiKTtsZXQgbj1ncihyLCJiaW5kUGFyZW50IixudWxsKTtPcihuKXx8KG49InBhcmVudElkIik7bGV0IG89Z3IociwiYmluZFRleHQiLG51bGwpO09yKG8pfHwobz0idGV4dCIpO2xldCB1PWdyKHIsImJpbmRDaGlsZHJlbiIsbnVsbCk7T3IodSl8fCh1PSJjaGlsZHJlbiIpO2xldCBhPWdyKHIsImJpbmRUeXBlIixudWxsKTtPcihhKXx8KGE9InR5cGUiKTtsZXQgaT1ncihyLCJiaW5kTnVtT2ZDaGlscmVuIixudWxsKTtPcihpKXx8KGk9Im51bU9mQ2hpbHJlbiIpO2xldCBjPWdyKHIsImJpbmRSb290IixudWxsKTtPcihjKXx8KGM9InJvb3QiKTtsZXQgZj1ncihyLCJzYXZlRXh0UHJvcHMiLG51bGwpO0lyKGYpfHwoZj0hMSksT3IoYykmJih0PXtbY106dH0pO2xldCBsPWZ1bmN0aW9uKHQscj17fSl7aWYoIW1yKHQpJiYheHIodCkpcmV0dXJuW107bGV0IGU9Z3IociwiYmluZEtleSIsbnVsbCk7T3IoZSl8fChlPSJpZCIpO2xldCBuPWdyKHIsImJpbmRQYXJlbnQiLG51bGwpO09yKG4pfHwobj0icGFyZW50SWQiKTtsZXQgbz1ncihyLCJiaW5kQmVsb25nIixudWxsKTtPcihvKXx8KG89ImtleSIpO2xldCB1PWdyKHIsImJpbmRUZXh0IixudWxsKTtPcih1KXx8KHU9InRleHQiKTtsZXQgYT1ncihyLCJiaW5kVHlwZSIsbnVsbCk7T3IoYSl8fChhPSJ0eXBlIik7bGV0IGk9Z3IociwiYmluZE51bU9mQ2hpbHJlbiIsbnVsbCk7ZnVuY3Rpb24gYyh0LHIpe3JldHVybiB0PXppKHQpLHQ9Sm8odCwodD0+dyh0KT9JaSh0KTp0KSksdyhyKSYmKHI9SWkocikpLChPcihyKXx8RWkocikpJiZ0LnB1c2gociksWG8odCwiLSIpfU9yKGkpfHwoaT0ibnVtT2ZDaGlscmVuIik7bGV0IGY9W107cmV0dXJuIFppKHQsKCh0LHIsbCk9PntsZXQgdj1jKGwscikscz1jKGwsbnVsbCkscD0ibm9kZSI7d3IodCk/cD0ib2JqZWN0IjpBcih0KSYmKHA9ImFycmF5Iik7bGV0IGI9e1tlXTp2LFtuXTpzLFthXTpwfTtpZigoT3Iocil8fHp1KHIpKSYmKGJbb109ciksd3IodCl8fEFyKHQpfHwoYlt1XT10KSx3cih0KXx8QXIodCkpe2xldCByPVN1KHQpO2JbaV09cn1yZXR1cm4gZi5wdXNoKGIpLHR9KSx7Zm9yY2U6ITB9KSxmfSh0LHtiaW5kS2V5OmUsYmluZFBhcmVudDpuLGJpbmRUZXh0Om8sYmluZFR5cGU6YSxiaW5kTnVtT2ZDaGlscmVuOml9KTtyZXR1cm4gdmYobCx7YmluZEtleTplLGJpbmRQYXJlbnQ6bixiaW5kQ2hpbGRyZW46dSxzYXZlRXh0UHJvcHM6Zn0pfWFzeW5jIGZ1bmN0aW9uIGNvbnZlcnRUb1RyZWVXayh0LHI9e30pe3JldHVybiBzZih0LHIpfQoKbGV0IGluc3RhbmNlID0gbnVsbApmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBjb252ZXJ0VG9UcmVlV2sKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gY29udmVydFRvVHJlZVdrCiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgCiAgICAgICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdlbWl0JywKICAgICAgICAgICAgICAgIGV2TmFtZTogJ2Vycm9yJywKICAgICAgICAgICAgICAgIG1zZzogZXJyLAogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICAgICAgfQogICAgICAgICAgICAKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9mdW4KICAgICAgICAgICAgbGV0IGZ1biA9IGluc3RhbmNlW2RhdGEuZnVuXQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CgogICAgICAgICAgICAvL2V4ZWMKICAgICAgICAgICAgYXdhaXQgZnVuKC4uLmlucHV0KQogICAgICAgICAgICAgICAgLnRoZW4oKHN1YykgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdzdWNjZXNzJwogICAgICAgICAgICAgICAgICAgIG1zZz1zdWMKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdlcnJvcicKICAgICAgICAgICAgICAgICAgICBtc2c9ZXJyCiAgICAgICAgICAgICAgICB9KQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KICAgICAgICAKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBzZWxmLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIHJlY3ZNZXNzYWdlKGUuZGF0YSkKICAgICAgICB9CiAgICAgICAgCgo=");function m(){let m=new t;let l=function(d){try{let m=new Blob([d]),l=window.URL||window.webkitURL;return new Worker(l.createObjectURL(m))}catch(d){I(d)}}(d);if(!l)return I("invalid worker"),null;function Z(){let d=function(){let d,m,l=new Promise((function(){d=arguments[0],m=arguments[1]}));return l.resolve=d,l.reject=m,l}(),Z=function(){let d=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,m=[],l="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),Z=l.length;for(let I=0;I<d;I++)m[I]=l[0|Math.random()*Z];return m.join("")}(),I={mode:"call",id:Z,fun:"main",input:[...arguments]};return l.postMessage(I),m.once(Z,(m=>{"success"===m.state?d.resolve(m.msg):d.reject(m.msg)})),d}function I(d){m.emit("error",d)}return l.onmessage=function(d){!function(d){let l=d,Z=l.mode;"emit"!==Z&&"return"!==Z||("emit"===Z&&m.emit(l.evName,l.msg),"return"===Z&&m.emit(l.id,l))}(d.data)},l.onerror=I,function(){let d={mode:"init",type:"function",input:[...arguments]};l.postMessage(d)}([...arguments]),m.main=Z,m.main=Z,m.terminate=function(){l?(l.terminate(),l=void 0):I("worker has been terminated")},m}J=async function(){let d=[...arguments],l=m();return await l.main(...d).finally((()=>{l.terminate()}))}}();var s=J;export{s as default};
@@ -0,0 +1,7 @@
1
+ import filepathToTree from 'wsemi/src/filepathToTree.mjs'
2
+
3
+ async function filepathToTreeWk(data, opt = {}) {
4
+ return filepathToTree(data, opt)
5
+ }
6
+
7
+ export default filepathToTreeWk
@@ -0,0 +1 @@
1
+ const d="function"==typeof atob,Z="function"==typeof Buffer,m="function"==typeof TextDecoder?new TextDecoder:void 0,l=("function"==typeof TextEncoder&&new TextEncoder,Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=")),b=(d=>{let Z={};return l.forEach(((d,m)=>Z[d]=m)),Z})(),I=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,i=String.fromCharCode.bind(String),X="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):d=>new Uint8Array(Array.prototype.slice.call(d,0)),c=d=>d.replace(/[^A-Za-z0-9\+\/]/g,""),W=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,y=d=>{switch(d.length){case 4:var Z=((7&d.charCodeAt(0))<<18|(63&d.charCodeAt(1))<<12|(63&d.charCodeAt(2))<<6|63&d.charCodeAt(3))-65536;return i(55296+(Z>>>10))+i(56320+(1023&Z));case 3:return i((15&d.charCodeAt(0))<<12|(63&d.charCodeAt(1))<<6|63&d.charCodeAt(2));default:return i((31&d.charCodeAt(0))<<6|63&d.charCodeAt(1))}},p=d=>d.replace(W,y),K=d=>{if(d=d.replace(/\s+/g,""),!I.test(d))throw new TypeError("malformed base64.");d+="==".slice(2-(3&d.length));let Z,m,l,X="";for(let I=0;I<d.length;)Z=b[d.charAt(I++)]<<18|b[d.charAt(I++)]<<12|(m=b[d.charAt(I++)])<<6|(l=b[d.charAt(I++)]),X+=64===m?i(Z>>16&255):64===l?i(Z>>16&255,Z>>8&255):i(Z>>16&255,Z>>8&255,255&Z);return X},Y=d?d=>atob(c(d)):Z?d=>Buffer.from(d,"base64").toString("binary"):K,H=Z?d=>X(Buffer.from(d,"base64")):d=>X(Y(d).split("").map((d=>d.charCodeAt(0)))),G=Z?d=>Buffer.from(d,"base64").toString("utf8"):m?d=>m.decode(H(d)):d=>p(Y(d)),h=d=>c(d.replace(/[-_]/g,(d=>"-"==d?"+":"/"))),C=d=>G(h(d)),V=C;var u={};!function(d){var Z=Object.prototype.hasOwnProperty,m="~";function l(){}function b(d,Z,m){this.fn=d,this.context=Z,this.once=m||!1}function I(d,Z,l,I,i){if("function"!=typeof l)throw new TypeError("The listener must be a function");var X=new b(l,I||d,i),c=m?m+Z:Z;return d._events[c]?d._events[c].fn?d._events[c]=[d._events[c],X]:d._events[c].push(X):(d._events[c]=X,d._eventsCount++),d}function i(d,Z){0==--d._eventsCount?d._events=new l:delete d._events[Z]}function X(){this._events=new l,this._eventsCount=0}Object.create&&(l.prototype=Object.create(null),(new l).__proto__||(m=!1)),X.prototype.eventNames=function(){var d,l,b=[];if(0===this._eventsCount)return b;for(l in d=this._events)Z.call(d,l)&&b.push(m?l.slice(1):l);return Object.getOwnPropertySymbols?b.concat(Object.getOwnPropertySymbols(d)):b},X.prototype.listeners=function(d){var Z=m?m+d:d,l=this._events[Z];if(!l)return[];if(l.fn)return[l.fn];for(var b=0,I=l.length,i=new Array(I);b<I;b++)i[b]=l[b].fn;return i},X.prototype.listenerCount=function(d){var Z=m?m+d:d,l=this._events[Z];return l?l.fn?1:l.length:0},X.prototype.emit=function(d,Z,l,b,I,i){var X=m?m+d:d;if(!this._events[X])return!1;var c,W,y=this._events[X],p=arguments.length;if(y.fn){switch(y.once&&this.removeListener(d,y.fn,void 0,!0),p){case 1:return y.fn.call(y.context),!0;case 2:return y.fn.call(y.context,Z),!0;case 3:return y.fn.call(y.context,Z,l),!0;case 4:return y.fn.call(y.context,Z,l,b),!0;case 5:return y.fn.call(y.context,Z,l,b,I),!0;case 6:return y.fn.call(y.context,Z,l,b,I,i),!0}for(W=1,c=new Array(p-1);W<p;W++)c[W-1]=arguments[W];y.fn.apply(y.context,c)}else{var K,Y=y.length;for(W=0;W<Y;W++)switch(y[W].once&&this.removeListener(d,y[W].fn,void 0,!0),p){case 1:y[W].fn.call(y[W].context);break;case 2:y[W].fn.call(y[W].context,Z);break;case 3:y[W].fn.call(y[W].context,Z,l);break;case 4:y[W].fn.call(y[W].context,Z,l,b);break;default:if(!c)for(K=1,c=new Array(p-1);K<p;K++)c[K-1]=arguments[K];y[W].fn.apply(y[W].context,c)}}return!0},X.prototype.on=function(d,Z,m){return I(this,d,Z,m,!1)},X.prototype.once=function(d,Z,m){return I(this,d,Z,m,!0)},X.prototype.removeListener=function(d,Z,l,b){var I=m?m+d:d;if(!this._events[I])return this;if(!Z)return i(this,I),this;var X=this._events[I];if(X.fn)X.fn!==Z||b&&!X.once||l&&X.context!==l||i(this,I);else{for(var c=0,W=[],y=X.length;c<y;c++)(X[c].fn!==Z||b&&!X[c].once||l&&X[c].context!==l)&&W.push(X[c]);W.length?this._events[I]=1===W.length?W[0]:W:i(this,I)}return this},X.prototype.removeAllListeners=function(d){var Z;return d?(Z=m?m+d:d,this._events[Z]&&i(this,Z)):(this._events=new l,this._eventsCount=0),this},X.prototype.off=X.prototype.removeListener,X.prototype.addListener=X.prototype.on,X.prefixed=m,X.EventEmitter=X,d.exports=X}({get exports(){return u},set exports(d){u=d}});var t=u;let s;!function(){if("browser"!==("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let d=V("CgoKZnVuY3Rpb24gdChyKXtyZXR1cm4gdD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sdChyKX1mdW5jdGlvbiByKHIpe3ZhciBlPWZ1bmN0aW9uKHIsZSl7aWYoIm9iamVjdCIhPT10KHIpfHxudWxsPT09cilyZXR1cm4gcjt2YXIgbj1yW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09bil7dmFyIG89bi5jYWxsKHIsZXx8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PXQobykpcmV0dXJuIG87dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1lP1N0cmluZzpOdW1iZXIpKHIpfShyLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PXQoZSk/ZTpTdHJpbmcoZSl9ZnVuY3Rpb24gZSh0LGUsbil7cmV0dXJuKGU9cihlKSlpbiB0P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTp0W2VdPW4sdH12YXIgbj0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpczoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnt9O2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsImRlZmF1bHQiKT90LmRlZmF1bHQ6dH12YXIgdT1BcnJheS5pc0FycmF5LGE9Im9iamVjdCI9PXR5cGVvZiBuJiZuJiZuLk9iamVjdD09PU9iamVjdCYmbixpPWEsYz0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGY9aXx8Y3x8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxsPWYuU3ltYm9sLHY9bCxzPU9iamVjdC5wcm90b3R5cGUscD1zLmhhc093blByb3BlcnR5LGI9cy50b1N0cmluZyx5PXY/di50b1N0cmluZ1RhZzp2b2lkIDA7dmFyIGQ9ZnVuY3Rpb24odCl7dmFyIHI9cC5jYWxsKHQseSksZT10W3ldO3RyeXt0W3ldPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89Yi5jYWxsKHQpO3JldHVybiBuJiYocj90W3ldPWU6ZGVsZXRlIHRbeV0pLG99LGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgaj1kLGc9ZnVuY3Rpb24odCl7cmV0dXJuIGguY2FsbCh0KX0sXz1sP2wudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBPPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMD09PXQ/IltvYmplY3QgVW5kZWZpbmVkXSI6IltvYmplY3QgTnVsbF0iOl8mJl8gaW4gT2JqZWN0KHQpP2oodCk6Zyh0KX07dmFyIHc9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPXQmJiJvYmplY3QiPT10eXBlb2YgdH0sbT1PLEE9dzt2YXIgUz1mdW5jdGlvbih0KXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHR8fEEodCkmJiJbb2JqZWN0IFN5bWJvbF0iPT1tKHQpfSx4PXUsST1TLFA9L1wufFxbKD86W15bXF1dKnwoWyInXSkoPzooPyFcMSlbXlxcXXxcXC4pKj9cMSlcXS8sej0vXlx3KiQvO3ZhciBFPWZ1bmN0aW9uKHQscil7aWYoeCh0KSlyZXR1cm4hMTt2YXIgZT10eXBlb2YgdDtyZXR1cm4hKCJudW1iZXIiIT1lJiYic3ltYm9sIiE9ZSYmImJvb2xlYW4iIT1lJiZudWxsIT10JiYhSSh0KSl8fCh6LnRlc3QodCl8fCFQLnRlc3QodCl8fG51bGwhPXImJnQgaW4gT2JqZWN0KHIpKX07dmFyICQ9ZnVuY3Rpb24odCl7dmFyIHI9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09cnx8ImZ1bmN0aW9uIj09cil9LEY9TyxrPSQ7dmFyIE0sVT1mdW5jdGlvbih0KXtpZighayh0KSlyZXR1cm4hMTt2YXIgcj1GKHQpO3JldHVybiJbb2JqZWN0IEZ1bmN0aW9uXSI9PXJ8fCJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSI9PXJ8fCJbb2JqZWN0IEFzeW5jRnVuY3Rpb25dIj09cnx8IltvYmplY3QgUHJveHldIj09cn0sRD1mWyJfX2NvcmUtanNfc2hhcmVkX18iXSxOPShNPS9bXi5dKyQvLmV4ZWMoRCYmRC5rZXlzJiZELmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIitNOiIiO3ZhciBUPWZ1bmN0aW9uKHQpe3JldHVybiEhTiYmTiBpbiB0fSxCPUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZzt2YXIgQz1mdW5jdGlvbih0KXtpZihudWxsIT10KXt0cnl7cmV0dXJuIEIuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9LFI9VSxMPVQsVj0kLFc9QyxxPS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLEc9RnVuY3Rpb24ucHJvdG90eXBlLEg9T2JqZWN0LnByb3RvdHlwZSxKPUcudG9TdHJpbmcsSz1ILmhhc093blByb3BlcnR5LFE9UmVnRXhwKCJeIitKLmNhbGwoSykucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7dmFyIFg9ZnVuY3Rpb24odCl7cmV0dXJuISghVih0KXx8TCh0KSkmJihSKHQpP1E6cSkudGVzdChXKHQpKX0sWT1mdW5jdGlvbih0LHIpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W3JdfTt2YXIgWj1mdW5jdGlvbih0LHIpe3ZhciBlPVkodCxyKTtyZXR1cm4gWChlKT9lOnZvaWQgMH0sdHQ9WihPYmplY3QsImNyZWF0ZSIpLHJ0PXR0O3ZhciBldD1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189cnQ/cnQobnVsbCk6e30sdGhpcy5zaXplPTB9O3ZhciBudD1mdW5jdGlvbih0KXt2YXIgcj10aGlzLmhhcyh0KSYmZGVsZXRlIHRoaXMuX19kYXRhX19bdF07cmV0dXJuIHRoaXMuc2l6ZS09cj8xOjAscn0sb3Q9dHQsdXQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgYXQ9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihvdCl7dmFyIGU9clt0XTtyZXR1cm4iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI9PT1lP3ZvaWQgMDplfXJldHVybiB1dC5jYWxsKHIsdCk/clt0XTp2b2lkIDB9LGl0PXR0LGN0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIGZ0PXR0O3ZhciBsdD1ldCx2dD1udCxzdD1hdCxwdD1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fO3JldHVybiBpdD92b2lkIDAhPT1yW3RdOmN0LmNhbGwocix0KX0sYnQ9ZnVuY3Rpb24odCxyKXt2YXIgZT10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKHQpPzA6MSxlW3RdPWZ0JiZ2b2lkIDA9PT1yPyJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjpyLHRoaXN9O2Z1bmN0aW9uIHl0KHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytyPGU7KXt2YXIgbj10W3JdO3RoaXMuc2V0KG5bMF0sblsxXSl9fXl0LnByb3RvdHlwZS5jbGVhcj1sdCx5dC5wcm90b3R5cGUuZGVsZXRlPXZ0LHl0LnByb3RvdHlwZS5nZXQ9c3QseXQucHJvdG90eXBlLmhhcz1wdCx5dC5wcm90b3R5cGUuc2V0PWJ0O3ZhciBkdD15dDt2YXIgaHQ9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfTt2YXIganQ9ZnVuY3Rpb24odCxyKXtyZXR1cm4gdD09PXJ8fHQhPXQmJnIhPXJ9LGd0PWp0O3ZhciBfdD1mdW5jdGlvbih0LHIpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS07KWlmKGd0KHRbZV1bMF0scikpcmV0dXJuIGU7cmV0dXJuLTF9LE90PV90LHd0PUFycmF5LnByb3RvdHlwZS5zcGxpY2U7dmFyIG10PV90O3ZhciBBdD1fdDt2YXIgU3Q9X3Q7dmFyIHh0PWh0LEl0PWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX19kYXRhX18sZT1PdChyLHQpO3JldHVybiEoZTwwKSYmKGU9PXIubGVuZ3RoLTE/ci5wb3AoKTp3dC5jYWxsKHIsZSwxKSwtLXRoaXMuc2l6ZSwhMCl9LFB0PWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX19kYXRhX18sZT1tdChyLHQpO3JldHVybiBlPDA/dm9pZCAwOnJbZV1bMV19LHp0PWZ1bmN0aW9uKHQpe3JldHVybiBBdCh0aGlzLl9fZGF0YV9fLHQpPi0xfSxFdD1mdW5jdGlvbih0LHIpe3ZhciBlPXRoaXMuX19kYXRhX18sbj1TdChlLHQpO3JldHVybiBuPDA/KCsrdGhpcy5zaXplLGUucHVzaChbdCxyXSkpOmVbbl1bMV09cix0aGlzfTtmdW5jdGlvbiAkdCh0KXt2YXIgcj0tMSxlPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrcjxlOyl7dmFyIG49dFtyXTt0aGlzLnNldChuWzBdLG5bMV0pfX0kdC5wcm90b3R5cGUuY2xlYXI9eHQsJHQucHJvdG90eXBlLmRlbGV0ZT1JdCwkdC5wcm90b3R5cGUuZ2V0PVB0LCR0LnByb3RvdHlwZS5oYXM9enQsJHQucHJvdG90eXBlLnNldD1FdDt2YXIgRnQ9JHQsa3Q9WihmLCJNYXAiKSxNdD1kdCxVdD1GdCxEdD1rdDt2YXIgTnQ9ZnVuY3Rpb24odCl7dmFyIHI9dHlwZW9mIHQ7cmV0dXJuInN0cmluZyI9PXJ8fCJudW1iZXIiPT1yfHwic3ltYm9sIj09cnx8ImJvb2xlYW4iPT1yPyJfX3Byb3RvX18iIT09dDpudWxsPT09dH07dmFyIFR0PWZ1bmN0aW9uKHQscil7dmFyIGU9dC5fX2RhdGFfXztyZXR1cm4gTnQocik/ZVsic3RyaW5nIj09dHlwZW9mIHI/InN0cmluZyI6Imhhc2giXTplLm1hcH0sQnQ9VHQ7dmFyIEN0PVR0O3ZhciBSdD1UdDt2YXIgTHQ9VHQ7dmFyIFZ0PWZ1bmN0aW9uKHQscil7dmFyIGU9THQodGhpcyx0KSxuPWUuc2l6ZTtyZXR1cm4gZS5zZXQodCxyKSx0aGlzLnNpemUrPWUuc2l6ZT09bj8wOjEsdGhpc30sV3Q9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBNdCxtYXA6bmV3KER0fHxVdCksc3RyaW5nOm5ldyBNdH19LHF0PWZ1bmN0aW9uKHQpe3ZhciByPUJ0KHRoaXMsdCkuZGVsZXRlKHQpO3JldHVybiB0aGlzLnNpemUtPXI/MTowLHJ9LEd0PWZ1bmN0aW9uKHQpe3JldHVybiBDdCh0aGlzLHQpLmdldCh0KX0sSHQ9ZnVuY3Rpb24odCl7cmV0dXJuIFJ0KHRoaXMsdCkuaGFzKHQpfSxKdD1WdDtmdW5jdGlvbiBLdCh0KXt2YXIgcj0tMSxlPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrcjxlOyl7dmFyIG49dFtyXTt0aGlzLnNldChuWzBdLG5bMV0pfX1LdC5wcm90b3R5cGUuY2xlYXI9V3QsS3QucHJvdG90eXBlLmRlbGV0ZT1xdCxLdC5wcm90b3R5cGUuZ2V0PUd0LEt0LnByb3RvdHlwZS5oYXM9SHQsS3QucHJvdG90eXBlLnNldD1KdDt2YXIgUXQ9S3QsWHQ9UXQ7ZnVuY3Rpb24gWXQodCxyKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ciYmImZ1bmN0aW9uIiE9dHlwZW9mIHIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgYSBmdW5jdGlvbiIpO3ZhciBlPWZ1bmN0aW9uKCl7dmFyIG49YXJndW1lbnRzLG89cj9yLmFwcGx5KHRoaXMsbik6blswXSx1PWUuY2FjaGU7aWYodS5oYXMobykpcmV0dXJuIHUuZ2V0KG8pO3ZhciBhPXQuYXBwbHkodGhpcyxuKTtyZXR1cm4gZS5jYWNoZT11LnNldChvLGEpfHx1LGF9O3JldHVybiBlLmNhY2hlPW5ldyhZdC5DYWNoZXx8WHQpLGV9WXQuQ2FjaGU9WHQ7dmFyIFp0PVl0O3ZhciB0cj0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxycj0vXFwoXFwpPy9nLGVyPWZ1bmN0aW9uKHQpe3ZhciByPVp0KHQsKGZ1bmN0aW9uKHQpe3JldHVybiA1MDA9PT1lLnNpemUmJmUuY2xlYXIoKSx0fSkpLGU9ci5jYWNoZTtyZXR1cm4gcn0oKGZ1bmN0aW9uKHQpe3ZhciByPVtdO3JldHVybiA0Nj09PXQuY2hhckNvZGVBdCgwKSYmci5wdXNoKCIiKSx0LnJlcGxhY2UodHIsKGZ1bmN0aW9uKHQsZSxuLG8pe3IucHVzaChuP28ucmVwbGFjZShyciwiJDEiKTplfHx0KX0pKSxyfSkpO3ZhciBucj1mdW5jdGlvbih0LHIpe2Zvcih2YXIgZT0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPUFycmF5KG4pOysrZTxuOylvW2VdPXIodFtlXSxlLHQpO3JldHVybiBvfSxvcj1ucix1cj11LGFyPVMsaXI9bD9sLnByb3RvdHlwZTp2b2lkIDAsY3I9aXI/aXIudG9TdHJpbmc6dm9pZCAwO3ZhciBmcj1mdW5jdGlvbiB0KHIpe2lmKCJzdHJpbmciPT10eXBlb2YgcilyZXR1cm4gcjtpZih1cihyKSlyZXR1cm4gb3Iocix0KSsiIjtpZihhcihyKSlyZXR1cm4gY3I/Y3IuY2FsbChyKToiIjt2YXIgZT1yKyIiO3JldHVybiIwIj09ZSYmMS9yPT0tSW5maW5pdHk/Ii0wIjplfSxscj1mcjt2YXIgdnI9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/IiI6bHIodCl9LHNyPXUscHI9RSxicj1lcix5cj12cjt2YXIgZHI9ZnVuY3Rpb24odCxyKXtyZXR1cm4gc3IodCk/dDpwcih0LHIpP1t0XTpicih5cih0KSl9LGhyPVM7dmFyIGpyPWZ1bmN0aW9uKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdHx8aHIodCkpcmV0dXJuIHQ7dmFyIHI9dCsiIjtyZXR1cm4iMCI9PXImJjEvdD09LUluZmluaXR5PyItMCI6cn0sZ3I9ZHIsX3I9anI7dmFyIE9yPWZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPTAsbj0ocj1ncihyLHQpKS5sZW5ndGg7bnVsbCE9dCYmZTxuOyl0PXRbX3IocltlKytdKV07cmV0dXJuIGUmJmU9PW4/dDp2b2lkIDB9LHdyPU9yO3ZhciBtcj1mdW5jdGlvbih0LHIsZSl7dmFyIG49bnVsbD09dD92b2lkIDA6d3IodCxyKTtyZXR1cm4gdm9pZCAwPT09bj9lOm59LEFyPVosU3I9ZnVuY3Rpb24oKXt0cnl7dmFyIHQ9QXIoT2JqZWN0LCJkZWZpbmVQcm9wZXJ0eSIpO3JldHVybiB0KHt9LCIiLHt9KSx0fWNhdGNoKHQpe319KCkseHI9U3I7dmFyIElyPWZ1bmN0aW9uKHQscixlKXsiX19wcm90b19fIj09ciYmeHI/eHIodCxyLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTplLHdyaXRhYmxlOiEwfSk6dFtyXT1lfSxQcj1Jcix6cj1qdCxFcj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciAkcj1mdW5jdGlvbih0LHIsZSl7dmFyIG49dFtyXTtFci5jYWxsKHQscikmJnpyKG4sZSkmJih2b2lkIDAhPT1lfHxyIGluIHQpfHxQcih0LHIsZSl9LEZyPS9eKD86MHxbMS05XVxkKikkLzt2YXIga3I9ZnVuY3Rpb24odCxyKXt2YXIgZT10eXBlb2YgdDtyZXR1cm4hIShyPW51bGw9PXI/OTAwNzE5OTI1NDc0MDk5MTpyKSYmKCJudW1iZXIiPT1lfHwic3ltYm9sIiE9ZSYmRnIudGVzdCh0KSkmJnQ+LTEmJnQlMT09MCYmdDxyfSxNcj0kcixVcj1kcixEcj1rcixOcj0kLFRyPWpyO3ZhciBCcj1mdW5jdGlvbih0LHIsZSxuKXtpZighTnIodCkpcmV0dXJuIHQ7Zm9yKHZhciBvPS0xLHU9KHI9VXIocix0KSkubGVuZ3RoLGE9dS0xLGk9dDtudWxsIT1pJiYrK288dTspe3ZhciBjPVRyKHJbb10pLGY9ZTtpZigiX19wcm90b19fIj09PWN8fCJjb25zdHJ1Y3RvciI9PT1jfHwicHJvdG90eXBlIj09PWMpcmV0dXJuIHQ7aWYobyE9YSl7dmFyIGw9aVtjXTt2b2lkIDA9PT0oZj1uP24obCxjLGkpOnZvaWQgMCkmJihmPU5yKGwpP2w6RHIocltvKzFdKT9bXTp7fSl9TXIoaSxjLGYpLGk9aVtjXX1yZXR1cm4gdH07dmFyIENyPWZ1bmN0aW9uKHQscixlKXtyZXR1cm4gbnVsbD09dD90OkJyKHQscixlKX0sUnI9e30sTHI9e2dldCBleHBvcnRzKCl7cmV0dXJuIFJyfSxzZXQgZXhwb3J0cyh0KXtScj10fX07dmFyIFZyPWZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoOysrZTxuJiYhMSE9PXIodFtlXSxlLHQpOyk7cmV0dXJuIHR9O3ZhciBXcj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24ocixlLG4pe2Zvcih2YXIgbz0tMSx1PU9iamVjdChyKSxhPW4ociksaT1hLmxlbmd0aDtpLS07KXt2YXIgYz1hW3Q/aTorK29dO2lmKCExPT09ZSh1W2NdLGMsdSkpYnJlYWt9cmV0dXJuIHJ9fSgpO3ZhciBxcj1mdW5jdGlvbih0LHIpe2Zvcih2YXIgZT0tMSxuPUFycmF5KHQpOysrZTx0OyluW2VdPXIoZSk7cmV0dXJuIG59LEdyPU8sSHI9dzt2YXIgSnI9ZnVuY3Rpb24odCl7cmV0dXJuIEhyKHQpJiYiW29iamVjdCBBcmd1bWVudHNdIj09R3IodCl9LEtyPXcsUXI9T2JqZWN0LnByb3RvdHlwZSxYcj1Rci5oYXNPd25Qcm9wZXJ0eSxZcj1Rci5wcm9wZXJ0eUlzRW51bWVyYWJsZSxacj1KcihmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP0pyOmZ1bmN0aW9uKHQpe3JldHVybiBLcih0KSYmWHIuY2FsbCh0LCJjYWxsZWUiKSYmIVlyLmNhbGwodCwiY2FsbGVlIil9LHRlPXt9O3ZhciByZT1mdW5jdGlvbigpe3JldHVybiExfTshZnVuY3Rpb24odCxyKXt2YXIgZT1mLG49cmUsbz1yJiYhci5ub2RlVHlwZSYmcix1PW8mJnQmJiF0Lm5vZGVUeXBlJiZ0LGE9dSYmdS5leHBvcnRzPT09bz9lLkJ1ZmZlcjp2b2lkIDAsaT0oYT9hLmlzQnVmZmVyOnZvaWQgMCl8fG47dC5leHBvcnRzPWl9KHtnZXQgZXhwb3J0cygpe3JldHVybiB0ZX0sc2V0IGV4cG9ydHModCl7dGU9dH19LHRlKTt2YXIgZWU9ZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PTkwMDcxOTkyNTQ3NDA5OTF9LG5lPU8sb2U9ZWUsdWU9dyxhZT17fTthZVsiW29iamVjdCBGbG9hdDMyQXJyYXldIl09YWVbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPWFlWyJbb2JqZWN0IEludDhBcnJheV0iXT1hZVsiW29iamVjdCBJbnQxNkFycmF5XSJdPWFlWyJbb2JqZWN0IEludDMyQXJyYXldIl09YWVbIltvYmplY3QgVWludDhBcnJheV0iXT1hZVsiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iXT1hZVsiW29iamVjdCBVaW50MTZBcnJheV0iXT1hZVsiW29iamVjdCBVaW50MzJBcnJheV0iXT0hMCxhZVsiW29iamVjdCBBcmd1bWVudHNdIl09YWVbIltvYmplY3QgQXJyYXldIl09YWVbIltvYmplY3QgQXJyYXlCdWZmZXJdIl09YWVbIltvYmplY3QgQm9vbGVhbl0iXT1hZVsiW29iamVjdCBEYXRhVmlld10iXT1hZVsiW29iamVjdCBEYXRlXSJdPWFlWyJbb2JqZWN0IEVycm9yXSJdPWFlWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPWFlWyJbb2JqZWN0IE1hcF0iXT1hZVsiW29iamVjdCBOdW1iZXJdIl09YWVbIltvYmplY3QgT2JqZWN0XSJdPWFlWyJbb2JqZWN0IFJlZ0V4cF0iXT1hZVsiW29iamVjdCBTZXRdIl09YWVbIltvYmplY3QgU3RyaW5nXSJdPWFlWyJbb2JqZWN0IFdlYWtNYXBdIl09ITE7dmFyIGllPWZ1bmN0aW9uKHQpe3JldHVybiB1ZSh0KSYmb2UodC5sZW5ndGgpJiYhIWFlW25lKHQpXX07dmFyIGNlPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gdChyKX19LGZlPXt9OyFmdW5jdGlvbih0LHIpe3ZhciBlPWEsbj1yJiYhci5ub2RlVHlwZSYmcixvPW4mJnQmJiF0Lm5vZGVUeXBlJiZ0LHU9byYmby5leHBvcnRzPT09biYmZS5wcm9jZXNzLGk9ZnVuY3Rpb24oKXt0cnl7dmFyIHQ9byYmby5yZXF1aXJlJiZvLnJlcXVpcmUoInV0aWwiKS50eXBlcztyZXR1cm4gdHx8dSYmdS5iaW5kaW5nJiZ1LmJpbmRpbmcoInV0aWwiKX1jYXRjaCh0KXt9fSgpO3QuZXhwb3J0cz1pfSh7Z2V0IGV4cG9ydHMoKXtyZXR1cm4gZmV9LHNldCBleHBvcnRzKHQpe2ZlPXR9fSxmZSk7dmFyIGxlPWllLHZlPWNlLHNlPWZlJiZmZS5pc1R5cGVkQXJyYXkscGU9c2U/dmUoc2UpOmxlLGJlPXFyLHllPVpyLGRlPXUsaGU9dGUsamU9a3IsZ2U9cGUsX2U9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgT2U9ZnVuY3Rpb24odCxyKXt2YXIgZT1kZSh0KSxuPSFlJiZ5ZSh0KSxvPSFlJiYhbiYmaGUodCksdT0hZSYmIW4mJiFvJiZnZSh0KSxhPWV8fG58fG98fHUsaT1hP2JlKHQubGVuZ3RoLFN0cmluZyk6W10sYz1pLmxlbmd0aDtmb3IodmFyIGYgaW4gdCkhciYmIV9lLmNhbGwodCxmKXx8YSYmKCJsZW5ndGgiPT1mfHxvJiYoIm9mZnNldCI9PWZ8fCJwYXJlbnQiPT1mKXx8dSYmKCJidWZmZXIiPT1mfHwiYnl0ZUxlbmd0aCI9PWZ8fCJieXRlT2Zmc2V0Ij09Zil8fGplKGYsYykpfHxpLnB1c2goZik7cmV0dXJuIGl9LHdlPU9iamVjdC5wcm90b3R5cGU7dmFyIG1lPWZ1bmN0aW9uKHQpe3ZhciByPXQmJnQuY29uc3RydWN0b3I7cmV0dXJuIHQ9PT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHx3ZSl9O3ZhciBBZT1mdW5jdGlvbih0LHIpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdChyKGUpKX19LFNlPUFlKE9iamVjdC5rZXlzLE9iamVjdCkseGU9bWUsSWU9U2UsUGU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgemU9ZnVuY3Rpb24odCl7aWYoIXhlKHQpKXJldHVybiBJZSh0KTt2YXIgcj1bXTtmb3IodmFyIGUgaW4gT2JqZWN0KHQpKVBlLmNhbGwodCxlKSYmImNvbnN0cnVjdG9yIiE9ZSYmci5wdXNoKGUpO3JldHVybiByfSxFZT1VLCRlPWVlO3ZhciBGZT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmJGUodC5sZW5ndGgpJiYhRWUodCl9LGtlPU9lLE1lPXplLFVlPUZlO3ZhciBEZT1mdW5jdGlvbih0KXtyZXR1cm4gVWUodCk/a2UodCk6TWUodCl9LE5lPVdyLFRlPURlO3ZhciBCZT1GZTt2YXIgQ2U9ZnVuY3Rpb24odCxyKXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtpZihudWxsPT1lKXJldHVybiBlO2lmKCFCZShlKSlyZXR1cm4gdChlLG4pO2Zvcih2YXIgbz1lLmxlbmd0aCx1PXI/bzotMSxhPU9iamVjdChlKTsocj91LS06Kyt1PG8pJiYhMSE9PW4oYVt1XSx1LGEpOyk7cmV0dXJuIGV9fSgoZnVuY3Rpb24odCxyKXtyZXR1cm4gdCYmTmUodCxyLFRlKX0pKTt2YXIgUmU9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LExlPVJlO3ZhciBWZT1WcixXZT1DZSxxZT1mdW5jdGlvbih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90OkxlfSxHZT11O3ZhciBIZT1mdW5jdGlvbih0LHIpe3JldHVybihHZSh0KT9WZTpXZSkodCxxZShyKSl9O0xyLmV4cG9ydHM9SGU7dmFyIEplPW8oUnIpLEtlPUZ0O3ZhciBRZT1GdCxYZT1rdCxZZT1RdDt2YXIgWmU9RnQsdG49ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPW5ldyBLZSx0aGlzLnNpemU9MH0scm49ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxlPXIuZGVsZXRlKHQpO3JldHVybiB0aGlzLnNpemU9ci5zaXplLGV9LGVuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmdldCh0KX0sbm49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfSxvbj1mdW5jdGlvbih0LHIpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoZSBpbnN0YW5jZW9mIFFlKXt2YXIgbj1lLl9fZGF0YV9fO2lmKCFYZXx8bi5sZW5ndGg8MTk5KXJldHVybiBuLnB1c2goW3Qscl0pLHRoaXMuc2l6ZT0rK2Uuc2l6ZSx0aGlzO2U9dGhpcy5fX2RhdGFfXz1uZXcgWWUobil9cmV0dXJuIGUuc2V0KHQsciksdGhpcy5zaXplPWUuc2l6ZSx0aGlzfTtmdW5jdGlvbiB1bih0KXt2YXIgcj10aGlzLl9fZGF0YV9fPW5ldyBaZSh0KTt0aGlzLnNpemU9ci5zaXplfXVuLnByb3RvdHlwZS5jbGVhcj10bix1bi5wcm90b3R5cGUuZGVsZXRlPXJuLHVuLnByb3RvdHlwZS5nZXQ9ZW4sdW4ucHJvdG90eXBlLmhhcz1ubix1bi5wcm90b3R5cGUuc2V0PW9uO3ZhciBhbj11bjt2YXIgY249UXQsZm49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KHQsIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iKSx0aGlzfSxsbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModCl9O2Z1bmN0aW9uIHZuKHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBjbjsrK3I8ZTspdGhpcy5hZGQodFtyXSl9dm4ucHJvdG90eXBlLmFkZD12bi5wcm90b3R5cGUucHVzaD1mbix2bi5wcm90b3R5cGUuaGFzPWxuO3ZhciBzbj12bixwbj1mdW5jdGlvbih0LHIpe2Zvcih2YXIgZT0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK2U8bjspaWYocih0W2VdLGUsdCkpcmV0dXJuITA7cmV0dXJuITF9LGJuPWZ1bmN0aW9uKHQscil7cmV0dXJuIHQuaGFzKHIpfTt2YXIgeW49ZnVuY3Rpb24odCxyLGUsbixvLHUpe3ZhciBhPTEmZSxpPXQubGVuZ3RoLGM9ci5sZW5ndGg7aWYoaSE9YyYmIShhJiZjPmkpKXJldHVybiExO3ZhciBmPXUuZ2V0KHQpLGw9dS5nZXQocik7aWYoZiYmbClyZXR1cm4gZj09ciYmbD09dDt2YXIgdj0tMSxzPSEwLHA9MiZlP25ldyBzbjp2b2lkIDA7Zm9yKHUuc2V0KHQsciksdS5zZXQocix0KTsrK3Y8aTspe3ZhciBiPXRbdl0seT1yW3ZdO2lmKG4pdmFyIGQ9YT9uKHksYix2LHIsdCx1KTpuKGIseSx2LHQscix1KTtpZih2b2lkIDAhPT1kKXtpZihkKWNvbnRpbnVlO3M9ITE7YnJlYWt9aWYocCl7aWYoIXBuKHIsKGZ1bmN0aW9uKHQscil7aWYoIWJuKHAscikmJihiPT09dHx8byhiLHQsZSxuLHUpKSlyZXR1cm4gcC5wdXNoKHIpfSkpKXtzPSExO2JyZWFrfX1lbHNlIGlmKGIhPT15JiYhbyhiLHksZSxuLHUpKXtzPSExO2JyZWFrfX1yZXR1cm4gdS5kZWxldGUodCksdS5kZWxldGUociksc30sZG49Zi5VaW50OEFycmF5O3ZhciBobj1mdW5jdGlvbih0KXt2YXIgcj0tMSxlPUFycmF5KHQuc2l6ZSk7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCxuKXtlWysrcl09W24sdF19KSksZX07dmFyIGpuPWZ1bmN0aW9uKHQpe3ZhciByPS0xLGU9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtlWysrcl09dH0pKSxlfSxnbj1kbixfbj1qdCxPbj15bix3bj1obixtbj1qbixBbj1sP2wucHJvdG90eXBlOnZvaWQgMCxTbj1Bbj9Bbi52YWx1ZU9mOnZvaWQgMDt2YXIgeG49ZnVuY3Rpb24odCxyLGUsbixvLHUsYSl7c3dpdGNoKGUpe2Nhc2UiW29iamVjdCBEYXRhVmlld10iOmlmKHQuYnl0ZUxlbmd0aCE9ci5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPXIuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLHI9ci5idWZmZXI7Y2FzZSJbb2JqZWN0IEFycmF5QnVmZmVyXSI6cmV0dXJuISh0LmJ5dGVMZW5ndGghPXIuYnl0ZUxlbmd0aHx8IXUobmV3IGduKHQpLG5ldyBnbihyKSkpO2Nhc2UiW29iamVjdCBCb29sZWFuXSI6Y2FzZSJbb2JqZWN0IERhdGVdIjpjYXNlIltvYmplY3QgTnVtYmVyXSI6cmV0dXJuIF9uKCt0LCtyKTtjYXNlIltvYmplY3QgRXJyb3JdIjpyZXR1cm4gdC5uYW1lPT1yLm5hbWUmJnQubWVzc2FnZT09ci5tZXNzYWdlO2Nhc2UiW29iamVjdCBSZWdFeHBdIjpjYXNlIltvYmplY3QgU3RyaW5nXSI6cmV0dXJuIHQ9PXIrIiI7Y2FzZSJbb2JqZWN0IE1hcF0iOnZhciBpPXduO2Nhc2UiW29iamVjdCBTZXRdIjp2YXIgYz0xJm47aWYoaXx8KGk9bW4pLHQuc2l6ZSE9ci5zaXplJiYhYylyZXR1cm4hMTt2YXIgZj1hLmdldCh0KTtpZihmKXJldHVybiBmPT1yO258PTIsYS5zZXQodCxyKTt2YXIgbD1PbihpKHQpLGkociksbixvLHUsYSk7cmV0dXJuIGEuZGVsZXRlKHQpLGw7Y2FzZSJbb2JqZWN0IFN5bWJvbF0iOmlmKFNuKXJldHVybiBTbi5jYWxsKHQpPT1Tbi5jYWxsKHIpfXJldHVybiExfTt2YXIgSW49ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9LTEsbj1yLmxlbmd0aCxvPXQubGVuZ3RoOysrZTxuOyl0W28rZV09cltlXTtyZXR1cm4gdH0sUG49SW4sem49dTt2YXIgRW49ZnVuY3Rpb24odCxyLGUpe3ZhciBuPXIodCk7cmV0dXJuIHpuKHQpP246UG4obixlKHQpKX07dmFyICRuPWZ1bmN0aW9uKCl7cmV0dXJuW119LEZuPWZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89MCx1PVtdOysrZTxuOyl7dmFyIGE9dFtlXTtyKGEsZSx0KSYmKHVbbysrXT1hKX1yZXR1cm4gdX0sa249JG4sTW49T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxVbj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLERuPVVuP2Z1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P1tdOih0PU9iamVjdCh0KSxGbihVbih0KSwoZnVuY3Rpb24ocil7cmV0dXJuIE1uLmNhbGwodCxyKX0pKSl9OmtuLE5uPUVuLFRuPURuLEJuPURlO3ZhciBDbj1mdW5jdGlvbih0KXtyZXR1cm4gTm4odCxCbixUbil9LFJuPUNuLExuPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIFZuPWZ1bmN0aW9uKHQscixlLG4sbyx1KXt2YXIgYT0xJmUsaT1Sbih0KSxjPWkubGVuZ3RoO2lmKGMhPVJuKHIpLmxlbmd0aCYmIWEpcmV0dXJuITE7Zm9yKHZhciBmPWM7Zi0tOyl7dmFyIGw9aVtmXTtpZighKGE/bCBpbiByOkxuLmNhbGwocixsKSkpcmV0dXJuITF9dmFyIHY9dS5nZXQodCkscz11LmdldChyKTtpZih2JiZzKXJldHVybiB2PT1yJiZzPT10O3ZhciBwPSEwO3Uuc2V0KHQsciksdS5zZXQocix0KTtmb3IodmFyIGI9YTsrK2Y8Yzspe3ZhciB5PXRbbD1pW2ZdXSxkPXJbbF07aWYobil2YXIgaD1hP24oZCx5LGwscix0LHUpOm4oeSxkLGwsdCxyLHUpO2lmKCEodm9pZCAwPT09aD95PT09ZHx8byh5LGQsZSxuLHUpOmgpKXtwPSExO2JyZWFrfWJ8fChiPSJjb25zdHJ1Y3RvciI9PWwpfWlmKHAmJiFiKXt2YXIgaj10LmNvbnN0cnVjdG9yLGc9ci5jb25zdHJ1Y3RvcjtqPT1nfHwhKCJjb25zdHJ1Y3RvciJpbiB0KXx8ISgiY29uc3RydWN0b3IiaW4gcil8fCJmdW5jdGlvbiI9PXR5cGVvZiBqJiZqIGluc3RhbmNlb2YgaiYmImZ1bmN0aW9uIj09dHlwZW9mIGcmJmcgaW5zdGFuY2VvZiBnfHwocD0hMSl9cmV0dXJuIHUuZGVsZXRlKHQpLHUuZGVsZXRlKHIpLHB9LFduPVooZiwiRGF0YVZpZXciKSxxbj1rdCxHbj1aKGYsIlByb21pc2UiKSxIbj1aKGYsIlNldCIpLEpuPVooZiwiV2Vha01hcCIpLEtuPU8sUW49QyxYbj0iW29iamVjdCBNYXBdIixZbj0iW29iamVjdCBQcm9taXNlXSIsWm49IltvYmplY3QgU2V0XSIsdG89IltvYmplY3QgV2Vha01hcF0iLHJvPSJbb2JqZWN0IERhdGFWaWV3XSIsZW89UW4oV24pLG5vPVFuKHFuKSxvbz1RbihHbiksdW89UW4oSG4pLGFvPVFuKEpuKSxpbz1LbjsoV24mJmlvKG5ldyBXbihuZXcgQXJyYXlCdWZmZXIoMSkpKSE9cm98fHFuJiZpbyhuZXcgcW4pIT1Ybnx8R24mJmlvKEduLnJlc29sdmUoKSkhPVlufHxIbiYmaW8obmV3IEhuKSE9Wm58fEpuJiZpbyhuZXcgSm4pIT10bykmJihpbz1mdW5jdGlvbih0KXt2YXIgcj1Lbih0KSxlPSJbb2JqZWN0IE9iamVjdF0iPT1yP3QuY29uc3RydWN0b3I6dm9pZCAwLG49ZT9RbihlKToiIjtpZihuKXN3aXRjaChuKXtjYXNlIGVvOnJldHVybiBybztjYXNlIG5vOnJldHVybiBYbjtjYXNlIG9vOnJldHVybiBZbjtjYXNlIHVvOnJldHVybiBabjtjYXNlIGFvOnJldHVybiB0b31yZXR1cm4gcn0pO3ZhciBjbz1pbyxmbz1hbixsbz15bix2bz14bixzbz1Wbixwbz1jbyxibz11LHlvPXRlLGhvPXBlLGpvPSJbb2JqZWN0IEFyZ3VtZW50c10iLGdvPSJbb2JqZWN0IEFycmF5XSIsX289IltvYmplY3QgT2JqZWN0XSIsT289T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgd289ZnVuY3Rpb24odCxyLGUsbixvLHUpe3ZhciBhPWJvKHQpLGk9Ym8ociksYz1hP2dvOnBvKHQpLGY9aT9nbzpwbyhyKSxsPShjPWM9PWpvP19vOmMpPT1fbyx2PShmPWY9PWpvP19vOmYpPT1fbyxzPWM9PWY7aWYocyYmeW8odCkpe2lmKCF5byhyKSlyZXR1cm4hMTthPSEwLGw9ITF9aWYocyYmIWwpcmV0dXJuIHV8fCh1PW5ldyBmbyksYXx8aG8odCk/bG8odCxyLGUsbixvLHUpOnZvKHQscixjLGUsbixvLHUpO2lmKCEoMSZlKSl7dmFyIHA9bCYmT28uY2FsbCh0LCJfX3dyYXBwZWRfXyIpLGI9diYmT28uY2FsbChyLCJfX3dyYXBwZWRfXyIpO2lmKHB8fGIpe3ZhciB5PXA/dC52YWx1ZSgpOnQsZD1iP3IudmFsdWUoKTpyO3JldHVybiB1fHwodT1uZXcgZm8pLG8oeSxkLGUsbix1KX19cmV0dXJuISFzJiYodXx8KHU9bmV3IGZvKSxzbyh0LHIsZSxuLG8sdSkpfSxtbz13O3ZhciBBbz1mdW5jdGlvbiB0KHIsZSxuLG8sdSl7cmV0dXJuIHI9PT1lfHwobnVsbD09cnx8bnVsbD09ZXx8IW1vKHIpJiYhbW8oZSk/ciE9ciYmZSE9ZTp3byhyLGUsbixvLHQsdSkpfSxTbz1hbix4bz1Bbzt2YXIgSW89JDt2YXIgUG89ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PXQmJiFJbyh0KX0sem89UG8sRW89RGU7dmFyICRvPWZ1bmN0aW9uKHQscil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiYoZVt0XT09PXImJih2b2lkIDAhPT1yfHx0IGluIE9iamVjdChlKSkpfX0sRm89ZnVuY3Rpb24odCxyLGUsbil7dmFyIG89ZS5sZW5ndGgsdT1vLGE9IW47aWYobnVsbD09dClyZXR1cm4hdTtmb3IodD1PYmplY3QodCk7by0tOyl7dmFyIGk9ZVtvXTtpZihhJiZpWzJdP2lbMV0hPT10W2lbMF1dOiEoaVswXWluIHQpKXJldHVybiExfWZvcig7KytvPHU7KXt2YXIgYz0oaT1lW29dKVswXSxmPXRbY10sbD1pWzFdO2lmKGEmJmlbMl0pe2lmKHZvaWQgMD09PWYmJiEoYyBpbiB0KSlyZXR1cm4hMX1lbHNle3ZhciB2PW5ldyBTbztpZihuKXZhciBzPW4oZixsLGMsdCxyLHYpO2lmKCEodm9pZCAwPT09cz94byhsLGYsMyxuLHYpOnMpKXJldHVybiExfX1yZXR1cm4hMH0sa289ZnVuY3Rpb24odCl7Zm9yKHZhciByPUVvKHQpLGU9ci5sZW5ndGg7ZS0tOyl7dmFyIG49cltlXSxvPXRbbl07cltlXT1bbixvLHpvKG8pXX1yZXR1cm4gcn0sTW89JG87dmFyIFVvPWRyLERvPVpyLE5vPXUsVG89a3IsQm89ZWUsQ289anI7dmFyIFJvPWZ1bmN0aW9uKHQscil7cmV0dXJuIG51bGwhPXQmJnIgaW4gT2JqZWN0KHQpfSxMbz1mdW5jdGlvbih0LHIsZSl7Zm9yKHZhciBuPS0xLG89KHI9VW8ocix0KSkubGVuZ3RoLHU9ITE7KytuPG87KXt2YXIgYT1DbyhyW25dKTtpZighKHU9bnVsbCE9dCYmZSh0LGEpKSlicmVhazt0PXRbYV19cmV0dXJuIHV8fCsrbiE9bz91OiEhKG89bnVsbD09dD8wOnQubGVuZ3RoKSYmQm8obykmJlRvKGEsbykmJihObyh0KXx8RG8odCkpfTt2YXIgVm89QW8sV289bXIscW89ZnVuY3Rpb24odCxyKXtyZXR1cm4gbnVsbCE9dCYmTG8odCxyLFJvKX0sR289RSxIbz1QbyxKbz0kbyxLbz1qcjt2YXIgUW89ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBudWxsPT1yP3ZvaWQgMDpyW3RdfX0sWG89T3I7dmFyIFlvPVFvLFpvPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gWG8ocix0KX19LHR1PUUscnU9anI7dmFyIGV1PWZ1bmN0aW9uKHQpe3ZhciByPWtvKHQpO3JldHVybiAxPT1yLmxlbmd0aCYmclswXVsyXT9NbyhyWzBdWzBdLHJbMF1bMV0pOmZ1bmN0aW9uKGUpe3JldHVybiBlPT09dHx8Rm8oZSx0LHIpfX0sbnU9ZnVuY3Rpb24odCxyKXtyZXR1cm4gR28odCkmJkhvKHIpP0pvKEtvKHQpLHIpOmZ1bmN0aW9uKGUpe3ZhciBuPVdvKGUsdCk7cmV0dXJuIHZvaWQgMD09PW4mJm49PT1yP3FvKGUsdCk6Vm8ocixuLDMpfX0sb3U9UmUsdXU9dSxhdT1mdW5jdGlvbih0KXtyZXR1cm4gdHUodCk/WW8ocnUodCkpOlpvKHQpfTt2YXIgaXU9ZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpudWxsPT10P291OiJvYmplY3QiPT10eXBlb2YgdD91dSh0KT9udSh0WzBdLHRbMV0pOmV1KHQpOmF1KHQpfSxjdT1DZSxmdT1GZTt2YXIgbHU9ZnVuY3Rpb24odCxyKXt2YXIgZT0tMSxuPWZ1KHQpP0FycmF5KHQubGVuZ3RoKTpbXTtyZXR1cm4gY3UodCwoZnVuY3Rpb24odCxvLHUpe25bKytlXT1yKHQsbyx1KX0pKSxufSx2dT1ucixzdT1pdSxwdT1sdSxidT11O3ZhciB5dT1mdW5jdGlvbih0LHIpe3JldHVybihidSh0KT92dTpwdSkodCxzdShyKSl9LGR1PU8saHU9dSxqdT13O3ZhciBndT1mdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHR8fCFodSh0KSYmanUodCkmJiJbb2JqZWN0IFN0cmluZ10iPT1kdSh0KX0sX3U9UW8oImxlbmd0aCIpLE91PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTt2YXIgd3U9ZnVuY3Rpb24odCl7cmV0dXJuIE91LnRlc3QodCl9LG11PSJcXHVkODAwLVxcdWRmZmYiLEF1PSJbIittdSsiXSIsU3U9IltcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZdIix4dT0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixJdT0iW14iK211KyJdIixQdT0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIsenU9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLEV1PSIoPzoiK1N1KyJ8Iit4dSsiKSIrIj8iLCR1PSJbXFx1ZmUwZVxcdWZlMGZdPyIsRnU9JHUrRXUrKCIoPzpcXHUyMDBkKD86IitbSXUsUHUsenVdLmpvaW4oInwiKSsiKSIrJHUrRXUrIikqIiksa3U9Iig/OiIrW0l1K1N1KyI/IixTdSxQdSx6dSxBdV0uam9pbigifCIpKyIpIixNdT1SZWdFeHAoeHUrIig/PSIreHUrIil8IitrdStGdSwiZyIpO3ZhciBVdT1fdSxEdT13dSxOdT1mdW5jdGlvbih0KXtmb3IodmFyIHI9TXUubGFzdEluZGV4PTA7TXUudGVzdCh0KTspKytyO3JldHVybiByfTt2YXIgVHU9emUsQnU9Y28sQ3U9RmUsUnU9Z3UsTHU9ZnVuY3Rpb24odCl7cmV0dXJuIER1KHQpP051KHQpOlV1KHQpfTt2YXIgVnU9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gMDtpZihDdSh0KSlyZXR1cm4gUnUodCk/THUodCk6dC5sZW5ndGg7dmFyIHI9QnUodCk7cmV0dXJuIltvYmplY3QgTWFwXSI9PXJ8fCJbb2JqZWN0IFNldF0iPT1yP3Quc2l6ZTpUdSh0KS5sZW5ndGh9LFd1PVM7dmFyIHF1PWZ1bmN0aW9uKHQscixlKXtmb3IodmFyIG49LTEsbz10Lmxlbmd0aDsrK248bzspe3ZhciB1PXRbbl0sYT1yKHUpO2lmKG51bGwhPWEmJih2b2lkIDA9PT1pP2E9PWEmJiFXdShhKTplKGEsaSkpKXZhciBpPWEsYz11fXJldHVybiBjfSxHdT1mdW5jdGlvbih0LHIpe3JldHVybiB0PnJ9LEh1PVJlO3ZhciBKdT1mdW5jdGlvbih0KXtyZXR1cm4gdCYmdC5sZW5ndGg/cXUodCxIdSxHdSk6dm9pZCAwfTt2YXIgS3U9ZnVuY3Rpb24odCl7dmFyIHI9bnVsbD09dD8wOnQubGVuZ3RoO3JldHVybiByP3Rbci0xXTp2b2lkIDB9LFF1PW5yO3ZhciBYdT1mdW5jdGlvbih0LHIpe3JldHVybiBRdShyLChmdW5jdGlvbihyKXtyZXR1cm4gdFtyXX0pKX0sWXU9RGU7dmFyIFp1PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P1tdOlh1KHQsWXUodCkpfTt2YXIgdGE9Q2U7dmFyIHJhPWZ1bmN0aW9uKHQscixlLG4pe2Zvcih2YXIgbz0tMSx1PW51bGw9PXQ/MDp0Lmxlbmd0aDsrK288dTspe3ZhciBhPXRbb107cihuLGEsZShhKSx0KX1yZXR1cm4gbn0sZWE9ZnVuY3Rpb24odCxyLGUsbil7cmV0dXJuIHRhKHQsKGZ1bmN0aW9uKHQsbyx1KXtyKG4sdCxlKHQpLHUpfSkpLG59LG5hPWl1LG9hPXU7dmFyIHVhPUlyLGFhPWZ1bmN0aW9uKHQscil7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIG89b2EoZSk/cmE6ZWEsdT1yP3IoKTp7fTtyZXR1cm4gbyhlLHQsbmEobiksdSl9fSxpYT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGNhPWFhKChmdW5jdGlvbih0LHIsZSl7aWEuY2FsbCh0LGUpP3RbZV0ucHVzaChyKTp1YSh0LGUsW3JdKX0pKTt2YXIgZmE9ZnVuY3Rpb24odCxyLGUpe3ZhciBuPS0xLG89dC5sZW5ndGg7cjwwJiYocj0tcj5vPzA6bytyKSwoZT1lPm8/bzplKTwwJiYoZSs9byksbz1yPmU/MDplLXI+Pj4wLHI+Pj49MDtmb3IodmFyIHU9QXJyYXkobyk7KytuPG87KXVbbl09dFtuK3JdO3JldHVybiB1fSxsYT0vXHMvO3ZhciB2YT1mdW5jdGlvbih0KXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZsYS50ZXN0KHQuY2hhckF0KHIpKTspO3JldHVybiByfSxzYT0vXlxzKy87dmFyIHBhPWZ1bmN0aW9uKHQpe3JldHVybiB0P3Quc2xpY2UoMCx2YSh0KSsxKS5yZXBsYWNlKHNhLCIiKTp0fSxiYT1wYSx5YT0kLGRhPVMsaGE9L15bLStdMHhbMC05YS1mXSskL2ksamE9L14wYlswMV0rJC9pLGdhPS9eMG9bMC03XSskL2ksX2E9cGFyc2VJbnQ7dmFyIE9hPWZ1bmN0aW9uKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZihkYSh0KSlyZXR1cm4gTmFOO2lmKHlhKHQpKXt2YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgdC52YWx1ZU9mP3QudmFsdWVPZigpOnQ7dD15YShyKT9yKyIiOnJ9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9YmEodCk7dmFyIGU9amEudGVzdCh0KTtyZXR1cm4gZXx8Z2EudGVzdCh0KT9fYSh0LnNsaWNlKDIpLGU/Mjo4KTpoYS50ZXN0KHQpP05hTjordH0sd2E9MS8wO3ZhciBtYT1mdW5jdGlvbih0KXtyZXR1cm4gdD8odD1PYSh0KSk9PT13YXx8dD09PS0xLzA/MTc5NzY5MzEzNDg2MjMxNTdlMjkyKih0PDA/LTE6MSk6dD09dD90OjA6MD09PXQ/dDowfTt2YXIgQWE9ZnVuY3Rpb24odCl7dmFyIHI9bWEodCksZT1yJTE7cmV0dXJuIHI9PXI/ZT9yLWU6cjowfSxTYT1mYSx4YT1BYTt2YXIgSWE9ZnVuY3Rpb24odCxyLGUpe3JldHVybiB0JiZ0Lmxlbmd0aD8ocj1lfHx2b2lkIDA9PT1yPzE6eGEociksU2EodCwwLHI8MD8wOnIpKTpbXX0sUGE9QXJyYXkucHJvdG90eXBlLmpvaW47dmFyIHphPWZ1bmN0aW9uKHQscil7cmV0dXJuIG51bGw9PXQ/IiI6UGEuY2FsbCh0LHIpfSxFYT1pdSwkYT1GZSxGYT1EZTt2YXIga2E9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHIsZSxuKXt2YXIgbz1PYmplY3Qocik7aWYoISRhKHIpKXt2YXIgdT1FYShlKTtyPUZhKHIpLGU9ZnVuY3Rpb24odCl7cmV0dXJuIHUob1t0XSx0LG8pfX12YXIgYT10KHIsZSxuKTtyZXR1cm4gYT4tMT9vW3U/clthXTphXTp2b2lkIDB9fTt2YXIgTWE9ZnVuY3Rpb24odCxyLGUsbil7Zm9yKHZhciBvPXQubGVuZ3RoLHU9ZSsobj8xOi0xKTtuP3UtLTorK3U8bzspaWYocih0W3VdLHUsdCkpcmV0dXJuIHU7cmV0dXJuLTF9LFVhPU1hLERhPWl1LE5hPUFhLFRhPU1hdGgubWF4O3ZhciBCYT1rYSgoZnVuY3Rpb24odCxyLGUpe3ZhciBuPW51bGw9PXQ/MDp0Lmxlbmd0aDtpZighbilyZXR1cm4tMTt2YXIgbz1udWxsPT1lPzA6TmEoZSk7cmV0dXJuIG88MCYmKG89VGEobitvLDApKSxVYSh0LERhKHIpLG8pfSkpLENhPVpyLFJhPXUsTGE9bD9sLmlzQ29uY2F0U3ByZWFkYWJsZTp2b2lkIDA7dmFyIFZhPUluLFdhPWZ1bmN0aW9uKHQpe3JldHVybiBSYSh0KXx8Q2EodCl8fCEhKExhJiZ0JiZ0W0xhXSl9O3ZhciBxYT1mdW5jdGlvbiB0KHIsZSxuLG8sdSl7dmFyIGE9LTEsaT1yLmxlbmd0aDtmb3Iobnx8KG49V2EpLHV8fCh1PVtdKTsrK2E8aTspe3ZhciBjPXJbYV07ZT4wJiZuKGMpP2U+MT90KGMsZS0xLG4sbyx1KTpWYSh1LGMpOm98fCh1W3UubGVuZ3RoXT1jKX1yZXR1cm4gdX07dmFyIEdhPVM7dmFyIEhhPWZ1bmN0aW9uKHQscil7aWYodCE9PXIpe3ZhciBlPXZvaWQgMCE9PXQsbj1udWxsPT09dCxvPXQ9PXQsdT1HYSh0KSxhPXZvaWQgMCE9PXIsaT1udWxsPT09cixjPXI9PXIsZj1HYShyKTtpZighaSYmIWYmJiF1JiZ0PnJ8fHUmJmEmJmMmJiFpJiYhZnx8biYmYSYmY3x8IWUmJmN8fCFvKXJldHVybiAxO2lmKCFuJiYhdSYmIWYmJnQ8cnx8ZiYmZSYmbyYmIW4mJiF1fHxpJiZlJiZvfHwhYSYmb3x8IWMpcmV0dXJuLTF9cmV0dXJuIDB9O3ZhciBKYT1ucixLYT1PcixRYT1pdSxYYT1sdSxZYT1mdW5jdGlvbih0LHIpe3ZhciBlPXQubGVuZ3RoO2Zvcih0LnNvcnQocik7ZS0tOyl0W2VdPXRbZV0udmFsdWU7cmV0dXJuIHR9LFphPWNlLHRpPWZ1bmN0aW9uKHQscixlKXtmb3IodmFyIG49LTEsbz10LmNyaXRlcmlhLHU9ci5jcml0ZXJpYSxhPW8ubGVuZ3RoLGk9ZS5sZW5ndGg7KytuPGE7KXt2YXIgYz1IYShvW25dLHVbbl0pO2lmKGMpcmV0dXJuIG4+PWk/YzpjKigiZGVzYyI9PWVbbl0/LTE6MSl9cmV0dXJuIHQuaW5kZXgtci5pbmRleH0scmk9UmUsZWk9dTt2YXIgbmk9ZnVuY3Rpb24odCxyLGUpe3I9ci5sZW5ndGg/SmEociwoZnVuY3Rpb24odCl7cmV0dXJuIGVpKHQpP2Z1bmN0aW9uKHIpe3JldHVybiBLYShyLDE9PT10Lmxlbmd0aD90WzBdOnQpfTp0fSkpOltyaV07dmFyIG49LTE7cj1KYShyLFphKFFhKSk7dmFyIG89WGEodCwoZnVuY3Rpb24odCxlLG8pe3JldHVybntjcml0ZXJpYTpKYShyLChmdW5jdGlvbihyKXtyZXR1cm4gcih0KX0pKSxpbmRleDorK24sdmFsdWU6dH19KSk7cmV0dXJuIFlhKG8sKGZ1bmN0aW9uKHQscil7cmV0dXJuIHRpKHQscixlKX0pKX07dmFyIG9pPWZ1bmN0aW9uKHQscixlKXtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gdC5jYWxsKHIpO2Nhc2UgMTpyZXR1cm4gdC5jYWxsKHIsZVswXSk7Y2FzZSAyOnJldHVybiB0LmNhbGwocixlWzBdLGVbMV0pO2Nhc2UgMzpyZXR1cm4gdC5jYWxsKHIsZVswXSxlWzFdLGVbMl0pfXJldHVybiB0LmFwcGx5KHIsZSl9LHVpPU1hdGgubWF4O3ZhciBhaT1mdW5jdGlvbih0LHIsZSl7cmV0dXJuIHI9dWkodm9pZCAwPT09cj90Lmxlbmd0aC0xOnIsMCksZnVuY3Rpb24oKXtmb3IodmFyIG49YXJndW1lbnRzLG89LTEsdT11aShuLmxlbmd0aC1yLDApLGE9QXJyYXkodSk7KytvPHU7KWFbb109bltyK29dO289LTE7Zm9yKHZhciBpPUFycmF5KHIrMSk7KytvPHI7KWlbb109bltvXTtyZXR1cm4gaVtyXT1lKGEpLG9pKHQsdGhpcyxpKX19O3ZhciBpaT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19LGNpPVNyLGZpPWNpP2Z1bmN0aW9uKHQscil7cmV0dXJuIGNpKHQsInRvU3RyaW5nIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsdmFsdWU6aWkociksd3JpdGFibGU6ITB9KX06UmUsbGk9RGF0ZS5ub3c7dmFyIHZpPWZ1bmN0aW9uKHQpe3ZhciByPTAsZT0wO3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWxpKCksbz0xNi0obi1lKTtpZihlPW4sbz4wKXtpZigrK3I+PTgwMClyZXR1cm4gYXJndW1lbnRzWzBdfWVsc2Ugcj0wO3JldHVybiB0LmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfX0oZmkpLHNpPVJlLHBpPWFpLGJpPXZpO3ZhciB5aT1qdCxkaT1GZSxoaT1rcixqaT0kO3ZhciBnaT1xYSxfaT1uaSxPaT1mdW5jdGlvbih0LHIsZSl7aWYoIWppKGUpKXJldHVybiExO3ZhciBuPXR5cGVvZiByO3JldHVybiEhKCJudW1iZXIiPT1uP2RpKGUpJiZoaShyLGUubGVuZ3RoKToic3RyaW5nIj09biYmciBpbiBlKSYmeWkoZVtyXSx0KX0sd2k9ZnVuY3Rpb24odCxyKXtyZXR1cm4gYmkocGkodCxyLHNpKSx0KyIiKX0oKGZ1bmN0aW9uKHQscil7aWYobnVsbD09dClyZXR1cm5bXTt2YXIgZT1yLmxlbmd0aDtyZXR1cm4gZT4xJiZPaSh0LHJbMF0sclsxXSk/cj1bXTplPjImJk9pKHJbMF0sclsxXSxyWzJdKSYmKHI9W3JbMF1dKSxfaSh0LGdpKHIsMSksW10pfSkpLG1pPSRyLEFpPUlyO3ZhciBTaT1mdW5jdGlvbih0LHIsZSxuKXt2YXIgbz0hZTtlfHwoZT17fSk7Zm9yKHZhciB1PS0xLGE9ci5sZW5ndGg7Kyt1PGE7KXt2YXIgaT1yW3VdLGM9bj9uKGVbaV0sdFtpXSxpLGUsdCk6dm9pZCAwO3ZvaWQgMD09PWMmJihjPXRbaV0pLG8/QWkoZSxpLGMpOm1pKGUsaSxjKX1yZXR1cm4gZX0seGk9U2ksSWk9RGU7dmFyIFBpPWZ1bmN0aW9uKHQscil7cmV0dXJuIHQmJnhpKHIsSWkociksdCl9O3ZhciB6aT0kLEVpPW1lLCRpPWZ1bmN0aW9uKHQpe3ZhciByPVtdO2lmKG51bGwhPXQpZm9yKHZhciBlIGluIE9iamVjdCh0KSlyLnB1c2goZSk7cmV0dXJuIHJ9LEZpPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIGtpPU9lLE1pPWZ1bmN0aW9uKHQpe2lmKCF6aSh0KSlyZXR1cm4gJGkodCk7dmFyIHI9RWkodCksZT1bXTtmb3IodmFyIG4gaW4gdCkoImNvbnN0cnVjdG9yIiE9bnx8IXImJkZpLmNhbGwodCxuKSkmJmUucHVzaChuKTtyZXR1cm4gZX0sVWk9RmU7dmFyIERpPWZ1bmN0aW9uKHQpe3JldHVybiBVaSh0KT9raSh0LCEwKTpNaSh0KX0sTmk9U2ksVGk9RGk7dmFyIEJpPWZ1bmN0aW9uKHQscil7cmV0dXJuIHQmJk5pKHIsVGkociksdCl9LENpPXt9OyFmdW5jdGlvbih0LHIpe3ZhciBlPWYsbj1yJiYhci5ub2RlVHlwZSYmcixvPW4mJnQmJiF0Lm5vZGVUeXBlJiZ0LHU9byYmby5leHBvcnRzPT09bj9lLkJ1ZmZlcjp2b2lkIDAsYT11P3UuYWxsb2NVbnNhZmU6dm9pZCAwO3QuZXhwb3J0cz1mdW5jdGlvbih0LHIpe2lmKHIpcmV0dXJuIHQuc2xpY2UoKTt2YXIgZT10Lmxlbmd0aCxuPWE/YShlKTpuZXcgdC5jb25zdHJ1Y3RvcihlKTtyZXR1cm4gdC5jb3B5KG4pLG59fSh7Z2V0IGV4cG9ydHMoKXtyZXR1cm4gQ2l9LHNldCBleHBvcnRzKHQpe0NpPXR9fSxDaSk7dmFyIFJpPWZ1bmN0aW9uKHQscil7dmFyIGU9LTEsbj10Lmxlbmd0aDtmb3Iocnx8KHI9QXJyYXkobikpOysrZTxuOylyW2VdPXRbZV07cmV0dXJuIHJ9LExpPVNpLFZpPURuO3ZhciBXaT1mdW5jdGlvbih0LHIpe3JldHVybiBMaSh0LFZpKHQpLHIpfSxxaT1BZShPYmplY3QuZ2V0UHJvdG90eXBlT2YsT2JqZWN0KSxHaT1JbixIaT1xaSxKaT1EbixLaT0kbixRaT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzP2Z1bmN0aW9uKHQpe2Zvcih2YXIgcj1bXTt0OylHaShyLEppKHQpKSx0PUhpKHQpO3JldHVybiByfTpLaSxYaT1TaSxZaT1RaTt2YXIgWmk9ZnVuY3Rpb24odCxyKXtyZXR1cm4gWGkodCxZaSh0KSxyKX0sdGM9RW4scmM9UWksZWM9RGk7dmFyIG5jPWZ1bmN0aW9uKHQpe3JldHVybiB0Yyh0LGVjLHJjKX0sb2M9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgdWM9ZnVuY3Rpb24odCl7dmFyIHI9dC5sZW5ndGgsZT1uZXcgdC5jb25zdHJ1Y3RvcihyKTtyZXR1cm4gciYmInN0cmluZyI9PXR5cGVvZiB0WzBdJiZvYy5jYWxsKHQsImluZGV4IikmJihlLmluZGV4PXQuaW5kZXgsZS5pbnB1dD10LmlucHV0KSxlfSxhYz1kbjt2YXIgaWM9ZnVuY3Rpb24odCl7dmFyIHI9bmV3IHQuY29uc3RydWN0b3IodC5ieXRlTGVuZ3RoKTtyZXR1cm4gbmV3IGFjKHIpLnNldChuZXcgYWModCkpLHJ9LGNjPWljO3ZhciBmYz1mdW5jdGlvbih0LHIpe3ZhciBlPXI/Y2ModC5idWZmZXIpOnQuYnVmZmVyO3JldHVybiBuZXcgdC5jb25zdHJ1Y3RvcihlLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpfSxsYz0vXHcqJC87dmFyIHZjPWZ1bmN0aW9uKHQpe3ZhciByPW5ldyB0LmNvbnN0cnVjdG9yKHQuc291cmNlLGxjLmV4ZWModCkpO3JldHVybiByLmxhc3RJbmRleD10Lmxhc3RJbmRleCxyfSxzYz1sP2wucHJvdG90eXBlOnZvaWQgMCxwYz1zYz9zYy52YWx1ZU9mOnZvaWQgMDt2YXIgYmM9aWM7dmFyIHljPWljLGRjPWZjLGhjPXZjLGpjPWZ1bmN0aW9uKHQpe3JldHVybiBwYz9PYmplY3QocGMuY2FsbCh0KSk6e319LGdjPWZ1bmN0aW9uKHQscil7dmFyIGU9cj9iYyh0LmJ1ZmZlcik6dC5idWZmZXI7cmV0dXJuIG5ldyB0LmNvbnN0cnVjdG9yKGUsdC5ieXRlT2Zmc2V0LHQubGVuZ3RoKX07dmFyIF9jPWZ1bmN0aW9uKHQscixlKXt2YXIgbj10LmNvbnN0cnVjdG9yO3N3aXRjaChyKXtjYXNlIltvYmplY3QgQXJyYXlCdWZmZXJdIjpyZXR1cm4geWModCk7Y2FzZSJbb2JqZWN0IEJvb2xlYW5dIjpjYXNlIltvYmplY3QgRGF0ZV0iOnJldHVybiBuZXcgbigrdCk7Y2FzZSJbb2JqZWN0IERhdGFWaWV3XSI6cmV0dXJuIGRjKHQsZSk7Y2FzZSJbb2JqZWN0IEZsb2F0MzJBcnJheV0iOmNhc2UiW29iamVjdCBGbG9hdDY0QXJyYXldIjpjYXNlIltvYmplY3QgSW50OEFycmF5XSI6Y2FzZSJbb2JqZWN0IEludDE2QXJyYXldIjpjYXNlIltvYmplY3QgSW50MzJBcnJheV0iOmNhc2UiW29iamVjdCBVaW50OEFycmF5XSI6Y2FzZSJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSI6Y2FzZSJbb2JqZWN0IFVpbnQxNkFycmF5XSI6Y2FzZSJbb2JqZWN0IFVpbnQzMkFycmF5XSI6cmV0dXJuIGdjKHQsZSk7Y2FzZSJbb2JqZWN0IE1hcF0iOmNhc2UiW29iamVjdCBTZXRdIjpyZXR1cm4gbmV3IG47Y2FzZSJbb2JqZWN0IE51bWJlcl0iOmNhc2UiW29iamVjdCBTdHJpbmddIjpyZXR1cm4gbmV3IG4odCk7Y2FzZSJbb2JqZWN0IFJlZ0V4cF0iOnJldHVybiBoYyh0KTtjYXNlIltvYmplY3QgU3ltYm9sXSI6cmV0dXJuIGpjKHQpfX0sT2M9JCx3Yz1PYmplY3QuY3JlYXRlLG1jPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gZnVuY3Rpb24ocil7aWYoIU9jKHIpKXJldHVybnt9O2lmKHdjKXJldHVybiB3YyhyKTt0LnByb3RvdHlwZT1yO3ZhciBlPW5ldyB0O3JldHVybiB0LnByb3RvdHlwZT12b2lkIDAsZX19KCksQWM9cWksU2M9bWU7dmFyIHhjPWZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0LmNvbnN0cnVjdG9yfHxTYyh0KT97fTptYyhBYyh0KSl9LEljPWNvLFBjPXc7dmFyIHpjPWZ1bmN0aW9uKHQpe3JldHVybiBQYyh0KSYmIltvYmplY3QgTWFwXSI9PUljKHQpfSxFYz1jZSwkYz1mZSYmZmUuaXNNYXAsRmM9JGM/RWMoJGMpOnpjLGtjPWNvLE1jPXc7dmFyIFVjPWZ1bmN0aW9uKHQpe3JldHVybiBNYyh0KSYmIltvYmplY3QgU2V0XSI9PWtjKHQpfSxEYz1jZSxOYz1mZSYmZmUuaXNTZXQsVGM9TmM/RGMoTmMpOlVjLEJjPWFuLENjPVZyLFJjPSRyLExjPVBpLFZjPUJpLFdjPUNpLHFjPVJpLEdjPVdpLEhjPVppLEpjPUNuLEtjPW5jLFFjPWNvLFhjPXVjLFljPV9jLFpjPXhjLHRmPXUscmY9dGUsZWY9RmMsbmY9JCxvZj1UYyx1Zj1EZSxhZj1EaSxjZj0iW29iamVjdCBBcmd1bWVudHNdIixmZj0iW29iamVjdCBGdW5jdGlvbl0iLGxmPSJbb2JqZWN0IE9iamVjdF0iLHZmPXt9O3ZmW2NmXT12ZlsiW29iamVjdCBBcnJheV0iXT12ZlsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT12ZlsiW29iamVjdCBEYXRhVmlld10iXT12ZlsiW29iamVjdCBCb29sZWFuXSJdPXZmWyJbb2JqZWN0IERhdGVdIl09dmZbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPXZmWyJbb2JqZWN0IEZsb2F0NjRBcnJheV0iXT12ZlsiW29iamVjdCBJbnQ4QXJyYXldIl09dmZbIltvYmplY3QgSW50MTZBcnJheV0iXT12ZlsiW29iamVjdCBJbnQzMkFycmF5XSJdPXZmWyJbb2JqZWN0IE1hcF0iXT12ZlsiW29iamVjdCBOdW1iZXJdIl09dmZbbGZdPXZmWyJbb2JqZWN0IFJlZ0V4cF0iXT12ZlsiW29iamVjdCBTZXRdIl09dmZbIltvYmplY3QgU3RyaW5nXSJdPXZmWyJbb2JqZWN0IFN5bWJvbF0iXT12ZlsiW29iamVjdCBVaW50OEFycmF5XSJdPXZmWyJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSJdPXZmWyJbb2JqZWN0IFVpbnQxNkFycmF5XSJdPXZmWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLHZmWyJbb2JqZWN0IEVycm9yXSJdPXZmW2ZmXT12ZlsiW29iamVjdCBXZWFrTWFwXSJdPSExO3ZhciBzZj1mdW5jdGlvbiB0KHIsZSxuLG8sdSxhKXt2YXIgaSxjPTEmZSxmPTImZSxsPTQmZTtpZihuJiYoaT11P24ocixvLHUsYSk6bihyKSksdm9pZCAwIT09aSlyZXR1cm4gaTtpZighbmYocikpcmV0dXJuIHI7dmFyIHY9dGYocik7aWYodil7aWYoaT1YYyhyKSwhYylyZXR1cm4gcWMocixpKX1lbHNle3ZhciBzPVFjKHIpLHA9cz09ZmZ8fCJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSI9PXM7aWYocmYocikpcmV0dXJuIFdjKHIsYyk7aWYocz09bGZ8fHM9PWNmfHxwJiYhdSl7aWYoaT1mfHxwP3t9OlpjKHIpLCFjKXJldHVybiBmP0hjKHIsVmMoaSxyKSk6R2MocixMYyhpLHIpKX1lbHNle2lmKCF2ZltzXSlyZXR1cm4gdT9yOnt9O2k9WWMocixzLGMpfX1hfHwoYT1uZXcgQmMpO3ZhciBiPWEuZ2V0KHIpO2lmKGIpcmV0dXJuIGI7YS5zZXQocixpKSxvZihyKT9yLmZvckVhY2goKGZ1bmN0aW9uKG8pe2kuYWRkKHQobyxlLG4sbyxyLGEpKX0pKTplZihyKSYmci5mb3JFYWNoKChmdW5jdGlvbihvLHUpe2kuc2V0KHUsdChvLGUsbix1LHIsYSkpfSkpO3ZhciB5PXY/dm9pZCAwOihsP2Y/S2M6SmM6Zj9hZjp1Zikocik7cmV0dXJuIENjKHl8fHIsKGZ1bmN0aW9uKG8sdSl7eSYmKG89clt1PW9dKSxSYyhpLHUsdChvLGUsbix1LHIsYSkpfSkpLGl9LHBmPXNmO3ZhciBiZj1mdW5jdGlvbih0KXtyZXR1cm4gcGYodCw1KX0seWY9ZmE7dmFyIGRmPWZ1bmN0aW9uKHQscixlKXt2YXIgbj10Lmxlbmd0aDtyZXR1cm4gZT12b2lkIDA9PT1lP246ZSwhciYmZT49bj90OnlmKHQscixlKX07dmFyIGhmPU1hLGpmPWZ1bmN0aW9uKHQpe3JldHVybiB0IT10fSxnZj1mdW5jdGlvbih0LHIsZSl7Zm9yKHZhciBuPWUtMSxvPXQubGVuZ3RoOysrbjxvOylpZih0W25dPT09cilyZXR1cm4gbjtyZXR1cm4tMX07dmFyIF9mPWZ1bmN0aW9uKHQscixlKXtyZXR1cm4gcj09cj9nZih0LHIsZSk6aGYodCxqZixlKX0sT2Y9X2Y7dmFyIHdmPWZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLSYmT2Yocix0W2VdLDApPi0xOyk7cmV0dXJuIGV9LG1mPV9mO3ZhciBBZj1mdW5jdGlvbih0LHIpe2Zvcih2YXIgZT0tMSxuPXQubGVuZ3RoOysrZTxuJiZtZihyLHRbZV0sMCk+LTE7KTtyZXR1cm4gZX07dmFyIFNmPWZ1bmN0aW9uKHQpe3JldHVybiB0LnNwbGl0KCIiKX0seGY9IlxcdWQ4MDAtXFx1ZGZmZiIsSWY9IlsiK3hmKyJdIixQZj0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLHpmPSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLEVmPSJbXiIreGYrIl0iLCRmPSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixGZj0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsa2Y9Iig/OiIrUGYrInwiK3pmKyIpIisiPyIsTWY9IltcXHVmZTBlXFx1ZmUwZl0/IixVZj1NZitrZisoIig/OlxcdTIwMGQoPzoiK1tFZiwkZixGZl0uam9pbigifCIpKyIpIitNZitrZisiKSoiKSxEZj0iKD86IitbRWYrUGYrIj8iLFBmLCRmLEZmLElmXS5qb2luKCJ8IikrIikiLE5mPVJlZ0V4cCh6ZisiKD89Iit6ZisiKXwiK0RmK1VmLCJnIik7dmFyIFRmPVNmLEJmPXd1LENmPWZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hdGNoKE5mKXx8W119O3ZhciBSZj1mcixMZj1wYSxWZj1kZixXZj13ZixxZj1BZixHZj1mdW5jdGlvbih0KXtyZXR1cm4gQmYodCk/Q2YodCk6VGYodCl9LEhmPXZyO3ZhciBKZj1mdW5jdGlvbih0LHIsZSl7aWYoKHQ9SGYodCkpJiYoZXx8dm9pZCAwPT09cikpcmV0dXJuIExmKHQpO2lmKCF0fHwhKHI9UmYocikpKXJldHVybiB0O3ZhciBuPUdmKHQpLG89R2YociksdT1xZihuLG8pLGE9V2YobixvKSsxO3JldHVybiBWZihuLHUsYSkuam9pbigiIil9O2Z1bmN0aW9uIEtmKHQpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIFFmKHQpe3JldHVybiEoIUtmKHQpfHwiIj09PXQpfWZ1bmN0aW9uIFhmKHQscil7aWYoIVFmKHQpKXJldHVybltdO2lmKCFRZihyKSlyZXR1cm5bXTtsZXQgZT1mdW5jdGlvbih0LHIpe3JldHVybiBRZih0KSYmUWYocik/dC5zcGxpdChyKTpbXX0odCxyKTtlPXl1KGUsSmYpO2xldCBuPVtdO3JldHVybiBKZShlLChmdW5jdGlvbih0KXtRZih0KSYmbi5wdXNoKHQpfSkpLG59ZnVuY3Rpb24gWWYodCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBaZih0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiB0bCh0KXtyZXR1cm4hIWZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IFVuZGVmaW5lZF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgTnVsbF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KXx8KCEhZnVuY3Rpb24odCl7aWYoWmYodCkpe2ZvcihsZXQgciBpbiB0KXJldHVybiExO3JldHVybiEwfXJldHVybiExfSh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuISghS2YodCl8fCIiIT09dCl9KHQpfHwhIWZ1bmN0aW9uKHQpe3JldHVybiEhWWYodCkmJjA9PT10Lmxlbmd0aH0odCkpKSl9ZnVuY3Rpb24gcmwodCl7aWYoWmYodCkpe2ZvcihsZXQgciBpbiB0KXJldHVybiEwO3JldHVybiExfXJldHVybiExfWZ1bmN0aW9uIGVsKHQpe2xldCByPSExO3JldHVybiBRZih0KT9yPSFpc05hTihOdW1iZXIodCkpOmZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSYmKHI9ITApLHJ9ZnVuY3Rpb24gbmwodCxyKXt2YXIgZT1PYmplY3Qua2V5cyh0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO3ImJihuPW4uZmlsdGVyKChmdW5jdGlvbihyKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LHIpLmVudW1lcmFibGV9KSkpLGUucHVzaC5hcHBseShlLG4pfXJldHVybiBlfWZ1bmN0aW9uIG9sKHQpe2Zvcih2YXIgcj0xO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1tyXT9hcmd1bWVudHNbcl06e307ciUyP25sKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24ocil7ZSh0LHIsbltyXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6bmwoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbihyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixyKSl9KSl9cmV0dXJuIHR9ZnVuY3Rpb24gdWwodCxyPXt9KXtpZighWWYoZT10KXx8MD09PWUubGVuZ3RofHwxPT09ZS5sZW5ndGgmJnRsKGVbMF0pKXJldHVybnt9O3ZhciBlO2xldCBuPW1yKHIsImRlbGltaXRlciIpO1FmKG4pfHwobj0i4p2vIik7bGV0IG89bXIociwiYmluZFJvb3QiKTtRZihvKXx8KG89InJvb3QiKTtsZXQgdT1tcihyLCJzb3J5SXRlbXMiKSxhPXl1KHQsKHQ9PnsiZm9sZGVyIiE9PXQudHlwZSYmImZpbGUiIT09dC50eXBlJiYodC50eXBlPSJmaWxlIik7bGV0IHI9KHQ9PntsZXQgcj1YZih0PSh0PXQucmVwbGFjZSgvXFxcXC9nLCJcXCIpKS5yZXBsYWNlKC9cXC9nLCIvIiksIi8iKTtyZXR1cm57c3M6cixjZnA6emEocixuKSxuYW1lOkt1KHIpfX0pKHQucGF0aCksZT1WdShyLnNzKSxvPVtdO2UtMT4wJiYobz1JYShyLnMsZS0xKSk7bGV0IHU9IiI7cmV0dXJuIFZ1KG8pPjAmJih1PXphKG8sbikpLHt0eXBlOnQudHlwZSxuYW1lOnIubmFtZSxuczplLHNzOnIuc3MsaWQ6ci5jZnAscGFzOm8scGFyZW50SWQ6dSxkYXRhOmJmKHQpfX0pKSxpPXQ9PntsZXQgcj1WdSh0KSxlPVtdO2ZvcihsZXQgbz0wO288cjtvKyspe2xldCByPVtdO2ZvcihsZXQgZT0wO2U8PW87ZSsrKXIucHVzaCh0W2VdKTtsZXQgdT16YShyLG4pO2UucHVzaCh7aWQ6dSxuYW1lOnRbb119KX1yZXR1cm4gZX0sYz17fTtKZShhLCh0PT57bGV0IHI9W29dLGU9bztKZSh0LnNzLCgobyx1KT0+e2xldCBhPXU8dC5ucy0xfHwiZm9sZGVyIj09PXQudHlwZTtyLnB1c2gobyk7bGV0IGY9bnVsbDt1PT09dC5ucy0xJiYoZj10LmRhdGEpO2xldCBsPXphKHIsbiksdj1pKHIpO3ZhciBzLHA7cD1sLFpmKHM9YykmJihRZihwKXx8ZWwocCkpJiZwIGluIHN8fChjW2xdPWE/e25zOlZ1KHIpLHRzOmJmKHIpLHBhcmVudEluZm9yczp2LF90eXBlOiJmb2xkZXIiLHR5cGU6ImFycmF5IixudW1PZkNoaWxyZW46LTEsaWQ6bCxwYXJlbnRJZDplLHRleHQ6byxjaGlsZHJlbjpbXSxkYXRhOmZ9OntuczpWdShyKSx0czpiZihyKSxwYXJlbnRJbmZvcnM6dixfdHlwZToiZmlsZSIsdHlwZToibm9kZSIsbnVtT2ZDaGlscmVuOi0xLGlkOmwscGFyZW50SWQ6ZSx0ZXh0Om8sZGF0YTpmfSksZT1sfSkpfSkpO2xldCBmPVp1KGMpO2lmKGY9d2koZiwiaWQiKSxmPXdpKGYsIm5zIiksZnVuY3Rpb24odCl7bGV0IHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpO3JldHVybiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1yfHwiW29iamVjdCBBc3luY0Z1bmN0aW9uXSI9PT1yfSh1KSl7bGV0IHQ9W10scj1jYShmLCJucyIpO0plKHIsKChyLGUpPT57bGV0IG49Y2EociwicGFyZW50SWQiKTtKZShuLCgocixuKT0+e2xldCBvPXUocixuLGUpO3Q9Wy4uLnQsLi4ub119KSl9KSksZj10fWxldCBsPVtdLHY9W107SmUoZiwodD0+eyJmb2xkZXIiPT09dC5fdHlwZT9sLnB1c2godCk6di5wdXNoKHQpfSkpO2xldCBzPWNhKGwsIm5zIikscD1jYSh2LCJucyIpLGI9SnUoeXUobCwibnMiKSkseT1KdSh5dSh2LCJucyIpKSxkPW51bGw7e2xldCB0PVtvXTtkPVt7bnM6VnUodCksdHM6YmYodCkscGFyZW50SW5mb3JzOmkodCksX3R5cGU6ImZvbGRlciIsdHlwZToiYXJyYXkiLG51bU9mQ2hpbHJlbjotMSxpZDpvLHBhcmVudElkOiIiLHRleHQ6byxjaGlsZHJlbjpbXSxkYXRhOm51bGx9XX1sZXQgaD17fTtoW29dPSIwLmNoaWxkcmVuIjtsZXQgaj17fTtqW29dPSIwIjtmb3IobGV0IHQ9Mjt0PD1iO3QrKyl7bGV0IHI9c1t0XTtKZShyLCh0PT57bGV0IHI9bXIoaCx0LnBhcmVudElkLCIiKTtpZighUWYocikpdGhyb3cgY29uc29sZS5sb2coImtwUGF0aEZkIixoKSxjb25zb2xlLmxvZygidiIsdCx0LnBhcmVudElkKSxuZXcgRXJyb3IoYGludmFsaWQgcGFyZW50SWRbJHt0LnBhcmVudElkfV0gaW4gZm9sZGVyYCk7bGV0IGU9bXIoZCxyKTtpZihZZihlKXx8Q3IoZCxyLFtdKSxlPW1yKGQsciksIXJsKEJhKGUse2lkOnQuaWR9KSkpe2UucHVzaChvbChvbCh7fSx0KSx7fSx7Y2hpbGRyZW46W119KSk7bGV0IG49YCR7cn0uJHtWdShlKS0xfWA7aFt0LmlkXT1gJHtufS5jaGlsZHJlbmAsalt0LmlkXT1ufX0pKX1sZXQgZz1iZihkKSxfPXt9O2ZvcihsZXQgdD0yO3Q8PXk7dCsrKXtsZXQgcj1wW3RdO0plKHIsKHQ9PntsZXQgcj1tcihoLHQucGFyZW50SWQsIiIpO2lmKCFRZihyKSl0aHJvdyBjb25zb2xlLmxvZygia3BQYXRoRmQiLGgpLGNvbnNvbGUubG9nKCJ2Iix0LHQucGFyZW50SWQpLG5ldyBFcnJvcihgaW52YWxpZCBwYXJlbnRJZFske3QucGFyZW50SWR9XSBpbiBmaWxlYCk7bGV0IGU9bXIoZCxyKTtpZighWWYoZSkpdGhyb3cgY29uc29sZS5sb2coInRyZWVJdGVtcyIsZCksY29uc29sZS5sb2coImsiLHIpLGNvbnNvbGUubG9nKCJ2Iix0KSxuZXcgRXJyb3IoIueEoemgkOWFiOW7uue9ruizh+aWmeWkviIpO2lmKCFybChCYShlLHtpZDp0LmlkfSkpKXtlLnB1c2godCk7bGV0IG49YCR7cn0uJHtWdShlKS0xfWA7X1t0LmlkXT1uLGpbdC5pZF09bn19KSl9cmV0dXJue3RyZWVJdGVtczpkLHRyZWVJdGVtc0ZvbGRlcjpnLGtwUGF0aDpqfX1hc3luYyBmdW5jdGlvbiBmaWxlcGF0aFRvVHJlZVdrKHQscj17fSl7cmV0dXJuIHVsKHQscil9CgpsZXQgaW5zdGFuY2UgPSBudWxsCmZ1bmN0aW9uIGluaXQoaW5wdXQpewoKICAgIC8vaW5pdAogICAgbGV0IHIKICAgIAogICAgICAgIHIgPSB7CiAgICAgICAgICAgIG1haW46IGZpbGVwYXRoVG9UcmVlV2sKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gZmlsZXBhdGhUb1RyZWVXawogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgc2VsZi5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICByZWN2TWVzc2FnZShlLmRhdGEpCiAgICAgICAgfQogICAgICAgIAoK");function Z(){let Z=new t;let m=function(d){try{let Z=new Blob([d]),m=window.URL||window.webkitURL;return new Worker(m.createObjectURL(Z))}catch(d){b(d)}}(d);if(!m)return b("invalid worker"),null;function l(){let d=function(){let d,Z,m=new Promise((function(){d=arguments[0],Z=arguments[1]}));return m.resolve=d,m.reject=Z,m}(),l=function(){let d=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,Z=[],m="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),l=m.length;for(let b=0;b<d;b++)Z[b]=m[0|Math.random()*l];return Z.join("")}(),b={mode:"call",id:l,fun:"main",input:[...arguments]};return m.postMessage(b),Z.once(l,(Z=>{"success"===Z.state?d.resolve(Z.msg):d.reject(Z.msg)})),d}function b(d){Z.emit("error",d)}return m.onmessage=function(d){!function(d){let m=d,l=m.mode;"emit"!==l&&"return"!==l||("emit"===l&&Z.emit(m.evName,m.msg),"return"===l&&Z.emit(m.id,m))}(d.data)},m.onerror=b,function(){let d={mode:"init",type:"function",input:[...arguments]};m.postMessage(d)}([...arguments]),Z.main=l,Z.main=l,Z.terminate=function(){m?(m.terminate(),m=void 0):b("worker has been terminated")},Z}s=async function(){let d=[...arguments],m=Z();return await m.main(...d).finally((()=>{m.terminate()}))}}();var J=s;export{J as default};
@@ -0,0 +1,7 @@
1
+ import flattenTree from 'wsemi/src/flattenTree.mjs'
2
+
3
+ async function flattenTreeWk(data, opt = {}) {
4
+ return flattenTree(data, opt)
5
+ }
6
+
7
+ export default flattenTreeWk
@@ -0,0 +1 @@
1
+ const d="function"==typeof atob,I="function"==typeof Buffer,l="function"==typeof TextDecoder?new TextDecoder:void 0,b=("function"==typeof TextEncoder&&new TextEncoder,Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=")),m=(d=>{let I={};return b.forEach(((d,l)=>I[d]=l)),I})(),Z=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,c=String.fromCharCode.bind(String),i="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):d=>new Uint8Array(Array.prototype.slice.call(d,0)),X=d=>d.replace(/[^A-Za-z0-9\+\/]/g,""),C=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,y=d=>{switch(d.length){case 4:var I=((7&d.charCodeAt(0))<<18|(63&d.charCodeAt(1))<<12|(63&d.charCodeAt(2))<<6|63&d.charCodeAt(3))-65536;return c(55296+(I>>>10))+c(56320+(1023&I));case 3:return c((15&d.charCodeAt(0))<<12|(63&d.charCodeAt(1))<<6|63&d.charCodeAt(2));default:return c((31&d.charCodeAt(0))<<6|63&d.charCodeAt(1))}},V=d=>d.replace(C,y),W=d=>{if(d=d.replace(/\s+/g,""),!Z.test(d))throw new TypeError("malformed base64.");d+="==".slice(2-(3&d.length));let I,l,b,i="";for(let Z=0;Z<d.length;)I=m[d.charAt(Z++)]<<18|m[d.charAt(Z++)]<<12|(l=m[d.charAt(Z++)])<<6|(b=m[d.charAt(Z++)]),i+=64===l?c(I>>16&255):64===b?c(I>>16&255,I>>8&255):c(I>>16&255,I>>8&255,255&I);return i},p=d?d=>atob(X(d)):I?d=>Buffer.from(d,"base64").toString("binary"):W,G=I?d=>i(Buffer.from(d,"base64")):d=>i(p(d).split("").map((d=>d.charCodeAt(0)))),u=I?d=>Buffer.from(d,"base64").toString("utf8"):l?d=>l.decode(G(d)):d=>V(p(d)),n=d=>X(d.replace(/[-_]/g,(d=>"-"==d?"+":"/"))),g=d=>u(n(d)),h=g;var H={};!function(d){var I=Object.prototype.hasOwnProperty,l="~";function b(){}function m(d,I,l){this.fn=d,this.context=I,this.once=l||!1}function Z(d,I,b,Z,c){if("function"!=typeof b)throw new TypeError("The listener must be a function");var i=new m(b,Z||d,c),X=l?l+I:I;return d._events[X]?d._events[X].fn?d._events[X]=[d._events[X],i]:d._events[X].push(i):(d._events[X]=i,d._eventsCount++),d}function c(d,I){0==--d._eventsCount?d._events=new b:delete d._events[I]}function i(){this._events=new b,this._eventsCount=0}Object.create&&(b.prototype=Object.create(null),(new b).__proto__||(l=!1)),i.prototype.eventNames=function(){var d,b,m=[];if(0===this._eventsCount)return m;for(b in d=this._events)I.call(d,b)&&m.push(l?b.slice(1):b);return Object.getOwnPropertySymbols?m.concat(Object.getOwnPropertySymbols(d)):m},i.prototype.listeners=function(d){var I=l?l+d:d,b=this._events[I];if(!b)return[];if(b.fn)return[b.fn];for(var m=0,Z=b.length,c=new Array(Z);m<Z;m++)c[m]=b[m].fn;return c},i.prototype.listenerCount=function(d){var I=l?l+d:d,b=this._events[I];return b?b.fn?1:b.length:0},i.prototype.emit=function(d,I,b,m,Z,c){var i=l?l+d:d;if(!this._events[i])return!1;var X,C,y=this._events[i],V=arguments.length;if(y.fn){switch(y.once&&this.removeListener(d,y.fn,void 0,!0),V){case 1:return y.fn.call(y.context),!0;case 2:return y.fn.call(y.context,I),!0;case 3:return y.fn.call(y.context,I,b),!0;case 4:return y.fn.call(y.context,I,b,m),!0;case 5:return y.fn.call(y.context,I,b,m,Z),!0;case 6:return y.fn.call(y.context,I,b,m,Z,c),!0}for(C=1,X=new Array(V-1);C<V;C++)X[C-1]=arguments[C];y.fn.apply(y.context,X)}else{var W,p=y.length;for(C=0;C<p;C++)switch(y[C].once&&this.removeListener(d,y[C].fn,void 0,!0),V){case 1:y[C].fn.call(y[C].context);break;case 2:y[C].fn.call(y[C].context,I);break;case 3:y[C].fn.call(y[C].context,I,b);break;case 4:y[C].fn.call(y[C].context,I,b,m);break;default:if(!X)for(W=1,X=new Array(V-1);W<V;W++)X[W-1]=arguments[W];y[C].fn.apply(y[C].context,X)}}return!0},i.prototype.on=function(d,I,l){return Z(this,d,I,l,!1)},i.prototype.once=function(d,I,l){return Z(this,d,I,l,!0)},i.prototype.removeListener=function(d,I,b,m){var Z=l?l+d:d;if(!this._events[Z])return this;if(!I)return c(this,Z),this;var i=this._events[Z];if(i.fn)i.fn!==I||m&&!i.once||b&&i.context!==b||c(this,Z);else{for(var X=0,C=[],y=i.length;X<y;X++)(i[X].fn!==I||m&&!i[X].once||b&&i[X].context!==b)&&C.push(i[X]);C.length?this._events[Z]=1===C.length?C[0]:C:c(this,Z)}return this},i.prototype.removeAllListeners=function(d){var I;return d?(I=l?l+d:d,this._events[I]&&c(this,I)):(this._events=new b,this._eventsCount=0),this},i.prototype.off=i.prototype.removeListener,i.prototype.addListener=i.prototype.on,i.prefixed=l,i.EventEmitter=i,d.exports=i}({get exports(){return H},set exports(d){H=d}});var J=H;let t;!function(){if("browser"!==("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let d=h("CgoKZnVuY3Rpb24gdChyKXtyZXR1cm4gdD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sdChyKX1mdW5jdGlvbiByKHIpe3ZhciBlPWZ1bmN0aW9uKHIsZSl7aWYoIm9iamVjdCIhPT10KHIpfHxudWxsPT09cilyZXR1cm4gcjt2YXIgbj1yW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09bil7dmFyIG89bi5jYWxsKHIsZXx8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PXQobykpcmV0dXJuIG87dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1lP1N0cmluZzpOdW1iZXIpKHIpfShyLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PXQoZSk/ZTpTdHJpbmcoZSl9ZnVuY3Rpb24gZSh0LGUsbil7cmV0dXJuKGU9cihlKSlpbiB0P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTp0W2VdPW4sdH12YXIgbj0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpczoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnt9LG89QXJyYXkuaXNBcnJheSx1PSJvYmplY3QiPT10eXBlb2YgbiYmbiYmbi5PYmplY3Q9PT1PYmplY3QmJm4sYT11LGM9Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixpPWF8fGN8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksZj1pLlN5bWJvbCxsPWYscz1PYmplY3QucHJvdG90eXBlLHA9cy5oYXNPd25Qcm9wZXJ0eSx2PXMudG9TdHJpbmcsYj1sP2wudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciB5PWZ1bmN0aW9uKHQpe3ZhciByPXAuY2FsbCh0LGIpLGU9dFtiXTt0cnl7dFtiXT12b2lkIDA7dmFyIG49ITB9Y2F0Y2godCl7fXZhciBvPXYuY2FsbCh0KTtyZXR1cm4gbiYmKHI/dFtiXT1lOmRlbGV0ZSB0W2JdKSxvfSxoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIGo9eSxkPWZ1bmN0aW9uKHQpe3JldHVybiBoLmNhbGwodCl9LGc9Zj9mLnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgXz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD92b2lkIDA9PT10PyJbb2JqZWN0IFVuZGVmaW5lZF0iOiJbb2JqZWN0IE51bGxdIjpnJiZnIGluIE9iamVjdCh0KT9qKHQpOmQodCl9O3ZhciBPPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9LHc9XyxtPU87dmFyIEE9ZnVuY3Rpb24odCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxtKHQpJiYiW29iamVjdCBTeW1ib2xdIj09dyh0KX0sUz1vLFA9QSx4PS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLHo9L15cdyokLzt2YXIgRT1mdW5jdGlvbih0LHIpe2lmKFModCkpcmV0dXJuITE7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuISgibnVtYmVyIiE9ZSYmInN5bWJvbCIhPWUmJiJib29sZWFuIiE9ZSYmbnVsbCE9dCYmIVAodCkpfHwoei50ZXN0KHQpfHwheC50ZXN0KHQpfHxudWxsIT1yJiZ0IGluIE9iamVjdChyKSl9O3ZhciBJPWZ1bmN0aW9uKHQpe3ZhciByPXR5cGVvZiB0O3JldHVybiBudWxsIT10JiYoIm9iamVjdCI9PXJ8fCJmdW5jdGlvbiI9PXIpfSxGPV8sVT1JO3ZhciBNLFQ9ZnVuY3Rpb24odCl7aWYoIVUodCkpcmV0dXJuITE7dmFyIHI9Rih0KTtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT1yfHwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iPT1yfHwiW29iamVjdCBBc3luY0Z1bmN0aW9uXSI9PXJ8fCJbb2JqZWN0IFByb3h5XSI9PXJ9LCQ9aVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sRD0oTT0vW14uXSskLy5leGVjKCQmJiQua2V5cyYmJC5rZXlzLklFX1BST1RPfHwiIikpPyJTeW1ib2woc3JjKV8xLiIrTToiIjt2YXIgQj1mdW5jdGlvbih0KXtyZXR1cm4hIUQmJkQgaW4gdH0sTj1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7dmFyIGs9ZnVuY3Rpb24odCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiBOLmNhbGwodCl9Y2F0Y2godCl7fXRyeXtyZXR1cm4gdCsiIn1jYXRjaCh0KXt9fXJldHVybiIifSxDPVQsUj1CLFY9SSxXPWssTD0vXlxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXF0kLyxxPUZ1bmN0aW9uLnByb3RvdHlwZSxHPU9iamVjdC5wcm90b3R5cGUsSz1xLnRvU3RyaW5nLEg9Ry5oYXNPd25Qcm9wZXJ0eSxKPVJlZ0V4cCgiXiIrSy5jYWxsKEgpLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCJcXCQmIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywiJDEuKj8iKSsiJCIpO3ZhciBRPWZ1bmN0aW9uKHQpe3JldHVybiEoIVYodCl8fFIodCkpJiYoQyh0KT9KOkwpLnRlc3QoVyh0KSl9LFg9ZnVuY3Rpb24odCxyKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtyXX07dmFyIFk9ZnVuY3Rpb24odCxyKXt2YXIgZT1YKHQscik7cmV0dXJuIFEoZSk/ZTp2b2lkIDB9LFo9WShPYmplY3QsImNyZWF0ZSIpLHR0PVo7dmFyIHJ0PWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz10dD90dChudWxsKTp7fSx0aGlzLnNpemU9MH07dmFyIGV0PWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1yPzE6MCxyfSxudD1aLG90PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIHV0PWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX19kYXRhX187aWYobnQpe3ZhciBlPXJbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09ZT92b2lkIDA6ZX1yZXR1cm4gb3QuY2FsbChyLHQpP3JbdF06dm9pZCAwfSxhdD1aLGN0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIGl0PVo7dmFyIGZ0PXJ0LGx0PWV0LHN0PXV0LHB0PWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX19kYXRhX187cmV0dXJuIGF0P3ZvaWQgMCE9PXJbdF06Y3QuY2FsbChyLHQpfSx2dD1mdW5jdGlvbih0LHIpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIHRoaXMuc2l6ZSs9dGhpcy5oYXModCk/MDoxLGVbdF09aXQmJnZvaWQgMD09PXI/Il9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iOnIsdGhpc307ZnVuY3Rpb24gYnQodCl7dmFyIHI9LTEsZT1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK3I8ZTspe3ZhciBuPXRbcl07dGhpcy5zZXQoblswXSxuWzFdKX19YnQucHJvdG90eXBlLmNsZWFyPWZ0LGJ0LnByb3RvdHlwZS5kZWxldGU9bHQsYnQucHJvdG90eXBlLmdldD1zdCxidC5wcm90b3R5cGUuaGFzPXB0LGJ0LnByb3RvdHlwZS5zZXQ9dnQ7dmFyIHl0PWJ0O3ZhciBodD1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9O3ZhciBqdD1mdW5jdGlvbih0LHIpe3JldHVybiB0PT09cnx8dCE9dCYmciE9cn0sZHQ9anQ7dmFyIGd0PWZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLTspaWYoZHQodFtlXVswXSxyKSlyZXR1cm4gZTtyZXR1cm4tMX0sX3Q9Z3QsT3Q9QXJyYXkucHJvdG90eXBlLnNwbGljZTt2YXIgd3Q9Z3Q7dmFyIG10PWd0O3ZhciBBdD1ndDt2YXIgU3Q9aHQsUHQ9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxlPV90KHIsdCk7cmV0dXJuIShlPDApJiYoZT09ci5sZW5ndGgtMT9yLnBvcCgpOk90LmNhbGwocixlLDEpLC0tdGhpcy5zaXplLCEwKX0seHQ9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxlPXd0KHIsdCk7cmV0dXJuIGU8MD92b2lkIDA6cltlXVsxXX0senQ9ZnVuY3Rpb24odCl7cmV0dXJuIG10KHRoaXMuX19kYXRhX18sdCk+LTF9LEV0PWZ1bmN0aW9uKHQscil7dmFyIGU9dGhpcy5fX2RhdGFfXyxuPUF0KGUsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsZS5wdXNoKFt0LHJdKSk6ZVtuXVsxXT1yLHRoaXN9O2Z1bmN0aW9uIEl0KHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytyPGU7KXt2YXIgbj10W3JdO3RoaXMuc2V0KG5bMF0sblsxXSl9fUl0LnByb3RvdHlwZS5jbGVhcj1TdCxJdC5wcm90b3R5cGUuZGVsZXRlPVB0LEl0LnByb3RvdHlwZS5nZXQ9eHQsSXQucHJvdG90eXBlLmhhcz16dCxJdC5wcm90b3R5cGUuc2V0PUV0O3ZhciBGdD1JdCxVdD1ZKGksIk1hcCIpLE10PXl0LFR0PUZ0LCR0PVV0O3ZhciBEdD1mdW5jdGlvbih0KXt2YXIgcj10eXBlb2YgdDtyZXR1cm4ic3RyaW5nIj09cnx8Im51bWJlciI9PXJ8fCJzeW1ib2wiPT1yfHwiYm9vbGVhbiI9PXI/Il9fcHJvdG9fXyIhPT10Om51bGw9PT10fTt2YXIgQnQ9ZnVuY3Rpb24odCxyKXt2YXIgZT10Ll9fZGF0YV9fO3JldHVybiBEdChyKT9lWyJzdHJpbmciPT10eXBlb2Ygcj8ic3RyaW5nIjoiaGFzaCJdOmUubWFwfSxOdD1CdDt2YXIga3Q9QnQ7dmFyIEN0PUJ0O3ZhciBSdD1CdDt2YXIgVnQ9ZnVuY3Rpb24odCxyKXt2YXIgZT1SdCh0aGlzLHQpLG49ZS5zaXplO3JldHVybiBlLnNldCh0LHIpLHRoaXMuc2l6ZSs9ZS5zaXplPT1uPzA6MSx0aGlzfSxXdD1mdW5jdGlvbigpe3RoaXMuc2l6ZT0wLHRoaXMuX19kYXRhX189e2hhc2g6bmV3IE10LG1hcDpuZXcoJHR8fFR0KSxzdHJpbmc6bmV3IE10fX0sTHQ9ZnVuY3Rpb24odCl7dmFyIHI9TnQodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09cj8xOjAscn0scXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGt0KHRoaXMsdCkuZ2V0KHQpfSxHdD1mdW5jdGlvbih0KXtyZXR1cm4gQ3QodGhpcyx0KS5oYXModCl9LEt0PVZ0O2Z1bmN0aW9uIEh0KHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytyPGU7KXt2YXIgbj10W3JdO3RoaXMuc2V0KG5bMF0sblsxXSl9fUh0LnByb3RvdHlwZS5jbGVhcj1XdCxIdC5wcm90b3R5cGUuZGVsZXRlPUx0LEh0LnByb3RvdHlwZS5nZXQ9cXQsSHQucHJvdG90eXBlLmhhcz1HdCxIdC5wcm90b3R5cGUuc2V0PUt0O3ZhciBKdD1IdCxRdD1KdDtmdW5jdGlvbiBYdCh0LHIpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHxudWxsIT1yJiYiZnVuY3Rpb24iIT10eXBlb2Ygcil0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBhIGZ1bmN0aW9uIik7dmFyIGU9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1yP3IuYXBwbHkodGhpcyxuKTpuWzBdLHU9ZS5jYWNoZTtpZih1LmhhcyhvKSlyZXR1cm4gdS5nZXQobyk7dmFyIGE9dC5hcHBseSh0aGlzLG4pO3JldHVybiBlLmNhY2hlPXUuc2V0KG8sYSl8fHUsYX07cmV0dXJuIGUuY2FjaGU9bmV3KFh0LkNhY2hlfHxRdCksZX1YdC5DYWNoZT1RdDt2YXIgWXQ9WHQ7dmFyIFp0PS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLHRyPS9cXChcXCk/L2cscnI9ZnVuY3Rpb24odCl7dmFyIHI9WXQodCwoZnVuY3Rpb24odCl7cmV0dXJuIDUwMD09PWUuc2l6ZSYmZS5jbGVhcigpLHR9KSksZT1yLmNhY2hlO3JldHVybiByfSgoZnVuY3Rpb24odCl7dmFyIHI9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZyLnB1c2goIiIpLHQucmVwbGFjZShadCwoZnVuY3Rpb24odCxlLG4sbyl7ci5wdXNoKG4/by5yZXBsYWNlKHRyLCIkMSIpOmV8fHQpfSkpLHJ9KSk7dmFyIGVyPWZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytlPG47KW9bZV09cih0W2VdLGUsdCk7cmV0dXJuIG99LG5yPW8sb3I9QSx1cj1mP2YucHJvdG90eXBlOnZvaWQgMCxhcj11cj91ci50b1N0cmluZzp2b2lkIDA7dmFyIGNyPWZ1bmN0aW9uIHQocil7aWYoInN0cmluZyI9PXR5cGVvZiByKXJldHVybiByO2lmKG5yKHIpKXJldHVybiBlcihyLHQpKyIiO2lmKG9yKHIpKXJldHVybiBhcj9hci5jYWxsKHIpOiIiO3ZhciBlPXIrIiI7cmV0dXJuIjAiPT1lJiYxL3I9PS1JbmZpbml0eT8iLTAiOmV9LGlyPWNyO3ZhciBmcj1vLGxyPUUsc3I9cnIscHI9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/IiI6aXIodCl9O3ZhciB2cj1BO3ZhciBicj1mdW5jdGlvbih0LHIpe3JldHVybiBmcih0KT90OmxyKHQscik/W3RdOnNyKHByKHQpKX0seXI9ZnVuY3Rpb24odCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHx2cih0KSlyZXR1cm4gdDt2YXIgcj10KyIiO3JldHVybiIwIj09ciYmMS90PT0tSW5maW5pdHk/Ii0wIjpyfTt2YXIgaHI9ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9MCxuPShyPWJyKHIsdCkpLmxlbmd0aDtudWxsIT10JiZlPG47KXQ9dFt5cihyW2UrK10pXTtyZXR1cm4gZSYmZT09bj90OnZvaWQgMH07dmFyIGpyPWZ1bmN0aW9uKHQscixlKXt2YXIgbj1udWxsPT10P3ZvaWQgMDpocih0LHIpO3JldHVybiB2b2lkIDA9PT1uP2U6bn0sZHI9T2JqZWN0LnByb3RvdHlwZTt2YXIgZ3I9ZnVuY3Rpb24odCl7dmFyIHI9dCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4gdD09PSgiZnVuY3Rpb24iPT10eXBlb2YgciYmci5wcm90b3R5cGV8fGRyKX07dmFyIF9yPWZ1bmN0aW9uKHQscil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KHIoZSkpfX0sT3I9X3IoT2JqZWN0LmtleXMsT2JqZWN0KSx3cj1ncixtcj1PcixBcj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBTcj1mdW5jdGlvbih0KXtpZighd3IodCkpcmV0dXJuIG1yKHQpO3ZhciByPVtdO2Zvcih2YXIgZSBpbiBPYmplY3QodCkpQXIuY2FsbCh0LGUpJiYiY29uc3RydWN0b3IiIT1lJiZyLnB1c2goZSk7cmV0dXJuIHJ9LFByPVkoaSwiRGF0YVZpZXciKSx4cj1VdCx6cj1ZKGksIlByb21pc2UiKSxFcj1ZKGksIlNldCIpLElyPVkoaSwiV2Vha01hcCIpLEZyPV8sVXI9ayxNcj0iW29iamVjdCBNYXBdIixUcj0iW29iamVjdCBQcm9taXNlXSIsJHI9IltvYmplY3QgU2V0XSIsRHI9IltvYmplY3QgV2Vha01hcF0iLEJyPSJbb2JqZWN0IERhdGFWaWV3XSIsTnI9VXIoUHIpLGtyPVVyKHhyKSxDcj1Vcih6ciksUnI9VXIoRXIpLFZyPVVyKElyKSxXcj1GcjsoUHImJldyKG5ldyBQcihuZXcgQXJyYXlCdWZmZXIoMSkpKSE9QnJ8fHhyJiZXcihuZXcgeHIpIT1Ncnx8enImJldyKHpyLnJlc29sdmUoKSkhPVRyfHxFciYmV3IobmV3IEVyKSE9JHJ8fElyJiZXcihuZXcgSXIpIT1EcikmJihXcj1mdW5jdGlvbih0KXt2YXIgcj1Gcih0KSxlPSJbb2JqZWN0IE9iamVjdF0iPT1yP3QuY29uc3RydWN0b3I6dm9pZCAwLG49ZT9VcihlKToiIjtpZihuKXN3aXRjaChuKXtjYXNlIE5yOnJldHVybiBCcjtjYXNlIGtyOnJldHVybiBNcjtjYXNlIENyOnJldHVybiBUcjtjYXNlIFJyOnJldHVybiAkcjtjYXNlIFZyOnJldHVybiBEcn1yZXR1cm4gcn0pO3ZhciBMcj1Xcjt2YXIgcXI9ZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PTkwMDcxOTkyNTQ3NDA5OTF9LEdyPVQsS3I9cXI7dmFyIEhyPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10JiZLcih0Lmxlbmd0aCkmJiFHcih0KX0sSnI9XyxRcj1vLFhyPU87dmFyIFlyPWZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdHx8IVFyKHQpJiZYcih0KSYmIltvYmplY3QgU3RyaW5nXSI9PUpyKHQpfTt2YXIgWnI9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBudWxsPT1yP3ZvaWQgMDpyW3RdfX0oImxlbmd0aCIpLHRlPVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTt2YXIgcmU9ZnVuY3Rpb24odCl7cmV0dXJuIHRlLnRlc3QodCl9LGVlPSJcXHVkODAwLVxcdWRmZmYiLG5lPSJbIitlZSsiXSIsb2U9IltcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZdIix1ZT0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixhZT0iW14iK2VlKyJdIixjZT0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIsaWU9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLGZlPSIoPzoiK29lKyJ8Iit1ZSsiKSIrIj8iLGxlPSJbXFx1ZmUwZVxcdWZlMGZdPyIsc2U9bGUrZmUrKCIoPzpcXHUyMDBkKD86IitbYWUsY2UsaWVdLmpvaW4oInwiKSsiKSIrbGUrZmUrIikqIikscGU9Iig/OiIrW2FlK29lKyI/IixvZSxjZSxpZSxuZV0uam9pbigifCIpKyIpIix2ZT1SZWdFeHAodWUrIig/PSIrdWUrIil8IitwZStzZSwiZyIpO3ZhciBiZT1acix5ZT1yZSxoZT1mdW5jdGlvbih0KXtmb3IodmFyIHI9dmUubGFzdEluZGV4PTA7dmUudGVzdCh0KTspKytyO3JldHVybiByfTt2YXIgamU9U3IsZGU9THIsZ2U9SHIsX2U9WXIsT2U9ZnVuY3Rpb24odCl7cmV0dXJuIHllKHQpP2hlKHQpOmJlKHQpfTt2YXIgd2U9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gMDtpZihnZSh0KSlyZXR1cm4gX2UodCk/T2UodCk6dC5sZW5ndGg7dmFyIHI9ZGUodCk7cmV0dXJuIltvYmplY3QgTWFwXSI9PXJ8fCJbb2JqZWN0IFNldF0iPT1yP3Quc2l6ZTpqZSh0KS5sZW5ndGh9LG1lPU1hdGguY2VpbCxBZT1NYXRoLm1heDt2YXIgU2U9L14oPzowfFsxLTldXGQqKSQvO3ZhciBQZT1mdW5jdGlvbih0LHIpe3ZhciBlPXR5cGVvZiB0O3JldHVybiEhKHI9bnVsbD09cj85MDA3MTk5MjU0NzQwOTkxOnIpJiYoIm51bWJlciI9PWV8fCJzeW1ib2wiIT1lJiZTZS50ZXN0KHQpKSYmdD4tMSYmdCUxPT0wJiZ0PHJ9LHhlPWp0LHplPUhyLEVlPVBlLEllPUk7dmFyIEZlPS9ccy87dmFyIFVlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10Lmxlbmd0aDtyLS0mJkZlLnRlc3QodC5jaGFyQXQocikpOyk7cmV0dXJuIHJ9LE1lPS9eXHMrLzt2YXIgVGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ/dC5zbGljZSgwLFVlKHQpKzEpLnJlcGxhY2UoTWUsIiIpOnR9LCRlPUksRGU9QSxCZT0vXlstK10weFswLTlhLWZdKyQvaSxOZT0vXjBiWzAxXSskL2ksa2U9L14wb1swLTddKyQvaSxDZT1wYXJzZUludDt2YXIgUmU9ZnVuY3Rpb24odCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2lmKERlKHQpKXJldHVybiBOYU47aWYoJGUodCkpe3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PSRlKHIpP3IrIiI6cn1pZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIDA9PT10P3Q6K3Q7dD1UZSh0KTt2YXIgZT1OZS50ZXN0KHQpO3JldHVybiBlfHxrZS50ZXN0KHQpP0NlKHQuc2xpY2UoMiksZT8yOjgpOkJlLnRlc3QodCk/TmFOOit0fSxWZT0xLzA7dmFyIFdlPWZ1bmN0aW9uKHQscixlLG4pe2Zvcih2YXIgbz0tMSx1PUFlKG1lKChyLXQpLyhlfHwxKSksMCksYT1BcnJheSh1KTt1LS07KWFbbj91Oisrb109dCx0Kz1lO3JldHVybiBhfSxMZT1mdW5jdGlvbih0LHIsZSl7aWYoIUllKGUpKXJldHVybiExO3ZhciBuPXR5cGVvZiByO3JldHVybiEhKCJudW1iZXIiPT1uP3plKGUpJiZFZShyLGUubGVuZ3RoKToic3RyaW5nIj09biYmciBpbiBlKSYmeGUoZVtyXSx0KX0scWU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ/KHQ9UmUodCkpPT09VmV8fHQ9PT0tMS8wPzE3OTc2OTMxMzQ4NjIzMTU3ZTI5MioodDwwPy0xOjEpOnQ9PXQ/dDowOjA9PT10P3Q6MH07dmFyIEdlPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihyLGUsbil7cmV0dXJuIG4mJiJudW1iZXIiIT10eXBlb2YgbiYmTGUocixlLG4pJiYoZT1uPXZvaWQgMCkscj1xZShyKSx2b2lkIDA9PT1lPyhlPXIscj0wKTplPXFlKGUpLG49dm9pZCAwPT09bj9yPGU/MTotMTpxZShuKSxXZShyLGUsbix0KX19KCksS2U9RnQ7dmFyIEhlPUZ0LEplPVV0LFFlPUp0O3ZhciBYZT1GdCxZZT1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189bmV3IEtlLHRoaXMuc2l6ZT0wfSxaZT1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fLGU9ci5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1yLnNpemUsZX0sdG49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KHQpfSxybj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModCl9LGVuPWZ1bmN0aW9uKHQscil7dmFyIGU9dGhpcy5fX2RhdGFfXztpZihlIGluc3RhbmNlb2YgSGUpe3ZhciBuPWUuX19kYXRhX187aWYoIUplfHxuLmxlbmd0aDwxOTkpcmV0dXJuIG4ucHVzaChbdCxyXSksdGhpcy5zaXplPSsrZS5zaXplLHRoaXM7ZT10aGlzLl9fZGF0YV9fPW5ldyBRZShuKX1yZXR1cm4gZS5zZXQodCxyKSx0aGlzLnNpemU9ZS5zaXplLHRoaXN9O2Z1bmN0aW9uIG5uKHQpe3ZhciByPXRoaXMuX19kYXRhX189bmV3IFhlKHQpO3RoaXMuc2l6ZT1yLnNpemV9bm4ucHJvdG90eXBlLmNsZWFyPVllLG5uLnByb3RvdHlwZS5kZWxldGU9WmUsbm4ucHJvdG90eXBlLmdldD10bixubi5wcm90b3R5cGUuaGFzPXJuLG5uLnByb3RvdHlwZS5zZXQ9ZW47dmFyIG9uPW5uO3ZhciB1bj1mdW5jdGlvbih0LHIpe2Zvcih2YXIgZT0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK2U8biYmITEhPT1yKHRbZV0sZSx0KTspO3JldHVybiB0fSxhbj1ZLGNuPWZ1bmN0aW9uKCl7dHJ5e3ZhciB0PWFuKE9iamVjdCwiZGVmaW5lUHJvcGVydHkiKTtyZXR1cm4gdCh7fSwiIix7fSksdH1jYXRjaCh0KXt9fSgpO3ZhciBmbj1mdW5jdGlvbih0LHIsZSl7Il9fcHJvdG9fXyI9PXImJmNuP2NuKHQscix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6ZSx3cml0YWJsZTohMH0pOnRbcl09ZX0sbG49Zm4sc249anQscG49T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgdm49ZnVuY3Rpb24odCxyLGUpe3ZhciBuPXRbcl07cG4uY2FsbCh0LHIpJiZzbihuLGUpJiYodm9pZCAwIT09ZXx8ciBpbiB0KXx8bG4odCxyLGUpfSxibj12bix5bj1mbjt2YXIgaG49ZnVuY3Rpb24odCxyLGUsbil7dmFyIG89IWU7ZXx8KGU9e30pO2Zvcih2YXIgdT0tMSxhPXIubGVuZ3RoOysrdTxhOyl7dmFyIGM9clt1XSxpPW4/bihlW2NdLHRbY10sYyxlLHQpOnZvaWQgMDt2b2lkIDA9PT1pJiYoaT10W2NdKSxvP3luKGUsYyxpKTpibihlLGMsaSl9cmV0dXJuIGV9O3ZhciBqbj1mdW5jdGlvbih0LHIpe2Zvcih2YXIgZT0tMSxuPUFycmF5KHQpOysrZTx0OyluW2VdPXIoZSk7cmV0dXJuIG59LGRuPV8sZ249Tzt2YXIgX249ZnVuY3Rpb24odCl7cmV0dXJuIGduKHQpJiYiW29iamVjdCBBcmd1bWVudHNdIj09ZG4odCl9LE9uPU8sd249T2JqZWN0LnByb3RvdHlwZSxtbj13bi5oYXNPd25Qcm9wZXJ0eSxBbj13bi5wcm9wZXJ0eUlzRW51bWVyYWJsZSxTbj1fbihmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP19uOmZ1bmN0aW9uKHQpe3JldHVybiBPbih0KSYmbW4uY2FsbCh0LCJjYWxsZWUiKSYmIUFuLmNhbGwodCwiY2FsbGVlIil9LFBuPXt9O3ZhciB4bj1mdW5jdGlvbigpe3JldHVybiExfTshZnVuY3Rpb24odCxyKXt2YXIgZT1pLG49eG4sbz1yJiYhci5ub2RlVHlwZSYmcix1PW8mJnQmJiF0Lm5vZGVUeXBlJiZ0LGE9dSYmdS5leHBvcnRzPT09bz9lLkJ1ZmZlcjp2b2lkIDAsYz0oYT9hLmlzQnVmZmVyOnZvaWQgMCl8fG47dC5leHBvcnRzPWN9KHtnZXQgZXhwb3J0cygpe3JldHVybiBQbn0sc2V0IGV4cG9ydHModCl7UG49dH19LFBuKTt2YXIgem49XyxFbj1xcixJbj1PLEZuPXt9O0ZuWyJbb2JqZWN0IEZsb2F0MzJBcnJheV0iXT1GblsiW29iamVjdCBGbG9hdDY0QXJyYXldIl09Rm5bIltvYmplY3QgSW50OEFycmF5XSJdPUZuWyJbb2JqZWN0IEludDE2QXJyYXldIl09Rm5bIltvYmplY3QgSW50MzJBcnJheV0iXT1GblsiW29iamVjdCBVaW50OEFycmF5XSJdPUZuWyJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSJdPUZuWyJbb2JqZWN0IFVpbnQxNkFycmF5XSJdPUZuWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLEZuWyJbb2JqZWN0IEFyZ3VtZW50c10iXT1GblsiW29iamVjdCBBcnJheV0iXT1GblsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1GblsiW29iamVjdCBCb29sZWFuXSJdPUZuWyJbb2JqZWN0IERhdGFWaWV3XSJdPUZuWyJbb2JqZWN0IERhdGVdIl09Rm5bIltvYmplY3QgRXJyb3JdIl09Rm5bIltvYmplY3QgRnVuY3Rpb25dIl09Rm5bIltvYmplY3QgTWFwXSJdPUZuWyJbb2JqZWN0IE51bWJlcl0iXT1GblsiW29iamVjdCBPYmplY3RdIl09Rm5bIltvYmplY3QgUmVnRXhwXSJdPUZuWyJbb2JqZWN0IFNldF0iXT1GblsiW29iamVjdCBTdHJpbmddIl09Rm5bIltvYmplY3QgV2Vha01hcF0iXT0hMTt2YXIgVW49ZnVuY3Rpb24odCl7cmV0dXJuIEluKHQpJiZFbih0Lmxlbmd0aCkmJiEhRm5bem4odCldfTt2YXIgTW49ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiB0KHIpfX0sVG49e307IWZ1bmN0aW9uKHQscil7dmFyIGU9dSxuPXImJiFyLm5vZGVUeXBlJiZyLG89biYmdCYmIXQubm9kZVR5cGUmJnQsYT1vJiZvLmV4cG9ydHM9PT1uJiZlLnByb2Nlc3MsYz1mdW5jdGlvbigpe3RyeXt2YXIgdD1vJiZvLnJlcXVpcmUmJm8ucmVxdWlyZSgidXRpbCIpLnR5cGVzO3JldHVybiB0fHxhJiZhLmJpbmRpbmcmJmEuYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KCk7dC5leHBvcnRzPWN9KHtnZXQgZXhwb3J0cygpe3JldHVybiBUbn0sc2V0IGV4cG9ydHModCl7VG49dH19LFRuKTt2YXIgJG49VW4sRG49TW4sQm49VG4mJlRuLmlzVHlwZWRBcnJheSxObj1Cbj9EbihCbik6JG4sa249am4sQ249U24sUm49byxWbj1QbixXbj1QZSxMbj1Obixxbj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBHbj1mdW5jdGlvbih0LHIpe3ZhciBlPVJuKHQpLG49IWUmJkNuKHQpLG89IWUmJiFuJiZWbih0KSx1PSFlJiYhbiYmIW8mJkxuKHQpLGE9ZXx8bnx8b3x8dSxjPWE/a24odC5sZW5ndGgsU3RyaW5nKTpbXSxpPWMubGVuZ3RoO2Zvcih2YXIgZiBpbiB0KSFyJiYhcW4uY2FsbCh0LGYpfHxhJiYoImxlbmd0aCI9PWZ8fG8mJigib2Zmc2V0Ij09Znx8InBhcmVudCI9PWYpfHx1JiYoImJ1ZmZlciI9PWZ8fCJieXRlTGVuZ3RoIj09Znx8ImJ5dGVPZmZzZXQiPT1mKXx8V24oZixpKSl8fGMucHVzaChmKTtyZXR1cm4gY30sS249R24sSG49U3IsSm49SHI7dmFyIFFuPWZ1bmN0aW9uKHQpe3JldHVybiBKbih0KT9Lbih0KTpIbih0KX0sWG49aG4sWW49UW47dmFyIFpuPWZ1bmN0aW9uKHQscil7cmV0dXJuIHQmJlhuKHIsWW4ociksdCl9O3ZhciB0bz1JLHJvPWdyLGVvPWZ1bmN0aW9uKHQpe3ZhciByPVtdO2lmKG51bGwhPXQpZm9yKHZhciBlIGluIE9iamVjdCh0KSlyLnB1c2goZSk7cmV0dXJuIHJ9LG5vPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIG9vPUduLHVvPWZ1bmN0aW9uKHQpe2lmKCF0byh0KSlyZXR1cm4gZW8odCk7dmFyIHI9cm8odCksZT1bXTtmb3IodmFyIG4gaW4gdCkoImNvbnN0cnVjdG9yIiE9bnx8IXImJm5vLmNhbGwodCxuKSkmJmUucHVzaChuKTtyZXR1cm4gZX0sYW89SHI7dmFyIGNvPWZ1bmN0aW9uKHQpe3JldHVybiBhbyh0KT9vbyh0LCEwKTp1byh0KX0saW89aG4sZm89Y287dmFyIGxvPWZ1bmN0aW9uKHQscil7cmV0dXJuIHQmJmlvKHIsZm8ociksdCl9LHNvPXt9OyFmdW5jdGlvbih0LHIpe3ZhciBlPWksbj1yJiYhci5ub2RlVHlwZSYmcixvPW4mJnQmJiF0Lm5vZGVUeXBlJiZ0LHU9byYmby5leHBvcnRzPT09bj9lLkJ1ZmZlcjp2b2lkIDAsYT11P3UuYWxsb2NVbnNhZmU6dm9pZCAwO3QuZXhwb3J0cz1mdW5jdGlvbih0LHIpe2lmKHIpcmV0dXJuIHQuc2xpY2UoKTt2YXIgZT10Lmxlbmd0aCxuPWE/YShlKTpuZXcgdC5jb25zdHJ1Y3RvcihlKTtyZXR1cm4gdC5jb3B5KG4pLG59fSh7Z2V0IGV4cG9ydHMoKXtyZXR1cm4gc299LHNldCBleHBvcnRzKHQpe3NvPXR9fSxzbyk7dmFyIHBvPWZ1bmN0aW9uKHQscil7dmFyIGU9LTEsbj10Lmxlbmd0aDtmb3Iocnx8KHI9QXJyYXkobikpOysrZTxuOylyW2VdPXRbZV07cmV0dXJuIHJ9O3ZhciB2bz1mdW5jdGlvbigpe3JldHVybltdfSxibz1mdW5jdGlvbih0LHIpe2Zvcih2YXIgZT0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPTAsdT1bXTsrK2U8bjspe3ZhciBhPXRbZV07cihhLGUsdCkmJih1W28rK109YSl9cmV0dXJuIHV9LHlvPXZvLGhvPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsam89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxnbz1qbz9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1PYmplY3QodCksYm8oam8odCksKGZ1bmN0aW9uKHIpe3JldHVybiBoby5jYWxsKHQscil9KSkpfTp5byxfbz1obixPbz1nbzt2YXIgd289ZnVuY3Rpb24odCxyKXtyZXR1cm4gX28odCxPbyh0KSxyKX07dmFyIG1vPWZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPS0xLG49ci5sZW5ndGgsbz10Lmxlbmd0aDsrK2U8bjspdFtvK2VdPXJbZV07cmV0dXJuIHR9LEFvPV9yKE9iamVjdC5nZXRQcm90b3R5cGVPZixPYmplY3QpLFNvPW1vLFBvPUFvLHhvPWdvLHpvPXZvLEVvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM/ZnVuY3Rpb24odCl7Zm9yKHZhciByPVtdO3Q7KVNvKHIseG8odCkpLHQ9UG8odCk7cmV0dXJuIHJ9OnpvLElvPWhuLEZvPUVvO3ZhciBVbz1mdW5jdGlvbih0LHIpe3JldHVybiBJbyh0LEZvKHQpLHIpfSxNbz1tbyxUbz1vO3ZhciAkbz1mdW5jdGlvbih0LHIsZSl7dmFyIG49cih0KTtyZXR1cm4gVG8odCk/bjpNbyhuLGUodCkpfSxEbz0kbyxCbz1nbyxObz1Rbjt2YXIga289ZnVuY3Rpb24odCl7cmV0dXJuIERvKHQsTm8sQm8pfSxDbz0kbyxSbz1FbyxWbz1jbzt2YXIgV289ZnVuY3Rpb24odCl7cmV0dXJuIENvKHQsVm8sUm8pfSxMbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBxbz1mdW5jdGlvbih0KXt2YXIgcj10Lmxlbmd0aCxlPW5ldyB0LmNvbnN0cnVjdG9yKHIpO3JldHVybiByJiYic3RyaW5nIj09dHlwZW9mIHRbMF0mJkxvLmNhbGwodCwiaW5kZXgiKSYmKGUuaW5kZXg9dC5pbmRleCxlLmlucHV0PXQuaW5wdXQpLGV9LEdvPWkuVWludDhBcnJheTt2YXIgS289ZnVuY3Rpb24odCl7dmFyIHI9bmV3IHQuY29uc3RydWN0b3IodC5ieXRlTGVuZ3RoKTtyZXR1cm4gbmV3IEdvKHIpLnNldChuZXcgR28odCkpLHJ9LEhvPUtvO3ZhciBKbz1mdW5jdGlvbih0LHIpe3ZhciBlPXI/SG8odC5idWZmZXIpOnQuYnVmZmVyO3JldHVybiBuZXcgdC5jb25zdHJ1Y3RvcihlLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpfSxRbz0vXHcqJC87dmFyIFhvPWZ1bmN0aW9uKHQpe3ZhciByPW5ldyB0LmNvbnN0cnVjdG9yKHQuc291cmNlLFFvLmV4ZWModCkpO3JldHVybiByLmxhc3RJbmRleD10Lmxhc3RJbmRleCxyfSxZbz1mP2YucHJvdG90eXBlOnZvaWQgMCxabz1Zbz9Zby52YWx1ZU9mOnZvaWQgMDt2YXIgdHU9S287dmFyIHJ1PUtvLGV1PUpvLG51PVhvLG91PWZ1bmN0aW9uKHQpe3JldHVybiBabz9PYmplY3QoWm8uY2FsbCh0KSk6e319LHV1PWZ1bmN0aW9uKHQscil7dmFyIGU9cj90dSh0LmJ1ZmZlcik6dC5idWZmZXI7cmV0dXJuIG5ldyB0LmNvbnN0cnVjdG9yKGUsdC5ieXRlT2Zmc2V0LHQubGVuZ3RoKX07dmFyIGF1PWZ1bmN0aW9uKHQscixlKXt2YXIgbj10LmNvbnN0cnVjdG9yO3N3aXRjaChyKXtjYXNlIltvYmplY3QgQXJyYXlCdWZmZXJdIjpyZXR1cm4gcnUodCk7Y2FzZSJbb2JqZWN0IEJvb2xlYW5dIjpjYXNlIltvYmplY3QgRGF0ZV0iOnJldHVybiBuZXcgbigrdCk7Y2FzZSJbb2JqZWN0IERhdGFWaWV3XSI6cmV0dXJuIGV1KHQsZSk7Y2FzZSJbb2JqZWN0IEZsb2F0MzJBcnJheV0iOmNhc2UiW29iamVjdCBGbG9hdDY0QXJyYXldIjpjYXNlIltvYmplY3QgSW50OEFycmF5XSI6Y2FzZSJbb2JqZWN0IEludDE2QXJyYXldIjpjYXNlIltvYmplY3QgSW50MzJBcnJheV0iOmNhc2UiW29iamVjdCBVaW50OEFycmF5XSI6Y2FzZSJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSI6Y2FzZSJbb2JqZWN0IFVpbnQxNkFycmF5XSI6Y2FzZSJbb2JqZWN0IFVpbnQzMkFycmF5XSI6cmV0dXJuIHV1KHQsZSk7Y2FzZSJbb2JqZWN0IE1hcF0iOmNhc2UiW29iamVjdCBTZXRdIjpyZXR1cm4gbmV3IG47Y2FzZSJbb2JqZWN0IE51bWJlcl0iOmNhc2UiW29iamVjdCBTdHJpbmddIjpyZXR1cm4gbmV3IG4odCk7Y2FzZSJbb2JqZWN0IFJlZ0V4cF0iOnJldHVybiBudSh0KTtjYXNlIltvYmplY3QgU3ltYm9sXSI6cmV0dXJuIG91KHQpfX0sY3U9SSxpdT1PYmplY3QuY3JlYXRlLGZ1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gZnVuY3Rpb24ocil7aWYoIWN1KHIpKXJldHVybnt9O2lmKGl1KXJldHVybiBpdShyKTt0LnByb3RvdHlwZT1yO3ZhciBlPW5ldyB0O3JldHVybiB0LnByb3RvdHlwZT12b2lkIDAsZX19KCksbHU9QW8sc3U9Z3I7dmFyIHB1PWZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0LmNvbnN0cnVjdG9yfHxzdSh0KT97fTpmdShsdSh0KSl9LHZ1PUxyLGJ1PU87dmFyIHl1PWZ1bmN0aW9uKHQpe3JldHVybiBidSh0KSYmIltvYmplY3QgTWFwXSI9PXZ1KHQpfSxodT1NbixqdT1UbiYmVG4uaXNNYXAsZHU9anU/aHUoanUpOnl1LGd1PUxyLF91PU87dmFyIE91PWZ1bmN0aW9uKHQpe3JldHVybiBfdSh0KSYmIltvYmplY3QgU2V0XSI9PWd1KHQpfSx3dT1NbixtdT1UbiYmVG4uaXNTZXQsQXU9bXU/d3UobXUpOk91LFN1PW9uLFB1PXVuLHh1PXZuLHp1PVpuLEV1PWxvLEl1PXNvLEZ1PXBvLFV1PXdvLE11PVVvLFR1PWtvLCR1PVdvLER1PUxyLEJ1PXFvLE51PWF1LGt1PXB1LEN1PW8sUnU9UG4sVnU9ZHUsV3U9SSxMdT1BdSxxdT1RbixHdT1jbyxLdT0iW29iamVjdCBBcmd1bWVudHNdIixIdT0iW29iamVjdCBGdW5jdGlvbl0iLEp1PSJbb2JqZWN0IE9iamVjdF0iLFF1PXt9O1F1W0t1XT1RdVsiW29iamVjdCBBcnJheV0iXT1RdVsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1RdVsiW29iamVjdCBEYXRhVmlld10iXT1RdVsiW29iamVjdCBCb29sZWFuXSJdPVF1WyJbb2JqZWN0IERhdGVdIl09UXVbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPVF1WyJbb2JqZWN0IEZsb2F0NjRBcnJheV0iXT1RdVsiW29iamVjdCBJbnQ4QXJyYXldIl09UXVbIltvYmplY3QgSW50MTZBcnJheV0iXT1RdVsiW29iamVjdCBJbnQzMkFycmF5XSJdPVF1WyJbb2JqZWN0IE1hcF0iXT1RdVsiW29iamVjdCBOdW1iZXJdIl09UXVbSnVdPVF1WyJbb2JqZWN0IFJlZ0V4cF0iXT1RdVsiW29iamVjdCBTZXRdIl09UXVbIltvYmplY3QgU3RyaW5nXSJdPVF1WyJbb2JqZWN0IFN5bWJvbF0iXT1RdVsiW29iamVjdCBVaW50OEFycmF5XSJdPVF1WyJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSJdPVF1WyJbb2JqZWN0IFVpbnQxNkFycmF5XSJdPVF1WyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLFF1WyJbb2JqZWN0IEVycm9yXSJdPVF1W0h1XT1RdVsiW29iamVjdCBXZWFrTWFwXSJdPSExO3ZhciBYdT1mdW5jdGlvbiB0KHIsZSxuLG8sdSxhKXt2YXIgYyxpPTEmZSxmPTImZSxsPTQmZTtpZihuJiYoYz11P24ocixvLHUsYSk6bihyKSksdm9pZCAwIT09YylyZXR1cm4gYztpZighV3UocikpcmV0dXJuIHI7dmFyIHM9Q3Uocik7aWYocyl7aWYoYz1CdShyKSwhaSlyZXR1cm4gRnUocixjKX1lbHNle3ZhciBwPUR1KHIpLHY9cD09SHV8fCJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSI9PXA7aWYoUnUocikpcmV0dXJuIEl1KHIsaSk7aWYocD09SnV8fHA9PUt1fHx2JiYhdSl7aWYoYz1mfHx2P3t9Omt1KHIpLCFpKXJldHVybiBmP011KHIsRXUoYyxyKSk6VXUocix6dShjLHIpKX1lbHNle2lmKCFRdVtwXSlyZXR1cm4gdT9yOnt9O2M9TnUocixwLGkpfX1hfHwoYT1uZXcgU3UpO3ZhciBiPWEuZ2V0KHIpO2lmKGIpcmV0dXJuIGI7YS5zZXQocixjKSxMdShyKT9yLmZvckVhY2goKGZ1bmN0aW9uKG8pe2MuYWRkKHQobyxlLG4sbyxyLGEpKX0pKTpWdShyKSYmci5mb3JFYWNoKChmdW5jdGlvbihvLHUpe2Muc2V0KHUsdChvLGUsbix1LHIsYSkpfSkpO3ZhciB5PXM/dm9pZCAwOihsP2Y/JHU6VHU6Zj9HdTpxdSkocik7cmV0dXJuIFB1KHl8fHIsKGZ1bmN0aW9uKG8sdSl7eSYmKG89clt1PW9dKSx4dShjLHUsdChvLGUsbix1LHIsYSkpfSkpLGN9LFl1PVh1O3ZhciBadT1mdW5jdGlvbih0KXtyZXR1cm4gWXUodCw1KX07ZnVuY3Rpb24gdGEodCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiByYSh0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX12YXIgZWE9XyxuYT1PO3ZhciBvYT1mdW5jdGlvbih0KXtyZXR1cm4hMD09PXR8fCExPT09dHx8bmEodCkmJiJbb2JqZWN0IEJvb2xlYW5dIj09ZWEodCl9O2Z1bmN0aW9uIHVhKHQscj1udWxsLGU9e30pe1Qocil8fChyPXQ9PnQpO2xldCBuPWpyKGUsImZvcmNlIiwhMSk7cmV0dXJuIG9hKG4pfHwobj0hMSksZnVuY3Rpb24odCxyLGU9ITEpe2xldCBuPVtdO2lmKCF0YSh0KSYmIXJhKHQpKXJldHVybiByKHQsbnVsbCxbXSk7ZnVuY3Rpb24gbyh0KXtpZih0YSh0KSlyZXR1cm4gR2Uod2UodCkpO2lmKHJhKHQpKXtsZXQgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KSxuPW51bGw7cmV0dXJuIGUmJihuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCkpLHRhKHIpfHwocj1bXSksdGEobil8fChuPVtdKSxbLi4uciwuLi5uXX1yZXR1cm4gdH1yZXR1cm4gZnVuY3Rpb24gdChlLHUpe2lmKHRhKGUpKXJldHVybiBvKGUpLm1hcCgobz0+e2xldCB1PWVbb10sYT1adShuKTtyZXR1cm4gbi5wdXNoKG8pLHU9cih1LG8sYSksdT10KHUpLG4ucG9wKCksdX0pKTtpZihyYShlKSl7bGV0IHU9byhlKSxhPXt9O3JldHVybiB1Lm1hcCgobz0+e2xldCB1PWVbb10sYz1adShuKTtuLnB1c2gobyksdT1yKHUsbyxjKSx1PXQodSksbi5wb3AoKSxhW29dPXV9KSksYX1yZXR1cm4gZX0odCl9KHQscixuKX1mdW5jdGlvbiBhYSh0KXtyZXR1cm4hKCFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCl8fCIiPT09dCl9ZnVuY3Rpb24gY2EodCxyKXt2YXIgZT1PYmplY3Qua2V5cyh0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO3ImJihuPW4uZmlsdGVyKChmdW5jdGlvbihyKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LHIpLmVudW1lcmFibGV9KSkpLGUucHVzaC5hcHBseShlLG4pfXJldHVybiBlfWZ1bmN0aW9uIGlhKHQpe2Zvcih2YXIgcj0xO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1tyXT9hcmd1bWVudHNbcl06e307ciUyP2NhKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24ocil7ZSh0LHIsbltyXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6Y2EoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbihyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixyKSl9KSl9cmV0dXJuIHR9ZnVuY3Rpb24gZmEodCxyPXt9KXtpZih0YSh0KSl7aWYoMD09PXQubGVuZ3RoKXJldHVybltdfWVsc2V7aWYoIXJhKHQpKXJldHVybltdO2lmKGZ1bmN0aW9uKHQpe2lmKHJhKHQpKXtmb3IobGV0IHIgaW4gdClyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4hMX0odCkpcmV0dXJuW119bGV0IGU9anIociwiYmluZEtleSIsbnVsbCk7YWEoZSl8fChlPSJpZCIpO2xldCBuPWpyKHIsImJpbmRDaGlsZHJlbiIsbnVsbCk7YWEobil8fChuPSJjaGlsZHJlbiIpO2xldCBvPSExO3JhKHQpJiYobz0hMCx0PVt0XSk7bGV0IHU9W107cmV0dXJuIHVhKHQsKCh0LHIsbyk9PntsZXQgYT1qcih0LGUsbnVsbCksYz1qcih0LG4sbnVsbCk7aWYoYSl7bGV0IGU9ZnVuY3Rpb24odCl7bGV0IHI9W3RbMF1dO2ZvcihsZXQgZT0xO2U8dC5sZW5ndGg7ZSsrKXtsZXQgbz10W2VdO3IucHVzaChuKSxyLnB1c2gobyl9cmV0dXJuIHJ9KFsuLi5vLHJdKTtpZih1LnB1c2goaWEoaWEoe30sdCkse30se2xldmVsOih3ZShlKS0xKS8yLG5rOmV9KSksYylyZXR1cm4gY319KSksbyYmKHU9dVswXSksdX1hc3luYyBmdW5jdGlvbiBmbGF0dGVuVHJlZVdrKHQscj17fSl7cmV0dXJuIGZhKHQscil9CgpsZXQgaW5zdGFuY2UgPSBudWxsCmZ1bmN0aW9uIGluaXQoaW5wdXQpewoKICAgIC8vaW5pdAogICAgbGV0IHIKICAgIAogICAgICAgIHIgPSB7CiAgICAgICAgICAgIG1haW46IGZsYXR0ZW5UcmVlV2sKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gZmxhdHRlblRyZWVXawogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgc2VsZi5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICByZWN2TWVzc2FnZShlLmRhdGEpCiAgICAgICAgfQogICAgICAgIAoK");function I(){let I=new J;let l=function(d){try{let I=new Blob([d]),l=window.URL||window.webkitURL;return new Worker(l.createObjectURL(I))}catch(d){m(d)}}(d);if(!l)return m("invalid worker"),null;function b(){let d=function(){let d,I,l=new Promise((function(){d=arguments[0],I=arguments[1]}));return l.resolve=d,l.reject=I,l}(),b=function(){let d=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,I=[],l="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),b=l.length;for(let m=0;m<d;m++)I[m]=l[0|Math.random()*b];return I.join("")}(),m={mode:"call",id:b,fun:"main",input:[...arguments]};return l.postMessage(m),I.once(b,(I=>{"success"===I.state?d.resolve(I.msg):d.reject(I.msg)})),d}function m(d){I.emit("error",d)}return l.onmessage=function(d){!function(d){let l=d,b=l.mode;"emit"!==b&&"return"!==b||("emit"===b&&I.emit(l.evName,l.msg),"return"===b&&I.emit(l.id,l))}(d.data)},l.onerror=m,function(){let d={mode:"init",type:"function",input:[...arguments]};l.postMessage(d)}([...arguments]),I.main=b,I.main=b,I.terminate=function(){l?(l.terminate(),l=void 0):m("worker has been terminated")},I}t=async function(){let d=[...arguments],l=I();return await l.main(...d).finally((()=>{l.terminate()}))}}();var o=t;export{o as default};
@@ -22,6 +22,35 @@ async function core() {
22
22
  console.log(err)
23
23
  })
24
24
 
25
+ await rollupWorkerCore({
26
+ name: 'flattenTreeWk', //原模組名稱, 將來會掛於winodw下或於node引入使用
27
+ type: 'function', //原模組輸出為函數, 可傳入參數初始化
28
+ // execFunctionByInstance: true, //default, 原模組為計算函數回傳結果
29
+ fpSrc: path.resolve(fdSrc, 'flattenTreeWk.mjs'), //原始檔案路徑
30
+ fpTar: path.resolve(fdTar, 'flattenTreeWk.wk.umd.js'), //檔案輸出路徑
31
+ bNode: false,
32
+ formatOut: 'es',
33
+ bMinify: true, //false
34
+ })
35
+ .catch((err) => {
36
+ console.log(err)
37
+ })
38
+
39
+ //filepathToTree因opt可傳入soryItems為function, 此無法通過序列化傳入worker, 故不使用wk版
40
+ // await rollupWorkerCore({
41
+ // name: 'filepathToTreeWk', //原模組名稱, 將來會掛於winodw下或於node引入使用
42
+ // type: 'function', //原模組輸出為函數, 可傳入參數初始化
43
+ // // execFunctionByInstance: true, //default, 原模組為計算函數回傳結果
44
+ // fpSrc: path.resolve(fdSrc, 'filepathToTreeWk.mjs'), //原始檔案路徑
45
+ // fpTar: path.resolve(fdTar, 'filepathToTreeWk.wk.umd.js'), //檔案輸出路徑
46
+ // bNode: false,
47
+ // formatOut: 'es',
48
+ // bMinify: true, //false
49
+ // })
50
+ // .catch((err) => {
51
+ // console.log(err)
52
+ // })
53
+
25
54
  }
26
55
  core()
27
56
  .catch((err) => {