w-component-vue 2.4.73 → 2.4.74
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/w-component-vue.umd.js +3 -3
- package/dist/w-component-vue.umd.js.map +1 -1
- package/docs/binarySearch.mjs.html +1 -1
- package/docs/convertColor.mjs.html +1 -1
- package/docs/examples/app.html +1 -1
- package/docs/examples/app.umd.js +3 -3
- package/docs/examples/app.umd.js.map +1 -1
- package/docs/examples/w-aggrid-vue-dyn_defCellEditable.html +1 -1
- package/docs/examples/w-aggrid-vue-dyn_kpCellEditable_kpRowStyle.html +1 -1
- package/docs/examples/w-aggrid-vue-dyn_kpHeadTooltip_kpCellTooltip.html +1 -1
- package/docs/examples/w-aggrid-vue-dyn_large data (1,000,000 items).html +1 -1
- package/docs/examples/w-aggrid-vue-dyn_simple data.html +1 -1
- package/docs/examples/w-badge_backgroundColor.html +1 -1
- package/docs/examples/w-badge_badgeAlign.html +1 -1
- package/docs/examples/w-badge_borderColor_textColor_backgroundColor.html +1 -1
- package/docs/examples/w-badge_borderRadius.html +1 -1
- package/docs/examples/w-badge_default.html +1 -1
- package/docs/examples/w-badge_textColor_backgroundColor.html +1 -1
- package/docs/examples/w-badge_textFontSize.html +1 -1
- package/docs/examples/w-button-chip_active_backgroundColorActive.html +1 -1
- package/docs/examples/w-button-chip_active_borderColorActive.html +1 -1
- package/docs/examples/w-button-chip_active_iconColorActive.html +1 -1
- package/docs/examples/w-button-chip_active_no shadow_no shadowActive.html +1 -1
- package/docs/examples/w-button-chip_active_shadowActiveStyle.html +1 -1
- package/docs/examples/w-button-chip_active_textColorActive.html +1 -1
- package/docs/examples/w-button-chip_backgroundColor_backgroundColorHover.html +1 -1
- package/docs/examples/w-button-chip_borderColor_borderColorHover.html +1 -1
- package/docs/examples/w-button-chip_borderRadius.html +1 -1
- package/docs/examples/w-button-chip_borderRadiusStyle.html +1 -1
- package/docs/examples/w-button-chip_borderRadiusStyle_borderWidth_borderColor_borderColorHover.html +1 -1
- package/docs/examples/w-button-chip_borderWidth.html +1 -1
- package/docs/examples/w-button-chip_close.html +1 -1
- package/docs/examples/w-button-chip_close_shiftRight.html +1 -1
- package/docs/examples/w-button-chip_default.html +1 -1
- package/docs/examples/w-button-chip_displayType.html +1 -1
- package/docs/examples/w-button-chip_icon (fontawesome).html +1 -1
- package/docs/examples/w-button-chip_icon (material).html +1 -1
- package/docs/examples/w-button-chip_icon_iconColor_iconColorHover_close.html +1 -1
- package/docs/examples/w-button-chip_icon_no text.html +1 -1
- package/docs/examples/w-button-chip_loading.html +1 -1
- package/docs/examples/w-button-chip_loading_loadingColor.html +1 -1
- package/docs/examples/w-button-chip_loading_textColor_textColorHover.html +1 -1
- package/docs/examples/w-button-chip_modify loading by callback in click.html +1 -1
- package/docs/examples/w-button-chip_modify prog by callback in click.html +1 -1
- package/docs/examples/w-button-chip_no shadow.html +1 -1
- package/docs/examples/w-button-chip_not editable.html +1 -1
- package/docs/examples/w-button-chip_not editable_disabledColor.html +1 -1
- package/docs/examples/w-button-chip_paddingStyle (equal height to using icon).html +1 -1
- package/docs/examples/w-button-chip_paddingStyle (thin style).html +1 -1
- package/docs/examples/w-button-chip_paddingStyle_icon_iconSize_textFontSize.html +1 -1
- package/docs/examples/w-button-chip_prog.html +1 -1
- package/docs/examples/w-button-chip_prog_progColor_progBackgroundColor.html +1 -1
- package/docs/examples/w-button-chip_promiseUnlock.html +1 -1
- package/docs/examples/w-button-chip_rippleColor.html +1 -1
- package/docs/examples/w-button-chip_shadowStyle.html +1 -1
- package/docs/examples/w-button-chip_shiftLeft.html +1 -1
- package/docs/examples/w-button-chip_slot_close.html +1 -1
- package/docs/examples/w-button-chip_textColor.html +1 -1
- package/docs/examples/w-button-chip_textColor_textColorHover.html +1 -1
- package/docs/examples/w-button-chip_tooltip.html +1 -1
- package/docs/examples/w-button-chip_tooltip_tooltipBorderRadius.html +1 -1
- package/docs/examples/w-button-chip_tooltip_tooltipPaddingStyle.html +1 -1
- package/docs/examples/w-button-chip_tooltip_tooltipTextColor_tooltipBackgroundColor.html +1 -1
- package/docs/examples/w-button-chip_tooltip_tooltipTextFontSize.html +1 -1
- package/docs/examples/w-button-circle_active_backgroundColor_backgroundColorHover_backgroundColorFocus.html +1 -1
- package/docs/examples/w-button-circle_active_borderWidth_borderColor_borderColorHover.html +1 -1
- package/docs/examples/w-button-circle_active_iconColor_iconColorHover_iconColorFocus.html +1 -1
- package/docs/examples/w-button-circle_backgroundColor_backgroundColorHover_backgroundColorFocus.html +1 -1
- package/docs/examples/w-button-circle_borderRadius.html +1 -1
- package/docs/examples/w-button-circle_borderRadiusStyle(horizontal btns).html +1 -1
- package/docs/examples/w-button-circle_borderRadiusStyle(vertical btns).html +1 -1
- package/docs/examples/w-button-circle_borderWidth_borderColor_borderColorHover_borderColorFocus.html +1 -1
- package/docs/examples/w-button-circle_icon (fontawesome).html +1 -1
- package/docs/examples/w-button-circle_icon (material).html +1 -1
- package/docs/examples/w-button-circle_iconColor_iconColorHover_iconColorFocus.html +1 -1
- package/docs/examples/w-button-circle_loading.html +1 -1
- package/docs/examples/w-button-circle_loading_loadingColor.html +1 -1
- package/docs/examples/w-button-circle_no shadow.html +1 -1
- package/docs/examples/w-button-circle_not editable.html +1 -1
- package/docs/examples/w-button-circle_not editable_disabledColor.html +1 -1
- package/docs/examples/w-button-circle_paddingStyle.html +1 -1
- package/docs/examples/w-button-circle_paddingStyle_iconSize.html +1 -1
- package/docs/examples/w-button-circle_promiseUnlock.html +1 -1
- package/docs/examples/w-button-circle_rippleColor.html +1 -1
- package/docs/examples/w-button-circle_shadowStyle.html +1 -1
- package/docs/examples/w-button-circle_tooltip.html +1 -1
- package/docs/examples/w-button-circle_tooltip_tooltipBorderRadius.html +1 -1
- package/docs/examples/w-button-circle_tooltip_tooltipPaddingStyle.html +1 -1
- package/docs/examples/w-button-circle_tooltip_tooltipTextColor_tooltipBackgroundColor.html +1 -1
- package/docs/examples/w-button-circle_tooltip_tooltipTextFontSize.html +1 -1
- package/docs/examples/w-checkbox_checkedIconColor_checkedIconColorHover_uncheckedIconColor_uncheckedIconColorHover.html +1 -1
- package/docs/examples/w-checkbox_checkedIcon_uncheckedIcon.html +1 -1
- package/docs/examples/w-checkbox_default.html +1 -1
- package/docs/examples/w-checkbox_iconSize_textFontSize.html +1 -1
- package/docs/examples/w-checkbox_not editable.html +1 -1
- package/docs/examples/w-checkbox_not editable_checkedIconColorDisabled_uncheckedIconColorDisabled.html +1 -1
- package/docs/examples/w-checkbox_slot.html +1 -1
- package/docs/examples/w-checkbox_text.html +1 -1
- package/docs/examples/w-checkbox_text_textColor_textColorHover.html +1 -1
- package/docs/examples/w-checkbox_use string (y or n).html +1 -1
- package/docs/examples/w-checkbox_verticalAlign.html +1 -1
- package/docs/examples/w-ckeditor-vue-dyn_default.html +1 -1
- package/docs/examples/w-ckeditor-vue-dyn_height.html +1 -1
- package/docs/examples/w-ckeditor-vue-dyn_not editable.html +1 -1
- package/docs/examples/w-ckeditor-vue-dyn_settings.html +1 -1
- package/docs/examples/w-color-pick-alpha_color.html +1 -1
- package/docs/examples/w-color-pick-alpha_cursorSize.html +1 -1
- package/docs/examples/w-color-pick-alpha_default.html +1 -1
- package/docs/examples/w-color-pick-alpha_width_height.html +1 -1
- package/docs/examples/w-color-pick-hexagon-gray_default.html +1 -1
- package/docs/examples/w-color-pick-hexagon-gray_size.html +1 -1
- package/docs/examples/w-color-pick-hexagon-gray_space.html +1 -1
- package/docs/examples/w-color-pick-hexagon_default.html +1 -1
- package/docs/examples/w-color-pick-hexagon_size.html +1 -1
- package/docs/examples/w-color-pick-hsv_color.html +1 -1
- package/docs/examples/w-color-pick-hsv_cursorSize.html +1 -1
- package/docs/examples/w-color-pick-hsv_default.html +1 -1
- package/docs/examples/w-color-pick-hsv_width_height.html +1 -1
- package/docs/examples/w-color-pick-hue_cursorSize.html +1 -1
- package/docs/examples/w-color-pick-hue_default.html +1 -1
- package/docs/examples/w-color-pick-hue_width_height.html +1 -1
- package/docs/examples/w-color-pick-stripe_colorLeft_colorRight.html +1 -1
- package/docs/examples/w-color-pick-stripe_colorNum.html +1 -1
- package/docs/examples/w-color-pick-stripe_default.html +1 -1
- package/docs/examples/w-color-pick-stripe_width_height.html +1 -1
- package/docs/examples/w-color-select-input_barProgColor_barProgBackgroundColor_barSliderBackgroundColor_barSliderBackgroundColorHover.html +1 -1
- package/docs/examples/w-color-select-input_barProgHeight.html +1 -1
- package/docs/examples/w-color-select-input_barSliderSize.html +1 -1
- package/docs/examples/w-color-select-input_borderColor_borderColorHover_borderColorActive.html +1 -1
- package/docs/examples/w-color-select-input_default.html +1 -1
- package/docs/examples/w-color-select-input_inputBackgroundColor_inputBackgroundColorHover_inputBackgroundColorActive.html +1 -1
- package/docs/examples/w-color-select-input_inputBorderColor_inputBorderColorHover_inputBorderColorActive.html +1 -1
- package/docs/examples/w-color-select-input_inputBorderRadius.html +1 -1
- package/docs/examples/w-color-select-input_inputLabelColor.html +1 -1
- package/docs/examples/w-color-select-input_inputLabelWidth_inputLabelFontSize.html +1 -1
- package/docs/examples/w-color-select-input_inputTextColor.html +1 -1
- package/docs/examples/w-color-select-input_inputTextFontSize_inputTextWidth_inputTextHeight.html +1 -1
- package/docs/examples/w-color-select-input_menuBackgroundColor_menuBackgroundColorHover_menuBackgroundColorActive.html +1 -1
- package/docs/examples/w-color-select-input_menuBorderRadius.html +1 -1
- package/docs/examples/w-color-select-input_menuBorderRadius_borderColor_borderColorHover_borderColorActive.html +1 -1
- package/docs/examples/w-color-select-input_menuTextColor_menuTextColorHover_menuTextColorActive.html +1 -1
- package/docs/examples/w-color-select-input_menuTextFontSize.html +1 -1
- package/docs/examples/w-color-select-input_size.html +1 -1
- package/docs/examples/w-color-select-panel-block_default.html +1 -1
- package/docs/examples/w-color-select-panel-block_size.html +1 -1
- package/docs/examples/w-color-select-panel-block_spaceGray_spaceAlpha.html +1 -1
- package/docs/examples/w-color-select-panel-hsva_default.html +1 -1
- package/docs/examples/w-color-select-panel-hsva_size.html +1 -1
- package/docs/examples/w-color-select-panel-hsva_space.html +1 -1
- package/docs/examples/w-color-select-panel_backgroundColor.html +1 -1
- package/docs/examples/w-color-select-panel_default.html +1 -1
- package/docs/examples/w-color-select-panel_size.html +1 -1
- package/docs/examples/w-color-select-panel_space.html +1 -1
- package/docs/examples/w-color-select-panel_type.html +1 -1
- package/docs/examples/w-color-select_barProgColor_barProgBackgroundColor_barSliderBackgroundColor_barSliderBackgroundColorHover.html +1 -1
- package/docs/examples/w-color-select_barProgHeight.html +1 -1
- package/docs/examples/w-color-select_barSliderSize.html +1 -1
- package/docs/examples/w-color-select_btnBackgroundColor_btnBackgroundColorHover_btnBackgroundColorActive.html +1 -1
- package/docs/examples/w-color-select_btnBorderRadius.html +1 -1
- package/docs/examples/w-color-select_btnPaddingStyle.html +1 -1
- package/docs/examples/w-color-select_btnText.html +1 -1
- package/docs/examples/w-color-select_btnTextColor_btnTextColorHover_btnTextColorActive.html +1 -1
- package/docs/examples/w-color-select_btnTextFontSize.html +1 -1
- package/docs/examples/w-color-select_colorBlockBorderColor.html +1 -1
- package/docs/examples/w-color-select_colorBlockBorderColor_colorTextColor_borderColor_borderColorHover.html +1 -1
- package/docs/examples/w-color-select_colorBlockBorderWidth.html +1 -1
- package/docs/examples/w-color-select_colorBlockSize.html +1 -1
- package/docs/examples/w-color-select_colorTextColor.html +1 -1
- package/docs/examples/w-color-select_colorTextFontSize.html +1 -1
- package/docs/examples/w-color-select_default.html +1 -1
- package/docs/examples/w-color-select_inputBackgroundColor_inputBackgroundColorHover_inputBackgroundColorActive.html +1 -1
- package/docs/examples/w-color-select_inputBorderColor_inputBorderColorHover_inputBorderColorActive.html +1 -1
- package/docs/examples/w-color-select_inputBorderRadius.html +1 -1
- package/docs/examples/w-color-select_inputLabelColor.html +1 -1
- package/docs/examples/w-color-select_inputLabelWidth_inputLabelFontSize.html +1 -1
- package/docs/examples/w-color-select_inputTextColor.html +1 -1
- package/docs/examples/w-color-select_inputTextFontSize_inputTextWidth_inputTextHeight.html +1 -1
- package/docs/examples/w-color-select_menuBackgroundColor_menuBackgroundColorHover_menuBackgroundColorActive.html +1 -1
- package/docs/examples/w-color-select_menuBorderRadius.html +1 -1
- package/docs/examples/w-color-select_menuIconColor_menuIconColorHover_menuIconColorActive.html +1 -1
- package/docs/examples/w-color-select_menuIconLump_menuIconHsva_menuIconEyeDropper.html +1 -1
- package/docs/examples/w-color-select_menuIconSize.html +1 -1
- package/docs/examples/w-color-select_menuTextColor_menuTextColorHover_menuTextColorActive.html +1 -1
- package/docs/examples/w-color-select_menuTextFontSize.html +1 -1
- package/docs/examples/w-color-select_not editable.html +1 -1
- package/docs/examples/w-color-select_panelBackgroundColor.html +1 -1
- package/docs/examples/w-color-select_showColorText.html +1 -1
- package/docs/examples/w-color-select_size.html +1 -1
- package/docs/examples/w-color-select_toolBackgroundColor.html +1 -1
- package/docs/examples/w-confirm_contentColor_contentIconColor_contentBackgroundColor.html +1 -1
- package/docs/examples/w-confirm_contentIcon (fontawesome).html +1 -1
- package/docs/examples/w-confirm_contentIconColor.html +1 -1
- package/docs/examples/w-confirm_contentIconSize.html +1 -1
- package/docs/examples/w-confirm_hasNoBtn_yesBtnText.html +1 -1
- package/docs/examples/w-confirm_maxWidth.html +1 -1
- package/docs/examples/w-confirm_noBtnTextColor_noBtnTextColorHover_noBtnBackgroundColor_noBtnBackgroundColorHover.html +1 -1
- package/docs/examples/w-confirm_noBtnText_yesBtnText.html +1 -1
- package/docs/examples/w-confirm_scrollable (slot content).html +1 -1
- package/docs/examples/w-confirm_scrollable.html +1 -1
- package/docs/examples/w-confirm_slot content.html +1 -1
- package/docs/examples/w-confirm_slot footer.html +1 -1
- package/docs/examples/w-confirm_slot header.html +1 -1
- package/docs/examples/w-confirm_titleColor_headerBackgroundColor_footerBackgroundColor.html +1 -1
- package/docs/examples/w-confirm_title_content.html +1 -1
- package/docs/examples/w-dialog_closeWithInterceptor.html +1 -1
- package/docs/examples/w-dialog_contentTextColor_contentBackgroundColor.html +1 -1
- package/docs/examples/w-dialog_dialogZIndex.html +1 -1
- package/docs/examples/w-dialog_fullscreen.html +1 -1
- package/docs/examples/w-dialog_hasSaveBtn (no save button).html +1 -1
- package/docs/examples/w-dialog_hasSaveBtn_hasCloseBtn_isModal (no save and close button).html +1 -1
- package/docs/examples/w-dialog_headerBackgroundColor.html +1 -1
- package/docs/examples/w-dialog_headerBtns.html +1 -1
- package/docs/examples/w-dialog_headerShadow (no shadow).html +1 -1
- package/docs/examples/w-dialog_headerShadowStyle.html +1 -1
- package/docs/examples/w-dialog_icon (fontawesome).html +1 -1
- package/docs/examples/w-dialog_isModal (not persistent).html +1 -1
- package/docs/examples/w-dialog_long title.html +1 -1
- package/docs/examples/w-dialog_maxWidth (narrow width).html +1 -1
- package/docs/examples/w-dialog_multi dialogs.html +1 -1
- package/docs/examples/w-dialog_panelBorderRadius.html +1 -1
- package/docs/examples/w-dialog_panelShadow (no shadow).html +1 -1
- package/docs/examples/w-dialog_panelShadowStyle.html +1 -1
- package/docs/examples/w-dialog_saveBtnTooltip_closeBtnTooltip.html +1 -1
- package/docs/examples/w-dialog_scrollable.html +1 -1
- package/docs/examples/w-dialog_slot content (separate line).html +1 -1
- package/docs/examples/w-dialog_slot content (table).html +1 -1
- package/docs/examples/w-dialog_slot content.html +1 -1
- package/docs/examples/w-dialog_slot header-left_header-right.html +1 -1
- package/docs/examples/w-dialog_slot panel.html +1 -1
- package/docs/examples/w-dialog_title.html +1 -1
- package/docs/examples/w-dialog_titleColor_headerIconColor_headerBackgroundColor.html +1 -1
- package/docs/examples/w-drawer_afloat.html +1 -1
- package/docs/examples/w-drawer_afloat_afloatByFix.html +1 -1
- package/docs/examples/w-drawer_afloat_afloatByFix_dragDrawerWidth.html +1 -1
- package/docs/examples/w-drawer_afloat_afloatByFix_mode.html +1 -1
- package/docs/examples/w-drawer_afloat_afloatByFix_mode_dragDrawerWidth.html +1 -1
- package/docs/examples/w-drawer_afloat_dragDrawerWidth.html +1 -1
- package/docs/examples/w-drawer_afloat_dragDrawerWidth_drawerWidthMin_drawerWidthMax.html +1 -1
- package/docs/examples/w-drawer_afloat_mode.html +1 -1
- package/docs/examples/w-drawer_afloat_mode_dragDrawerWidth.html +1 -1
- package/docs/examples/w-drawer_afloat_mode_dragDrawerWidth_drawerWidthMin.html +1 -1
- package/docs/examples/w-drawer_afloat_overlayOpacity.html +1 -1
- package/docs/examples/w-drawer_autoSwitchToFloat_switchWidth_afloat.html +1 -1
- package/docs/examples/w-drawer_autoSwitchToHide_switchWidth.html +1 -1
- package/docs/examples/w-drawer_autoSwitchToShow_switchWidth.html +1 -1
- package/docs/examples/w-drawer_default.html +1 -1
- package/docs/examples/w-drawer_dragDrawerWidth_drawerBarBorderColor_drawerBarBorderSize.html +1 -1
- package/docs/examples/w-drawer_dragDrawerWidth_drawerBarColor_drawerBarSize.html +1 -1
- package/docs/examples/w-drawer_dragDrawerWidth_drawerWidth(sync).html +1 -1
- package/docs/examples/w-drawer_dragDrawerWidth_drawerWidthMin_drawerWidthMax.html +1 -1
- package/docs/examples/w-drawer_drawerWidth.html +1 -1
- package/docs/examples/w-drawer_mode.html +1 -1
- package/docs/examples/w-drawer_mode_dragDrawerWidth.html +1 -1
- package/docs/examples/w-drawer_multiple_dragDrawerWidth_drawerWidthMin_drawerWidthMax.html +1 -1
- package/docs/examples/w-dropfiles_backgroundColor_backgroundColorDropIn_backgroundColorHover.html +1 -1
- package/docs/examples/w-dropfiles_borderColor_borderColorDropIn_borderColorHover_backgroundColorDropIn.html +1 -1
- package/docs/examples/w-dropfiles_borderRadius.html +1 -1
- package/docs/examples/w-dropfiles_borderWidth.html +1 -1
- package/docs/examples/w-dropfiles_default.html +1 -1
- package/docs/examples/w-dropfiles_timeTransition.html +1 -1
- package/docs/examples/w-explorer_bindRoot.html +1 -1
- package/docs/examples/w-explorer_btnDisplayTreeBackgroundColor_btnDisplayTreeBackgroundColorHover_btnDisplayTreeBackgroundColorFocus.html +1 -1
- package/docs/examples/w-explorer_btnDisplayTreeIconColor_btnDisplayTreeIconColorHover_btnDisplayTreeIconColorFocus.html +1 -1
- package/docs/examples/w-explorer_btnDisplayTreeIconShow_btnDisplayTreeIconHide_btnDisplayTreeIconSize.html +1 -1
- package/docs/examples/w-explorer_dark mode.html +1 -1
- package/docs/examples/w-explorer_default.html +1 -1
- package/docs/examples/w-explorer_defaultShowTreeFirst.html +1 -1
- package/docs/examples/w-explorer_defaultShowTreeFirst_noSelectedText.html +1 -1
- package/docs/examples/w-explorer_draggable.html +1 -1
- package/docs/examples/w-explorer_draggable_dgInsertLineColor_dgInsertBackgroundColor_dgBelongBackgroundColor.html +1 -1
- package/docs/examples/w-explorer_draggable_dgPreviewOpacity_dgPreviewBorderWidth_dgBelongBackgroundColor.html +1 -1
- package/docs/examples/w-explorer_draggable_dgTextDisabled_dgTextDisabledColor_dgTextDisabledPaddingLeft.html +1 -1
- package/docs/examples/w-explorer_events.html +1 -1
- package/docs/examples/w-explorer_funSortTree.html +1 -1
- package/docs/examples/w-explorer_lineBetweenPathAndListWidth_lineBetweenPathAndListColor.html +1 -1
- package/docs/examples/w-explorer_listBackgroundColor.html +1 -1
- package/docs/examples/w-explorer_listFolderIcon_listFileIcon_listIconSize.html +1 -1
- package/docs/examples/w-explorer_listItemBackgroundColor_listItemBackgroundColorHover_listItemBackgroundColorActive.html +1 -1
- package/docs/examples/w-explorer_listItemIconColor_listItemIconColorHover_listItemIconColorActive.html +1 -1
- package/docs/examples/w-explorer_listItemRippleColor.html +1 -1
- package/docs/examples/w-explorer_listItemTextColor_listItemTextColorHover_listItemTextColorActive.html +1 -1
- package/docs/examples/w-explorer_listItemTextFontSize.html +1 -1
- package/docs/examples/w-explorer_listPaddingStyle.html +1 -1
- package/docs/examples/w-explorer_operatable.html +1 -1
- package/docs/examples/w-explorer_operatable_draggable.html +1 -1
- package/docs/examples/w-explorer_operatable_editorRenameCancelBtnBackgroundColor_editorRenameCancelBtnBackgroundColorHover.html +1 -1
- package/docs/examples/w-explorer_operatable_editorRenameCancelBtnIcon_editorRenameCancelBtnIconSize_editorRenameCancelBtnIconColor.html +1 -1
- package/docs/examples/w-explorer_operatable_editorRenameCancelBtnText_editorRenameCancelBtnTextColor_editorRenameCancelBtnTextColorHover.html +1 -1
- package/docs/examples/w-explorer_operatable_editorRenameContentBackgroundColor_editorRenameFooterBackgroundColor.html +1 -1
- package/docs/examples/w-explorer_operatable_editorRenameInputTextColor_editorRenameInputTextBottomLineBorderColor_editorRenameInputTextBottomLineBorderColorHover.html +1 -1
- package/docs/examples/w-explorer_operatable_editorRenameSaveBtnBackgroundColor_editorRenameSaveBtnBackgroundColorHover.html +1 -1
- package/docs/examples/w-explorer_operatable_editorRenameSaveBtnIcon_editorRenameSaveBtnIconSize_editorRenameSaveBtnIconColor.html +1 -1
- package/docs/examples/w-explorer_operatable_editorRenameSaveBtnText_editorRenameSaveBtnTextColor_editorRenameSaveBtnTextColorHover.html +1 -1
- package/docs/examples/w-explorer_operatable_operateBtnBackgroundColor_operateBtnBackgroundColorHover_operateBtnBackgroundColorFocus.html +1 -1
- package/docs/examples/w-explorer_operatable_operateBtnTooltip_operateItemTextForRename_perateItemTextForInsertChild.html +1 -1
- package/docs/examples/w-explorer_operatable_operateItemBackgroundColor_operateItemBackgroundColorHover_operateItemTextColor.html +1 -1
- package/docs/examples/w-explorer_operatable_operateItemHeight_operateItemIconSize_operateItemPaddingStyle.html +1 -1
- package/docs/examples/w-explorer_operatable_operateItemIconForRename_operateItemIconForInsertChild_operateItemIconForDelete.html +1 -1
- package/docs/examples/w-explorer_operatable_operatePanelWidth_operatePanelHeight_operateItemIconSize.html +1 -1
- package/docs/examples/w-explorer_pathBackgroundColor.html +1 -1
- package/docs/examples/w-explorer_pathBtnBackgroundColor_pathBtnBackgroundColorHover.html +1 -1
- package/docs/examples/w-explorer_pathBtnTextColor_pathBtnTextColorHover.html +1 -1
- package/docs/examples/w-explorer_pathBtnTextFontSize.html +1 -1
- package/docs/examples/w-explorer_pathSepIcon_pathSepIconColor_pathSepIconSize.html +1 -1
- package/docs/examples/w-explorer_showTree.html +1 -1
- package/docs/examples/w-explorer_slot folder-item.html +1 -1
- package/docs/examples/w-explorer_slot list-item-cover.html +1 -1
- package/docs/examples/w-explorer_slot list-item-sub.html +1 -1
- package/docs/examples/w-explorer_slot list-item-text-left.html +1 -1
- package/docs/examples/w-explorer_slot list-item-text-right.html +1 -1
- package/docs/examples/w-explorer_slot list-item_list-item-cover_list-head_list-foot.html +1 -1
- package/docs/examples/w-explorer_small text.html +1 -1
- package/docs/examples/w-explorer_toggleTreeFoldersAll.html +1 -1
- package/docs/examples/w-explorer_toggleTreeFoldersByFun.html +1 -1
- package/docs/examples/w-explorer_treeAfloat.html +1 -1
- package/docs/examples/w-explorer_treeBackgroundColor.html +1 -1
- package/docs/examples/w-explorer_treeDefItemHeight_listDefItemHeight.html +1 -1
- package/docs/examples/w-explorer_treeDefaultDisplayLevel.html +1 -1
- package/docs/examples/w-explorer_treeDrawerBarSize_treeDrawerBarColor.html +1 -1
- package/docs/examples/w-explorer_treeFolderIconColor_treeFolderIconColorHover_treeFolderIconColorActive.html +1 -1
- package/docs/examples/w-explorer_treeFolderIcon_treeFolderIconSize.html +1 -1
- package/docs/examples/w-explorer_treeIndent.html +1 -1
- package/docs/examples/w-explorer_treeItemBackgroundColor_treeItemBackgroundColorHover_treeItemBackgroundColorActive.html +1 -1
- package/docs/examples/w-explorer_treeItemRippleColor.html +1 -1
- package/docs/examples/w-explorer_treeItemTextColor_treeItemTextColorHover_treeItemTextColorActive.html +1 -1
- package/docs/examples/w-explorer_treeItemTextFontSize.html +1 -1
- package/docs/examples/w-explorer_treePaddingStyle.html +1 -1
- package/docs/examples/w-explorer_treeToggleIconColor_treeToggleIconBackgroundColor_treeToggleIconBackgroundColorHover.html +1 -1
- package/docs/examples/w-explorer_treeToggleIconSize.html +1 -1
- package/docs/examples/w-explorer_treeWidth.html +1 -1
- package/docs/examples/w-explorer_treeWidthMin_treeWidthMax.html +1 -1
- package/docs/examples/w-explorer_triggerClickTreeFolderByFun.html +1 -1
- package/docs/examples/w-explorer_triggerClickTreeFolderById.html +1 -1
- package/docs/examples/w-group-baggage_connLineColor.html +1 -1
- package/docs/examples/w-group-baggage_connLineWidth.html +1 -1
- package/docs/examples/w-group-baggage_connLineZoneWidth.html +1 -1
- package/docs/examples/w-group-baggage_contentBackgroundColor_contentBackgroundColorHover.html +1 -1
- package/docs/examples/w-group-baggage_contentBorderColor_contentBorderColorHover.html +1 -1
- package/docs/examples/w-group-baggage_contentBorderRadius.html +1 -1
- package/docs/examples/w-group-baggage_contentBorderWidth.html +1 -1
- package/docs/examples/w-group-baggage_contentPaddingStyle.html +1 -1
- package/docs/examples/w-group-baggage_contentTextColor_contentTextColorHover.html +1 -1
- package/docs/examples/w-group-baggage_contentTextFontSize.html +1 -1
- package/docs/examples/w-group-baggage_default.html +1 -1
- package/docs/examples/w-group-baggage_keyTag_keyText.html +1 -1
- package/docs/examples/w-group-baggage_slot tag.html +1 -1
- package/docs/examples/w-group-baggage_slot text-sub.html +1 -1
- package/docs/examples/w-group-baggage_slot text_contentPaddingStyle.html +1 -1
- package/docs/examples/w-group-baggage_tagBackgroundColor_tagBackgroundColorHover.html +1 -1
- package/docs/examples/w-group-baggage_tagBorderColor_tagBorderColorHover.html +1 -1
- package/docs/examples/w-group-baggage_tagBorderRadius.html +1 -1
- package/docs/examples/w-group-baggage_tagBorderWidth.html +1 -1
- package/docs/examples/w-group-baggage_tagClickable_contentClickable_events.html +1 -1
- package/docs/examples/w-group-baggage_tagDistBetweenTopAndBaseline.html +1 -1
- package/docs/examples/w-group-baggage_tagPaddingStyle_contentShiftTopFromBaseline.html +1 -1
- package/docs/examples/w-group-baggage_tagTextColor_tagTextColorHover.html +1 -1
- package/docs/examples/w-group-baggage_tagTextFontSize_contentShiftTopFromBaseline.html +1 -1
- package/docs/examples/w-group-chip-check_backgroundColorActive.html +1 -1
- package/docs/examples/w-group-chip-check_backgroundColor_backgroundColorHover.html +1 -1
- package/docs/examples/w-group-chip-check_borderColor_borderColorHover_borderColorActive.html +1 -1
- package/docs/examples/w-group-chip-check_borderRadius.html +1 -1
- package/docs/examples/w-group-chip-check_borderRadius_borderRadiusStyle_paddingStyle.html +1 -1
- package/docs/examples/w-group-chip-check_borderWidth_borderColor_borderColorHover_borderColorActive.html +1 -1
- package/docs/examples/w-group-chip-check_click (console.log).html +1 -1
- package/docs/examples/w-group-chip-check_default.html +1 -1
- package/docs/examples/w-group-chip-check_group (only one).html +1 -1
- package/docs/examples/w-group-chip-check_group_borderColor_borderColorHover_borderColorActive.html +1 -1
- package/docs/examples/w-group-chip-check_group_groupBorderRadiusStyle_groupShift_borderRadius.html +1 -1
- package/docs/examples/w-group-chip-check_icon (fontawesome).html +1 -1
- package/docs/examples/w-group-chip-check_icon (material).html +1 -1
- package/docs/examples/w-group-chip-check_iconColorActive.html +1 -1
- package/docs/examples/w-group-chip-check_iconColor_iconColorHover.html +1 -1
- package/docs/examples/w-group-chip-check_loading.html +1 -1
- package/docs/examples/w-group-chip-check_loading_loadingColor.html +1 -1
- package/docs/examples/w-group-chip-check_marginStyle.html +1 -1
- package/docs/examples/w-group-chip-check_no shadowActive.html +1 -1
- package/docs/examples/w-group-chip-check_not editable.html +1 -1
- package/docs/examples/w-group-chip-check_paddingStyle_borderRadius_textColor_iconColor.html +1 -1
- package/docs/examples/w-group-chip-check_paddingStyle_iconSize_textFontSize.html +1 -1
- package/docs/examples/w-group-chip-check_shadow.html +1 -1
- package/docs/examples/w-group-chip-check_shadowActiveStyle.html +1 -1
- package/docs/examples/w-group-chip-check_shadow_shadowStyle.html +1 -1
- package/docs/examples/w-group-chip-check_shiftLeft.html +1 -1
- package/docs/examples/w-group-chip-check_shiftLeft_shiftRight.html +1 -1
- package/docs/examples/w-group-chip-check_slot_shadow.html +1 -1
- package/docs/examples/w-group-chip-check_textColor.html +1 -1
- package/docs/examples/w-group-chip-check_textColorActive.html +1 -1
- package/docs/examples/w-group-chip-check_textColor_textColorHover.html +1 -1
- package/docs/examples/w-group-chip-check_tooltip.html +1 -1
- package/docs/examples/w-group-chip-check_tooltip_tooltipBorderRadius.html +1 -1
- package/docs/examples/w-group-chip-check_tooltip_tooltipPaddingStyle.html +1 -1
- package/docs/examples/w-group-chip-check_tooltip_tooltipTextColor_tooltipBackgroundColor.html +1 -1
- package/docs/examples/w-group-chip-check_tooltip_tooltipTextFontSize.html +1 -1
- package/docs/examples/w-group-chip-radio_backgroundColorActive.html +1 -1
- package/docs/examples/w-group-chip-radio_backgroundColor_backgroundColorHover.html +1 -1
- package/docs/examples/w-group-chip-radio_borderColor_borderColorHover_borderColorActive.html +1 -1
- package/docs/examples/w-group-chip-radio_borderRadius.html +1 -1
- package/docs/examples/w-group-chip-radio_borderRadius_borderRadiusStyle_paddingStyle.html +1 -1
- package/docs/examples/w-group-chip-radio_borderWidth_borderColor_borderColorHover_borderColorActive.html +1 -1
- package/docs/examples/w-group-chip-radio_click (console.log).html +1 -1
- package/docs/examples/w-group-chip-radio_default.html +1 -1
- package/docs/examples/w-group-chip-radio_group (only one).html +1 -1
- package/docs/examples/w-group-chip-radio_group_borderColor_borderColorHover_borderColorActive.html +1 -1
- package/docs/examples/w-group-chip-radio_group_groupBorderRadiusStyle_groupShift_borderRadius.html +1 -1
- package/docs/examples/w-group-chip-radio_icon (fontawesome).html +1 -1
- package/docs/examples/w-group-chip-radio_icon (material).html +1 -1
- package/docs/examples/w-group-chip-radio_iconColorActive.html +1 -1
- package/docs/examples/w-group-chip-radio_iconColor_iconColorHover.html +1 -1
- package/docs/examples/w-group-chip-radio_loading.html +1 -1
- package/docs/examples/w-group-chip-radio_loading_loadingColor.html +1 -1
- package/docs/examples/w-group-chip-radio_marginStyle.html +1 -1
- package/docs/examples/w-group-chip-radio_no shadowActive.html +1 -1
- package/docs/examples/w-group-chip-radio_not editable.html +1 -1
- package/docs/examples/w-group-chip-radio_paddingStyle_borderRadius_textColor_iconColor.html +1 -1
- package/docs/examples/w-group-chip-radio_paddingStyle_iconSize_textFontSize.html +1 -1
- package/docs/examples/w-group-chip-radio_shadow.html +1 -1
- package/docs/examples/w-group-chip-radio_shadowActiveStyle.html +1 -1
- package/docs/examples/w-group-chip-radio_shadow_shadowStyle.html +1 -1
- package/docs/examples/w-group-chip-radio_shiftLeft.html +1 -1
- package/docs/examples/w-group-chip-radio_shiftLeft_shiftRight.html +1 -1
- package/docs/examples/w-group-chip-radio_slot_shadow.html +1 -1
- package/docs/examples/w-group-chip-radio_textColor.html +1 -1
- package/docs/examples/w-group-chip-radio_textColorActive.html +1 -1
- package/docs/examples/w-group-chip-radio_textColor_textColorHover.html +1 -1
- package/docs/examples/w-group-chip-radio_tooltip.html +1 -1
- package/docs/examples/w-group-chip-radio_tooltip_tooltipBorderRadius.html +1 -1
- package/docs/examples/w-group-chip-radio_tooltip_tooltipPaddingStyle.html +1 -1
- package/docs/examples/w-group-chip-radio_tooltip_tooltipTextColor_tooltipBackgroundColor.html +1 -1
- package/docs/examples/w-group-chip-radio_tooltip_tooltipTextFontSize.html +1 -1
- package/docs/examples/w-group-dragdrop_default.html +1 -1
- package/docs/examples/w-group-dragdrop_event (dragdrop).html +1 -1
- package/docs/examples/w-group-dragdrop_items(string array).html +1 -1
- package/docs/examples/w-group-dragdrop_keyBinder.html +1 -1
- package/docs/examples/w-group-dragdrop_not draggable.html +1 -1
- package/docs/examples/w-group-dragdrop_not itemStyleInline (block).html +1 -1
- package/docs/examples/w-group-icon-check_backgroundColor_backgroundColorHover_backgroundColorFocus_backgroundColorActive.html +1 -1
- package/docs/examples/w-group-icon-check_borderColor_borderColorHover_borderColorActive.html +1 -1
- package/docs/examples/w-group-icon-check_borderRadius.html +1 -1
- package/docs/examples/w-group-icon-check_borderWidth_borderColor_borderColorHover_borderColorFocus.html +1 -1
- package/docs/examples/w-group-icon-check_dir(vertical)_backgroundColor_backgroundColorHover_backgroundColorFocus.html +1 -1
- package/docs/examples/w-group-icon-check_dir(vertical)_borderColor_borderColorHover_borderColorActive.html +1 -1
- package/docs/examples/w-group-icon-check_dir(vertical)_borderRadius.html +1 -1
- package/docs/examples/w-group-icon-check_dir(vertical)_borderWidth_borderColor_borderColorHover.html +1 -1
- package/docs/examples/w-group-icon-check_dir(vertical)_icon (fontawesome).html +1 -1
- package/docs/examples/w-group-icon-check_dir(vertical)_icon (material).html +1 -1
- package/docs/examples/w-group-icon-check_dir(vertical)_iconColor_iconColorHover_iconColorFocus.html +1 -1
- package/docs/examples/w-group-icon-check_dir(vertical)_not editable.html +1 -1
- package/docs/examples/w-group-icon-check_dir(vertical)_one.html +1 -1
- package/docs/examples/w-group-icon-check_dir(vertical)_paddingStyle_iconSize.html +1 -1
- package/docs/examples/w-group-icon-check_dir(vertical)_rippleColor.html +1 -1
- package/docs/examples/w-group-icon-check_dir(vertical)_seplineColor.html +1 -1
- package/docs/examples/w-group-icon-check_dir(vertical)_seplineWidth.html +1 -1
- package/docs/examples/w-group-icon-check_dir(vertical)_shadow.html +1 -1
- package/docs/examples/w-group-icon-check_dir(vertical)_shadow_shadowStyle.html +1 -1
- package/docs/examples/w-group-icon-check_dir(vertical)_tooltip.html +1 -1
- package/docs/examples/w-group-icon-check_dir(vertical)_tooltip_tooltipBorderRadius.html +1 -1
- package/docs/examples/w-group-icon-check_dir(vertical)_tooltip_tooltipPaddingStyle.html +1 -1
- package/docs/examples/w-group-icon-check_dir(vertical)_tooltip_tooltipTextColor_tooltipBackgroundColor.html +1 -1
- package/docs/examples/w-group-icon-check_dir(vertical)_tooltip_tooltipTextFontSize.html +1 -1
- package/docs/examples/w-group-icon-check_icon (fontawesome).html +1 -1
- package/docs/examples/w-group-icon-check_icon (material).html +1 -1
- package/docs/examples/w-group-icon-check_iconColor_iconColorHover_iconColorFocus_iconColorActive.html +1 -1
- package/docs/examples/w-group-icon-check_not editable.html +1 -1
- package/docs/examples/w-group-icon-check_one.html +1 -1
- package/docs/examples/w-group-icon-check_paddingStyle_iconSize.html +1 -1
- package/docs/examples/w-group-icon-check_rippleColor.html +1 -1
- package/docs/examples/w-group-icon-check_seplineColor.html +1 -1
- package/docs/examples/w-group-icon-check_seplineWidth.html +1 -1
- package/docs/examples/w-group-icon-check_shadow.html +1 -1
- package/docs/examples/w-group-icon-check_shadow_shadowStyle.html +1 -1
- package/docs/examples/w-group-icon-check_tooltip.html +1 -1
- package/docs/examples/w-group-icon-check_tooltip_tooltipBorderRadius.html +1 -1
- package/docs/examples/w-group-icon-check_tooltip_tooltipPaddingStyle.html +1 -1
- package/docs/examples/w-group-icon-check_tooltip_tooltipTextColor_tooltipBackgroundColor.html +1 -1
- package/docs/examples/w-group-icon-check_tooltip_tooltipTextFontSize.html +1 -1
- package/docs/examples/w-group-icon-radio_backgroundColor_backgroundColorHover_backgroundColorFocus_backgroundColorActive.html +1 -1
- package/docs/examples/w-group-icon-radio_borderColor_borderColorHover_borderColorActive.html +1 -1
- package/docs/examples/w-group-icon-radio_borderRadius.html +1 -1
- package/docs/examples/w-group-icon-radio_borderWidth_borderColor_borderColorHover_borderColorFocus.html +1 -1
- package/docs/examples/w-group-icon-radio_dir(vertical)_backgroundColor_backgroundColorHover_backgroundColorFocus.html +1 -1
- package/docs/examples/w-group-icon-radio_dir(vertical)_borderColor_borderColorHover_borderColorActive.html +1 -1
- package/docs/examples/w-group-icon-radio_dir(vertical)_borderRadius.html +1 -1
- package/docs/examples/w-group-icon-radio_dir(vertical)_borderWidth_borderColor_borderColorHover.html +1 -1
- package/docs/examples/w-group-icon-radio_dir(vertical)_icon (fontawesome).html +1 -1
- package/docs/examples/w-group-icon-radio_dir(vertical)_icon (material).html +1 -1
- package/docs/examples/w-group-icon-radio_dir(vertical)_iconColor_iconColorHover_iconColorFocus.html +1 -1
- package/docs/examples/w-group-icon-radio_dir(vertical)_not editable.html +1 -1
- package/docs/examples/w-group-icon-radio_dir(vertical)_one.html +1 -1
- package/docs/examples/w-group-icon-radio_dir(vertical)_paddingStyle_iconSize.html +1 -1
- package/docs/examples/w-group-icon-radio_dir(vertical)_rippleColor.html +1 -1
- package/docs/examples/w-group-icon-radio_dir(vertical)_seplineColor.html +1 -1
- package/docs/examples/w-group-icon-radio_dir(vertical)_seplineWidth.html +1 -1
- package/docs/examples/w-group-icon-radio_dir(vertical)_shadow.html +1 -1
- package/docs/examples/w-group-icon-radio_dir(vertical)_shadow_shadowStyle.html +1 -1
- package/docs/examples/w-group-icon-radio_dir(vertical)_tooltip.html +1 -1
- package/docs/examples/w-group-icon-radio_dir(vertical)_tooltip_tooltipBorderRadius.html +1 -1
- package/docs/examples/w-group-icon-radio_dir(vertical)_tooltip_tooltipPaddingStyle.html +1 -1
- package/docs/examples/w-group-icon-radio_dir(vertical)_tooltip_tooltipTextColor_tooltipBackgroundColor.html +1 -1
- package/docs/examples/w-group-icon-radio_dir(vertical)_tooltip_tooltipTextFontSize.html +1 -1
- package/docs/examples/w-group-icon-radio_icon (fontawesome).html +1 -1
- package/docs/examples/w-group-icon-radio_icon (material).html +1 -1
- package/docs/examples/w-group-icon-radio_iconColor_iconColorHover_iconColorFocus_iconColorActive.html +1 -1
- package/docs/examples/w-group-icon-radio_not editable.html +1 -1
- package/docs/examples/w-group-icon-radio_one.html +1 -1
- package/docs/examples/w-group-icon-radio_paddingStyle_iconSize.html +1 -1
- package/docs/examples/w-group-icon-radio_rippleColor.html +1 -1
- package/docs/examples/w-group-icon-radio_seplineColor.html +1 -1
- package/docs/examples/w-group-icon-radio_seplineWidth.html +1 -1
- package/docs/examples/w-group-icon-radio_shadow.html +1 -1
- package/docs/examples/w-group-icon-radio_shadow_shadowStyle.html +1 -1
- package/docs/examples/w-group-icon-radio_tooltip.html +1 -1
- package/docs/examples/w-group-icon-radio_tooltip_tooltipBorderRadius.html +1 -1
- package/docs/examples/w-group-icon-radio_tooltip_tooltipPaddingStyle.html +1 -1
- package/docs/examples/w-group-icon-radio_tooltip_tooltipTextColor_tooltipBackgroundColor.html +1 -1
- package/docs/examples/w-group-icon-radio_tooltip_tooltipTextFontSize.html +1 -1
- package/docs/examples/w-group-tags_backgroundColor_backgroundColorHover.html +1 -1
- package/docs/examples/w-group-tags_borderColor_borderColorHover.html +1 -1
- package/docs/examples/w-group-tags_borderRadius.html +1 -1
- package/docs/examples/w-group-tags_closeWithInterceptor.html +1 -1
- package/docs/examples/w-group-tags_default.html +1 -1
- package/docs/examples/w-group-tags_editableClose(no close button).html +1 -1
- package/docs/examples/w-group-tags_editableClose(no close button)_editableInput(no input text).html +1 -1
- package/docs/examples/w-group-tags_editableInput(no input text).html +1 -1
- package/docs/examples/w-group-tags_enableActive_valueActive.html +1 -1
- package/docs/examples/w-group-tags_enableCloseEventOnly.html +1 -1
- package/docs/examples/w-group-tags_enableNodata.html +1 -1
- package/docs/examples/w-group-tags_enableNodata_nodata_editableClose(no close button)_editableInput(no input text).html +1 -1
- package/docs/examples/w-group-tags_icon (fontawesome).html +1 -1
- package/docs/examples/w-group-tags_icon (material).html +1 -1
- package/docs/examples/w-group-tags_iconColor_iconColorHover_textColor_textColorHover.html +1 -1
- package/docs/examples/w-group-tags_icon_iconColor_iconColorHover.html +1 -1
- package/docs/examples/w-group-tags_inputTextButtonTooltip.html +1 -1
- package/docs/examples/w-group-tags_inputTextFontSize_inputTextColor_inputTextBorderColor_inputTextBorderColorHover.html +1 -1
- package/docs/examples/w-group-tags_inputTextWidth.html +1 -1
- package/docs/examples/w-group-tags_marginStyle.html +1 -1
- package/docs/examples/w-group-tags_modify loading by callback in click.html +1 -1
- package/docs/examples/w-group-tags_modify prog by callback in click.html +1 -1
- package/docs/examples/w-group-tags_no enableNodata.html +1 -1
- package/docs/examples/w-group-tags_no shadow_borderColor_borderColorHover.html +1 -1
- package/docs/examples/w-group-tags_not draggable.html +1 -1
- package/docs/examples/w-group-tags_not editable.html +1 -1
- package/docs/examples/w-group-tags_object items.html +1 -1
- package/docs/examples/w-group-tags_object items_addButtonIcon_addButtonTextColor_addButtonTextColorHover.html +1 -1
- package/docs/examples/w-group-tags_object items_addButtonText_addButtonTooltip.html +1 -1
- package/docs/examples/w-group-tags_object items_keyIcon.html +1 -1
- package/docs/examples/w-group-tags_object items_keyText.html +1 -1
- package/docs/examples/w-group-tags_object items_keyTooltip.html +1 -1
- package/docs/examples/w-group-tags_object items_slot item.html +1 -1
- package/docs/examples/w-group-tags_object items_slot item_editableInput(no input button)_enableActive.html +1 -1
- package/docs/examples/w-group-tags_object items_slot item_enableColorsFromItem_editableInput(no input button).html +1 -1
- package/docs/examples/w-group-tags_paddingStyle_icon_iconSize_textFontSize.html +1 -1
- package/docs/examples/w-group-tags_progColor_progBackgroundColor.html +1 -1
- package/docs/examples/w-group-tags_shadowStyle.html +1 -1
- package/docs/examples/w-group-tags_shiftLeft.html +1 -1
- package/docs/examples/w-group-tags_slot input.html +1 -1
- package/docs/examples/w-group-tags_slot item.html +1 -1
- package/docs/examples/w-group-tags_slot item_enableActive_valueActive_paddingStyle.html +1 -1
- package/docs/examples/w-group-tags_suggests.html +1 -1
- package/docs/examples/w-group-tags_suggests_inputTextColor_inputExpansionIconColor.html +1 -1
- package/docs/examples/w-group-tags_suggests_placeholder_noResultsText.html +1 -1
- package/docs/examples/w-group-tags_suggests_slot suggest_addMode.html +1 -1
- package/docs/examples/w-group-tags_suggests_slot suggest_addMode_addWhenInputByOutside.html +1 -1
- package/docs/examples/w-group-tags_suggests_slot suggest_addMode_inputKeyText.html +1 -1
- package/docs/examples/w-group-tags_suggests_suggectItemFontSize_suggectItemTextColor_suggectItemTextColorHover.html +1 -1
- package/docs/examples/w-group-tags_textColor.html +1 -1
- package/docs/examples/w-group-tags_textColor_textColorHover.html +1 -1
- package/docs/examples/w-highcharts-bitmap-dyn_render (need w-hc2png-server).html +1 -1
- package/docs/examples/w-highcharts-vue-dyn_area.html +1 -1
- package/docs/examples/w-highcharts-vue-dyn_bar.html +1 -1
- package/docs/examples/w-highcharts-vue-dyn_heatmap.html +1 -1
- package/docs/examples/w-highcharts-vue-dyn_large heatmap.html +1 -1
- package/docs/examples/w-highcharts-vue-dyn_line.html +1 -1
- package/docs/examples/w-highcharts-vue-dyn_pie.html +1 -1
- package/docs/examples/w-highstock-vue-dyn_area.html +1 -1
- package/docs/examples/w-highstock-vue-dyn_line.html +1 -1
- package/docs/examples/w-icon_icon (fontawesome).html +1 -1
- package/docs/examples/w-icon_icon (fontawesome)_color_colorHover.html +1 -1
- package/docs/examples/w-icon_icon (fontawesome)_size.html +1 -1
- package/docs/examples/w-icon_icon (fontawesome)_timeTransition.html +1 -1
- package/docs/examples/w-icon_icon (material).html +1 -1
- package/docs/examples/w-icon_icon (material)_color_colorHover.html +1 -1
- package/docs/examples/w-icon_icon (material)_size.html +1 -1
- package/docs/examples/w-icon_icon (material)_timeTransition.html +1 -1
- package/docs/examples/w-image-cascading-dyn_arrangeWhenFinish.html +1 -1
- package/docs/examples/w-image-cascading-dyn_colNum.html +1 -1
- package/docs/examples/w-image-cascading-dyn_default(imageWidth=300).html +1 -1
- package/docs/examples/w-image-cascading-dyn_imageWidth.html +1 -1
- package/docs/examples/w-image-cascading-dyn_imageWidthSoft.html +1 -1
- package/docs/examples/w-image-lazy_width_height.html +1 -1
- package/docs/examples/w-image-lazy_width_height_delay.html +1 -1
- package/docs/examples/w-image-viewer-dyn_multiple image with navbar.html +1 -1
- package/docs/examples/w-image-viewer-dyn_one image.html +1 -1
- package/docs/examples/w-input-checkbox_arrange_paddingStyle.html +1 -1
- package/docs/examples/w-input-checkbox_click (console.log).html +1 -1
- package/docs/examples/w-input-checkbox_default.html +1 -1
- package/docs/examples/w-input-checkbox_not editable.html +1 -1
- package/docs/examples/w-input-checkbox_not editable_textColorDisabled.html +1 -1
- package/docs/examples/w-input-checkbox_object items_keyText.html +1 -1
- package/docs/examples/w-input-checkbox_paddingStyle.html +1 -1
- package/docs/examples/w-input-checkbox_slot_paddingStyle_verticalAlign_inputSize.html +1 -1
- package/docs/examples/w-input-checkbox_textColor_textColorHover_textColorActive.html +1 -1
- package/docs/examples/w-input-checkbox_textFontSize_paddingStyle.html +1 -1
- package/docs/examples/w-input-radio_arrange_paddingStyle.html +1 -1
- package/docs/examples/w-input-radio_click (console.log).html +1 -1
- package/docs/examples/w-input-radio_default.html +1 -1
- package/docs/examples/w-input-radio_not editable.html +1 -1
- package/docs/examples/w-input-radio_not editable_textColorDisabled.html +1 -1
- package/docs/examples/w-input-radio_object items_keyText.html +1 -1
- package/docs/examples/w-input-radio_paddingStyle.html +1 -1
- package/docs/examples/w-input-radio_slot_paddingStyle_verticalAlign_inputSize.html +1 -1
- package/docs/examples/w-input-radio_textColor_textColorHover_textColorActive.html +1 -1
- package/docs/examples/w-input-radio_textFontSize_paddingStyle.html +1 -1
- package/docs/examples/w-leaflet-vue-dyn_contourSet for rain data.html +1 -1
- package/docs/examples/w-leaflet-vue-dyn_contourSets.html +1 -1
- package/docs/examples/w-leaflet-vue-dyn_pointSets.html +1 -1
- package/docs/examples/w-leaflet-vue-dyn_polygonSets.html +1 -1
- package/docs/examples/w-level-grade_arrowColor.html +1 -1
- package/docs/examples/w-level-grade_arrowSize.html +1 -1
- package/docs/examples/w-level-grade_default.html +1 -1
- package/docs/examples/w-level-grade_gradeSize.html +1 -1
- package/docs/examples/w-level-grade_gradeTextFontSize_gradeTextColor.html +1 -1
- package/docs/examples/w-level-grade_keyColor_keyLow_keyUp_keyDelimiter.html +1 -1
- package/docs/examples/w-level-grade_slot low_up_delimiter_text.html +1 -1
- package/docs/examples/w-level-grade_spaceForGrade.html +1 -1
- package/docs/examples/w-level-grade_tickDig.html +1 -1
- package/docs/examples/w-level-grade_tickDig_text.html +1 -1
- package/docs/examples/w-level-grade_tickDig_text_spaceForText.html +1 -1
- package/docs/examples/w-list-horizontal_borderBottomSize.html +1 -1
- package/docs/examples/w-list-horizontal_default.html +1 -1
- package/docs/examples/w-list-horizontal_item with no editable.html +1 -1
- package/docs/examples/w-list-horizontal_item with no editable_itemDisabledColor.html +1 -1
- package/docs/examples/w-list-horizontal_item with no editable_itemTextColorDisabled_itemIconColorDisabled_itemBackgroundColorDisabled.html +1 -1
- package/docs/examples/w-list-horizontal_itemBackgroundColor_itemBackgroundColorHover_itemBackgroundColorActive.html +1 -1
- package/docs/examples/w-list-horizontal_itemBorderRadius.html +1 -1
- package/docs/examples/w-list-horizontal_itemBorderRadius_space.html +1 -1
- package/docs/examples/w-list-horizontal_itemRippleColor.html +1 -1
- package/docs/examples/w-list-horizontal_itemRippleColor_borderBottomColor_itemTextColorActive_itemIconColorActive.html +1 -1
- package/docs/examples/w-list-horizontal_itemTextFontSize_itemIconSize.html +1 -1
- package/docs/examples/w-list-horizontal_keyText_keyIcon.html +1 -1
- package/docs/examples/w-list-horizontal_no borderBottom.html +1 -1
- package/docs/examples/w-list-horizontal_paddingStyle.html +1 -1
- package/docs/examples/w-list-horizontal_paddingStyle_borderBottomColor_itemRippleColor_itemTextColor.html +1 -1
- package/docs/examples/w-list-horizontal_slot item.html +1 -1
- package/docs/examples/w-list-horizontal_space.html +1 -1
- package/docs/examples/w-list-horizontal_string items.html +1 -1
- package/docs/examples/w-list-horizontal_string items_itemActive.html +1 -1
- package/docs/examples/w-panel-avatar_avatarBackgroundColor.html +1 -1
- package/docs/examples/w-panel-avatar_avatarBorderRadius.html +1 -1
- package/docs/examples/w-panel-avatar_avatarBorderWidth_avatarBorderColor_avatarBackgroundColor.html +1 -1
- package/docs/examples/w-panel-avatar_avatarIcon (fontawesome).html +1 -1
- package/docs/examples/w-panel-avatar_avatarIcon (material).html +1 -1
- package/docs/examples/w-panel-avatar_avatarIcon_avatarIconSize_avatarIconColor_avatarBackgroundColor.html +1 -1
- package/docs/examples/w-panel-avatar_avatarOuterPadding_avatarInnerPadding.html +1 -1
- package/docs/examples/w-panel-avatar_contentBackgroundColor.html +1 -1
- package/docs/examples/w-panel-avatar_contentBorderRadius.html +1 -1
- package/docs/examples/w-panel-avatar_contentShadow.html +1 -1
- package/docs/examples/w-panel-avatar_default.html +1 -1
- package/docs/examples/w-panel-avatar_headerPadding_headerTextColor_headerTextSize_subHeaderTextColor.html +1 -1
- package/docs/examples/w-panel-avatar_headerVerticalAlign_spaceVBetweenHeaderAndContent.html +1 -1
- package/docs/examples/w-panel-avatar_no avatarShadow.html +1 -1
- package/docs/examples/w-panel-avatar_sepLineWidth_sepLineColor.html +1 -1
- package/docs/examples/w-panel-avatar_shiftVFromAvaterCenter.html +1 -1
- package/docs/examples/w-panel-avatar_slot avatar_avatarBackgroundColor.html +1 -1
- package/docs/examples/w-panel-avatar_spaceHBetweenAvatarAndHeader_spaceVBetweenHeaderAndContent.html +1 -1
- package/docs/examples/w-panel-bulge_contentBackgroundColor.html +1 -1
- package/docs/examples/w-panel-bulge_contentBorderRadius.html +1 -1
- package/docs/examples/w-panel-bulge_default.html +1 -1
- package/docs/examples/w-panel-bulge_headerBorderRadius.html +1 -1
- package/docs/examples/w-panel-bulge_headerTextColor_headerBackgroundColor.html +1 -1
- package/docs/examples/w-panel-bulge_no headerShadow_no contentShadow, with green outer.html +1 -1
- package/docs/examples/w-panel-bulge_paddingStyle.html +1 -1
- package/docs/examples/w-panel-bulge_slot for header_headerBorderRadius_headerBackgroundColor(linear-gradient).html +1 -1
- package/docs/examples/w-panel-bulge_with grey outer.html +1 -1
- package/docs/examples/w-panel-divide-horizontal_barBorderSize_barBorderColor.html +1 -1
- package/docs/examples/w-panel-divide-horizontal_barColor.html +1 -1
- package/docs/examples/w-panel-divide-horizontal_barSize.html +1 -1
- package/docs/examples/w-panel-divide-horizontal_default.html +1 -1
- package/docs/examples/w-panel-divide-horizontal_leftWidthMin_leftWidthMax.html +1 -1
- package/docs/examples/w-panel-divide-horizontal_ratio.html +1 -1
- package/docs/examples/w-panel-divide-horizontal_ratioMin_ratioMax.html +1 -1
- package/docs/examples/w-panel-divide-horizontal_rightWidthMin_rightWidthMax.html +1 -1
- package/docs/examples/w-panel-divide-vertical_barBorderSize_barBorderColor.html +1 -1
- package/docs/examples/w-panel-divide-vertical_barColor.html +1 -1
- package/docs/examples/w-panel-divide-vertical_barSize.html +1 -1
- package/docs/examples/w-panel-divide-vertical_bottomHeightMin_bottomHeightMax.html +1 -1
- package/docs/examples/w-panel-divide-vertical_default.html +1 -1
- package/docs/examples/w-panel-divide-vertical_ratio.html +1 -1
- package/docs/examples/w-panel-divide-vertical_ratioMin_ratioMax.html +1 -1
- package/docs/examples/w-panel-divide-vertical_topHeightMin_topHeightMax.html +1 -1
- package/docs/examples/w-panel-label-item_labelColor.html +1 -1
- package/docs/examples/w-panel-label-item_labelFontSize.html +1 -1
- package/docs/examples/w-panel-label-item_labelVerticalAlign.html +1 -1
- package/docs/examples/w-panel-label-item_labelWidth.html +1 -1
- package/docs/examples/w-panel-label-item_labelWidth_labelHorizontalAlign.html +1 -1
- package/docs/examples/w-panel-label-item_seplines_labelColor.html +1 -1
- package/docs/examples/w-panel-label-item_seplines_labelFontSize.html +1 -1
- package/docs/examples/w-panel-label-item_seplines_labelWidth.html +1 -1
- package/docs/examples/w-panel-label-item_seplines_labelWidth_labelHorizontalAlign.html +1 -1
- package/docs/examples/w-panel-label-item_seplines_slot item-sub.html +1 -1
- package/docs/examples/w-panel-label-item_seplines_slot item-sub_floatForItemSub.html +1 -1
- package/docs/examples/w-panel-label-item_seplines_slot label.html +1 -1
- package/docs/examples/w-panel-label-item_seplines_space.html +1 -1
- package/docs/examples/w-panel-label-item_slot item-sub.html +1 -1
- package/docs/examples/w-panel-label-item_slot item-sub_floatForItemSub.html +1 -1
- package/docs/examples/w-panel-label-item_slot label.html +1 -1
- package/docs/examples/w-panel-label-item_space.html +1 -1
- package/docs/examples/w-panel-label-item_with group-tags_labelVerticalAlign_labelShiftTop.html +1 -1
- package/docs/examples/w-panel-label-item_with select.html +1 -1
- package/docs/examples/w-panel-label-item_with select_seplines.html +1 -1
- package/docs/examples/w-panel-label-item_with text.html +1 -1
- package/docs/examples/w-panel-label-item_with text_seplines.html +1 -1
- package/docs/examples/w-panel-label-item_with textarea_labelVerticalAlign.html +1 -1
- package/docs/examples/w-panel-label-item_with textarea_seplines.html +1 -1
- package/docs/examples/w-panel-scrolly_barOpacity_barOpacityHover.html +1 -1
- package/docs/examples/w-panel-scrolly_default.html +1 -1
- package/docs/examples/w-panel-scrolly_events.html +1 -1
- package/docs/examples/w-panel-scrolly_scrollTop.html +1 -1
- package/docs/examples/w-panel-stripe_borderRadius.html +1 -1
- package/docs/examples/w-panel-stripe_buttons in slot footer.html +1 -1
- package/docs/examples/w-panel-stripe_headerBackgroundColor_footerBackgroundColor.html +1 -1
- package/docs/examples/w-panel-stripe_no footer.html +1 -1
- package/docs/examples/w-panel-stripe_no header.html +1 -1
- package/docs/examples/w-panel-stripe_no shadow, with crimson outer.html +1 -1
- package/docs/examples/w-panel-stripe_only slot icon and slot title in header.html +1 -1
- package/docs/examples/w-panel-stripe_only slot title in header.html +1 -1
- package/docs/examples/w-panel-stripe_padding.html +1 -1
- package/docs/examples/w-panel-stripe_separate for slot content.html +1 -1
- package/docs/examples/w-panel-stripe_slot icon (fontawesome).html +1 -1
- package/docs/examples/w-panel-stripe_slot icon, slot title, slot description, slot content and slot footer.html +1 -1
- package/docs/examples/w-panel-stripe_table in slot content.html +1 -1
- package/docs/examples/w-panel-stripe_with grey outer.html +1 -1
- package/docs/examples/w-popup-edit-text_default.html +1 -1
- package/docs/examples/w-popup-edit-text_in table.html +1 -1
- package/docs/examples/w-popup-edit-text_minWidthForPopup.html +1 -1
- package/docs/examples/w-popup-edit-text_minWidthForValue.html +1 -1
- package/docs/examples/w-popup-edit-text_no title.html +1 -1
- package/docs/examples/w-popup-edit-text_title_contentIcon_contentIconColor_contentIconSize.html +1 -1
- package/docs/examples/w-popup-edit-text_title_footerBackgroundColor.html +1 -1
- package/docs/examples/w-popup-edit-text_title_inputTextColor_contentIconColor_contentBackgroundColor.html +1 -1
- package/docs/examples/w-popup-edit-text_title_saveBtnText_saveBtnTextColor_saveBtnTextColorHover.html +1 -1
- package/docs/examples/w-popup-edit-text_title_titleColor_titleFontSize_headerBackgroundColor.html +1 -1
- package/docs/examples/w-popup_isolated.html +1 -1
- package/docs/examples/w-progress-bar_decimal.html +1 -1
- package/docs/examples/w-progress-bar_default.html +1 -1
- package/docs/examples/w-progress-bar_enableContinuous.html +1 -1
- package/docs/examples/w-progress-bar_enableContinuous_continuousIncrease_continuousPeriod.html +1 -1
- package/docs/examples/w-progress-bar_enableContinuous_progColor_progBackgroundColor.html +1 -1
- package/docs/examples/w-progress-bar_enableIconFinish (no iconFinish).html +1 -1
- package/docs/examples/w-progress-bar_enableIconWaiting (no iconWaiting).html +1 -1
- package/docs/examples/w-progress-bar_height.html +1 -1
- package/docs/examples/w-progress-bar_height_borderRadius.html +1 -1
- package/docs/examples/w-progress-bar_iconFinish (fontawesome).html +1 -1
- package/docs/examples/w-progress-bar_iconFinishColor.html +1 -1
- package/docs/examples/w-progress-bar_iconSize.html +1 -1
- package/docs/examples/w-progress-bar_iconWaiting (fontawesome).html +1 -1
- package/docs/examples/w-progress-bar_iconWaitingColor.html +1 -1
- package/docs/examples/w-progress-bar_progColor.html +1 -1
- package/docs/examples/w-progress-bar_progColor_progBackgroundColor.html +1 -1
- package/docs/examples/w-progress-bar_title.html +1 -1
- package/docs/examples/w-progress-bar_title_titleTextColor.html +1 -1
- package/docs/examples/w-progress-bar_title_titleTextFontSize.html +1 -1
- package/docs/examples/w-progress-bar_value=0 (waiting).html +1 -1
- package/docs/examples/w-progress-bar_value=100 (finish).html +1 -1
- package/docs/examples/w-progress-bar_valueTextColor.html +1 -1
- package/docs/examples/w-progress-bar_valueTextFontSize.html +1 -1
- package/docs/examples/w-progress-circle_color.html +1 -1
- package/docs/examples/w-progress-circle_color_trackColor.html +1 -1
- package/docs/examples/w-progress-circle_color_trackColor_textColor.html +1 -1
- package/docs/examples/w-progress-circle_default.html +1 -1
- package/docs/examples/w-progress-circle_small size.html +1 -1
- package/docs/examples/w-progress-circle_tooltip.html +1 -1
- package/docs/examples/w-progress-circle_tooltip_tooltipBorderRadius.html +1 -1
- package/docs/examples/w-progress-circle_tooltip_tooltipPaddingStyle.html +1 -1
- package/docs/examples/w-progress-circle_tooltip_tooltipTextColor_tooltipBackgroundColor.html +1 -1
- package/docs/examples/w-progress-circle_tooltip_tooltipTextFontSize.html +1 -1
- package/docs/examples/w-progress-circle_very small size.html +1 -1
- package/docs/examples/w-progress-circle_width.html +1 -1
- package/docs/examples/w-progress-circle_/344/270/255/346/226/207text.html +1 -1
- package/docs/examples/w-quill-vue-dyn_default.html +1 -1
- package/docs/examples/w-quill-vue-dyn_height.html +1 -1
- package/docs/examples/w-quill-vue-dyn_not editable.html +1 -1
- package/docs/examples/w-quill-vue-dyn_settings.html +1 -1
- package/docs/examples/w-segments-vertical_alignStart_alignEnd.html +1 -1
- package/docs/examples/w-segments-vertical_axisColor_tickColor_tickSize_tickLabelColor.html +1 -1
- package/docs/examples/w-segments-vertical_default.html +1 -1
- package/docs/examples/w-segments-vertical_events_textCanClick_segmentCanClick.html +1 -1
- package/docs/examples/w-segments-vertical_funFormatTickValue.html +1 -1
- package/docs/examples/w-segments-vertical_funSegmentBackgroundColor_funSegmentBorderColor.html +1 -1
- package/docs/examples/w-segments-vertical_items(continuous)_alignStart_alignEnd_textShift.html +1 -1
- package/docs/examples/w-segments-vertical_keyValueStart_keyValueEnd_keyText.html +1 -1
- package/docs/examples/w-segments-vertical_paddingStyle_textShift_width_height.html +1 -1
- package/docs/examples/w-segments-vertical_segmentBackgroundColor_segmentBorderColor_segmentSize.html +1 -1
- package/docs/examples/w-segments-vertical_slot support-left_width_paddingStyle_segmentBackgroundType.html +1 -1
- package/docs/examples/w-segments-vertical_slot support-right_width_paddingStyle_segmentBackgroundType.html +1 -1
- package/docs/examples/w-segments-vertical_slot text.html +1 -1
- package/docs/examples/w-segments-vertical_textFontSize_textColor_textBackgroundColor.html +1 -1
- package/docs/examples/w-segments-vertical_textTriangularSize_textTriangularRatio.html +1 -1
- package/docs/examples/w-segments-vertical_textWithPopup_slot text-popup.html +1 -1
- package/docs/examples/w-segments-vertical_title_titleColor_titleFontSize_titleShift.html +1 -1
- package/docs/examples/w-segments-vertical_valueMin_valueMax.html +1 -1
- package/docs/examples/w-segments-vertical_width_height.html +1 -1
- package/docs/examples/w-slider_default.html +1 -1
- package/docs/examples/w-slider_not editable.html +1 -1
- package/docs/examples/w-slider_not editable_progColorDisabled_progBackgroundColorDisabled_sliderBackgroundColorDisabled.html +1 -1
- package/docs/examples/w-slider_progBorderRadius.html +1 -1
- package/docs/examples/w-slider_progColor_progBackgroundColor_sliderBackgroundColor_sliderBackgroundColorHover.html +1 -1
- package/docs/examples/w-slider_progHeight.html +1 -1
- package/docs/examples/w-slider_sliderSize.html +1 -1
- package/docs/examples/w-slider_tooltipBorderRadius.html +1 -1
- package/docs/examples/w-slider_tooltipPlacementDist.html +1 -1
- package/docs/examples/w-slider_tooltipTextColor_tooltipBackgroundColor.html +1 -1
- package/docs/examples/w-slider_tooltipTextFontSize.html +1 -1
- package/docs/examples/w-slider_valueDecimal_valueMin_valueMax_valueStep.html +1 -1
- package/docs/examples/w-slider_valueMin_valueMax.html +1 -1
- package/docs/examples/w-slider_valueStep.html +1 -1
- package/docs/examples/w-switch_checkedSwitchCircleColor_checkedSwitchCircleColorHover_checkedSwitchBarColor_checkedSwitchBarColorHover.html +1 -1
- package/docs/examples/w-switch_default.html +1 -1
- package/docs/examples/w-switch_not editable.html +1 -1
- package/docs/examples/w-switch_not editable_checkedSwitchCircleColorDisabled_checkedSwitchBarColorDisabled_uncheckedSwitchCircleColorDisabled.html +1 -1
- package/docs/examples/w-switch_slot.html +1 -1
- package/docs/examples/w-switch_switchSize_textFontSize.html +1 -1
- package/docs/examples/w-switch_text.html +1 -1
- package/docs/examples/w-switch_text_textColor_textColorHover.html +1 -1
- package/docs/examples/w-switch_uncheckedSwitchCircleColor_uncheckedSwitchCircleColorHover_uncheckedSwitchBarColor_uncheckedSwitchBarColorHover.html +1 -1
- package/docs/examples/w-switch_use string (y or n).html +1 -1
- package/docs/examples/w-text-int_borderRadius.html +1 -1
- package/docs/examples/w-text-int_border_backgroundColor_backgroundColorHover_backgroundColorFocus.html +1 -1
- package/docs/examples/w-text-int_border_borderRadius.html +1 -1
- package/docs/examples/w-text-int_border_buttonColor_buttonColorHover_buttonColorFocus.html +1 -1
- package/docs/examples/w-text-int_border_default.html +1 -1
- package/docs/examples/w-text-int_border_not editable.html +1 -1
- package/docs/examples/w-text-int_border_width.html +1 -1
- package/docs/examples/w-text-int_buttonColor_buttonColorHover_buttonColorFocus.html +1 -1
- package/docs/examples/w-text-int_buttonIconSize.html +1 -1
- package/docs/examples/w-text-int_default.html +1 -1
- package/docs/examples/w-text-int_not editable.html +1 -1
- package/docs/examples/w-text-int_textColor.html +1 -1
- package/docs/examples/w-text-int_textFontSize.html +1 -1
- package/docs/examples/w-text-int_width.html +1 -1
- package/docs/examples/w-text_border_backgroundColor_backgroundColorHover_backgroundColorFocus.html +1 -1
- package/docs/examples/w-text_border_borderRadius_paddingStyle.html +1 -1
- package/docs/examples/w-text_border_default.html +1 -1
- package/docs/examples/w-text_border_events.html +1 -1
- package/docs/examples/w-text_border_fullwidth.html +1 -1
- package/docs/examples/w-text_border_height_textFontSize_paddingStyle.html +1 -1
- package/docs/examples/w-text_border_leftIcon (fontawesome).html +1 -1
- package/docs/examples/w-text_border_leftIcon (material).html +1 -1
- package/docs/examples/w-text_border_leftIcon_leftIconColor_leftIconColorHover.html +1 -1
- package/docs/examples/w-text_border_not editable.html +1 -1
- package/docs/examples/w-text_border_password.html +1 -1
- package/docs/examples/w-text_border_placeholder.html +1 -1
- package/docs/examples/w-text_border_rightIcon_rightIconColor_rightIconColorHover.html +1 -1
- package/docs/examples/w-text_border_textAlign.html +1 -1
- package/docs/examples/w-text_border_textColor.html +1 -1
- package/docs/examples/w-text_border_textFontSize.html +1 -1
- package/docs/examples/w-text_border_type (custom,0/342/211/244v/342/211/2445).html" +1 -1
- package/docs/examples/w-text_border_type (isint).html +1 -1
- package/docs/examples/w-text_border_type (isnum).html +1 -1
- package/docs/examples/w-text_bottomLineBorderColor_bottomLineBorderColorHover_bottomLineBorderColorFocus.html +1 -1
- package/docs/examples/w-text_default.html +1 -1
- package/docs/examples/w-text_events.html +1 -1
- package/docs/examples/w-text_fullwidth.html +1 -1
- package/docs/examples/w-text_height_textFontSize.html +1 -1
- package/docs/examples/w-text_leftIcon (fontawesome).html +1 -1
- package/docs/examples/w-text_leftIcon (material).html +1 -1
- package/docs/examples/w-text_leftIcon_leftIconColor_leftIconColorHover_leftIconColorFocus.html +1 -1
- package/docs/examples/w-text_leftIcon_leftIconSize.html +1 -1
- package/docs/examples/w-text_leftIcon_leftIconTooltip.html +1 -1
- package/docs/examples/w-text_not editable.html +1 -1
- package/docs/examples/w-text_password.html +1 -1
- package/docs/examples/w-text_placeholder.html +1 -1
- package/docs/examples/w-text_rightIcon.html +1 -1
- package/docs/examples/w-text_rightIcon_rightIconColor_rightIconColorHover_rightIconColorFocus.html +1 -1
- package/docs/examples/w-text_rightIcon_rightIconSize.html +1 -1
- package/docs/examples/w-text_rightIcon_rightIconTooltip.html +1 -1
- package/docs/examples/w-text_textAlign.html +1 -1
- package/docs/examples/w-text_textColor.html +1 -1
- package/docs/examples/w-text_textFontSize.html +1 -1
- package/docs/examples/w-text_type (custom,0/342/211/244v/342/211/2445).html" +1 -1
- package/docs/examples/w-text_type (isint).html +1 -1
- package/docs/examples/w-text_type (isnum).html +1 -1
- package/docs/examples/w-textarea_border_backgroundColor_backgroundColorHover_backgroundColorFocus.html +1 -1
- package/docs/examples/w-textarea_border_borderRadius_paddingStyle.html +1 -1
- package/docs/examples/w-textarea_border_default.html +1 -1
- package/docs/examples/w-textarea_border_events.html +1 -1
- package/docs/examples/w-textarea_border_fullwidth.html +1 -1
- package/docs/examples/w-textarea_border_leftIcon (fontawesome).html +1 -1
- package/docs/examples/w-textarea_border_leftIcon (material).html +1 -1
- package/docs/examples/w-textarea_border_leftIcon_leftIconColor_leftIconColorHover.html +1 -1
- package/docs/examples/w-textarea_border_not editable.html +1 -1
- package/docs/examples/w-textarea_border_placeholder.html +1 -1
- package/docs/examples/w-textarea_border_rightIcon_rightIconColor_rightIconColorHover.html +1 -1
- package/docs/examples/w-textarea_border_textAlign.html +1 -1
- package/docs/examples/w-textarea_border_textColor.html +1 -1
- package/docs/examples/w-textarea_border_textFontSize.html +1 -1
- package/docs/examples/w-textarea_bottomLineBorderColor_bottomLineBorderColorHover_bottomLineBorderColorFocus.html +1 -1
- package/docs/examples/w-textarea_default.html +1 -1
- package/docs/examples/w-textarea_events.html +1 -1
- package/docs/examples/w-textarea_fullwidth.html +1 -1
- package/docs/examples/w-textarea_leftIcon (fontawesome).html +1 -1
- package/docs/examples/w-textarea_leftIcon (material).html +1 -1
- package/docs/examples/w-textarea_leftIcon_leftIconColor_leftIconColorHover_leftIconColorFocus.html +1 -1
- package/docs/examples/w-textarea_leftIcon_leftIconSize.html +1 -1
- package/docs/examples/w-textarea_leftIcon_leftIconTooltip.html +1 -1
- package/docs/examples/w-textarea_not editable.html +1 -1
- package/docs/examples/w-textarea_placeholder.html +1 -1
- package/docs/examples/w-textarea_rightIcon_rightIconColor_rightIconColorHover_rightIconColorFocus.html +1 -1
- package/docs/examples/w-textarea_rightIcon_rightIconSize_verticalAlign.html +1 -1
- package/docs/examples/w-textarea_rightIcon_rightIconTooltip_verticalAlign.html +1 -1
- package/docs/examples/w-textarea_rightIcon_verticalAlign.html +1 -1
- package/docs/examples/w-textarea_textAlign.html +1 -1
- package/docs/examples/w-textarea_textColor.html +1 -1
- package/docs/examples/w-textarea_textFontSize.html +1 -1
- package/docs/examples/w-threejs-vue-dyn_autoRotateDeg.html +1 -1
- package/docs/examples/w-threejs-vue-dyn_basicSize.html +1 -1
- package/docs/examples/w-timeday-range_between.html +1 -1
- package/docs/examples/w-timeday-range_borderRadius.html +1 -1
- package/docs/examples/w-timeday-range_border_between.html +1 -1
- package/docs/examples/w-timeday-range_border_borderRadius.html +1 -1
- package/docs/examples/w-timeday-range_border_default.html +1 -1
- package/docs/examples/w-timeday-range_border_empty.html +1 -1
- package/docs/examples/w-timeday-range_border_empty_textEmpty.html +1 -1
- package/docs/examples/w-timeday-range_border_funRenderYear_funRenderMonth_funRenderDayOfWeek.html +1 -1
- package/docs/examples/w-timeday-range_border_hoverColor.html +1 -1
- package/docs/examples/w-timeday-range_border_icon (fontawesome).html +1 -1
- package/docs/examples/w-timeday-range_border_icon (material).html +1 -1
- package/docs/examples/w-timeday-range_border_iconColor_iconColorHover_iconColorFoucs.html +1 -1
- package/docs/examples/w-timeday-range_border_iconTooltip.html +1 -1
- package/docs/examples/w-timeday-range_border_not editable.html +1 -1
- package/docs/examples/w-timeday-range_border_paddingStyle (equal height to using icon).html +1 -1
- package/docs/examples/w-timeday-range_border_paddingStyle (thin style)_placementDistY.html +1 -1
- package/docs/examples/w-timeday-range_border_paddingStyle (thin style)_textFontSize_placementDistY.html +1 -1
- package/docs/examples/w-timeday-range_border_pickColor.html +1 -1
- package/docs/examples/w-timeday-range_border_textColor.html +1 -1
- package/docs/examples/w-timeday-range_default.html +1 -1
- package/docs/examples/w-timeday-range_empty.html +1 -1
- package/docs/examples/w-timeday-range_empty_textEmpty.html +1 -1
- package/docs/examples/w-timeday-range_funRenderYear_funRenderMonth_funRenderDayOfWeek.html +1 -1
- package/docs/examples/w-timeday-range_hoverColor.html +1 -1
- package/docs/examples/w-timeday-range_icon (fontawesome).html +1 -1
- package/docs/examples/w-timeday-range_icon (material).html +1 -1
- package/docs/examples/w-timeday-range_iconColor_iconColorHover_iconColorFoucs.html +1 -1
- package/docs/examples/w-timeday-range_iconTooltip.html +1 -1
- package/docs/examples/w-timeday-range_icon_iconSize_placementDistY.html +1 -1
- package/docs/examples/w-timeday-range_not editable.html +1 -1
- package/docs/examples/w-timeday-range_paddingStyle (equal height to using icon).html +1 -1
- package/docs/examples/w-timeday-range_paddingStyle (thin style)_placementDistY.html +1 -1
- package/docs/examples/w-timeday-range_paddingStyle (thin style)_textFontSize_placementDistY.html +1 -1
- package/docs/examples/w-timeday-range_pickColor.html +1 -1
- package/docs/examples/w-timeday-range_textColor.html +1 -1
- package/docs/examples/w-timeday_borderRadius.html +1 -1
- package/docs/examples/w-timeday_border_borderRadius.html +1 -1
- package/docs/examples/w-timeday_border_default.html +1 -1
- package/docs/examples/w-timeday_border_empty.html +1 -1
- package/docs/examples/w-timeday_border_empty_textEmpty.html +1 -1
- package/docs/examples/w-timeday_border_funRenderYear_funRenderMonth_funRenderDayOfWeek.html +1 -1
- package/docs/examples/w-timeday_border_hoverColor.html +1 -1
- package/docs/examples/w-timeday_border_icon (fontawesome).html +1 -1
- package/docs/examples/w-timeday_border_icon (material).html +1 -1
- package/docs/examples/w-timeday_border_iconColor_iconColorHover_iconColorFoucs.html +1 -1
- package/docs/examples/w-timeday_border_iconTooltip.html +1 -1
- package/docs/examples/w-timeday_border_not editable.html +1 -1
- package/docs/examples/w-timeday_border_paddingStyle (equal height to using icon).html +1 -1
- package/docs/examples/w-timeday_border_paddingStyle (thin style)_placementDistY.html +1 -1
- package/docs/examples/w-timeday_border_paddingStyle (thin style)_textFontSize_placementDistY.html +1 -1
- package/docs/examples/w-timeday_border_pickColor.html +1 -1
- package/docs/examples/w-timeday_border_textColor.html +1 -1
- package/docs/examples/w-timeday_default.html +1 -1
- package/docs/examples/w-timeday_empty.html +1 -1
- package/docs/examples/w-timeday_empty_textEmpty.html +1 -1
- package/docs/examples/w-timeday_funRenderYear_funRenderMonth_funRenderDayOfWeek.html +1 -1
- package/docs/examples/w-timeday_hoverColor.html +1 -1
- package/docs/examples/w-timeday_icon (fontawesome).html +1 -1
- package/docs/examples/w-timeday_icon (material).html +1 -1
- package/docs/examples/w-timeday_iconColor_iconColorHover_iconColorFoucs.html +1 -1
- package/docs/examples/w-timeday_iconTooltip.html +1 -1
- package/docs/examples/w-timeday_icon_iconSize_placementDistY.html +1 -1
- package/docs/examples/w-timeday_not editable.html +1 -1
- package/docs/examples/w-timeday_paddingStyle (equal height to using icon).html +1 -1
- package/docs/examples/w-timeday_paddingStyle (thin style)_placementDistY.html +1 -1
- package/docs/examples/w-timeday_paddingStyle (thin style)_textFontSize_placementDistY.html +1 -1
- package/docs/examples/w-timeday_pickColor.html +1 -1
- package/docs/examples/w-timeday_textColor.html +1 -1
- package/docs/examples/w-timeminute-range_between.html +1 -1
- package/docs/examples/w-timeminute-range_borderRadius.html +1 -1
- package/docs/examples/w-timeminute-range_border_between.html +1 -1
- package/docs/examples/w-timeminute-range_border_borderRadius.html +1 -1
- package/docs/examples/w-timeminute-range_border_default.html +1 -1
- package/docs/examples/w-timeminute-range_border_funRenderYear_funRenderMonth_funRenderDayOfWeek.html +1 -1
- package/docs/examples/w-timeminute-range_border_hourMin_hourMax.html +1 -1
- package/docs/examples/w-timeminute-range_border_hoverColor.html +1 -1
- package/docs/examples/w-timeminute-range_border_icon (fontawesome).html +1 -1
- package/docs/examples/w-timeminute-range_border_icon (material).html +1 -1
- package/docs/examples/w-timeminute-range_border_iconColor_iconColorHover_iconColorFoucs.html +1 -1
- package/docs/examples/w-timeminute-range_border_iconTooltip.html +1 -1
- package/docs/examples/w-timeminute-range_border_minuteInter.html +1 -1
- package/docs/examples/w-timeminute-range_border_minutesCustom.html +1 -1
- package/docs/examples/w-timeminute-range_border_not editable.html +1 -1
- package/docs/examples/w-timeminute-range_border_paddingStyle (equal height to using icon).html +1 -1
- package/docs/examples/w-timeminute-range_border_paddingStyle (thin style)_placementDistY.html +1 -1
- package/docs/examples/w-timeminute-range_border_paddingStyle (thin style)_textFontSize_placementDistY.html +1 -1
- package/docs/examples/w-timeminute-range_border_pickColor.html +1 -1
- package/docs/examples/w-timeminute-range_border_textColor_expansionIconColor.html +1 -1
- package/docs/examples/w-timeminute-range_default.html +1 -1
- package/docs/examples/w-timeminute-range_empty.html +1 -1
- package/docs/examples/w-timeminute-range_empty_textEmpty.html +1 -1
- package/docs/examples/w-timeminute-range_funRenderYear_funRenderMonth_funRenderDayOfWeek.html +1 -1
- package/docs/examples/w-timeminute-range_hourMin_hourMax.html +1 -1
- package/docs/examples/w-timeminute-range_hoverColor.html +1 -1
- package/docs/examples/w-timeminute-range_icon (fontawesome).html +1 -1
- package/docs/examples/w-timeminute-range_icon (material).html +1 -1
- package/docs/examples/w-timeminute-range_iconColor_iconColorHover_iconColorFoucs.html +1 -1
- package/docs/examples/w-timeminute-range_iconTooltip.html +1 -1
- package/docs/examples/w-timeminute-range_icon_iconSize_placementDistY.html +1 -1
- package/docs/examples/w-timeminute-range_minuteInter.html +1 -1
- package/docs/examples/w-timeminute-range_minutesCustom.html +1 -1
- package/docs/examples/w-timeminute-range_not editable.html +1 -1
- package/docs/examples/w-timeminute-range_paddingStyle (equal height to using icon).html +1 -1
- package/docs/examples/w-timeminute-range_paddingStyle (thin style)_placementDistY.html +1 -1
- package/docs/examples/w-timeminute-range_paddingStyle (thin style)_textFontSize_placementDistY.html +1 -1
- package/docs/examples/w-timeminute-range_pickColor.html +1 -1
- package/docs/examples/w-timeminute-range_textColor_expansionIconColor.html +1 -1
- package/docs/examples/w-timeminute_borderRadius.html +1 -1
- package/docs/examples/w-timeminute_border_borderRadius.html +1 -1
- package/docs/examples/w-timeminute_border_default.html +1 -1
- package/docs/examples/w-timeminute_border_empty.html +1 -1
- package/docs/examples/w-timeminute_border_empty_textEmpty.html +1 -1
- package/docs/examples/w-timeminute_border_funRenderYear_funRenderMonth_funRenderDayOfWeek.html +1 -1
- package/docs/examples/w-timeminute_border_hourMin_hourMax.html +1 -1
- package/docs/examples/w-timeminute_border_hoverColor.html +1 -1
- package/docs/examples/w-timeminute_border_icon (fontawesome).html +1 -1
- package/docs/examples/w-timeminute_border_icon (material).html +1 -1
- package/docs/examples/w-timeminute_border_iconColor_iconColorHover_iconColorFoucs.html +1 -1
- package/docs/examples/w-timeminute_border_iconTooltip.html +1 -1
- package/docs/examples/w-timeminute_border_minuteInter.html +1 -1
- package/docs/examples/w-timeminute_border_minutesCustom.html +1 -1
- package/docs/examples/w-timeminute_border_not editable.html +1 -1
- package/docs/examples/w-timeminute_border_paddingStyle (equal height to using icon).html +1 -1
- package/docs/examples/w-timeminute_border_paddingStyle (thin style)_placementDistY.html +1 -1
- package/docs/examples/w-timeminute_border_paddingStyle (thin style)_textFontSize_placementDistY.html +1 -1
- package/docs/examples/w-timeminute_border_pickColor.html +1 -1
- package/docs/examples/w-timeminute_border_textColor_expansionIconColor.html +1 -1
- package/docs/examples/w-timeminute_default.html +1 -1
- package/docs/examples/w-timeminute_empty.html +1 -1
- package/docs/examples/w-timeminute_empty_textEmpty.html +1 -1
- package/docs/examples/w-timeminute_funRenderYear_funRenderMonth_funRenderDayOfWeek.html +1 -1
- package/docs/examples/w-timeminute_hourMin_hourMax.html +1 -1
- package/docs/examples/w-timeminute_hoverColor.html +1 -1
- package/docs/examples/w-timeminute_icon (fontawesome).html +1 -1
- package/docs/examples/w-timeminute_icon (material).html +1 -1
- package/docs/examples/w-timeminute_iconColor_iconColorHover_iconColorFoucs.html +1 -1
- package/docs/examples/w-timeminute_iconTooltip.html +1 -1
- package/docs/examples/w-timeminute_icon_iconSize_placementDistY.html +1 -1
- package/docs/examples/w-timeminute_minuteInter.html +1 -1
- package/docs/examples/w-timeminute_minutesCustom.html +1 -1
- package/docs/examples/w-timeminute_not editable.html +1 -1
- package/docs/examples/w-timeminute_paddingStyle (equal height to using icon).html +1 -1
- package/docs/examples/w-timeminute_paddingStyle (thin style)_placementDistY.html +1 -1
- package/docs/examples/w-timeminute_paddingStyle (thin style)_textFontSize_placementDistY.html +1 -1
- package/docs/examples/w-timeminute_pickColor.html +1 -1
- package/docs/examples/w-timeminute_textColor_expansionIconColor.html +1 -1
- package/docs/examples/w-tinymce-vue-dyn_default.html +1 -1
- package/docs/examples/w-tinymce-vue-dyn_height.html +1 -1
- package/docs/examples/w-tinymce-vue-dyn_not editable.html +1 -1
- package/docs/examples/w-tinymce-vue-dyn_settings.html +1 -1
- package/docs/examples/w-tooltip_auto flipping in dialog.html +1 -1
- package/docs/examples/w-tooltip_auto flipping in popup.html +1 -1
- package/docs/examples/w-tooltip_auto flipping in scroll panel.html +1 -1
- package/docs/examples/w-tooltip_autoFitMaxWidth.html +1 -1
- package/docs/examples/w-tooltip_autoFitMinWidth.html +1 -1
- package/docs/examples/w-tooltip_backgroundColor.html +1 -1
- package/docs/examples/w-tooltip_borderRadius.html +1 -1
- package/docs/examples/w-tooltip_default.html +1 -1
- package/docs/examples/w-tooltip_in scroll panel.html +1 -1
- package/docs/examples/w-tooltip_maxWidth.html +1 -1
- package/docs/examples/w-tooltip_minWidth.html +1 -1
- package/docs/examples/w-tooltip_no shadow_backgroundColor.html +1 -1
- package/docs/examples/w-tooltip_not editable.html +1 -1
- package/docs/examples/w-tooltip_paddingStyle.html +1 -1
- package/docs/examples/w-tooltip_placement.html +1 -1
- package/docs/examples/w-tooltip_placementDistY.html +1 -1
- package/docs/examples/w-tooltip_scroll in large zone.html +1 -1
- package/docs/examples/w-tooltip_shadowStyle.html +1 -1
- package/docs/examples/w-tooltip_slot for table_maxWidth.html +1 -1
- package/docs/examples/w-tooltip_textColor_backgroundColor.html +1 -1
- package/docs/examples/w-tooltip_textFontSize.html +1 -1
- package/docs/examples/w-tooltip_transitionTime.html +1 -1
- package/docs/examples/w-tree_activable_itemActive.html +1 -1
- package/docs/examples/w-tree_activable_itemActive_funActive.html +1 -1
- package/docs/examples/w-tree_activable_itemActive_itemTextColor_itemTextColorHover.html +1 -1
- package/docs/examples/w-tree_default.html +1 -1
- package/docs/examples/w-tree_defaultDisplayLevel.html +1 -1
- package/docs/examples/w-tree_draggable.html +1 -1
- package/docs/examples/w-tree_draggable_dgInsertLineColor_dgInsertBackgroundColor_dgBelongBackgroundColor.html +1 -1
- package/docs/examples/w-tree_draggable_dgPreviewOpacity_dgPreviewBorderWidth_dgBelongBackgroundColor.html +1 -1
- package/docs/examples/w-tree_draggable_dgTextDisabled_dgTextDisabledColor_dgTextDisabledPaddingLeft.html +1 -1
- package/docs/examples/w-tree_events.html +1 -1
- package/docs/examples/w-tree_filterByFun.html +1 -1
- package/docs/examples/w-tree_filterKeywords_funFilter.html +1 -1
- package/docs/examples/w-tree_filterKeywords_noResultsText_selectable.html +1 -1
- package/docs/examples/w-tree_filterKeywords_statePaddingStyle_noResultsText.html +1 -1
- package/docs/examples/w-tree_iconSize(20).html +1 -1
- package/docs/examples/w-tree_iconSize(20)_defItemHeight(24).html +1 -1
- package/docs/examples/w-tree_iconSize(30)_defItemHeight(36).html +1 -1
- package/docs/examples/w-tree_iconToggleColor_iconToggleBackgroundColor_iconToggleBackgroundColorHover.html +1 -1
- package/docs/examples/w-tree_indent.html +1 -1
- package/docs/examples/w-tree_itemRippleColor.html +1 -1
- package/docs/examples/w-tree_itemTextColor_itemTextColorHover_itemBackgroundColor_itemBackgroundColorHover.html +1 -1
- package/docs/examples/w-tree_keyPrimary_keyText_keyChildren.html +1 -1
- package/docs/examples/w-tree_no viewHeightMax.html +1 -1
- package/docs/examples/w-tree_operatable.html +1 -1
- package/docs/examples/w-tree_operatable_draggable.html +1 -1
- package/docs/examples/w-tree_operatable_editorRenameCancelBtnBackgroundColor_editorRenameCancelBtnBackgroundColorHover.html +1 -1
- package/docs/examples/w-tree_operatable_editorRenameCancelBtnIcon_editorRenameCancelBtnIconSize_editorRenameCancelBtnIconColor.html +1 -1
- package/docs/examples/w-tree_operatable_editorRenameCancelBtnText_editorRenameCancelBtnTextColor_editorRenameCancelBtnTextColorHover.html +1 -1
- package/docs/examples/w-tree_operatable_editorRenameContentBackgroundColor_editorRenameFooterBackgroundColor.html +1 -1
- package/docs/examples/w-tree_operatable_editorRenameInputTextColor_editorRenameInputTextBottomLineBorderColor_editorRenameInputTextBottomLineBorderColorHover.html +1 -1
- package/docs/examples/w-tree_operatable_editorRenameSaveBtnBackgroundColor_editorRenameSaveBtnBackgroundColorHover.html +1 -1
- package/docs/examples/w-tree_operatable_editorRenameSaveBtnIcon_editorRenameSaveBtnIconSize_editorRenameSaveBtnIconColor.html +1 -1
- package/docs/examples/w-tree_operatable_editorRenameSaveBtnText_editorRenameSaveBtnTextColor_editorRenameSaveBtnTextColorHover.html +1 -1
- package/docs/examples/w-tree_operatable_funOperateItem.html +1 -1
- package/docs/examples/w-tree_operatable_operateBtnIconSize_operateBtnBackgroundColor_operateBtnBackgroundColorHover.html +1 -1
- package/docs/examples/w-tree_operatable_operateBtnTooltip_operateItemTextForRename_operateItemTextForInsertBefore.html +1 -1
- package/docs/examples/w-tree_operatable_operateItemBackgroundColor_operateItemBackgroundColorHover_operateItemTextColor.html +1 -1
- package/docs/examples/w-tree_operatable_operateItemHeight_operateItemIconSize_operateItemPaddingStyle.html +1 -1
- package/docs/examples/w-tree_operatable_operateItemIconForRename_operateItemIconForInsertBefore_operateItemIconForInsertChild.html +1 -1
- package/docs/examples/w-tree_operatable_operatePanelWidth_operatePanelHeight_operateItemIconSize.html +1 -1
- package/docs/examples/w-tree_paddingStyle.html +1 -1
- package/docs/examples/w-tree_selectable.html +1 -1
- package/docs/examples/w-tree_selectable_draggable.html +1 -1
- package/docs/examples/w-tree_slot.html +1 -1
- package/docs/examples/w-tree_slot_edit-text.html +1 -1
- package/docs/examples/w-tree_slot_iconUncheckedColor_iconUncheckedDisabledColor_iconCheckedColor.html +1 -1
- package/docs/examples/w-tree_slot_locked_selectable.html +1 -1
- package/docs/examples/w-tree_slot_operatable.html +1 -1
- package/docs/examples/w-tree_slot_selectable.html +1 -1
- package/docs/examples/w-tree_slot_selectable_draggable.html +1 -1
- package/docs/examples/w-tree_slot_selectable_iconSize(20)_defItemHeight(24).html +1 -1
- package/docs/examples/w-tree_slot_selectable_large data (100,000 items).html +1 -1
- package/docs/examples/w-tree_toggleItemsAll.html +1 -1
- package/docs/examples/w-tree_toggleItemsByFun.html +1 -1
- package/docs/examples/w-tree_viewHeightMax.html +1 -1
- package/docs/examples/w-vditor-dyn_default.html +1 -1
- package/docs/examples/w-vditor-dyn_fontSize.html +1 -1
- package/docs/examples/w-vditor-dyn_fullwidth.html +1 -1
- package/docs/examples/w-vditor-dyn_height.html +1 -1
- package/docs/examples/w-vditor-dyn_not editable.html +1 -1
- package/docs/examples/w-vditor-dyn_slot_keyHint(array).html +1 -1
- package/docs/examples/w-vditor-dyn_slot_keyHint(string).html +1 -1
- package/docs/examples/w-vditor-dyn_slot_keyHint(string)_hintBackgroundColor.html +1 -1
- package/docs/examples/w-vditor-dyn_slot_keyHint(string)_hintBorderRadius.html +1 -1
- package/docs/global.html +1 -1
- package/docs/index.html +1 -1
- package/docs/module-WAggridVueDyn.html +1 -1
- package/docs/module-WBadge.html +1 -1
- package/docs/module-WButtonChip.html +1 -1
- package/docs/module-WButtonCircle.html +1 -1
- package/docs/module-WCheckbox.html +1 -1
- package/docs/module-WCkeditorVueDyn.html +1 -1
- package/docs/module-WColorPickAlpha.html +1 -1
- package/docs/module-WColorPickHexagon.html +1 -1
- package/docs/module-WColorPickHexagonGray.html +1 -1
- package/docs/module-WColorPickHsv.html +1 -1
- package/docs/module-WColorPickHue.html +1 -1
- package/docs/module-WColorPickStripe.html +1 -1
- package/docs/module-WColorSelect.html +1 -1
- package/docs/module-WColorSelectInput.html +1 -1
- package/docs/module-WColorSelectPanel.html +1 -1
- package/docs/module-WColorSelectPanelBlock.html +1 -1
- package/docs/module-WColorSelectPanelHsva.html +1 -1
- package/docs/module-WConfirm.html +1 -1
- package/docs/module-WDialog.html +1 -1
- package/docs/module-WDrawer.html +1 -1
- package/docs/module-WDropfiles.html +1 -1
- package/docs/module-WDynamicList.html +1 -1
- package/docs/module-WEchartsVueDyn.html +1 -1
- package/docs/module-WExplorer.html +1 -1
- package/docs/module-WGroupBaggage.html +1 -1
- package/docs/module-WGroupChipCheck.html +1 -1
- package/docs/module-WGroupChipRadio.html +1 -1
- package/docs/module-WGroupDragdrop.html +1 -1
- package/docs/module-WGroupIconCheck.html +1 -1
- package/docs/module-WGroupIconRadio.html +1 -1
- package/docs/module-WGroupTags.html +1 -1
- package/docs/module-WHighchartsBitmapDyn.html +1 -1
- package/docs/module-WHighchartsVueDyn.html +1 -1
- package/docs/module-WHighstockVueDyn.html +1 -1
- package/docs/module-WIcon.html +1 -1
- package/docs/module-WIconLoading.html +1 -1
- package/docs/module-WImageCascadingDyn.html +1 -1
- package/docs/module-WImageLazy.html +1 -1
- package/docs/module-WImageViewerDyn.html +1 -1
- package/docs/module-WInputCheckbox.html +1 -1
- package/docs/module-WInputRadio.html +1 -1
- package/docs/module-WJsonView.html +1 -1
- package/docs/module-WLeafletVueDyn.html +1 -1
- package/docs/module-WLevelGrade.html +1 -1
- package/docs/module-WListCheck.html +1 -1
- package/docs/module-WListExpand.html +1 -1
- package/docs/module-WListExpandItem.html +1 -1
- package/docs/module-WListHorizontal.html +1 -1
- package/docs/module-WListItem.html +1 -1
- package/docs/module-WListRadio.html +1 -1
- package/docs/module-WListVertical.html +1 -1
- package/docs/module-WPanelAvatar.html +1 -1
- package/docs/module-WPanelBulge.html +1 -1
- package/docs/module-WPanelDivideHorizontal.html +1 -1
- package/docs/module-WPanelDivideVertical.html +1 -1
- package/docs/module-WPanelLabelItem.html +1 -1
- package/docs/module-WPanelScale.html +1 -1
- package/docs/module-WPanelScrolly.html +1 -1
- package/docs/module-WPanelScrollyCore.html +1 -1
- package/docs/module-WPanelStripe.html +1 -1
- package/docs/module-WPopup.html +1 -1
- package/docs/module-WPopupEditText.html +1 -1
- package/docs/module-WProgressBar.html +1 -1
- package/docs/module-WProgressCircle.html +1 -1
- package/docs/module-WQuillVueDyn.html +1 -1
- package/docs/module-WSegmentsVertical.html +1 -1
- package/docs/module-WShellBottomLine.html +1 -1
- package/docs/module-WShellEllipse.html +1 -1
- package/docs/module-WSlider.html +1 -1
- package/docs/module-WSwitch.html +1 -1
- package/docs/module-WTableDyn.html +1 -1
- package/docs/module-WText.html +1 -1
- package/docs/module-WTextCore.html +1 -1
- package/docs/module-WTextInt.html +1 -1
- package/docs/module-WTextIntCore.html +1 -1
- package/docs/module-WTextSelect.html +1 -1
- package/docs/module-WTextSuggest.html +1 -1
- package/docs/module-WTextSuggestCore.html +1 -1
- package/docs/module-WTextarea.html +1 -1
- package/docs/module-WTextareaCore.html +1 -1
- package/docs/module-WThreejsVueDyn.html +1 -1
- package/docs/module-WTimeday.html +1 -1
- package/docs/module-WTimedayCore.html +1 -1
- package/docs/module-WTimedayRange.html +1 -1
- package/docs/module-WTimedayRangeCore.html +1 -1
- package/docs/module-WTimeminute.html +1 -1
- package/docs/module-WTimeminuteCore.html +1 -1
- package/docs/module-WTimeminuteRange.html +1 -1
- package/docs/module-WTimeminuteRangeCore.html +1 -1
- package/docs/module-WTinymceVueDyn.html +1 -1
- package/docs/module-WTooltip.html +1 -1
- package/docs/module-WTree.html +1 -1
- package/docs/module-WTreeIconCheckbox.html +1 -1
- package/docs/module-WTreeIconToggle.html +1 -1
- package/docs/module-WVditorDyn.html +1 -1
- package/package.json +4 -4
- package/src/js/convertToTreeWk.wk.umd.js +1 -1
- package/src/js/flattenTreeWk.wk.umd.js +1 -1
|
@@ -477,7 +477,7 @@
|
|
|
477
477
|
<br class="clear">
|
|
478
478
|
|
|
479
479
|
<footer>
|
|
480
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
480
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Thu Jul 23 2026 10:41:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
481
481
|
</footer>
|
|
482
482
|
|
|
483
483
|
<script>prettyPrint();</script>
|
|
@@ -741,7 +741,7 @@
|
|
|
741
741
|
<br class="clear">
|
|
742
742
|
|
|
743
743
|
<footer>
|
|
744
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
744
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Thu Jul 23 2026 10:41:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
745
745
|
</footer>
|
|
746
746
|
|
|
747
747
|
<script>prettyPrint();</script>
|
|
@@ -525,7 +525,7 @@
|
|
|
525
525
|
<br class="clear">
|
|
526
526
|
|
|
527
527
|
<footer>
|
|
528
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
528
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Thu Jul 23 2026 10:41:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
529
529
|
</footer>
|
|
530
530
|
|
|
531
531
|
<script>prettyPrint();</script>
|
|
@@ -285,7 +285,7 @@
|
|
|
285
285
|
<br class="clear">
|
|
286
286
|
|
|
287
287
|
<footer>
|
|
288
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
288
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Thu Jul 23 2026 10:41:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
289
289
|
</footer>
|
|
290
290
|
|
|
291
291
|
<script>prettyPrint();</script>
|
|
@@ -501,7 +501,7 @@
|
|
|
501
501
|
<br class="clear">
|
|
502
502
|
|
|
503
503
|
<footer>
|
|
504
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
504
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Thu Jul 23 2026 10:41:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
505
505
|
</footer>
|
|
506
506
|
|
|
507
507
|
<script>prettyPrint();</script>
|
package/docs/module-WTree.html
CHANGED
|
@@ -1569,7 +1569,7 @@
|
|
|
1569
1569
|
<br class="clear">
|
|
1570
1570
|
|
|
1571
1571
|
<footer>
|
|
1572
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
1572
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Thu Jul 23 2026 10:41:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
1573
1573
|
</footer>
|
|
1574
1574
|
|
|
1575
1575
|
<script>prettyPrint();</script>
|
|
@@ -333,7 +333,7 @@
|
|
|
333
333
|
<br class="clear">
|
|
334
334
|
|
|
335
335
|
<footer>
|
|
336
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
336
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Thu Jul 23 2026 10:41:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
337
337
|
</footer>
|
|
338
338
|
|
|
339
339
|
<script>prettyPrint();</script>
|
|
@@ -309,7 +309,7 @@
|
|
|
309
309
|
<br class="clear">
|
|
310
310
|
|
|
311
311
|
<footer>
|
|
312
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
312
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Thu Jul 23 2026 10:41:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
313
313
|
</footer>
|
|
314
314
|
|
|
315
315
|
<script>prettyPrint();</script>
|
|
@@ -357,7 +357,7 @@
|
|
|
357
357
|
<br class="clear">
|
|
358
358
|
|
|
359
359
|
<footer>
|
|
360
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
360
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Thu Jul 23 2026 10:41:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
361
361
|
</footer>
|
|
362
362
|
|
|
363
363
|
<script>prettyPrint();</script>
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "w-component-vue",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.74",
|
|
4
4
|
"main": "dist/w-component-vue.umd.js",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@mdi/js": "^7.4.47",
|
|
7
7
|
"lodash-es": "^4.18.1",
|
|
8
|
-
"wsemi": "^1.8.
|
|
8
|
+
"wsemi": "^1.8.66"
|
|
9
9
|
},
|
|
10
10
|
"devDependencies": {
|
|
11
11
|
"@vue/cli-plugin-babel": "^5.0.8",
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
"pixelmatch": "^7.2.0",
|
|
23
23
|
"pngjs": "^7.0.0",
|
|
24
24
|
"vue": "^2.6.14",
|
|
25
|
-
"w-screenctl": "^1.0.
|
|
26
|
-
"w-package-tools": "^1.1.
|
|
25
|
+
"w-screenctl": "^1.0.4",
|
|
26
|
+
"w-package-tools": "^1.1.11"
|
|
27
27
|
},
|
|
28
28
|
"scripts": {
|
|
29
29
|
"serve": "vue-cli-service serve",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const d="function"==typeof Buffer,l="function"==typeof TextDecoder?new TextDecoder:void 0,I=("function"==typeof TextEncoder&&new TextEncoder,Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=")),m=(()=>{let d={};return I.forEach((l,I)=>d[l]=I),d})(),b=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,Z=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=d=>{let l,m,b,Z,i="";const X=d.length%3;for(let X=0;X<d.length;){if((m=d.charCodeAt(X++))>255||(b=d.charCodeAt(X++))>255||(Z=d.charCodeAt(X++))>255)throw new TypeError("invalid character found");l=m<<16|b<<8|Z,i+=I[l>>18&63]+I[l>>12&63]+I[l>>6&63]+I[63&l]}return X?i.slice(0,X-3)+"===".substring(X):i},y=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,C=d=>{switch(d.length){case 4:var l=((7&d.charCodeAt(0))<<18|(63&d.charCodeAt(1))<<12|(63&d.charCodeAt(2))<<6|63&d.charCodeAt(3))-65536;return Z((l>>>10)+55296)+Z(56320+(1023&l));case 3:return Z((15&d.charCodeAt(0))<<12|(63&d.charCodeAt(1))<<6|63&d.charCodeAt(2));default:return Z((31&d.charCodeAt(0))<<6|63&d.charCodeAt(1))}},K=d=>d.replace(y,C),G=d=>{if(d=d.replace(/\s+/g,""),!b.test(d))throw new TypeError("malformed base64.");let l,I,i;d+="==".slice(2-(3&d.length));let X=[];for(let b=0;b<d.length;)l=m[d.charAt(b++)]<<18|m[d.charAt(b++)]<<12|(I=m[d.charAt(b++)])<<6|(i=m[d.charAt(b++)]),64===I?X.push(Z(l>>16&255)):64===i?X.push(Z(l>>16&255,l>>8&255)):X.push(Z(l>>16&255,l>>8&255,255&l));return X.join("")},p="function"==typeof atob?d=>atob(X(d)):d?d=>Buffer.from(d,"base64").toString("binary"):G,W=d?d=>i(Buffer.from(d,"base64")):d=>i(p(d).split("").map(d=>d.charCodeAt(0))),V=d?d=>Buffer.from(d,"base64").toString("utf8"):l?d=>l.decode(W(d)):d=>K(p(d)),h=d=>X(d.replace(/[-_]/g,d=>"-"==d?"+":"/")),t=d=>V(h(d)),Y=t;function o(d){return d&&d.__esModule&&Object.prototype.hasOwnProperty.call(d,"default")?d.default:d}var u={exports:{}};!function(d){var l=Object.prototype.hasOwnProperty,I="~";function m(){}function b(d,l,I){this.fn=d,this.context=l,this.once=I||!1}function Z(d,l,m,Z,i){if("function"!=typeof m)throw new TypeError("The listener must be a function");var X=new b(m,Z||d,i),c=I?I+l:l;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,l){0===--d._eventsCount?d._events=new m:delete d._events[l]}function X(){this._events=new m,this._eventsCount=0}Object.create&&(m.prototype=Object.create(null),(new m).__proto__||(I=!1)),X.prototype.eventNames=function(){var d,m,b=[];if(0===this._eventsCount)return b;for(m in d=this._events)l.call(d,m)&&b.push(I?m.slice(1):m);return Object.getOwnPropertySymbols?b.concat(Object.getOwnPropertySymbols(d)):b},X.prototype.listeners=function(d){var l=I?I+d:d,m=this._events[l];if(!m)return[];if(m.fn)return[m.fn];for(var b=0,Z=m.length,i=new Array(Z);b<Z;b++)i[b]=m[b].fn;return i},X.prototype.listenerCount=function(d){var l=I?I+d:d,m=this._events[l];return m?m.fn?1:m.length:0},X.prototype.emit=function(d,l,m,b,Z,i){var X=I?I+d:d;if(!this._events[X])return!1;var c,y,C=this._events[X],K=arguments.length;if(C.fn){switch(C.once&&this.removeListener(d,C.fn,void 0,!0),K){case 1:return C.fn.call(C.context),!0;case 2:return C.fn.call(C.context,l),!0;case 3:return C.fn.call(C.context,l,m),!0;case 4:return C.fn.call(C.context,l,m,b),!0;case 5:return C.fn.call(C.context,l,m,b,Z),!0;case 6:return C.fn.call(C.context,l,m,b,Z,i),!0}for(y=1,c=new Array(K-1);y<K;y++)c[y-1]=arguments[y];C.fn.apply(C.context,c)}else{var G,p=C.length;for(y=0;y<p;y++)switch(C[y].once&&this.removeListener(d,C[y].fn,void 0,!0),K){case 1:C[y].fn.call(C[y].context);break;case 2:C[y].fn.call(C[y].context,l);break;case 3:C[y].fn.call(C[y].context,l,m);break;case 4:C[y].fn.call(C[y].context,l,m,b);break;default:if(!c)for(G=1,c=new Array(K-1);G<K;G++)c[G-1]=arguments[G];C[y].fn.apply(C[y].context,c)}}return!0},X.prototype.on=function(d,l,I){return Z(this,d,l,I,!1)},X.prototype.once=function(d,l,I){return Z(this,d,l,I,!0)},X.prototype.removeListener=function(d,l,m,b){var Z=I?I+d:d;if(!this._events[Z])return this;if(!l)return i(this,Z),this;var X=this._events[Z];if(X.fn)X.fn!==l||b&&!X.once||m&&X.context!==m||i(this,Z);else{for(var c=0,y=[],C=X.length;c<C;c++)(X[c].fn!==l||b&&!X[c].once||m&&X[c].context!==m)&&y.push(X[c]);y.length?this._events[Z]=1===y.length?y[0]:y:i(this,Z)}return this},X.prototype.removeAllListeners=function(d){var l;return d?(l=I?I+d:d,this._events[l]&&i(this,l)):(this._events=new m,this._eventsCount=0),this},X.prototype.off=X.prototype.removeListener,X.prototype.addListener=X.prototype.on,X.prefixed=I,X.EventEmitter=X,d.exports=X}(u);var n=o(u.exports);let H;!function(){if("browser"!==("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let d=Y("CgoKInVzZSBzdHJpY3QiO3ZhciB0PUFycmF5LmlzQXJyYXkscj0ib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWwsZT0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLG49cnx8ZXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxvPW4uU3ltYm9sLHU9T2JqZWN0LnByb3RvdHlwZSxpPXUuaGFzT3duUHJvcGVydHksYz11LnRvU3RyaW5nLGE9bz9vLnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgZj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO3ZhciBsPW8/by50b1N0cmluZ1RhZzp2b2lkIDA7ZnVuY3Rpb24gcyh0KXtyZXR1cm4gbnVsbD09dD92b2lkIDA9PT10PyJbb2JqZWN0IFVuZGVmaW5lZF0iOiJbb2JqZWN0IE51bGxdIjpsJiZsIGluIE9iamVjdCh0KT9mdW5jdGlvbih0KXt2YXIgcj1pLmNhbGwodCxhKSxlPXRbYV07dHJ5e3RbYV09dm9pZCAwO3ZhciBuPSEwfWNhdGNoKHQpe312YXIgbz1jLmNhbGwodCk7cmV0dXJuIG4mJihyP3RbYV09ZTpkZWxldGUgdFthXSksb30odCk6ZnVuY3Rpb24odCl7cmV0dXJuIGYuY2FsbCh0KX0odCl9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fWZ1bmN0aW9uIGIodCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxwKHQpJiYiW29iamVjdCBTeW1ib2xdIj09cyh0KX12YXIgdj0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyx5PS9eXHcqJC87ZnVuY3Rpb24gaChyLGUpe2lmKHQocikpcmV0dXJuITE7dmFyIG49dHlwZW9mIHI7cmV0dXJuISgibnVtYmVyIiE9biYmInN5bWJvbCIhPW4mJiJib29sZWFuIiE9biYmbnVsbCE9ciYmIWIocikpfHwoeS50ZXN0KHIpfHwhdi50ZXN0KHIpfHxudWxsIT1lJiZyIGluIE9iamVjdChlKSl9ZnVuY3Rpb24gZCh0KXt2YXIgcj10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1yfHwiZnVuY3Rpb24iPT1yKX1mdW5jdGlvbiBqKHQpe2lmKCFkKHQpKXJldHVybiExO3ZhciByPXModCk7cmV0dXJuIltvYmplY3QgRnVuY3Rpb25dIj09cnx8IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIj09cnx8IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iPT1yfHwiW29iamVjdCBQcm94eV0iPT1yfXZhciBnLF89blsiX19jb3JlLWpzX3NoYXJlZF9fIl0sTz0oZz0vW14uXSskLy5leGVjKF8mJl8ua2V5cyYmXy5rZXlzLklFX1BST1RPfHwiIikpPyJTeW1ib2woc3JjKV8xLiIrZzoiIjt2YXIgdz1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gbSh0KXtpZihudWxsIT10KXt0cnl7cmV0dXJuIHcuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIEE9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8seD1GdW5jdGlvbi5wcm90b3R5cGUsUz1PYmplY3QucHJvdG90eXBlLFA9eC50b1N0cmluZyx6PVMuaGFzT3duUHJvcGVydHksRT1SZWdFeHAoIl4iK1AuY2FsbCh6KS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTtmdW5jdGlvbiBJKHQpe3JldHVybiEoIWQodCl8fChyPXQsTyYmTyBpbiByKSkmJihqKHQpP0U6QSkudGVzdChtKHQpKTt2YXIgcn1mdW5jdGlvbiBOKHQscil7dmFyIGU9ZnVuY3Rpb24odCxyKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtyXX0odCxyKTtyZXR1cm4gSShlKT9lOnZvaWQgMH12YXIgVD1OKE9iamVjdCwiY3JlYXRlIik7dmFyICQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgQz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIEYodCl7dmFyIHI9LTEsZT1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK3I8ZTspe3ZhciBuPXRbcl07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gTSh0LHIpe3JldHVybiB0PT09cnx8dCE9dCYmciE9cn1mdW5jdGlvbiBVKHQscil7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLTspaWYoTSh0W2VdWzBdLHIpKXJldHVybiBlO3JldHVybi0xfUYucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1UP1QobnVsbCk6e30sdGhpcy5zaXplPTB9LEYucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgcj10aGlzLmhhcyh0KSYmZGVsZXRlIHRoaXMuX19kYXRhX19bdF07cmV0dXJuIHRoaXMuc2l6ZS09cj8xOjAscn0sRi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX19kYXRhX187aWYoVCl7dmFyIGU9clt0XTtyZXR1cm4iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI9PT1lP3ZvaWQgMDplfXJldHVybiAkLmNhbGwocix0KT9yW3RdOnZvaWQgMH0sRi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX19kYXRhX187cmV0dXJuIFQ/dm9pZCAwIT09clt0XTpDLmNhbGwocix0KX0sRi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQscil7dmFyIGU9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsZVt0XT1UJiZ2b2lkIDA9PT1yPyJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjpyLHRoaXN9O3ZhciBrPUFycmF5LnByb3RvdHlwZS5zcGxpY2U7ZnVuY3Rpb24gQih0KXt2YXIgcj0tMSxlPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrcjxlOyl7dmFyIG49dFtyXTt0aGlzLnNldChuWzBdLG5bMV0pfX1CLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LEIucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fLGU9VShyLHQpO3JldHVybiEoZTwwKSYmKGU9PXIubGVuZ3RoLTE/ci5wb3AoKTprLmNhbGwocixlLDEpLC0tdGhpcy5zaXplLCEwKX0sQi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX19kYXRhX18sZT1VKHIsdCk7cmV0dXJuIGU8MD92b2lkIDA6cltlXVsxXX0sQi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBVKHRoaXMuX19kYXRhX18sdCk+LTF9LEIucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LHIpe3ZhciBlPXRoaXMuX19kYXRhX18sbj1VKGUsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsZS5wdXNoKFt0LHJdKSk6ZVtuXVsxXT1yLHRoaXN9O3ZhciBEPU4obiwiTWFwIik7ZnVuY3Rpb24gUih0LHIpe3ZhciBlLG4sbz10Ll9fZGF0YV9fO3JldHVybigic3RyaW5nIj09KG49dHlwZW9mKGU9cikpfHwibnVtYmVyIj09bnx8InN5bWJvbCI9PW58fCJib29sZWFuIj09bj8iX19wcm90b19fIiE9PWU6bnVsbD09PWUpP29bInN0cmluZyI9PXR5cGVvZiByPyJzdHJpbmciOiJoYXNoIl06by5tYXB9ZnVuY3Rpb24gTCh0KXt2YXIgcj0tMSxlPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrcjxlOyl7dmFyIG49dFtyXTt0aGlzLnNldChuWzBdLG5bMV0pfX1MLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2l6ZT0wLHRoaXMuX19kYXRhX189e2hhc2g6bmV3IEYsbWFwOm5ldyhEfHxCKSxzdHJpbmc6bmV3IEZ9fSxMLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIHI9Uih0aGlzLHQpLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplLT1yPzE6MCxyfSxMLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIFIodGhpcyx0KS5nZXQodCl9LEwucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gUih0aGlzLHQpLmhhcyh0KX0sTC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQscil7dmFyIGU9Uih0aGlzLHQpLG49ZS5zaXplO3JldHVybiBlLnNldCh0LHIpLHRoaXMuc2l6ZSs9ZS5zaXplPT1uPzA6MSx0aGlzfTtmdW5jdGlvbiBWKHQscil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHR8fG51bGwhPXImJiJmdW5jdGlvbiIhPXR5cGVvZiByKXRocm93IG5ldyBUeXBlRXJyb3IoIkV4cGVjdGVkIGEgZnVuY3Rpb24iKTt2YXIgZT1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxvPXI/ci5hcHBseSh0aGlzLG4pOm5bMF0sdT1lLmNhY2hlO2lmKHUuaGFzKG8pKXJldHVybiB1LmdldChvKTt2YXIgaT10LmFwcGx5KHRoaXMsbik7cmV0dXJuIGUuY2FjaGU9dS5zZXQobyxpKXx8dSxpfTtyZXR1cm4gZS5jYWNoZT1uZXcoVi5DYWNoZXx8TCksZX1WLkNhY2hlPUw7dmFyIEssVyxxLEc9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csSD0vXFwoXFwpPy9nLEo9KEs9ZnVuY3Rpb24odCl7dmFyIHI9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZyLnB1c2goIiIpLHQucmVwbGFjZShHLGZ1bmN0aW9uKHQsZSxuLG8pe3IucHVzaChuP28ucmVwbGFjZShILCIkMSIpOmV8fHQpfSkscn0sVz1WKEssZnVuY3Rpb24odCl7cmV0dXJuIDUwMD09PXEuc2l6ZSYmcS5jbGVhcigpLHR9KSxxPVcuY2FjaGUsVyksUT1KO2Z1bmN0aW9uIFgodCxyKXtmb3IodmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGgsbz1BcnJheShuKTsrK2U8bjspb1tlXT1yKHRbZV0sZSx0KTtyZXR1cm4gb312YXIgWT1vP28ucHJvdG90eXBlOnZvaWQgMCxaPVk/WS50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gdHQocil7aWYoInN0cmluZyI9PXR5cGVvZiByKXJldHVybiByO2lmKHQocikpcmV0dXJuIFgocix0dCkrIiI7aWYoYihyKSlyZXR1cm4gWj9aLmNhbGwocik6IiI7dmFyIGU9cisiIjtyZXR1cm4iMCI9PWUmJjEvcj09LTEvMD8iLTAiOmV9ZnVuY3Rpb24gcnQocixlKXtyZXR1cm4gdChyKT9yOmgocixlKT9bcl06UShmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD8iIjp0dCh0KX0ocikpfWZ1bmN0aW9uIGV0KHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdHx8Yih0KSlyZXR1cm4gdDt2YXIgcj10KyIiO3JldHVybiIwIj09ciYmMS90PT0tMS8wPyItMCI6cn1mdW5jdGlvbiBudCh0LHIpe2Zvcih2YXIgZT0wLG49KHI9cnQocix0KSkubGVuZ3RoO251bGwhPXQmJmU8bjspdD10W2V0KHJbZSsrXSldO3JldHVybiBlJiZlPT1uP3Q6dm9pZCAwfWZ1bmN0aW9uIG90KHQscixlKXt2YXIgbj1udWxsPT10P3ZvaWQgMDpudCh0LHIpO3JldHVybiB2b2lkIDA9PT1uP2U6bn1mdW5jdGlvbiB1dCh0KXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBpdCh0KXtyZXR1cm4hKCF1dCh0KXx8IiI9PT10KX1mdW5jdGlvbiBjdCh0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBhdCh0KXtpZihjdCh0KSl7Zm9yKGxldCByIGluIHQpcmV0dXJuITA7cmV0dXJuITF9cmV0dXJuITF9ZnVuY3Rpb24gZnQodCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBsdCh0KXtyZXR1cm4gdCE9dH1mdW5jdGlvbiBzdCh0KXtyZXR1cm4hIWZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IFVuZGVmaW5lZF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgTnVsbF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KXx8KCEhZnVuY3Rpb24odCl7aWYoY3QodCkpe2ZvcihsZXQgciBpbiB0KXJldHVybiExO3JldHVybiEwfXJldHVybiExfSh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuISghdXQodCl8fCIiIT09dCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4hIWZ0KHQpJiYwPT09dC5sZW5ndGh9KHQpfHwhIWx0KHQpKSkpKX1mdW5jdGlvbiBwdCh0KXtyZXR1cm4hIWZ0KHQpJiYoMCE9PXQubGVuZ3RoJiYoMSE9PXQubGVuZ3RofHwhc3QodFswXSkpKX1mdW5jdGlvbiBidCh0KXtyZXR1cm4hMD09PShyPXQpfHwhMT09PXJ8fHAocikmJiJbb2JqZWN0IEJvb2xlYW5dIj09cyhyKTt2YXIgcn1mdW5jdGlvbiB2dCh0KXt2YXIgcj10aGlzLl9fZGF0YV9fPW5ldyBCKHQpO3RoaXMuc2l6ZT1yLnNpemV9dnQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1uZXcgQix0aGlzLnNpemU9MH0sdnQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fLGU9ci5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1yLnNpemUsZX0sdnQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9LHZ0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfSx2dC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQscil7dmFyIGU9dGhpcy5fX2RhdGFfXztpZihlIGluc3RhbmNlb2YgQil7dmFyIG49ZS5fX2RhdGFfXztpZighRHx8bi5sZW5ndGg8MTk5KXJldHVybiBuLnB1c2goW3Qscl0pLHRoaXMuc2l6ZT0rK2Uuc2l6ZSx0aGlzO2U9dGhpcy5fX2RhdGFfXz1uZXcgTChuKX1yZXR1cm4gZS5zZXQodCxyKSx0aGlzLnNpemU9ZS5zaXplLHRoaXN9O2Z1bmN0aW9uIHl0KHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBMOysrcjxlOyl0aGlzLmFkZCh0W3JdKX1mdW5jdGlvbiBodCh0LHIpe2Zvcih2YXIgZT0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK2U8bjspaWYocih0W2VdLGUsdCkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gZHQodCxyKXtyZXR1cm4gdC5oYXMocil9eXQucHJvdG90eXBlLmFkZD15dC5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5zZXQodCwiX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIpLHRoaXN9LHl0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfTtmdW5jdGlvbiBqdCh0LHIsZSxuLG8sdSl7dmFyIGk9MSZlLGM9dC5sZW5ndGgsYT1yLmxlbmd0aDtpZihjIT1hJiYhKGkmJmE+YykpcmV0dXJuITE7dmFyIGY9dS5nZXQodCksbD11LmdldChyKTtpZihmJiZsKXJldHVybiBmPT1yJiZsPT10O3ZhciBzPS0xLHA9ITAsYj0yJmU/bmV3IHl0OnZvaWQgMDtmb3IodS5zZXQodCxyKSx1LnNldChyLHQpOysrczxjOyl7dmFyIHY9dFtzXSx5PXJbc107aWYobil2YXIgaD1pP24oeSx2LHMscix0LHUpOm4odix5LHMsdCxyLHUpO2lmKHZvaWQgMCE9PWgpe2lmKGgpY29udGludWU7cD0hMTticmVha31pZihiKXtpZighaHQocixmdW5jdGlvbih0LHIpe2lmKCFkdChiLHIpJiYodj09PXR8fG8odix0LGUsbix1KSkpcmV0dXJuIGIucHVzaChyKX0pKXtwPSExO2JyZWFrfX1lbHNlIGlmKHYhPT15JiYhbyh2LHksZSxuLHUpKXtwPSExO2JyZWFrfX1yZXR1cm4gdS5kZWxldGUodCksdS5kZWxldGUocikscH12YXIgZ3Q9bi5VaW50OEFycmF5O2Z1bmN0aW9uIF90KHQpe3ZhciByPS0xLGU9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7ZVsrK3JdPVtuLHRdfSksZX1mdW5jdGlvbiBPdCh0KXt2YXIgcj0tMSxlPUFycmF5KHQuc2l6ZSk7cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbih0KXtlWysrcl09dH0pLGV9dmFyIHd0PW8/by5wcm90b3R5cGU6dm9pZCAwLG10PXd0P3d0LnZhbHVlT2Y6dm9pZCAwO2Z1bmN0aW9uIEF0KHQscil7Zm9yKHZhciBlPS0xLG49ci5sZW5ndGgsbz10Lmxlbmd0aDsrK2U8bjspdFtvK2VdPXJbZV07cmV0dXJuIHR9ZnVuY3Rpb24geHQocixlLG4pe3ZhciBvPWUocik7cmV0dXJuIHQocik/bzpBdChvLG4ocikpfWZ1bmN0aW9uIFN0KCl7cmV0dXJuW119dmFyIFB0PU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsenQ9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxFdD16dD9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1PYmplY3QodCksZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGgsbz0wLHU9W107KytlPG47KXt2YXIgaT10W2VdO3IoaSxlLHQpJiYodVtvKytdPWkpfXJldHVybiB1fSh6dCh0KSxmdW5jdGlvbihyKXtyZXR1cm4gUHQuY2FsbCh0LHIpfSkpfTpTdCxJdD1FdDtmdW5jdGlvbiBOdCh0KXtyZXR1cm4gcCh0KSYmIltvYmplY3QgQXJndW1lbnRzXSI9PXModCl9dmFyIFR0PU9iamVjdC5wcm90b3R5cGUsJHQ9VHQuaGFzT3duUHJvcGVydHksQ3Q9VHQucHJvcGVydHlJc0VudW1lcmFibGUsRnQ9TnQoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpKT9OdDpmdW5jdGlvbih0KXtyZXR1cm4gcCh0KSYmJHQuY2FsbCh0LCJjYWxsZWUiKSYmIUN0LmNhbGwodCwiY2FsbGVlIil9O3ZhciBNdD0ib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJmV4cG9ydHMmJiFleHBvcnRzLm5vZGVUeXBlJiZleHBvcnRzLFV0PU10JiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsa3Q9VXQmJlV0LmV4cG9ydHM9PT1NdD9uLkJ1ZmZlcjp2b2lkIDAsQnQ9KGt0P2t0LmlzQnVmZmVyOnZvaWQgMCl8fGZ1bmN0aW9uKCl7cmV0dXJuITF9LER0PS9eKD86MHxbMS05XVxkKikkLztmdW5jdGlvbiBSdCh0LHIpe3ZhciBlPXR5cGVvZiB0O3JldHVybiEhKHI9bnVsbD09cj85MDA3MTk5MjU0NzQwOTkxOnIpJiYoIm51bWJlciI9PWV8fCJzeW1ib2wiIT1lJiZEdC50ZXN0KHQpKSYmdD4tMSYmdCUxPT0wJiZ0PHJ9ZnVuY3Rpb24gTHQodCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PTkwMDcxOTkyNTQ3NDA5OTF9dmFyIFZ0PXt9O2Z1bmN0aW9uIEt0KHQpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gdChyKX19VnRbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPVZ0WyJbb2JqZWN0IEZsb2F0NjRBcnJheV0iXT1WdFsiW29iamVjdCBJbnQ4QXJyYXldIl09VnRbIltvYmplY3QgSW50MTZBcnJheV0iXT1WdFsiW29iamVjdCBJbnQzMkFycmF5XSJdPVZ0WyJbb2JqZWN0IFVpbnQ4QXJyYXldIl09VnRbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09VnRbIltvYmplY3QgVWludDE2QXJyYXldIl09VnRbIltvYmplY3QgVWludDMyQXJyYXldIl09ITAsVnRbIltvYmplY3QgQXJndW1lbnRzXSJdPVZ0WyJbb2JqZWN0IEFycmF5XSJdPVZ0WyJbb2JqZWN0IEFycmF5QnVmZmVyXSJdPVZ0WyJbb2JqZWN0IEJvb2xlYW5dIl09VnRbIltvYmplY3QgRGF0YVZpZXddIl09VnRbIltvYmplY3QgRGF0ZV0iXT1WdFsiW29iamVjdCBFcnJvcl0iXT1WdFsiW29iamVjdCBGdW5jdGlvbl0iXT1WdFsiW29iamVjdCBNYXBdIl09VnRbIltvYmplY3QgTnVtYmVyXSJdPVZ0WyJbb2JqZWN0IE9iamVjdF0iXT1WdFsiW29iamVjdCBSZWdFeHBdIl09VnRbIltvYmplY3QgU2V0XSJdPVZ0WyJbb2JqZWN0IFN0cmluZ10iXT1WdFsiW29iamVjdCBXZWFrTWFwXSJdPSExO3ZhciBXdD0ib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJmV4cG9ydHMmJiFleHBvcnRzLm5vZGVUeXBlJiZleHBvcnRzLHF0PVd0JiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsR3Q9cXQmJnF0LmV4cG9ydHM9PT1XdCYmci5wcm9jZXNzLEh0PWZ1bmN0aW9uKCl7dHJ5e3ZhciB0PXF0JiZxdC5yZXF1aXJlJiZxdC5yZXF1aXJlKCJ1dGlsIikudHlwZXM7cmV0dXJuIHR8fEd0JiZHdC5iaW5kaW5nJiZHdC5iaW5kaW5nKCJ1dGlsIil9Y2F0Y2godCl7fX0oKSxKdD1IdCYmSHQuaXNUeXBlZEFycmF5LFF0PUp0P0t0KEp0KTpmdW5jdGlvbih0KXtyZXR1cm4gcCh0KSYmTHQodC5sZW5ndGgpJiYhIVZ0W3ModCldfSxYdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIFl0KHIsZSl7dmFyIG49dChyKSxvPSFuJiZGdChyKSx1PSFuJiYhbyYmQnQociksaT0hbiYmIW8mJiF1JiZRdChyKSxjPW58fG98fHV8fGksYT1jP2Z1bmN0aW9uKHQscil7Zm9yKHZhciBlPS0xLG49QXJyYXkodCk7KytlPHQ7KW5bZV09cihlKTtyZXR1cm4gbn0oci5sZW5ndGgsU3RyaW5nKTpbXSxmPWEubGVuZ3RoO2Zvcih2YXIgbCBpbiByKSFlJiYhWHQuY2FsbChyLGwpfHxjJiYoImxlbmd0aCI9PWx8fHUmJigib2Zmc2V0Ij09bHx8InBhcmVudCI9PWwpfHxpJiYoImJ1ZmZlciI9PWx8fCJieXRlTGVuZ3RoIj09bHx8ImJ5dGVPZmZzZXQiPT1sKXx8UnQobCxmKSl8fGEucHVzaChsKTtyZXR1cm4gYX12YXIgWnQ9T2JqZWN0LnByb3RvdHlwZTtmdW5jdGlvbiB0cih0KXt2YXIgcj10JiZ0LmNvbnN0cnVjdG9yO3JldHVybiB0PT09KCJmdW5jdGlvbiI9PXR5cGVvZiByJiZyLnByb3RvdHlwZXx8WnQpfWZ1bmN0aW9uIHJyKHQscil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KHIoZSkpfX12YXIgZXI9cnIoT2JqZWN0LmtleXMsT2JqZWN0KSxucj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIG9yKHQpe2lmKCF0cih0KSlyZXR1cm4gZXIodCk7dmFyIHI9W107Zm9yKHZhciBlIGluIE9iamVjdCh0KSluci5jYWxsKHQsZSkmJiJjb25zdHJ1Y3RvciIhPWUmJnIucHVzaChlKTtyZXR1cm4gcn1mdW5jdGlvbiB1cih0KXtyZXR1cm4gbnVsbCE9dCYmTHQodC5sZW5ndGgpJiYhaih0KX1mdW5jdGlvbiBpcih0KXtyZXR1cm4gdXIodCk/WXQodCk6b3IodCl9ZnVuY3Rpb24gY3IodCl7cmV0dXJuIHh0KHQsaXIsSXQpfXZhciBhcj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBmcj1OKG4sIkRhdGFWaWV3IiksbHI9TihuLCJQcm9taXNlIiksc3I9TihuLCJTZXQiKSxwcj1OKG4sIldlYWtNYXAiKSxicj0iW29iamVjdCBNYXBdIix2cj0iW29iamVjdCBQcm9taXNlXSIseXI9IltvYmplY3QgU2V0XSIsaHI9IltvYmplY3QgV2Vha01hcF0iLGRyPSJbb2JqZWN0IERhdGFWaWV3XSIsanI9bShmciksZ3I9bShEKSxfcj1tKGxyKSxPcj1tKHNyKSx3cj1tKHByKSxtcj1zOyhmciYmbXIobmV3IGZyKG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1kcnx8RCYmbXIobmV3IEQpIT1icnx8bHImJm1yKGxyLnJlc29sdmUoKSkhPXZyfHxzciYmbXIobmV3IHNyKSE9eXJ8fHByJiZtcihuZXcgcHIpIT1ocikmJihtcj1mdW5jdGlvbih0KXt2YXIgcj1zKHQpLGU9IltvYmplY3QgT2JqZWN0XSI9PXI/dC5jb25zdHJ1Y3Rvcjp2b2lkIDAsbj1lP20oZSk6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBqcjpyZXR1cm4gZHI7Y2FzZSBncjpyZXR1cm4gYnI7Y2FzZSBfcjpyZXR1cm4gdnI7Y2FzZSBPcjpyZXR1cm4geXI7Y2FzZSB3cjpyZXR1cm4gaHJ9cmV0dXJuIHJ9KTt2YXIgQXI9bXIseHI9IltvYmplY3QgQXJndW1lbnRzXSIsU3I9IltvYmplY3QgQXJyYXldIixQcj0iW29iamVjdCBPYmplY3RdIix6cj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIEVyKHIsZSxuLG8sdSxpKXt2YXIgYz10KHIpLGE9dChlKSxmPWM/U3I6QXIociksbD1hP1NyOkFyKGUpLHM9KGY9Zj09eHI/UHI6Zik9PVByLHA9KGw9bD09eHI/UHI6bCk9PVByLGI9Zj09bDtpZihiJiZCdChyKSl7aWYoIUJ0KGUpKXJldHVybiExO2M9ITAscz0hMX1pZihiJiYhcylyZXR1cm4gaXx8KGk9bmV3IHZ0KSxjfHxRdChyKT9qdChyLGUsbixvLHUsaSk6ZnVuY3Rpb24odCxyLGUsbixvLHUsaSl7c3dpdGNoKGUpe2Nhc2UiW29iamVjdCBEYXRhVmlld10iOmlmKHQuYnl0ZUxlbmd0aCE9ci5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPXIuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLHI9ci5idWZmZXI7Y2FzZSJbb2JqZWN0IEFycmF5QnVmZmVyXSI6cmV0dXJuISh0LmJ5dGVMZW5ndGghPXIuYnl0ZUxlbmd0aHx8IXUobmV3IGd0KHQpLG5ldyBndChyKSkpO2Nhc2UiW29iamVjdCBCb29sZWFuXSI6Y2FzZSJbb2JqZWN0IERhdGVdIjpjYXNlIltvYmplY3QgTnVtYmVyXSI6cmV0dXJuIE0oK3QsK3IpO2Nhc2UiW29iamVjdCBFcnJvcl0iOnJldHVybiB0Lm5hbWU9PXIubmFtZSYmdC5tZXNzYWdlPT1yLm1lc3NhZ2U7Y2FzZSJbb2JqZWN0IFJlZ0V4cF0iOmNhc2UiW29iamVjdCBTdHJpbmddIjpyZXR1cm4gdD09cisiIjtjYXNlIltvYmplY3QgTWFwXSI6dmFyIGM9X3Q7Y2FzZSJbb2JqZWN0IFNldF0iOnZhciBhPTEmbjtpZihjfHwoYz1PdCksdC5zaXplIT1yLnNpemUmJiFhKXJldHVybiExO3ZhciBmPWkuZ2V0KHQpO2lmKGYpcmV0dXJuIGY9PXI7bnw9MixpLnNldCh0LHIpO3ZhciBsPWp0KGModCksYyhyKSxuLG8sdSxpKTtyZXR1cm4gaS5kZWxldGUodCksbDtjYXNlIltvYmplY3QgU3ltYm9sXSI6aWYobXQpcmV0dXJuIG10LmNhbGwodCk9PW10LmNhbGwocil9cmV0dXJuITF9KHIsZSxmLG4sbyx1LGkpO2lmKCEoMSZuKSl7dmFyIHY9cyYmenIuY2FsbChyLCJfX3dyYXBwZWRfXyIpLHk9cCYmenIuY2FsbChlLCJfX3dyYXBwZWRfXyIpO2lmKHZ8fHkpe3ZhciBoPXY/ci52YWx1ZSgpOnIsZD15P2UudmFsdWUoKTplO3JldHVybiBpfHwoaT1uZXcgdnQpLHUoaCxkLG4sbyxpKX19cmV0dXJuISFiJiYoaXx8KGk9bmV3IHZ0KSxmdW5jdGlvbih0LHIsZSxuLG8sdSl7dmFyIGk9MSZlLGM9Y3IodCksYT1jLmxlbmd0aDtpZihhIT1jcihyKS5sZW5ndGgmJiFpKXJldHVybiExO2Zvcih2YXIgZj1hO2YtLTspe3ZhciBsPWNbZl07aWYoIShpP2wgaW4gcjphci5jYWxsKHIsbCkpKXJldHVybiExfXZhciBzPXUuZ2V0KHQpLHA9dS5nZXQocik7aWYocyYmcClyZXR1cm4gcz09ciYmcD09dDt2YXIgYj0hMDt1LnNldCh0LHIpLHUuc2V0KHIsdCk7Zm9yKHZhciB2PWk7KytmPGE7KXt2YXIgeT10W2w9Y1tmXV0saD1yW2xdO2lmKG4pdmFyIGQ9aT9uKGgseSxsLHIsdCx1KTpuKHksaCxsLHQscix1KTtpZighKHZvaWQgMD09PWQ/eT09PWh8fG8oeSxoLGUsbix1KTpkKSl7Yj0hMTticmVha312fHwodj0iY29uc3RydWN0b3IiPT1sKX1pZihiJiYhdil7dmFyIGo9dC5jb25zdHJ1Y3RvcixnPXIuY29uc3RydWN0b3I7aj09Z3x8ISgiY29uc3RydWN0b3IiaW4gdCl8fCEoImNvbnN0cnVjdG9yImluIHIpfHwiZnVuY3Rpb24iPT10eXBlb2YgaiYmaiBpbnN0YW5jZW9mIGomJiJmdW5jdGlvbiI9PXR5cGVvZiBnJiZnIGluc3RhbmNlb2YgZ3x8KGI9ITEpfXJldHVybiB1LmRlbGV0ZSh0KSx1LmRlbGV0ZShyKSxifShyLGUsbixvLHUsaSkpfWZ1bmN0aW9uIElyKHQscixlLG4sbyl7cmV0dXJuIHQ9PT1yfHwobnVsbD09dHx8bnVsbD09cnx8IXAodCkmJiFwKHIpP3QhPXQmJnIhPXI6RXIodCxyLGUsbixJcixvKSl9ZnVuY3Rpb24gTnIodCl7cmV0dXJuIHQ9PXQmJiFkKHQpfWZ1bmN0aW9uIFRyKHQscil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiYoZVt0XT09PXImJih2b2lkIDAhPT1yfHx0IGluIE9iamVjdChlKSkpfX1mdW5jdGlvbiAkcih0KXt2YXIgcj1mdW5jdGlvbih0KXtmb3IodmFyIHI9aXIodCksZT1yLmxlbmd0aDtlLS07KXt2YXIgbj1yW2VdLG89dFtuXTtyW2VdPVtuLG8sTnIobyldfXJldHVybiByfSh0KTtyZXR1cm4gMT09ci5sZW5ndGgmJnJbMF1bMl0/VHIoclswXVswXSxyWzBdWzFdKTpmdW5jdGlvbihlKXtyZXR1cm4gZT09PXR8fGZ1bmN0aW9uKHQscixlLG4pe3ZhciBvPWUubGVuZ3RoLHU9byxpPSFuO2lmKG51bGw9PXQpcmV0dXJuIXU7Zm9yKHQ9T2JqZWN0KHQpO28tLTspe3ZhciBjPWVbb107aWYoaSYmY1syXT9jWzFdIT09dFtjWzBdXTohKGNbMF1pbiB0KSlyZXR1cm4hMX1mb3IoOysrbzx1Oyl7dmFyIGE9KGM9ZVtvXSlbMF0sZj10W2FdLGw9Y1sxXTtpZihpJiZjWzJdKXtpZih2b2lkIDA9PT1mJiYhKGEgaW4gdCkpcmV0dXJuITF9ZWxzZXt2YXIgcz1uZXcgdnQ7aWYobil2YXIgcD1uKGYsbCxhLHQscixzKTtpZighKHZvaWQgMD09PXA/SXIobCxmLDMsbixzKTpwKSlyZXR1cm4hMX19cmV0dXJuITB9KGUsdCxyKX19ZnVuY3Rpb24gQ3IodCxyKXtyZXR1cm4gbnVsbCE9dCYmciBpbiBPYmplY3QodCl9ZnVuY3Rpb24gRnIocixlKXtyZXR1cm4gbnVsbCE9ciYmZnVuY3Rpb24ocixlLG4pe2Zvcih2YXIgbz0tMSx1PShlPXJ0KGUscikpLmxlbmd0aCxpPSExOysrbzx1Oyl7dmFyIGM9ZXQoZVtvXSk7aWYoIShpPW51bGwhPXImJm4ocixjKSkpYnJlYWs7cj1yW2NdfXJldHVybiBpfHwrK28hPXU/aTohISh1PW51bGw9PXI/MDpyLmxlbmd0aCkmJkx0KHUpJiZSdChjLHUpJiYodChyKXx8RnQocikpfShyLGUsQ3IpfWZ1bmN0aW9uIE1yKHQpe3JldHVybiB0fWZ1bmN0aW9uIFVyKHQpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gbnVsbD09cj92b2lkIDA6clt0XX19ZnVuY3Rpb24ga3IodCl7cmV0dXJuIGgodCk/VXIoZXQodCkpOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gbnQocix0KX19KHQpfWZ1bmN0aW9uIEJyKHIpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiByP3I6bnVsbD09cj9Ncjoib2JqZWN0Ij09dHlwZW9mIHI/dChyKT8oZT1yWzBdLG49clsxXSxoKGUpJiZOcihuKT9UcihldChlKSxuKTpmdW5jdGlvbih0KXt2YXIgcj1vdCh0LGUpO3JldHVybiB2b2lkIDA9PT1yJiZyPT09bj9Gcih0LGUpOklyKG4sciwzKX0pOiRyKHIpOmtyKHIpO3ZhciBlLG59dmFyIERyLFJyPWZ1bmN0aW9uKHQscixlKXtmb3IodmFyIG49LTEsbz1PYmplY3QodCksdT1lKHQpLGk9dS5sZW5ndGg7aS0tOyl7dmFyIGM9dVtEcj9pOisrbl07aWYoITE9PT1yKG9bY10sYyxvKSlicmVha31yZXR1cm4gdH07dmFyIExyPWZ1bmN0aW9uKHQscil7cmV0dXJuIGZ1bmN0aW9uKGUsbil7aWYobnVsbD09ZSlyZXR1cm4gZTtpZighdXIoZSkpcmV0dXJuIHQoZSxuKTtmb3IodmFyIG89ZS5sZW5ndGgsdT1yP286LTEsaT1PYmplY3QoZSk7KHI/dS0tOisrdTxvKSYmITEhPT1uKGlbdV0sdSxpKTspO3JldHVybiBlfX0oZnVuY3Rpb24odCxyKXtyZXR1cm4gdCYmUnIodCxyLGlyKX0pLFZyPUxyO2Z1bmN0aW9uIEtyKHQscil7dmFyIGU9LTEsbj11cih0KT9BcnJheSh0Lmxlbmd0aCk6W107cmV0dXJuIFZyKHQsZnVuY3Rpb24odCxvLHUpe25bKytlXT1yKHQsbyx1KX0pLG59dmFyIFdyPUFycmF5LnByb3RvdHlwZS5qb2luO3ZhciBxcj1VcigibGVuZ3RoIiksR3I9UmVnRXhwKCJbXFx1MjAwZFxcdWQ4MDAtXFx1ZGZmZlxcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZlxcdWZlMGVcXHVmZTBmXSIpO3ZhciBIcj0iXFx1ZDgwMC1cXHVkZmZmIixKcj0iWyIrSHIrIl0iLFFyPSJbXFx1MDMwMC1cXHUwMzZmXFx1ZmUyMC1cXHVmZTJmXFx1MjBkMC1cXHUyMGZmXSIsWHI9IlxcdWQ4M2NbXFx1ZGZmYi1cXHVkZmZmXSIsWXI9IlteIitIcisiXSIsWnI9Iig/OlxcdWQ4M2NbXFx1ZGRlNi1cXHVkZGZmXSl7Mn0iLHRlPSJbXFx1ZDgwMC1cXHVkYmZmXVtcXHVkYzAwLVxcdWRmZmZdIixyZT0iKD86IitRcisifCIrWHIrIikiKyI/IixlZT0iW1xcdWZlMGVcXHVmZTBmXT8iLG5lPWVlK3JlKygiKD86XFx1MjAwZCg/OiIrW1lyLFpyLHRlXS5qb2luKCJ8IikrIikiK2VlK3JlKyIpKiIpLG9lPSIoPzoiK1tZcitRcisiPyIsUXIsWnIsdGUsSnJdLmpvaW4oInwiKSsiKSIsdWU9UmVnRXhwKFhyKyIoPz0iK1hyKyIpfCIrb2UrbmUsImciKTtmdW5jdGlvbiBpZSh0KXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIEdyLnRlc3QodCl9KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgcj11ZS5sYXN0SW5kZXg9MDt1ZS50ZXN0KHQpOykrK3I7cmV0dXJuIHJ9KHQpOnFyKHQpfWZ1bmN0aW9uIGNlKHIpe2lmKG51bGw9PXIpcmV0dXJuIDA7aWYodXIocikpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXIpfHwhdChlKSYmcChlKSYmIltvYmplY3QgU3RyaW5nXSI9PXMoZSk/aWUocik6ci5sZW5ndGg7dmFyIGUsbj1BcihyKTtyZXR1cm4iW29iamVjdCBNYXBdIj09bnx8IltvYmplY3QgU2V0XSI9PW4/ci5zaXplOm9yKHIpLmxlbmd0aH1mdW5jdGlvbiBhZSh0LHIpe2Zvcih2YXIgZT0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK2U8biYmITEhPT1yKHRbZV0sZSx0KTspO3JldHVybiB0fXZhciBmZT1mdW5jdGlvbigpe3RyeXt2YXIgdD1OKE9iamVjdCwiZGVmaW5lUHJvcGVydHkiKTtyZXR1cm4gdCh7fSwiIix7fSksdH1jYXRjaCh0KXt9fSgpLGxlPWZlO2Z1bmN0aW9uIHNlKHQscixlKXsiX19wcm90b19fIj09ciYmbGU/bGUodCxyLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTplLHdyaXRhYmxlOiEwfSk6dFtyXT1lfXZhciBwZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIGJlKHQscixlKXt2YXIgbj10W3JdO3BlLmNhbGwodCxyKSYmTShuLGUpJiYodm9pZCAwIT09ZXx8ciBpbiB0KXx8c2UodCxyLGUpfWZ1bmN0aW9uIHZlKHQscixlLG4pe3ZhciBvPSFlO2V8fChlPXt9KTtmb3IodmFyIHU9LTEsaT1yLmxlbmd0aDsrK3U8aTspe3ZhciBjPXJbdV0sYT1uP24oZVtjXSx0W2NdLGMsZSx0KTp2b2lkIDA7dm9pZCAwPT09YSYmKGE9dFtjXSksbz9zZShlLGMsYSk6YmUoZSxjLGEpfXJldHVybiBlfXZhciB5ZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIGhlKHQpe2lmKCFkKHQpKXJldHVybiBmdW5jdGlvbih0KXt2YXIgcj1bXTtpZihudWxsIT10KWZvcih2YXIgZSBpbiBPYmplY3QodCkpci5wdXNoKGUpO3JldHVybiByfSh0KTt2YXIgcj10cih0KSxlPVtdO2Zvcih2YXIgbiBpbiB0KSgiY29uc3RydWN0b3IiIT1ufHwhciYmeWUuY2FsbCh0LG4pKSYmZS5wdXNoKG4pO3JldHVybiBlfWZ1bmN0aW9uIGRlKHQpe3JldHVybiB1cih0KT9ZdCh0LCEwKTpoZSh0KX12YXIgamU9Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiZleHBvcnRzJiYhZXhwb3J0cy5ub2RlVHlwZSYmZXhwb3J0cyxnZT1qZSYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJm1vZHVsZSYmIW1vZHVsZS5ub2RlVHlwZSYmbW9kdWxlLF9lPWdlJiZnZS5leHBvcnRzPT09amU/bi5CdWZmZXI6dm9pZCAwLE9lPV9lP19lLmFsbG9jVW5zYWZlOnZvaWQgMDt2YXIgd2U9cnIoT2JqZWN0LmdldFByb3RvdHlwZU9mLE9iamVjdCksbWU9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scz9mdW5jdGlvbih0KXtmb3IodmFyIHI9W107dDspQXQocixJdCh0KSksdD13ZSh0KTtyZXR1cm4gcn06U3QsQWU9bWU7ZnVuY3Rpb24geGUodCl7cmV0dXJuIHh0KHQsZGUsQWUpfXZhciBTZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIFBlKHQpe3ZhciByPW5ldyB0LmNvbnN0cnVjdG9yKHQuYnl0ZUxlbmd0aCk7cmV0dXJuIG5ldyBndChyKS5zZXQobmV3IGd0KHQpKSxyfXZhciB6ZT0vXHcqJC87dmFyIEVlPW8/by5wcm90b3R5cGU6dm9pZCAwLEllPUVlP0VlLnZhbHVlT2Y6dm9pZCAwO2Z1bmN0aW9uIE5lKHQscixlKXt2YXIgbixvPXQuY29uc3RydWN0b3I7c3dpdGNoKHIpe2Nhc2UiW29iamVjdCBBcnJheUJ1ZmZlcl0iOnJldHVybiBQZSh0KTtjYXNlIltvYmplY3QgQm9vbGVhbl0iOmNhc2UiW29iamVjdCBEYXRlXSI6cmV0dXJuIG5ldyBvKCt0KTtjYXNlIltvYmplY3QgRGF0YVZpZXddIjpyZXR1cm4gZnVuY3Rpb24odCxyKXt2YXIgZT1yP1BlKHQuYnVmZmVyKTp0LmJ1ZmZlcjtyZXR1cm4gbmV3IHQuY29uc3RydWN0b3IoZSx0LmJ5dGVPZmZzZXQsdC5ieXRlTGVuZ3RoKX0odCxlKTtjYXNlIltvYmplY3QgRmxvYXQzMkFycmF5XSI6Y2FzZSJbb2JqZWN0IEZsb2F0NjRBcnJheV0iOmNhc2UiW29iamVjdCBJbnQ4QXJyYXldIjpjYXNlIltvYmplY3QgSW50MTZBcnJheV0iOmNhc2UiW29iamVjdCBJbnQzMkFycmF5XSI6Y2FzZSJbb2JqZWN0IFVpbnQ4QXJyYXldIjpjYXNlIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIjpjYXNlIltvYmplY3QgVWludDE2QXJyYXldIjpjYXNlIltvYmplY3QgVWludDMyQXJyYXldIjpyZXR1cm4gZnVuY3Rpb24odCxyKXt2YXIgZT1yP1BlKHQuYnVmZmVyKTp0LmJ1ZmZlcjtyZXR1cm4gbmV3IHQuY29uc3RydWN0b3IoZSx0LmJ5dGVPZmZzZXQsdC5sZW5ndGgpfSh0LGUpO2Nhc2UiW29iamVjdCBNYXBdIjpjYXNlIltvYmplY3QgU2V0XSI6cmV0dXJuIG5ldyBvO2Nhc2UiW29iamVjdCBOdW1iZXJdIjpjYXNlIltvYmplY3QgU3RyaW5nXSI6cmV0dXJuIG5ldyBvKHQpO2Nhc2UiW29iamVjdCBSZWdFeHBdIjpyZXR1cm4gZnVuY3Rpb24odCl7dmFyIHI9bmV3IHQuY29uc3RydWN0b3IodC5zb3VyY2UsemUuZXhlYyh0KSk7cmV0dXJuIHIubGFzdEluZGV4PXQubGFzdEluZGV4LHJ9KHQpO2Nhc2UiW29iamVjdCBTeW1ib2xdIjpyZXR1cm4gbj10LEllP09iamVjdChJZS5jYWxsKG4pKTp7fX19dmFyIFRlPU9iamVjdC5jcmVhdGUsJGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiBmdW5jdGlvbihyKXtpZighZChyKSlyZXR1cm57fTtpZihUZSlyZXR1cm4gVGUocik7dC5wcm90b3R5cGU9cjt2YXIgZT1uZXcgdDtyZXR1cm4gdC5wcm90b3R5cGU9dm9pZCAwLGV9fSgpLENlPSRlO3ZhciBGZT1IdCYmSHQuaXNNYXAsTWU9RmU/S3QoRmUpOmZ1bmN0aW9uKHQpe3JldHVybiBwKHQpJiYiW29iamVjdCBNYXBdIj09QXIodCl9O3ZhciBVZT1IdCYmSHQuaXNTZXQsa2U9VWU/S3QoVWUpOmZ1bmN0aW9uKHQpe3JldHVybiBwKHQpJiYiW29iamVjdCBTZXRdIj09QXIodCl9LEJlPSJbb2JqZWN0IEFyZ3VtZW50c10iLERlPSJbb2JqZWN0IEZ1bmN0aW9uXSIsUmU9IltvYmplY3QgT2JqZWN0XSIsTGU9e307ZnVuY3Rpb24gVmUocixlLG4sbyx1LGkpe3ZhciBjLGE9MSZlLGY9MiZlLGw9NCZlO2lmKG4mJihjPXU/bihyLG8sdSxpKTpuKHIpKSx2b2lkIDAhPT1jKXJldHVybiBjO2lmKCFkKHIpKXJldHVybiByO3ZhciBzPXQocik7aWYocyl7aWYoYz1mdW5jdGlvbih0KXt2YXIgcj10Lmxlbmd0aCxlPW5ldyB0LmNvbnN0cnVjdG9yKHIpO3JldHVybiByJiYic3RyaW5nIj09dHlwZW9mIHRbMF0mJlNlLmNhbGwodCwiaW5kZXgiKSYmKGUuaW5kZXg9dC5pbmRleCxlLmlucHV0PXQuaW5wdXQpLGV9KHIpLCFhKXJldHVybiBmdW5jdGlvbih0LHIpe3ZhciBlPS0xLG49dC5sZW5ndGg7Zm9yKHJ8fChyPUFycmF5KG4pKTsrK2U8bjspcltlXT10W2VdO3JldHVybiByfShyLGMpfWVsc2V7dmFyIHA9QXIociksYj1wPT1EZXx8IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIj09cDtpZihCdChyKSlyZXR1cm4gZnVuY3Rpb24odCxyKXtpZihyKXJldHVybiB0LnNsaWNlKCk7dmFyIGU9dC5sZW5ndGgsbj1PZT9PZShlKTpuZXcgdC5jb25zdHJ1Y3RvcihlKTtyZXR1cm4gdC5jb3B5KG4pLG59KHIsYSk7aWYocD09UmV8fHA9PUJlfHxiJiYhdSl7aWYoYz1mfHxiP3t9OmZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0LmNvbnN0cnVjdG9yfHx0cih0KT97fTpDZSh3ZSh0KSl9KHIpLCFhKXJldHVybiBmP2Z1bmN0aW9uKHQscil7cmV0dXJuIHZlKHQsQWUodCkscil9KHIsZnVuY3Rpb24odCxyKXtyZXR1cm4gdCYmdmUocixkZShyKSx0KX0oYyxyKSk6ZnVuY3Rpb24odCxyKXtyZXR1cm4gdmUodCxJdCh0KSxyKX0ocixmdW5jdGlvbih0LHIpe3JldHVybiB0JiZ2ZShyLGlyKHIpLHQpfShjLHIpKX1lbHNle2lmKCFMZVtwXSlyZXR1cm4gdT9yOnt9O2M9TmUocixwLGEpfX1pfHwoaT1uZXcgdnQpO3ZhciB2PWkuZ2V0KHIpO2lmKHYpcmV0dXJuIHY7aS5zZXQocixjKSxrZShyKT9yLmZvckVhY2goZnVuY3Rpb24odCl7Yy5hZGQoVmUodCxlLG4sdCxyLGkpKX0pOk1lKHIpJiZyLmZvckVhY2goZnVuY3Rpb24odCxvKXtjLnNldChvLFZlKHQsZSxuLG8scixpKSl9KTt2YXIgeT1zP3ZvaWQgMDoobD9mP3hlOmNyOmY/ZGU6aXIpKHIpO3JldHVybiBhZSh5fHxyLGZ1bmN0aW9uKHQsbyl7eSYmKHQ9cltvPXRdKSxiZShjLG8sVmUodCxlLG4sbyxyLGkpKX0pLGN9TGVbQmVdPUxlWyJbb2JqZWN0IEFycmF5XSJdPUxlWyJbb2JqZWN0IEFycmF5QnVmZmVyXSJdPUxlWyJbb2JqZWN0IERhdGFWaWV3XSJdPUxlWyJbb2JqZWN0IEJvb2xlYW5dIl09TGVbIltvYmplY3QgRGF0ZV0iXT1MZVsiW29iamVjdCBGbG9hdDMyQXJyYXldIl09TGVbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPUxlWyJbb2JqZWN0IEludDhBcnJheV0iXT1MZVsiW29iamVjdCBJbnQxNkFycmF5XSJdPUxlWyJbb2JqZWN0IEludDMyQXJyYXldIl09TGVbIltvYmplY3QgTWFwXSJdPUxlWyJbb2JqZWN0IE51bWJlcl0iXT1MZVtSZV09TGVbIltvYmplY3QgUmVnRXhwXSJdPUxlWyJbb2JqZWN0IFNldF0iXT1MZVsiW29iamVjdCBTdHJpbmddIl09TGVbIltvYmplY3QgU3ltYm9sXSJdPUxlWyJbb2JqZWN0IFVpbnQ4QXJyYXldIl09TGVbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09TGVbIltvYmplY3QgVWludDE2QXJyYXldIl09TGVbIltvYmplY3QgVWludDMyQXJyYXldIl09ITAsTGVbIltvYmplY3QgRXJyb3JdIl09TGVbRGVdPUxlWyJbb2JqZWN0IFdlYWtNYXBdIl09ITE7ZnVuY3Rpb24gS2UodCl7cmV0dXJuIFZlKHQsNSl9ZnVuY3Rpb24gV2UodCl7bGV0IHI9ITE7aWYoaXQodCkpcj0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYobHQodCkpcmV0dXJuITE7cj0hMH1yZXR1cm4gcn1mdW5jdGlvbiBxZSh0KXtpZighKGl0KHQpfHxXZSh0KXx8Yih0KXx8ZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgQmlnSW50XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpKSlyZXR1cm4iIjtsZXQgcj0iIjt0cnl7cj1TdHJpbmcodCl9Y2F0Y2godCl7fXRyeXtyPXQudG9TdHJpbmcoKX1jYXRjaCh0KXt9cmV0dXJuIHJ9dmFyIEdlPU1hdGguY2VpbCxIZT1NYXRoLm1heDt2YXIgSmU9L1xzLzt2YXIgUWU9L15ccysvO2Z1bmN0aW9uIFhlKHQpe3JldHVybiB0P3Quc2xpY2UoMCxmdW5jdGlvbih0KXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZKZS50ZXN0KHQuY2hhckF0KHIpKTspO3JldHVybiByfSh0KSsxKS5yZXBsYWNlKFFlLCIiKTp0fXZhciBZZT0vXlstK10weFswLTlhLWZdKyQvaSxaZT0vXjBiWzAxXSskL2ksdG49L14wb1swLTddKyQvaSxybj1wYXJzZUludDt2YXIgZW49MS8wO2Z1bmN0aW9uIG5uKHQpe3JldHVybiB0Pyh0PWZ1bmN0aW9uKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZihiKHQpKXJldHVybiBOYU47aWYoZCh0KSl7dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQudmFsdWVPZj90LnZhbHVlT2YoKTp0O3Q9ZChyKT9yKyIiOnJ9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9WGUodCk7dmFyIGU9WmUudGVzdCh0KTtyZXR1cm4gZXx8dG4udGVzdCh0KT9ybih0LnNsaWNlKDIpLGU/Mjo4KTpZZS50ZXN0KHQpP05hTjordH0odCkpPT09ZW58fHQ9PT0tMS8wPzE3OTc2OTMxMzQ4NjIzMTU3ZTI5MioodDwwPy0xOjEpOnQ9PXQ/dDowOjA9PT10P3Q6MH12YXIgb249ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHIsZSxuKXtyZXR1cm4gbiYmIm51bWJlciIhPXR5cGVvZiBuJiZmdW5jdGlvbih0LHIsZSl7aWYoIWQoZSkpcmV0dXJuITE7dmFyIG49dHlwZW9mIHI7cmV0dXJuISEoIm51bWJlciI9PW4/dXIoZSkmJlJ0KHIsZS5sZW5ndGgpOiJzdHJpbmciPT1uJiZyIGluIGUpJiZNKGVbcl0sdCl9KHIsZSxuKSYmKGU9bj12b2lkIDApLHI9bm4ociksdm9pZCAwPT09ZT8oZT1yLHI9MCk6ZT1ubihlKSxmdW5jdGlvbih0LHIsZSxuKXtmb3IodmFyIG89LTEsdT1IZShHZSgoci10KS8oZXx8MSkpLDApLGk9QXJyYXkodSk7dS0tOylpW24/dTorK29dPXQsdCs9ZTtyZXR1cm4gaX0ocixlLG49dm9pZCAwPT09bj9yPGU/MTotMTpubihuKSx0KX19KCksdW49b247ZnVuY3Rpb24gY24odCxyPW51bGwsZT17fSl7aihyKXx8KHI9dD0+dCk7bGV0IG49b3QoZSwiZm9yY2UiLCExKTtyZXR1cm4gYnQobil8fChuPSExKSxmdW5jdGlvbih0LHIsZT0hMSl7bGV0IG49W107aWYoIWZ0KHQpJiYhY3QodCkpcmV0dXJuIHIodCxudWxsLFtdKTtmdW5jdGlvbiBvKHQpe2lmKGZ0KHQpKXJldHVybiB1bihjZSh0KSk7aWYoY3QodCkpe2xldCByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLG49bnVsbDtyZXR1cm4gZSYmKG49T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KSksZnQocil8fChyPVtdKSxmdChuKXx8KG49W10pLFsuLi5yLC4uLm5dfXJldHVybiB0fXJldHVybiBmdW5jdGlvbiB0KGUsdSl7aWYoZnQoZSkpcmV0dXJuIG8oZSkubWFwKG89PntsZXQgdT1lW29dLGk9S2Uobik7cmV0dXJuIG4ucHVzaChvKSx1PXIodSxvLGkpLHU9dCh1KSxuLnBvcCgpLHV9KTtpZihjdChlKSl7bGV0IHU9byhlKSxpPXt9O3JldHVybiB1Lm1hcChvPT57bGV0IHU9ZVtvXSxjPUtlKG4pO24ucHVzaChvKSx1PXIodSxvLGMpLHU9dCh1KSxuLnBvcCgpLGlbb109dX0pLGl9cmV0dXJuIGV9KHQpfSh0LHIsbil9ZnVuY3Rpb24gYW4ocixlPXt9KXtpZighYXQocikmJiFwdChyKSlyZXR1cm5bXTtsZXQgbj1vdChlLCJiaW5kS2V5IixudWxsKTtpdChuKXx8KG49ImlkIik7bGV0IG89b3QoZSwiYmluZFBhcmVudCIsbnVsbCk7aXQobyl8fChvPSJwYXJlbnRJZCIpO2xldCB1PW90KGUsImJpbmRCZWxvbmciLG51bGwpO2l0KHUpfHwodT0ia2V5Iik7bGV0IGk9b3QoZSwiYmluZFRleHQiLG51bGwpO2l0KGkpfHwoaT0idGV4dCIpO2xldCBjPW90KGUsImJpbmRUeXBlIixudWxsKTtpdChjKXx8KGM9InR5cGUiKTtsZXQgYT1vdChlLCJiaW5kTnVtT2ZDaGlscmVuIixudWxsKTtmdW5jdGlvbiBmKHIsZSl7dmFyIG4sbzt2YXIgdSxpO3JldHVybiByPUtlKHIpLG89dD0+Yih0KT9xZSh0KTp0LHI9KHQobj1yKT9YOktyKShuLEJyKG8pKSxiKGUpJiYoZT1xZShlKSksKGl0KGUpfHxXZShlKSkmJnIucHVzaChlKSxpPSItIixudWxsPT0odT1yKT8iIjpXci5jYWxsKHUsaSl9aXQoYSl8fChhPSJudW1PZkNoaWxyZW4iKTtsZXQgbD1bXTtyZXR1cm4gY24ociwodCxyLGUpPT57bGV0IGI9ZihlLHIpLHY9ZihlLG51bGwpLHk9Im5vZGUiO2N0KHQpP3k9Im9iamVjdCI6ZnQodCkmJih5PSJhcnJheSIpO2xldCBoPXtbbl06Yixbb106dixbY106eX07aWYoKGl0KHIpfHxmdW5jdGlvbih0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHR8fHAodCkmJiJbb2JqZWN0IE51bWJlcl0iPT1zKHQpfShyKSkmJihoW3VdPXIpLGN0KHQpfHxmdCh0KXx8KGhbaV09dCksY3QodCl8fGZ0KHQpKXtsZXQgcj1udWxsO2N0KHQpP3I9Y2UoaXIodCkpOmZ0KHQpJiYocj1jZSh0KSksaFthXT1yfXJldHVybiBsLnB1c2goaCksdH0se2ZvcmNlOiEwfSksbH1mdW5jdGlvbiBmbihyLGUpe3ZhciBuO3JldHVybih0KHIpP2FlOlZyKShyLCJmdW5jdGlvbiI9PXR5cGVvZihuPWUpP246TXIpfWZ1bmN0aW9uIGxuKHQscixlKXtyZXR1cm4gbnVsbD09dD90OmZ1bmN0aW9uKHQscixlLG4pe2lmKCFkKHQpKXJldHVybiB0O2Zvcih2YXIgbz0tMSx1PShyPXJ0KHIsdCkpLmxlbmd0aCxpPXUtMSxjPXQ7bnVsbCE9YyYmKytvPHU7KXt2YXIgYT1ldChyW29dKSxmPWU7aWYoIl9fcHJvdG9fXyI9PT1hfHwiY29uc3RydWN0b3IiPT09YXx8InByb3RvdHlwZSI9PT1hKXJldHVybiB0O2lmKG8hPWkpe3ZhciBsPWNbYV07dm9pZCAwPT09KGY9bj9uKGwsYSxjKTp2b2lkIDApJiYoZj1kKGwpP2w6UnQocltvKzFdKT9bXTp7fSl9YmUoYyxhLGYpLGM9Y1thXX1yZXR1cm4gdH0odCxyLGUpfWZ1bmN0aW9uIHNuKHQscil7cmV0dXJuIHIubGVuZ3RoPDI/dDpudCh0LGZ1bmN0aW9uKHQscixlKXt2YXIgbj0tMSxvPXQubGVuZ3RoO3I8MCYmKHI9LXI+bz8wOm8rciksKGU9ZT5vP286ZSk8MCYmKGUrPW8pLG89cj5lPzA6ZS1yPj4+MCxyPj4+PTA7Zm9yKHZhciB1PUFycmF5KG8pOysrbjxvOyl1W25dPXRbbityXTtyZXR1cm4gdX0ociwwLC0xKSl9dmFyIHBuPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gYm4odCxyKXt2YXIgZT0tMSxuPShyPXJ0KHIsdCkpLmxlbmd0aDtpZighbilyZXR1cm4hMDtmb3IoOysrZTxuOyl7dmFyIG89ZXQocltlXSk7aWYoIl9fcHJvdG9fXyI9PT1vJiYhcG4uY2FsbCh0LCJfX3Byb3RvX18iKSlyZXR1cm4hMTtpZigoImNvbnN0cnVjdG9yIj09PW98fCJwcm90b3R5cGUiPT09bykmJmU8bi0xKXJldHVybiExfXZhciB1PXNuKHQscik7cmV0dXJuIG51bGw9PXV8fGRlbGV0ZSB1W2V0KGZ1bmN0aW9uKHQpe3ZhciByPW51bGw9PXQ/MDp0Lmxlbmd0aDtyZXR1cm4gcj90W3ItMV06dm9pZCAwfShyKSldfXZhciB2bj1GdW5jdGlvbi5wcm90b3R5cGUseW49T2JqZWN0LnByb3RvdHlwZSxobj12bi50b1N0cmluZyxkbj15bi5oYXNPd25Qcm9wZXJ0eSxqbj1obi5jYWxsKE9iamVjdCk7ZnVuY3Rpb24gZ24odCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKCFwKHQpfHwiW29iamVjdCBPYmplY3RdIiE9cyh0KSlyZXR1cm4hMTt2YXIgcj13ZSh0KTtpZihudWxsPT09cilyZXR1cm4hMDt2YXIgZT1kbi5jYWxsKHIsImNvbnN0cnVjdG9yIikmJnIuY29uc3RydWN0b3I7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUgaW5zdGFuY2VvZiBlJiZobi5jYWxsKGUpPT1qbn0odCk/dm9pZCAwOnR9dmFyIF9uPW8/by5pc0NvbmNhdFNwcmVhZGFibGU6dm9pZCAwO2Z1bmN0aW9uIE9uKHIpe3JldHVybiB0KHIpfHxGdChyKXx8ISEoX24mJnImJnJbX25dKX1mdW5jdGlvbiB3bih0LHIsZSxuLG8pe3ZhciB1PS0xLGk9dC5sZW5ndGg7Zm9yKGV8fChlPU9uKSxvfHwobz1bXSk7Kyt1PGk7KXt2YXIgYz10W3VdO3I+MCYmZShjKT9yPjE/d24oYyxyLTEsZSxuLG8pOkF0KG8sYyk6bnx8KG9bby5sZW5ndGhdPWMpfXJldHVybiBvfWZ1bmN0aW9uIG1uKHQpe3JldHVybihudWxsPT10PzA6dC5sZW5ndGgpP3duKHQsMSk6W119dmFyIEFuPU1hdGgubWF4O3ZhciB4bj1sZT9mdW5jdGlvbih0LHIpe3JldHVybiBsZSh0LCJ0b1N0cmluZyIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHZhbHVlOihlPXIsZnVuY3Rpb24oKXtyZXR1cm4gZX0pLHdyaXRhYmxlOiEwfSk7dmFyIGV9Ok1yLFNuPXhuLFBuPURhdGUubm93O3ZhciB6bj1mdW5jdGlvbih0KXt2YXIgcj0wLGU9MDtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1QbigpLG89MTYtKG4tZSk7aWYoZT1uLG8+MCl7aWYoKytyPj04MDApcmV0dXJuIGFyZ3VtZW50c1swXX1lbHNlIHI9MDtyZXR1cm4gdC5hcHBseSh2b2lkIDAsYXJndW1lbnRzKX19KFNuKSxFbj16bjt2YXIgSW49ZnVuY3Rpb24odCl7cmV0dXJuIEVuKGZ1bmN0aW9uKHQscixlKXtyZXR1cm4gcj1Bbih2b2lkIDA9PT1yP3QubGVuZ3RoLTE6ciwwKSxmdW5jdGlvbigpe2Zvcih2YXIgbj1hcmd1bWVudHMsbz0tMSx1PUFuKG4ubGVuZ3RoLXIsMCksaT1BcnJheSh1KTsrK288dTspaVtvXT1uW3Irb107bz0tMTtmb3IodmFyIGM9QXJyYXkocisxKTsrK288cjspY1tvXT1uW29dO3JldHVybiBjW3JdPWUoaSksZnVuY3Rpb24odCxyLGUpe3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnJldHVybiB0LmNhbGwocik7Y2FzZSAxOnJldHVybiB0LmNhbGwocixlWzBdKTtjYXNlIDI6cmV0dXJuIHQuY2FsbChyLGVbMF0sZVsxXSk7Y2FzZSAzOnJldHVybiB0LmNhbGwocixlWzBdLGVbMV0sZVsyXSl9cmV0dXJuIHQuYXBwbHkocixlKX0odCx0aGlzLGMpfX0odCx2b2lkIDAsbW4pLHQrIiIpfShmdW5jdGlvbih0LHIpe3ZhciBlPXt9O2lmKG51bGw9PXQpcmV0dXJuIGU7dmFyIG49ITE7cj1YKHIsZnVuY3Rpb24ocil7cmV0dXJuIHI9cnQocix0KSxufHwobj1yLmxlbmd0aD4xKSxyfSksdmUodCx4ZSh0KSxlKSxuJiYoZT1WZShlLDcsZ24pKTtmb3IodmFyIG89ci5sZW5ndGg7by0tOylibihlLHJbb10pO3JldHVybiBlfSksTm49SW47ZnVuY3Rpb24gVG4odCxyPXt9KXtsZXQgZT0iJGxldmVsIixuPSIkcGFyZW50cyI7aWYoIXB0KHQpKXJldHVybltdO2xldCBvPW90KHIsImJpbmRLZXkiLG51bGwpO2l0KG8pfHwobz0iaWQiKTtsZXQgdT1vdChyLCJiaW5kUGFyZW50IixudWxsKTtpdCh1KXx8KHU9InBhcmVudElkIik7bGV0IGk9b3QociwiYmluZENoaWxkcmVuIixudWxsKTtpdChpKXx8KGk9ImNoaWxkcmVuIik7bGV0IGM9b3Qociwic2F2ZUV4dFByb3BzIixudWxsKTtidChjKXx8KGM9ITEpLHQ9ZnVuY3Rpb24odCl7bGV0IHI9W107ZnVuY3Rpb24gaShpKXtsZXQgYz1bXTtmbih0LCh0LGEpPT57bGV0IGY9b3QodCx1KSxsPW90KGksbyk7aWYoZiYmbCYmZj09PWwpe2xldCB1PW90KGksbixbXSk7dT1LZSh1KSx1LnB1c2goaVtvXSksci5wdXNoKHtbZV06aVtlXSsxLFtuXTp1LC4uLnR9KX1lbHNlIGMucHVzaCh0KX0pLHQ9Y31pZih0PUtlKHQpLGZ1bmN0aW9uKCl7bGV0IG89W107Zm4odCwodCxpKT0+e3N0KHRbdV0pP3IucHVzaCh7W2VdOjAsW25dOltdLC4uLnR9KTpvLnB1c2godCl9KSx0PW99KCksMD09PXIubGVuZ3RoKXJldHVybiByO2xldCBjPS0xO2Zvcig7Yys9MSwhKGM+ci5sZW5ndGgtMSk7KXtpZihpKHJbY10pLDA9PT10Lmxlbmd0aClicmVha31yZXR1cm4gcn0odCk7bGV0IGE9ZnVuY3Rpb24odCl7bGV0IHI9W107ZnVuY3Rpb24gYSh0KXtyZXR1cm4gYz90Ok5uKHQsW2Usbl0pfWxldCBmPXt9O3JldHVybiBmbih0LChuLGMpPT57aWYoMD09PW5bZV0pe2xldCB0PWEobik7ci5wdXNoKHQpLGZbbltvXV09W2NdfWVsc2V7bGV0IGU9ZnVuY3Rpb24ocil7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2xldCBuPXRbZV07aWYoclt1XT09PW5bb10pcmV0dXJuIG59cmV0dXJuIG51bGx9KG4pO2lmKG51bGwhPT1lKXtsZXQgdD1mW2Vbb11dO3Q9Wy4uLnQsaV07bGV0IHU9b3Qocix0LFtdKSxjPWEobik7dS5wdXNoKGMpLGZbbltvXV09Wy4uLnQsdS5sZW5ndGgtMV0sbG4ocix0LHUpfWVsc2UgY29uc29sZS5sb2coYGNhbiBub3QgZmluZCBwYXJlbnQgZm9yICR7b3Qobix1KX1gKX19KSxyfSh0KTtyZXR1cm4gYX1sZXQgY29udmVydFRvVHJlZVdrPWFzeW5jIGZ1bmN0aW9uKHQscj17fSl7cmV0dXJuIGZ1bmN0aW9uKHQscj17fSl7aWYoIWF0KHQpJiYhcHQodCkpcmV0dXJuW107bGV0IGU9b3QociwiYmluZEtleSIsbnVsbCk7aXQoZSl8fChlPSJpZCIpO2xldCBuPW90KHIsImJpbmRQYXJlbnQiLG51bGwpO2l0KG4pfHwobj0icGFyZW50SWQiKTtsZXQgbz1vdChyLCJiaW5kVGV4dCIsbnVsbCk7aXQobyl8fChvPSJ0ZXh0Iik7bGV0IHU9b3QociwiYmluZENoaWxkcmVuIixudWxsKTtpdCh1KXx8KHU9ImNoaWxkcmVuIik7bGV0IGk9b3QociwiYmluZFR5cGUiLG51bGwpO2l0KGkpfHwoaT0idHlwZSIpO2xldCBjPW90KHIsImJpbmROdW1PZkNoaWxyZW4iLG51bGwpO2l0KGMpfHwoYz0ibnVtT2ZDaGlscmVuIik7bGV0IGE9b3QociwiYmluZFJvb3QiLG51bGwpO2l0KGEpfHwoYT0icm9vdCIpO2xldCBmPW90KHIsInNhdmVFeHRQcm9wcyIsbnVsbCk7cmV0dXJuIGJ0KGYpfHwoZj0hMSksaXQoYSkmJih0PXtbYV06dH0pLFRuKGFuKHQse2JpbmRLZXk6ZSxiaW5kUGFyZW50Om4sYmluZFRleHQ6byxiaW5kVHlwZTppLGJpbmROdW1PZkNoaWxyZW46Y30pLHtiaW5kS2V5OmUsYmluZFBhcmVudDpuLGJpbmRDaGlsZHJlbjp1LHNhdmVFeHRQcm9wczpmfSl9KHQscil9OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogY29udmVydFRvVHJlZVdrCiAgICAgICAgfQogICAgICAgIAoKICAgIC8vb24KICAgIAoKICAgIC8vc2F2ZQogICAgaW5zdGFuY2UgPSByCgp9CgpmdW5jdGlvbiBzZW5kTWVzc2FnZShkYXRhKSB7CiAgICAKICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKGRhdGEpCiAgICAgICAgCn0KCmFzeW5jIGZ1bmN0aW9uIHJ1bihkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJ1bicsZGF0YSkKCiAgICAvL21vZGUKICAgIGxldCBtb2RlID0gZGF0YS5tb2RlCgogICAgLy9jaGVjawogICAgaWYobW9kZSAhPT0gJ2luaXQnICYmIG1vZGUgIT09ICdjYWxsJyl7CiAgICAgICAgcmV0dXJuCiAgICB9CgogICAgLy9pbml0CiAgICBpZihtb2RlID09PSAnaW5pdCcpewogICAgICAgIAogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vdHlwZQogICAgICAgICAgICBsZXQgdHlwZSA9IGRhdGEudHlwZQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CiAgICAKICAgICAgICAgICAgLy9pbnN0YW5jZQogICAgICAgICAgICBpZih0eXBlID09PSAnZnVuY3Rpb24nKXsKICAgICAgICAgICAgICAgIGluaXQoLi4uaW5wdXQpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZih0eXBlID09PSAnb2JqZWN0Jyl7CiAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IGNvbnZlcnRUb1RyZWVXawogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgc2VsZi5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICByZWN2TWVzc2FnZShlLmRhdGEpCiAgICAgICAgfQogICAgICAgIAoKdHJ5ewogICAgcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgZXJyKQogICAgfSkKfQpjYXRjaChlcnIpe30KCg==");function l(){let l=new n;let I=function(d){try{let l=new Blob([d]),I=window.URL||window.webkitURL;return new Worker(I.createObjectURL(l))}catch(d){b(d)}}(d);if(!I)return b("invalid worker"),null;function m(){let d=function(){let d,l,I=new Promise(function(){d=arguments[0],l=arguments[1]});return I.resolve=d,I.reject=l,I}(),m=function(d=10){let l=[],I="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),m=I.length;for(let b=0;b<d;b++)l[b]=I[0|Math.random()*m];return l.join("")}(),b={mode:"call",id:m,fun:"main",input:[...arguments]};return I.postMessage(b),l.once(m,l=>{"success"===l.state?d.resolve(l.msg):d.reject(l.msg)}),d}function b(d){l.emit("error",d)}return I.onmessage=function(d){!function(d){let I=d,m=I.mode;"emit"!==m&&"return"!==m||("emit"===m&&l.emit(I.evName,I.msg),"return"===m&&l.emit(I.id,I))}(d.data)},I.onerror=b,I.onmessageerror=function(d){b(d.data)},function(){let d={mode:"init",type:"function",input:[...arguments]};I.postMessage(d)}([...arguments]),l.main=m,l.main=m,l.terminate=function(){I?(I.terminate(),I=void 0):b("worker has been terminated")},l}H=async function(){let d=[...arguments],I=l();return await I.main(...d).finally(()=>{I.terminate()})}}();try{process.on("unhandledRejection",d=>{console.log("outer:unhandledRejection",d)}),process.on("uncaughtException",d=>{console.log("outer:uncaughtException",d)}),process.on("uncaughtExceptionMonitor",d=>{console.log("outer:uncaughtExceptionMonitor",d)})}catch(d){}var g=H;export{g as default};
|
|
1
|
+
const d="function"==typeof TextDecoder?new TextDecoder("utf-8",{ignoreBOM:!0}):void 0,l=("function"==typeof TextEncoder&&new TextEncoder,Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=")),I=(()=>{let d={};return l.forEach((l,I)=>d[l]=I),d})(),m=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,b=String.fromCharCode.bind(String),Z="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):d=>new Uint8Array(Array.prototype.slice.call(d,0)),i=d=>d.replace(/[^A-Za-z0-9\+\/]/g,""),X=d=>{let I,m,b,Z,i="";const X=d.length%3;for(let X=0;X<d.length;){if((m=d.charCodeAt(X++))>255||(b=d.charCodeAt(X++))>255||(Z=d.charCodeAt(X++))>255)throw new TypeError("invalid character found");I=m<<16|b<<8|Z,i+=l[I>>18&63]+l[I>>12&63]+l[I>>6&63]+l[63&I]}return X?i.slice(0,X-3)+"===".substring(X):i},c="function"==typeof btoa?d=>btoa(d):X,y=(Uint8Array.prototype.toBase64,/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g),C=d=>{switch(d.length){case 4:var l=((7&d.charCodeAt(0))<<18|(63&d.charCodeAt(1))<<12|(63&d.charCodeAt(2))<<6|63&d.charCodeAt(3))-65536;return b((l>>>10)+55296)+b(56320+(1023&l));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))}},K=d=>d.replace(y,C),G=d=>{if(d=d.replace(/\s+/g,""),!m.test(d))throw new TypeError("malformed base64.");let l,Z,i;d+="==".slice(2-(3&d.length));let X=[];for(let m=0;m<d.length;)l=I[d.charAt(m++)]<<18|I[d.charAt(m++)]<<12|(Z=I[d.charAt(m++)])<<6|(i=I[d.charAt(m++)]),64===Z?X.push(b(l>>16&255)):64===i?X.push(b(l>>16&255,l>>8&255)):X.push(b(l>>16&255,l>>8&255,255&l));return X.join("")},p="function"==typeof atob?d=>atob(i(d)):G,W="function"==typeof Uint8Array.fromBase64?d=>Uint8Array.fromBase64(d):d=>Z(p(d).split("").map(d=>d.charCodeAt(0))),V=d?l=>d.decode(W(l)):d=>K(p(d)),h=d=>i(d.replace(/[-_]/g,d=>"-"==d?"+":"/")),t=d=>V(h(d)),Y=t;function o(d){return d&&d.__esModule&&Object.prototype.hasOwnProperty.call(d,"default")?d.default:d}var n={exports:{}};!function(d){var l=Object.prototype.hasOwnProperty,I="~";function m(){}function b(d,l,I){this.fn=d,this.context=l,this.once=I||!1}function Z(d,l,m,Z,i){if("function"!=typeof m)throw new TypeError("The listener must be a function");var X=new b(m,Z||d,i),c=I?I+l:l;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,l){0===--d._eventsCount?d._events=new m:delete d._events[l]}function X(){this._events=new m,this._eventsCount=0}Object.create&&(m.prototype=Object.create(null),(new m).__proto__||(I=!1)),X.prototype.eventNames=function(){var d,m,b=[];if(0===this._eventsCount)return b;for(m in d=this._events)l.call(d,m)&&b.push(I?m.slice(1):m);return Object.getOwnPropertySymbols?b.concat(Object.getOwnPropertySymbols(d)):b},X.prototype.listeners=function(d){var l=I?I+d:d,m=this._events[l];if(!m)return[];if(m.fn)return[m.fn];for(var b=0,Z=m.length,i=new Array(Z);b<Z;b++)i[b]=m[b].fn;return i},X.prototype.listenerCount=function(d){var l=I?I+d:d,m=this._events[l];return m?m.fn?1:m.length:0},X.prototype.emit=function(d,l,m,b,Z,i){var X=I?I+d:d;if(!this._events[X])return!1;var c,y,C=this._events[X],K=arguments.length;if(C.fn){switch(C.once&&this.removeListener(d,C.fn,void 0,!0),K){case 1:return C.fn.call(C.context),!0;case 2:return C.fn.call(C.context,l),!0;case 3:return C.fn.call(C.context,l,m),!0;case 4:return C.fn.call(C.context,l,m,b),!0;case 5:return C.fn.call(C.context,l,m,b,Z),!0;case 6:return C.fn.call(C.context,l,m,b,Z,i),!0}for(y=1,c=new Array(K-1);y<K;y++)c[y-1]=arguments[y];C.fn.apply(C.context,c)}else{var G,p=C.length;for(y=0;y<p;y++)switch(C[y].once&&this.removeListener(d,C[y].fn,void 0,!0),K){case 1:C[y].fn.call(C[y].context);break;case 2:C[y].fn.call(C[y].context,l);break;case 3:C[y].fn.call(C[y].context,l,m);break;case 4:C[y].fn.call(C[y].context,l,m,b);break;default:if(!c)for(G=1,c=new Array(K-1);G<K;G++)c[G-1]=arguments[G];C[y].fn.apply(C[y].context,c)}}return!0},X.prototype.on=function(d,l,I){return Z(this,d,l,I,!1)},X.prototype.once=function(d,l,I){return Z(this,d,l,I,!0)},X.prototype.removeListener=function(d,l,m,b){var Z=I?I+d:d;if(!this._events[Z])return this;if(!l)return i(this,Z),this;var X=this._events[Z];if(X.fn)X.fn!==l||b&&!X.once||m&&X.context!==m||i(this,Z);else{for(var c=0,y=[],C=X.length;c<C;c++)(X[c].fn!==l||b&&!X[c].once||m&&X[c].context!==m)&&y.push(X[c]);y.length?this._events[Z]=1===y.length?y[0]:y:i(this,Z)}return this},X.prototype.removeAllListeners=function(d){var l;return d?(l=I?I+d:d,this._events[l]&&i(this,l)):(this._events=new m,this._eventsCount=0),this},X.prototype.off=X.prototype.removeListener,X.prototype.addListener=X.prototype.on,X.prefixed=I,X.EventEmitter=X,d.exports=X}(n);var u=o(n.exports);let H;!function(){if("browser"!==("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let d=Y("CgoKInVzZSBzdHJpY3QiO3ZhciB0PUFycmF5LmlzQXJyYXkscj0ib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWwsZT0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLG49cnx8ZXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxvPW4uU3ltYm9sLHU9T2JqZWN0LnByb3RvdHlwZSxpPXUuaGFzT3duUHJvcGVydHksYz11LnRvU3RyaW5nLGE9bz9vLnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgZj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO3ZhciBsPW8/by50b1N0cmluZ1RhZzp2b2lkIDA7ZnVuY3Rpb24gcyh0KXtyZXR1cm4gbnVsbD09dD92b2lkIDA9PT10PyJbb2JqZWN0IFVuZGVmaW5lZF0iOiJbb2JqZWN0IE51bGxdIjpsJiZsIGluIE9iamVjdCh0KT9mdW5jdGlvbih0KXt2YXIgcj1pLmNhbGwodCxhKSxlPXRbYV07dHJ5e3RbYV09dm9pZCAwO3ZhciBuPSEwfWNhdGNoKHQpe312YXIgbz1jLmNhbGwodCk7cmV0dXJuIG4mJihyP3RbYV09ZTpkZWxldGUgdFthXSksb30odCk6ZnVuY3Rpb24odCl7cmV0dXJuIGYuY2FsbCh0KX0odCl9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fWZ1bmN0aW9uIGIodCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxwKHQpJiYiW29iamVjdCBTeW1ib2xdIj09cyh0KX12YXIgdj0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyx5PS9eXHcqJC87ZnVuY3Rpb24gaChyLGUpe2lmKHQocikpcmV0dXJuITE7dmFyIG49dHlwZW9mIHI7cmV0dXJuISgibnVtYmVyIiE9biYmInN5bWJvbCIhPW4mJiJib29sZWFuIiE9biYmbnVsbCE9ciYmIWIocikpfHwoeS50ZXN0KHIpfHwhdi50ZXN0KHIpfHxudWxsIT1lJiZyIGluIE9iamVjdChlKSl9ZnVuY3Rpb24gZCh0KXt2YXIgcj10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1yfHwiZnVuY3Rpb24iPT1yKX1mdW5jdGlvbiBqKHQpe2lmKCFkKHQpKXJldHVybiExO3ZhciByPXModCk7cmV0dXJuIltvYmplY3QgRnVuY3Rpb25dIj09cnx8IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIj09cnx8IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iPT1yfHwiW29iamVjdCBQcm94eV0iPT1yfXZhciBnLF89blsiX19jb3JlLWpzX3NoYXJlZF9fIl0sTz0oZz0vW14uXSskLy5leGVjKF8mJl8ua2V5cyYmXy5rZXlzLklFX1BST1RPfHwiIikpPyJTeW1ib2woc3JjKV8xLiIrZzoiIjt2YXIgdz1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gbSh0KXtpZihudWxsIT10KXt0cnl7cmV0dXJuIHcuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIEE9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8seD1GdW5jdGlvbi5wcm90b3R5cGUsUz1PYmplY3QucHJvdG90eXBlLFA9eC50b1N0cmluZyx6PVMuaGFzT3duUHJvcGVydHksRT1SZWdFeHAoIl4iK1AuY2FsbCh6KS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTtmdW5jdGlvbiBJKHQpe3JldHVybiEoIWQodCl8fChyPXQsTyYmTyBpbiByKSkmJihqKHQpP0U6QSkudGVzdChtKHQpKTt2YXIgcn1mdW5jdGlvbiBOKHQscil7dmFyIGU9ZnVuY3Rpb24odCxyKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtyXX0odCxyKTtyZXR1cm4gSShlKT9lOnZvaWQgMH12YXIgVD1OKE9iamVjdCwiY3JlYXRlIik7dmFyICQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgQz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIEYodCl7dmFyIHI9LTEsZT1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK3I8ZTspe3ZhciBuPXRbcl07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gTSh0LHIpe3JldHVybiB0PT09cnx8dCE9dCYmciE9cn1mdW5jdGlvbiBVKHQscil7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLTspaWYoTSh0W2VdWzBdLHIpKXJldHVybiBlO3JldHVybi0xfUYucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1UP1QobnVsbCk6e30sdGhpcy5zaXplPTB9LEYucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgcj10aGlzLmhhcyh0KSYmZGVsZXRlIHRoaXMuX19kYXRhX19bdF07cmV0dXJuIHRoaXMuc2l6ZS09cj8xOjAscn0sRi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX19kYXRhX187aWYoVCl7dmFyIGU9clt0XTtyZXR1cm4iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI9PT1lP3ZvaWQgMDplfXJldHVybiAkLmNhbGwocix0KT9yW3RdOnZvaWQgMH0sRi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX19kYXRhX187cmV0dXJuIFQ/dm9pZCAwIT09clt0XTpDLmNhbGwocix0KX0sRi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQscil7dmFyIGU9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsZVt0XT1UJiZ2b2lkIDA9PT1yPyJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjpyLHRoaXN9O3ZhciBrPUFycmF5LnByb3RvdHlwZS5zcGxpY2U7ZnVuY3Rpb24gQih0KXt2YXIgcj0tMSxlPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrcjxlOyl7dmFyIG49dFtyXTt0aGlzLnNldChuWzBdLG5bMV0pfX1CLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LEIucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fLGU9VShyLHQpO3JldHVybiEoZTwwKSYmKGU9PXIubGVuZ3RoLTE/ci5wb3AoKTprLmNhbGwocixlLDEpLC0tdGhpcy5zaXplLCEwKX0sQi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX19kYXRhX18sZT1VKHIsdCk7cmV0dXJuIGU8MD92b2lkIDA6cltlXVsxXX0sQi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBVKHRoaXMuX19kYXRhX18sdCk+LTF9LEIucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LHIpe3ZhciBlPXRoaXMuX19kYXRhX18sbj1VKGUsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsZS5wdXNoKFt0LHJdKSk6ZVtuXVsxXT1yLHRoaXN9O3ZhciBEPU4obiwiTWFwIik7ZnVuY3Rpb24gUih0LHIpe3ZhciBlLG4sbz10Ll9fZGF0YV9fO3JldHVybigic3RyaW5nIj09KG49dHlwZW9mKGU9cikpfHwibnVtYmVyIj09bnx8InN5bWJvbCI9PW58fCJib29sZWFuIj09bj8iX19wcm90b19fIiE9PWU6bnVsbD09PWUpP29bInN0cmluZyI9PXR5cGVvZiByPyJzdHJpbmciOiJoYXNoIl06by5tYXB9ZnVuY3Rpb24gTCh0KXt2YXIgcj0tMSxlPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrcjxlOyl7dmFyIG49dFtyXTt0aGlzLnNldChuWzBdLG5bMV0pfX1MLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2l6ZT0wLHRoaXMuX19kYXRhX189e2hhc2g6bmV3IEYsbWFwOm5ldyhEfHxCKSxzdHJpbmc6bmV3IEZ9fSxMLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIHI9Uih0aGlzLHQpLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplLT1yPzE6MCxyfSxMLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIFIodGhpcyx0KS5nZXQodCl9LEwucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gUih0aGlzLHQpLmhhcyh0KX0sTC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQscil7dmFyIGU9Uih0aGlzLHQpLG49ZS5zaXplO3JldHVybiBlLnNldCh0LHIpLHRoaXMuc2l6ZSs9ZS5zaXplPT1uPzA6MSx0aGlzfTtmdW5jdGlvbiBWKHQscil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHR8fG51bGwhPXImJiJmdW5jdGlvbiIhPXR5cGVvZiByKXRocm93IG5ldyBUeXBlRXJyb3IoIkV4cGVjdGVkIGEgZnVuY3Rpb24iKTt2YXIgZT1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxvPXI/ci5hcHBseSh0aGlzLG4pOm5bMF0sdT1lLmNhY2hlO2lmKHUuaGFzKG8pKXJldHVybiB1LmdldChvKTt2YXIgaT10LmFwcGx5KHRoaXMsbik7cmV0dXJuIGUuY2FjaGU9dS5zZXQobyxpKXx8dSxpfTtyZXR1cm4gZS5jYWNoZT1uZXcoVi5DYWNoZXx8TCksZX1WLkNhY2hlPUw7dmFyIEssVyxxLEc9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csSD0vXFwoXFwpPy9nLEo9KEs9ZnVuY3Rpb24odCl7dmFyIHI9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZyLnB1c2goIiIpLHQucmVwbGFjZShHLGZ1bmN0aW9uKHQsZSxuLG8pe3IucHVzaChuP28ucmVwbGFjZShILCIkMSIpOmV8fHQpfSkscn0sVz1WKEssZnVuY3Rpb24odCl7cmV0dXJuIDUwMD09PXEuc2l6ZSYmcS5jbGVhcigpLHR9KSxxPVcuY2FjaGUsVyksUT1KO2Z1bmN0aW9uIFgodCxyKXtmb3IodmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGgsbz1BcnJheShuKTsrK2U8bjspb1tlXT1yKHRbZV0sZSx0KTtyZXR1cm4gb312YXIgWT1vP28ucHJvdG90eXBlOnZvaWQgMCxaPVk/WS50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gdHQocil7aWYoInN0cmluZyI9PXR5cGVvZiByKXJldHVybiByO2lmKHQocikpcmV0dXJuIFgocix0dCkrIiI7aWYoYihyKSlyZXR1cm4gWj9aLmNhbGwocik6IiI7dmFyIGU9cisiIjtyZXR1cm4iMCI9PWUmJjEvcj09LTEvMD8iLTAiOmV9ZnVuY3Rpb24gcnQocixlKXtyZXR1cm4gdChyKT9yOmgocixlKT9bcl06UShmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD8iIjp0dCh0KX0ocikpfWZ1bmN0aW9uIGV0KHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdHx8Yih0KSlyZXR1cm4gdDt2YXIgcj10KyIiO3JldHVybiIwIj09ciYmMS90PT0tMS8wPyItMCI6cn1mdW5jdGlvbiBudCh0LHIpe2Zvcih2YXIgZT0wLG49KHI9cnQocix0KSkubGVuZ3RoO251bGwhPXQmJmU8bjspdD10W2V0KHJbZSsrXSldO3JldHVybiBlJiZlPT1uP3Q6dm9pZCAwfWZ1bmN0aW9uIG90KHQscixlKXt2YXIgbj1udWxsPT10P3ZvaWQgMDpudCh0LHIpO3JldHVybiB2b2lkIDA9PT1uP2U6bn1mdW5jdGlvbiB1dCh0KXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBpdCh0KXtyZXR1cm4hKCF1dCh0KXx8IiI9PT10KX1mdW5jdGlvbiBjdCh0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBhdCh0KXtpZihjdCh0KSl7Zm9yKGxldCByIGluIHQpcmV0dXJuITA7cmV0dXJuITF9cmV0dXJuITF9ZnVuY3Rpb24gZnQodCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBsdCh0KXtyZXR1cm4gdCE9dH1mdW5jdGlvbiBzdCh0KXtyZXR1cm4hIWZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IFVuZGVmaW5lZF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgTnVsbF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KXx8KCEhZnVuY3Rpb24odCl7aWYoY3QodCkpe2ZvcihsZXQgciBpbiB0KXJldHVybiExO3JldHVybiEwfXJldHVybiExfSh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuISghdXQodCl8fCIiIT09dCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4hIWZ0KHQpJiYwPT09dC5sZW5ndGh9KHQpfHwhIWx0KHQpKSkpKX1mdW5jdGlvbiBwdCh0KXtyZXR1cm4hIWZ0KHQpJiYoMCE9PXQubGVuZ3RoJiYoMSE9PXQubGVuZ3RofHwhc3QodFswXSkpKX1mdW5jdGlvbiBidCh0KXtyZXR1cm4hMD09PShyPXQpfHwhMT09PXJ8fHAocikmJiJbb2JqZWN0IEJvb2xlYW5dIj09cyhyKTt2YXIgcn1mdW5jdGlvbiB2dCh0KXt2YXIgcj10aGlzLl9fZGF0YV9fPW5ldyBCKHQpO3RoaXMuc2l6ZT1yLnNpemV9dnQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1uZXcgQix0aGlzLnNpemU9MH0sdnQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fLGU9ci5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1yLnNpemUsZX0sdnQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9LHZ0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfSx2dC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQscil7dmFyIGU9dGhpcy5fX2RhdGFfXztpZihlIGluc3RhbmNlb2YgQil7dmFyIG49ZS5fX2RhdGFfXztpZighRHx8bi5sZW5ndGg8MTk5KXJldHVybiBuLnB1c2goW3Qscl0pLHRoaXMuc2l6ZT0rK2Uuc2l6ZSx0aGlzO2U9dGhpcy5fX2RhdGFfXz1uZXcgTChuKX1yZXR1cm4gZS5zZXQodCxyKSx0aGlzLnNpemU9ZS5zaXplLHRoaXN9O2Z1bmN0aW9uIHl0KHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBMOysrcjxlOyl0aGlzLmFkZCh0W3JdKX1mdW5jdGlvbiBodCh0LHIpe2Zvcih2YXIgZT0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK2U8bjspaWYocih0W2VdLGUsdCkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gZHQodCxyKXtyZXR1cm4gdC5oYXMocil9eXQucHJvdG90eXBlLmFkZD15dC5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5zZXQodCwiX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIpLHRoaXN9LHl0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfTtmdW5jdGlvbiBqdCh0LHIsZSxuLG8sdSl7dmFyIGk9MSZlLGM9dC5sZW5ndGgsYT1yLmxlbmd0aDtpZihjIT1hJiYhKGkmJmE+YykpcmV0dXJuITE7dmFyIGY9dS5nZXQodCksbD11LmdldChyKTtpZihmJiZsKXJldHVybiBmPT1yJiZsPT10O3ZhciBzPS0xLHA9ITAsYj0yJmU/bmV3IHl0OnZvaWQgMDtmb3IodS5zZXQodCxyKSx1LnNldChyLHQpOysrczxjOyl7dmFyIHY9dFtzXSx5PXJbc107aWYobil2YXIgaD1pP24oeSx2LHMscix0LHUpOm4odix5LHMsdCxyLHUpO2lmKHZvaWQgMCE9PWgpe2lmKGgpY29udGludWU7cD0hMTticmVha31pZihiKXtpZighaHQocixmdW5jdGlvbih0LHIpe2lmKCFkdChiLHIpJiYodj09PXR8fG8odix0LGUsbix1KSkpcmV0dXJuIGIucHVzaChyKX0pKXtwPSExO2JyZWFrfX1lbHNlIGlmKHYhPT15JiYhbyh2LHksZSxuLHUpKXtwPSExO2JyZWFrfX1yZXR1cm4gdS5kZWxldGUodCksdS5kZWxldGUocikscH12YXIgZ3Q9bi5VaW50OEFycmF5O2Z1bmN0aW9uIF90KHQpe3ZhciByPS0xLGU9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7ZVsrK3JdPVtuLHRdfSksZX1mdW5jdGlvbiBPdCh0KXt2YXIgcj0tMSxlPUFycmF5KHQuc2l6ZSk7cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbih0KXtlWysrcl09dH0pLGV9dmFyIHd0PW8/by5wcm90b3R5cGU6dm9pZCAwLG10PXd0P3d0LnZhbHVlT2Y6dm9pZCAwO2Z1bmN0aW9uIEF0KHQscil7Zm9yKHZhciBlPS0xLG49ci5sZW5ndGgsbz10Lmxlbmd0aDsrK2U8bjspdFtvK2VdPXJbZV07cmV0dXJuIHR9ZnVuY3Rpb24geHQocixlLG4pe3ZhciBvPWUocik7cmV0dXJuIHQocik/bzpBdChvLG4ocikpfWZ1bmN0aW9uIFN0KCl7cmV0dXJuW119dmFyIFB0PU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsenQ9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxFdD16dD9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1PYmplY3QodCksZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGgsbz0wLHU9W107KytlPG47KXt2YXIgaT10W2VdO3IoaSxlLHQpJiYodVtvKytdPWkpfXJldHVybiB1fSh6dCh0KSxmdW5jdGlvbihyKXtyZXR1cm4gUHQuY2FsbCh0LHIpfSkpfTpTdCxJdD1FdDtmdW5jdGlvbiBOdCh0KXtyZXR1cm4gcCh0KSYmIltvYmplY3QgQXJndW1lbnRzXSI9PXModCl9dmFyIFR0PU9iamVjdC5wcm90b3R5cGUsJHQ9VHQuaGFzT3duUHJvcGVydHksQ3Q9VHQucHJvcGVydHlJc0VudW1lcmFibGUsRnQ9TnQoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpKT9OdDpmdW5jdGlvbih0KXtyZXR1cm4gcCh0KSYmJHQuY2FsbCh0LCJjYWxsZWUiKSYmIUN0LmNhbGwodCwiY2FsbGVlIil9O3ZhciBNdD0ib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJmV4cG9ydHMmJiFleHBvcnRzLm5vZGVUeXBlJiZleHBvcnRzLFV0PU10JiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsa3Q9VXQmJlV0LmV4cG9ydHM9PT1NdD9uLkJ1ZmZlcjp2b2lkIDAsQnQ9KGt0P2t0LmlzQnVmZmVyOnZvaWQgMCl8fGZ1bmN0aW9uKCl7cmV0dXJuITF9LER0PS9eKD86MHxbMS05XVxkKikkLztmdW5jdGlvbiBSdCh0LHIpe3ZhciBlPXR5cGVvZiB0O3JldHVybiEhKHI9bnVsbD09cj85MDA3MTk5MjU0NzQwOTkxOnIpJiYoIm51bWJlciI9PWV8fCJzeW1ib2wiIT1lJiZEdC50ZXN0KHQpKSYmdD4tMSYmdCUxPT0wJiZ0PHJ9ZnVuY3Rpb24gTHQodCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PTkwMDcxOTkyNTQ3NDA5OTF9dmFyIFZ0PXt9O2Z1bmN0aW9uIEt0KHQpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gdChyKX19VnRbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPVZ0WyJbb2JqZWN0IEZsb2F0NjRBcnJheV0iXT1WdFsiW29iamVjdCBJbnQ4QXJyYXldIl09VnRbIltvYmplY3QgSW50MTZBcnJheV0iXT1WdFsiW29iamVjdCBJbnQzMkFycmF5XSJdPVZ0WyJbb2JqZWN0IFVpbnQ4QXJyYXldIl09VnRbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09VnRbIltvYmplY3QgVWludDE2QXJyYXldIl09VnRbIltvYmplY3QgVWludDMyQXJyYXldIl09ITAsVnRbIltvYmplY3QgQXJndW1lbnRzXSJdPVZ0WyJbb2JqZWN0IEFycmF5XSJdPVZ0WyJbb2JqZWN0IEFycmF5QnVmZmVyXSJdPVZ0WyJbb2JqZWN0IEJvb2xlYW5dIl09VnRbIltvYmplY3QgRGF0YVZpZXddIl09VnRbIltvYmplY3QgRGF0ZV0iXT1WdFsiW29iamVjdCBFcnJvcl0iXT1WdFsiW29iamVjdCBGdW5jdGlvbl0iXT1WdFsiW29iamVjdCBNYXBdIl09VnRbIltvYmplY3QgTnVtYmVyXSJdPVZ0WyJbb2JqZWN0IE9iamVjdF0iXT1WdFsiW29iamVjdCBSZWdFeHBdIl09VnRbIltvYmplY3QgU2V0XSJdPVZ0WyJbb2JqZWN0IFN0cmluZ10iXT1WdFsiW29iamVjdCBXZWFrTWFwXSJdPSExO3ZhciBXdD0ib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJmV4cG9ydHMmJiFleHBvcnRzLm5vZGVUeXBlJiZleHBvcnRzLHF0PVd0JiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsR3Q9cXQmJnF0LmV4cG9ydHM9PT1XdCYmci5wcm9jZXNzLEh0PWZ1bmN0aW9uKCl7dHJ5e3ZhciB0PXF0JiZxdC5yZXF1aXJlJiZxdC5yZXF1aXJlKCJ1dGlsIikudHlwZXM7cmV0dXJuIHR8fEd0JiZHdC5iaW5kaW5nJiZHdC5iaW5kaW5nKCJ1dGlsIil9Y2F0Y2godCl7fX0oKSxKdD1IdCYmSHQuaXNUeXBlZEFycmF5LFF0PUp0P0t0KEp0KTpmdW5jdGlvbih0KXtyZXR1cm4gcCh0KSYmTHQodC5sZW5ndGgpJiYhIVZ0W3ModCldfSxYdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIFl0KHIsZSl7dmFyIG49dChyKSxvPSFuJiZGdChyKSx1PSFuJiYhbyYmQnQociksaT0hbiYmIW8mJiF1JiZRdChyKSxjPW58fG98fHV8fGksYT1jP2Z1bmN0aW9uKHQscil7Zm9yKHZhciBlPS0xLG49QXJyYXkodCk7KytlPHQ7KW5bZV09cihlKTtyZXR1cm4gbn0oci5sZW5ndGgsU3RyaW5nKTpbXSxmPWEubGVuZ3RoO2Zvcih2YXIgbCBpbiByKSFlJiYhWHQuY2FsbChyLGwpfHxjJiYoImxlbmd0aCI9PWx8fHUmJigib2Zmc2V0Ij09bHx8InBhcmVudCI9PWwpfHxpJiYoImJ1ZmZlciI9PWx8fCJieXRlTGVuZ3RoIj09bHx8ImJ5dGVPZmZzZXQiPT1sKXx8UnQobCxmKSl8fGEucHVzaChsKTtyZXR1cm4gYX12YXIgWnQ9T2JqZWN0LnByb3RvdHlwZTtmdW5jdGlvbiB0cih0KXt2YXIgcj10JiZ0LmNvbnN0cnVjdG9yO3JldHVybiB0PT09KCJmdW5jdGlvbiI9PXR5cGVvZiByJiZyLnByb3RvdHlwZXx8WnQpfWZ1bmN0aW9uIHJyKHQscil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KHIoZSkpfX12YXIgZXI9cnIoT2JqZWN0LmtleXMsT2JqZWN0KSxucj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIG9yKHQpe2lmKCF0cih0KSlyZXR1cm4gZXIodCk7dmFyIHI9W107Zm9yKHZhciBlIGluIE9iamVjdCh0KSluci5jYWxsKHQsZSkmJiJjb25zdHJ1Y3RvciIhPWUmJnIucHVzaChlKTtyZXR1cm4gcn1mdW5jdGlvbiB1cih0KXtyZXR1cm4gbnVsbCE9dCYmTHQodC5sZW5ndGgpJiYhaih0KX1mdW5jdGlvbiBpcih0KXtyZXR1cm4gdXIodCk/WXQodCk6b3IodCl9ZnVuY3Rpb24gY3IodCl7cmV0dXJuIHh0KHQsaXIsSXQpfXZhciBhcj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBmcj1OKG4sIkRhdGFWaWV3IiksbHI9TihuLCJQcm9taXNlIiksc3I9TihuLCJTZXQiKSxwcj1OKG4sIldlYWtNYXAiKSxicj0iW29iamVjdCBNYXBdIix2cj0iW29iamVjdCBQcm9taXNlXSIseXI9IltvYmplY3QgU2V0XSIsaHI9IltvYmplY3QgV2Vha01hcF0iLGRyPSJbb2JqZWN0IERhdGFWaWV3XSIsanI9bShmciksZ3I9bShEKSxfcj1tKGxyKSxPcj1tKHNyKSx3cj1tKHByKSxtcj1zOyhmciYmbXIobmV3IGZyKG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1kcnx8RCYmbXIobmV3IEQpIT1icnx8bHImJm1yKGxyLnJlc29sdmUoKSkhPXZyfHxzciYmbXIobmV3IHNyKSE9eXJ8fHByJiZtcihuZXcgcHIpIT1ocikmJihtcj1mdW5jdGlvbih0KXt2YXIgcj1zKHQpLGU9IltvYmplY3QgT2JqZWN0XSI9PXI/dC5jb25zdHJ1Y3Rvcjp2b2lkIDAsbj1lP20oZSk6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBqcjpyZXR1cm4gZHI7Y2FzZSBncjpyZXR1cm4gYnI7Y2FzZSBfcjpyZXR1cm4gdnI7Y2FzZSBPcjpyZXR1cm4geXI7Y2FzZSB3cjpyZXR1cm4gaHJ9cmV0dXJuIHJ9KTt2YXIgQXI9bXIseHI9IltvYmplY3QgQXJndW1lbnRzXSIsU3I9IltvYmplY3QgQXJyYXldIixQcj0iW29iamVjdCBPYmplY3RdIix6cj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIEVyKHIsZSxuLG8sdSxpKXt2YXIgYz10KHIpLGE9dChlKSxmPWM/U3I6QXIociksbD1hP1NyOkFyKGUpLHM9KGY9Zj09eHI/UHI6Zik9PVByLHA9KGw9bD09eHI/UHI6bCk9PVByLGI9Zj09bDtpZihiJiZCdChyKSl7aWYoIUJ0KGUpKXJldHVybiExO2M9ITAscz0hMX1pZihiJiYhcylyZXR1cm4gaXx8KGk9bmV3IHZ0KSxjfHxRdChyKT9qdChyLGUsbixvLHUsaSk6ZnVuY3Rpb24odCxyLGUsbixvLHUsaSl7c3dpdGNoKGUpe2Nhc2UiW29iamVjdCBEYXRhVmlld10iOmlmKHQuYnl0ZUxlbmd0aCE9ci5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPXIuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLHI9ci5idWZmZXI7Y2FzZSJbb2JqZWN0IEFycmF5QnVmZmVyXSI6cmV0dXJuISh0LmJ5dGVMZW5ndGghPXIuYnl0ZUxlbmd0aHx8IXUobmV3IGd0KHQpLG5ldyBndChyKSkpO2Nhc2UiW29iamVjdCBCb29sZWFuXSI6Y2FzZSJbb2JqZWN0IERhdGVdIjpjYXNlIltvYmplY3QgTnVtYmVyXSI6cmV0dXJuIE0oK3QsK3IpO2Nhc2UiW29iamVjdCBFcnJvcl0iOnJldHVybiB0Lm5hbWU9PXIubmFtZSYmdC5tZXNzYWdlPT1yLm1lc3NhZ2U7Y2FzZSJbb2JqZWN0IFJlZ0V4cF0iOmNhc2UiW29iamVjdCBTdHJpbmddIjpyZXR1cm4gdD09cisiIjtjYXNlIltvYmplY3QgTWFwXSI6dmFyIGM9X3Q7Y2FzZSJbb2JqZWN0IFNldF0iOnZhciBhPTEmbjtpZihjfHwoYz1PdCksdC5zaXplIT1yLnNpemUmJiFhKXJldHVybiExO3ZhciBmPWkuZ2V0KHQpO2lmKGYpcmV0dXJuIGY9PXI7bnw9MixpLnNldCh0LHIpO3ZhciBsPWp0KGModCksYyhyKSxuLG8sdSxpKTtyZXR1cm4gaS5kZWxldGUodCksbDtjYXNlIltvYmplY3QgU3ltYm9sXSI6aWYobXQpcmV0dXJuIG10LmNhbGwodCk9PW10LmNhbGwocil9cmV0dXJuITF9KHIsZSxmLG4sbyx1LGkpO2lmKCEoMSZuKSl7dmFyIHY9cyYmenIuY2FsbChyLCJfX3dyYXBwZWRfXyIpLHk9cCYmenIuY2FsbChlLCJfX3dyYXBwZWRfXyIpO2lmKHZ8fHkpe3ZhciBoPXY/ci52YWx1ZSgpOnIsZD15P2UudmFsdWUoKTplO3JldHVybiBpfHwoaT1uZXcgdnQpLHUoaCxkLG4sbyxpKX19cmV0dXJuISFiJiYoaXx8KGk9bmV3IHZ0KSxmdW5jdGlvbih0LHIsZSxuLG8sdSl7dmFyIGk9MSZlLGM9Y3IodCksYT1jLmxlbmd0aDtpZihhIT1jcihyKS5sZW5ndGgmJiFpKXJldHVybiExO2Zvcih2YXIgZj1hO2YtLTspe3ZhciBsPWNbZl07aWYoIShpP2wgaW4gcjphci5jYWxsKHIsbCkpKXJldHVybiExfXZhciBzPXUuZ2V0KHQpLHA9dS5nZXQocik7aWYocyYmcClyZXR1cm4gcz09ciYmcD09dDt2YXIgYj0hMDt1LnNldCh0LHIpLHUuc2V0KHIsdCk7Zm9yKHZhciB2PWk7KytmPGE7KXt2YXIgeT10W2w9Y1tmXV0saD1yW2xdO2lmKG4pdmFyIGQ9aT9uKGgseSxsLHIsdCx1KTpuKHksaCxsLHQscix1KTtpZighKHZvaWQgMD09PWQ/eT09PWh8fG8oeSxoLGUsbix1KTpkKSl7Yj0hMTticmVha312fHwodj0iY29uc3RydWN0b3IiPT1sKX1pZihiJiYhdil7dmFyIGo9dC5jb25zdHJ1Y3RvcixnPXIuY29uc3RydWN0b3I7aj09Z3x8ISgiY29uc3RydWN0b3IiaW4gdCl8fCEoImNvbnN0cnVjdG9yImluIHIpfHwiZnVuY3Rpb24iPT10eXBlb2YgaiYmaiBpbnN0YW5jZW9mIGomJiJmdW5jdGlvbiI9PXR5cGVvZiBnJiZnIGluc3RhbmNlb2YgZ3x8KGI9ITEpfXJldHVybiB1LmRlbGV0ZSh0KSx1LmRlbGV0ZShyKSxifShyLGUsbixvLHUsaSkpfWZ1bmN0aW9uIElyKHQscixlLG4sbyl7cmV0dXJuIHQ9PT1yfHwobnVsbD09dHx8bnVsbD09cnx8IXAodCkmJiFwKHIpP3QhPXQmJnIhPXI6RXIodCxyLGUsbixJcixvKSl9ZnVuY3Rpb24gTnIodCl7cmV0dXJuIHQ9PXQmJiFkKHQpfWZ1bmN0aW9uIFRyKHQscil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiYoZVt0XT09PXImJih2b2lkIDAhPT1yfHx0IGluIE9iamVjdChlKSkpfX1mdW5jdGlvbiAkcih0KXt2YXIgcj1mdW5jdGlvbih0KXtmb3IodmFyIHI9aXIodCksZT1yLmxlbmd0aDtlLS07KXt2YXIgbj1yW2VdLG89dFtuXTtyW2VdPVtuLG8sTnIobyldfXJldHVybiByfSh0KTtyZXR1cm4gMT09ci5sZW5ndGgmJnJbMF1bMl0/VHIoclswXVswXSxyWzBdWzFdKTpmdW5jdGlvbihlKXtyZXR1cm4gZT09PXR8fGZ1bmN0aW9uKHQscixlLG4pe3ZhciBvPWUubGVuZ3RoLHU9byxpPSFuO2lmKG51bGw9PXQpcmV0dXJuIXU7Zm9yKHQ9T2JqZWN0KHQpO28tLTspe3ZhciBjPWVbb107aWYoaSYmY1syXT9jWzFdIT09dFtjWzBdXTohKGNbMF1pbiB0KSlyZXR1cm4hMX1mb3IoOysrbzx1Oyl7dmFyIGE9KGM9ZVtvXSlbMF0sZj10W2FdLGw9Y1sxXTtpZihpJiZjWzJdKXtpZih2b2lkIDA9PT1mJiYhKGEgaW4gdCkpcmV0dXJuITF9ZWxzZXt2YXIgcz1uZXcgdnQ7aWYobil2YXIgcD1uKGYsbCxhLHQscixzKTtpZighKHZvaWQgMD09PXA/SXIobCxmLDMsbixzKTpwKSlyZXR1cm4hMX19cmV0dXJuITB9KGUsdCxyKX19ZnVuY3Rpb24gQ3IodCxyKXtyZXR1cm4gbnVsbCE9dCYmciBpbiBPYmplY3QodCl9ZnVuY3Rpb24gRnIocixlKXtyZXR1cm4gbnVsbCE9ciYmZnVuY3Rpb24ocixlLG4pe2Zvcih2YXIgbz0tMSx1PShlPXJ0KGUscikpLmxlbmd0aCxpPSExOysrbzx1Oyl7dmFyIGM9ZXQoZVtvXSk7aWYoIShpPW51bGwhPXImJm4ocixjKSkpYnJlYWs7cj1yW2NdfXJldHVybiBpfHwrK28hPXU/aTohISh1PW51bGw9PXI/MDpyLmxlbmd0aCkmJkx0KHUpJiZSdChjLHUpJiYodChyKXx8RnQocikpfShyLGUsQ3IpfWZ1bmN0aW9uIE1yKHQpe3JldHVybiB0fWZ1bmN0aW9uIFVyKHQpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gbnVsbD09cj92b2lkIDA6clt0XX19ZnVuY3Rpb24ga3IodCl7cmV0dXJuIGgodCk/VXIoZXQodCkpOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gbnQocix0KX19KHQpfWZ1bmN0aW9uIEJyKHIpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiByP3I6bnVsbD09cj9Ncjoib2JqZWN0Ij09dHlwZW9mIHI/dChyKT8oZT1yWzBdLG49clsxXSxoKGUpJiZOcihuKT9UcihldChlKSxuKTpmdW5jdGlvbih0KXt2YXIgcj1vdCh0LGUpO3JldHVybiB2b2lkIDA9PT1yJiZyPT09bj9Gcih0LGUpOklyKG4sciwzKX0pOiRyKHIpOmtyKHIpO3ZhciBlLG59dmFyIERyLFJyPWZ1bmN0aW9uKHQscixlKXtmb3IodmFyIG49LTEsbz1PYmplY3QodCksdT1lKHQpLGk9dS5sZW5ndGg7aS0tOyl7dmFyIGM9dVtEcj9pOisrbl07aWYoITE9PT1yKG9bY10sYyxvKSlicmVha31yZXR1cm4gdH07dmFyIExyPWZ1bmN0aW9uKHQscil7cmV0dXJuIGZ1bmN0aW9uKGUsbil7aWYobnVsbD09ZSlyZXR1cm4gZTtpZighdXIoZSkpcmV0dXJuIHQoZSxuKTtmb3IodmFyIG89ZS5sZW5ndGgsdT1yP286LTEsaT1PYmplY3QoZSk7KHI/dS0tOisrdTxvKSYmITEhPT1uKGlbdV0sdSxpKTspO3JldHVybiBlfX0oZnVuY3Rpb24odCxyKXtyZXR1cm4gdCYmUnIodCxyLGlyKX0pLFZyPUxyO2Z1bmN0aW9uIEtyKHQscil7dmFyIGU9LTEsbj11cih0KT9BcnJheSh0Lmxlbmd0aCk6W107cmV0dXJuIFZyKHQsZnVuY3Rpb24odCxvLHUpe25bKytlXT1yKHQsbyx1KX0pLG59dmFyIFdyPUFycmF5LnByb3RvdHlwZS5qb2luO3ZhciBxcj1VcigibGVuZ3RoIiksR3I9UmVnRXhwKCJbXFx1MjAwZFxcdWQ4MDAtXFx1ZGZmZlxcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZlxcdWZlMGVcXHVmZTBmXSIpO3ZhciBIcj0iXFx1ZDgwMC1cXHVkZmZmIixKcj0iWyIrSHIrIl0iLFFyPSJbXFx1MDMwMC1cXHUwMzZmXFx1ZmUyMC1cXHVmZTJmXFx1MjBkMC1cXHUyMGZmXSIsWHI9IlxcdWQ4M2NbXFx1ZGZmYi1cXHVkZmZmXSIsWXI9IlteIitIcisiXSIsWnI9Iig/OlxcdWQ4M2NbXFx1ZGRlNi1cXHVkZGZmXSl7Mn0iLHRlPSJbXFx1ZDgwMC1cXHVkYmZmXVtcXHVkYzAwLVxcdWRmZmZdIixyZT0iKD86IitRcisifCIrWHIrIikiKyI/IixlZT0iW1xcdWZlMGVcXHVmZTBmXT8iLG5lPWVlK3JlKygiKD86XFx1MjAwZCg/OiIrW1lyLFpyLHRlXS5qb2luKCJ8IikrIikiK2VlK3JlKyIpKiIpLG9lPSIoPzoiK1tZcitRcisiPyIsUXIsWnIsdGUsSnJdLmpvaW4oInwiKSsiKSIsdWU9UmVnRXhwKFhyKyIoPz0iK1hyKyIpfCIrb2UrbmUsImciKTtmdW5jdGlvbiBpZSh0KXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIEdyLnRlc3QodCl9KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgcj11ZS5sYXN0SW5kZXg9MDt1ZS50ZXN0KHQpOykrK3I7cmV0dXJuIHJ9KHQpOnFyKHQpfWZ1bmN0aW9uIGNlKHIpe2lmKG51bGw9PXIpcmV0dXJuIDA7aWYodXIocikpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXIpfHwhdChlKSYmcChlKSYmIltvYmplY3QgU3RyaW5nXSI9PXMoZSk/aWUocik6ci5sZW5ndGg7dmFyIGUsbj1BcihyKTtyZXR1cm4iW29iamVjdCBNYXBdIj09bnx8IltvYmplY3QgU2V0XSI9PW4/ci5zaXplOm9yKHIpLmxlbmd0aH1mdW5jdGlvbiBhZSh0LHIpe2Zvcih2YXIgZT0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK2U8biYmITEhPT1yKHRbZV0sZSx0KTspO3JldHVybiB0fXZhciBmZT1mdW5jdGlvbigpe3RyeXt2YXIgdD1OKE9iamVjdCwiZGVmaW5lUHJvcGVydHkiKTtyZXR1cm4gdCh7fSwiIix7fSksdH1jYXRjaCh0KXt9fSgpLGxlPWZlO2Z1bmN0aW9uIHNlKHQscixlKXsiX19wcm90b19fIj09ciYmbGU/bGUodCxyLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTplLHdyaXRhYmxlOiEwfSk6dFtyXT1lfXZhciBwZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIGJlKHQscixlKXt2YXIgbj10W3JdO3BlLmNhbGwodCxyKSYmTShuLGUpJiYodm9pZCAwIT09ZXx8ciBpbiB0KXx8c2UodCxyLGUpfWZ1bmN0aW9uIHZlKHQscixlLG4pe3ZhciBvPSFlO2V8fChlPXt9KTtmb3IodmFyIHU9LTEsaT1yLmxlbmd0aDsrK3U8aTspe3ZhciBjPXJbdV0sYT1uP24oZVtjXSx0W2NdLGMsZSx0KTp2b2lkIDA7dm9pZCAwPT09YSYmKGE9dFtjXSksbz9zZShlLGMsYSk6YmUoZSxjLGEpfXJldHVybiBlfXZhciB5ZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIGhlKHQpe2lmKCFkKHQpKXJldHVybiBmdW5jdGlvbih0KXt2YXIgcj1bXTtpZihudWxsIT10KWZvcih2YXIgZSBpbiBPYmplY3QodCkpci5wdXNoKGUpO3JldHVybiByfSh0KTt2YXIgcj10cih0KSxlPVtdO2Zvcih2YXIgbiBpbiB0KSgiY29uc3RydWN0b3IiIT1ufHwhciYmeWUuY2FsbCh0LG4pKSYmZS5wdXNoKG4pO3JldHVybiBlfWZ1bmN0aW9uIGRlKHQpe3JldHVybiB1cih0KT9ZdCh0LCEwKTpoZSh0KX12YXIgamU9Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiZleHBvcnRzJiYhZXhwb3J0cy5ub2RlVHlwZSYmZXhwb3J0cyxnZT1qZSYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJm1vZHVsZSYmIW1vZHVsZS5ub2RlVHlwZSYmbW9kdWxlLF9lPWdlJiZnZS5leHBvcnRzPT09amU/bi5CdWZmZXI6dm9pZCAwLE9lPV9lP19lLmFsbG9jVW5zYWZlOnZvaWQgMDt2YXIgd2U9cnIoT2JqZWN0LmdldFByb3RvdHlwZU9mLE9iamVjdCksbWU9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scz9mdW5jdGlvbih0KXtmb3IodmFyIHI9W107dDspQXQocixJdCh0KSksdD13ZSh0KTtyZXR1cm4gcn06U3QsQWU9bWU7ZnVuY3Rpb24geGUodCl7cmV0dXJuIHh0KHQsZGUsQWUpfXZhciBTZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIFBlKHQpe3ZhciByPW5ldyB0LmNvbnN0cnVjdG9yKHQuYnl0ZUxlbmd0aCk7cmV0dXJuIG5ldyBndChyKS5zZXQobmV3IGd0KHQpKSxyfXZhciB6ZT0vXHcqJC87dmFyIEVlPW8/by5wcm90b3R5cGU6dm9pZCAwLEllPUVlP0VlLnZhbHVlT2Y6dm9pZCAwO2Z1bmN0aW9uIE5lKHQscixlKXt2YXIgbixvPXQuY29uc3RydWN0b3I7c3dpdGNoKHIpe2Nhc2UiW29iamVjdCBBcnJheUJ1ZmZlcl0iOnJldHVybiBQZSh0KTtjYXNlIltvYmplY3QgQm9vbGVhbl0iOmNhc2UiW29iamVjdCBEYXRlXSI6cmV0dXJuIG5ldyBvKCt0KTtjYXNlIltvYmplY3QgRGF0YVZpZXddIjpyZXR1cm4gZnVuY3Rpb24odCxyKXt2YXIgZT1yP1BlKHQuYnVmZmVyKTp0LmJ1ZmZlcjtyZXR1cm4gbmV3IHQuY29uc3RydWN0b3IoZSx0LmJ5dGVPZmZzZXQsdC5ieXRlTGVuZ3RoKX0odCxlKTtjYXNlIltvYmplY3QgRmxvYXQzMkFycmF5XSI6Y2FzZSJbb2JqZWN0IEZsb2F0NjRBcnJheV0iOmNhc2UiW29iamVjdCBJbnQ4QXJyYXldIjpjYXNlIltvYmplY3QgSW50MTZBcnJheV0iOmNhc2UiW29iamVjdCBJbnQzMkFycmF5XSI6Y2FzZSJbb2JqZWN0IFVpbnQ4QXJyYXldIjpjYXNlIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIjpjYXNlIltvYmplY3QgVWludDE2QXJyYXldIjpjYXNlIltvYmplY3QgVWludDMyQXJyYXldIjpyZXR1cm4gZnVuY3Rpb24odCxyKXt2YXIgZT1yP1BlKHQuYnVmZmVyKTp0LmJ1ZmZlcjtyZXR1cm4gbmV3IHQuY29uc3RydWN0b3IoZSx0LmJ5dGVPZmZzZXQsdC5sZW5ndGgpfSh0LGUpO2Nhc2UiW29iamVjdCBNYXBdIjpjYXNlIltvYmplY3QgU2V0XSI6cmV0dXJuIG5ldyBvO2Nhc2UiW29iamVjdCBOdW1iZXJdIjpjYXNlIltvYmplY3QgU3RyaW5nXSI6cmV0dXJuIG5ldyBvKHQpO2Nhc2UiW29iamVjdCBSZWdFeHBdIjpyZXR1cm4gZnVuY3Rpb24odCl7dmFyIHI9bmV3IHQuY29uc3RydWN0b3IodC5zb3VyY2UsemUuZXhlYyh0KSk7cmV0dXJuIHIubGFzdEluZGV4PXQubGFzdEluZGV4LHJ9KHQpO2Nhc2UiW29iamVjdCBTeW1ib2xdIjpyZXR1cm4gbj10LEllP09iamVjdChJZS5jYWxsKG4pKTp7fX19dmFyIFRlPU9iamVjdC5jcmVhdGUsJGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiBmdW5jdGlvbihyKXtpZighZChyKSlyZXR1cm57fTtpZihUZSlyZXR1cm4gVGUocik7dC5wcm90b3R5cGU9cjt2YXIgZT1uZXcgdDtyZXR1cm4gdC5wcm90b3R5cGU9dm9pZCAwLGV9fSgpLENlPSRlO3ZhciBGZT1IdCYmSHQuaXNNYXAsTWU9RmU/S3QoRmUpOmZ1bmN0aW9uKHQpe3JldHVybiBwKHQpJiYiW29iamVjdCBNYXBdIj09QXIodCl9O3ZhciBVZT1IdCYmSHQuaXNTZXQsa2U9VWU/S3QoVWUpOmZ1bmN0aW9uKHQpe3JldHVybiBwKHQpJiYiW29iamVjdCBTZXRdIj09QXIodCl9LEJlPSJbb2JqZWN0IEFyZ3VtZW50c10iLERlPSJbb2JqZWN0IEZ1bmN0aW9uXSIsUmU9IltvYmplY3QgT2JqZWN0XSIsTGU9e307ZnVuY3Rpb24gVmUocixlLG4sbyx1LGkpe3ZhciBjLGE9MSZlLGY9MiZlLGw9NCZlO2lmKG4mJihjPXU/bihyLG8sdSxpKTpuKHIpKSx2b2lkIDAhPT1jKXJldHVybiBjO2lmKCFkKHIpKXJldHVybiByO3ZhciBzPXQocik7aWYocyl7aWYoYz1mdW5jdGlvbih0KXt2YXIgcj10Lmxlbmd0aCxlPW5ldyB0LmNvbnN0cnVjdG9yKHIpO3JldHVybiByJiYic3RyaW5nIj09dHlwZW9mIHRbMF0mJlNlLmNhbGwodCwiaW5kZXgiKSYmKGUuaW5kZXg9dC5pbmRleCxlLmlucHV0PXQuaW5wdXQpLGV9KHIpLCFhKXJldHVybiBmdW5jdGlvbih0LHIpe3ZhciBlPS0xLG49dC5sZW5ndGg7Zm9yKHJ8fChyPUFycmF5KG4pKTsrK2U8bjspcltlXT10W2VdO3JldHVybiByfShyLGMpfWVsc2V7dmFyIHA9QXIociksYj1wPT1EZXx8IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIj09cDtpZihCdChyKSlyZXR1cm4gZnVuY3Rpb24odCxyKXtpZihyKXJldHVybiB0LnNsaWNlKCk7dmFyIGU9dC5sZW5ndGgsbj1PZT9PZShlKTpuZXcgdC5jb25zdHJ1Y3RvcihlKTtyZXR1cm4gdC5jb3B5KG4pLG59KHIsYSk7aWYocD09UmV8fHA9PUJlfHxiJiYhdSl7aWYoYz1mfHxiP3t9OmZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0LmNvbnN0cnVjdG9yfHx0cih0KT97fTpDZSh3ZSh0KSl9KHIpLCFhKXJldHVybiBmP2Z1bmN0aW9uKHQscil7cmV0dXJuIHZlKHQsQWUodCkscil9KHIsZnVuY3Rpb24odCxyKXtyZXR1cm4gdCYmdmUocixkZShyKSx0KX0oYyxyKSk6ZnVuY3Rpb24odCxyKXtyZXR1cm4gdmUodCxJdCh0KSxyKX0ocixmdW5jdGlvbih0LHIpe3JldHVybiB0JiZ2ZShyLGlyKHIpLHQpfShjLHIpKX1lbHNle2lmKCFMZVtwXSlyZXR1cm4gdT9yOnt9O2M9TmUocixwLGEpfX1pfHwoaT1uZXcgdnQpO3ZhciB2PWkuZ2V0KHIpO2lmKHYpcmV0dXJuIHY7aS5zZXQocixjKSxrZShyKT9yLmZvckVhY2goZnVuY3Rpb24odCl7Yy5hZGQoVmUodCxlLG4sdCxyLGkpKX0pOk1lKHIpJiZyLmZvckVhY2goZnVuY3Rpb24odCxvKXtjLnNldChvLFZlKHQsZSxuLG8scixpKSl9KTt2YXIgeT1zP3ZvaWQgMDoobD9mP3hlOmNyOmY/ZGU6aXIpKHIpO3JldHVybiBhZSh5fHxyLGZ1bmN0aW9uKHQsbyl7eSYmKHQ9cltvPXRdKSxiZShjLG8sVmUodCxlLG4sbyxyLGkpKX0pLGN9TGVbQmVdPUxlWyJbb2JqZWN0IEFycmF5XSJdPUxlWyJbb2JqZWN0IEFycmF5QnVmZmVyXSJdPUxlWyJbb2JqZWN0IERhdGFWaWV3XSJdPUxlWyJbb2JqZWN0IEJvb2xlYW5dIl09TGVbIltvYmplY3QgRGF0ZV0iXT1MZVsiW29iamVjdCBGbG9hdDMyQXJyYXldIl09TGVbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPUxlWyJbb2JqZWN0IEludDhBcnJheV0iXT1MZVsiW29iamVjdCBJbnQxNkFycmF5XSJdPUxlWyJbb2JqZWN0IEludDMyQXJyYXldIl09TGVbIltvYmplY3QgTWFwXSJdPUxlWyJbb2JqZWN0IE51bWJlcl0iXT1MZVtSZV09TGVbIltvYmplY3QgUmVnRXhwXSJdPUxlWyJbb2JqZWN0IFNldF0iXT1MZVsiW29iamVjdCBTdHJpbmddIl09TGVbIltvYmplY3QgU3ltYm9sXSJdPUxlWyJbb2JqZWN0IFVpbnQ4QXJyYXldIl09TGVbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09TGVbIltvYmplY3QgVWludDE2QXJyYXldIl09TGVbIltvYmplY3QgVWludDMyQXJyYXldIl09ITAsTGVbIltvYmplY3QgRXJyb3JdIl09TGVbRGVdPUxlWyJbb2JqZWN0IFdlYWtNYXBdIl09ITE7ZnVuY3Rpb24gS2UodCl7cmV0dXJuIFZlKHQsNSl9ZnVuY3Rpb24gV2UodCl7bGV0IHI9ITE7aWYoaXQodCkpcj0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYobHQodCkpcmV0dXJuITE7cj0hMH1yZXR1cm4gcn1mdW5jdGlvbiBxZSh0KXtpZighKGl0KHQpfHxXZSh0KXx8Yih0KXx8ZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgQmlnSW50XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpKSlyZXR1cm4iIjtsZXQgcj0iIjt0cnl7cj1TdHJpbmcodCl9Y2F0Y2godCl7fXRyeXtyPXQudG9TdHJpbmcoKX1jYXRjaCh0KXt9cmV0dXJuIHJ9dmFyIEdlPU1hdGguY2VpbCxIZT1NYXRoLm1heDt2YXIgSmU9L1xzLzt2YXIgUWU9L15ccysvO2Z1bmN0aW9uIFhlKHQpe3JldHVybiB0P3Quc2xpY2UoMCxmdW5jdGlvbih0KXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZKZS50ZXN0KHQuY2hhckF0KHIpKTspO3JldHVybiByfSh0KSsxKS5yZXBsYWNlKFFlLCIiKTp0fXZhciBZZT0vXlstK10weFswLTlhLWZdKyQvaSxaZT0vXjBiWzAxXSskL2ksdG49L14wb1swLTddKyQvaSxybj1wYXJzZUludDt2YXIgZW49MS8wO2Z1bmN0aW9uIG5uKHQpe3JldHVybiB0Pyh0PWZ1bmN0aW9uKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZihiKHQpKXJldHVybiBOYU47aWYoZCh0KSl7dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQudmFsdWVPZj90LnZhbHVlT2YoKTp0O3Q9ZChyKT9yKyIiOnJ9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9WGUodCk7dmFyIGU9WmUudGVzdCh0KTtyZXR1cm4gZXx8dG4udGVzdCh0KT9ybih0LnNsaWNlKDIpLGU/Mjo4KTpZZS50ZXN0KHQpP05hTjordH0odCkpPT09ZW58fHQ9PT0tMS8wPzE3OTc2OTMxMzQ4NjIzMTU3ZTI5MioodDwwPy0xOjEpOnQ9PXQ/dDowOjA9PT10P3Q6MH12YXIgb249ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHIsZSxuKXtyZXR1cm4gbiYmIm51bWJlciIhPXR5cGVvZiBuJiZmdW5jdGlvbih0LHIsZSl7aWYoIWQoZSkpcmV0dXJuITE7dmFyIG49dHlwZW9mIHI7cmV0dXJuISEoIm51bWJlciI9PW4/dXIoZSkmJlJ0KHIsZS5sZW5ndGgpOiJzdHJpbmciPT1uJiZyIGluIGUpJiZNKGVbcl0sdCl9KHIsZSxuKSYmKGU9bj12b2lkIDApLHI9bm4ociksdm9pZCAwPT09ZT8oZT1yLHI9MCk6ZT1ubihlKSxmdW5jdGlvbih0LHIsZSxuKXtmb3IodmFyIG89LTEsdT1IZShHZSgoci10KS8oZXx8MSkpLDApLGk9QXJyYXkodSk7dS0tOylpW24/dTorK29dPXQsdCs9ZTtyZXR1cm4gaX0ocixlLG49dm9pZCAwPT09bj9yPGU/MTotMTpubihuKSx0KX19KCksdW49b247ZnVuY3Rpb24gY24odCxyPW51bGwsZT17fSl7aihyKXx8KHI9dD0+dCk7bGV0IG49b3QoZSwiZm9yY2UiLCExKTtyZXR1cm4gYnQobil8fChuPSExKSxmdW5jdGlvbih0LHIsZT0hMSl7bGV0IG49W107aWYoIWZ0KHQpJiYhY3QodCkpcmV0dXJuIHIodCxudWxsLFtdKTtmdW5jdGlvbiBvKHQpe2lmKGZ0KHQpKXJldHVybiB1bihjZSh0KSk7aWYoY3QodCkpe2xldCByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLG49bnVsbDtyZXR1cm4gZSYmKG49T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KSksZnQocil8fChyPVtdKSxmdChuKXx8KG49W10pLFsuLi5yLC4uLm5dfXJldHVybiB0fXJldHVybiBmdW5jdGlvbiB0KGUsdSl7aWYoZnQoZSkpcmV0dXJuIG8oZSkubWFwKG89PntsZXQgdT1lW29dLGk9S2Uobik7cmV0dXJuIG4ucHVzaChvKSx1PXIodSxvLGkpLHU9dCh1KSxuLnBvcCgpLHV9KTtpZihjdChlKSl7bGV0IHU9byhlKSxpPXt9O3JldHVybiB1Lm1hcChvPT57bGV0IHU9ZVtvXSxjPUtlKG4pO24ucHVzaChvKSx1PXIodSxvLGMpLHU9dCh1KSxuLnBvcCgpLGlbb109dX0pLGl9cmV0dXJuIGV9KHQpfSh0LHIsbil9ZnVuY3Rpb24gYW4ocixlPXt9KXtpZighYXQocikmJiFwdChyKSlyZXR1cm5bXTtsZXQgbj1vdChlLCJiaW5kS2V5IixudWxsKTtpdChuKXx8KG49ImlkIik7bGV0IG89b3QoZSwiYmluZFBhcmVudCIsbnVsbCk7aXQobyl8fChvPSJwYXJlbnRJZCIpO2xldCB1PW90KGUsImJpbmRCZWxvbmciLG51bGwpO2l0KHUpfHwodT0ia2V5Iik7bGV0IGk9b3QoZSwiYmluZFRleHQiLG51bGwpO2l0KGkpfHwoaT0idGV4dCIpO2xldCBjPW90KGUsImJpbmRUeXBlIixudWxsKTtpdChjKXx8KGM9InR5cGUiKTtsZXQgYT1vdChlLCJiaW5kTnVtT2ZDaGlscmVuIixudWxsKTtmdW5jdGlvbiBmKHIsZSl7dmFyIG4sbzt2YXIgdSxpO3JldHVybiByPUtlKHIpLG89dD0+Yih0KT9xZSh0KTp0LHI9KHQobj1yKT9YOktyKShuLEJyKG8pKSxiKGUpJiYoZT1xZShlKSksKGl0KGUpfHxXZShlKSkmJnIucHVzaChlKSxpPSItIixudWxsPT0odT1yKT8iIjpXci5jYWxsKHUsaSl9aXQoYSl8fChhPSJudW1PZkNoaWxyZW4iKTtsZXQgbD1bXTtyZXR1cm4gY24ociwodCxyLGUpPT57bGV0IGI9ZihlLHIpLHY9ZihlLG51bGwpLHk9Im5vZGUiO2N0KHQpP3k9Im9iamVjdCI6ZnQodCkmJih5PSJhcnJheSIpO2xldCBoPXtbbl06Yixbb106dixbY106eX07aWYoKGl0KHIpfHxmdW5jdGlvbih0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHR8fHAodCkmJiJbb2JqZWN0IE51bWJlcl0iPT1zKHQpfShyKSkmJihoW3VdPXIpLGN0KHQpfHxmdCh0KXx8KGhbaV09dCksY3QodCl8fGZ0KHQpKXtsZXQgcj1udWxsO2N0KHQpP3I9Y2UoaXIodCkpOmZ0KHQpJiYocj1jZSh0KSksaFthXT1yfXJldHVybiBsLnB1c2goaCksdH0se2ZvcmNlOiEwfSksbH1mdW5jdGlvbiBmbihyLGUpe3ZhciBuO3JldHVybih0KHIpP2FlOlZyKShyLCJmdW5jdGlvbiI9PXR5cGVvZihuPWUpP246TXIpfWZ1bmN0aW9uIGxuKHQscixlKXtyZXR1cm4gbnVsbD09dD90OmZ1bmN0aW9uKHQscixlLG4pe2lmKCFkKHQpKXJldHVybiB0O2Zvcih2YXIgbz0tMSx1PShyPXJ0KHIsdCkpLmxlbmd0aCxpPXUtMSxjPXQ7bnVsbCE9YyYmKytvPHU7KXt2YXIgYT1ldChyW29dKSxmPWU7aWYoIl9fcHJvdG9fXyI9PT1hfHwiY29uc3RydWN0b3IiPT09YXx8InByb3RvdHlwZSI9PT1hKXJldHVybiB0O2lmKG8hPWkpe3ZhciBsPWNbYV07dm9pZCAwPT09KGY9bj9uKGwsYSxjKTp2b2lkIDApJiYoZj1kKGwpP2w6UnQocltvKzFdKT9bXTp7fSl9YmUoYyxhLGYpLGM9Y1thXX1yZXR1cm4gdH0odCxyLGUpfWZ1bmN0aW9uIHNuKHQscil7cmV0dXJuIHIubGVuZ3RoPDI/dDpudCh0LGZ1bmN0aW9uKHQscixlKXt2YXIgbj0tMSxvPXQubGVuZ3RoO3I8MCYmKHI9LXI+bz8wOm8rciksKGU9ZT5vP286ZSk8MCYmKGUrPW8pLG89cj5lPzA6ZS1yPj4+MCxyPj4+PTA7Zm9yKHZhciB1PUFycmF5KG8pOysrbjxvOyl1W25dPXRbbityXTtyZXR1cm4gdX0ociwwLC0xKSl9dmFyIHBuPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gYm4odCxyKXt2YXIgZT0tMSxuPShyPXJ0KHIsdCkpLmxlbmd0aDtpZighbilyZXR1cm4hMDtmb3IoOysrZTxuOyl7dmFyIG89ZXQocltlXSk7aWYoIl9fcHJvdG9fXyI9PT1vJiYhcG4uY2FsbCh0LCJfX3Byb3RvX18iKSlyZXR1cm4hMTtpZigoImNvbnN0cnVjdG9yIj09PW98fCJwcm90b3R5cGUiPT09bykmJmU8bi0xKXJldHVybiExfXZhciB1PXNuKHQscik7cmV0dXJuIG51bGw9PXV8fGRlbGV0ZSB1W2V0KGZ1bmN0aW9uKHQpe3ZhciByPW51bGw9PXQ/MDp0Lmxlbmd0aDtyZXR1cm4gcj90W3ItMV06dm9pZCAwfShyKSldfXZhciB2bj1GdW5jdGlvbi5wcm90b3R5cGUseW49T2JqZWN0LnByb3RvdHlwZSxobj12bi50b1N0cmluZyxkbj15bi5oYXNPd25Qcm9wZXJ0eSxqbj1obi5jYWxsKE9iamVjdCk7ZnVuY3Rpb24gZ24odCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKCFwKHQpfHwiW29iamVjdCBPYmplY3RdIiE9cyh0KSlyZXR1cm4hMTt2YXIgcj13ZSh0KTtpZihudWxsPT09cilyZXR1cm4hMDt2YXIgZT1kbi5jYWxsKHIsImNvbnN0cnVjdG9yIikmJnIuY29uc3RydWN0b3I7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUgaW5zdGFuY2VvZiBlJiZobi5jYWxsKGUpPT1qbn0odCk/dm9pZCAwOnR9dmFyIF9uPW8/by5pc0NvbmNhdFNwcmVhZGFibGU6dm9pZCAwO2Z1bmN0aW9uIE9uKHIpe3JldHVybiB0KHIpfHxGdChyKXx8ISEoX24mJnImJnJbX25dKX1mdW5jdGlvbiB3bih0LHIsZSxuLG8pe3ZhciB1PS0xLGk9dC5sZW5ndGg7Zm9yKGV8fChlPU9uKSxvfHwobz1bXSk7Kyt1PGk7KXt2YXIgYz10W3VdO3I+MCYmZShjKT9yPjE/d24oYyxyLTEsZSxuLG8pOkF0KG8sYyk6bnx8KG9bby5sZW5ndGhdPWMpfXJldHVybiBvfWZ1bmN0aW9uIG1uKHQpe3JldHVybihudWxsPT10PzA6dC5sZW5ndGgpP3duKHQsMSk6W119dmFyIEFuPU1hdGgubWF4O3ZhciB4bj1sZT9mdW5jdGlvbih0LHIpe3JldHVybiBsZSh0LCJ0b1N0cmluZyIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHZhbHVlOihlPXIsZnVuY3Rpb24oKXtyZXR1cm4gZX0pLHdyaXRhYmxlOiEwfSk7dmFyIGV9Ok1yLFNuPXhuLFBuPURhdGUubm93O3ZhciB6bj1mdW5jdGlvbih0KXt2YXIgcj0wLGU9MDtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1QbigpLG89MTYtKG4tZSk7aWYoZT1uLG8+MCl7aWYoKytyPj04MDApcmV0dXJuIGFyZ3VtZW50c1swXX1lbHNlIHI9MDtyZXR1cm4gdC5hcHBseSh2b2lkIDAsYXJndW1lbnRzKX19KFNuKSxFbj16bjt2YXIgSW49ZnVuY3Rpb24odCl7cmV0dXJuIEVuKGZ1bmN0aW9uKHQscixlKXtyZXR1cm4gcj1Bbih2b2lkIDA9PT1yP3QubGVuZ3RoLTE6ciwwKSxmdW5jdGlvbigpe2Zvcih2YXIgbj1hcmd1bWVudHMsbz0tMSx1PUFuKG4ubGVuZ3RoLXIsMCksaT1BcnJheSh1KTsrK288dTspaVtvXT1uW3Irb107bz0tMTtmb3IodmFyIGM9QXJyYXkocisxKTsrK288cjspY1tvXT1uW29dO3JldHVybiBjW3JdPWUoaSksZnVuY3Rpb24odCxyLGUpe3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnJldHVybiB0LmNhbGwocik7Y2FzZSAxOnJldHVybiB0LmNhbGwocixlWzBdKTtjYXNlIDI6cmV0dXJuIHQuY2FsbChyLGVbMF0sZVsxXSk7Y2FzZSAzOnJldHVybiB0LmNhbGwocixlWzBdLGVbMV0sZVsyXSl9cmV0dXJuIHQuYXBwbHkocixlKX0odCx0aGlzLGMpfX0odCx2b2lkIDAsbW4pLHQrIiIpfShmdW5jdGlvbih0LHIpe3ZhciBlPXt9O2lmKG51bGw9PXQpcmV0dXJuIGU7dmFyIG49ITE7cj1YKHIsZnVuY3Rpb24ocil7cmV0dXJuIHI9cnQocix0KSxufHwobj1yLmxlbmd0aD4xKSxyfSksdmUodCx4ZSh0KSxlKSxuJiYoZT1WZShlLDcsZ24pKTtmb3IodmFyIG89ci5sZW5ndGg7by0tOylibihlLHJbb10pO3JldHVybiBlfSksTm49SW47ZnVuY3Rpb24gVG4odCxyPXt9KXtsZXQgZT0iJGxldmVsIixuPSIkcGFyZW50cyI7aWYoIXB0KHQpKXJldHVybltdO2xldCBvPW90KHIsImJpbmRLZXkiLG51bGwpO2l0KG8pfHwobz0iaWQiKTtsZXQgdT1vdChyLCJiaW5kUGFyZW50IixudWxsKTtpdCh1KXx8KHU9InBhcmVudElkIik7bGV0IGk9b3QociwiYmluZENoaWxkcmVuIixudWxsKTtpdChpKXx8KGk9ImNoaWxkcmVuIik7bGV0IGM9b3Qociwic2F2ZUV4dFByb3BzIixudWxsKTtidChjKXx8KGM9ITEpLHQ9ZnVuY3Rpb24odCl7bGV0IHI9W107ZnVuY3Rpb24gaShpKXtsZXQgYz1bXTtmbih0LCh0LGEpPT57bGV0IGY9b3QodCx1KSxsPW90KGksbyk7aWYoZiYmbCYmZj09PWwpe2xldCB1PW90KGksbixbXSk7dT1LZSh1KSx1LnB1c2goaVtvXSksci5wdXNoKHtbZV06aVtlXSsxLFtuXTp1LC4uLnR9KX1lbHNlIGMucHVzaCh0KX0pLHQ9Y31pZih0PUtlKHQpLGZ1bmN0aW9uKCl7bGV0IG89W107Zm4odCwodCxpKT0+e3N0KHRbdV0pP3IucHVzaCh7W2VdOjAsW25dOltdLC4uLnR9KTpvLnB1c2godCl9KSx0PW99KCksMD09PXIubGVuZ3RoKXJldHVybiByO2xldCBjPS0xO2Zvcig7Yys9MSwhKGM+ci5sZW5ndGgtMSk7KXtpZihpKHJbY10pLDA9PT10Lmxlbmd0aClicmVha31yZXR1cm4gcn0odCk7bGV0IGE9ZnVuY3Rpb24odCl7bGV0IHI9W107ZnVuY3Rpb24gYSh0KXtyZXR1cm4gYz90Ok5uKHQsW2Usbl0pfWxldCBmPXt9O3JldHVybiBmbih0LChuLGMpPT57aWYoMD09PW5bZV0pe2xldCB0PWEobik7ci5wdXNoKHQpLGZbbltvXV09W2NdfWVsc2V7bGV0IGU9ZnVuY3Rpb24ocil7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2xldCBuPXRbZV07aWYoclt1XT09PW5bb10pcmV0dXJuIG59cmV0dXJuIG51bGx9KG4pO2lmKG51bGwhPT1lKXtsZXQgdD1mW2Vbb11dO3Q9Wy4uLnQsaV07bGV0IHU9b3Qocix0LFtdKSxjPWEobik7dS5wdXNoKGMpLGZbbltvXV09Wy4uLnQsdS5sZW5ndGgtMV0sbG4ocix0LHUpfWVsc2UgY29uc29sZS5sb2coYGNhbiBub3QgZmluZCBwYXJlbnQgZm9yICR7b3Qobix1KX1gKX19KSxyfSh0KTtyZXR1cm4gYX1sZXQgY29udmVydFRvVHJlZVdrPWFzeW5jIGZ1bmN0aW9uKHQscj17fSl7cmV0dXJuIGZ1bmN0aW9uKHQscj17fSl7aWYoIWF0KHQpJiYhcHQodCkpcmV0dXJuW107bGV0IGU9b3QociwiYmluZEtleSIsbnVsbCk7aXQoZSl8fChlPSJpZCIpO2xldCBuPW90KHIsImJpbmRQYXJlbnQiLG51bGwpO2l0KG4pfHwobj0icGFyZW50SWQiKTtsZXQgbz1vdChyLCJiaW5kVGV4dCIsbnVsbCk7aXQobyl8fChvPSJ0ZXh0Iik7bGV0IHU9b3QociwiYmluZENoaWxkcmVuIixudWxsKTtpdCh1KXx8KHU9ImNoaWxkcmVuIik7bGV0IGk9b3QociwiYmluZFR5cGUiLG51bGwpO2l0KGkpfHwoaT0idHlwZSIpO2xldCBjPW90KHIsImJpbmROdW1PZkNoaWxyZW4iLG51bGwpO2l0KGMpfHwoYz0ibnVtT2ZDaGlscmVuIik7bGV0IGE9b3QociwiYmluZFJvb3QiLG51bGwpO2l0KGEpfHwoYT0icm9vdCIpO2xldCBmPW90KHIsInNhdmVFeHRQcm9wcyIsbnVsbCk7cmV0dXJuIGJ0KGYpfHwoZj0hMSksaXQoYSkmJih0PXtbYV06dH0pLFRuKGFuKHQse2JpbmRLZXk6ZSxiaW5kUGFyZW50Om4sYmluZFRleHQ6byxiaW5kVHlwZTppLGJpbmROdW1PZkNoaWxyZW46Y30pLHtiaW5kS2V5OmUsYmluZFBhcmVudDpuLGJpbmRDaGlsZHJlbjp1LHNhdmVFeHRQcm9wczpmfSl9KHQscil9OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogY29udmVydFRvVHJlZVdrCiAgICAgICAgfQogICAgICAgIAoKICAgIC8vb24KICAgIAoKICAgIC8vc2F2ZQogICAgaW5zdGFuY2UgPSByCgp9CgpmdW5jdGlvbiBzZW5kTWVzc2FnZShkYXRhKSB7CiAgICAKICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKGRhdGEpCiAgICAgICAgCn0KCmFzeW5jIGZ1bmN0aW9uIHJ1bihkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJ1bicsZGF0YSkKCiAgICAvL21vZGUKICAgIGxldCBtb2RlID0gZGF0YS5tb2RlCgogICAgLy9jaGVjawogICAgaWYobW9kZSAhPT0gJ2luaXQnICYmIG1vZGUgIT09ICdjYWxsJyl7CiAgICAgICAgcmV0dXJuCiAgICB9CgogICAgLy9pbml0CiAgICBpZihtb2RlID09PSAnaW5pdCcpewogICAgICAgIAogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vdHlwZQogICAgICAgICAgICBsZXQgdHlwZSA9IGRhdGEudHlwZQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CiAgICAKICAgICAgICAgICAgLy9pbnN0YW5jZQogICAgICAgICAgICBpZih0eXBlID09PSAnZnVuY3Rpb24nKXsKICAgICAgICAgICAgICAgIGluaXQoLi4uaW5wdXQpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZih0eXBlID09PSAnb2JqZWN0Jyl7CiAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IGNvbnZlcnRUb1RyZWVXawogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgc2VsZi5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICByZWN2TWVzc2FnZShlLmRhdGEpCiAgICAgICAgfQogICAgICAgIAoKdHJ5ewogICAgcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgZXJyKQogICAgfSkKfQpjYXRjaChlcnIpe30KCg==");function l(){let l=new u;let I=function(d){try{let l=new Blob([d]),I=window.URL||window.webkitURL;return new Worker(I.createObjectURL(l))}catch(d){b(d)}}(d);if(!I)return b("invalid worker"),null;function m(){let d=function(){let d,l,I=new Promise(function(){d=arguments[0],l=arguments[1]});return I.resolve=d,I.reject=l,I}(),m=function(d=10){let l=[],I="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),m=I.length;for(let b=0;b<d;b++)l[b]=I[0|Math.random()*m];return l.join("")}(),b={mode:"call",id:m,fun:"main",input:[...arguments]};return I.postMessage(b),l.once(m,l=>{"success"===l.state?d.resolve(l.msg):d.reject(l.msg)}),d}function b(d){l.emit("error",d)}return I.onmessage=function(d){!function(d){let I=d,m=I.mode;"emit"!==m&&"return"!==m||("emit"===m&&l.emit(I.evName,I.msg),"return"===m&&l.emit(I.id,I))}(d.data)},I.onerror=b,I.onmessageerror=function(d){b(d.data)},function(){let d={mode:"init",type:"function",input:[...arguments]};I.postMessage(d)}([...arguments]),l.main=m,l.main=m,l.terminate=function(){I?(I.terminate(),I=void 0):b("worker has been terminated")},l}H=async function(){let d=[...arguments],I=l();return await I.main(...d).finally(()=>{I.terminate()})}}();try{process.on("unhandledRejection",d=>{console.log("outer:unhandledRejection",d)}),process.on("uncaughtException",d=>{console.log("outer:uncaughtException",d)}),process.on("uncaughtExceptionMonitor",d=>{console.log("outer:uncaughtExceptionMonitor",d)})}catch(d){}var g=H;export{g as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const d="function"==typeof Buffer,l="function"==typeof TextDecoder?new TextDecoder:void 0,I=("function"==typeof TextEncoder&&new TextEncoder,Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=")),Z=(()=>{let d={};return I.forEach((l,I)=>d[l]=I),d})(),m=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,b=String.fromCharCode.bind(String),c="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):d=>new Uint8Array(Array.prototype.slice.call(d,0)),i=d=>d.replace(/[^A-Za-z0-9\+\/]/g,""),X=d=>{let l,Z,m,b,c="";const i=d.length%3;for(let i=0;i<d.length;){if((Z=d.charCodeAt(i++))>255||(m=d.charCodeAt(i++))>255||(b=d.charCodeAt(i++))>255)throw new TypeError("invalid character found");l=Z<<16|m<<8|b,c+=I[l>>18&63]+I[l>>12&63]+I[l>>6&63]+I[63&l]}return i?c.slice(0,i-3)+"===".substring(i):c},C=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,g=d=>{switch(d.length){case 4:var l=((7&d.charCodeAt(0))<<18|(63&d.charCodeAt(1))<<12|(63&d.charCodeAt(2))<<6|63&d.charCodeAt(3))-65536;return b((l>>>10)+55296)+b(56320+(1023&l));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))}},t=d=>d.replace(C,g),n=d=>{if(d=d.replace(/\s+/g,""),!m.test(d))throw new TypeError("malformed base64.");let l,I,c;d+="==".slice(2-(3&d.length));let i=[];for(let m=0;m<d.length;)l=Z[d.charAt(m++)]<<18|Z[d.charAt(m++)]<<12|(I=Z[d.charAt(m++)])<<6|(c=Z[d.charAt(m++)]),64===I?i.push(b(l>>16&255)):64===c?i.push(b(l>>16&255,l>>8&255)):i.push(b(l>>16&255,l>>8&255,255&l));return i.join("")},y="function"==typeof atob?d=>atob(i(d)):d?d=>Buffer.from(d,"base64").toString("binary"):n,p=d?d=>c(Buffer.from(d,"base64")):d=>c(y(d).split("").map(d=>d.charCodeAt(0))),G=d?d=>Buffer.from(d,"base64").toString("utf8"):l?d=>l.decode(p(d)):d=>t(y(d)),W=d=>i(d.replace(/[-_]/g,d=>"-"==d?"+":"/")),o=d=>G(W(d)),u=o;function V(d){return d&&d.__esModule&&Object.prototype.hasOwnProperty.call(d,"default")?d.default:d}var J={exports:{}};!function(d){var l=Object.prototype.hasOwnProperty,I="~";function Z(){}function m(d,l,I){this.fn=d,this.context=l,this.once=I||!1}function b(d,l,Z,b,c){if("function"!=typeof Z)throw new TypeError("The listener must be a function");var i=new m(Z,b||d,c),X=I?I+l:l;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,l){0===--d._eventsCount?d._events=new Z:delete d._events[l]}function i(){this._events=new Z,this._eventsCount=0}Object.create&&(Z.prototype=Object.create(null),(new Z).__proto__||(I=!1)),i.prototype.eventNames=function(){var d,Z,m=[];if(0===this._eventsCount)return m;for(Z in d=this._events)l.call(d,Z)&&m.push(I?Z.slice(1):Z);return Object.getOwnPropertySymbols?m.concat(Object.getOwnPropertySymbols(d)):m},i.prototype.listeners=function(d){var l=I?I+d:d,Z=this._events[l];if(!Z)return[];if(Z.fn)return[Z.fn];for(var m=0,b=Z.length,c=new Array(b);m<b;m++)c[m]=Z[m].fn;return c},i.prototype.listenerCount=function(d){var l=I?I+d:d,Z=this._events[l];return Z?Z.fn?1:Z.length:0},i.prototype.emit=function(d,l,Z,m,b,c){var i=I?I+d:d;if(!this._events[i])return!1;var X,C,g=this._events[i],t=arguments.length;if(g.fn){switch(g.once&&this.removeListener(d,g.fn,void 0,!0),t){case 1:return g.fn.call(g.context),!0;case 2:return g.fn.call(g.context,l),!0;case 3:return g.fn.call(g.context,l,Z),!0;case 4:return g.fn.call(g.context,l,Z,m),!0;case 5:return g.fn.call(g.context,l,Z,m,b),!0;case 6:return g.fn.call(g.context,l,Z,m,b,c),!0}for(C=1,X=new Array(t-1);C<t;C++)X[C-1]=arguments[C];g.fn.apply(g.context,X)}else{var n,y=g.length;for(C=0;C<y;C++)switch(g[C].once&&this.removeListener(d,g[C].fn,void 0,!0),t){case 1:g[C].fn.call(g[C].context);break;case 2:g[C].fn.call(g[C].context,l);break;case 3:g[C].fn.call(g[C].context,l,Z);break;case 4:g[C].fn.call(g[C].context,l,Z,m);break;default:if(!X)for(n=1,X=new Array(t-1);n<t;n++)X[n-1]=arguments[n];g[C].fn.apply(g[C].context,X)}}return!0},i.prototype.on=function(d,l,I){return b(this,d,l,I,!1)},i.prototype.once=function(d,l,I){return b(this,d,l,I,!0)},i.prototype.removeListener=function(d,l,Z,m){var b=I?I+d:d;if(!this._events[b])return this;if(!l)return c(this,b),this;var i=this._events[b];if(i.fn)i.fn!==l||m&&!i.once||Z&&i.context!==Z||c(this,b);else{for(var X=0,C=[],g=i.length;X<g;X++)(i[X].fn!==l||m&&!i[X].once||Z&&i[X].context!==Z)&&C.push(i[X]);C.length?this._events[b]=1===C.length?C[0]:C:c(this,b)}return this},i.prototype.removeAllListeners=function(d){var l;return d?(l=I?I+d:d,this._events[l]&&c(this,l)):(this._events=new Z,this._eventsCount=0),this},i.prototype.off=i.prototype.removeListener,i.prototype.addListener=i.prototype.on,i.prefixed=I,i.EventEmitter=i,d.exports=i}(J);var e=V(J.exports);let h;!function(){if("browser"!==("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let d=u("CgoKInVzZSBzdHJpY3QiO3ZhciB0PUFycmF5LmlzQXJyYXksZT0ib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWwscj0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLG49ZXx8cnx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxvPW4uU3ltYm9sLHU9T2JqZWN0LnByb3RvdHlwZSxjPXUuaGFzT3duUHJvcGVydHksaT11LnRvU3RyaW5nLGE9bz9vLnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgZj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO3ZhciBsPW8/by50b1N0cmluZ1RhZzp2b2lkIDA7ZnVuY3Rpb24gcyh0KXtyZXR1cm4gbnVsbD09dD92b2lkIDA9PT10PyJbb2JqZWN0IFVuZGVmaW5lZF0iOiJbb2JqZWN0IE51bGxdIjpsJiZsIGluIE9iamVjdCh0KT9mdW5jdGlvbih0KXt2YXIgZT1jLmNhbGwodCxhKSxyPXRbYV07dHJ5e3RbYV09dm9pZCAwO3ZhciBuPSEwfWNhdGNoKHQpe312YXIgbz1pLmNhbGwodCk7cmV0dXJuIG4mJihlP3RbYV09cjpkZWxldGUgdFthXSksb30odCk6ZnVuY3Rpb24odCl7cmV0dXJuIGYuY2FsbCh0KX0odCl9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fWZ1bmN0aW9uIGIodCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxwKHQpJiYiW29iamVjdCBTeW1ib2xdIj09cyh0KX12YXIgeT0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyx2PS9eXHcqJC87ZnVuY3Rpb24gaCh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1lfHwiZnVuY3Rpb24iPT1lKX1mdW5jdGlvbiBqKHQpe2lmKCFoKHQpKXJldHVybiExO3ZhciBlPXModCk7cmV0dXJuIltvYmplY3QgRnVuY3Rpb25dIj09ZXx8IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIj09ZXx8IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iPT1lfHwiW29iamVjdCBQcm94eV0iPT1lfXZhciBkLF89blsiX19jb3JlLWpzX3NoYXJlZF9fIl0sZz0oZD0vW14uXSskLy5leGVjKF8mJl8ua2V5cyYmXy5rZXlzLklFX1BST1RPfHwiIikpPyJTeW1ib2woc3JjKV8xLiIrZDoiIjt2YXIgTz1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gbSh0KXtpZihudWxsIT10KXt0cnl7cmV0dXJuIE8uY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIHc9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sQT1GdW5jdGlvbi5wcm90b3R5cGUseD1PYmplY3QucHJvdG90eXBlLFM9QS50b1N0cmluZyx6PXguaGFzT3duUHJvcGVydHksUD1SZWdFeHAoIl4iK1MuY2FsbCh6KS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTtmdW5jdGlvbiBJKHQpe3JldHVybiEoIWgodCl8fChlPXQsZyYmZyBpbiBlKSkmJihqKHQpP1A6dykudGVzdChtKHQpKTt2YXIgZX1mdW5jdGlvbiBFKHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gSShyKT9yOnZvaWQgMH12YXIgRj1FKE9iamVjdCwiY3JlYXRlIik7dmFyIFU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgTT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uICQodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gQih0LGUpe3JldHVybiB0PT09ZXx8dCE9dCYmZSE9ZX1mdW5jdGlvbiBUKHQsZSl7Zm9yKHZhciByPXQubGVuZ3RoO3ItLTspaWYoQih0W3JdWzBdLGUpKXJldHVybiByO3JldHVybi0xfSQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1GP0YobnVsbCk6e30sdGhpcy5zaXplPTB9LCQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmhhcyh0KSYmZGVsZXRlIHRoaXMuX19kYXRhX19bdF07cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sJC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoRil7dmFyIHI9ZVt0XTtyZXR1cm4iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI9PT1yP3ZvaWQgMDpyfXJldHVybiBVLmNhbGwoZSx0KT9lW3RdOnZvaWQgMH0sJC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIEY/dm9pZCAwIT09ZVt0XTpNLmNhbGwoZSx0KX0sJC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1GJiZ2b2lkIDA9PT1lPyJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjplLHRoaXN9O3ZhciBOPUFycmF5LnByb3RvdHlwZS5zcGxpY2U7ZnVuY3Rpb24gayh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1rLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LGsucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9VChlLHQpO3JldHVybiEocjwwKSYmKHI9PWUubGVuZ3RoLTE/ZS5wb3AoKTpOLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0say5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1UKGUsdCk7cmV0dXJuIHI8MD92b2lkIDA6ZVtyXVsxXX0say5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBUKHRoaXMuX19kYXRhX18sdCk+LTF9LGsucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX19kYXRhX18sbj1UKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBDPUUobiwiTWFwIik7ZnVuY3Rpb24gRCh0LGUpe3ZhciByLG4sbz10Ll9fZGF0YV9fO3JldHVybigic3RyaW5nIj09KG49dHlwZW9mKHI9ZSkpfHwibnVtYmVyIj09bnx8InN5bWJvbCI9PW58fCJib29sZWFuIj09bj8iX19wcm90b19fIiE9PXI6bnVsbD09PXIpP29bInN0cmluZyI9PXR5cGVvZiBlPyJzdHJpbmciOiJoYXNoIl06by5tYXB9ZnVuY3Rpb24gUih0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1SLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2l6ZT0wLHRoaXMuX19kYXRhX189e2hhc2g6bmV3ICQsbWFwOm5ldyhDfHxrKSxzdHJpbmc6bmV3ICR9fSxSLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9RCh0aGlzLHQpLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxSLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIEQodGhpcyx0KS5nZXQodCl9LFIucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gRCh0aGlzLHQpLmhhcyh0KX0sUi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9RCh0aGlzLHQpLG49ci5zaXplO3JldHVybiByLnNldCh0LGUpLHRoaXMuc2l6ZSs9ci5zaXplPT1uPzA6MSx0aGlzfTtmdW5jdGlvbiBWKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHR8fG51bGwhPWUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkV4cGVjdGVkIGEgZnVuY3Rpb24iKTt2YXIgcj1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxvPWU/ZS5hcHBseSh0aGlzLG4pOm5bMF0sdT1yLmNhY2hlO2lmKHUuaGFzKG8pKXJldHVybiB1LmdldChvKTt2YXIgYz10LmFwcGx5KHRoaXMsbik7cmV0dXJuIHIuY2FjaGU9dS5zZXQobyxjKXx8dSxjfTtyZXR1cm4gci5jYWNoZT1uZXcoVi5DYWNoZXx8Uikscn1WLkNhY2hlPVI7dmFyIFcsTCxxLEc9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csSz0vXFwoXFwpPy9nLEg9KFc9ZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZlLnB1c2goIiIpLHQucmVwbGFjZShHLGZ1bmN0aW9uKHQscixuLG8pe2UucHVzaChuP28ucmVwbGFjZShLLCIkMSIpOnJ8fHQpfSksZX0sTD1WKFcsZnVuY3Rpb24odCl7cmV0dXJuIDUwMD09PXEuc2l6ZSYmcS5jbGVhcigpLHR9KSxxPUwuY2FjaGUsTCksSj1IO3ZhciBRPW8/by5wcm90b3R5cGU6dm9pZCAwLFg9UT9RLnRvU3RyaW5nOnZvaWQgMDtmdW5jdGlvbiBZKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gZTtpZih0KGUpKXJldHVybiBmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPUFycmF5KG4pOysrcjxuOylvW3JdPWUodFtyXSxyLHQpO3JldHVybiBvfShlLFkpKyIiO2lmKGIoZSkpcmV0dXJuIFg/WC5jYWxsKGUpOiIiO3ZhciByPWUrIiI7cmV0dXJuIjAiPT1yJiYxL2U9PS0xLzA/Ii0wIjpyfWZ1bmN0aW9uIFooZSxyKXtyZXR1cm4gdChlKT9lOmZ1bmN0aW9uKGUscil7aWYodChlKSlyZXR1cm4hMTt2YXIgbj10eXBlb2YgZTtyZXR1cm4hKCJudW1iZXIiIT1uJiYic3ltYm9sIiE9biYmImJvb2xlYW4iIT1uJiZudWxsIT1lJiYhYihlKSl8fHYudGVzdChlKXx8IXkudGVzdChlKXx8bnVsbCE9ciYmZSBpbiBPYmplY3Qocil9KGUscik/W2VdOkooZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/IiI6WSh0KX0oZSkpfWZ1bmN0aW9uIHR0KHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdHx8Yih0KSlyZXR1cm4gdDt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0tMS8wPyItMCI6ZX1mdW5jdGlvbiBldCh0LGUscil7dmFyIG49bnVsbD09dD92b2lkIDA6ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MCxuPShlPVooZSx0KSkubGVuZ3RoO251bGwhPXQmJnI8bjspdD10W3R0KGVbcisrXSldO3JldHVybiByJiZyPT1uP3Q6dm9pZCAwfSh0LGUpO3JldHVybiB2b2lkIDA9PT1uP3I6bn12YXIgcnQ9T2JqZWN0LnByb3RvdHlwZTtmdW5jdGlvbiBudCh0KXt2YXIgZT10JiZ0LmNvbnN0cnVjdG9yO3JldHVybiB0PT09KCJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLnByb3RvdHlwZXx8cnQpfWZ1bmN0aW9uIG90KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiB0KGUocikpfX12YXIgdXQ9b3QoT2JqZWN0LmtleXMsT2JqZWN0KSxjdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIGl0KHQpe2lmKCFudCh0KSlyZXR1cm4gdXQodCk7dmFyIGU9W107Zm9yKHZhciByIGluIE9iamVjdCh0KSljdC5jYWxsKHQscikmJiJjb25zdHJ1Y3RvciIhPXImJmUucHVzaChyKTtyZXR1cm4gZX12YXIgYXQ9RShuLCJEYXRhVmlldyIpLGZ0PUUobiwiUHJvbWlzZSIpLGx0PUUobiwiU2V0Iiksc3Q9RShuLCJXZWFrTWFwIikscHQ9IltvYmplY3QgTWFwXSIsYnQ9IltvYmplY3QgUHJvbWlzZV0iLHl0PSJbb2JqZWN0IFNldF0iLHZ0PSJbb2JqZWN0IFdlYWtNYXBdIixodD0iW29iamVjdCBEYXRhVmlld10iLGp0PW0oYXQpLGR0PW0oQyksX3Q9bShmdCksZ3Q9bShsdCksT3Q9bShzdCksbXQ9czsoYXQmJm10KG5ldyBhdChuZXcgQXJyYXlCdWZmZXIoMSkpKSE9aHR8fEMmJm10KG5ldyBDKSE9cHR8fGZ0JiZtdChmdC5yZXNvbHZlKCkpIT1idHx8bHQmJm10KG5ldyBsdCkhPXl0fHxzdCYmbXQobmV3IHN0KSE9dnQpJiYobXQ9ZnVuY3Rpb24odCl7dmFyIGU9cyh0KSxyPSJbb2JqZWN0IE9iamVjdF0iPT1lP3QuY29uc3RydWN0b3I6dm9pZCAwLG49cj9tKHIpOiIiO2lmKG4pc3dpdGNoKG4pe2Nhc2UganQ6cmV0dXJuIGh0O2Nhc2UgZHQ6cmV0dXJuIHB0O2Nhc2UgX3Q6cmV0dXJuIGJ0O2Nhc2UgZ3Q6cmV0dXJuIHl0O2Nhc2UgT3Q6cmV0dXJuIHZ0fXJldHVybiBlfSk7dmFyIHd0PW10O2Z1bmN0aW9uIEF0KHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD4tMSYmdCUxPT0wJiZ0PD05MDA3MTk5MjU0NzQwOTkxfWZ1bmN0aW9uIHh0KHQpe3JldHVybiBudWxsIT10JiZBdCh0Lmxlbmd0aCkmJiFqKHQpfXZhciBTdCx6dD0oU3Q9Imxlbmd0aCIsZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbU3RdfSksUHQ9UmVnRXhwKCJbXFx1MjAwZFxcdWQ4MDAtXFx1ZGZmZlxcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZlxcdWZlMGVcXHVmZTBmXSIpO3ZhciBJdD0iXFx1ZDgwMC1cXHVkZmZmIixFdD0iWyIrSXQrIl0iLEZ0PSJbXFx1MDMwMC1cXHUwMzZmXFx1ZmUyMC1cXHVmZTJmXFx1MjBkMC1cXHUyMGZmXSIsVXQ9IlxcdWQ4M2NbXFx1ZGZmYi1cXHVkZmZmXSIsTXQ9IlteIitJdCsiXSIsJHQ9Iig/OlxcdWQ4M2NbXFx1ZGRlNi1cXHVkZGZmXSl7Mn0iLEJ0PSJbXFx1ZDgwMC1cXHVkYmZmXVtcXHVkYzAwLVxcdWRmZmZdIixUdD0iKD86IitGdCsifCIrVXQrIikiKyI/IixOdD0iW1xcdWZlMGVcXHVmZTBmXT8iLGt0PU50K1R0KygiKD86XFx1MjAwZCg/OiIrW010LCR0LEJ0XS5qb2luKCJ8IikrIikiK050K1R0KyIpKiIpLEN0PSIoPzoiK1tNdCtGdCsiPyIsRnQsJHQsQnQsRXRdLmpvaW4oInwiKSsiKSIsRHQ9UmVnRXhwKFV0KyIoPz0iK1V0KyIpfCIrQ3Qra3QsImciKTtmdW5jdGlvbiBSdCh0KXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIFB0LnRlc3QodCl9KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1EdC5sYXN0SW5kZXg9MDtEdC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOnp0KHQpfWZ1bmN0aW9uIFZ0KGUpe2lmKG51bGw9PWUpcmV0dXJuIDA7aWYoeHQoZSkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihyPWUpfHwhdChyKSYmcChyKSYmIltvYmplY3QgU3RyaW5nXSI9PXMocik/UnQoZSk6ZS5sZW5ndGg7dmFyIHIsbj13dChlKTtyZXR1cm4iW29iamVjdCBNYXBdIj09bnx8IltvYmplY3QgU2V0XSI9PW4/ZS5zaXplOml0KGUpLmxlbmd0aH12YXIgV3Q9TWF0aC5jZWlsLEx0PU1hdGgubWF4O3ZhciBxdD0vXig/OjB8WzEtOV1cZCopJC87ZnVuY3Rpb24gR3QodCxlKXt2YXIgcj10eXBlb2YgdDtyZXR1cm4hIShlPW51bGw9PWU/OTAwNzE5OTI1NDc0MDk5MTplKSYmKCJudW1iZXIiPT1yfHwic3ltYm9sIiE9ciYmcXQudGVzdCh0KSkmJnQ+LTEmJnQlMT09MCYmdDxlfXZhciBLdD0vXHMvO3ZhciBIdD0vXlxzKy87ZnVuY3Rpb24gSnQodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS0mJkt0LnRlc3QodC5jaGFyQXQoZSkpOyk7cmV0dXJuIGV9KHQpKzEpLnJlcGxhY2UoSHQsIiIpOnR9dmFyIFF0PS9eWy0rXTB4WzAtOWEtZl0rJC9pLFh0PS9eMGJbMDFdKyQvaSxZdD0vXjBvWzAtN10rJC9pLFp0PXBhcnNlSW50O3ZhciB0ZT0xLzA7ZnVuY3Rpb24gZWUodCl7cmV0dXJuIHQ/KHQ9ZnVuY3Rpb24odCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2lmKGIodCkpcmV0dXJuIE5hTjtpZihoKHQpKXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdC52YWx1ZU9mP3QudmFsdWVPZigpOnQ7dD1oKGUpP2UrIiI6ZX1pZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIDA9PT10P3Q6K3Q7dD1KdCh0KTt2YXIgcj1YdC50ZXN0KHQpO3JldHVybiByfHxZdC50ZXN0KHQpP1p0KHQuc2xpY2UoMikscj8yOjgpOlF0LnRlc3QodCk/TmFOOit0fSh0KSk9PT10ZXx8dD09PS0xLzA/MTc5NzY5MzEzNDg2MjMxNTdlMjkyKih0PDA/LTE6MSk6dD09dD90OjA6MD09PXQ/dDowfXZhciByZSxuZT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHImJiJudW1iZXIiIT10eXBlb2YgciYmZnVuY3Rpb24odCxlLHIpe2lmKCFoKHIpKXJldHVybiExO3ZhciBuPXR5cGVvZiBlO3JldHVybiEhKCJudW1iZXIiPT1uP3h0KHIpJiZHdChlLHIubGVuZ3RoKToic3RyaW5nIj09biYmZSBpbiByKSYmQihyW2VdLHQpfSh0LGUscikmJihlPXI9dm9pZCAwKSx0PWVlKHQpLHZvaWQgMD09PWU/KGU9dCx0PTApOmU9ZWUoZSksZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBvPS0xLHU9THQoV3QoKGUtdCkvKHJ8fDEpKSwwKSxjPUFycmF5KHUpO3UtLTspY1tuP3U6KytvXT10LHQrPXI7cmV0dXJuIGN9KHQsZSxyPXZvaWQgMD09PXI/dDxlPzE6LTE6ZWUocikscmUpfSxvZT1uZTtmdW5jdGlvbiB1ZSh0KXt2YXIgZT10aGlzLl9fZGF0YV9fPW5ldyBrKHQpO3RoaXMuc2l6ZT1lLnNpemV9dWUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1uZXcgayx0aGlzLnNpemU9MH0sdWUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9ZS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1lLnNpemUscn0sdWUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9LHVlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfSx1ZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihyIGluc3RhbmNlb2Ygayl7dmFyIG49ci5fX2RhdGFfXztpZighQ3x8bi5sZW5ndGg8MTk5KXJldHVybiBuLnB1c2goW3QsZV0pLHRoaXMuc2l6ZT0rK3Iuc2l6ZSx0aGlzO3I9dGhpcy5fX2RhdGFfXz1uZXcgUihuKX1yZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemU9ci5zaXplLHRoaXN9O3ZhciBjZT1mdW5jdGlvbigpe3RyeXt2YXIgdD1FKE9iamVjdCwiZGVmaW5lUHJvcGVydHkiKTtyZXR1cm4gdCh7fSwiIix7fSksdH1jYXRjaCh0KXt9fSgpLGllPWNlO2Z1bmN0aW9uIGFlKHQsZSxyKXsiX19wcm90b19fIj09ZSYmaWU/aWUodCxlLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpyLHdyaXRhYmxlOiEwfSk6dFtlXT1yfXZhciBmZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIGxlKHQsZSxyKXt2YXIgbj10W2VdO2ZlLmNhbGwodCxlKSYmQihuLHIpJiYodm9pZCAwIT09cnx8ZSBpbiB0KXx8YWUodCxlLHIpfWZ1bmN0aW9uIHNlKHQsZSxyLG4pe3ZhciBvPSFyO3J8fChyPXt9KTtmb3IodmFyIHU9LTEsYz1lLmxlbmd0aDsrK3U8Yzspe3ZhciBpPWVbdV0sYT1uP24ocltpXSx0W2ldLGkscix0KTp2b2lkIDA7dm9pZCAwPT09YSYmKGE9dFtpXSksbz9hZShyLGksYSk6bGUocixpLGEpfXJldHVybiByfWZ1bmN0aW9uIHBlKHQpe3JldHVybiBwKHQpJiYiW29iamVjdCBBcmd1bWVudHNdIj09cyh0KX12YXIgYmU9T2JqZWN0LnByb3RvdHlwZSx5ZT1iZS5oYXNPd25Qcm9wZXJ0eSx2ZT1iZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxoZT1wZShmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP3BlOmZ1bmN0aW9uKHQpe3JldHVybiBwKHQpJiZ5ZS5jYWxsKHQsImNhbGxlZSIpJiYhdmUuY2FsbCh0LCJjYWxsZWUiKX07dmFyIGplPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsZGU9amUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUmJiFtb2R1bGUubm9kZVR5cGUmJm1vZHVsZSxfZT1kZSYmZGUuZXhwb3J0cz09PWplP24uQnVmZmVyOnZvaWQgMCxnZT0oX2U/X2UuaXNCdWZmZXI6dm9pZCAwKXx8ZnVuY3Rpb24oKXtyZXR1cm4hMX0sT2U9e307ZnVuY3Rpb24gbWUodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpfX1PZVsiW29iamVjdCBGbG9hdDMyQXJyYXldIl09T2VbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPU9lWyJbb2JqZWN0IEludDhBcnJheV0iXT1PZVsiW29iamVjdCBJbnQxNkFycmF5XSJdPU9lWyJbb2JqZWN0IEludDMyQXJyYXldIl09T2VbIltvYmplY3QgVWludDhBcnJheV0iXT1PZVsiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iXT1PZVsiW29iamVjdCBVaW50MTZBcnJheV0iXT1PZVsiW29iamVjdCBVaW50MzJBcnJheV0iXT0hMCxPZVsiW29iamVjdCBBcmd1bWVudHNdIl09T2VbIltvYmplY3QgQXJyYXldIl09T2VbIltvYmplY3QgQXJyYXlCdWZmZXJdIl09T2VbIltvYmplY3QgQm9vbGVhbl0iXT1PZVsiW29iamVjdCBEYXRhVmlld10iXT1PZVsiW29iamVjdCBEYXRlXSJdPU9lWyJbb2JqZWN0IEVycm9yXSJdPU9lWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPU9lWyJbb2JqZWN0IE1hcF0iXT1PZVsiW29iamVjdCBOdW1iZXJdIl09T2VbIltvYmplY3QgT2JqZWN0XSJdPU9lWyJbb2JqZWN0IFJlZ0V4cF0iXT1PZVsiW29iamVjdCBTZXRdIl09T2VbIltvYmplY3QgU3RyaW5nXSJdPU9lWyJbb2JqZWN0IFdlYWtNYXBdIl09ITE7dmFyIHdlPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsQWU9d2UmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUmJiFtb2R1bGUubm9kZVR5cGUmJm1vZHVsZSx4ZT1BZSYmQWUuZXhwb3J0cz09PXdlJiZlLnByb2Nlc3MsU2U9ZnVuY3Rpb24oKXt0cnl7dmFyIHQ9QWUmJkFlLnJlcXVpcmUmJkFlLnJlcXVpcmUoInV0aWwiKS50eXBlcztyZXR1cm4gdHx8eGUmJnhlLmJpbmRpbmcmJnhlLmJpbmRpbmcoInV0aWwiKX1jYXRjaCh0KXt9fSgpLHplPVNlJiZTZS5pc1R5cGVkQXJyYXksUGU9emU/bWUoemUpOmZ1bmN0aW9uKHQpe3JldHVybiBwKHQpJiZBdCh0Lmxlbmd0aCkmJiEhT2Vbcyh0KV19LEllPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gRWUoZSxyKXt2YXIgbj10KGUpLG89IW4mJmhlKGUpLHU9IW4mJiFvJiZnZShlKSxjPSFuJiYhbyYmIXUmJlBlKGUpLGk9bnx8b3x8dXx8YyxhPWk/ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9LTEsbj1BcnJheSh0KTsrK3I8dDspbltyXT1lKHIpO3JldHVybiBufShlLmxlbmd0aCxTdHJpbmcpOltdLGY9YS5sZW5ndGg7Zm9yKHZhciBsIGluIGUpIXImJiFJZS5jYWxsKGUsbCl8fGkmJigibGVuZ3RoIj09bHx8dSYmKCJvZmZzZXQiPT1sfHwicGFyZW50Ij09bCl8fGMmJigiYnVmZmVyIj09bHx8ImJ5dGVMZW5ndGgiPT1sfHwiYnl0ZU9mZnNldCI9PWwpfHxHdChsLGYpKXx8YS5wdXNoKGwpO3JldHVybiBhfWZ1bmN0aW9uIEZlKHQpe3JldHVybiB4dCh0KT9FZSh0KTppdCh0KX12YXIgVWU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBNZSh0KXtpZighaCh0KSlyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9W107aWYobnVsbCE9dClmb3IodmFyIHIgaW4gT2JqZWN0KHQpKWUucHVzaChyKTtyZXR1cm4gZX0odCk7dmFyIGU9bnQodCkscj1bXTtmb3IodmFyIG4gaW4gdCkoImNvbnN0cnVjdG9yIiE9bnx8IWUmJlVlLmNhbGwodCxuKSkmJnIucHVzaChuKTtyZXR1cm4gcn1mdW5jdGlvbiAkZSh0KXtyZXR1cm4geHQodCk/RWUodCwhMCk6TWUodCl9dmFyIEJlPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsVGU9QmUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUmJiFtb2R1bGUubm9kZVR5cGUmJm1vZHVsZSxOZT1UZSYmVGUuZXhwb3J0cz09PUJlP24uQnVmZmVyOnZvaWQgMCxrZT1OZT9OZS5hbGxvY1Vuc2FmZTp2b2lkIDA7ZnVuY3Rpb24gQ2UoKXtyZXR1cm5bXX12YXIgRGU9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxSZT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLFZlPVJlP2Z1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P1tdOih0PU9iamVjdCh0KSxmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPTAsdT1bXTsrK3I8bjspe3ZhciBjPXRbcl07ZShjLHIsdCkmJih1W28rK109Yyl9cmV0dXJuIHV9KFJlKHQpLGZ1bmN0aW9uKGUpe3JldHVybiBEZS5jYWxsKHQsZSl9KSl9OkNlLFdlPVZlO2Z1bmN0aW9uIExlKHQsZSl7Zm9yKHZhciByPS0xLG49ZS5sZW5ndGgsbz10Lmxlbmd0aDsrK3I8bjspdFtvK3JdPWVbcl07cmV0dXJuIHR9dmFyIHFlPW90KE9iamVjdC5nZXRQcm90b3R5cGVPZixPYmplY3QpLEdlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM/ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdO3Q7KUxlKGUsV2UodCkpLHQ9cWUodCk7cmV0dXJuIGV9OkNlLEtlPUdlO2Z1bmN0aW9uIEhlKGUscixuKXt2YXIgbz1yKGUpO3JldHVybiB0KGUpP286TGUobyxuKGUpKX1mdW5jdGlvbiBKZSh0KXtyZXR1cm4gSGUodCxGZSxXZSl9ZnVuY3Rpb24gUWUodCl7cmV0dXJuIEhlKHQsJGUsS2UpfXZhciBYZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBZZT1uLlVpbnQ4QXJyYXk7ZnVuY3Rpb24gWmUodCl7dmFyIGU9bmV3IHQuY29uc3RydWN0b3IodC5ieXRlTGVuZ3RoKTtyZXR1cm4gbmV3IFllKGUpLnNldChuZXcgWWUodCkpLGV9dmFyIHRyPS9cdyokLzt2YXIgZXI9bz9vLnByb3RvdHlwZTp2b2lkIDAscnI9ZXI/ZXIudmFsdWVPZjp2b2lkIDA7ZnVuY3Rpb24gbnIodCxlLHIpe3ZhciBuLG89dC5jb25zdHJ1Y3Rvcjtzd2l0Y2goZSl7Y2FzZSJbb2JqZWN0IEFycmF5QnVmZmVyXSI6cmV0dXJuIFplKHQpO2Nhc2UiW29iamVjdCBCb29sZWFuXSI6Y2FzZSJbb2JqZWN0IERhdGVdIjpyZXR1cm4gbmV3IG8oK3QpO2Nhc2UiW29iamVjdCBEYXRhVmlld10iOnJldHVybiBmdW5jdGlvbih0LGUpe3ZhciByPWU/WmUodC5idWZmZXIpOnQuYnVmZmVyO3JldHVybiBuZXcgdC5jb25zdHJ1Y3RvcihyLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpfSh0LHIpO2Nhc2UiW29iamVjdCBGbG9hdDMyQXJyYXldIjpjYXNlIltvYmplY3QgRmxvYXQ2NEFycmF5XSI6Y2FzZSJbb2JqZWN0IEludDhBcnJheV0iOmNhc2UiW29iamVjdCBJbnQxNkFycmF5XSI6Y2FzZSJbb2JqZWN0IEludDMyQXJyYXldIjpjYXNlIltvYmplY3QgVWludDhBcnJheV0iOmNhc2UiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iOmNhc2UiW29iamVjdCBVaW50MTZBcnJheV0iOmNhc2UiW29iamVjdCBVaW50MzJBcnJheV0iOnJldHVybiBmdW5jdGlvbih0LGUpe3ZhciByPWU/WmUodC5idWZmZXIpOnQuYnVmZmVyO3JldHVybiBuZXcgdC5jb25zdHJ1Y3RvcihyLHQuYnl0ZU9mZnNldCx0Lmxlbmd0aCl9KHQscik7Y2FzZSJbb2JqZWN0IE1hcF0iOmNhc2UiW29iamVjdCBTZXRdIjpyZXR1cm4gbmV3IG87Y2FzZSJbb2JqZWN0IE51bWJlcl0iOmNhc2UiW29iamVjdCBTdHJpbmddIjpyZXR1cm4gbmV3IG8odCk7Y2FzZSJbb2JqZWN0IFJlZ0V4cF0iOnJldHVybiBmdW5jdGlvbih0KXt2YXIgZT1uZXcgdC5jb25zdHJ1Y3Rvcih0LnNvdXJjZSx0ci5leGVjKHQpKTtyZXR1cm4gZS5sYXN0SW5kZXg9dC5sYXN0SW5kZXgsZX0odCk7Y2FzZSJbb2JqZWN0IFN5bWJvbF0iOnJldHVybiBuPXQscnI/T2JqZWN0KHJyLmNhbGwobikpOnt9fX12YXIgb3I9T2JqZWN0LmNyZWF0ZSx1cj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKCFoKGUpKXJldHVybnt9O2lmKG9yKXJldHVybiBvcihlKTt0LnByb3RvdHlwZT1lO3ZhciByPW5ldyB0O3JldHVybiB0LnByb3RvdHlwZT12b2lkIDAscn19KCksY3I9dXI7dmFyIGlyPVNlJiZTZS5pc01hcCxhcj1pcj9tZShpcik6ZnVuY3Rpb24odCl7cmV0dXJuIHAodCkmJiJbb2JqZWN0IE1hcF0iPT13dCh0KX07dmFyIGZyPVNlJiZTZS5pc1NldCxscj1mcj9tZShmcik6ZnVuY3Rpb24odCl7cmV0dXJuIHAodCkmJiJbb2JqZWN0IFNldF0iPT13dCh0KX0sc3I9IltvYmplY3QgQXJndW1lbnRzXSIscHI9IltvYmplY3QgRnVuY3Rpb25dIixicj0iW29iamVjdCBPYmplY3RdIix5cj17fTtmdW5jdGlvbiB2cihlLHIsbixvLHUsYyl7dmFyIGksYT0xJnIsZj0yJnIsbD00JnI7aWYobiYmKGk9dT9uKGUsbyx1LGMpOm4oZSkpLHZvaWQgMCE9PWkpcmV0dXJuIGk7aWYoIWgoZSkpcmV0dXJuIGU7dmFyIHM9dChlKTtpZihzKXtpZihpPWZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3RoLHI9bmV3IHQuY29uc3RydWN0b3IoZSk7cmV0dXJuIGUmJiJzdHJpbmciPT10eXBlb2YgdFswXSYmWGUuY2FsbCh0LCJpbmRleCIpJiYoci5pbmRleD10LmluZGV4LHIuaW5wdXQ9dC5pbnB1dCkscn0oZSksIWEpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIHI9LTEsbj10Lmxlbmd0aDtmb3IoZXx8KGU9QXJyYXkobikpOysrcjxuOyllW3JdPXRbcl07cmV0dXJuIGV9KGUsaSl9ZWxzZXt2YXIgcD13dChlKSxiPXA9PXByfHwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iPT1wO2lmKGdlKGUpKXJldHVybiBmdW5jdGlvbih0LGUpe2lmKGUpcmV0dXJuIHQuc2xpY2UoKTt2YXIgcj10Lmxlbmd0aCxuPWtlP2tlKHIpOm5ldyB0LmNvbnN0cnVjdG9yKHIpO3JldHVybiB0LmNvcHkobiksbn0oZSxhKTtpZihwPT1icnx8cD09c3J8fGImJiF1KXtpZihpPWZ8fGI/e306ZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQuY29uc3RydWN0b3J8fG50KHQpP3t9OmNyKHFlKHQpKX0oZSksIWEpcmV0dXJuIGY/ZnVuY3Rpb24odCxlKXtyZXR1cm4gc2UodCxLZSh0KSxlKX0oZSxmdW5jdGlvbih0LGUpe3JldHVybiB0JiZzZShlLCRlKGUpLHQpfShpLGUpKTpmdW5jdGlvbih0LGUpe3JldHVybiBzZSh0LFdlKHQpLGUpfShlLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQmJnNlKGUsRmUoZSksdCl9KGksZSkpfWVsc2V7aWYoIXlyW3BdKXJldHVybiB1P2U6e307aT1ucihlLHAsYSl9fWN8fChjPW5ldyB1ZSk7dmFyIHk9Yy5nZXQoZSk7aWYoeSlyZXR1cm4geTtjLnNldChlLGkpLGxyKGUpP2UuZm9yRWFjaChmdW5jdGlvbih0KXtpLmFkZCh2cih0LHIsbix0LGUsYykpfSk6YXIoZSkmJmUuZm9yRWFjaChmdW5jdGlvbih0LG8pe2kuc2V0KG8sdnIodCxyLG4sbyxlLGMpKX0pO3ZhciB2PXM/dm9pZCAwOihsP2Y/UWU6SmU6Zj8kZTpGZSkoZSk7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoOysrcjxuJiYhMSE9PWUodFtyXSxyLHQpOyk7fSh2fHxlLGZ1bmN0aW9uKHQsbyl7diYmKHQ9ZVtvPXRdKSxsZShpLG8sdnIodCxyLG4sbyxlLGMpKX0pLGl9eXJbc3JdPXlyWyJbb2JqZWN0IEFycmF5XSJdPXlyWyJbb2JqZWN0IEFycmF5QnVmZmVyXSJdPXlyWyJbb2JqZWN0IERhdGFWaWV3XSJdPXlyWyJbb2JqZWN0IEJvb2xlYW5dIl09eXJbIltvYmplY3QgRGF0ZV0iXT15clsiW29iamVjdCBGbG9hdDMyQXJyYXldIl09eXJbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPXlyWyJbb2JqZWN0IEludDhBcnJheV0iXT15clsiW29iamVjdCBJbnQxNkFycmF5XSJdPXlyWyJbb2JqZWN0IEludDMyQXJyYXldIl09eXJbIltvYmplY3QgTWFwXSJdPXlyWyJbb2JqZWN0IE51bWJlcl0iXT15clticl09eXJbIltvYmplY3QgUmVnRXhwXSJdPXlyWyJbb2JqZWN0IFNldF0iXT15clsiW29iamVjdCBTdHJpbmddIl09eXJbIltvYmplY3QgU3ltYm9sXSJdPXlyWyJbb2JqZWN0IFVpbnQ4QXJyYXldIl09eXJbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09eXJbIltvYmplY3QgVWludDE2QXJyYXldIl09eXJbIltvYmplY3QgVWludDMyQXJyYXldIl09ITAseXJbIltvYmplY3QgRXJyb3JdIl09eXJbcHJdPXlyWyJbb2JqZWN0IFdlYWtNYXBdIl09ITE7ZnVuY3Rpb24gaHIodCl7cmV0dXJuIHZyKHQsNSl9ZnVuY3Rpb24ganIodCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBkcih0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBfcih0KXtyZXR1cm4hMD09PShlPXQpfHwhMT09PWV8fHAoZSkmJiJbb2JqZWN0IEJvb2xlYW5dIj09cyhlKTt2YXIgZX1mdW5jdGlvbiBncih0LGU9bnVsbCxyPXt9KXtqKGUpfHwoZT10PT50KTtsZXQgbj1ldChyLCJmb3JjZSIsITEpO3JldHVybiBfcihuKXx8KG49ITEpLGZ1bmN0aW9uKHQsZSxyPSExKXtsZXQgbj1bXTtpZighanIodCkmJiFkcih0KSlyZXR1cm4gZSh0LG51bGwsW10pO2Z1bmN0aW9uIG8odCl7aWYoanIodCkpcmV0dXJuIG9lKFZ0KHQpKTtpZihkcih0KSl7bGV0IGU9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCksbj1udWxsO3JldHVybiByJiYobj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpKSxqcihlKXx8KGU9W10pLGpyKG4pfHwobj1bXSksWy4uLmUsLi4ubl19cmV0dXJuIHR9cmV0dXJuIGZ1bmN0aW9uIHQocix1KXtpZihqcihyKSlyZXR1cm4gbyhyKS5tYXAobz0+e2xldCB1PXJbb10sYz1ocihuKTtyZXR1cm4gbi5wdXNoKG8pLHU9ZSh1LG8sYyksdT10KHUpLG4ucG9wKCksdX0pO2lmKGRyKHIpKXtsZXQgdT1vKHIpLGM9e307cmV0dXJuIHUubWFwKG89PntsZXQgdT1yW29dLGk9aHIobik7bi5wdXNoKG8pLHU9ZSh1LG8saSksdT10KHUpLG4ucG9wKCksY1tvXT11fSksY31yZXR1cm4gcn0odCl9KHQsZSxuKX1mdW5jdGlvbiBPcih0KXtyZXR1cm4hKCFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCl8fCIiPT09dCl9ZnVuY3Rpb24gbXIodCxlPXt9KXtpZihqcih0KSl7aWYoMD09PXQubGVuZ3RoKXJldHVybltdfWVsc2V7aWYoIWRyKHQpKXJldHVybltdO2lmKGZ1bmN0aW9uKHQpe2lmKGRyKHQpKXtmb3IobGV0IGUgaW4gdClyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4hMX0odCkpcmV0dXJuW119bGV0IHI9ZXQoZSwiYmluZEtleSIsbnVsbCk7T3Iocil8fChyPSJpZCIpO2xldCBuPWV0KGUsImJpbmRDaGlsZHJlbiIsbnVsbCk7T3Iobil8fChuPSJjaGlsZHJlbiIpO2xldCBvPSExO2RyKHQpJiYobz0hMCx0PVt0XSk7bGV0IHU9W107cmV0dXJuIGdyKHQsKHQsZSxvKT0+e2xldCBjPWV0KHQscixudWxsKSxpPWV0KHQsbixudWxsKTtpZihjKXtsZXQgcj1mdW5jdGlvbih0KXtsZXQgZT1bdFswXV07Zm9yKGxldCByPTE7cjx0Lmxlbmd0aDtyKyspe2xldCBvPXRbcl07ZS5wdXNoKG4pLGUucHVzaChvKX1yZXR1cm4gZX0oWy4uLm8sZV0pO2lmKHUucHVzaCh7Li4udCxsZXZlbDooVnQociktMSkvMixuazpyfSksaSlyZXR1cm4gaX19KSxvJiYodT11WzBdKSx1fWxldCBmbGF0dGVuVHJlZVdrPWFzeW5jIGZ1bmN0aW9uKHQsZT17fSl7cmV0dXJuIG1yKHQsZSl9OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogZmxhdHRlblRyZWVXawogICAgICAgIH0KICAgICAgICAKCiAgICAvL29uCiAgICAKCiAgICAvL3NhdmUKICAgIGluc3RhbmNlID0gcgoKfQoKZnVuY3Rpb24gc2VuZE1lc3NhZ2UoZGF0YSkgewogICAgCiAgICAgICAgc2VsZi5wb3N0TWVzc2FnZShkYXRhKQogICAgICAgIAp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBmbGF0dGVuVHJlZVdrCiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgCiAgICAgICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdlbWl0JywKICAgICAgICAgICAgICAgIGV2TmFtZTogJ2Vycm9yJywKICAgICAgICAgICAgICAgIG1zZzogZXJyLAogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICAgICAgfQogICAgICAgICAgICAKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9mdW4KICAgICAgICAgICAgbGV0IGZ1biA9IGluc3RhbmNlW2RhdGEuZnVuXQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CgogICAgICAgICAgICAvL2V4ZWMKICAgICAgICAgICAgYXdhaXQgZnVuKC4uLmlucHV0KQogICAgICAgICAgICAgICAgLnRoZW4oKHN1YykgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdzdWNjZXNzJwogICAgICAgICAgICAgICAgICAgIG1zZz1zdWMKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdlcnJvcicKICAgICAgICAgICAgICAgICAgICBtc2c9ZXJyCiAgICAgICAgICAgICAgICB9KQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KICAgICAgICAKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBzZWxmLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIHJlY3ZNZXNzYWdlKGUuZGF0YSkKICAgICAgICB9CiAgICAgICAgCgp0cnl7CiAgICBwcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuaGFuZGxlZFJlamVjdGlvbicsIGVycikKICAgIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCBlcnIpCiAgICB9KQp9CmNhdGNoKGVycil7fQoK");function l(){let l=new e;let I=function(d){try{let l=new Blob([d]),I=window.URL||window.webkitURL;return new Worker(I.createObjectURL(l))}catch(d){m(d)}}(d);if(!I)return m("invalid worker"),null;function Z(){let d=function(){let d,l,I=new Promise(function(){d=arguments[0],l=arguments[1]});return I.resolve=d,I.reject=l,I}(),Z=function(d=10){let l=[],I="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),Z=I.length;for(let m=0;m<d;m++)l[m]=I[0|Math.random()*Z];return l.join("")}(),m={mode:"call",id:Z,fun:"main",input:[...arguments]};return I.postMessage(m),l.once(Z,l=>{"success"===l.state?d.resolve(l.msg):d.reject(l.msg)}),d}function m(d){l.emit("error",d)}return I.onmessage=function(d){!function(d){let I=d,Z=I.mode;"emit"!==Z&&"return"!==Z||("emit"===Z&&l.emit(I.evName,I.msg),"return"===Z&&l.emit(I.id,I))}(d.data)},I.onerror=m,I.onmessageerror=function(d){m(d.data)},function(){let d={mode:"init",type:"function",input:[...arguments]};I.postMessage(d)}([...arguments]),l.main=Z,l.main=Z,l.terminate=function(){I?(I.terminate(),I=void 0):m("worker has been terminated")},l}h=async function(){let d=[...arguments],I=l();return await I.main(...d).finally(()=>{I.terminate()})}}();try{process.on("unhandledRejection",d=>{console.log("outer:unhandledRejection",d)}),process.on("uncaughtException",d=>{console.log("outer:uncaughtException",d)}),process.on("uncaughtExceptionMonitor",d=>{console.log("outer:uncaughtExceptionMonitor",d)})}catch(d){}var K=h;export{K as default};
|
|
1
|
+
const d="function"==typeof TextDecoder?new TextDecoder("utf-8",{ignoreBOM:!0}):void 0,l=("function"==typeof TextEncoder&&new TextEncoder,Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=")),I=(()=>{let d={};return l.forEach((l,I)=>d[l]=I),d})(),Z=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,m=String.fromCharCode.bind(String),c="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):d=>new Uint8Array(Array.prototype.slice.call(d,0)),b=d=>d.replace(/[^A-Za-z0-9\+\/]/g,""),i=d=>{let I,Z,m,c,b="";const i=d.length%3;for(let i=0;i<d.length;){if((Z=d.charCodeAt(i++))>255||(m=d.charCodeAt(i++))>255||(c=d.charCodeAt(i++))>255)throw new TypeError("invalid character found");I=Z<<16|m<<8|c,b+=l[I>>18&63]+l[I>>12&63]+l[I>>6&63]+l[63&I]}return i?b.slice(0,i-3)+"===".substring(i):b},X="function"==typeof btoa?d=>btoa(d):i,C=(Uint8Array.prototype.toBase64,/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g),g=d=>{switch(d.length){case 4:var l=((7&d.charCodeAt(0))<<18|(63&d.charCodeAt(1))<<12|(63&d.charCodeAt(2))<<6|63&d.charCodeAt(3))-65536;return m((l>>>10)+55296)+m(56320+(1023&l));case 3:return m((15&d.charCodeAt(0))<<12|(63&d.charCodeAt(1))<<6|63&d.charCodeAt(2));default:return m((31&d.charCodeAt(0))<<6|63&d.charCodeAt(1))}},t=d=>d.replace(C,g),n=d=>{if(d=d.replace(/\s+/g,""),!Z.test(d))throw new TypeError("malformed base64.");let l,c,b;d+="==".slice(2-(3&d.length));let i=[];for(let Z=0;Z<d.length;)l=I[d.charAt(Z++)]<<18|I[d.charAt(Z++)]<<12|(c=I[d.charAt(Z++)])<<6|(b=I[d.charAt(Z++)]),64===c?i.push(m(l>>16&255)):64===b?i.push(m(l>>16&255,l>>8&255)):i.push(m(l>>16&255,l>>8&255,255&l));return i.join("")},y="function"==typeof atob?d=>atob(b(d)):n,p="function"==typeof Uint8Array.fromBase64?d=>Uint8Array.fromBase64(d):d=>c(y(d).split("").map(d=>d.charCodeAt(0))),G=d?l=>d.decode(p(l)):d=>t(y(d)),o=d=>b(d.replace(/[-_]/g,d=>"-"==d?"+":"/")),W=d=>G(o(d)),V=W;function u(d){return d&&d.__esModule&&Object.prototype.hasOwnProperty.call(d,"default")?d.default:d}var J={exports:{}};!function(d){var l=Object.prototype.hasOwnProperty,I="~";function Z(){}function m(d,l,I){this.fn=d,this.context=l,this.once=I||!1}function c(d,l,Z,c,b){if("function"!=typeof Z)throw new TypeError("The listener must be a function");var i=new m(Z,c||d,b),X=I?I+l:l;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 b(d,l){0===--d._eventsCount?d._events=new Z:delete d._events[l]}function i(){this._events=new Z,this._eventsCount=0}Object.create&&(Z.prototype=Object.create(null),(new Z).__proto__||(I=!1)),i.prototype.eventNames=function(){var d,Z,m=[];if(0===this._eventsCount)return m;for(Z in d=this._events)l.call(d,Z)&&m.push(I?Z.slice(1):Z);return Object.getOwnPropertySymbols?m.concat(Object.getOwnPropertySymbols(d)):m},i.prototype.listeners=function(d){var l=I?I+d:d,Z=this._events[l];if(!Z)return[];if(Z.fn)return[Z.fn];for(var m=0,c=Z.length,b=new Array(c);m<c;m++)b[m]=Z[m].fn;return b},i.prototype.listenerCount=function(d){var l=I?I+d:d,Z=this._events[l];return Z?Z.fn?1:Z.length:0},i.prototype.emit=function(d,l,Z,m,c,b){var i=I?I+d:d;if(!this._events[i])return!1;var X,C,g=this._events[i],t=arguments.length;if(g.fn){switch(g.once&&this.removeListener(d,g.fn,void 0,!0),t){case 1:return g.fn.call(g.context),!0;case 2:return g.fn.call(g.context,l),!0;case 3:return g.fn.call(g.context,l,Z),!0;case 4:return g.fn.call(g.context,l,Z,m),!0;case 5:return g.fn.call(g.context,l,Z,m,c),!0;case 6:return g.fn.call(g.context,l,Z,m,c,b),!0}for(C=1,X=new Array(t-1);C<t;C++)X[C-1]=arguments[C];g.fn.apply(g.context,X)}else{var n,y=g.length;for(C=0;C<y;C++)switch(g[C].once&&this.removeListener(d,g[C].fn,void 0,!0),t){case 1:g[C].fn.call(g[C].context);break;case 2:g[C].fn.call(g[C].context,l);break;case 3:g[C].fn.call(g[C].context,l,Z);break;case 4:g[C].fn.call(g[C].context,l,Z,m);break;default:if(!X)for(n=1,X=new Array(t-1);n<t;n++)X[n-1]=arguments[n];g[C].fn.apply(g[C].context,X)}}return!0},i.prototype.on=function(d,l,I){return c(this,d,l,I,!1)},i.prototype.once=function(d,l,I){return c(this,d,l,I,!0)},i.prototype.removeListener=function(d,l,Z,m){var c=I?I+d:d;if(!this._events[c])return this;if(!l)return b(this,c),this;var i=this._events[c];if(i.fn)i.fn!==l||m&&!i.once||Z&&i.context!==Z||b(this,c);else{for(var X=0,C=[],g=i.length;X<g;X++)(i[X].fn!==l||m&&!i[X].once||Z&&i[X].context!==Z)&&C.push(i[X]);C.length?this._events[c]=1===C.length?C[0]:C:b(this,c)}return this},i.prototype.removeAllListeners=function(d){var l;return d?(l=I?I+d:d,this._events[l]&&b(this,l)):(this._events=new Z,this._eventsCount=0),this},i.prototype.off=i.prototype.removeListener,i.prototype.addListener=i.prototype.on,i.prefixed=I,i.EventEmitter=i,d.exports=i}(J);var e=u(J.exports);let h;!function(){if("browser"!==("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let d=V("CgoKInVzZSBzdHJpY3QiO3ZhciB0PUFycmF5LmlzQXJyYXksZT0ib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWwscj0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLG49ZXx8cnx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxvPW4uU3ltYm9sLHU9T2JqZWN0LnByb3RvdHlwZSxjPXUuaGFzT3duUHJvcGVydHksaT11LnRvU3RyaW5nLGE9bz9vLnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgZj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO3ZhciBsPW8/by50b1N0cmluZ1RhZzp2b2lkIDA7ZnVuY3Rpb24gcyh0KXtyZXR1cm4gbnVsbD09dD92b2lkIDA9PT10PyJbb2JqZWN0IFVuZGVmaW5lZF0iOiJbb2JqZWN0IE51bGxdIjpsJiZsIGluIE9iamVjdCh0KT9mdW5jdGlvbih0KXt2YXIgZT1jLmNhbGwodCxhKSxyPXRbYV07dHJ5e3RbYV09dm9pZCAwO3ZhciBuPSEwfWNhdGNoKHQpe312YXIgbz1pLmNhbGwodCk7cmV0dXJuIG4mJihlP3RbYV09cjpkZWxldGUgdFthXSksb30odCk6ZnVuY3Rpb24odCl7cmV0dXJuIGYuY2FsbCh0KX0odCl9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fWZ1bmN0aW9uIGIodCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxwKHQpJiYiW29iamVjdCBTeW1ib2xdIj09cyh0KX12YXIgeT0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyx2PS9eXHcqJC87ZnVuY3Rpb24gaCh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1lfHwiZnVuY3Rpb24iPT1lKX1mdW5jdGlvbiBqKHQpe2lmKCFoKHQpKXJldHVybiExO3ZhciBlPXModCk7cmV0dXJuIltvYmplY3QgRnVuY3Rpb25dIj09ZXx8IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIj09ZXx8IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iPT1lfHwiW29iamVjdCBQcm94eV0iPT1lfXZhciBkLF89blsiX19jb3JlLWpzX3NoYXJlZF9fIl0sZz0oZD0vW14uXSskLy5leGVjKF8mJl8ua2V5cyYmXy5rZXlzLklFX1BST1RPfHwiIikpPyJTeW1ib2woc3JjKV8xLiIrZDoiIjt2YXIgTz1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gbSh0KXtpZihudWxsIT10KXt0cnl7cmV0dXJuIE8uY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIHc9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sQT1GdW5jdGlvbi5wcm90b3R5cGUseD1PYmplY3QucHJvdG90eXBlLFM9QS50b1N0cmluZyx6PXguaGFzT3duUHJvcGVydHksUD1SZWdFeHAoIl4iK1MuY2FsbCh6KS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTtmdW5jdGlvbiBJKHQpe3JldHVybiEoIWgodCl8fChlPXQsZyYmZyBpbiBlKSkmJihqKHQpP1A6dykudGVzdChtKHQpKTt2YXIgZX1mdW5jdGlvbiBFKHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gSShyKT9yOnZvaWQgMH12YXIgRj1FKE9iamVjdCwiY3JlYXRlIik7dmFyIFU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgTT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uICQodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gQih0LGUpe3JldHVybiB0PT09ZXx8dCE9dCYmZSE9ZX1mdW5jdGlvbiBUKHQsZSl7Zm9yKHZhciByPXQubGVuZ3RoO3ItLTspaWYoQih0W3JdWzBdLGUpKXJldHVybiByO3JldHVybi0xfSQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1GP0YobnVsbCk6e30sdGhpcy5zaXplPTB9LCQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmhhcyh0KSYmZGVsZXRlIHRoaXMuX19kYXRhX19bdF07cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sJC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoRil7dmFyIHI9ZVt0XTtyZXR1cm4iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI9PT1yP3ZvaWQgMDpyfXJldHVybiBVLmNhbGwoZSx0KT9lW3RdOnZvaWQgMH0sJC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIEY/dm9pZCAwIT09ZVt0XTpNLmNhbGwoZSx0KX0sJC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1GJiZ2b2lkIDA9PT1lPyJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjplLHRoaXN9O3ZhciBOPUFycmF5LnByb3RvdHlwZS5zcGxpY2U7ZnVuY3Rpb24gayh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1rLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LGsucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9VChlLHQpO3JldHVybiEocjwwKSYmKHI9PWUubGVuZ3RoLTE/ZS5wb3AoKTpOLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0say5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1UKGUsdCk7cmV0dXJuIHI8MD92b2lkIDA6ZVtyXVsxXX0say5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBUKHRoaXMuX19kYXRhX18sdCk+LTF9LGsucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX19kYXRhX18sbj1UKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBDPUUobiwiTWFwIik7ZnVuY3Rpb24gRCh0LGUpe3ZhciByLG4sbz10Ll9fZGF0YV9fO3JldHVybigic3RyaW5nIj09KG49dHlwZW9mKHI9ZSkpfHwibnVtYmVyIj09bnx8InN5bWJvbCI9PW58fCJib29sZWFuIj09bj8iX19wcm90b19fIiE9PXI6bnVsbD09PXIpP29bInN0cmluZyI9PXR5cGVvZiBlPyJzdHJpbmciOiJoYXNoIl06by5tYXB9ZnVuY3Rpb24gUih0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1SLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2l6ZT0wLHRoaXMuX19kYXRhX189e2hhc2g6bmV3ICQsbWFwOm5ldyhDfHxrKSxzdHJpbmc6bmV3ICR9fSxSLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9RCh0aGlzLHQpLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxSLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIEQodGhpcyx0KS5nZXQodCl9LFIucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gRCh0aGlzLHQpLmhhcyh0KX0sUi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9RCh0aGlzLHQpLG49ci5zaXplO3JldHVybiByLnNldCh0LGUpLHRoaXMuc2l6ZSs9ci5zaXplPT1uPzA6MSx0aGlzfTtmdW5jdGlvbiBWKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHR8fG51bGwhPWUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkV4cGVjdGVkIGEgZnVuY3Rpb24iKTt2YXIgcj1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxvPWU/ZS5hcHBseSh0aGlzLG4pOm5bMF0sdT1yLmNhY2hlO2lmKHUuaGFzKG8pKXJldHVybiB1LmdldChvKTt2YXIgYz10LmFwcGx5KHRoaXMsbik7cmV0dXJuIHIuY2FjaGU9dS5zZXQobyxjKXx8dSxjfTtyZXR1cm4gci5jYWNoZT1uZXcoVi5DYWNoZXx8Uikscn1WLkNhY2hlPVI7dmFyIFcsTCxxLEc9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csSz0vXFwoXFwpPy9nLEg9KFc9ZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZlLnB1c2goIiIpLHQucmVwbGFjZShHLGZ1bmN0aW9uKHQscixuLG8pe2UucHVzaChuP28ucmVwbGFjZShLLCIkMSIpOnJ8fHQpfSksZX0sTD1WKFcsZnVuY3Rpb24odCl7cmV0dXJuIDUwMD09PXEuc2l6ZSYmcS5jbGVhcigpLHR9KSxxPUwuY2FjaGUsTCksSj1IO3ZhciBRPW8/by5wcm90b3R5cGU6dm9pZCAwLFg9UT9RLnRvU3RyaW5nOnZvaWQgMDtmdW5jdGlvbiBZKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gZTtpZih0KGUpKXJldHVybiBmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPUFycmF5KG4pOysrcjxuOylvW3JdPWUodFtyXSxyLHQpO3JldHVybiBvfShlLFkpKyIiO2lmKGIoZSkpcmV0dXJuIFg/WC5jYWxsKGUpOiIiO3ZhciByPWUrIiI7cmV0dXJuIjAiPT1yJiYxL2U9PS0xLzA/Ii0wIjpyfWZ1bmN0aW9uIFooZSxyKXtyZXR1cm4gdChlKT9lOmZ1bmN0aW9uKGUscil7aWYodChlKSlyZXR1cm4hMTt2YXIgbj10eXBlb2YgZTtyZXR1cm4hKCJudW1iZXIiIT1uJiYic3ltYm9sIiE9biYmImJvb2xlYW4iIT1uJiZudWxsIT1lJiYhYihlKSl8fHYudGVzdChlKXx8IXkudGVzdChlKXx8bnVsbCE9ciYmZSBpbiBPYmplY3Qocil9KGUscik/W2VdOkooZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/IiI6WSh0KX0oZSkpfWZ1bmN0aW9uIHR0KHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdHx8Yih0KSlyZXR1cm4gdDt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0tMS8wPyItMCI6ZX1mdW5jdGlvbiBldCh0LGUscil7dmFyIG49bnVsbD09dD92b2lkIDA6ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MCxuPShlPVooZSx0KSkubGVuZ3RoO251bGwhPXQmJnI8bjspdD10W3R0KGVbcisrXSldO3JldHVybiByJiZyPT1uP3Q6dm9pZCAwfSh0LGUpO3JldHVybiB2b2lkIDA9PT1uP3I6bn12YXIgcnQ9T2JqZWN0LnByb3RvdHlwZTtmdW5jdGlvbiBudCh0KXt2YXIgZT10JiZ0LmNvbnN0cnVjdG9yO3JldHVybiB0PT09KCJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLnByb3RvdHlwZXx8cnQpfWZ1bmN0aW9uIG90KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiB0KGUocikpfX12YXIgdXQ9b3QoT2JqZWN0LmtleXMsT2JqZWN0KSxjdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIGl0KHQpe2lmKCFudCh0KSlyZXR1cm4gdXQodCk7dmFyIGU9W107Zm9yKHZhciByIGluIE9iamVjdCh0KSljdC5jYWxsKHQscikmJiJjb25zdHJ1Y3RvciIhPXImJmUucHVzaChyKTtyZXR1cm4gZX12YXIgYXQ9RShuLCJEYXRhVmlldyIpLGZ0PUUobiwiUHJvbWlzZSIpLGx0PUUobiwiU2V0Iiksc3Q9RShuLCJXZWFrTWFwIikscHQ9IltvYmplY3QgTWFwXSIsYnQ9IltvYmplY3QgUHJvbWlzZV0iLHl0PSJbb2JqZWN0IFNldF0iLHZ0PSJbb2JqZWN0IFdlYWtNYXBdIixodD0iW29iamVjdCBEYXRhVmlld10iLGp0PW0oYXQpLGR0PW0oQyksX3Q9bShmdCksZ3Q9bShsdCksT3Q9bShzdCksbXQ9czsoYXQmJm10KG5ldyBhdChuZXcgQXJyYXlCdWZmZXIoMSkpKSE9aHR8fEMmJm10KG5ldyBDKSE9cHR8fGZ0JiZtdChmdC5yZXNvbHZlKCkpIT1idHx8bHQmJm10KG5ldyBsdCkhPXl0fHxzdCYmbXQobmV3IHN0KSE9dnQpJiYobXQ9ZnVuY3Rpb24odCl7dmFyIGU9cyh0KSxyPSJbb2JqZWN0IE9iamVjdF0iPT1lP3QuY29uc3RydWN0b3I6dm9pZCAwLG49cj9tKHIpOiIiO2lmKG4pc3dpdGNoKG4pe2Nhc2UganQ6cmV0dXJuIGh0O2Nhc2UgZHQ6cmV0dXJuIHB0O2Nhc2UgX3Q6cmV0dXJuIGJ0O2Nhc2UgZ3Q6cmV0dXJuIHl0O2Nhc2UgT3Q6cmV0dXJuIHZ0fXJldHVybiBlfSk7dmFyIHd0PW10O2Z1bmN0aW9uIEF0KHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD4tMSYmdCUxPT0wJiZ0PD05MDA3MTk5MjU0NzQwOTkxfWZ1bmN0aW9uIHh0KHQpe3JldHVybiBudWxsIT10JiZBdCh0Lmxlbmd0aCkmJiFqKHQpfXZhciBTdCx6dD0oU3Q9Imxlbmd0aCIsZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbU3RdfSksUHQ9UmVnRXhwKCJbXFx1MjAwZFxcdWQ4MDAtXFx1ZGZmZlxcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZlxcdWZlMGVcXHVmZTBmXSIpO3ZhciBJdD0iXFx1ZDgwMC1cXHVkZmZmIixFdD0iWyIrSXQrIl0iLEZ0PSJbXFx1MDMwMC1cXHUwMzZmXFx1ZmUyMC1cXHVmZTJmXFx1MjBkMC1cXHUyMGZmXSIsVXQ9IlxcdWQ4M2NbXFx1ZGZmYi1cXHVkZmZmXSIsTXQ9IlteIitJdCsiXSIsJHQ9Iig/OlxcdWQ4M2NbXFx1ZGRlNi1cXHVkZGZmXSl7Mn0iLEJ0PSJbXFx1ZDgwMC1cXHVkYmZmXVtcXHVkYzAwLVxcdWRmZmZdIixUdD0iKD86IitGdCsifCIrVXQrIikiKyI/IixOdD0iW1xcdWZlMGVcXHVmZTBmXT8iLGt0PU50K1R0KygiKD86XFx1MjAwZCg/OiIrW010LCR0LEJ0XS5qb2luKCJ8IikrIikiK050K1R0KyIpKiIpLEN0PSIoPzoiK1tNdCtGdCsiPyIsRnQsJHQsQnQsRXRdLmpvaW4oInwiKSsiKSIsRHQ9UmVnRXhwKFV0KyIoPz0iK1V0KyIpfCIrQ3Qra3QsImciKTtmdW5jdGlvbiBSdCh0KXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIFB0LnRlc3QodCl9KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1EdC5sYXN0SW5kZXg9MDtEdC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOnp0KHQpfWZ1bmN0aW9uIFZ0KGUpe2lmKG51bGw9PWUpcmV0dXJuIDA7aWYoeHQoZSkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihyPWUpfHwhdChyKSYmcChyKSYmIltvYmplY3QgU3RyaW5nXSI9PXMocik/UnQoZSk6ZS5sZW5ndGg7dmFyIHIsbj13dChlKTtyZXR1cm4iW29iamVjdCBNYXBdIj09bnx8IltvYmplY3QgU2V0XSI9PW4/ZS5zaXplOml0KGUpLmxlbmd0aH12YXIgV3Q9TWF0aC5jZWlsLEx0PU1hdGgubWF4O3ZhciBxdD0vXig/OjB8WzEtOV1cZCopJC87ZnVuY3Rpb24gR3QodCxlKXt2YXIgcj10eXBlb2YgdDtyZXR1cm4hIShlPW51bGw9PWU/OTAwNzE5OTI1NDc0MDk5MTplKSYmKCJudW1iZXIiPT1yfHwic3ltYm9sIiE9ciYmcXQudGVzdCh0KSkmJnQ+LTEmJnQlMT09MCYmdDxlfXZhciBLdD0vXHMvO3ZhciBIdD0vXlxzKy87ZnVuY3Rpb24gSnQodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS0mJkt0LnRlc3QodC5jaGFyQXQoZSkpOyk7cmV0dXJuIGV9KHQpKzEpLnJlcGxhY2UoSHQsIiIpOnR9dmFyIFF0PS9eWy0rXTB4WzAtOWEtZl0rJC9pLFh0PS9eMGJbMDFdKyQvaSxZdD0vXjBvWzAtN10rJC9pLFp0PXBhcnNlSW50O3ZhciB0ZT0xLzA7ZnVuY3Rpb24gZWUodCl7cmV0dXJuIHQ/KHQ9ZnVuY3Rpb24odCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2lmKGIodCkpcmV0dXJuIE5hTjtpZihoKHQpKXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdC52YWx1ZU9mP3QudmFsdWVPZigpOnQ7dD1oKGUpP2UrIiI6ZX1pZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIDA9PT10P3Q6K3Q7dD1KdCh0KTt2YXIgcj1YdC50ZXN0KHQpO3JldHVybiByfHxZdC50ZXN0KHQpP1p0KHQuc2xpY2UoMikscj8yOjgpOlF0LnRlc3QodCk/TmFOOit0fSh0KSk9PT10ZXx8dD09PS0xLzA/MTc5NzY5MzEzNDg2MjMxNTdlMjkyKih0PDA/LTE6MSk6dD09dD90OjA6MD09PXQ/dDowfXZhciByZSxuZT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHImJiJudW1iZXIiIT10eXBlb2YgciYmZnVuY3Rpb24odCxlLHIpe2lmKCFoKHIpKXJldHVybiExO3ZhciBuPXR5cGVvZiBlO3JldHVybiEhKCJudW1iZXIiPT1uP3h0KHIpJiZHdChlLHIubGVuZ3RoKToic3RyaW5nIj09biYmZSBpbiByKSYmQihyW2VdLHQpfSh0LGUscikmJihlPXI9dm9pZCAwKSx0PWVlKHQpLHZvaWQgMD09PWU/KGU9dCx0PTApOmU9ZWUoZSksZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBvPS0xLHU9THQoV3QoKGUtdCkvKHJ8fDEpKSwwKSxjPUFycmF5KHUpO3UtLTspY1tuP3U6KytvXT10LHQrPXI7cmV0dXJuIGN9KHQsZSxyPXZvaWQgMD09PXI/dDxlPzE6LTE6ZWUocikscmUpfSxvZT1uZTtmdW5jdGlvbiB1ZSh0KXt2YXIgZT10aGlzLl9fZGF0YV9fPW5ldyBrKHQpO3RoaXMuc2l6ZT1lLnNpemV9dWUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1uZXcgayx0aGlzLnNpemU9MH0sdWUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9ZS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1lLnNpemUscn0sdWUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9LHVlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfSx1ZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihyIGluc3RhbmNlb2Ygayl7dmFyIG49ci5fX2RhdGFfXztpZighQ3x8bi5sZW5ndGg8MTk5KXJldHVybiBuLnB1c2goW3QsZV0pLHRoaXMuc2l6ZT0rK3Iuc2l6ZSx0aGlzO3I9dGhpcy5fX2RhdGFfXz1uZXcgUihuKX1yZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemU9ci5zaXplLHRoaXN9O3ZhciBjZT1mdW5jdGlvbigpe3RyeXt2YXIgdD1FKE9iamVjdCwiZGVmaW5lUHJvcGVydHkiKTtyZXR1cm4gdCh7fSwiIix7fSksdH1jYXRjaCh0KXt9fSgpLGllPWNlO2Z1bmN0aW9uIGFlKHQsZSxyKXsiX19wcm90b19fIj09ZSYmaWU/aWUodCxlLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpyLHdyaXRhYmxlOiEwfSk6dFtlXT1yfXZhciBmZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIGxlKHQsZSxyKXt2YXIgbj10W2VdO2ZlLmNhbGwodCxlKSYmQihuLHIpJiYodm9pZCAwIT09cnx8ZSBpbiB0KXx8YWUodCxlLHIpfWZ1bmN0aW9uIHNlKHQsZSxyLG4pe3ZhciBvPSFyO3J8fChyPXt9KTtmb3IodmFyIHU9LTEsYz1lLmxlbmd0aDsrK3U8Yzspe3ZhciBpPWVbdV0sYT1uP24ocltpXSx0W2ldLGkscix0KTp2b2lkIDA7dm9pZCAwPT09YSYmKGE9dFtpXSksbz9hZShyLGksYSk6bGUocixpLGEpfXJldHVybiByfWZ1bmN0aW9uIHBlKHQpe3JldHVybiBwKHQpJiYiW29iamVjdCBBcmd1bWVudHNdIj09cyh0KX12YXIgYmU9T2JqZWN0LnByb3RvdHlwZSx5ZT1iZS5oYXNPd25Qcm9wZXJ0eSx2ZT1iZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxoZT1wZShmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP3BlOmZ1bmN0aW9uKHQpe3JldHVybiBwKHQpJiZ5ZS5jYWxsKHQsImNhbGxlZSIpJiYhdmUuY2FsbCh0LCJjYWxsZWUiKX07dmFyIGplPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsZGU9amUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUmJiFtb2R1bGUubm9kZVR5cGUmJm1vZHVsZSxfZT1kZSYmZGUuZXhwb3J0cz09PWplP24uQnVmZmVyOnZvaWQgMCxnZT0oX2U/X2UuaXNCdWZmZXI6dm9pZCAwKXx8ZnVuY3Rpb24oKXtyZXR1cm4hMX0sT2U9e307ZnVuY3Rpb24gbWUodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpfX1PZVsiW29iamVjdCBGbG9hdDMyQXJyYXldIl09T2VbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPU9lWyJbb2JqZWN0IEludDhBcnJheV0iXT1PZVsiW29iamVjdCBJbnQxNkFycmF5XSJdPU9lWyJbb2JqZWN0IEludDMyQXJyYXldIl09T2VbIltvYmplY3QgVWludDhBcnJheV0iXT1PZVsiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iXT1PZVsiW29iamVjdCBVaW50MTZBcnJheV0iXT1PZVsiW29iamVjdCBVaW50MzJBcnJheV0iXT0hMCxPZVsiW29iamVjdCBBcmd1bWVudHNdIl09T2VbIltvYmplY3QgQXJyYXldIl09T2VbIltvYmplY3QgQXJyYXlCdWZmZXJdIl09T2VbIltvYmplY3QgQm9vbGVhbl0iXT1PZVsiW29iamVjdCBEYXRhVmlld10iXT1PZVsiW29iamVjdCBEYXRlXSJdPU9lWyJbb2JqZWN0IEVycm9yXSJdPU9lWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPU9lWyJbb2JqZWN0IE1hcF0iXT1PZVsiW29iamVjdCBOdW1iZXJdIl09T2VbIltvYmplY3QgT2JqZWN0XSJdPU9lWyJbb2JqZWN0IFJlZ0V4cF0iXT1PZVsiW29iamVjdCBTZXRdIl09T2VbIltvYmplY3QgU3RyaW5nXSJdPU9lWyJbb2JqZWN0IFdlYWtNYXBdIl09ITE7dmFyIHdlPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsQWU9d2UmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUmJiFtb2R1bGUubm9kZVR5cGUmJm1vZHVsZSx4ZT1BZSYmQWUuZXhwb3J0cz09PXdlJiZlLnByb2Nlc3MsU2U9ZnVuY3Rpb24oKXt0cnl7dmFyIHQ9QWUmJkFlLnJlcXVpcmUmJkFlLnJlcXVpcmUoInV0aWwiKS50eXBlcztyZXR1cm4gdHx8eGUmJnhlLmJpbmRpbmcmJnhlLmJpbmRpbmcoInV0aWwiKX1jYXRjaCh0KXt9fSgpLHplPVNlJiZTZS5pc1R5cGVkQXJyYXksUGU9emU/bWUoemUpOmZ1bmN0aW9uKHQpe3JldHVybiBwKHQpJiZBdCh0Lmxlbmd0aCkmJiEhT2Vbcyh0KV19LEllPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gRWUoZSxyKXt2YXIgbj10KGUpLG89IW4mJmhlKGUpLHU9IW4mJiFvJiZnZShlKSxjPSFuJiYhbyYmIXUmJlBlKGUpLGk9bnx8b3x8dXx8YyxhPWk/ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9LTEsbj1BcnJheSh0KTsrK3I8dDspbltyXT1lKHIpO3JldHVybiBufShlLmxlbmd0aCxTdHJpbmcpOltdLGY9YS5sZW5ndGg7Zm9yKHZhciBsIGluIGUpIXImJiFJZS5jYWxsKGUsbCl8fGkmJigibGVuZ3RoIj09bHx8dSYmKCJvZmZzZXQiPT1sfHwicGFyZW50Ij09bCl8fGMmJigiYnVmZmVyIj09bHx8ImJ5dGVMZW5ndGgiPT1sfHwiYnl0ZU9mZnNldCI9PWwpfHxHdChsLGYpKXx8YS5wdXNoKGwpO3JldHVybiBhfWZ1bmN0aW9uIEZlKHQpe3JldHVybiB4dCh0KT9FZSh0KTppdCh0KX12YXIgVWU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBNZSh0KXtpZighaCh0KSlyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9W107aWYobnVsbCE9dClmb3IodmFyIHIgaW4gT2JqZWN0KHQpKWUucHVzaChyKTtyZXR1cm4gZX0odCk7dmFyIGU9bnQodCkscj1bXTtmb3IodmFyIG4gaW4gdCkoImNvbnN0cnVjdG9yIiE9bnx8IWUmJlVlLmNhbGwodCxuKSkmJnIucHVzaChuKTtyZXR1cm4gcn1mdW5jdGlvbiAkZSh0KXtyZXR1cm4geHQodCk/RWUodCwhMCk6TWUodCl9dmFyIEJlPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsVGU9QmUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUmJiFtb2R1bGUubm9kZVR5cGUmJm1vZHVsZSxOZT1UZSYmVGUuZXhwb3J0cz09PUJlP24uQnVmZmVyOnZvaWQgMCxrZT1OZT9OZS5hbGxvY1Vuc2FmZTp2b2lkIDA7ZnVuY3Rpb24gQ2UoKXtyZXR1cm5bXX12YXIgRGU9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxSZT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLFZlPVJlP2Z1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P1tdOih0PU9iamVjdCh0KSxmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPTAsdT1bXTsrK3I8bjspe3ZhciBjPXRbcl07ZShjLHIsdCkmJih1W28rK109Yyl9cmV0dXJuIHV9KFJlKHQpLGZ1bmN0aW9uKGUpe3JldHVybiBEZS5jYWxsKHQsZSl9KSl9OkNlLFdlPVZlO2Z1bmN0aW9uIExlKHQsZSl7Zm9yKHZhciByPS0xLG49ZS5sZW5ndGgsbz10Lmxlbmd0aDsrK3I8bjspdFtvK3JdPWVbcl07cmV0dXJuIHR9dmFyIHFlPW90KE9iamVjdC5nZXRQcm90b3R5cGVPZixPYmplY3QpLEdlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM/ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdO3Q7KUxlKGUsV2UodCkpLHQ9cWUodCk7cmV0dXJuIGV9OkNlLEtlPUdlO2Z1bmN0aW9uIEhlKGUscixuKXt2YXIgbz1yKGUpO3JldHVybiB0KGUpP286TGUobyxuKGUpKX1mdW5jdGlvbiBKZSh0KXtyZXR1cm4gSGUodCxGZSxXZSl9ZnVuY3Rpb24gUWUodCl7cmV0dXJuIEhlKHQsJGUsS2UpfXZhciBYZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBZZT1uLlVpbnQ4QXJyYXk7ZnVuY3Rpb24gWmUodCl7dmFyIGU9bmV3IHQuY29uc3RydWN0b3IodC5ieXRlTGVuZ3RoKTtyZXR1cm4gbmV3IFllKGUpLnNldChuZXcgWWUodCkpLGV9dmFyIHRyPS9cdyokLzt2YXIgZXI9bz9vLnByb3RvdHlwZTp2b2lkIDAscnI9ZXI/ZXIudmFsdWVPZjp2b2lkIDA7ZnVuY3Rpb24gbnIodCxlLHIpe3ZhciBuLG89dC5jb25zdHJ1Y3Rvcjtzd2l0Y2goZSl7Y2FzZSJbb2JqZWN0IEFycmF5QnVmZmVyXSI6cmV0dXJuIFplKHQpO2Nhc2UiW29iamVjdCBCb29sZWFuXSI6Y2FzZSJbb2JqZWN0IERhdGVdIjpyZXR1cm4gbmV3IG8oK3QpO2Nhc2UiW29iamVjdCBEYXRhVmlld10iOnJldHVybiBmdW5jdGlvbih0LGUpe3ZhciByPWU/WmUodC5idWZmZXIpOnQuYnVmZmVyO3JldHVybiBuZXcgdC5jb25zdHJ1Y3RvcihyLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpfSh0LHIpO2Nhc2UiW29iamVjdCBGbG9hdDMyQXJyYXldIjpjYXNlIltvYmplY3QgRmxvYXQ2NEFycmF5XSI6Y2FzZSJbb2JqZWN0IEludDhBcnJheV0iOmNhc2UiW29iamVjdCBJbnQxNkFycmF5XSI6Y2FzZSJbb2JqZWN0IEludDMyQXJyYXldIjpjYXNlIltvYmplY3QgVWludDhBcnJheV0iOmNhc2UiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iOmNhc2UiW29iamVjdCBVaW50MTZBcnJheV0iOmNhc2UiW29iamVjdCBVaW50MzJBcnJheV0iOnJldHVybiBmdW5jdGlvbih0LGUpe3ZhciByPWU/WmUodC5idWZmZXIpOnQuYnVmZmVyO3JldHVybiBuZXcgdC5jb25zdHJ1Y3RvcihyLHQuYnl0ZU9mZnNldCx0Lmxlbmd0aCl9KHQscik7Y2FzZSJbb2JqZWN0IE1hcF0iOmNhc2UiW29iamVjdCBTZXRdIjpyZXR1cm4gbmV3IG87Y2FzZSJbb2JqZWN0IE51bWJlcl0iOmNhc2UiW29iamVjdCBTdHJpbmddIjpyZXR1cm4gbmV3IG8odCk7Y2FzZSJbb2JqZWN0IFJlZ0V4cF0iOnJldHVybiBmdW5jdGlvbih0KXt2YXIgZT1uZXcgdC5jb25zdHJ1Y3Rvcih0LnNvdXJjZSx0ci5leGVjKHQpKTtyZXR1cm4gZS5sYXN0SW5kZXg9dC5sYXN0SW5kZXgsZX0odCk7Y2FzZSJbb2JqZWN0IFN5bWJvbF0iOnJldHVybiBuPXQscnI/T2JqZWN0KHJyLmNhbGwobikpOnt9fX12YXIgb3I9T2JqZWN0LmNyZWF0ZSx1cj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKCFoKGUpKXJldHVybnt9O2lmKG9yKXJldHVybiBvcihlKTt0LnByb3RvdHlwZT1lO3ZhciByPW5ldyB0O3JldHVybiB0LnByb3RvdHlwZT12b2lkIDAscn19KCksY3I9dXI7dmFyIGlyPVNlJiZTZS5pc01hcCxhcj1pcj9tZShpcik6ZnVuY3Rpb24odCl7cmV0dXJuIHAodCkmJiJbb2JqZWN0IE1hcF0iPT13dCh0KX07dmFyIGZyPVNlJiZTZS5pc1NldCxscj1mcj9tZShmcik6ZnVuY3Rpb24odCl7cmV0dXJuIHAodCkmJiJbb2JqZWN0IFNldF0iPT13dCh0KX0sc3I9IltvYmplY3QgQXJndW1lbnRzXSIscHI9IltvYmplY3QgRnVuY3Rpb25dIixicj0iW29iamVjdCBPYmplY3RdIix5cj17fTtmdW5jdGlvbiB2cihlLHIsbixvLHUsYyl7dmFyIGksYT0xJnIsZj0yJnIsbD00JnI7aWYobiYmKGk9dT9uKGUsbyx1LGMpOm4oZSkpLHZvaWQgMCE9PWkpcmV0dXJuIGk7aWYoIWgoZSkpcmV0dXJuIGU7dmFyIHM9dChlKTtpZihzKXtpZihpPWZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3RoLHI9bmV3IHQuY29uc3RydWN0b3IoZSk7cmV0dXJuIGUmJiJzdHJpbmciPT10eXBlb2YgdFswXSYmWGUuY2FsbCh0LCJpbmRleCIpJiYoci5pbmRleD10LmluZGV4LHIuaW5wdXQ9dC5pbnB1dCkscn0oZSksIWEpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIHI9LTEsbj10Lmxlbmd0aDtmb3IoZXx8KGU9QXJyYXkobikpOysrcjxuOyllW3JdPXRbcl07cmV0dXJuIGV9KGUsaSl9ZWxzZXt2YXIgcD13dChlKSxiPXA9PXByfHwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iPT1wO2lmKGdlKGUpKXJldHVybiBmdW5jdGlvbih0LGUpe2lmKGUpcmV0dXJuIHQuc2xpY2UoKTt2YXIgcj10Lmxlbmd0aCxuPWtlP2tlKHIpOm5ldyB0LmNvbnN0cnVjdG9yKHIpO3JldHVybiB0LmNvcHkobiksbn0oZSxhKTtpZihwPT1icnx8cD09c3J8fGImJiF1KXtpZihpPWZ8fGI/e306ZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQuY29uc3RydWN0b3J8fG50KHQpP3t9OmNyKHFlKHQpKX0oZSksIWEpcmV0dXJuIGY/ZnVuY3Rpb24odCxlKXtyZXR1cm4gc2UodCxLZSh0KSxlKX0oZSxmdW5jdGlvbih0LGUpe3JldHVybiB0JiZzZShlLCRlKGUpLHQpfShpLGUpKTpmdW5jdGlvbih0LGUpe3JldHVybiBzZSh0LFdlKHQpLGUpfShlLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQmJnNlKGUsRmUoZSksdCl9KGksZSkpfWVsc2V7aWYoIXlyW3BdKXJldHVybiB1P2U6e307aT1ucihlLHAsYSl9fWN8fChjPW5ldyB1ZSk7dmFyIHk9Yy5nZXQoZSk7aWYoeSlyZXR1cm4geTtjLnNldChlLGkpLGxyKGUpP2UuZm9yRWFjaChmdW5jdGlvbih0KXtpLmFkZCh2cih0LHIsbix0LGUsYykpfSk6YXIoZSkmJmUuZm9yRWFjaChmdW5jdGlvbih0LG8pe2kuc2V0KG8sdnIodCxyLG4sbyxlLGMpKX0pO3ZhciB2PXM/dm9pZCAwOihsP2Y/UWU6SmU6Zj8kZTpGZSkoZSk7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoOysrcjxuJiYhMSE9PWUodFtyXSxyLHQpOyk7fSh2fHxlLGZ1bmN0aW9uKHQsbyl7diYmKHQ9ZVtvPXRdKSxsZShpLG8sdnIodCxyLG4sbyxlLGMpKX0pLGl9eXJbc3JdPXlyWyJbb2JqZWN0IEFycmF5XSJdPXlyWyJbb2JqZWN0IEFycmF5QnVmZmVyXSJdPXlyWyJbb2JqZWN0IERhdGFWaWV3XSJdPXlyWyJbb2JqZWN0IEJvb2xlYW5dIl09eXJbIltvYmplY3QgRGF0ZV0iXT15clsiW29iamVjdCBGbG9hdDMyQXJyYXldIl09eXJbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPXlyWyJbb2JqZWN0IEludDhBcnJheV0iXT15clsiW29iamVjdCBJbnQxNkFycmF5XSJdPXlyWyJbb2JqZWN0IEludDMyQXJyYXldIl09eXJbIltvYmplY3QgTWFwXSJdPXlyWyJbb2JqZWN0IE51bWJlcl0iXT15clticl09eXJbIltvYmplY3QgUmVnRXhwXSJdPXlyWyJbb2JqZWN0IFNldF0iXT15clsiW29iamVjdCBTdHJpbmddIl09eXJbIltvYmplY3QgU3ltYm9sXSJdPXlyWyJbb2JqZWN0IFVpbnQ4QXJyYXldIl09eXJbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09eXJbIltvYmplY3QgVWludDE2QXJyYXldIl09eXJbIltvYmplY3QgVWludDMyQXJyYXldIl09ITAseXJbIltvYmplY3QgRXJyb3JdIl09eXJbcHJdPXlyWyJbb2JqZWN0IFdlYWtNYXBdIl09ITE7ZnVuY3Rpb24gaHIodCl7cmV0dXJuIHZyKHQsNSl9ZnVuY3Rpb24ganIodCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBkcih0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBfcih0KXtyZXR1cm4hMD09PShlPXQpfHwhMT09PWV8fHAoZSkmJiJbb2JqZWN0IEJvb2xlYW5dIj09cyhlKTt2YXIgZX1mdW5jdGlvbiBncih0LGU9bnVsbCxyPXt9KXtqKGUpfHwoZT10PT50KTtsZXQgbj1ldChyLCJmb3JjZSIsITEpO3JldHVybiBfcihuKXx8KG49ITEpLGZ1bmN0aW9uKHQsZSxyPSExKXtsZXQgbj1bXTtpZighanIodCkmJiFkcih0KSlyZXR1cm4gZSh0LG51bGwsW10pO2Z1bmN0aW9uIG8odCl7aWYoanIodCkpcmV0dXJuIG9lKFZ0KHQpKTtpZihkcih0KSl7bGV0IGU9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCksbj1udWxsO3JldHVybiByJiYobj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpKSxqcihlKXx8KGU9W10pLGpyKG4pfHwobj1bXSksWy4uLmUsLi4ubl19cmV0dXJuIHR9cmV0dXJuIGZ1bmN0aW9uIHQocix1KXtpZihqcihyKSlyZXR1cm4gbyhyKS5tYXAobz0+e2xldCB1PXJbb10sYz1ocihuKTtyZXR1cm4gbi5wdXNoKG8pLHU9ZSh1LG8sYyksdT10KHUpLG4ucG9wKCksdX0pO2lmKGRyKHIpKXtsZXQgdT1vKHIpLGM9e307cmV0dXJuIHUubWFwKG89PntsZXQgdT1yW29dLGk9aHIobik7bi5wdXNoKG8pLHU9ZSh1LG8saSksdT10KHUpLG4ucG9wKCksY1tvXT11fSksY31yZXR1cm4gcn0odCl9KHQsZSxuKX1mdW5jdGlvbiBPcih0KXtyZXR1cm4hKCFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCl8fCIiPT09dCl9ZnVuY3Rpb24gbXIodCxlPXt9KXtpZihqcih0KSl7aWYoMD09PXQubGVuZ3RoKXJldHVybltdfWVsc2V7aWYoIWRyKHQpKXJldHVybltdO2lmKGZ1bmN0aW9uKHQpe2lmKGRyKHQpKXtmb3IobGV0IGUgaW4gdClyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4hMX0odCkpcmV0dXJuW119bGV0IHI9ZXQoZSwiYmluZEtleSIsbnVsbCk7T3Iocil8fChyPSJpZCIpO2xldCBuPWV0KGUsImJpbmRDaGlsZHJlbiIsbnVsbCk7T3Iobil8fChuPSJjaGlsZHJlbiIpO2xldCBvPSExO2RyKHQpJiYobz0hMCx0PVt0XSk7bGV0IHU9W107cmV0dXJuIGdyKHQsKHQsZSxvKT0+e2xldCBjPWV0KHQscixudWxsKSxpPWV0KHQsbixudWxsKTtpZihjKXtsZXQgcj1mdW5jdGlvbih0KXtsZXQgZT1bdFswXV07Zm9yKGxldCByPTE7cjx0Lmxlbmd0aDtyKyspe2xldCBvPXRbcl07ZS5wdXNoKG4pLGUucHVzaChvKX1yZXR1cm4gZX0oWy4uLm8sZV0pO2lmKHUucHVzaCh7Li4udCxsZXZlbDooVnQociktMSkvMixuazpyfSksaSlyZXR1cm4gaX19KSxvJiYodT11WzBdKSx1fWxldCBmbGF0dGVuVHJlZVdrPWFzeW5jIGZ1bmN0aW9uKHQsZT17fSl7cmV0dXJuIG1yKHQsZSl9OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogZmxhdHRlblRyZWVXawogICAgICAgIH0KICAgICAgICAKCiAgICAvL29uCiAgICAKCiAgICAvL3NhdmUKICAgIGluc3RhbmNlID0gcgoKfQoKZnVuY3Rpb24gc2VuZE1lc3NhZ2UoZGF0YSkgewogICAgCiAgICAgICAgc2VsZi5wb3N0TWVzc2FnZShkYXRhKQogICAgICAgIAp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBmbGF0dGVuVHJlZVdrCiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgCiAgICAgICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdlbWl0JywKICAgICAgICAgICAgICAgIGV2TmFtZTogJ2Vycm9yJywKICAgICAgICAgICAgICAgIG1zZzogZXJyLAogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICAgICAgfQogICAgICAgICAgICAKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9mdW4KICAgICAgICAgICAgbGV0IGZ1biA9IGluc3RhbmNlW2RhdGEuZnVuXQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CgogICAgICAgICAgICAvL2V4ZWMKICAgICAgICAgICAgYXdhaXQgZnVuKC4uLmlucHV0KQogICAgICAgICAgICAgICAgLnRoZW4oKHN1YykgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdzdWNjZXNzJwogICAgICAgICAgICAgICAgICAgIG1zZz1zdWMKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdlcnJvcicKICAgICAgICAgICAgICAgICAgICBtc2c9ZXJyCiAgICAgICAgICAgICAgICB9KQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KICAgICAgICAKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBzZWxmLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIHJlY3ZNZXNzYWdlKGUuZGF0YSkKICAgICAgICB9CiAgICAgICAgCgp0cnl7CiAgICBwcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuaGFuZGxlZFJlamVjdGlvbicsIGVycikKICAgIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCBlcnIpCiAgICB9KQp9CmNhdGNoKGVycil7fQoK");function l(){let l=new e;let I=function(d){try{let l=new Blob([d]),I=window.URL||window.webkitURL;return new Worker(I.createObjectURL(l))}catch(d){m(d)}}(d);if(!I)return m("invalid worker"),null;function Z(){let d=function(){let d,l,I=new Promise(function(){d=arguments[0],l=arguments[1]});return I.resolve=d,I.reject=l,I}(),Z=function(d=10){let l=[],I="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),Z=I.length;for(let m=0;m<d;m++)l[m]=I[0|Math.random()*Z];return l.join("")}(),m={mode:"call",id:Z,fun:"main",input:[...arguments]};return I.postMessage(m),l.once(Z,l=>{"success"===l.state?d.resolve(l.msg):d.reject(l.msg)}),d}function m(d){l.emit("error",d)}return I.onmessage=function(d){!function(d){let I=d,Z=I.mode;"emit"!==Z&&"return"!==Z||("emit"===Z&&l.emit(I.evName,I.msg),"return"===Z&&l.emit(I.id,I))}(d.data)},I.onerror=m,I.onmessageerror=function(d){m(d.data)},function(){let d={mode:"init",type:"function",input:[...arguments]};I.postMessage(d)}([...arguments]),l.main=Z,l.main=Z,l.terminate=function(){I?(I.terminate(),I=void 0):m("worker has been terminated")},l}h=async function(){let d=[...arguments],I=l();return await I.main(...d).finally(()=>{I.terminate()})}}();try{process.on("unhandledRejection",d=>{console.log("outer:unhandledRejection",d)}),process.on("uncaughtException",d=>{console.log("outer:uncaughtException",d)}),process.on("uncaughtExceptionMonitor",d=>{console.log("outer:uncaughtExceptionMonitor",d)})}catch(d){}var K=h;export{K as default};
|