You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by ji...@apache.org on 2022/07/29 05:52:03 UTC

[doris] branch master updated: [improvement]Remove the website build framework from the docs directory (#11081)

This is an automated email from the ASF dual-hosted git repository.

jiafengzheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 92bb7d0720 [improvement]Remove the website build framework from the docs directory (#11081)
92bb7d0720 is described below

commit 92bb7d0720fea900a73cec7dff201f982a78d1a4
Author: jiafeng.zhang <zh...@gmail.com>
AuthorDate: Fri Jul 29 13:51:57 2022 +0800

    [improvement]Remove the website build framework from the docs directory (#11081)
    
    Remove the website build framework from the docs directory
---
 .github/workflows/build-extension.yml              |     6 +-
 docs/.markdownlint.yml                             |    19 -
 docs/.vuepress/config.js                           |   309 -
 docs/.vuepress/public/blog-images/avatar.png       |   Bin 70469 -> 0 bytes
 docs/.vuepress/public/blog-images/core1.jpg        |   Bin 2505 -> 0 bytes
 docs/.vuepress/public/blog-images/core2.jpg        |   Bin 2766 -> 0 bytes
 docs/.vuepress/public/blog-images/core3.jpg        |   Bin 2786 -> 0 bytes
 docs/.vuepress/public/blog-images/core4.jpg        |   Bin 2600 -> 0 bytes
 docs/.vuepress/public/blog-images/corebg.jpg       |   Bin 16491 -> 0 bytes
 docs/.vuepress/public/blog-images/data-1.png       |   Bin 14353 -> 0 bytes
 docs/.vuepress/public/blog-images/data.png         |   Bin 17143 -> 0 bytes
 docs/.vuepress/public/blog-images/doris1.png       |   Bin 16796 -> 0 bytes
 docs/.vuepress/public/blog-images/doris2.png       |   Bin 29756 -> 0 bytes
 docs/.vuepress/public/blog-images/doris3.png       |   Bin 26017 -> 0 bytes
 docs/.vuepress/public/blog-images/dorisSolid1.jpg  |   Bin 14909 -> 0 bytes
 docs/.vuepress/public/blog-images/dorisSolid2.jpg  |   Bin 15325 -> 0 bytes
 docs/.vuepress/public/blog-images/dorisyezi.png    |   Bin 9418 -> 0 bytes
 docs/.vuepress/public/blog-images/ebi1.jpg         |   Bin 28357 -> 0 bytes
 docs/.vuepress/public/blog-images/ebi2.jpg         |   Bin 16284 -> 0 bytes
 docs/.vuepress/public/blog-images/ebi3.jpg         |   Bin 24237 -> 0 bytes
 docs/.vuepress/public/blog-images/fx1.png          |   Bin 293 -> 0 bytes
 docs/.vuepress/public/blog-images/fx2.png          |   Bin 462 -> 0 bytes
 docs/.vuepress/public/blog-images/fx3.png          |   Bin 359 -> 0 bytes
 docs/.vuepress/public/blog-images/fx4.png          |   Bin 574 -> 0 bytes
 docs/.vuepress/public/blog-images/fx5.png          |   Bin 492 -> 0 bytes
 docs/.vuepress/public/blog-images/fx6.png          |   Bin 368 -> 0 bytes
 docs/.vuepress/public/blog-images/graduate.jpg     |   Bin 29061 -> 0 bytes
 docs/.vuepress/public/blog-images/hero.png         |   Bin 15414 -> 0 bytes
 docs/.vuepress/public/blog-images/homebannerbg.jpg |   Bin 11698 -> 0 bytes
 docs/.vuepress/public/blog-images/hrighting.png    |   Bin 80055 -> 0 bytes
 docs/.vuepress/public/blog-images/i1.png           |   Bin 8751 -> 0 bytes
 docs/.vuepress/public/blog-images/i2.png           |   Bin 5701 -> 0 bytes
 docs/.vuepress/public/blog-images/i3.png           |   Bin 8346 -> 0 bytes
 docs/.vuepress/public/blog-images/i4.png           |   Bin 7284 -> 0 bytes
 docs/.vuepress/public/blog-images/i5.png           |   Bin 6021 -> 0 bytes
 docs/.vuepress/public/blog-images/i6.png           |   Bin 6985 -> 0 bytes
 docs/.vuepress/public/blog-images/icobg.png        |   Bin 83821 -> 0 bytes
 docs/.vuepress/public/blog-images/is1.png          |   Bin 3093 -> 0 bytes
 docs/.vuepress/public/blog-images/is2.png          |   Bin 3251 -> 0 bytes
 docs/.vuepress/public/blog-images/newdownb.jpg     |   Bin 15229 -> 0 bytes
 docs/.vuepress/public/blog-images/news1.jpg        |   Bin 32566 -> 0 bytes
 docs/.vuepress/public/blog-images/news2.jpg        |   Bin 27611 -> 0 bytes
 docs/.vuepress/public/blog-images/news3.jpg        |   Bin 6935 -> 0 bytes
 docs/.vuepress/public/blog-images/xbkuanglogo.png  |   Bin 15858 -> 0 bytes
 docs/.vuepress/public/css/animate.min.css          |    12 -
 docs/.vuepress/public/font/font.css                |    47 -
 .../public/font/font_3319292_bdqvc63l075.svg       |    25 -
 .../public/font/font_3319292_bdqvc63l075.ttf       |   Bin 2028 -> 0 bytes
 .../public/font/font_3319292_bdqvc63l075.woff      |   Bin 1392 -> 0 bytes
 .../public/font/font_3319292_bdqvc63l075.woff2     |   Bin 964 -> 0 bytes
 .../public/images/cloudcanal/cloudcanal-1.jpg      |   Bin 169852 -> 0 bytes
 .../public/images/cloudcanal/cloudcanal-2.jpg      |   Bin 369963 -> 0 bytes
 .../public/images/cloudcanal/cloudcanal-3.jpg      |   Bin 420489 -> 0 bytes
 .../public/images/cloudcanal/cloudcanal-4.png      |   Bin 239668 -> 0 bytes
 .../public/images/cloudcanal/cloudcanal-5.png      |   Bin 250224 -> 0 bytes
 .../public/images/cloudcanal/cloudcanal-6.png      |   Bin 339062 -> 0 bytes
 .../public/images/cloudcanal/cloudcanal-7.png      |   Bin 357200 -> 0 bytes
 .../public/images/cloudcanal/cloudcanal-8.jpg      |   Bin 308720 -> 0 bytes
 docs/.vuepress/public/images/create-pr.png         |   Bin 394922 -> 0 bytes
 docs/.vuepress/public/images/create-pr3.png        |   Bin 351590 -> 0 bytes
 docs/.vuepress/public/images/fork-repo.png         |   Bin 585255 -> 0 bytes
 docs/.vuepress/public/images/home/aggr.png         |   Bin 646 -> 0 bytes
 docs/.vuepress/public/images/home/banner-stats.png |   Bin 209362 -> 0 bytes
 docs/.vuepress/public/images/home/clock.png        |   Bin 1176 -> 0 bytes
 docs/.vuepress/public/images/home/cpu.png          |   Bin 468 -> 0 bytes
 docs/.vuepress/public/images/home/dev.png          |   Bin 865 -> 0 bytes
 docs/.vuepress/public/images/home/hero-bg.png      |   Bin 167526 -> 0 bytes
 docs/.vuepress/public/images/home/logo-360.png     |   Bin 9589 -> 0 bytes
 .../.vuepress/public/images/home/logo-aispeech.png |   Bin 14936 -> 0 bytes
 docs/.vuepress/public/images/home/logo-baidu.png   |   Bin 12488 -> 0 bytes
 .../.vuepress/public/images/home/logo-dingdong.png |   Bin 11239 -> 0 bytes
 .../public/images/home/logo-doris-white.png        |   Bin 1434 -> 0 bytes
 .../public/images/home/logo-footprint.png          |   Bin 15551 -> 0 bytes
 .../.vuepress/public/images/home/logo-game-163.png |   Bin 22728 -> 0 bytes
 docs/.vuepress/public/images/home/logo-huawei.png  |   Bin 8328 -> 0 bytes
 docs/.vuepress/public/images/home/logo-jd.png      |   Bin 13544 -> 0 bytes
 .../.vuepress/public/images/home/logo-kuaishou.png |   Bin 11532 -> 0 bytes
 docs/.vuepress/public/images/home/logo-meituan.png |   Bin 6757 -> 0 bytes
 docs/.vuepress/public/images/home/logo-shopee.png  |   Bin 11752 -> 0 bytes
 docs/.vuepress/public/images/home/logo-sohu.png    |   Bin 10895 -> 0 bytes
 docs/.vuepress/public/images/home/logo-tantan.png  |   Bin 6061 -> 0 bytes
 .../public/images/home/logo-tongcheng.png          |   Bin 9968 -> 0 bytes
 docs/.vuepress/public/images/home/logo-vipkid.png  |   Bin 13188 -> 0 bytes
 docs/.vuepress/public/images/home/logo-weibo.png   |   Bin 12884 -> 0 bytes
 .../public/images/home/logo-wuyiyuntong.png        |   Bin 17095 -> 0 bytes
 docs/.vuepress/public/images/home/logo-xiaomi.png  |   Bin 8913 -> 0 bytes
 docs/.vuepress/public/images/home/logo-yidian.png  |   Bin 8614 -> 0 bytes
 docs/.vuepress/public/images/home/logo-youdao.png  |   Bin 8841 -> 0 bytes
 docs/.vuepress/public/images/home/logo-zhihu.png   |   Bin 14110 -> 0 bytes
 .../public/images/home/logo-zuoyebang.png          |   Bin 13144 -> 0 bytes
 docs/.vuepress/public/images/home/new.svg          |     1 -
 docs/.vuepress/public/images/home/program.png      |   Bin 786 -> 0 bytes
 docs/.vuepress/public/images/home/rollup.png       |   Bin 1051 -> 0 bytes
 docs/.vuepress/public/images/home/sql.png          |   Bin 998 -> 0 bytes
 docs/.vuepress/public/images/home/struct.png       |   Bin 1130 -> 0 bytes
 .../public/images/home/structure-fresh.png         |   Bin 38137 -> 0 bytes
 docs/.vuepress/public/images/new-pr.png            |   Bin 443729 -> 0 bytes
 docs/.vuepress/public/js/home.js                   |    30 -
 docs/.vuepress/public/js/jquery.min.js             |     5 -
 docs/.vuepress/public/js/js.js                     |   118 -
 docs/.vuepress/public/js/wow.min.js                |     2 -
 docs/.vuepress/public/js/xRoll.js                  |    19 -
 docs/.vuepress/sidebar/en/community.js             |    49 -
 docs/.vuepress/sidebar/en/developer.js             |    49 -
 docs/.vuepress/sidebar/en/docs.js                  |  1014 -
 docs/.vuepress/sidebar/zh-CN/community.js          |    49 -
 docs/.vuepress/sidebar/zh-CN/developer.js          |    51 -
 docs/.vuepress/sidebar/zh-CN/docs.js               |  1014 -
 docs/.vuepress/styles/index.styl                   |  2764 --
 docs/.vuepress/styles/palette.styl                 |    25 -
 .../theme/components/AlgoliaSearchBox.vue          |   194 -
 docs/.vuepress/theme/components/Common.vue         |   245 -
 docs/.vuepress/theme/components/Dropdown.vue       |   272 -
 docs/.vuepress/theme/components/DropdownLink.vue   |   181 -
 .../theme/components/DropdownTransition.vue        |    52 -
 docs/.vuepress/theme/components/Footer.vue         |   112 -
 docs/.vuepress/theme/components/FriendLink.vue     |   240 -
 docs/.vuepress/theme/components/Home.vue           |   208 -
 docs/.vuepress/theme/components/HomeBlog/hock.js   |    26 -
 docs/.vuepress/theme/components/HomeBlog/index.vue |   323 -
 docs/.vuepress/theme/components/MobShare.vue       |    48 -
 .../.vuepress/theme/components/Mode/ModePicker.vue |   118 -
 docs/.vuepress/theme/components/Mode/applyMode.js  |    57 -
 docs/.vuepress/theme/components/Mode/index.vue     |   122 -
 .../.vuepress/theme/components/Mode/modeOptions.js |    62 -
 docs/.vuepress/theme/components/NavLink.vue        |    85 -
 docs/.vuepress/theme/components/NavLinks.vue       |   211 -
 docs/.vuepress/theme/components/Navbar.vue         |   182 -
 docs/.vuepress/theme/components/NoteAbstract.vue   |    84 -
 .../theme/components/NoteAbstractItem.vue          |   109 -
 docs/.vuepress/theme/components/Page.vue           |   350 -
 docs/.vuepress/theme/components/PageFooter.vue     |    89 -
 docs/.vuepress/theme/components/PageInfo.vue       |   122 -
 docs/.vuepress/theme/components/Password.vue       |   339 -
 docs/.vuepress/theme/components/PersonalInfo.vue   |   133 -
 docs/.vuepress/theme/components/SearchBox.vue      |   268 -
 docs/.vuepress/theme/components/Sidebar.vue        |    85 -
 docs/.vuepress/theme/components/SidebarButton.vue  |    44 -
 docs/.vuepress/theme/components/SidebarGroup.vue   |   153 -
 docs/.vuepress/theme/components/SidebarLink.vue    |   115 -
 docs/.vuepress/theme/components/SidebarLinks.vue   |   158 -
 docs/.vuepress/theme/components/SubSidebar.vue     |    94 -
 docs/.vuepress/theme/components/TagList.vue        |    77 -
 docs/.vuepress/theme/enhanceApp.js                 |    41 -
 docs/.vuepress/theme/fonts/iconfont.css            |   258 -
 docs/.vuepress/theme/fonts/iconfont.ttf            |   Bin 17648 -> 0 bytes
 docs/.vuepress/theme/fonts/iconfont.woff           |   Bin 11476 -> 0 bytes
 docs/.vuepress/theme/fonts/iconfont.woff2          |   Bin 9992 -> 0 bytes
 docs/.vuepress/theme/global-components/Badge.vue   |    63 -
 docs/.vuepress/theme/helpers/composable.js         |    27 -
 docs/.vuepress/theme/helpers/other.js              |    69 -
 docs/.vuepress/theme/helpers/postData.js           |    91 -
 docs/.vuepress/theme/helpers/utils.js              |   283 -
 docs/.vuepress/theme/images/bg.svg                 |    40 -
 docs/.vuepress/theme/images/home-bg.jpg            |   Bin 1300686 -> 0 bytes
 docs/.vuepress/theme/images/home-head.png          |   Bin 291785 -> 0 bytes
 docs/.vuepress/theme/images/icon_vuepress_reco.png |   Bin 69432 -> 0 bytes
 docs/.vuepress/theme/index.js                      |   128 -
 docs/.vuepress/theme/layouts/404.vue               |    93 -
 docs/.vuepress/theme/layouts/Category.vue          |   201 -
 docs/.vuepress/theme/layouts/Layout.vue            |   141 -
 docs/.vuepress/theme/layouts/Tag.vue               |   100 -
 docs/.vuepress/theme/layouts/Tags.vue              |    84 -
 docs/.vuepress/theme/layouts/TimeLines.vue         |   175 -
 docs/.vuepress/theme/layouts/UserCase.vue          |   105 -
 docs/.vuepress/theme/layouts/ZhCategory.vue        |   190 -
 docs/.vuepress/theme/layouts/ZhTimeLines.vue       |   175 -
 docs/.vuepress/theme/lib/vuepress-theme-reco.js    |    25 -
 docs/.vuepress/theme/locales/en.js                 |    27 -
 docs/.vuepress/theme/locales/es.js                 |    27 -
 docs/.vuepress/theme/locales/index.js              |    26 -
 docs/.vuepress/theme/locales/ja.js                 |    27 -
 docs/.vuepress/theme/locales/ko.js                 |    27 -
 docs/.vuepress/theme/locales/zh-hans.js            |    27 -
 docs/.vuepress/theme/locales/zh-hant.js            |    27 -
 docs/.vuepress/theme/mixins/locales.js             |    44 -
 docs/.vuepress/theme/mixins/moduleTransiton.js     |    39 -
 docs/.vuepress/theme/mixins/pagination.js          |    39 -
 docs/.vuepress/theme/mixins/posts.js               |   106 -
 docs/.vuepress/theme/noopModule.js                 |    19 -
 docs/.vuepress/theme/package.json                  |    29 -
 docs/.vuepress/theme/styles/arrow.styl             |    40 -
 docs/.vuepress/theme/styles/code.styl              |   153 -
 docs/.vuepress/theme/styles/custom-blocks.styl     |    69 -
 docs/.vuepress/theme/styles/mobile.styl            |    57 -
 docs/.vuepress/theme/styles/palette.styl           |    69 -
 docs/.vuepress/theme/styles/theme.styl             |   241 -
 docs/.vuepress/theme/styles/toc.styl               |    21 -
 docs/.vuepress/theme/styles/wrapper.styl           |    27 -
 .../public => }/images/Bloom_filter.svg.png        |   Bin
 docs/{.vuepress/public => }/images/DEBUG4.png      |   Bin
 docs/{.vuepress/public => }/images/DEBUG5.png      |   Bin
 .../images/Flink-doris-connector-architecture.png  |   Bin
 .../public => }/images/Flink-doris-connector.png   |   Bin
 .../public => }/images/Flink-doris-connector1.png  |   Bin
 .../public => }/images/Flink-doris-connector2.png  |   Bin
 .../public => }/images/apache-asf-compressed.png   |   Bin
 .../public => }/images/apache-incubator-logo.png   |   Bin
 .../public => }/images/apache-incubator.png        |   Bin
 .../public => }/images/apache_incubator_logo.png   |   Bin
 .../{.vuepress/public => }/images/architecture.png |   Bin
 docs/{.vuepress/public => }/images/asf_logo.svg    |     0
 .../public => }/images/asf_logo_apache.svg         |     0
 .../public => }/images/asf_logo_wide_small.png     |   Bin
 docs/{.vuepress/public => }/images/aws_ak_sk.png   |   Bin
 .../public => }/images/backend_state.png           |   Bin
 .../public => }/images/bucket_shuffle_join.png     |   Bin
 docs/{.vuepress/public => }/images/canal_store.png |   Bin
 .../public => }/images/close_staging.png           |   Bin
 .../images/cluster_link_and_migrate_db.png         |   Bin
 .../public => }/images/cluster_namaspace.png       |   Bin
 .../public => }/images/cpu-flame-demo.svg          |     0
 .../public => }/images/cpu-pprof-demo.png          |   Bin
 .../public => }/images/cpu-pprof-demo.svg          |     0
 docs/images/create-pr.png                          |   Bin 0 -> 159594 bytes
 docs/{.vuepress/public => }/images/create-pr2.png  |   Bin
 docs/images/create-pr3.png                         |   Bin 0 -> 176477 bytes
 .../public => }/images/dashboard_navibar.png       |   Bin
 .../public => }/images/dashboard_overview.png      |   Bin
 .../public => }/images/dashboard_panel.png         |   Bin
 .../public => }/images/dashboard_row.png           |   Bin
 .../{.vuepress/public => }/images/doris-logo-1.png |   Bin
 .../{.vuepress/public => }/images/doris-logo-2.png |   Bin
 .../public => }/images/doris-logo-only.png         |   Bin
 docs/{.vuepress/public => }/images/doris-logo.png  |   Bin
 .../images/doris-manager/clustermanagenent-1.png   |   Bin
 .../images/doris-manager/clustermanagenent-2.png   |   Bin
 .../images/doris-manager/clustermanagenent-3.png   |   Bin
 .../images/doris-manager/clustermanagenent-4.png   |   Bin
 .../images/doris-manager/clustermanagenent-5.png   |   Bin
 .../images/doris-manager/initializing-1.png        |   Bin
 .../images/doris-manager/initializing-2.png        |   Bin
 .../images/doris-manager/spacelist-1.png           |   Bin
 .../images/doris-manager/spacelist-10.png          |   Bin
 .../images/doris-manager/spacelist-11.png          |   Bin
 .../images/doris-manager/spacelist-2.png           |   Bin
 .../images/doris-manager/spacelist-3.png           |   Bin
 .../images/doris-manager/spacelist-4.png           |   Bin
 .../images/doris-manager/spacelist-5.png           |   Bin
 .../images/doris-manager/spacelist-6.png           |   Bin
 .../images/doris-manager/spacelist-7.png           |   Bin
 .../images/doris-manager/spacelist-8.png           |   Bin
 .../images/doris-manager/spacelist-9.png           |   Bin
 .../images/doris-manager/spacemanagement-1.png     |   Bin
 .../images/doris-manager/spacemanagement-2.png     |   Bin
 .../images/doris-manager/spacemanagement-3.png     |   Bin
 .../images/doris-manager/systemsettings-1.png      |   Bin
 .../images/doris-manager/systemsettings-2.png      |   Bin
 .../images/doris-manager/systemsettings-3.png      |   Bin
 .../images/doris-manager/systemsettings-4.png      |   Bin
 .../images/eclipse-import-fe-project-1.png         |   Bin
 docs/{.vuepress/public => }/images/egg-logo.png    |   Bin
 docs/{.vuepress/public => }/images/egg-logo2.png   |   Bin
 .../public => }/images/export_plan_tree_1.png      |   Bin
 .../public => }/images/export_plan_tree_2.png      |   Bin
 .../public => }/images/export_status_change.png    |   Bin
 .../blog-images/logo.png => images/favicon.ico}    |   Bin
 .../public => }/images/fe_page_index.png           |   Bin
 .../{.vuepress/public => }/images/fe_page_logs.png |   Bin
 .../public => }/images/fe_page_queries.png         |   Bin
 .../public => }/images/fe_page_sessions.png        |   Bin
 .../public => }/images/fe_page_system.png          |   Bin
 .../public => }/images/fe_page_system_access.png   |   Bin
 .../public => }/images/fe_page_system_backends.png |   Bin
 .../public => }/images/fe_page_system_brokers.png  |   Bin
 .../public => }/images/fe_page_system_dbs.png      |   Bin
 .../images/fe_page_system_error_hub.png            |   Bin
 .../images/fe_page_system_frontends.png            |   Bin
 .../public => }/images/fe_page_system_jobs.png     |   Bin
 .../images/fe_page_system_statistic.png            |   Bin
 .../public => }/images/fe_page_system_tasks.png    |   Bin
 docs/images/fork-repo.png                          |   Bin 0 -> 185675 bytes
 docs/{.vuepress/public => }/images/gen_code.png    |   Bin
 .../public => }/images/graduation-timeline.png     |   Bin
 docs/images/home-banner.png                        |   Bin 0 -> 82144 bytes
 .../images/howtoincubateaproject-thumb.png         |   Bin
 .../public => }/images/howtoincubateaproject.png   |   Bin
 docs/images/icon/after.svg                         |     3 +
 docs/images/icon/arrow-left-s.svg                  |     3 +
 docs/images/icon/arrow-right-block.svg             |     3 +
 docs/images/icon/arrow-right-s.svg                 |     3 +
 docs/images/icon/arrow-right.png                   |   Bin 0 -> 679 bytes
 docs/images/icon/arrow-right.svg                   |     3 +
 docs/images/icon/before.svg                        |     3 +
 docs/images/icon/community-1.png                   |   Bin 0 -> 6593 bytes
 docs/images/icon/community-2.png                   |   Bin 0 -> 6857 bytes
 docs/images/icon/community-3.png                   |   Bin 0 -> 6290 bytes
 docs/images/icon/community-4.png                   |   Bin 0 -> 4777 bytes
 docs/images/icon/community-5.png                   |   Bin 0 -> 8359 bytes
 docs/images/icon/community-6.png                   |   Bin 0 -> 7117 bytes
 docs/images/icon/core-feature-1.png                |   Bin 0 -> 3872 bytes
 docs/images/icon/core-feature-2.png                |   Bin 0 -> 5194 bytes
 docs/images/icon/core-feature-3.png                |   Bin 0 -> 4507 bytes
 docs/images/icon/core-feature-4.png                |   Bin 0 -> 5140 bytes
 docs/images/icon/core-feature-5.png                |   Bin 0 -> 3863 bytes
 docs/images/icon/core-feature-6.png                |   Bin 0 -> 3965 bytes
 docs/images/icon/github.svg                        |     3 +
 docs/images/icon/jd.png                            |   Bin 0 -> 10137 bytes
 docs/images/icon/meituan.png                       |   Bin 0 -> 5383 bytes
 docs/images/icon/news-icon.png                     |   Bin 0 -> 1102 bytes
 docs/images/icon/u1.png                            |   Bin 0 -> 5211 bytes
 docs/images/icon/u10.png                           |   Bin 0 -> 14194 bytes
 docs/images/icon/u11.png                           |   Bin 0 -> 4477 bytes
 docs/images/icon/u12.png                           |   Bin 0 -> 9229 bytes
 docs/images/icon/u13.png                           |   Bin 0 -> 14922 bytes
 docs/images/icon/u14.png                           |   Bin 0 -> 5973 bytes
 docs/images/icon/u15.png                           |   Bin 0 -> 20277 bytes
 docs/images/icon/u16.png                           |   Bin 0 -> 6772 bytes
 docs/images/icon/u17.png                           |   Bin 0 -> 9363 bytes
 docs/images/icon/u18.png                           |   Bin 0 -> 21662 bytes
 docs/images/icon/u19.png                           |   Bin 0 -> 15925 bytes
 docs/images/icon/u2.png                            |   Bin 0 -> 9179 bytes
 docs/images/icon/u20.png                           |   Bin 0 -> 7369 bytes
 docs/images/icon/u21.png                           |   Bin 0 -> 5981 bytes
 docs/images/icon/u22.png                           |   Bin 0 -> 10167 bytes
 docs/images/icon/u23.png                           |   Bin 0 -> 4090 bytes
 docs/images/icon/u24.png                           |   Bin 0 -> 11263 bytes
 docs/images/icon/u25.png                           |   Bin 0 -> 11132 bytes
 docs/images/icon/u26.png                           |   Bin 0 -> 9928 bytes
 docs/images/icon/u27.png                           |   Bin 0 -> 7888 bytes
 docs/images/icon/u28.png                           |   Bin 0 -> 15949 bytes
 docs/images/icon/u29.png                           |   Bin 0 -> 16856 bytes
 docs/images/icon/u3.png                            |   Bin 0 -> 7434 bytes
 docs/images/icon/u30.png                           |   Bin 0 -> 8611 bytes
 docs/images/icon/u4.png                            |   Bin 0 -> 11174 bytes
 docs/images/icon/u5.png                            |   Bin 0 -> 6499 bytes
 docs/images/icon/u6.png                            |   Bin 0 -> 21360 bytes
 docs/images/icon/u7.png                            |   Bin 0 -> 8108 bytes
 docs/images/icon/u8.png                            |   Bin 0 -> 9595 bytes
 docs/images/icon/u9.png                            |   Bin 0 -> 8734 bytes
 docs/images/icon/xiaomi.png                        |   Bin 0 -> 9412 bytes
 docs/images/icon/zhihu.png                         |   Bin 0 -> 9901 bytes
 .../images/idea-checkstyle-plugin-cn.png           |   Bin
 .../images/idea-checkstyle-plugin-en.png           |   Bin
 .../public => }/images/idea-checkstyle-version.png |   Bin
 .../public => }/images/idea-rearrange-code.png     |   Bin
 .../{.vuepress/public => }/images/idea_options.png |   Bin
 .../public => }/images/image-20210618091006146.png |   Bin
 .../public => }/images/image-20210618095240216.png |   Bin
 docs/images/image-20210618104004956.png            |   Bin 0 -> 286945 bytes
 .../public => }/images/image-20210618104042192.png |   Bin
 .../public => }/images/image-20220614114351241.png |   Bin
 .../images/incbuator_feather_egg_logo_crop.png     |   Bin
 .../public => }/images/incubation-process.png      |   Bin
 .../public => }/images/incubator_ring_logo.png     |   Bin
 docs/images/jd01.png                               |   Bin 0 -> 210391 bytes
 docs/images/jd02.png                               |   Bin 0 -> 104042 bytes
 docs/images/jd03.png                               |   Bin 0 -> 129280 bytes
 docs/images/jd04.png                               |   Bin 0 -> 124641 bytes
 .../images/join/image-20220523151619754.png        |   Bin
 .../images/join/image-20220523151653562.png        |   Bin
 .../images/join/image-20220523151902368.png        |   Bin
 .../images/join/image-20220523152004731.png        |   Bin
 .../images/join/image-20220523152639123.png        |   Bin
 .../images/join/image-20220523153555640.png        |   Bin
 .../images/join/image-20220523153600797.png        |   Bin
 .../images/join/image-20220523153757607.png        |   Bin
 .../images/join/image-20220523153913059.png        |   Bin
 .../images/join/image-20220523153958828.png        |   Bin
 .../images/join/image-20220523154712519.png        |   Bin
 .../images/join/image-20220523160915229.png        |   Bin
 .../public => }/images/log_replication.jpg         |   Bin
 .../public => }/images/login-gitter1.png           |   Bin
 .../login-gitter2.PNG => images/login-gitter2.png} |   Bin
 .../blog-images/logo.png => images/logo-only.png}  |   Bin
 .../images/doris-logo-1.png => images/logo.png}    |   Bin
 docs/images/logo.svg                               |    17 +
 .../public => }/images/metadata_contents.png       |   Bin
 .../public => }/images/metadata_stream.png         |   Bin
 .../{.vuepress/public => }/images/monitor_arch.png |   Bin
 .../public => }/images/multi_tenant_arch.png       |   Bin
 docs/images/new-pr.png                             |   Bin 0 -> 180263 bytes
 ...img_v2_28d005e1-21d6-4801-956f-0c06373a7a9g.png |   Bin 0 -> 44317 bytes
 ...img_v2_33e733e0-df43-4d69-8047-b8bd90cbbd7g.png |   Bin 0 -> 88686 bytes
 ...img_v2_ad65aae9-9ed0-463e-a34c-94e32b092a4g.png |   Bin 0 -> 68400 bytes
 ...img_v2_cee507bd-d6ed-4359-9e52-51e9b8458f8g.png |   Bin 0 -> 92373 bytes
 .../public => }/images/palo_architecture.jpg       |   Bin
 docs/{.vuepress/public => }/images/palo_meta.png   |   Bin
 .../public => }/images/perf-report-demo.png        |   Bin
 .../public => }/images/release-stage.png           |   Bin
 .../public => }/images/replica_recover.png         |   Bin
 .../public => }/images/running_profile.png         |   Bin
 docs/{.vuepress/public => }/images/segment_v2.png  |   Bin
 docs/{.vuepress/public => }/images/slack.png       |   Bin
 .../public => }/images/spark_doris_connector.jpg   |   Bin
 .../public => }/images/ssb_v11_v015_compare.png    |   Bin
 .../public => }/images/staging-repositories.png    |   Bin
 docs/images/start-bg.png                           |   Bin 0 -> 69747 bytes
 .../images/subscribe-mail-list-step1.png           |   Bin
 .../images/subscribe-mail-list-step2.png           |   Bin
 .../images/subscribe-mail-list-step3.png           |   Bin
 .../images/subscribe-mail-list-step4.png           |   Bin
 .../public => }/images/table_connectors.svg        |     0
 .../public => }/images/user_authority.png          |   Bin
 .../images/vectorized-execution-engine1.png        |   Bin
 .../images/vectorized-execution-engine2.png        |   Bin
 docs/images/wechat.png                             |   Bin 0 -> 9890 bytes
 docs/images/what-is-doris-phone.png                |   Bin 0 -> 174852 bytes
 docs/images/what-is-doris.png                      |   Bin 0 -> 88686 bytes
 docs/package-lock.json                             | 26422 -------------------
 docs/package.json                                  |    30 -
 401 files changed, 39 insertions(+), 40447 deletions(-)

diff --git a/.github/workflows/build-extension.yml b/.github/workflows/build-extension.yml
index 223b5d8cf8..b87beaffad 100644
--- a/.github/workflows/build-extension.yml
+++ b/.github/workflows/build-extension.yml
@@ -48,7 +48,6 @@ jobs:
               - 'fs_brokers/**'
             docs_changes:
               - 'docs/**'
-
   build-broker:
     name: Build Broker
     needs: changes
@@ -71,11 +70,9 @@ jobs:
           thrift --version
           mkdir -p thirdparty/installed/bin/
           cd thirdparty/installed/bin/ && ln -s /usr/bin/thrift thrift
-
       - name: Build broker
         run: |
           cd fs_brokers/apache_hdfs_broker/ && /bin/bash build.sh
-
   build-docs:
     name: Build Documents
     needs: changes
@@ -87,5 +84,4 @@ jobs:
 
       - name: Build docs
         run: |
-          cd docs && /bin/bash build_help_zip.sh
-
+          cd docs && /bin/bash build_help_zip.sh
\ No newline at end of file
diff --git a/docs/.markdownlint.yml b/docs/.markdownlint.yml
deleted file mode 100644
index f01d39144f..0000000000
--- a/docs/.markdownlint.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-{
-  "default": true,
-  "MD013": false,
-}
diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js
deleted file mode 100755
index 4e8c56bdb4..0000000000
--- a/docs/.vuepress/config.js
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-
-const BUILDING_BRANCH = process.env.BRANCH || "";
-const ALGOLIA_API_KEY = process.env.ALGOLIA_API_KEY || "";
-const ALGOLIA_INDEX_NAME = process.env.ALGOLIA_INDEX_NAME || "";
-const ALGOLIA_APP_ID = process.env.ALGOLIA_APP_ID || "";
-
-function convertSidebar(list, path) {
-  if (list.length > 0) {
-    list.forEach((element, i) => {
-      if (element.children) {
-        convertSidebar(element.children, path + element.directoryPath);
-        delete element.directoryPath;
-      } else {
-        list[i] = `${path}${element}`;
-      }
-    });
-  }
-  return list;
-}
-
-function buildAlgoliaSearchConfig(lang) {
-  return {
-    apiKey: ALGOLIA_API_KEY,
-    indexName: ALGOLIA_INDEX_NAME,
-    appId: ALGOLIA_APP_ID,
-  };
-}
-
-module.exports = {
-  base: BUILDING_BRANCH.length > 0 ? "/" + BUILDING_BRANCH + "/" : "",
-  locales: {
-    "/en/": {
-      lang: "en", // html lang属性
-      title: "Apache Doris",
-      description: "Apache Doris",
-    },
-    "/zh-CN/": {
-      lang: "zh-CN",
-      title: "Apache Doris",
-      description: "Apache Doris",
-    },
-  },
-  // 头部文件设置
-  head: [
-    // CSS样式上传
-    ["link", { rel: "icon", href: "/blog-images/logo.png" }],
-    [
-      "link",
-      {
-        rel: "stylesheet",
-        href: "/font/font.css",
-      },
-    ],
-    [
-      "link",
-      {
-        rel: "stylesheet",
-        href: "/css/animate.min.css",
-      },
-    ],
-    // meta 描述
-    [
-      "meta",
-      {
-        name: "viewport",
-        content: "width=device-width,initial-scale=1,user-scalable=no",
-      },
-    ],
-    // js 上传
-    [
-      "script",
-      {
-        type: "text/javascript",
-        src: "/js/jquery.min.js",
-      },
-    ],
-    ["script", { type: "text/javascript", src: "/js/xRoll.js" }],
-    ["script", { type: "text/javascript", src: "/js/js.js" }],
-  ],
-  title: "Apache Doris",
-  description: "Apache Doris",
-  theme: "haobom",
-  themeConfig: {
-    mode: "light",
-    modePicker: false,
-    noFoundPageByTencent: false,
-    locales: {
-      "/en/": {
-        algolia: buildAlgoliaSearchConfig("en"),
-        versions: {
-          text: "versions",
-          icon: "doris doris-xiala",
-          items: [
-            {
-              text: "master",
-              link: "/en/docs/get-starting/get-starting.html",
-            },
-          ],
-        },
-        // 导航栏
-        nav: [
-          {
-            text: "Docs",
-            link: "",
-            name: "document",
-          },
-          {
-            text: "Blog",
-            icon: "doris doris-xiala",
-            name: "blog",
-            items: [
-              // { text: "Doris Weekly", link: "/en/categories/DorisWeekly/" },
-              { text: "Best Practice", link: "/en/categories/PracticalCases/" },
-              { text: "Release Note", link: "/en/categories/ReleaseNote/" },
-              // {
-              //   text: "Doris Internal",
-              //   link: "/en/categories/DorisInternals/",
-              // },
-            ],
-          },
-          {
-            text: "Development",
-            link: "/en/developer/developer-guide/debug-tool.html",
-          },
-          {
-            text: "Community",
-            link: "/en/community/team.html",
-          },
-          {
-            text: "User",
-            link: "/en/userCase/user.html",
-          },
-          {
-            text: "ASF",
-            icon: "doris doris-xiala",
-            items: [
-              { text: "Foundation", link: "https://www.apache.org/" },
-              { text: "Security", link: "https://www.apache.org/security/" },
-              { text: "License", link: "https://www.apache.org/licenses/" },
-              {
-                text: "Events",
-                link: "https://www.apache.org/events/current-event",
-              },
-              {
-                text: "Sponsorship",
-                link: "https://www.apache.org/foundation/sponsorship.html",
-              },
-              {
-                text: "Privacy",
-                link: "https://www.apache.org/foundation/policies/privacy.html",
-              },
-              {
-                text: "Thanks",
-                link: "https://www.apache.org/foundation/thanks.html",
-              },
-            ],
-          },
-          {
-            text: "Downloads",
-            link: "/en/downloads/downloads",
-            className: "downloads",
-          },
-        ],
-
-        // 指定页面侧边栏
-        sidebar: {
-          "/en/developer/": convertSidebar(
-            require("./sidebar/en/developer.js"),
-            "/en/developer/"
-          ),
-          "/en/community/": convertSidebar(
-            require("./sidebar/en/community.js"),
-            "/en/community/"
-          ),
-          "/en/docs/": convertSidebar(
-            require("./sidebar/en/docs.js"),
-            "/en/docs/"
-          ),
-        },
-      },
-      "/zh-CN/": {
-        algolia: buildAlgoliaSearchConfig("zh-CN"),
-        versions: {
-          text: "versions",
-          icon: "doris doris-xiala",
-          items: [
-            {
-              text: "master",
-              link: "/zh-CN/docs/get-starting/get-starting.html",
-            },
-          ],
-        },
-        // 导航栏
-        nav: [
-          {
-            text: "文档",
-            link: "",
-            name: "document",
-          },
-          {
-            text: "博客",
-            icon: "doris doris-xiala",
-            name: "blog",
-            items: [
-              // { text: "每周通报", link: "/zh-CN/categories/DorisWeekly/" },
-              { text: "最佳实践", link: "/zh-CN/categories/PracticalCases/" },
-              { text: "版本发布", link: "/zh-CN/categories/ReleaseNote/" },
-              {
-                text: "内核解析",
-                link: "/zh-CN/categories/DorisInternals/",
-              },
-            ],
-          },
-          {
-            text: "开发者",
-            link: "/zh-CN/developer/developer-guide/debug-tool.html",
-          },
-          {
-            text: "社区",
-            link: "/zh-CN/community/team.html",
-          },
-          {
-            text: "用户",
-            link: "/zh-CN/userCase/user.html",
-          },
-          {
-            text: "ASF",
-            icon: "doris doris-xiala",
-            items: [
-              { text: "基金会", link: "https://www.apache.org/" },
-              { text: "安全", link: "https://www.apache.org/security/" },
-              { text: "版权", link: "https://www.apache.org/licenses/" },
-              {
-                text: "活动",
-                link: "https://www.apache.org/events/current-event",
-              },
-              {
-                text: "捐赠",
-                link: "https://www.apache.org/foundation/sponsorship.html",
-              },
-              {
-                text: "隐私",
-                link: "https://www.apache.org/foundation/policies/privacy.html",
-              },
-              {
-                text: "鸣谢",
-                link: "https://www.apache.org/foundation/thanks.html",
-              },
-            ],
-          },
-          {
-            text: "下载",
-            link: "/zh-CN/downloads/downloads",
-            className: "downloads",
-          },
-        ],
-
-        // 指定页面侧边栏
-        sidebar: {
-          "/zh-CN/community/": convertSidebar(
-            require("./sidebar/zh-CN/community.js"),
-            "/zh-CN/community/"
-          ),
-          "/zh-CN/developer/": convertSidebar(
-            require("./sidebar/zh-CN/developer.js"),
-            "/zh-CN/developer/"
-          ),
-          "/zh-CN/docs/": convertSidebar(
-            require("./sidebar/zh-CN/docs.js"),
-            "/zh-CN/docs/"
-          ),
-        },
-      },
-    },
-
-    logo: "/blog-images/logo.png", // 博客的Logo图片
-    search: true, // 是否开启搜索框
-    searchMaxSuggestions: 10, // 搜索的关键词深度
-    // "lastUpdated": "Last Updated", // 最后更新时间 这个无所谓
-    author: "", // 作者名称
-    authorAvatar: "", // 作者头像
-    record: "xxxx", // 这里是网站备案!
-    startYear: "2022", // 网站的起始时间 效果:2022 - 2022
-    subSidebar: "auto", //在所有页面中启用自动生成子侧边栏,原 sidebar 仍然兼容
-    displayAllHeaders: true,
-    sidebarDepth: 2,
-  },
-  markdown: {
-    lineNumbers: true,
-  },
-};
diff --git a/docs/.vuepress/public/blog-images/avatar.png b/docs/.vuepress/public/blog-images/avatar.png
deleted file mode 100644
index 5f75696012..0000000000
Binary files a/docs/.vuepress/public/blog-images/avatar.png and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/core1.jpg b/docs/.vuepress/public/blog-images/core1.jpg
deleted file mode 100644
index 6fe1077ac6..0000000000
Binary files a/docs/.vuepress/public/blog-images/core1.jpg and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/core2.jpg b/docs/.vuepress/public/blog-images/core2.jpg
deleted file mode 100644
index d9e54663ea..0000000000
Binary files a/docs/.vuepress/public/blog-images/core2.jpg and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/core3.jpg b/docs/.vuepress/public/blog-images/core3.jpg
deleted file mode 100644
index f16f35fa7d..0000000000
Binary files a/docs/.vuepress/public/blog-images/core3.jpg and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/core4.jpg b/docs/.vuepress/public/blog-images/core4.jpg
deleted file mode 100644
index eb13fea4c9..0000000000
Binary files a/docs/.vuepress/public/blog-images/core4.jpg and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/corebg.jpg b/docs/.vuepress/public/blog-images/corebg.jpg
deleted file mode 100644
index 2a6ab8ecfc..0000000000
Binary files a/docs/.vuepress/public/blog-images/corebg.jpg and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/data-1.png b/docs/.vuepress/public/blog-images/data-1.png
deleted file mode 100644
index 2bda553f6c..0000000000
Binary files a/docs/.vuepress/public/blog-images/data-1.png and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/data.png b/docs/.vuepress/public/blog-images/data.png
deleted file mode 100644
index 837024a2d0..0000000000
Binary files a/docs/.vuepress/public/blog-images/data.png and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/doris1.png b/docs/.vuepress/public/blog-images/doris1.png
deleted file mode 100644
index edbe1b4b1c..0000000000
Binary files a/docs/.vuepress/public/blog-images/doris1.png and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/doris2.png b/docs/.vuepress/public/blog-images/doris2.png
deleted file mode 100644
index 1a42bb4536..0000000000
Binary files a/docs/.vuepress/public/blog-images/doris2.png and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/doris3.png b/docs/.vuepress/public/blog-images/doris3.png
deleted file mode 100644
index c985c371d1..0000000000
Binary files a/docs/.vuepress/public/blog-images/doris3.png and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/dorisSolid1.jpg b/docs/.vuepress/public/blog-images/dorisSolid1.jpg
deleted file mode 100644
index b1416153a1..0000000000
Binary files a/docs/.vuepress/public/blog-images/dorisSolid1.jpg and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/dorisSolid2.jpg b/docs/.vuepress/public/blog-images/dorisSolid2.jpg
deleted file mode 100644
index 6ca6702c85..0000000000
Binary files a/docs/.vuepress/public/blog-images/dorisSolid2.jpg and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/dorisyezi.png b/docs/.vuepress/public/blog-images/dorisyezi.png
deleted file mode 100644
index a5641a62c4..0000000000
Binary files a/docs/.vuepress/public/blog-images/dorisyezi.png and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/ebi1.jpg b/docs/.vuepress/public/blog-images/ebi1.jpg
deleted file mode 100644
index 4a3983b441..0000000000
Binary files a/docs/.vuepress/public/blog-images/ebi1.jpg and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/ebi2.jpg b/docs/.vuepress/public/blog-images/ebi2.jpg
deleted file mode 100644
index 41a064b7fa..0000000000
Binary files a/docs/.vuepress/public/blog-images/ebi2.jpg and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/ebi3.jpg b/docs/.vuepress/public/blog-images/ebi3.jpg
deleted file mode 100644
index 702f55cb35..0000000000
Binary files a/docs/.vuepress/public/blog-images/ebi3.jpg and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/fx1.png b/docs/.vuepress/public/blog-images/fx1.png
deleted file mode 100644
index 91e247eecd..0000000000
Binary files a/docs/.vuepress/public/blog-images/fx1.png and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/fx2.png b/docs/.vuepress/public/blog-images/fx2.png
deleted file mode 100644
index fe650eef21..0000000000
Binary files a/docs/.vuepress/public/blog-images/fx2.png and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/fx3.png b/docs/.vuepress/public/blog-images/fx3.png
deleted file mode 100644
index c75aa75587..0000000000
Binary files a/docs/.vuepress/public/blog-images/fx3.png and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/fx4.png b/docs/.vuepress/public/blog-images/fx4.png
deleted file mode 100644
index 7679f27922..0000000000
Binary files a/docs/.vuepress/public/blog-images/fx4.png and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/fx5.png b/docs/.vuepress/public/blog-images/fx5.png
deleted file mode 100644
index 618ff68906..0000000000
Binary files a/docs/.vuepress/public/blog-images/fx5.png and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/fx6.png b/docs/.vuepress/public/blog-images/fx6.png
deleted file mode 100644
index 139bd8bd6e..0000000000
Binary files a/docs/.vuepress/public/blog-images/fx6.png and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/graduate.jpg b/docs/.vuepress/public/blog-images/graduate.jpg
deleted file mode 100644
index c8719b6389..0000000000
Binary files a/docs/.vuepress/public/blog-images/graduate.jpg and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/hero.png b/docs/.vuepress/public/blog-images/hero.png
deleted file mode 100644
index 458c223b0f..0000000000
Binary files a/docs/.vuepress/public/blog-images/hero.png and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/homebannerbg.jpg b/docs/.vuepress/public/blog-images/homebannerbg.jpg
deleted file mode 100644
index 143ada54e8..0000000000
Binary files a/docs/.vuepress/public/blog-images/homebannerbg.jpg and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/hrighting.png b/docs/.vuepress/public/blog-images/hrighting.png
deleted file mode 100644
index 95f68e7c04..0000000000
Binary files a/docs/.vuepress/public/blog-images/hrighting.png and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/i1.png b/docs/.vuepress/public/blog-images/i1.png
deleted file mode 100644
index f681c9a310..0000000000
Binary files a/docs/.vuepress/public/blog-images/i1.png and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/i2.png b/docs/.vuepress/public/blog-images/i2.png
deleted file mode 100644
index db1cb5d2d3..0000000000
Binary files a/docs/.vuepress/public/blog-images/i2.png and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/i3.png b/docs/.vuepress/public/blog-images/i3.png
deleted file mode 100644
index fdc37192fb..0000000000
Binary files a/docs/.vuepress/public/blog-images/i3.png and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/i4.png b/docs/.vuepress/public/blog-images/i4.png
deleted file mode 100644
index ac8ec7568b..0000000000
Binary files a/docs/.vuepress/public/blog-images/i4.png and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/i5.png b/docs/.vuepress/public/blog-images/i5.png
deleted file mode 100644
index 85a2d0a0ef..0000000000
Binary files a/docs/.vuepress/public/blog-images/i5.png and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/i6.png b/docs/.vuepress/public/blog-images/i6.png
deleted file mode 100644
index 845f10e78c..0000000000
Binary files a/docs/.vuepress/public/blog-images/i6.png and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/icobg.png b/docs/.vuepress/public/blog-images/icobg.png
deleted file mode 100644
index 4b97060850..0000000000
Binary files a/docs/.vuepress/public/blog-images/icobg.png and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/is1.png b/docs/.vuepress/public/blog-images/is1.png
deleted file mode 100644
index a0d44baf5d..0000000000
Binary files a/docs/.vuepress/public/blog-images/is1.png and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/is2.png b/docs/.vuepress/public/blog-images/is2.png
deleted file mode 100644
index 428830f8eb..0000000000
Binary files a/docs/.vuepress/public/blog-images/is2.png and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/newdownb.jpg b/docs/.vuepress/public/blog-images/newdownb.jpg
deleted file mode 100644
index 3bfd81eba3..0000000000
Binary files a/docs/.vuepress/public/blog-images/newdownb.jpg and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/news1.jpg b/docs/.vuepress/public/blog-images/news1.jpg
deleted file mode 100644
index 3f6bc779d9..0000000000
Binary files a/docs/.vuepress/public/blog-images/news1.jpg and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/news2.jpg b/docs/.vuepress/public/blog-images/news2.jpg
deleted file mode 100644
index 84a519239f..0000000000
Binary files a/docs/.vuepress/public/blog-images/news2.jpg and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/news3.jpg b/docs/.vuepress/public/blog-images/news3.jpg
deleted file mode 100644
index 65e3d5fcff..0000000000
Binary files a/docs/.vuepress/public/blog-images/news3.jpg and /dev/null differ
diff --git a/docs/.vuepress/public/blog-images/xbkuanglogo.png b/docs/.vuepress/public/blog-images/xbkuanglogo.png
deleted file mode 100644
index 18552505c3..0000000000
Binary files a/docs/.vuepress/public/blog-images/xbkuanglogo.png and /dev/null differ
diff --git a/docs/.vuepress/public/css/animate.min.css b/docs/.vuepress/public/css/animate.min.css
deleted file mode 100644
index 8ae4afdb46..0000000000
--- a/docs/.vuepress/public/css/animate.min.css
+++ /dev/null
@@ -1,12 +0,0 @@
-@charset "UTF-8";/*!
-Animate.css - http://daneden.me/animate
-Licensed under the MIT license
-
-Copyright (c) 2013 Daniel Eden
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}@-webkit-keyframes bounce{0%,100%,20%,50%,80%{-webkit-transform:translateY(0);transform:translateY(0)}40%{-webkit-transform:translateY(-30px);transform:translateY(-30px)}60%{-webkit-transform:translateY(-1 [...]
\ No newline at end of file
diff --git a/docs/.vuepress/public/font/font.css b/docs/.vuepress/public/font/font.css
deleted file mode 100644
index 213dd138de..0000000000
--- a/docs/.vuepress/public/font/font.css
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-
-@font-face {
-  font-family: "doris"; /* Project id 3319292 */
-  src: url('font_3319292_bdqvc63l075.woff2?t=1649753790557') format('woff2'),
-       url('font_3319292_bdqvc63l075.woff?t=1649753790557') format('woff'),
-       url('font_3319292_bdqvc63l075.ttf?t=1649753790557') format('truetype'),
-       url('font_3319292_bdqvc63l075.svg?t=1649753790557#doris') format('svg');
-}
-
-.doris {
-  font-family: "doris" !important;
-  font-size: 16px;
-  font-style: normal;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-}
-
-.doris-jiantou_xiangyouliangci:before {
-  content: "\eb09";
-}
-
-.doris-github-fill:before {
-  content: "\e885";
-}
-
-.doris-xiala:before {
-  content: "\e62a";
-}
-
diff --git a/docs/.vuepress/public/font/font_3319292_bdqvc63l075.svg b/docs/.vuepress/public/font/font_3319292_bdqvc63l075.svg
deleted file mode 100644
index 72f78fe10a..0000000000
--- a/docs/.vuepress/public/font/font_3319292_bdqvc63l075.svg
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-  <metadata>Created by iconfont</metadata>
-  <defs>
-  <font id="doris" horiz-adv-x="1024">
-    <font-face
-      font-family="doris"
-      font-weight="400"
-      font-stretch="normal"
-      units-per-em="1024"
-      ascent="896"
-      descent="-128"
-    />
-      <missing-glyph />
-      
-      <glyph glyph-name="jiantou_xiangyouliangci" unicode="&#60169;" d="M550.4 405.333333L230.4 725.333333 170.666667 665.6l260.266666-260.266667L170.666667 145.066667 230.4 85.333333l320 320z m298.666667 0L533.333333 725.333333 469.333333 665.6l260.266667-260.266667-260.266667-260.266666 59.733334-59.733334 320 320z"  horiz-adv-x="1024" />
-      
-      <glyph glyph-name="github-fill" unicode="&#59525;" d="M511.6 819.7C264.3 819.8 64 619.6 64 372.5 64 177.1 189.3 11 363.8-50c23.5-5.9 19.9 10.8 19.9 22.2v77.5c-135.7-15.9-141.2 73.9-150.3 88.9C215 170 171.5 178 184.5 193c30.9 15.9 62.4-4 98.9-57.9 26.4-39.1 77.9-32.5 104-26 5.7 23.5 17.9 44.5 34.7 60.8-140.6 25.2-199.2 111-199.2 213 0 49.5 16.3 95 48.3 131.7-20.4 60.5 1.9 112.3 4.9 120 58.1 5.2 118.5-41.6 123.2-45.3 33 8.9 70.7 13.6 112.9 13.6 42.4 0 80.2-4.9 113.5-13.9 11.3 8.6 67. [...]
-      
-      <glyph glyph-name="xiala" unicode="&#58922;" d="M142.805333 630.826667A58.666667 58.666667 0 1 1 59.861333 547.84l410.666667-410.666667a58.666667 58.666667 0 0 1 82.944 0l410.666667 410.666667a58.666667 58.666667 0 1 1-82.944 82.986667L512 261.632 142.805333 630.826667z"  horiz-adv-x="1024" />
-      
-    </font>
-  </defs>
-</svg>
diff --git a/docs/.vuepress/public/font/font_3319292_bdqvc63l075.ttf b/docs/.vuepress/public/font/font_3319292_bdqvc63l075.ttf
deleted file mode 100644
index 35523447f2..0000000000
Binary files a/docs/.vuepress/public/font/font_3319292_bdqvc63l075.ttf and /dev/null differ
diff --git a/docs/.vuepress/public/font/font_3319292_bdqvc63l075.woff b/docs/.vuepress/public/font/font_3319292_bdqvc63l075.woff
deleted file mode 100644
index 0d27689299..0000000000
Binary files a/docs/.vuepress/public/font/font_3319292_bdqvc63l075.woff and /dev/null differ
diff --git a/docs/.vuepress/public/font/font_3319292_bdqvc63l075.woff2 b/docs/.vuepress/public/font/font_3319292_bdqvc63l075.woff2
deleted file mode 100644
index cd14fd58e8..0000000000
Binary files a/docs/.vuepress/public/font/font_3319292_bdqvc63l075.woff2 and /dev/null differ
diff --git a/docs/.vuepress/public/images/cloudcanal/cloudcanal-1.jpg b/docs/.vuepress/public/images/cloudcanal/cloudcanal-1.jpg
deleted file mode 100644
index 978fdd95ad..0000000000
Binary files a/docs/.vuepress/public/images/cloudcanal/cloudcanal-1.jpg and /dev/null differ
diff --git a/docs/.vuepress/public/images/cloudcanal/cloudcanal-2.jpg b/docs/.vuepress/public/images/cloudcanal/cloudcanal-2.jpg
deleted file mode 100644
index 2e58d25ca5..0000000000
Binary files a/docs/.vuepress/public/images/cloudcanal/cloudcanal-2.jpg and /dev/null differ
diff --git a/docs/.vuepress/public/images/cloudcanal/cloudcanal-3.jpg b/docs/.vuepress/public/images/cloudcanal/cloudcanal-3.jpg
deleted file mode 100644
index e3050e59ed..0000000000
Binary files a/docs/.vuepress/public/images/cloudcanal/cloudcanal-3.jpg and /dev/null differ
diff --git a/docs/.vuepress/public/images/cloudcanal/cloudcanal-4.png b/docs/.vuepress/public/images/cloudcanal/cloudcanal-4.png
deleted file mode 100644
index 379c95018e..0000000000
Binary files a/docs/.vuepress/public/images/cloudcanal/cloudcanal-4.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/cloudcanal/cloudcanal-5.png b/docs/.vuepress/public/images/cloudcanal/cloudcanal-5.png
deleted file mode 100644
index ec9518bf95..0000000000
Binary files a/docs/.vuepress/public/images/cloudcanal/cloudcanal-5.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/cloudcanal/cloudcanal-6.png b/docs/.vuepress/public/images/cloudcanal/cloudcanal-6.png
deleted file mode 100644
index c1e7be356c..0000000000
Binary files a/docs/.vuepress/public/images/cloudcanal/cloudcanal-6.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/cloudcanal/cloudcanal-7.png b/docs/.vuepress/public/images/cloudcanal/cloudcanal-7.png
deleted file mode 100644
index 62ae33a555..0000000000
Binary files a/docs/.vuepress/public/images/cloudcanal/cloudcanal-7.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/cloudcanal/cloudcanal-8.jpg b/docs/.vuepress/public/images/cloudcanal/cloudcanal-8.jpg
deleted file mode 100644
index aa4cae7c5e..0000000000
Binary files a/docs/.vuepress/public/images/cloudcanal/cloudcanal-8.jpg and /dev/null differ
diff --git a/docs/.vuepress/public/images/create-pr.png b/docs/.vuepress/public/images/create-pr.png
deleted file mode 100644
index 23c0ad026c..0000000000
Binary files a/docs/.vuepress/public/images/create-pr.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/create-pr3.png b/docs/.vuepress/public/images/create-pr3.png
deleted file mode 100644
index 6dab6b0fbb..0000000000
Binary files a/docs/.vuepress/public/images/create-pr3.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/fork-repo.png b/docs/.vuepress/public/images/fork-repo.png
deleted file mode 100644
index 76426fe7c5..0000000000
Binary files a/docs/.vuepress/public/images/fork-repo.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/aggr.png b/docs/.vuepress/public/images/home/aggr.png
deleted file mode 100644
index dd91ce3244..0000000000
Binary files a/docs/.vuepress/public/images/home/aggr.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/banner-stats.png b/docs/.vuepress/public/images/home/banner-stats.png
deleted file mode 100644
index 42cbe278e4..0000000000
Binary files a/docs/.vuepress/public/images/home/banner-stats.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/clock.png b/docs/.vuepress/public/images/home/clock.png
deleted file mode 100644
index f3651670de..0000000000
Binary files a/docs/.vuepress/public/images/home/clock.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/cpu.png b/docs/.vuepress/public/images/home/cpu.png
deleted file mode 100644
index 9425035ca1..0000000000
Binary files a/docs/.vuepress/public/images/home/cpu.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/dev.png b/docs/.vuepress/public/images/home/dev.png
deleted file mode 100644
index 0239e27789..0000000000
Binary files a/docs/.vuepress/public/images/home/dev.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/hero-bg.png b/docs/.vuepress/public/images/home/hero-bg.png
deleted file mode 100644
index 856af6bd13..0000000000
Binary files a/docs/.vuepress/public/images/home/hero-bg.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/logo-360.png b/docs/.vuepress/public/images/home/logo-360.png
deleted file mode 100644
index be212b3a3c..0000000000
Binary files a/docs/.vuepress/public/images/home/logo-360.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/logo-aispeech.png b/docs/.vuepress/public/images/home/logo-aispeech.png
deleted file mode 100644
index 3225ec4829..0000000000
Binary files a/docs/.vuepress/public/images/home/logo-aispeech.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/logo-baidu.png b/docs/.vuepress/public/images/home/logo-baidu.png
deleted file mode 100644
index 1c1c655b5c..0000000000
Binary files a/docs/.vuepress/public/images/home/logo-baidu.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/logo-dingdong.png b/docs/.vuepress/public/images/home/logo-dingdong.png
deleted file mode 100644
index 758dceabe2..0000000000
Binary files a/docs/.vuepress/public/images/home/logo-dingdong.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/logo-doris-white.png b/docs/.vuepress/public/images/home/logo-doris-white.png
deleted file mode 100644
index 271a1ce582..0000000000
Binary files a/docs/.vuepress/public/images/home/logo-doris-white.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/logo-footprint.png b/docs/.vuepress/public/images/home/logo-footprint.png
deleted file mode 100644
index 88ba2a3fa2..0000000000
Binary files a/docs/.vuepress/public/images/home/logo-footprint.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/logo-game-163.png b/docs/.vuepress/public/images/home/logo-game-163.png
deleted file mode 100644
index 085cb64828..0000000000
Binary files a/docs/.vuepress/public/images/home/logo-game-163.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/logo-huawei.png b/docs/.vuepress/public/images/home/logo-huawei.png
deleted file mode 100644
index 27c3dace7a..0000000000
Binary files a/docs/.vuepress/public/images/home/logo-huawei.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/logo-jd.png b/docs/.vuepress/public/images/home/logo-jd.png
deleted file mode 100644
index bf0353db71..0000000000
Binary files a/docs/.vuepress/public/images/home/logo-jd.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/logo-kuaishou.png b/docs/.vuepress/public/images/home/logo-kuaishou.png
deleted file mode 100644
index 52fd142911..0000000000
Binary files a/docs/.vuepress/public/images/home/logo-kuaishou.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/logo-meituan.png b/docs/.vuepress/public/images/home/logo-meituan.png
deleted file mode 100644
index 72f3568a88..0000000000
Binary files a/docs/.vuepress/public/images/home/logo-meituan.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/logo-shopee.png b/docs/.vuepress/public/images/home/logo-shopee.png
deleted file mode 100644
index 6d9d62aa78..0000000000
Binary files a/docs/.vuepress/public/images/home/logo-shopee.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/logo-sohu.png b/docs/.vuepress/public/images/home/logo-sohu.png
deleted file mode 100644
index 5fe78e851a..0000000000
Binary files a/docs/.vuepress/public/images/home/logo-sohu.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/logo-tantan.png b/docs/.vuepress/public/images/home/logo-tantan.png
deleted file mode 100644
index 494ff10480..0000000000
Binary files a/docs/.vuepress/public/images/home/logo-tantan.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/logo-tongcheng.png b/docs/.vuepress/public/images/home/logo-tongcheng.png
deleted file mode 100644
index 02a0780f3c..0000000000
Binary files a/docs/.vuepress/public/images/home/logo-tongcheng.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/logo-vipkid.png b/docs/.vuepress/public/images/home/logo-vipkid.png
deleted file mode 100644
index ca16d23687..0000000000
Binary files a/docs/.vuepress/public/images/home/logo-vipkid.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/logo-weibo.png b/docs/.vuepress/public/images/home/logo-weibo.png
deleted file mode 100644
index e04ee094e1..0000000000
Binary files a/docs/.vuepress/public/images/home/logo-weibo.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/logo-wuyiyuntong.png b/docs/.vuepress/public/images/home/logo-wuyiyuntong.png
deleted file mode 100644
index 79ffea8933..0000000000
Binary files a/docs/.vuepress/public/images/home/logo-wuyiyuntong.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/logo-xiaomi.png b/docs/.vuepress/public/images/home/logo-xiaomi.png
deleted file mode 100644
index 4c49efbdf9..0000000000
Binary files a/docs/.vuepress/public/images/home/logo-xiaomi.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/logo-yidian.png b/docs/.vuepress/public/images/home/logo-yidian.png
deleted file mode 100644
index 0d006696d2..0000000000
Binary files a/docs/.vuepress/public/images/home/logo-yidian.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/logo-youdao.png b/docs/.vuepress/public/images/home/logo-youdao.png
deleted file mode 100644
index 56047c073c..0000000000
Binary files a/docs/.vuepress/public/images/home/logo-youdao.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/logo-zhihu.png b/docs/.vuepress/public/images/home/logo-zhihu.png
deleted file mode 100644
index 7e48292e31..0000000000
Binary files a/docs/.vuepress/public/images/home/logo-zhihu.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/logo-zuoyebang.png b/docs/.vuepress/public/images/home/logo-zuoyebang.png
deleted file mode 100644
index 24131080ac..0000000000
Binary files a/docs/.vuepress/public/images/home/logo-zuoyebang.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/new.svg b/docs/.vuepress/public/images/home/new.svg
deleted file mode 100644
index 5cceb102e0..0000000000
--- a/docs/.vuepress/public/images/home/new.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1636341177243" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="17682" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128"><defs><style type="text/css"></style></defs><path d="M245.76 286.72h552.96c124.928 0 225.28 100.352 225.28 225.28s-100.352 225.28-225.28 225.28H0V532.48c0-135.168 110. [...]
\ No newline at end of file
diff --git a/docs/.vuepress/public/images/home/program.png b/docs/.vuepress/public/images/home/program.png
deleted file mode 100644
index 079a37b61e..0000000000
Binary files a/docs/.vuepress/public/images/home/program.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/rollup.png b/docs/.vuepress/public/images/home/rollup.png
deleted file mode 100644
index d46668c010..0000000000
Binary files a/docs/.vuepress/public/images/home/rollup.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/sql.png b/docs/.vuepress/public/images/home/sql.png
deleted file mode 100644
index cf0965d1d2..0000000000
Binary files a/docs/.vuepress/public/images/home/sql.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/struct.png b/docs/.vuepress/public/images/home/struct.png
deleted file mode 100644
index 09d05c588a..0000000000
Binary files a/docs/.vuepress/public/images/home/struct.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/home/structure-fresh.png b/docs/.vuepress/public/images/home/structure-fresh.png
deleted file mode 100644
index ab90b3cc63..0000000000
Binary files a/docs/.vuepress/public/images/home/structure-fresh.png and /dev/null differ
diff --git a/docs/.vuepress/public/images/new-pr.png b/docs/.vuepress/public/images/new-pr.png
deleted file mode 100644
index 0702c90c8c..0000000000
Binary files a/docs/.vuepress/public/images/new-pr.png and /dev/null differ
diff --git a/docs/.vuepress/public/js/home.js b/docs/.vuepress/public/js/home.js
deleted file mode 100644
index 9467be4be3..0000000000
--- a/docs/.vuepress/public/js/home.js
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-
-setTimeout(function(){
-  $("#app").addClass('home');
-  var wow = new WOW({
-      boxClass: 'wow',
-      animateClass: 'animated',
-      offset: 0,
-      mobile: true,
-      live: true
-  });
-  wow.init();
-},500)
\ No newline at end of file
diff --git a/docs/.vuepress/public/js/jquery.min.js b/docs/.vuepress/public/js/jquery.min.js
deleted file mode 100644
index fad9ab1237..0000000000
--- a/docs/.vuepress/public/js/jquery.min.js
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */
-!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r= [...]
-return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(functio [...]
-void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c [...]
-//# sourceMappingURL=jquery.min.map
\ No newline at end of file
diff --git a/docs/.vuepress/public/js/js.js b/docs/.vuepress/public/js/js.js
deleted file mode 100644
index 558f90ba82..0000000000
--- a/docs/.vuepress/public/js/js.js
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-$(function(){
-    var _pushState = window.history.pushState;
-    window.history.pushState = function() {
-        setTimeout(function(){
-            
-            $('#app').parents('body').removeClass('youde');
-            $('.blogliebiao').parents('.no-sidebar').parents('body').addClass('youde');
-            $('.blogxiangqing').parents('.no-sidebar').parents('body').addClass('youde');
-            $('.my-comment').parents('body').removeClass('youde');
-            $('.timeline-content').parents('body').removeClass('youde');
-            $('.newsBox').parents('body').removeClass('youde');
-            let dhera = $('.nav-dropdown li a');
-            if($('.nav-dropdown li a').hasClass("router-link-active")){
-                $(this).parents('.nav-dropdown').prev().addClass('router-link-active');
-            };
-
-            let $home = $('#app .theme-reco-content > div:nth-child(1)').is(".home-blog");
-            if($home){
-                $("#app").addClass('home');
-            }else{
-                $("#app").removeClass('home');
-            }
-            $('.timebox').parent().addClass('time-nomar');
-
-            let $category = $('#app .theme-container > div > div:last-child > div:last-child > ul').is(".category-wrapper");
-            if($category){
-                $("#app").addClass('category');
-            }else{
-                $("#app").removeClass('category');
-            }
-
-            let $timeline = $('#app .theme-container > div > div:last-child > div:last-child > ul').is(".timeline-content");
-            if($timeline){
-                $("#app").addClass('timeline');
-            }else{
-                $("#app").removeClass('timeline');
-            }
-
-            let $zhcate1 = window.location.pathname;
-            if($zhcate1 === '/zh-CN/categories/DorisWeekly/'){
-                location.reload();
-                $('#app .category-wrapper li:nth-child(1) a').attr("href",'/zh-CN/categories/DorisWeekly/');
-                $('#app .category-wrapper li:nth-child(2) a').attr("href",'/zh-CN/categories/PracticalCases/');
-                $('#app .category-wrapper li:nth-child(3) a').attr("href",'/zh-CN/categories/ReleaseNote/');
-            }
-            if($zhcate1 === '/categories/DorisWeekly/'){
-                location.reload();
-                $('#app .category-wrapper li:nth-child(1) a').attr("href",'/categories/DorisWeekly/');
-                $('#app .category-wrapper li:nth-child(2) a').attr("href",'/categories/PracticalCases/');
-                $('#app .category-wrapper li:nth-child(3) a').attr("href",'/categories/ReleaseNote/');
-            }
-            if($zhcate1 === '/zh-CN/categories/PracticalCases/'){
-                location.reload();
-                $('#app .category-wrapper li:nth-child(1) a').attr("href",'/zh-CN/categories/DorisWeekly/');
-                $('#app .category-wrapper li:nth-child(2) a').attr("href",'/zh-CN/categories/PracticalCases/');
-                $('#app .category-wrapper li:nth-child(3) a').attr("href",'/zh-CN/categories/ReleaseNote/');
-            }
-            if($zhcate1 === '/categories/PracticalCases/'){
-                location.reload();
-                $('#app .category-wrapper li:nth-child(1) a').attr("href",'/categories/DorisWeekly/');
-                $('#app .category-wrapper li:nth-child(2) a').attr("href",'/categories/PracticalCases/');
-                $('#app .category-wrapper li:nth-child(3) a').attr("href",'/categories/ReleaseNote/');
-            }
-            if($zhcate1 === '/zh-CN/categories/ReleaseNote/'){
-                location.reload();
-                $('#app .category-wrapper li:nth-child(1) a').attr("href",'/zh-CN/categories/DorisWeekly/');
-                $('#app .category-wrapper li:nth-child(2) a').attr("href",'/zh-CN/categories/PracticalCases/');
-                $('#app .category-wrapper li:nth-child(3) a').attr("href",'/zh-CN/categories/ReleaseNote/');
-            }
-            if($zhcate1 === '/categories/ReleaseNote/'){
-                location.reload();
-                $('#app .category-wrapper li:nth-child(1) a').attr("href",'/categories/DorisWeekly/');
-                $('#app .category-wrapper li:nth-child(2) a').attr("href",'/categories/PracticalCases/');
-                $('#app .category-wrapper li:nth-child(3) a').attr("href",'/categories/ReleaseNote/');
-            }
-
-
-        },100)
-        return _pushState.apply(this, arguments);
-    }
-
-    $('body').on('click','a',function(){
-        var windName = window.location.pathname;
-        var time = setInterval(function () {
-            var m = $(".blogliebiao .nav-dropdown a").attr("href");
-            if (m) {
-                console.log(m);
-                $(".blogliebiao .nav-dropdown a").each(function () {
-                    var l_m = $(this).attr("href")
-                    if (l_m == windName) {
-                            $('.blogliebiao .nav-dropdown a').parents('.dropdown-item').removeClass("active")
-                            $(this).parents('.dropdown-item').addClass("active")
-                    }
-                });
-                clearInterval(time);
-            }
-        }, 100);
-    })
-
-});
\ No newline at end of file
diff --git a/docs/.vuepress/public/js/wow.min.js b/docs/.vuepress/public/js/wow.min.js
deleted file mode 100644
index b4f0ac4fd8..0000000000
--- a/docs/.vuepress/public/js/wow.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! WOW - v1.1.2 - 2016-04-08
-* Copyright (c) 2016 Matthieu Aussaguel;*/(function(){var a,b,c,d,e,f=function(a,b){return function(){return a.apply(b,arguments)}},g=[].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1};b=function(){function a(){}return a.prototype.extend=function(a,b){var c,d;for(c in b)d=b[c],null==a[c]&&(a[c]=d);return a},a.prototype.isMobile=function(a){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(a)},a.prototype.create [...]
\ No newline at end of file
diff --git a/docs/.vuepress/public/js/xRoll.js b/docs/.vuepress/public/js/xRoll.js
deleted file mode 100644
index 6819ade70f..0000000000
--- a/docs/.vuepress/public/js/xRoll.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-var xRoll=function(el,fn){xRoll.prototype.init(el,fn)};xRoll.prototype={init:function(_el,fn){_el.attr("data-state",false);this.start(_el,fn);$(window).on("scroll",function(){xRoll.prototype.start(_el,fn)})},start:function(_el,fn){var _this=this;$(_el).each(function(){var _self=$(this);var xRollTop=$(window).scrollTop();var isWindowHeiget=$(window).height();if(_self.data().state){return}if(xRollTop+isWindowHeiget>$(this).offset().top){fn();setTimeout(function(){_self.attr("data-state",tr [...]
\ No newline at end of file
diff --git a/docs/.vuepress/sidebar/en/community.js b/docs/.vuepress/sidebar/en/community.js
deleted file mode 100644
index 2f224ecc1b..0000000000
--- a/docs/.vuepress/sidebar/en/community.js
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-module.exports =  [
-  "team",
-  "gitter",
-  "subscribe-mail-list",
-  "feedback",
-  {
-    title: "How to Contribute",
-    directoryPath: "how-to-contribute/",
-    initialOpenGroupIndex: -1,
-    children: [
-      "how-to-contribute",
-      "contributor-guide",
-      "how-to-be-a-committer",
-      "commit-format-specification",
-      "pull-request",
-    ],
-  },
-  {
-    title: "Release Process & Verification",
-    directoryPath: "release-and-verify/",
-    initialOpenGroupIndex: -1,
-    children: [
-      "release-prepare",
-      "release-doris-core",
-      "release-doris-connectors",
-      "release-doris-manager",
-      "release-complete",
-      "release-verify",
-    ],
-  },
-  "security",
-]
\ No newline at end of file
diff --git a/docs/.vuepress/sidebar/en/developer.js b/docs/.vuepress/sidebar/en/developer.js
deleted file mode 100644
index 59318b64ce..0000000000
--- a/docs/.vuepress/sidebar/en/developer.js
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-module.exports =  [
-  {
-    title: "Design Documents",
-    directoryPath: "design/",
-    initialOpenGroupIndex: -1,
-    children: [
-      "doris_storage_optimization",
-      "grouping_sets_design",
-      "metadata-design",
-    ],
-  }, 
-  {
-    title: "Developer Guide",
-    directoryPath: "developer-guide/",
-    initialOpenGroupIndex: -1,
-    children: [
-      "debug-tool",
-      "docker-dev",
-      "benchmark-tool",
-      "fe-eclipse-dev",
-      "fe-idea-dev",
-      "fe-vscode-dev",
-      "be-vscode-dev",
-      "java-format-code",
-      "cpp-format-code",
-      "cpp-diagnostic-code",
-      "how-to-share-blogs",
-      "bitmap-hll-file-format",
-      "github-checks"
-    ],
-  },
-]
diff --git a/docs/.vuepress/sidebar/en/docs.js b/docs/.vuepress/sidebar/en/docs.js
deleted file mode 100644
index 19610f48e1..0000000000
--- a/docs/.vuepress/sidebar/en/docs.js
+++ /dev/null
@@ -1,1014 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-module.exports = [
-  {
-    title: "Getting Started",
-    directoryPath: "get-starting/",
-    initialOpenGroupIndex: -1,
-    children: [
-      "get-starting"
-    ],
-  },
-  {
-    title: "Doris Architecture",
-    directoryPath: "summary/",
-    initialOpenGroupIndex: -1,
-    children: [
-      "basic-summary",
-      "system-architecture"
-    ],
-  },
-  {
-    title: "Install And Deploy",
-    directoryPath: "install/",
-    initialOpenGroupIndex: -1,
-    children: [
-      "install-deploy",
-      {
-        title: "Compile",
-        directoryPath: "source-install/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "compilation",
-          "compilation-with-ldb-toolchain",
-          "compilation-arm"
-        ],
-        sidebarDepth: 2,
-      },
-    ]
-  },
-  {
-    title: "Table Design",
-    directoryPath: "data-table/",
-    initialOpenGroupIndex: -1,
-    children: [
-      "data-model",
-      "data-partition",
-      "basic-usage",
-      "advance-usage",
-      "hit-the-rollup",
-      "best-practice",
-      {
-        title: "Index",
-        directoryPath: "index/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "bloomfilter",
-          "prefix-index",
-          "bitmap-index"
-        ],
-      },
-    ],
-  },
-  {
-    title: "Data Operation",
-    directoryPath: "data-operate/",
-    initialOpenGroupIndex: -1,
-    children: [
-      {
-        title: "Import",
-        directoryPath: "import/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "load-manual",
-          {
-            title: "Import Scenes",
-            directoryPath: "import-scenes/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "local-file-load",
-              "external-storage-load",
-              "kafka-load",
-              "external-table-load",
-              "jdbc-load",
-              "load-atomicity",
-              "load-data-convert",
-              "load-strict-mode",
-            ],
-          },
-          {
-            title: "Import Way",
-            directoryPath: "import-way/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "binlog-load-manual",
-              "broker-load-manual",
-              "routine-load-manual",
-              "spark-load-manual",
-              "stream-load-manual",
-              "s3-load-manual",
-              "insert-into-manual",
-              "load-json-format", 
-            ],
-          },                
-        ],
-      },
-      {
-        title: "Export",
-        directoryPath: "export/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "export-manual",
-          "outfile",
-          "export_with_mysql_dump",
-        ],
-      },
-      {
-        title: "Update and Delete",
-        directoryPath: "update-delete/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "update",
-          "sequence-column-manual",
-          "delete-manual",
-          "batch-delete-manual"
-        ],
-      },
-    ],
-  },
-  {
-    title: "Advanced Usage",
-    directoryPath: "advanced/",
-    initialOpenGroupIndex: -1,
-    children: [
-      "materialized-view",
-      {
-        title: "Alter Table",
-        directoryPath: "alter-table/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "schema-change"
-        ],
-      },
-      {
-        title: "Doris Partition",
-        directoryPath: "partition/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "dynamic-partition",
-          "table-temp-partition"
-        ],
-      },
-      {
-        title: "Join Optimization",
-        directoryPath: "join-optimization/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "bucket-shuffle-join",
-          "colocation-join",
-          "runtime-filter",
-          "doris-join-optimization"
-        ],
-      },
-      {
-        title: "Date Cache",
-        directoryPath: "cache/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "partition-cache"
-        ],
-      },
-      "vectorized-execution-engine",
-      "broker",
-      "resource",
-      "orthogonal-bitmap-manual",
-      "using-hll",
-      "variables",
-      "time-zone",
-      "small-file-mgr",
-      {
-        title: "Best Practice",
-        directoryPath: "best-practice/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "query-analysis",
-          "import-analysis",
-          "debug-log"
-        ]
-      }
-    ],
-  },
-  {
-    title: "Ecosystem",
-    directoryPath: "ecosystem/",
-    initialOpenGroupIndex: -1,
-    children: [
-      {
-        title: "Expansion table",
-        directoryPath: "external-table/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "doris-on-es",
-          "odbc-of-doris",
-          "hive-of-doris",
-          "iceberg-of-doris",
-          "hudi-external-table"
-        ],
-      },
-      "audit-plugin",
-      "flink-doris-connector",
-      "spark-doris-connector",
-      "datax",
-      "logstash",
-      {
-        title: "Doris Manager",
-        directoryPath: "doris-manager/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "compiling-deploying",
-          "initializing",
-          "cluster-managenent",
-          "space-list",
-          "space-management",
-          "system-settings"
-        ],
-      },
-      {
-        title: "SeaTunnel",
-        directoryPath: "seatunnel/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "flink-sink",
-          "spark-sink"
-        ],
-      },
-      "cloudcanal",
-      {
-        title: "UDF",
-        directoryPath: "udf/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "native-user-defined-function",
-          "remote-user-defined-function",
-          "contribute-udf",
-          "java-user-defined-function"
-        ],
-      },
-    ],
-  },
-  {
-    title: "SQL Manual",
-    directoryPath: "sql-manual/",
-    initialOpenGroupIndex: -1,
-    children: [
-      {
-        title: "SQL Functions",
-        directoryPath: "sql-functions/",
-        initialOpenGroupIndex: -1,
-        children: [
-          {
-            title: "Date Functions",
-            directoryPath: "date-time-functions/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "convert_tz",
-              "curdate",
-              "current_timestamp",
-              "curtime",
-              "date_add",
-              "date_format",
-              "date_sub",
-              "datediff",
-              "day",
-              "dayname",
-              "dayofmonth",
-              "dayofweek",
-              "dayofyear",
-              "from_days",
-              "from_unixtime",
-              "hour",
-              "makedate",
-              "minute",
-              "month",
-              "monthname",
-              "now",
-              "second",
-              "str_to_date",
-              "time_round",
-              "timediff",
-              "timestampadd",
-              "timestampdiff",
-              "to_days",
-              "unix_timestamp",
-              "utc_timestamp",
-              "week",
-              "weekday",
-              "weekofyear",
-              "year",
-              "yearweek",
-            ],
-          },
-          {
-            title: "GIS Functions",
-            directoryPath: "spatial-functions/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "st_astext",
-              "st_circle",
-              "st_contains",
-              "st_distance_sphere",
-              "st_geometryfromtext",
-              "st_linefromtext",
-              "st_point",
-              "st_polygon",
-              "st_x",
-              "st_y",
-            ],
-          },
-          {
-            title: "String Functions",
-            directoryPath: "string-functions/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "append_trailing_char_if_absent",
-              "ascii",
-              "bit_length",
-              "char_length",
-              "concat",
-              "concat_ws",
-              "ends_with",
-              "find_in_set",
-              "hex",
-              "instr",
-              "lcase",
-              "left",
-              "length",
-              "locate",
-              "lower",
-              "lpad",
-              "ltrim",
-              "money_format",
-              "null_or_empty",
-              "repeat",
-              "replace",
-              "reverse",
-              "right",
-              "rpad",
-              "split_part",
-              "starts_with",
-              "strleft",
-              "strright",
-              "substring",
-              "unhex",
-              {
-                title: "Fuzzy Match",
-                directoryPath: "like/",
-                initialOpenGroupIndex: -1,
-                children: [
-                  "like",
-                  "not_like",
-                ],
-              },
-              {
-                title: "Regular Match",
-                directoryPath: "regexp/",
-                initialOpenGroupIndex: -1,
-                children: [
-                  "regexp",
-                  "regexp_extract",
-                  "regexp_replace",
-                  "not_regexp",
-                ],
-              },
-            ],
-          },
-          {
-            title: "Aggregate Functions",
-            directoryPath: "aggregate-functions/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "approx_count_distinct",
-              "avg",
-              "bitmap_union",
-              "count",
-              "group_concat",
-              "hll_union_agg",
-              "max",
-              "max_by",
-              "min",
-              "min_by",
-              "percentile",
-              "percentile_approx",
-              "stddev",
-              "stddev_samp",
-              "sum",
-              "topn",
-              "var_samp",
-              "variance",
-            ],
-          },
-          {
-            title: "Bitmap Functions",
-            directoryPath: "bitmap-functions/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "bitmap_and",
-              "bitmap_contains",
-              "bitmap_empty",
-              "bitmap_from_string",
-              "bitmap_has_any",
-              "bitmap_has_all",
-              "bitmap_hash",
-              "bitmap_intersect",
-              "bitmap_or",
-              "bitmap_and_count",
-              "bitmap_or_count",
-              "bitmap_xor",
-              "bitmap_xor_count",
-              "bitmap_not",
-              "bitmap_and_not",
-              "bitmap_and_not_count",
-              "bitmap_subset_in_range",
-              "bitmap_subset_limit",
-              "sub_bitmap",
-              "bitmap_to_string",
-              "bitmap_union",
-              "bitmap_xor",
-              "to_bitmap",
-              "bitmap_max",
-              "intersect_count",
-              "orthogonal_bitmap_intersect",
-              "orthogonal_bitmap_intersect_count",
-              "orthogonal_bitmap_union_count",
-            ],
-          },
-          {
-            title: "Bitwise Functions",
-            directoryPath: "bitwise-functions/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "bitand",
-              "bitor",
-              "bitxor",
-              "bitnot"
-            ],
-          },
-          {
-            title: "Condition Functions",
-            directoryPath: "conditional-functions/",
-            children: [
-              "case",
-              "coalesce",
-              "if",
-              "ifnull",
-              "nvl",
-              "nullif"
-            ],
-          },
-          {
-            title: "JSON Functions",
-            directoryPath: "json-functions/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "get_json_double",
-              "get_json_int",
-              "get_json_string",
-              "json_array",
-              "json_object",
-              "json_quote",
-            ],
-          },
-          {
-            title: "Hash Functions",
-            directoryPath: "hash-functions/",
-            initialOpenGroupIndex: -1,
-            children: ["murmur_hash3_32"],
-          },
-          {
-            title: "Math Functions",
-            directoryPath: "math-functions/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "conv",
-              "pmod"
-            ],
-          },
-          {
-            title: "Encryption Functions",
-            directoryPath: "encrypt-digest-functions/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "aes",
-              "md5",
-              "md5sum",
-              "sm4",
-              "sm3",
-              "sm3sum"
-            ],
-          },
-          {
-            title: "Table Functions",
-            directoryPath: "table-functions/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "explode-bitmap",
-              "explode-split",
-              "explode-json-array",
-              "outer-combinator",
-              "numbers"
-            ],
-          },
-          {
-            title: "Analytic(Window) Functions",
-            directoryPath: "window-functions/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "WINDOW-FUNCTION",
-              "WINDOW-FUNCTION-SUM",
-              "WINDOW-FUNCTION-AVG",
-              "WINDOW-FUNCTION-COUNT",
-              "WINDOW-FUNCTION-MIN",
-              "WINDOW-FUNCTION-MAX",
-              "WINDOW-FUNCTION-LEAD",
-              "WINDOW-FUNCTION-LAG",
-              "WINDOW-FUNCTION-RANK",
-              "WINDOW-FUNCTION-DENSE-RANK",
-              "WINDOW-FUNCTION-FIRST-VALUE",
-              "WINDOW-FUNCTION-LAST-VALUE",
-              "WINDOW-FUNCTION-ROW-NUMBER",
-              "WINDOW-FUNCTION-NTILE",
-            ],
-          },
-          {
-            title: "Array Functions",
-            directoryPath: "array-functions/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "array_contains",
-              "array_position",
-              "element_at",
-            ],
-          },
-          "cast",
-          "digital-masking",
-        ],
-      },
-      {
-        title: "SQL Reference",
-        directoryPath: "sql-reference/",
-        initialOpenGroupIndex: -1,
-        children: [
-          {
-            title: "Account Management",
-            directoryPath: "Account-Management-Statements/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "CREATE-USER",
-              "CREATE-ROLE",
-              "DROP-ROLE",
-              "DROP-USER",
-              "GRANT",
-              "REVOKE",
-              "SET-PASSWORD",
-              "SET-PROPERTY",
-              "LDAP",
-            ],
-          },
-          {
-            title: "Cluster management",
-            directoryPath: "Cluster-Management-Statements/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "ALTER-SYSTEM-ADD-BACKEND",
-              "ALTER-SYSTEM-ADD-FOLLOWER",
-              "ALTER-SYSTEM-ADD-OBSERVER",
-              "ALTER-SYSTEM-DECOMMISSION-BACKEND",
-              "ALTER-SYSTEM-DROP-BACKEND",
-              "ALTER-SYSTEM-DROP-FOLLOWER",
-              "ALTER-SYSTEM-DROP-OBSERVER",
-              "ALTER-SYSTEM-MODIFY-BROKER",
-              "CANCEL-ALTER-SYSTEM",
-            ],
-          },
-          {
-            title: "DDL",
-            directoryPath: "Data-Definition-Statements/",
-            initialOpenGroupIndex: -1,
-            children: [
-              {
-                title: "Alter",
-                directoryPath: "Alter/",
-                initialOpenGroupIndex: -1,
-                children: [
-                  "ALTER-DATABASE",
-                  "ALTER-RESOURCE",
-                  "ALTER-SQL-BLOCK-RULE",
-                  "ALTER-TABLE-BITMAP",
-                  "ALTER-TABLE-COLUMN",
-                  "ALTER-TABLE-PARTITION",
-                  "ALTER-TABLE-PROPERTY",
-                  "ALTER-TABLE-RENAME",
-                  "ALTER-TABLE-REPLACE",
-                  "ALTER-TABLE-ROLLUP",
-                  "ALTER-VIEW",
-                  "CANCEL-ALTER-TABLE",
-                ],
-              },
-              {
-                title: "Backup and Restore",
-                directoryPath: "Backup-and-Restore/",
-                initialOpenGroupIndex: -1,
-                children: [
-                  "BACKUP",
-                  "CANCEL-BACKUP",
-                  "CANCEL-RESTORE",
-                  "CREATE-REPOSITORY",
-                  "DROP-REPOSITORY",
-                  "RESTORE",
-                ],
-              },
-              {
-                title: "Create",
-                directoryPath: "Create/",
-                initialOpenGroupIndex: -1,
-                children: [
-                  "CREATE-DATABASE",
-                  "CREATE-ENCRYPT-KEY",
-                  "CREATE-FILE",
-                  "CREATE-FUNCTION",
-                  "CREATE-INDEX",
-                  "CREATE-MATERIALIZED-VIEW",
-                  "CREATE-POLICY",
-                  "CREATE-RESOURCE",
-                  "CREATE-SQL-BLOCK-RULE",
-                  "CREATE-TABLE-LIKE",
-                  "CREATE-TABLE-AS-SELECT",
-                  "CREATE-TABLE",
-                  "CREATE-VIEW",
-                  "CREATE-EXTERNAL-TABLE",
-                ],
-              },
-              {
-                title: "Drop",
-                directoryPath: "Drop/",
-                initialOpenGroupIndex: -1,
-                children: [
-                  "DROP-DATABASE",
-                  "DROP-ENCRYPT-KEY",
-                  "DROP-FILE",
-                  "DROP-FUNCTION",
-                  "DROP-INDEX",
-                  "DROP-MATERIALIZED-VIEW",
-                  "DROP-RESOURCE",
-                  "DROP-SQL-BLOCK-RULE",
-                  "DROP-TABLE",
-                  "TRUNCATE-TABLE",
-                ],
-              },              
-            ],
-          },
-          {
-            title: "DML",
-            directoryPath: "Data-Manipulation-Statements/",
-            initialOpenGroupIndex: -1,
-            children: [
-              {
-                title: "Load",
-                directoryPath: "Load/",
-                initialOpenGroupIndex: -1,
-                children: [
-                  "ALTER-ROUTINE-LOAD",
-                  "BROKER-LOAD",
-                  "CANCEL-LOAD",
-                  "CREATE-ROUTINE-LOAD",
-                  "PAUSE-ROUTINE-LOAD",
-                  "RESUME-ROUTINE-LOAD",
-                  "STOP-ROUTINE-LOAD",
-                  "STREAM-LOAD",
-                  "PAUSE-SYNC-JOB",
-                  "RESUME-SYNC-JOB",
-                  "STOP-SYNC-JOB",
-                  "CREATE-SYNC-JOB",
-                ],
-              },
-              {
-                title: "Manipulation",
-                directoryPath: "Manipulation/",
-                initialOpenGroupIndex: -1,
-                children: [
-                  "DELETE",
-                  "INSERT",
-                  "UPDATE",
-                  "SELECT",
-                  "EXPORT"
-                ],
-              },
-              "OUTFILE"             
-            ],
-          },
-          {
-            title: "Database Administration",
-            directoryPath: "Database-Administration-Statements/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "ADMIN-CANCEL-REPAIR",
-              "ADMIN-CHECK-TABLET",
-              "ADMIN-REPAIR-TABLE",
-              "ADMIN-SET-CONFIG",
-              "ADMIN-SET-REPLICA-STATUS",
-              "ADMIN-SHOW-CONFIG",
-              "ADMIN-SHOW-REPLICA-DISTRIBUTION",
-              "ADMIN-SHOW-REPLICA-STATUS",
-              "ENABLE-FEATURE",
-              "INSTALL-PLUGIN",
-              "KILL",
-              "RECOVER",
-              "SET-VARIABLE",
-              "UNINSTALL-PLUGIN",
-            ],
-          },
-          {
-            title: "Show",
-            directoryPath: "Show-Statements/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "SHOW-ALTER",
-              "SHOW-BACKENDS",
-              "SHOW-BACKUP",
-              "SHOW-BROKER",
-              "SHOW-CHARSET",
-              "SHOW-COLLATION",
-              "SHOW-COLUMNS",
-              "SHOW-CREATE-DATABASE",
-              "SHOW-CREATE-FUNCTION",
-              "SHOW-CREATE-ROUTINE-LOAD",
-              "SHOW-CREATE-TABLE",
-              "SHOW-CREATE-MATERIALIZED-VIEW",
-              "SHOW-DATA",
-              "SHOW-DATA-SKEW",
-              "SHOW-DATABASE-ID",
-              "SHOW-DATABASES",
-              "SHOW-DELETE",
-              "SHOW-DYNAMIC-PARTITION",
-              "SHOW-ENCRYPT-KEY",
-              "SHOW-ENGINES",
-              "SHOW-EVENTS",
-              "SHOW-EXPORT",
-              "SHOW-FRONTENDS",
-              "SHOW-FUNCTIONS",
-              "SHOW-GRANTS",
-              "SHOW-INDEX",
-              "SHOW-LOAD-PROFILE",
-              "SHOW-LOAD-WARNINGS",
-              "SHOW-LOAD",
-              "SHOW-MIGRATIONS",
-              "SHOW-OPEN-TABLES",
-              "SHOW-PARTITION-ID",
-              "SHOW-PARTITIONS",
-              "SHOW-PLUGINS",
-              "SHOW-PROC",
-              "SHOW-PROCEDURE",
-              "SHOW-PROCESSLIST",
-              "SHOW-PROPERTY",
-              "SHOW-QUERY-PROFILE",
-              "SHOW-REPOSITORIES",
-              "SHOW-RESOURCES",
-              "SHOW-RESTORE",
-              "SHOW-ROLES",
-              "SHOW-ROLLUP",
-              "SHOW-ROUTINE-LOAD-TASK",
-              "SHOW-ROUTINE-LOAD",
-              "SHOW-SMALL-FILES",
-              "SHOW-SNAPSHOT",
-              "SHOW-SQL-BLOCK-RULE",
-              "SHOW-STATUS",
-              "SHOW-STREAM-LOAD",
-              "SHOW-SYNC-JOB",
-              "SHOW-TABLE-ID",
-              "SHOW-TABLES",
-              "SHOW-TABLE-STATUS",
-              "SHOW-TABLET",
-              "SHOW-TRANSACTION",
-              "SHOW-TRIGGERS",
-              "SHOW-TRASH",
-              // "SHOW-USER",
-              "SHOW-VARIABLES",
-              "SHOW-VIEW",
-              "SHOW-WARNING",
-              "SHOW-WHITE-LIST",
-            ],
-          },
-          {
-            title: "Data Types",
-            directoryPath: "Data-Types/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "BIGINT",
-              "BITMAP",
-              "BOOLEAN",
-              "CHAR",
-              "DATE",
-              "DATETIME",
-              "DECIMAL",
-              "DOUBLE",
-              "FLOAT",
-              "HLL",
-              "INT",
-              "LARGEINT",
-              "SMALLINT",
-              "STRING",
-              "TINYINT",
-              "VARCHAR",
-              "ARRAY",
-            ],
-          },
-          {
-            title: "Utility",
-            directoryPath: "Utility-Statements/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "DESCRIBE",
-              "HELP",
-              "USE",
-            ],
-          },
-        ],
-      },
-    ],
-  },
-  {
-    title: "Admin Manual",
-    directoryPath: "admin-manual/",
-    initialOpenGroupIndex: -1,
-    children: [
-      {
-        title: "cluster management",
-        directoryPath: "cluster-management/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "upgrade",
-          "elastic-expansion",
-          "load-balancing"
-        ],
-      },
-      {
-        title: "Data Admin",
-        directoryPath: "data-admin/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "backup",
-          "restore",
-          "delete-recover"
-        ],
-      },
-      "sql-interception",
-      "query-profile",
-      "tracing",
-      "optimization",
-      {
-        title: "Maintenance and Monitor",
-        directoryPath: "maint-monitor/",
-        initialOpenGroupIndex: -1,
-        children: [
-          {
-            title: "Monitor Metrics",
-            directoryPath: "monitor-metrics/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "fe-metrics",
-              "be-metrics"
-            ],
-          },
-          "disk-capacity",
-          "metadata-operation",
-          "tablet-meta-tool",
-          "tablet-local-debug",
-          "tablet-repair-and-balance",
-          "tablet-restore-tool",
-          "monitor-alert",
-          "doris-error-code",
-          "be-olap-error-code"
-        ],
-      },
-      {
-        title: "Config",
-        directoryPath: "config/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "fe-config",
-          "be-config",
-          "user-property"
-        ],
-      },
-      {
-        title: "User Privilege and Ldap",
-        directoryPath: "privilege-ldap/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "user-privilege",
-          "ldap"
-        ],
-      },
-      "multi-tenant",
-      {
-        title: "HTTP API",
-        directoryPath: "http-actions/",
-        initialOpenGroupIndex: -1,
-        children: [
-          {
-            title: "FE",
-            directoryPath: "fe/",
-            initialOpenGroupIndex: -1,
-            children: [
-              {
-                title: "MANAGER",
-                directoryPath: "manager/",
-                initialOpenGroupIndex: -1,
-                children: [
-                  "cluster-action",
-                  "node-action",
-                  "query-profile-action",
-                ],
-              },
-              "backends-action",
-              "bootstrap-action",
-              "cancel-load-action",
-              "check-decommission-action",
-              "check-storage-type-action",
-              "config-action",
-              "connection-action",
-              "get-ddl-stmt-action",
-              "get-load-info-action",
-              "get-load-state",
-              "get-log-file-action",
-              "get-small-file",
-              "ha-action",
-              "hardware-info-action",
-              "health-action",
-              "log-action",
-              "logout-action",
-              "meta-action",
-              "meta-info-action",
-              "meta-replay-state-action",
-              "profile-action",
-              "query-detail-action",
-              "query-profile-action",
-              "row-count-action",
-              "session-action",
-              "set-config-action",
-              "show-data-action",
-              "show-meta-info-action",
-              "show-proc-action",
-              "show-runtime-info-action",
-              "statement-execution-action",
-              "system-action",
-              "table-query-plan-action",
-              "table-row-count-action",
-              "table-schema-action",
-              "upload-action",
-            ],
-          },
-          "cancel-label",
-          "check-reset-rpc-cache",
-          "compaction-action",
-          "connection-action",
-          "fe-get-log-file",
-          "get-load-state",
-          "get-tablets",
-          "profile-action",
-          "query-detail-action",
-          "restore-tablet",
-          "show-data-action",
-          "tablet-migration-action",
-          "tablets_distribution",
-        ],
-        sidebarDepth: 1,
-      },
-    ],
-  },
-  {
-    title: "FAQ",
-    directoryPath: "faq/",
-    initialOpenGroupIndex: -1,
-    children: [
-      "install-faq",
-      "data-faq",
-      "sql-faq"
-    ],
-  },
-  {
-    title: "Benchmark",
-    directoryPath: "benchmark/",
-    initialOpenGroupIndex: -1,
-    children: [
-      "ssb",
-      "tpch"
-    ],
-  }
-];
diff --git a/docs/.vuepress/sidebar/zh-CN/community.js b/docs/.vuepress/sidebar/zh-CN/community.js
deleted file mode 100644
index b152707119..0000000000
--- a/docs/.vuepress/sidebar/zh-CN/community.js
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-module.exports =  [
-  "team",
-  "gitter",
-  "subscribe-mail-list",
-  "feedback",
-  {
-    title: "贡献指南",
-    directoryPath: "how-to-contribute/",
-    initialOpenGroupIndex: -1,
-    children: [
-      "how-to-contribute",
-      "contributor-guide",
-      "how-to-be-a-committer",
-      "commit-format-specification",
-      "pull-request",
-    ],
-  },
-  {
-    title: "版本发布与校验",
-    directoryPath: "release-and-verify/",
-    initialOpenGroupIndex: -1,
-    children: [
-      "release-prepare",
-      "release-doris-core",
-      "release-doris-connectors",
-      "release-doris-manager",
-      "release-complete",
-      "release-verify",
-    ],
-  },
-  "security",
-]
\ No newline at end of file
diff --git a/docs/.vuepress/sidebar/zh-CN/developer.js b/docs/.vuepress/sidebar/zh-CN/developer.js
deleted file mode 100644
index d9d94c1126..0000000000
--- a/docs/.vuepress/sidebar/zh-CN/developer.js
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-module.exports =  [
-  {
-    title: "设计文档",
-    directoryPath: "design/",
-    initialOpenGroupIndex: -1,
-    children: [
-      "doris_storage_optimization",
-      "grouping_sets_design",
-      "metadata-design",
-      "spark_load",
-    ],
-  }, 
-  {
-    title: "开发者手册",
-    directoryPath: "developer-guide/",
-    initialOpenGroupIndex: -1,
-    children: [
-      "debug-tool",
-      "benchmark-tool",
-      "docker-dev",
-      "fe-eclipse-dev",
-      "fe-idea-dev",
-      "fe-vscode-dev",
-      "be-vscode-dev",
-      "java-format-code",
-      "cpp-format-code",
-      "cpp-diagnostic-code",
-      "how-to-share-blogs",
-      "bitmap-hll-file-format",
-      "regression-testing",
-      "github-checks"
-    ],
-  },    
-]
diff --git a/docs/.vuepress/sidebar/zh-CN/docs.js b/docs/.vuepress/sidebar/zh-CN/docs.js
deleted file mode 100644
index 2dcd6d8445..0000000000
--- a/docs/.vuepress/sidebar/zh-CN/docs.js
+++ /dev/null
@@ -1,1014 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-module.exports = [
-  {
-    title: "快速开始",
-    directoryPath: "get-starting/",
-    initialOpenGroupIndex: -1,
-    children: [
-      "get-starting"
-    ],
-  },
-  {
-    title: "Doris架构",
-    directoryPath: "summary/",
-    initialOpenGroupIndex: -1,
-    children: [
-      "basic-summary",
-      "system-architecture"
-    ],
-  },
-  {
-    title: "安装部署",
-    directoryPath: "install/",
-    initialOpenGroupIndex: -1,
-    children: [
-      "install-deploy",
-      {
-        title: "源码编译",
-        directoryPath: "source-install/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "compilation",
-          "compilation-with-ldb-toolchain",
-          "compilation-arm"
-        ],
-        sidebarDepth: 2,
-      },
-    ]
-  },
-  {
-    title: "数据表设计",
-    directoryPath: "data-table/",
-    initialOpenGroupIndex: -1,
-    children: [
-      "data-model",
-      "data-partition",
-      "basic-usage",
-      "advance-usage",
-      "hit-the-rollup",
-      "best-practice",
-      {
-        title: "索引",
-        directoryPath: "index/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "bloomfilter",
-          "prefix-index",
-          "bitmap-index"
-        ],
-      },
-    ],
-  },
-  {
-    title: "数据操作",
-    directoryPath: "data-operate/",
-    initialOpenGroupIndex: -1,
-    children: [
-      {
-        title: "数据导入",
-        directoryPath: "import/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "load-manual",
-          {
-            title: "按场景导入",
-            directoryPath: "import-scenes/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "local-file-load",
-              "external-storage-load",
-              "kafka-load",
-              "external-table-load",
-              "jdbc-load",
-              "load-atomicity",
-              "load-data-convert",
-              "load-strict-mode", 
-            ],
-          },
-          {
-            title: "按方式导入",
-            directoryPath: "import-way/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "binlog-load-manual",
-              "broker-load-manual",
-              "routine-load-manual",
-              "spark-load-manual",
-              "stream-load-manual",
-              "s3-load-manual",
-              "insert-into-manual",
-              "load-json-format", 
-            ],
-          },                
-        ],
-      },
-      {
-        title: "Export导出",
-        directoryPath: "export/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "export-manual",
-          "outfile",
-          "export_with_mysql_dump",
-        ],
-      },
-      {
-        title: "数据更新及删除",
-        directoryPath: "update-delete/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "update",
-          "sequence-column-manual",
-          "delete-manual",
-          "batch-delete-manual"
-        ],
-      },
-    ],
-  },
-  {
-    title: "进阶使用",
-    directoryPath: "advanced/",
-    initialOpenGroupIndex: -1,
-    children: [
-      "materialized-view",
-      {
-        title: "表结构变更",
-        directoryPath: "alter-table/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "schema-change"
-        ],
-      },
-      {
-        title: "Doris表分区",
-        directoryPath: "partition/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "dynamic-partition",
-          "table-tmp-partition"
-        ],
-      },
-      {
-        title: "Join优化",
-        directoryPath: "join-optimization/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "bucket-shuffle-join",
-          "colocation-join",
-          "runtime-filter",
-          "doris-join-optimization"
-        ],
-      },
-      {
-        title: "数据缓存",
-        directoryPath: "cache/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "partition-cache"
-        ],
-      },
-      "vectorized-execution-engine",
-      "broker",
-      "resource",
-      "orthogonal-bitmap-manual",
-      "using-hll",
-      "variables",
-      "time-zone",
-      "small-file-mgr",
-      {
-          title: "最佳实践",
-          directoryPath: "best-practice/",
-          initialOpenGroupIndex: -1,
-          children: [
-            "query-analysis",
-            "import-analysis",
-            "debug-log"
-          ],
-      }
-    ],
-  },
-  {
-    title: "生态扩展",
-    directoryPath: "ecosystem/",
-    initialOpenGroupIndex: -1,
-    children: [
-      {
-        title: "扩展表",
-        directoryPath: "external-table/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "doris-on-es",
-          "odbc-of-doris",
-          "hive-of-doris",
-          "iceberg-of-doris",
-          "hudi-external-table"
-        ],
-      },
-      "audit-plugin",
-      "flink-doris-connector",
-      "spark-doris-connector",
-      "datax",
-      "logstash",
-      {
-        title: "Doris Manager",
-        directoryPath: "doris-manager/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "compiling-deploying",
-          "initializing",
-          "cluster-managenent",
-          "space-list",
-          "space-management",
-          "system-settings"
-        ],
-      },
-      {
-        title: "SeaTunnel",
-        directoryPath: "seatunnel/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "flink-sink",
-          "spark-sink"
-        ],
-      },
-      "cloudcanal",
-      {
-        title: "自定义函数",
-        directoryPath: "udf/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "native-user-defined-function",
-          "remote-user-defined-function",
-          "contribute-udf",
-          "java-user-defined-function"
-        ],
-      },
-    ],
-  },
-  {
-    title: "SQL手册",
-    directoryPath: "sql-manual/",
-    initialOpenGroupIndex: -1,
-    children: [
-      {
-        title: "SQL 函数",
-        directoryPath: "sql-functions/",
-        initialOpenGroupIndex: -1,
-        children: [
-          {
-            title: "日期函数",
-            directoryPath: "date-time-functions/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "convert_tz",
-              "curdate",
-              "current_timestamp",
-              "curtime",
-              "date_add",
-              "date_format",
-              "date_sub",
-              "datediff",
-              "day",
-              "dayname",
-              "dayofmonth",
-              "dayofweek",
-              "dayofyear",
-              "from_days",
-              "from_unixtime",
-              "hour",
-              "makedate",
-              "minute",
-              "month",
-              "monthname",
-              "now",
-              "second",
-              "str_to_date",
-              "time_round",
-              "timediff",
-              "timestampadd",
-              "timestampdiff",
-              "to_days",
-              "unix_timestamp",
-              "utc_timestamp",
-              "week",
-              "weekday",
-              "weekofyear",
-              "year",
-              "yearweek",
-            ],
-          },
-          {
-            title: "地理位置函数",
-            directoryPath: "spatial-functions/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "st_astext",
-              "st_circle",
-              "st_contains",
-              "st_distance_sphere",
-              "st_geometryfromtext",
-              "st_linefromtext",
-              "st_point",
-              "st_polygon",
-              "st_x",
-              "st_y",
-            ],
-          },
-          {
-            title: "字符串函数",
-            directoryPath: "string-functions/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "append_trailing_char_if_absent",
-              "ascii",
-              "bit_length",
-              "char_length",
-              "concat",
-              "concat_ws",
-              "ends_with",
-              "find_in_set",
-              "hex",
-              "instr",
-              "lcase",
-              "left",
-              "length",
-              "locate",
-              "lower",
-              "lpad",
-              "ltrim",
-              "money_format",
-              "null_or_empty",
-              "repeat",
-              "replace",
-              "reverse",
-              "right",
-              "rpad",
-              "split_part",
-              "starts_with",
-              "strleft",
-              "strright",
-              "substring",
-              "unhex",
-              {
-                title: "模糊匹配",
-                directoryPath: "like/",
-                initialOpenGroupIndex: -1,
-                children: [
-                  "like",
-                  "not_like",
-                ],
-              },
-              {
-                title: "正则匹配",
-                directoryPath: "regexp/",
-                initialOpenGroupIndex: -1,
-                children: [
-                  "regexp",
-                  "regexp_extract",
-                  "regexp_replace",
-                  "not_regexp",
-                ],
-              },
-            ],
-          },
-          {
-            title: "聚合函数",
-            directoryPath: "aggregate-functions/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "approx_count_distinct",
-              "avg",
-              "bitmap_union",
-              "count",
-              "group_concat",
-              "hll_union_agg",
-              "max",
-              "max_by",
-              "min",
-              "min_by",
-              "percentile",
-              "percentile_approx",
-              "stddev",
-              "stddev_samp",
-              "sum",
-              "topn",
-              "var_samp",
-              "variance",
-            ],
-          },
-          {
-            title: "bitmap函数",
-            directoryPath: "bitmap-functions/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "bitmap_and",
-              "bitmap_contains",
-              "bitmap_empty",
-              "bitmap_from_string",
-              "bitmap_has_any",
-              "bitmap_has_all",
-              "bitmap_hash",
-              "bitmap_intersect",
-              "bitmap_or",
-              "bitmap_and_count",
-              "bitmap_or_count",
-              "bitmap_xor",
-              "bitmap_xor_count",
-              "bitmap_not",
-              "bitmap_and_not",
-              "bitmap_and_not_count",
-              "bitmap_subset_in_range",
-              "bitmap_subset_limit",
-              "sub_bitmap",
-              "bitmap_to_string",
-              "bitmap_union",
-              "bitmap_xor",
-              "to_bitmap",
-              "bitmap_max",
-              "intersect_count",
-              "orthogonal_bitmap_intersect",
-              "orthogonal_bitmap_intersect_count",
-              "orthogonal_bitmap_union_count",
-            ],
-          },
-          {
-            title: "bitwise函数",
-            directoryPath: "bitwise-functions/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "bitand",
-              "bitor",
-              "bitxor",
-              "bitnot"
-            ],
-          },
-          {
-            title: "条件函数",
-            directoryPath: "conditional-functions/",
-            children: [
-              "case",
-              "coalesce",
-              "if",
-              "ifnull",
-              "nvl",
-              "nullif"
-            ],
-          },
-          {
-            title: "json 函数",
-            directoryPath: "json-functions/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "get_json_double",
-              "get_json_int",
-              "get_json_string",
-              "json_array",
-              "json_object",
-              "json_quote",
-            ],
-          },
-          {
-            title: "Hash函数",
-            directoryPath: "hash-functions/",
-            initialOpenGroupIndex: -1,
-            children: ["murmur_hash3_32"],
-          },
-          {
-            title: "数学函数",
-            directoryPath: "math-functions/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "conv",
-              "pmod"
-            ],
-          },
-          {
-            title: "加密和信息摘要函数",
-            directoryPath: "encrypt-digest-functions/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "aes",
-              "md5",
-              "md5sum",
-              "sm4",
-              "sm3",
-              "sm3sum"
-            ],
-          },
-          {
-            title: "表函数",
-            directoryPath: "table-functions/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "explode-bitmap",
-              "explode-split",
-              "explode-json-array",
-              "outer-combinator",
-              "numbers"
-            ],
-          },
-          {
-            title: "分析(窗口)函数",
-            directoryPath: "window-functions/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "WINDOW-FUNCTION",
-              "WINDOW-FUNCTION-SUM",
-              "WINDOW-FUNCTION-AVG",
-              "WINDOW-FUNCTION-COUNT",
-              "WINDOW-FUNCTION-MIN",
-              "WINDOW-FUNCTION-MAX",
-              "WINDOW-FUNCTION-LEAD",
-              "WINDOW-FUNCTION-LAG",
-              "WINDOW-FUNCTION-RANK",
-              "WINDOW-FUNCTION-DENSE-RANK",
-              "WINDOW-FUNCTION-FIRST-VALUE",
-              "WINDOW-FUNCTION-LAST-VALUE",
-              "WINDOW-FUNCTION-ROW-NUMBER",
-              "WINDOW-FUNCTION-NTILE",
-            ],
-          },
-          {
-            title: "Array函数",
-            directoryPath: "array-functions/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "array_contains",
-              "array_position",
-              "element_at",
-            ],
-          },
-          "cast",
-          "digital-masking",
-        ],
-      },
-      {
-        title: "SQL手册",
-        directoryPath: "sql-reference/",
-        initialOpenGroupIndex: -1,
-        children: [
-          {
-            title: "账户管理",
-            directoryPath: "Account-Management-Statements/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "CREATE-USER",
-              "CREATE-ROLE",
-              "DROP-ROLE",
-              "DROP-USER",
-              "GRANT",
-              "REVOKE",
-              "SET-PASSWORD",
-              "SET-PROPERTY",
-              "LDAP",
-            ],
-          },
-          {
-            title: "集群管理",
-            directoryPath: "Cluster-Management-Statements/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "ALTER-SYSTEM-ADD-BACKEND",
-              "ALTER-SYSTEM-ADD-FOLLOWER",
-              "ALTER-SYSTEM-ADD-OBSERVER",
-              "ALTER-SYSTEM-DECOMMISSION-BACKEND",
-              "ALTER-SYSTEM-DROP-BACKEND",
-              "ALTER-SYSTEM-DROP-FOLLOWER",
-              "ALTER-SYSTEM-DROP-OBSERVER",
-              "ALTER-SYSTEM-MODIFY-BROKER",
-              "CANCEL-ALTER-SYSTEM",
-            ],
-          },
-          {
-            title: "DDL",
-            directoryPath: "Data-Definition-Statements/",
-            initialOpenGroupIndex: -1,
-            children: [
-              {
-                title: "Alter",
-                directoryPath: "Alter/",
-                initialOpenGroupIndex: -1,
-                children: [
-                  "ALTER-DATABASE",
-                  "ALTER-RESOURCE",
-                  "ALTER-SQL-BLOCK-RULE",
-                  "ALTER-TABLE-BITMAP",
-                  "ALTER-TABLE-COLUMN",
-                  "ALTER-TABLE-PARTITION",
-                  "ALTER-TABLE-PROPERTY",
-                  "ALTER-TABLE-RENAME",
-                  "ALTER-TABLE-REPLACE",
-                  "ALTER-TABLE-ROLLUP",
-                  "ALTER-VIEW",
-                  "CANCEL-ALTER-TABLE",
-                ],
-              },
-              {
-                title: "备份及恢复",
-                directoryPath: "Backup-and-Restore/",
-                initialOpenGroupIndex: -1,
-                children: [
-                  "BACKUP",
-                  "CANCEL-BACKUP",
-                  "CANCEL-RESTORE",
-                  "CREATE-REPOSITORY",
-                  "DROP-REPOSITORY",
-                  "RESTORE",
-                ],
-              },
-              {
-                title: "Create",
-                directoryPath: "Create/",
-                initialOpenGroupIndex: -1,
-                children: [
-                  "CREATE-DATABASE",
-                  "CREATE-ENCRYPT-KEY",
-                  "CREATE-FILE",
-                  "CREATE-FUNCTION",
-                  "CREATE-INDEX",
-                  "CREATE-MATERIALIZED-VIEW",
-                  "CREATE-POLICY",
-                  "CREATE-RESOURCE",
-                  "CREATE-SQL-BLOCK-RULE",
-                  "CREATE-TABLE-LIKE",
-                  "CREATE-TABLE-AS-SELECT",
-                  "CREATE-TABLE",
-                  "CREATE-VIEW",
-                  "CREATE-EXTERNAL-TABLE",
-                ],
-              },
-              {
-                title: "Drop",
-                directoryPath: "Drop/",
-                initialOpenGroupIndex: -1,
-                children: [
-                  "DROP-DATABASE",
-                  "DROP-ENCRYPT-KEY",
-                  "DROP-FILE",
-                  "DROP-FUNCTION",
-                  "DROP-INDEX",
-                  "DROP-MATERIALIZED-VIEW",
-                  "DROP-RESOURCE",
-                  "DROP-SQL-BLOCK-RULE",
-                  "DROP-TABLE",
-                  "TRUNCATE-TABLE",
-                ],
-              },              
-            ],
-          },
-          {
-            title: "DML",
-            directoryPath: "Data-Manipulation-Statements/",
-            initialOpenGroupIndex: -1,
-            children: [
-              {
-                title: "Load",
-                directoryPath: "Load/",
-                initialOpenGroupIndex: -1,
-                children: [
-                  "ALTER-ROUTINE-LOAD",
-                  "BROKER-LOAD",
-                  "CANCEL-LOAD",
-                  "CREATE-ROUTINE-LOAD",
-                  "PAUSE-ROUTINE-LOAD",
-                  "RESUME-ROUTINE-LOAD",
-                  "STOP-ROUTINE-LOAD",
-                  "STREAM-LOAD",
-                  "PAUSE-SYNC-JOB",
-                  "RESUME-SYNC-JOB",
-                  "STOP-SYNC-JOB",
-                  "CREATE-SYNC-JOB",
-                ],
-              },
-              {
-                title: "操作",
-                directoryPath: "Manipulation/",
-                initialOpenGroupIndex: -1,
-                children: [
-                  "DELETE",
-                  "INSERT",
-                  "UPDATE",
-                  "SELECT",
-                  "EXPORT"
-                ],
-              },
-              "OUTFILE"             
-            ],
-          },
-          {
-            title: "数据库管理",
-            directoryPath: "Database-Administration-Statements/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "ADMIN-CANCEL-REPAIR",
-              "ADMIN-CHECK-TABLET",
-              "ADMIN-REPAIR-TABLE",
-              "ADMIN-SET-CONFIG",
-              "ADMIN-SET-REPLICA-STATUS",
-              "ADMIN-SHOW-CONFIG",
-              "ADMIN-SHOW-REPLICA-DISTRIBUTION",
-              "ADMIN-SHOW-REPLICA-STATUS",
-              "ENABLE-FEATURE",
-              "INSTALL-PLUGIN",
-              "KILL",
-              "RECOVER",
-              "SET-VARIABLE",
-              "UNINSTALL-PLUGIN",
-            ],
-          },
-          {
-            title: "Show",
-            directoryPath: "Show-Statements/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "SHOW-ALTER",
-              "SHOW-BACKENDS",
-              "SHOW-BACKUP",
-              "SHOW-BROKER",
-              "SHOW-CHARSET",
-              "SHOW-COLLATION",
-              "SHOW-COLUMNS",
-              "SHOW-CREATE-DATABASE",
-              "SHOW-CREATE-FUNCTION",
-              "SHOW-CREATE-ROUTINE-LOAD",
-              "SHOW-CREATE-TABLE",
-              "SHOW-CREATE-MATERIALIZED-VIEW",
-              "SHOW-DATA",
-              "SHOW-DATA-SKEW",
-              "SHOW-DATABASE-ID",
-              "SHOW-DATABASES",
-              "SHOW-DELETE",
-              "SHOW-DYNAMIC-PARTITION",
-              "SHOW-ENCRYPT-KEY",
-              "SHOW-ENGINES",
-              "SHOW-EVENTS",
-              "SHOW-EXPORT",
-              "SHOW-FRONTENDS",
-              "SHOW-FUNCTIONS",
-              "SHOW-GRANTS",
-              "SHOW-INDEX",
-              "SHOW-LOAD-PROFILE",
-              "SHOW-LOAD-WARNINGS",
-              "SHOW-LOAD",
-              "SHOW-MIGRATIONS",
-              "SHOW-OPEN-TABLES",
-              "SHOW-PARTITION-ID",
-              "SHOW-PARTITIONS",
-              "SHOW-PLUGINS",
-              "SHOW-PROC",
-              "SHOW-PROCEDURE",
-              "SHOW-PROCESSLIST",
-              "SHOW-PROPERTY",
-              "SHOW-QUERY-PROFILE",
-              "SHOW-REPOSITORIES",
-              "SHOW-RESOURCES",
-              "SHOW-RESTORE",
-              "SHOW-ROLES",
-              "SHOW-ROLLUP",
-              "SHOW-ROUTINE-LOAD-TASK",
-              "SHOW-ROUTINE-LOAD",
-              "SHOW-SMALL-FILES",
-              "SHOW-SNAPSHOT",
-              "SHOW-SQL-BLOCK-RULE",
-              "SHOW-STATUS",
-              "SHOW-STREAM-LOAD",
-              "SHOW-SYNC-JOB",
-              "SHOW-TABLE-ID",
-              "SHOW-TABLES",
-              "SHOW-TABLE-STATUS",
-              "SHOW-TABLET",
-              "SHOW-TRANSACTION",
-              "SHOW-TRIGGERS",
-              "SHOW-TRASH",
-              // "SHOW-USER",
-              "SHOW-VARIABLES",
-              "SHOW-VIEW",
-              "SHOW-WARNING",
-              "SHOW-WHITE-LIST",
-            ],
-          },
-          {
-            title: "数据类型",
-            directoryPath: "Data-Types/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "BIGINT",
-              "BITMAP",
-              "BOOLEAN",
-              "CHAR",
-              "DATE",
-              "DATETIME",
-              "DECIMAL",
-              "DOUBLE",
-              "FLOAT",
-              "HLL",
-              "INT",
-              "LARGEINT",              
-              "SMALLINT",
-              "STRING",
-              "TINYINT",
-              "VARCHAR",
-              "ARRAY",
-            ],
-          },
-          {
-            title: "辅助命令",
-            directoryPath: "Utility-Statements/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "DESCRIBE",
-              "HELP",
-              "USE"
-            ],
-          },
-        ],
-      },
-    ],
-  },
-  {
-    title: "管理手册",
-    directoryPath: "admin-manual/",
-    initialOpenGroupIndex: -1,
-    children: [
-      {
-        title: "集群管理",
-        directoryPath: "cluster-management/",
-        initialOpenGroupIndex: -1,
-        children: [
-           "upgrade",
-           "elastic-expansion",
-           "load-balancing"
-        ],
-      },
-      {
-        title: "数据管理",
-        directoryPath: "data-admin/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "backup",
-          "restore",
-          "delete-recover"
-        ],
-      },
-      "sql-interception",
-      "query-profile",
-      "tracing",
-      "optimization",
-      {
-        title: "运维监控",
-        directoryPath: "maint-monitor/",
-        initialOpenGroupIndex: -1,
-        children: [
-          {
-            title: "监控指标",
-            directoryPath: "monitor-metrics/",
-            initialOpenGroupIndex: -1,
-            children: [
-              "fe-metrics",
-              "be-metrics"
-            ],
-          },
-          "disk-capacity",
-          "metadata-operation",
-          "tablet-meta-tool",
-          "tablet-local-debug",
-          "tablet-repair-and-balance",
-          "tablet-restore-tool",
-          "monitor-alert",
-          "doris-error-code",
-          "be-olap-error-code"
-        ],
-      },
-      {
-        title: "配置管理",
-        directoryPath: "config/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "fe-config",
-          "be-config",
-          "user-property"
-        ],
-      },
-      {
-        title: "用户权限及认证",
-        directoryPath: "privilege-ldap/",
-        initialOpenGroupIndex: -1,
-        children: [
-          "user-privilege",
-          "ldap"
-        ],
-      },
-      "multi-tenant",
-      {
-        title: "HTTP API",
-        directoryPath: "http-actions/",
-        initialOpenGroupIndex: -1,
-        children: [
-          {
-            title: "FE",
-            directoryPath: "fe/",
-            initialOpenGroupIndex: -1,
-            children: [
-              {
-                title: "MANAGER",
-                directoryPath: "manager/",
-                initialOpenGroupIndex: -1,
-                children: [
-                  "cluster-action",
-                  "node-action",
-                  "query-profile-action",
-                ],
-              },
-              "backends-action",
-              "bootstrap-action",
-              "cancel-load-action",
-              "check-decommission-action",
-              "check-storage-type-action",
-              "config-action",
-              "connection-action",
-              "get-ddl-stmt-action",
-              "get-load-info-action",
-              "get-load-state",
-              "get-log-file-action",
-              "get-small-file",
-              "ha-action",
-              "hardware-info-action",
-              "health-action",
-              "log-action",
-              "logout-action",
-              "meta-action",
-              "meta-info-action",
-              "meta-replay-state-action",
-              "profile-action",
-              "query-detail-action",
-              "query-profile-action",
-              "row-count-action",
-              "session-action",
-              "set-config-action",
-              "show-data-action",
-              "show-meta-info-action",
-              "show-proc-action",
-              "show-runtime-info-action",
-              "statement-execution-action",
-              "system-action",
-              "table-query-plan-action",
-              "table-row-count-action",
-              "table-schema-action",
-              "upload-action",
-            ],
-          },
-          "cancel-label",
-          "check-reset-rpc-cache",
-          "compaction-action",
-          "connection-action",
-          "fe-get-log-file",
-          "get-load-state",
-          "get-tablets",
-          "profile-action",
-          "query-detail-action",
-          "restore-tablet",
-          "show-data-action",
-          "tablet-migration-action",
-          "tablets_distribution",
-        ],
-        sidebarDepth: 1,
-      },
-    ],
-  },
-  {
-    title: "常见问题",
-    directoryPath: "faq/",
-    initialOpenGroupIndex: -1,
-    children: [
-      "install-faq",
-      "data-faq",
-      "sql-faq"
-    ],
-  },
-  {
-    title: "性能测试",
-    directoryPath: "benchmark/",
-    initialOpenGroupIndex: -1,
-    children: [
-      "ssb",
-      "tpch"
-    ],
-  }
-];
diff --git a/docs/.vuepress/styles/index.styl b/docs/.vuepress/styles/index.styl
deleted file mode 100644
index eefa0cbe56..0000000000
--- a/docs/.vuepress/styles/index.styl
+++ /dev/null
@@ -1,2764 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-
-/* scrollbar css */
-body::-webkit-scrollbar {
-  width: 5px;
-  height: 0px;
-}
-body::-webkit-scrollbar-track {
-  background: #fff;
-}
-body::-webkit-scrollbar-thumb {
-  background: #0c8760;
-}
-::selection {
-    color:#FFFFFF;
-    background-color:#0c8760;
-    text-shadow:none;
-}
-::-moz-selection {
-    color:#FFFFFF;
-    background-color:#0c8760;
-    text-shadow:none;
-}
-.sidebar::-webkit-scrollbar {
-  width: 0px;
-  height: 0px;
-}
-
-body{
-    font-family: Arial !important;
-}
-#app.home{
-    padding: 0;
-    max-width: none;  
-}
-div > .navbar {
-    height: 5.625rem;
-    display: flex;
-    flex-direction: row;
-    justify-content: flex-end;
-    background: #fff;
-    border-bottom: 1px solid #f5f5f5;
-    padding-top: 0;
-    padding-bottom: 0;
-    box-shadow: none;
-}
-.navbar .navbarCenter{
-    max-width: 100%;
-    width :100%;
-    margin: 0 auto;
-    display: flex;
-    justify-content: space-between;
-    align-content: center;
-    height: 100%;
-}
-.navbar > .navbarCenter > .haoLinks{
-    position: static;
-    height: 100%;
-}
-.navbar > .navbarCenter > .haoLogo{
-    position: static;
-    display: flex;
-}
-.navbar > .navbarCenter > .haoLogo .logo{
-    border-radius: 0;
-    height: 40px;
-    min-width: auto;
-}
-.nav-links .nav-item:nth-last-child(2){
-    margin-left: 2rem !important;
-    order: 2;
-}
-.nav-links .nav-item .downloads{
-    color: #fff !important;
-    border-radius: 25px;
-    background: #2ca37d;
-    padding: 13px 30px;
-    display: block;  
-}
-.nav-links .nav-item .downloads:hover{
-    background: #0c8760;
-    border-bottom: 5px solid #01583d !important;
-    box-shadow: 0 7px 10px rgba(1,88,4,.4);
-}
-.nav-links .nav-item .downloads.router-link-active {
-    color: #ffffff;
-}
-.nav-links .nav-item i{
-    font-size: 12px;
-}
-.logoBox{
-    display: flex;
-    flex-direction: column;
-    justify-content: center;
-}
-div .nav-links a:hover,
-div .dropdown-wrapper .nav-dropdown .dropdown-item a:hover{
-    color: #118b64;
-}
-
-div .home-blog .hero {
-    margin: 5.625rem auto 0;
-    background: url(/blog-images/homebannerbg.jpg) no-repeat center;
-    background-size: cover;
-    height: calc(100vh - 89px);
-    position: relative;
-    box-sizing: border-box;
-    padding: 0 20px;
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-}
-.hero .b{
-    max-width: 1300px;
-    width: 100%;
-    margin: 0 auto;
-    display: flex;
-    justify-content: space-between;
-}
-.bImg{
-    position: absolute;
-    right: 0;
-    height: 100%;
-    top: 0;
-    width: 50%;
-    display: flex;
-    flex-direction: column;
-    justify-content: center;
-}
-.sum{
-    font-size: 18px;
-    color: rgba(255,255,255,.5);
-    line-height: 1.8;
-    margin: 50px 0 100px;
-    text-align: left;
-}
-.bText{
-    width: 50%;    
-}
-div .home-blog .home-blog-wrapper {
-    display: none;
-}
-.bannerHref{
-    display: flex;
-    justify-content: flex-start;
-    flex-wrap: wrap;
-}
-.bannerHref a{
-    width: 170px;
-    height: 50px;
-    border-radius: 50px;
-    background: #2ca37d;
-    text-align: center;
-    line-height: 55px;
-    margin-right: 25px;
-    color: #fff;
-    font-size: 18px;
-    vertical-align: middle;
-    transition: all ease .3s;
-    position: relative;
-    border: 5px solid rgba(1,88,61,0);
-    border-top: 0;
-    border-left: 0;
-    border-right: 0;
-    margin-bottom 20px
-}
-.bannerHref a i{
-    font-size: 22px;
-    margin-right: 5px;
-    position: absolute;
-    top: 50%;
-    transform: translateY(-50%);
-    left: 40px;
-    padding-top: 4px; 
-}
-.bannerHref a.button1{
-    background: #2ca37d;
-    width: 196px;
-}
-.bannerHref a.button2{
-    background: #333;
-    padding-left: 16px;
-    border-bottom: 5px solid rgba(1,88,61,0);
-}
-.bannerHref a:hover{
-    background: #0c8760;
-    border: 5px solid #01583d;
-    border-top: 0;
-    border-left: 0;
-    border-right: 0;
-    transform: translateY(-5px);
-    box-shadow: 0 7px 10px rgba(1,88,4,.4);
-}
-.bannerHref a.button2.black:hover {
-    background: #111;
-    border-color: #000000;
-    box-shadow: 0 7px 10px rgba(0,0,0,.2);
-}
-.bannerHref a.button2.white {
-    background: #ffffff;
-    color: #000000;
-}
-.bannerHref a.button2.white:hover {
-    border-color: #ffffff;
-    box-shadow: 0 7px 10px rgba(0,0,0,.2);
-}
-div .content__default:not(.custom) {
-    max-width: 100%;
-    padding: 0px;
-}
-.content__default:not(.custom) > h1:first-child {
-    display: none;
-}
-.newsBox{
-    padding: 100px 15px 130px;
-    max-width: 1300px;
-    width: 100%;
-    margin: 0 auto;
-    box-sizing: border-box;
-}
-.newsBox ul{
-    list-style: none;
-    display: flex;
-    justify-content: space-between;
-    padding: 0;
-    margin-bottom: 2.3rem;
-}
-.newsBox li{
-    background: #f0f3f8;
-    width: 31.3%;
-    border-radius: 25px;
-    padding: 45px 23px 0;
-    box-sizing: border-box;
-    display: flex;
-    flex-direction: column;
-    justify-content: space-between;
-    transition: all ease 0.3s;
-}
-.newsBox.transFroms{
-    transform: translateY(0);
-    opacity: 1;
-}
-.newsboxTitle{
-    margin-bottom: 25px;
-}
-.newsboxTitle .t{
-    color: #333333;
-    font-size: 18px;
-    font-weight: bold;
-    line-height: 1.5;
-    transition: all ease .3s;
-}
-.newsboxTitle .s{
-    color: #666666;
-    font-size: 14px;
-    line-height: 1.8;
-    margin: 22px 0;
-}
-.newsboxTitle i{
-    font-size: 24px;
-    color: #15a9ca;
-    line-height: 1;
-    transition: all ease .3s;
-    display: inline-block;
-}
-.newsboxImg {
-    border-top-left-radius: 15px;
-    border-top-right-radius: 15px;
-    overflow: hidden;
-    height: 230px;
-}
-.newsboxImg img{
-    transition: all ease .3s;
-    width: 100%;
-    pointer-events: none;
-}
-.newsBox li:hover{
-    box-shadow: 0px 15px 20px rgba(19,29,46,.15);
-    transform: translateY(-10px);
-    transition: all ease .3s;
-}
-.newsBox li:hover .newsboxTitle .t{
-    color: #0c8760;
-}
-.newsBox li:hover .newsboxTitle i{
-    color: #0c8760;
-    transform: translateX(100%);
-}
-.newsBox li:hover .newsboxImg img{
-    transform: scale(1.1);
-}
-div .content__default:not(.custom) a:hover {
-    text-decoration: none;
-}
-.newsdownData {
-    border-radius: 25px;
-    background: url(/blog-images/newdownb.jpg);padding: 90px 50px;
-    position: relative;
-}
-.newsdownData .t{
-    font-size: 32px;
-    line-height: 1.2;
-    font-weight: bold;
-    color: #fff;
-    margin: 0;
-}
-.newsleft{
-    width: 70%;
-}
-.newsleft .s{
-    font-size: 22px;
-    color: #fff;
-    opacity: .65;
-    line-height: 1.6;
-    font-weight: bold;
-    margin: 50px 0;
-}
-.newsleft .fataImg{
-    position: absolute;
-    left: 0;
-    right: 0;
-    transform: translateY(-240px);
-    z-index: 10;
-    height: 291px;
-}
-.newsleft .fataImg img{
-    position: absolute;
-    pointer-events: none;
-}
-.newsleft .fataImg img:nth-child(2){
-    width: 0;
-}
-.newsleft .fataImg .dim{
-    height: 100%;
-    position: absolute;
-    left: 0;
-    top: 0;
-    width: 100%;
-    transition: all ease 1.5s .8s;
-    overflow: hidden;
-}
-.newsleft .fataImg .dim img{
-    left: 0;
-    width: 1270px;
-    max-width: none;
-}
-.newsleft .fataImg .dim[data-state="true"]{
-    width: 100%;
-}
-.newsleft .al{
-    margin-top: 150px;
-}
-.newsleft a{
-    margin-top: 0px;
-    display: inline-block;
-    color: #333;
-    background: #fff;
-    padding: 10px 38px;
-    border-radius: 30px;
-    transition: all ease 0.3s;
-    border-bottom: 5px solid rgba(1,88,60,0);
-    font-size: 18px;
-    padding-top: 15px;
-}
-.newsleft a:hover{
-    background: #0c8760;
-    border-bottom: 5px solid #01583d;
-    transform: translateY(-5px);
-    box-shadow: 0 7px 10px rgba(13,28,70,.15);
-    color: #fff;
-}
-.apacheDoris{
-    max-width: 1300px;
-    width: 100%;
-    margin: 0 auto;
-    padding: 0 15px;
-    box-sizing: border-box;
-}
-.appleft,
-.appright {
-    display: flex;
-    justify-content: space-between;
-}
-.apptitle {
-    width: 40%;
-    padding-top: 55px;
-}
-.appimg{
-    width: 55%;
-}
-.appimg img{
-    float: right;
-    pointer-events: none;
-}
-.apptitle .t{
-    font-size: 42px;
-    font-weight: bold;
-    color: #333;
-    line-height: 1;
-    margin-bottom: 35px;
-}
-.apptitle .s{
-    color: #999999;
-    line-height: 2;
-    margin-bottom: 35px;
-}
-.apptitle .al{}
-.apptitle a{
-    width: 180px;
-    height: 50px;
-    border-radius: 50px;
-    background: #2ca37d;
-    text-align: center;
-    line-height: 50px;
-    color: #fff;
-    font-size: 18px;
-    vertical-align: middle;
-    display: inline-block;
-    margin-top: 15px;
-    border-bottom: 5px solid rgba(1,88,60,0);
-    transition: all ease .3s;
-}
-.apptitle a:hover{
-    background: #0c8760;
-    border-bottom: 5px solid #01583d;
-    transform: translateY(-5px);
-    box-shadow: 0 7px 10px rgba(13,28,70,.15);
-    color: #fff;
-}
-.dorissolid1 {
-    margin-top: -64px;
-    position: relative;
-    z-index: -1;
-    display: flex;
-    justify-content: center;
-}
-.appright .apptitle{
-    order: 2;
-    width: 45%;
-    padding-top: 75px;
-}
-.appright .appimg{
-    width: 100%;
-    max-width: 706px;
-    margin-left: -110px;
-}
-.dorissolid2{
-    margin-top: -1px;
-    position: relative;
-    z-index: -1;
-    display: flex;
-    justify-content: center;
-}
-.appright3 .apptitle{
-    width: 42%;
-}
-.appright3 .appimg{
-    margin-top: -27px;
-}
-.icoBox {
-    background: url(/blog-images/icobg.png) no-repeat center #315aaa;
-    text-align: center;
-    padding: 120px 0 50px;
-}
-.icoBoxtitle p{
-    color: #fff;
-    font-weight: bold;
-    font-size: 60px;
-    line-height: 1.1;
-    margin-bottom: 80px;
-    margin-top: 0;
-}
-.icoBoxtitle p span{
-    color: #52caa4;
-}
-.icoBoxico ul{
-    display: flex;
-    box-sizing: border-box;
-    flex-wrap: wrap;
-    justify-content: space-between;
-    max-width: 1070px;
-    width: 100%;
-    padding: 0 15px;
-    margin: 0 auto;
-    list-style: none;
-    position: relative;
-}
-.icoBoxico ul li{
-    width: 33.333%;
-    margin: 0 0px 60px;
-    position: relative;
-    z-index: 1;
-}
-.icotitle{
-    max-width: 225px;
-    width: 100%;
-    margin: 0 auto;
-    margin-top: 30px;
-}
-.icotitle .t{
-    font-size: 26px;
-    line-height: 1.2;
-    color: #fff;
-    font-weight: bold;
-    margin-bottom: 20px;
-}
-.icotitle .s{
-    color: #fff;
-    opacity: .6;
-    line-height: 1.8;
-    font-size: 14px;
-}
-.icoBoxico ul:before{
-    content:'';
-    background: url(/blog-images/is1.png) no-repeat center;
-    width: 100%;
-    height: 121px;
-    position: absolute;
-    left: 0px;
-    z-index: 0;
-    right: 0;
-    margin: 0 auto;
-    opacity: 0;
-    transition: all ease .7s .8s;
-}
-.icoBoxico ul:after{
-    content:'';
-    background: url(/blog-images/is2.png) no-repeat center;
-    width: 100%;
-    height: 121px;
-    position: absolute;
-    left: 0px;
-    z-index: 0;
-    right: 0;
-    margin: 0 auto;
-    top: 470px;
-    opacity: 0;
-    transition: all ease .7s .8s;
-}
-.icoBoxico ul li .icoimg img{
-    transition: all ease .5s;
-    border-radius: 100%;
-    border-bottom: 6px solid rgba(1, 88, 60, 0);
-    pointer-events: none;
-}
-.icoBoxico ul li:hover .icoimg img{
-    border-bottom-color: #01583d;
-    transform: translateY(-5px)rotate(15deg);
-    box-shadow: 0 7px 10px rgba(13, 28, 70, .15);
-}
-.core {
-    width: 100%;
-    background: url(/blog-images/corebg.jpg) no-repeat bottom center;
-    padding: 100px 15px;
-    box-sizing: border-box;
-}
-.corebox{
-    max-width: 1300px;
-    width: 100%;
-    margin: 0 auto;
-    display: flex;
-    justify-content: space-between;
-}
-.coreleft{
-    width: 34%;
-    padding-top: 100px;
-}
-.coreleft .t{
-    color: #333;
-    font-size: 60px;
-    font-weight: bold;
-    line-height: 1;
-    letter-spacing: -3px;
-    margin-bottom: 50px;
-}
-.coreleft .s{
-    color: #666;
-    line-height: 2;
-    margin-bottom: 45px;
-}
-.coreright{
-    width: 61%;
-}
-.coreright ul{
-    list-style: none;
-    padding: 0;
-}
-.coreright ul li{
-    display: flex;
-    justify-content: flex-start;
-    margin-bottom: 55px;
-}
-.coreimg{
-    max-width: 101px;
-    width: 100%;
-    margin-right: 26px;
-    display: flex;
-    flex-direction: column;
-    justify-content: center;
-}
-.coreimg svg{
-    width: 40px;
-    margin: 0 auto;
-    display: block;
-    height: auto;
-}
-li:nth-child(1) .coreimg{
-    background: rgba(20,169,202,.1);
-    border-top-left-radius: 50px;
-    border-top-right-radius: 30px;
-    border-bottom-left-radius: 30px;
-    border-bottom-right-radius: 50px;
-}
-li:nth-child(1) .coreimg svg{
-    width: 34pxpx;
-    margin: 0 auto;
-    display: block;
-    height: auto;
-    fill: #14a9ca;
-}
-li:nth-child(2) .coreimg{
-    background: rgba(81, 104, 172, 0.1);
-    border-top-left-radius: 70px;
-    border-top-right-radius: 80px;
-    border-bottom-left-radius: 90px;
-    border-bottom-right-radius: 70px;
-}
-li:nth-child(2) .coreimg svg{
-    width: 34pxpx;
-    margin: 0 auto;
-    display: block;
-    height: auto;
-    fill: #5168ac;
-}
-li:nth-child(3) .coreimg{
-    background: rgba(82, 202, 164, 0.1);
-    border-top-left-radius: 30px;
-    border-top-right-radius: 50px;
-    border-bottom-left-radius: 50px;
-    border-bottom-right-radius: 30px;
-}
-li:nth-child(3) .coreimg svg{
-    width: 34pxpx;
-    margin: 0 auto;
-    display: block;
-    height: auto;
-    fill: #52caa4;
-}
-li:nth-child(4) .coreimg{
-    background: rgba(20,169,202,.1);
-    border-top-left-radius: 50px;
-    border-top-right-radius: 30px;
-    border-bottom-left-radius: 30px;
-    border-bottom-right-radius: 50px;
-}
-li:nth-child(4) .coreimg svg{
-    width: 34pxpx;
-    margin: 0 auto;
-    display: block;
-    height: auto;
-    fill: #14a9ca;
-}
-.coretitle{
-    display: flex;
-    flex-direction: column;
-    justify-content: center;
-}
-.coretitle .t{
-    color: #333333;
-    font-weight: bold;
-    font-size: 20px;
-    margin: 0 0 10px 0;
-    line-height: 1;
-}
-.coretitle .s{
-    color: #b0b0b0;
-    font-size: 15px;
-    line-height: 1.6;
-    margin: 0;
-}
-.coreright ul li:nth-child(2n+0){
-    margin-left: 25%;
-}
-.EventsBlog ul {
-    list-style: none;
-    max-width: 1300px;
-    width: 100%;
-    margin: 0 auto;
-    padding: 0 15px;
-    display: flex;
-    justify-content: space-between;
-    box-sizing: border-box;
-}
-.EventsBlog ul li {
-    width: 32%;
-}
-.ebimg {
-    width: 100%;
-    line-height: 1;
-    overflow: hidden;
-}
-.ebimg img {
-    width: 100%;
-    line-height: 1;
-    transition: all ease .3s;
-    pointer-events: none;
-}
-.ebtitle {
-    margin-top: 30px;
-}
-.ebtitle p {
-    font-size: 18px;
-    font-weight: bold;
-    line-height: 1.6;
-    margin: 0;
-    color: #333;
-    transition: all ease .3s;
-}
-.ebtitleH1 {
-    margin: 0px 0 60px;
-    text-align: center;
-    font-size: 40px;
-    color: #333;
-    font-weight: bold;
-    display: block;
-}
-.EventsBlog{
-    margin-top: 100px;
-}
-.EventsBlog ul li:hover .ebimg img{
-    transform: scale(1.1);
-}
-.EventsBlog ul li:hover .ebtitle p{
-    color: #0c8760;
-}
-.footer {
-    background: #2f4994;
-    overflow: hidden;
-}
-.footerCenter {
-    margin: 0 auto;
-    width: 100%;
-    max-width: 1300px;
-    padding-top: 100px;
-    display: flex;
-    justify-content: space-between;
-    flex-wrap: wrap;
-}
-.footerleft {
-    display: flex;
-}
-.footerleft .f {
-    margin-right: 80px;
-    display: flex;
-    flex-direction: column;
-}
-.footerleft .t {
-    font-size: 22px;
-    color: #fff;
-    font-weight: bold;
-    line-height: 1;
-    margin: 0 0 30px 0;
-}
-.footerleft .a {
-    margin-bottom: 15px;
-    color: #fff;
-    opacity: .5;
-    transition: all ease .3s;
-}
-.footerleft .a:hover{
-    opacity: 1;
-}
-.footerfoot img.asf-logo {
-    max-width: 180px !important;
-    height: auto;
-}
-.footerright .t {
-    font-size: 22px;
-    color: #fff;
-    font-weight: bold;
-    line-height: 1;
-    margin: 0 0 30px 0;
-    text-align: left;
-}
-.footerright ul {
-    list-style: none;
-    display: flex;
-    justify-content: flex-start;
-    padding: 0;
-
-}
-.footerright ul li {
-    margin-right: 14px;
-}
-.footerright ul li a {
-    border-radius: 100%;
-    border: 1px solid #fff;
-    width: 36px;
-    height: 36px;
-    display: inline-block;
-    text-align: center;
-    line-height: 36px;
-    position: relative;
-    align-content: center;
-    transition: all ease .3s;
-}
-.footerright ul li a img {
-    width: auto;
-    position: absolute;
-    left: 50%;
-    top: 50%;
-    transform: translate(-50%,-50%);
-    height: auto;
-}
-.footerright ul li a:hover{
-    border: 1px solid #3eaf7c;
-    background: #3eaf7c;
-}
-.footerfoot {
-    margin-top: 70px;
-    padding-top: 40px;
-    border-top: 1px solid rgba(255,255,255,.1);
-    text-align: center;
-    color: rgba(255,255,255,.4);
-    line-height: 1;
-    width: 100%;
-    padding-bottom: 25px;
-}
-.footerfoot p {
-    line-height: 1.6;
-}
-.footer-wrapper.footer {
-    display: none;
-}
-aside.sidebar {
-    background-color: #fff;
-    border-right: 1px solid #f5f5f5;
-    top: 89px;
-}
-aside.sidebar ul.sidebar-links > li {
-    background: none;
-}
-aside.sidebar a.sidebar-link.active {
-    color: #333;
-    background: #d8efe5;
-}
-aside.sidebar .sidebar-heading {
-    color: #333;
-    font-weight: bold;
-}
-.sidebar .search-box{
-    padding: 0.25rem 1.5rem 0.25rem 1.25rem;
-    border-radius: 5px;
-    border: 1px solid #eee;
-    box-sizing: border-box;
-    margin: 25px 20px 5px;
-    width: auto;
-    align-content: center;
-}
-.sidebar .search-box i{
-    display: flex;
-    flex-direction: column;
-    justify-content: center;
-    left: 1.2rem;
-}
-.sidebar .search-box .suggestions{
-    width: auto;
-    top: 85px;
-    left: 14.5px;
-    right: 14.5px;
-    border-radius: 5px;
-    background: #fff;
-    z-index: 99;
-    font-size: 13px;
-}
-main.page {
-    padding-top: 2rem;
-}
-main.page .page-title {
-    color: #333;
-    padding-bottom: 0;
-    margin-bottom: -1rem;
-}
-main.page .theme-reco-content{
-    max-width: 860px;
-    margin: 0 auto;
-    padding: 2rem 2.5rem;
-}
-main.page .page-title div {
-    color: #999;
-}
-.page-nav p.inner {
-    border-top: 1px solid #f5f5f5;
-}
-div.custom-block.warning {
-    background-color: #fff4ec;
-    padding-top: 12px;
-}
-div.custom-block.tip {
-    background-color: #effff4;
-    padding-top: 12px;
-}
-ul.sub-sidebar-wrapper a[data-v-5f54e4e2]{
-    color: #666;
-    font-size: 14px;
-}
-.timeline-content{
-    padding-top: 70px;
-    margin: 0;
-    padding-bottom: 30vh;
-}
-div.abstract-item .title a,
-.abstract-item i{
-    transition: all ease .3s;
-}
-div.abstract-item:hover .title a,
-.abstract-item:hover i{
-    color: #fff;
-}
-.back-to-ceiling:hover{
-    transition: all ease .3s;
-}
-.back-to-ceiling:hover{
-    background: #0c8760 !important;
-}
-.appleft3{
-    transform: translateY(-30px);
-}
-.nav-links a .right,
-.nav-links a .down{
-    display: none;
-}
-.dorissolid1::before{
-    content:'';
-    width: 15px;
-    height: 15px;
-    border-radius: 100%;
-    opacity: .8;
-    background: #3eaf7c;
-    position: absolute;
-    right: 82.8%;
-    top: 100%;
-    animation: dorisLA1 10s infinite linear;
-}
-.dorissolid2::before{
-    content:'';
-    width: 15px;
-    height: 15px;
-    border-radius: 100%;
-    opacity: .8;
-    background: #3eaf7c;
-    position: absolute;
-    right: 82.8%;
-    top: 100%;
-    animation: dorisLB1 10s infinite linear;
-}
-.dian1{
-    animation: dian1-1 2s infinite linear;
-    position: absolute;
-    width: 8px;
-    height: 8px;
-    background: #2ca37d;
-    border-radius: 100%;
-    left: 29.2%;
-    top: 41.2%;
-    display: inline-block;
-    z-index: 0;
-    transform: translate(-8px,-8px);
-}
-.dian2{
-    animation: dian2-1 2s infinite linear;
-    position: absolute;
-    width: 8px;
-    height: 8px;
-    background: #2ca37d;
-    border-radius: 100%;
-    left: 29.2%;
-    top: 41.2%;
-    display: inline-block;
-    z-index: 0;
-    transform: translate(-8px,-8px);
-}
-.dian3{
-    animation: dian3-1 2s infinite linear;
-    position: absolute;
-    width: 8px;
-    height: 8px;
-    background: #2ca37d;
-    border-radius: 100%;
-    left: 81.2%;
-    top: 56.2%;
-    display: inline-block;
-    z-index: 0;
-    transform: translate(-8px,-8px);
-}
-.dian4{
-    animation: dian4-1 2s infinite linear;
-    position: absolute;
-    width: 8px;
-    height: 8px;
-    background: #2ca37d;
-    border-radius: 100%;
-    left: 68.2%;
-    top: 66.2%;
-    display: inline-block;
-    z-index: 0;
-    transform: translate(-8px,-8px);
-}
-.dian5{
-    animation: dian5-1 2s infinite linear;
-    position: absolute;
-    width: 8px;
-    height: 8px;
-    background: #2ca37d;
-    border-radius: 100%;
-    left: 68.2%;
-    top: 66.2%;
-    display: inline-block;
-    z-index: 0;
-    transform: translate(-8px,-8px);
-}
-.sidebar-button .icon.guanbi{
-    display:none;
-}
-.bcenter{
-    position: relative;
-    width: 100%;
-}
-#app.home .bcenter img{
-    max-height: none;
-    margin: 0;
-    max-width: none;
-    pointer-events: none;
-    width: 100%;
-}
-.xbg1{
-    position: absolute;
-    width: 23%;
-    height: 18%;
-    border-radius: 100%;
-    left: 43.2%;
-    top: 28.5%;
-    opacity: .8;
-    background: #2ca37d;
-    z-index: 0;
-    animation: d1 3s infinite ease;  
-}
-.xbg2{
-    position: absolute;
-    width: 23%;
-    height: 18%;
-    border-radius: 100%;
-    left: 43.2%;
-    top: 28.5%;
-    opacity: .5;
-    background: #2ca37d;
-    z-index: 1;
-    animation: d2 2.5s infinite ease;  
-}
-.xbg3{
-    position: absolute;
-    width: 23%;
-    height: 18%;
-    border-radius: 100%;
-    left: 43.2%;
-    top: 28.5%;
-    opacity: .2;
-    background: #2ca37d;
-    z-index: 2;
-    animation: d3 2s infinite ease;  
-}
-.xb{
-    position: absolute;
-    left: 42%;
-    top: 25%;
-    background: url(/blog-images/xbkuanglogo.png) no-repeat center;
-    width: 25.2%;
-    height: 20.7%;
-    animation: xb 3s infinite;  
-    animation-direction:alternate;  
-    z-index: 5;
-    background-size: 100%;
-}
-@keyframes xb {
-    0%{
-        top: 25%;    
-    }
-    100%{
-        top: 28%;
-    }
-}
-@keyframes d1 {
-    0%{
-        transform: scale(1);
-        top: 28.5%;
-    }
-    100%{
-        transform: scale(1.4);
-        top: 31.5%;
-    }
-}
-@keyframes d2 {
-    0%{
-        transform: scale(1);
-        top: 28.5%;
-    }
-    100%{
-        transform: scale(1.3);
-        top: 31.5%;
-    }
-}
-@keyframes d3 {
-    0%{
-        transform: scale(1);
-        top: 28.5%;
-    }
-    100%{
-        transform: scale(1.2);
-        top: 31.5%;
-    }
-}
-.page .page-edit{
-    border-top: 1px solid #f5f5f5;
-    max-width: 860px;
-    margin: 0 auto;
-    width: 100%;
-    padding: 1rem 0 0;
-}
-#app div.tagpage{
-    margin-left: 18rem;
-    padding: 140px 40px 100px;
-    width: auto;
-    box-sizing: border-box;
-}
-#app div.tagpage > div{
-    max-width: 860px;
-    margin: 0 auto;
-}
-#app div.tagpage > div.tags{
-    margin-bottom: 20px;
-    margin-top: 10px;
-}
-#app div.tagpage > div.tags span{width: 60px;
-    height: 28px;
-    padding: 0 10px;
-    box-sizing: border-box;
-    line-height: 27px;
-    text-align: center;
-    font-size: 13px;
-    transform: scale(1);
-    transition: all ease .3s;
-    margin: 0 10px 0 0;
-    border-radius: 2px;
-}
-#app div.tagpage > div.tags span:hover{
-    background: #2ca37d !important;
-}
-.nav-links a:hover, .nav-links a.router-link-active {
-    color: #2ca37d;
-}
-.dropdown-wrapper .nav-dropdown .dropdown-item a {
-    color: #686868 ;
-}
-#app a.sidebar-link{
-    word-break: break-all;
-    text-overflow: ellipsis;
-    display: -webkit-box; 
-    -webkit-box-orient: vertical; 
-    -webkit-line-clamp: 1; 
-    overflow: hidden;
-    width: 100%;
-    line-height: 1.6;
-    padding: 0.35rem 1rem 0.35rem 1.25rem;
-}
-#app a.sidebar-link.active{
-    border: 0;
-    border-right: 3px solid #3eaf7c;
-}
-.tishi{
-    position: fixed;
-    left: 50%;
-    top: 50%;
-    transform: translate(-50%,-50%);
-    background: #fff;
-    padding: 30px 50px;
-    box-shadow: 0 0 6px rgba(0,0,0,.1);
-    line-height: 1;
-    color: #333;
-    border-radius: 4px;
-    text-align: center;
-    min-height: 120px;
-    display: flex;
-    flex-direction: column;
-    justify-content: center;
-}
-.tishi p{
-    font-size: 15px;
-    margin: 0 0 30px 0;
-    line-height: 1;
-}
-.guanbi{
-    background: #2ca37d;
-    border-radius: 25px;
-    color: #fff;
-    padding: 11px;
-    font-size: 12px;
-    max-width: 100px;
-    margin: 0 auto;
-    width: 100%;
-    cursor: pointer;
-}
-.tishi h3{
-    color: #333;
-    font-weight: bold;
-    margin: 0 0 20px;
-    line-height: 1;
-    font-size: 22px;
-}
-#app.home .blogxiangqing{
-    display: none;
-}
-#app.home .theme-reco-content{
-    padding: 0;
-    max-width: none;
-}
-#app.home main.page {
-    padding: 0px;
-}
-div .home-blog .hero h1 {
-    text-align: left;
-    font-size: 4.2rem;
-    color: #fff;
-    font-weight: 700;
-    letter-spacing: -2px;
-    line-height: 1;
-    margin: 0;
-    display: block;
-}
-div .home-blog .hero .description{
-    text-align: left;
-    font-size: 4rem;
-    color: #52caa4;
-    max-width: none;
-    display: block;
-    font-weight: 700;
-    letter-spacing: -2px;
-    margin: 0;
-    line-height: 1;
-}
-#app.home .page-edit,
-#app.home .comments-wrapper{
-    display: none;
-}
-.navbar .search-box{
-    display: flex;
-    flex-direction: column;
-    justify-content: center;
-    position: fixed;
-    top: calc(5.625rem + 0px);
-    left: 0;
-    margin: 0;
-    width: 258px;
-    background: #fff;
-    padding: 16px 14.5px;
-}
-.navbar > a{
-    position: absolute;
-    left: 1.5rem;
-    top: 50%;
-    transform: translateY(-50%);
-}
-header.navbar > .links{
-    padding: 0;
-    background: none;
-    position: static;
-    width: 100%;
-    max-width: none !important;
-    display: flex;
-    justify-content: flex-end;
-}
-.navbar > .links nav{
-    padding: 0;
-    right: 1.5rem;
-    background: none;
-    line-height: 1;
-    font-size: 16px;
-    color: #333;
-    font-weight: 700;
-    height: 5.625rem;
-    display: flex;
-    justify-content: flex-end;
-}
-.navbar > a img.logo{
-    height: auto;
-    min-width: auto;
-    max-width: 46px;
-    margin: 0 10px 0 0;
-    vertical-align: middle;
-    border-radius: 0;
-}
-.navbar > a .site-name{
-    line-height: 1;
-    vertical-align: sub;
-}
-.navbar > .links .title,
-.navbar > .links .nav-link{
-    font-weight: bold;
-    font-size: 16px;
-    line-height: 1;
-    border: 0 !important;
-    margin: 0 !important;
-    transition: all ease .15s;
-    display: flex;
-    flex-direction: column;
-    justify-content: center;
-    height: 100%;
-}
-.navbar > .links .nav-item{
-    margin-left: 2.3rem;
-    height: 100%;
-    line-height: 0;
-    font-size: 0;
-    display: flex;
-    flex-direction: column;
-    justify-content: center;
-}
-.navbar > .links .nav-item .dropdown-wrapper{
-    height: 100%;
-}
-.navbar > .links .nav-item .dropdown-wrapper .arrow{
-    font-family: "doris" !important;
-    font-style: normal;
-    -webkit-font-smoothing: antialiased;
-    -moz-osx-font-smoothing: grayscale;
-    font-size: 12px;
-    border: 0;
-    margin: 0;
-    width: 15px;
-    height: 100%;
-    margin-left: 4px;
-    display: flex;
-    flex-direction: column;
-    justify-content: center;
-}
-.navbar > .links .nav-item .dropdown-wrapper .arrow:before {
-    content: "\e62a";
-}
-.navbar > .links .nav-item .dropdown-wrapper .dropdown-title{
-    display: flex;
-    height: 100%;
-}
-.navbar > .links .nav-item .dropdown-wrapper .nav-dropdown{
-    display: block !important;
-    max-height: none;
-    min-width: 100px;
-    border-radius: 2px;
-    background: #fefefe;
-    border: 1px solid #f1f1f1;
-    padding: 15px 0;
-    width: fit-content;
-    top: calc(100% - 2px);
-    left: 50%;
-    transition: all ease 0.3s;
-    transform: translateY(20px) translateX(-50%);
-    opacity: 0;
-    visibility: hidden;
-    pointer-events: none;
-    box-shadow: none;
-}
-.navbar > .links .nav-item .dropdown-wrapper .nav-dropdown a{
-    font-weight: 400;
-    font-size: 14px;
-    line-height: 2.2;
-    padding: 0 13px;
-}
-.navbar > .links .nav-item .dropdown-wrapper .nav-dropdown a:hover,
-.navbar > .links .dropdown-title:hover span{
-    color: #0c8760 !important;
-}
-.navbar > .links .nav-item .dropdown-wrapper:hover .nav-dropdown{
-    transform: translateY(0px) translateX(-50%);
-    opacity: 1;
-    visibility: visible;
-    pointer-events: auto;
-}
-main.page > .theme-default-content{
-    max-width: 860px;
-    padding-top: 140px;
-    padding-left: 15px;
-    padding-right: 15px;
-}
-main.page > .page-nav{
-    max-width: 860px;
-    padding-left: 15px;
-    padding-right: 15px;
-}
-main.page > .theme-default-content span.badge{
-    margin: 0;
-}
-.page-nav p.inner{
-    font-size: 0;
-}
-.page-nav p.inner > span a{
-    font-size: 14px;
-}
-.home main.page > .theme-default-content{
-    max-width: 100%;
-    padding: 0px;
-}
-.theme-default-content:not(.custom) > h1, .theme-default-content:not(.custom) > h2, .theme-default-content:not(.custom) > h3, .theme-default-content:not(.custom) > h4, .theme-default-content:not(.custom) > h5, .theme-default-content:not(.custom) > h6 {
-    margin-top: -5.1rem;
-    padding-top: 6.6rem;
-    margin-bottom: 0;
-}
-.timebox{
-    font-size: 14px;
-    color: #999;
-    margin: 0;
-    line-height: 1; 
-}
-.time-nomar{
-    margin: 0 0 40px 0 !important;
-}
-#frontmatter-title{
-    border-bottom: 1px solid #f5f5f5;
-    padding-bottom: 15px;
-    padding-top: 1.5rem;
-}
-#app .sidebar-sub-headers a{
-    background: none;  
-}
-#app .sidebar-sub-headers a.active{
-    color: #3eaf7c; 
-    border: 0;
-    font-weight: bold; 
-}
-#app .sidebar-sub-headers a{
-    color: #7e7e7e;
-}
-.navbar .search-box .suggestions{
-    background: #fff;
-    top: 44px;
-    left: 14.5px;
-    right: 14.5px;
-    width: 500px;
-    border: 1px solid #f4f4f4;
-    box-sizing: border-box;
-    box-shadow: 0 20px 25px -5px rgba(0,0,0,0.1),0 10px 10px -5px rgba(0,0,0,0.04);
-}
-#app .search-box .suggestion {
-    padding: 0.6rem 0.6rem;
-}
-.search-box .suggestion a .page-title {
-    color: #333333;
-}
-.back-to-ceiling{
-    bottom: 1rem !important;  
-}
-.back-to-ceiling:hover .icon{
-    fill: #fff !important;
-}
-header.navbar > .links .color-picker {
-    display: none;
-}
-header.navbar > .links .search-box .iconfont {
-    top: -1px;
-    height: 40px;
-    left: 29px;
-    line-height: 40px;
-}
-.navbar > .links nav .title i{
-    display: none;    
-}
-.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active::after {
-    display: none;
-}
-.footerfoot img{
-    pointer-events: none;
-}
-main.page .page-title .translate-warnning {
-    background-color: #ffba0026;
-    padding: 16px;
-    border-left: 5px solid #e6a700;
-    border-radius: 6px;
-    line-height: 1.6;
-    color: #4d3800;
-}
-main.page .page-title .title{
-    font-size: 36px;
-    font-weight: bold;
-    border-bottom: 1px solid #f5f5f5;
-    padding-bottom: 15px;
-    margin-bottom: 15px;
-}
-main.page .page-title div > i:nth-child(1){
-    display: none;
-}
-main.page .page-title div > i {
-    font-size: 13px;
-    color: #999;
-}
-main.page .page-title div > i span {
-    font-family: arial;
-}
-main.page .page-title div > i::before {
-    font-size: 14px;
-    color: #c5c5c5;
-}
-#app .timeline-wrapper {
-    padding-top: 0;
-}
-#app .timeline-wrapper .timeline-content{
-    padding-top: 8rem;
-    padding-left: 45px;
-}
-#app .timeline-wrapper .timeline-content > li:nth-child(1) {
-    display: none;
-}
-#app .timeline-wrapper .timeline-content .year{
-    font-size: 40px; 
-    margin-bottom: 20px;
-}
-#app .timeline-wrapper .timeline-content .year-wrapper li{
-    padding: 10px 0 10px;
-    border-bottom: 1px dashed #eee;
-}
-#app .timeline-wrapper .timeline-content .year-wrapper li .date{
-    color: #b3b3b3;
-    font-size: 14px;
-}
-#app .timeline-wrapper .timeline-content .year-wrapper li .title{
-    color: #606060;
-    margin-left: 15px;
-}
-#app .timeline-wrapper .timeline-content .year::before{
-    left: -46px;
-}
-#app .timeline-wrapper .timeline-content .year-wrapper li .date::before{
-    top: 50%;
-    transform: translateY(-50%);
-    left: -45px;
-}
-#app .timeline-wrapper .timeline-content .year-wrapper li:hover span{
-    color: #3eaf7c;
-}
-#app .pagation .pagation-list span.jump{
-    padding: 8px 12px;
-    border-radius: 17px;
-    cursor: pointer;
-    margin-left: 5px;
-    box-shadow: none;
-    border: 1px solid #ebebeb !important;
-    font-weight: 500;
-    font-size: 12px;
-    color: #666;
-}
-#app .pagation .pagation-list span.bgprimary,
-#app .pagation .pagation-list span:hover{
-    background: #3eaf7c;
-    border: 1px solid #3eaf7c !important;
-    color: #fff;
-}
-#app .pagation .pagation-list span.jumpinp input{
-    box-shadow: none;
-}
-#app .pagation .pagation-list span.jumppoint,
-#app .pagation .pagation-list span.jumpinp,
-#app .pagation .pagation-list span.gobtn{
-    display: none;
-}
-#app .abstract-wrapper.list{
-    padding-bottom: 100px;    
-}
-#app .theme-container{
-    max-width: none;
-    padding: 5.625rem 0 0;
-}
-#app .category-wrapper{
-    max-width: 288px;
-    position: fixed;
-    left: 0;
-    top: 5.625rem;
-    bottom: 0;
-    background-color: #fff;
-    border-right: 1px solid #f5f5f5;
-    margin: 0;
-    transform: translate(0px, 0px) !important;
-    opacity: 1 !important;
-    padding: 4.5rem 0 1.5rem;
-    width: 100%;
-}
-#app .abstract-wrapper{
-    margin-left: 288px;
-    width: auto;
-    padding: 60px 15px 100px;
-}
-#app .abstract-wrapper > div{
-    max-width: 860px;
-    margin: 0 auto 20px;
-    background: #f5f5f5;
-    box-shadow: none;
-    padding: 25px 30px;
-}
-#app .category-wrapper li{
-    width: 100%;
-    margin: 0;
-    box-shadow: none;
-    border-radius: 0;
-    background: none;
-}
-#app .category-wrapper li a{
-    padding: 12px 15px;
-    line-height: 1;
-    font-size: 13px;
-    position: relative;
-    background: rgba(62, 175, 124, 0);
-}
-#app .category-wrapper li a::after{
-    content:'';
-    position: absolute;
-    right: 0;
-    width: 3px;
-    height: 100%;
-    background: #3eaf7c;
-    opacity: 0;
-}
-#app .category-wrapper li a:hover span:first-child{
-    color: #3eaf7c;
-}
-#app .category-wrapper li.active a{
-    background: rgba(62, 175, 124, .1);
-}
-#app .category-wrapper li.active a::after{
-    opacity: 1;
-}
-#app .category-wrapper li.active a span:first-child{
-    color: #3eaf7c;
-}
-#app .abstract-wrapper > div:hover{
-    background: #2ca37d;
-}
-#app .abstract-wrapper > div .title{
-    font-size: 18px;
-    line-height: 1;
-    border-bottom: 1px solid #e3e3e3;
-    width: 100%;
-    padding-bottom: 20px;
-    margin-bottom: 20px;
-}
-#app .abstract-wrapper > div .title a{
-    color: #333;
-}
-#app .abstract-wrapper > div:hover a{
-    color: #fff;
-}
-#app .abstract-wrapper > div div:last-child{
-    pointer-events: none;
-}
-#app .abstract-wrapper > div div:last-child i{
-    line-height: 1;
-    color: #b9b9b9;
-}
-#app .abstract-wrapper > div div.pagation-list{
-    pointer-events: auto;
-}
-#app .abstract-wrapper > div:hover div:last-child i{
-    color: #fff;
-}
-#app .abstract-wrapper > div .title::after{
-    display: none;
-}
-#app .abstract-wrapper > div:last-child{
-    background: none;
-    padding: 0;
-}
-main.page .page-title div > i.tags{
-    display: none;
-}
-.content__default:not(.custom) > h1, 
-.content__default:not(.custom) > h2, 
-.content__default:not(.custom) > h3, 
-.content__default:not(.custom) > h4, 
-.content__default:not(.custom) > h5, 
-.content__default:not(.custom) > h6 {
-    font-weight: bold;
-}
-
-#app .page .theme-reco-content h2 {
-    padding-left: 0;
-}
-
-#app .page .theme-reco-content h2::before {
-    display: none;
-}
-.nav-links .nav-item .downloads{
-    height: auto;    
-}
-.home main.page .page-title{
-    display:none;    
-}
-// .home .home-blog {
-//     padding: 5.625rem 0 0 0;
-// }
-.navbar .links .search-box input{
-    width: 100%;
-    background: #fff;
-    box-sizing: border-box;
-    border: 1px solid var(--border-color);
-    height: 40px;
-}
-.sidebar-group > .sidebar-group-items {
-    padding-left: 0.5em;
-}
-
-.sidebar-group.is-sub-group {
-    padding-left: 0.5em;
-}
-.no-sidebar .navbar .search-box{
-    display: none;
-}
-.category .no-sidebar .navbar .search-box{
-    display: block;    
-}
-.categories-wrapper.no-sidebar .navbar .search-box{
-    display: block;
-}
-.navbar > .links nav .nav-item:last-child ul li{
-    line-height: 0;    
-}
-.navbar > .links nav .nav-item:last-child ul li:nth-child(1) a,
-.navbar > .links nav .nav-item:last-child ul li:nth-child(2) a{
-    font-size: 0px;
-}
-.navbar > .links nav .nav-item:last-child ul li:nth-child(1) a i,
-.navbar > .links nav .nav-item:last-child ul li:nth-child(2) a i{
-    display: none;   
-}
-.navbar > .links nav .nav-item:last-child ul li:nth-child(1) a::after{
-    content: 'English';
-    display: block;
-    font-size: 14px;
-    position: static;
-    border: 0;
-    width: auto;
-    height: auto;
-}
-.navbar > .links nav .nav-item:last-child ul li:nth-child(2) a::after{
-    content: '简体中文';
-    display: block;
-    font-size: 14px;
-    position: static;
-    border: 0;
-    width: auto;
-    height: auto;
-}
-
-#app .sidebar-group.is-sub-group > .sidebar-heading {
-    padding-left: 1.25rem;
-}
-.nopage h1{
-    font-size: 100px;
-    line-height: 1;
-    font-weight: bold;
-    font-family: arial;
-    margin-bottom: 20px;
-}
-.nopage blockquote{
-    font-size: 20px;
-    border: 0;
-    padding: 0;
-    margin: 0;
-    line-height: 1;
-    border-bottom: 1px solid #f5f5f5;
-    padding-bottom: 25px;
-    margin-bottom: 25px;
-}
-.nopage a{}
-
-
-
-@media screen and (min-width:768px) {
-    .theme-container.no-sidebar .sidebar.showme ul li a .post-num{
-        padding: 1px 3px;
-        border-radius: 2px;
-        color: #fff;
-        font-size: 12px;
-        display: flex;
-        flex-direction: column;
-        justify-content: center;
-        font-weight: 500;
-        height: 15px;
-        line-height: 15px;
-        margin-top: 5px;
-    }
-    .sidebar > ul.sidebar-links {
-        padding: 5rem 0 1.5rem;
-    }
-    .theme-container.no-sidebar .sidebar.showme{
-        display: block;
-        top: 160px;
-        background-color: #fff;
-        border-right: 1px solid #f5f5f5;
-        transform: translateY(0px) !important;
-        opacity: 1 !important;
-    }
-    .theme-container.no-sidebar .sidebar.showme ul li{
-        background: none;
-        margin: 0;
-    }
-    .theme-container.no-sidebar .sidebar.showme ul li a{
-        font-size: 15.2px;
-        font-weight: 400;
-        display: flex;
-        padding: 0.35rem 1rem 0.35rem 1.25rem;
-        line-height: 1.7;
-        box-sizing: border-box;
-        color: #333;
-        justify-content: space-between;
-        border-right: 3px solid #ffffff;
-    }
-    .theme-container.no-sidebar .sidebar.showme ul li a:hover{
-        color: #3eaf7c;
-    }
-    .theme-container.no-sidebar .sidebar.showme ul li.active a{
-        border-right: 3px solid #3eaf7c;
-        color: #333;
-        background: #d8efe5;
-        font-weight: bold;
-    }
-    .abstract-wrapper.bokeliebiao,
-    .youde .no-sidebar .page{
-        margin-left: 18rem;
-        display: flex;
-        flex-direction: column;
-        justify-content: flex-start;
-        padding: 140px 0px 100px;
-        box-sizing: border-box;
-        width: auto !important;
-    }
-    .youde .no-sidebar .page{
-        margin-left: 18rem !important;
-        padding-right: 14rem !important;
-    }
-    .abstract-wrapper.bokeliebiao > div{
-        max-width: 860px;
-        margin: 0 auto 20px;
-    }
-    .youde #app .sidebar.blogliebiao{
-        display: block;
-    }
-    .youde #app .sidebar.blogliebiao .nav-links{
-        padding: 2rem 0 1.5rem;
-    }
-    .youde #app .sidebar.blogliebiao .nav-links .nav-item{
-        display: none;
-        padding: 0;
-    }
-    .youde #app .sidebar.blogliebiao .nav-links .nav-item:nth-child(1){
-        display: block;
-    }
-    .youde #app .sidebar.blogliebiao .nav-links .nav-item:nth-child(1) .dropdown-wrapper > a{
-        pointer-events: none;
-        line-height: 2.2;
-        padding: 0.35rem 1.5rem 0.35rem 1.25rem;
-    }
-    .youde #app .sidebar.blogliebiao .nav-links .nav-item .dropdown-wrapper{
-        height: auto;    
-    }
-    .youde #app .sidebar.blogliebiao .nav-links .nav-item .nav-dropdown{
-        position: static;
-        opacity: 1;
-        max-height: none;
-        border-radius: 0;
-        transform: translate(0,0);
-        border: 0;
-        background: none;  
-        padding: 0;
-    }
-    .youde #app .sidebar.blogliebiao .nav-links .nav-item:nth-child(1) .dropdown-wrapper > a i{
-        display: none;
-    }
-    .youde #app .sidebar.blogliebiao .nav-links .nav-item .nav-dropdown a{
-        padding: 0.35rem 1rem 0.35rem 2.25rem;
-        font-size: 15px;
-        font-weight: 400;
-        transition: none;
-    }
-    .youde #app .sidebar.blogliebiao .nav-links .nav-item .nav-dropdown .active a{
-        color: #333;
-        background: #d8efe5;
-        border-right: 3px solid #3eaf7c;
-        font-weight: bold;
-    }
-    .pagation .pagation-list span.jump:hover {
-        background: #3eaf7c;
-        border: 1px solid #3eaf7c;
-        color: #fff;
-    }
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-@media screen and (max-width:1300px) {
-    .newsleft .fataImg .dim img {
-        width: 100%;
-    }
-    .newsleft .fataImg .dim{
-        width: 100%;
-    }
-    .navbar > .links nav .nav-item{
-         margin-left: 1rem;   
-    }
-    .navbar > .links nav .nav-item:first-child{
-         margin-left: 0;   
-    }
-    .navbar > .links .document.nav-item {
-        margin-right: 1rem;
-    }
-}
-@media screen and (max-width:1200px) {
-    div .nav-links .nav-item{
-        margin-left: 1.5rem;
-    }
-    .navbar > .links .document.nav-item {
-        a {
-            font-size: 15px;
-        }
-    }
-    .nav-links a.dropdown-title,
-    .nav-links a.nav-link{
-        font-weight: 500;
-        font-size: 15px;
-    }
-    .nav-links .nav-item .downloads {
-        padding: 12px 22px;
-    }
-    div .home-blog .hero h1{
-        font-size: 2.8rem;
-    }
-    div .home-blog .hero .description{
-        font-size: 2.5rem;
-    }
-    .sum {
-        font-size: 15px;
-        line-height: 1.5;
-        margin: 30px 0 60px;
-    }
-
-    .bannerHref a {
-        width: 160px;
-        height: 39px;
-        line-height: 39px;
-        margin-right: 12px;
-        font-size: 14px;
-        padding-top: 3px;
-        margin-bottom 20px
-    }
-    .bannerHref a.button1 {
-        width: 176px;
-    }
-    div .home-blog .hero {
-        height: 64vh;
-    }
-    .bImg {
-        width: 60%;
-    }
-    .bText {
-        width: 40%;
-    }
-    .newsboxTitle .t {
-        font-size: 15px;
-        line-height: 1.3;
-    }
-    .newsboxTitle .s {
-        font-size: 13px;
-        line-height: 1.4;
-        margin: 15px 0;
-    }
-    .newsboxImg {
-        height: 180px;
-    }
-    .newsBox li {
-        padding: 35px 23px 0;
-    }
-    .newsBox {
-        padding: 70px 15px 70px;
-    }
-    .newsdownData .t {
-        font-size: 22px;
-    }
-    .newsleft .s {
-        font-size: 16px;
-    }
-    .newsleft .fataImg {
-        transform: translateY(-170px);
-        height: 240px;
-    }
-    .newsleft .fataImg .dim img{
-        display: none;
-    }
-    .newsleft .fataImg .dim {
-        background: url(/blog-images/data-1.png) no-repeat left top;
-        background-size: 100%;
-    }
-    .newsleft .al {
-        margin-top: 140px;
-    }
-    .newsdownData {
-        padding: 60px 40px;
-    }
-    .apptitle .t {
-        font-size: 35px;
-        margin-bottom: 30px;
-    }
-    .apptitle .s {
-        line-height: 1.7;
-        font-size: 14px;
-        margin-bottom: 20px;
-        word-break: break-word;
-        text-overflow: ellipsis;
-        display: -webkit-box;
-        -webkit-box-orient: vertical;
-        -webkit-line-clamp: 4;
-        overflow: hidden;
-    }
-    .apptitle .al {
-        margin-top: 30px;
-    }
-    .appimg {
-        width: 53%;
-    }
-    .apptitle {
-        padding-top: 15px;
-    }
-    .apptitle a {
-        width: 160px;
-        height: 40px;
-        line-height: 40px;
-        padding-top: 5px;
-    }
-    .dorissolid1 {
-        max-width: 660px;
-        margin: -64px auto 0;
-    }
-    .dorissolid1 img{
-        width :100%;
-    }
-    .appright .appimg {
-        max-width: 450px;
-        margin-left: -90px;
-    }
-    .appright .apptitle {
-        padding-top: 10px;
-        width: 40%;
-        margin-right: 3%;
-    }
-    .dorissolid2{
-        max-width: 620px;
-        margin: -23px auto 0;
-    }
-    .dorissolid2 img{
-        width :100%;
-    }
-    .apacheDoris {
-        max-width: 880px;
-    }
-    .appleft, .appright {
-        padding-bottom: 23px;
-    }
-    .icoBox {
-        padding: 60px 0 10px;
-    }
-    .icoBoxtitle p {
-        font-size: 40px;
-        margin-bottom: 80px;
-        margin-bottom: 50px;
-    }
-    .icotitle .t {
-        font-size: 20px;
-        margin-bottom: 14px;
-    }
-    .icotitle .s {
-        line-height: 1.5;
-        font-size: 13px;
-    }
-    .icotitle {
-        margin-top: 13px;
-    }
-    .icoBoxico ul li .icoimg img {
-        max-width: 90px;
-    }
-    .icoBoxico ul {
-        max-width: 900px;
-    }
-    .icoBoxico ul:before {
-        height: 90px;
-        max-width: 600px;
-        background-size: 500px;
-    }
-    .icoBoxico ul li {
-        margin: 0 0px 40px;
-    }
-    .icoBoxico ul:after{
-        height: 90px;
-        max-width: 600px;
-        background-size: 500px;
-        top: 340px;
-    }
-    .coreleft .t {
-        font-size: 40px;
-        margin-bottom: 30px;
-    }
-    .coreleft .s {
-        line-height: 1.8;
-        margin-bottom: 25px;
-        font-size: 14px;
-    }
-    .coretitle .t {
-        font-size: 16px;
-    }
-    .coretitle .s {
-        font-size: 13px;
-        line-height: 1.3;
-    }
-    .coreright ul li {
-        margin-bottom: 35px;
-    }
-    .coreleft {
-        padding-top: 20px;
-    }
-    .corebox {
-        max-width: 880px;
-    }
-    .ebtitleH1 {
-        font-size: 36px;
-        letter-spacing: -3px;
-        margin: 0px 0 40px;
-    }
-    .ebtitle p {
-        font-size: 15px;
-        line-height: 1.4;
-    }
-    .ebtitle {
-        margin-top: 20px;
-    }
-    .EventsBlog {
-        margin-top: 40px;
-    }
-    .core {
-        padding: 85px 15px;
-    }
-    .EventsBlog ul {
-        max-width: 910px;
-    }
-    .footerCenter {
-        padding-top: 70px;
-        max-width: 880px;
-    }
-    .footerleft .t {
-        font-size: 16px;
-        margin: 0 0 20px 0;
-    }
-    .footerleft .a {
-        margin-bottom: 10px;
-        font-size: 14px;
-    }
-    .footerright .t {
-        font-size: 16px;
-        margin: 0 0 20px 0;
-    }
-    .footerright ul li {
-        margin-right: 10px;
-    }
-    .footerright ul li a {
-        width: 30px;
-        height: 30px;
-        line-height: 30px;
-    }
-    .footerright ul li a img {
-        width: 13px;
-    }
-    .footerfoot p {
-        line-height: 1.3;
-        font-size: 12px;
-    }
-    .footerfoot {
-        margin-top: 40px;
-    }
-    .sidebar .search-box {
-        display: block;
-    }
-    .dorissolid1::before{
-        animation: dorisLA2 10s infinite linear;
-    }
-    .dorissolid2::before{
-        animation: dorisLB2 10s infinite linear;
-    }
-    .abstract-wrapper.bokeliebiao{
-        padding: 140px 40px 100px;
-    }
-    .navbar > .links nav .nav-item{
-         margin-left: 1.4rem;   
-    }
-    .navbar > .links nav .title, .navbar > .links nav .nav-link {
-        font-size: 14px;
-    }
-}
-@media screen and (max-width: 1100px) {
-    .navbar > .links nav .title, .navbar > .links nav .nav-link {
-        font-size: 13px;
-    }
-    .navbar > .links nav .nav-item {
-        margin-left: 12px;
-    }
-}
-@media screen and (max-width:959px) {
-    .abstract-wrapper.bokeliebiao,
-    .youde .no-sidebar main.page {
-        margin-left: 14.76rem;
-    }
-    .youde .no-sidebar main.page {
-        padding: 140px 14rem 0 0rem !important;
-        margin-left: 14rem !important;
-    }
-    #app div.tagpage {
-        padding: 140px 40px 100px;
-        margin-left: 14rem;
-    }
-    .navbar > .links nav .nav-item{
-        margin-left: .9rem;   
-    }
-    .navbar > .links .document.nav-item {
-        display: none;
-    }
-    .navbar .dropdown-box {
-        left: 14rem !important;
-        .dropdown-wrapper.open .dropdown-title {
-            margin-bottom: 0;
-        }
-        .nav-dropdown {
-            padding: 0;
-            margin: 0;
-            background-color: #ffffff;
-            border: 1px solid #f1f1f1;
-        }
-    }
-}
-@media screen and (max-width:768px) {
-    .navbar .links nav.can-hide {
-        display: none;
-    }
-    .navbar .home-link {
-        left: 10px;
-    }
-    div > .navbar{
-        padding: 0 15px;
-        height: 4rem;
-    }
-    div .sidebar-button {
-        position: absolute;
-        right: 15px;
-        left: auto;
-        top: 50%;
-        transform: translateY(-50%);
-        padding: 0;
-    }
-    div .home-blog .hero {
-        margin: 4rem auto 0;
-        height: auto;
-        align-content: flex-start;
-        justify-content: flex-start;
-        align-items: flex-start;
-        padding-bottom: 350px;
-    }
-    .hero .b {
-        flex-direction: column;
-        padding-top: 60px;
-    }
-    .bText {
-        width: 100%;
-    }
-    .home-blog .hero .hero-img {
-        max-height: none;
-    }
-    .bImg {
-        width: 100%;
-        top: auto;
-        bottom: 0;
-        height: auto;
-        max-width: 500px;
-    }
-    div .home-blog .hero h1 {
-        font-size: 2rem;
-        margin: 0;
-    }
-    div .home-blog .hero .description {
-        font-size: 2rem;
-    }
-    .sum {
-        margin: 20px 0 30px;
-    }
-    aside.sidebar {
-        top: 4rem;
-        padding: 0;
-    }
-    div .sidebar .personal-info-wrapper {
-        display: none;
-    }
-    div .sidebar .search-box{
-        display: block;
-        margin: 25px 15px 5px;
-    }
-    div .nav-links .nav-item {      
-        margin-left: 0rem;
-    }
-    .nav-links .nav-item:nth-last-child(2) {
-        margin-left: 0rem;
-    }
-    div .sidebar .nav-links .nav-item{
-        padding: 0px;
-    }
-    .newsBox ul {
-        flex-direction: column;
-    }
-    .newsBox li {
-        width: 100%;
-        margin-bottom: 20px;
-    }
-    .newsdownData {
-        padding: 50px 30px;
-        background-position: right center;
-        background-size: 100%;
-    }
-    .newsleft {
-        width: 100%;
-    }
-    .newsdownData .t {
-        font-size: 18px;
-    }
-    .newsleft .s {
-        font-size: 14px;
-        margin: 20px 0;
-    }
-    .newsleft .fataImg {
-        transform: translateY(0px);
-        height: 150px;
-    }
-    .newsleft .fataImg .dim {
-        background-size: 100%;
-        width: 100%;
-    }
-    .newsleft a {
-        padding: 10px 28px 5px;
-    }
-    .appleft, .appright {
-        flex-direction: column;
-    }
-    .apptitle {
-        width: 100%;
-    }
-    .appimg {
-        width: 100%;
-        margin: 40px 0 50px;
-    }
-    .dorissolid1,
-    .dorissolid2{
-        display:none;    
-    }
-    .appright .apptitle {
-        order: -2;
-        width: 100%;
-    }
-    .appright .appimg {
-        width: 100%;
-        margin: 40px 0 60px;
-        max-width: 100%;
-    }
-    .icoBoxtitle p {
-        font-size: 26px;
-    }
-    .icotitle .s {
-        display: none;
-    }
-    .icotitle .t {
-        font-size: 15px;
-        margin-bottom: 0;
-    }
-    .icoBoxico ul:before,
-    .icoBoxico ul:after{
-        display: none;
-    }
-    .icoBoxico ul li .icoimg img {
-        max-width: 75px;
-    }
-    .icotitle {
-        margin-top: 10px;
-    }
-    .corebox {
-        flex-direction: column;
-    }
-    .coreleft {
-        width: 100%;
-        padding-top: 0;
-    }
-    .core {
-        padding: 55px 15px;
-    }
-    .coreright {
-        width: 100%;
-    }
-    .coreright ul li:nth-child(2n+0) {
-        margin-left: 0%;
-    }
-    .EventsBlog ul {
-        flex-direction: column;
-    }
-    .EventsBlog ul li {
-        width: 100%;
-        margin-bottom: 40px;
-    }
-    .footerCenter {
-        padding: 70px 15px 0;
-        box-sizing: border-box;
-    }
-    .footerleft .f {
-        margin-right: 0;
-        margin-bottom: 50px;
-    }
-    .footerleft {
-        display: flex;
-        justify-content: space-between;
-        width: 100%;
-    }
-    #app div.categories-wrapper ul.category-wrapper{
-        margin: 30px 0;
-        display: none;
-    }
-    #app div.categories-wrapper ul.category-wrapper li{
-        width: 100%;
-        margin: 0 0 5px 0;
-    }
-    #app .abstract-wrapper{
-        margin-left: 0;
-        padding: 0px 0px 40px;
-    }
-    div.abstract-item .title a{
-        font-size: 15px;
-    }
-    main.page {
-        padding-top: 0px;
-    }
-    .page-title .title{
-        font-size: 20px;
-    }
-    main.page .page-title div {
-        color: #999;
-        border-bottom: 1px solid rgba(0, 0, 0, 0.1);
-        padding-bottom: 20px;
-        margin-bottom: 20px;
-    }
-    main.page .theme-reco-content {
-        padding: 1rem 15px;
-        box-sizing: border-box;
-    }
-    main.page .page-title {
-        padding: 1rem 15px;
-    }
-    main.page .page-title .title{
-        font-size: 22px;
-    }
-    .page footer.page-edit {
-        border-top: 1px solid rgba(0, 0, 0, 0.1);
-        padding-top: 20px;
-        margin-top: 20px;
-        padding: 1rem 0px;
-        margin: 0 15px;
-    }
-    .content__default div[class*="language-"] {
-        margin: 0.85rem 0rem !important;
-    }
-    div.page-nav {
-        padding: 1rem 15px 0;
-    }
-    #app .timeline-wrapper {
-        padding: 4rem 0 0;
-    }
-    #app .timeline-wrapper .timeline-content .desc, 
-    #app .timeline-wrapper .timeline-content .year {
-        font-size: 24px;
-    }
-    .newsleft .al {
-        margin-top: 200px;
-    }
-    .bannerHref a i {
-        left: 40px;
-    }
-    .sidebar-open .sidebar-button .icon.guanbi{
-        display:block;
-    }
-    .abstract-wrapper.bokeliebiao {
-        margin-left: 0;
-        padding: 0px !important;
-    }
-    .abstract-wrapper.bokeliebiao > div {
-        padding: 15px;
-    }
-    #app .abstract-item .title {
-        line-height: 1;
-        padding-bottom: 20px;
-    }
-    .youde .no-sidebar main.page{
-        padding: 0px !important;
-        margin-left: 0rem;
-        margin-top: 93px;
-    }
-    .youde #app .sidebar.blogliebiao .nav-links .nav-item{
-        display: block;    
-        padding: 10px 15px;
-    }
-    .youde #app .sidebar.blogliebiao .nav-links .nav-item .dropdown-wrapper > a,
-    .youde #app .sidebar.blogliebiao .nav-links .nav-item > a {
-        line-height: 1 !important;
-        padding: 0px !important;
-    }
-    .youde #app .sidebar.blogliebiao .nav-links {
-        padding: 0.5rem 0 0.75rem 0;
-    }
-    .youde #app .sidebar.blogliebiao .nav-links .nav-item:nth-last-child(2) > a{
-        padding: 15px 15px !important;
-    }
-    .categories-wrapper[data-v-0838f247] {
-        padding: 5.6rem 1rem 0 !important;
-    }
-    .sidebar.showme{
-        position: static;
-        padding: 0;
-        width: 100%;
-        border: 0;
-        padding: 0;
-    }
-    div.sidebar ul.sidebar-links {
-        display: flex;
-    }
-    div.sidebar ul.sidebar-links > li {
-        background: #f5f5f5;
-        margin: 0 15px 0 0 !important;
-        padding: 5px 15px;
-        border-radius: 5px;
-    }
-    div.sidebar ul.sidebar-links > li.active {
-        background: #3eaf7c;
-    }
-    div.sidebar ul.sidebar-links > li a {
-        color: #646464;
-        font-size: 13px;
-    }
-    div.sidebar ul.sidebar-links > li.active a {
-        color: #fff;
-    }
-    div.sidebar ul.sidebar-links > li a .post-num{
-        color: #fff;
-        font-size: 12px;
-        border-radius: 2px;
-        padding: 3px 4px;
-        line-height: 1;
-    }
-    .youde .no-sidebar main.page {
-        padding: 0px 0rem 0 0rem !important;
-        margin-left: 0rem !important;
-    }
-    #app div.tagpage {
-        padding: 0px;
-        margin-left: 0rem;
-    }
-    #app .tag-wrapper div.tagpage > div.tags span {
-        margin: 0 5px 5px 0;
-    }
-    .nav-links .nav-item .downloads{
-        background: none;
-        color: #333 !important;
-        text-align: left;
-        padding: 0;
-        border: 0;
-    }
-    .nav-links .nav-item:nth-last-child(2) {
-        margin-left: 0rem !important;
-    }
-    .nav-links .nav-item{
-        width: 100%;
-        display: block;
-        border-bottom: 1px solid #f5f5f5;
-    }
-    .nav-links .nav-item .dropdown-wrapper > a,
-    .nav-links .nav-item > a,
-    .nav-links .nav-item .downloads{
-        padding: 14px 15px;
-        margin: 0;
-    }
-    div .sidebar .nav-links .nav-item:last-child{
-        display :none;
-    }
-    .nav-links .nav-item .downloads:hover {
-        background: none;
-        border-bottom: 0px solid #01583d !important;
-        box-shadow: none;
-    }
-    .nav-links .nav-item .dropdown-wrapper > a > span.title,
-    .nav-links .nav-item > a span.title,
-    .nav-links .nav-item .downloads span.title{
-        width: 100%;
-        display: flex;
-        justify-content: space-between;
-        font-size: 16px;
-        font-weight: 500;
-    }
-    .nav-links .nav-item .dropdown-wrapper > a > span.title i,
-    .nav-links .nav-item > a span.title i,
-    .nav-links .nav-item .downloads span.title i{
-        order: 2;
-    }
-    .sidebar .nav-links .nav-item > a{
-        font-size: 16px;
-        font-weight: 500;
-    }
-    .sidebar .nav-links{
-        border-bottom: 0 !important;    
-    }
-    div .sidebar .nav-links .nav-item .nav-dropdown{
-        padding-bottom: 20px;
-    }
-    div .sidebar .nav-links .nav-item .nav-dropdown a{
-        font-size: 13px;
-        line-height: 1.7;
-        color: #999 !important;
-    }
-    // .home .home-blog{
-    //     padding: 4rem 0 0 0;  
-    // }
-    #app .timeline-wrapper .timeline-content{
-        padding-top: 1px;
-    }
-    .search-box{
-        display: none !important;    
-    }
-    #app .theme-container {
-        padding: 4rem 0 0;
-    }
-    #app .footer-wapper {
-        margin-left: 0;
-    }
-   
-}
-@keyframes dorisLA1{
-    0%{right: 16%;top: 0%;}
-    20%{right: 16%;top: 45%;}  
-    80%{right: 82.8%;top: 45%;}  
-    100%{right: 82.8%;top: 100%;}
-}
-@keyframes dorisLA2{
-    0%{right: 0%;top: 0%;}
-    20%{right: 0%;top: 43%;}  
-    80%{right: 97.5%;top: 43%;}  
-    100%{right: 97.5%;top: 100%;}
-}
-@keyframes dorisLB1{
-    0%{left: 16.3%;top: 0%;}
-    20%{left: 16.3%;top: 37%;}  
-    80%{left: 82.3%;top: 37%;}  
-    100%{left: 82.3%;top: 100%;}
-}
-@keyframes dorisLB2{
-    0%{left: 0.8%;top: 0%;}
-    20%{left: 0.8%;top: 35%;}  
-    80%{left: 96.8%;top: 35%;}  
-    100%{left: 96.8%;top: 100%;}
-}
-@keyframes dian1-1{
-    0%{left: 41.2%;top: 45.2%;}
-    70%{left: 32.2%;top: 38.2%;}
-    100%{left: 30.2%;top: 40.2%;}
-}
-@keyframes dian2-1{
-    0%{left: 79.6%;top: 43.2%;}
-    100%{left: 74.6%;top: 47.2%;}
-}
-@keyframes dian3-1{
-    0%{left: 81.2%;top: 56.2%;}
-    100%{left: 76.2%;top: 53.2%;}
-}
-@keyframes dian4-1{
-    0%{left: 68.2%;top: 66.2%;}
-    100%{left: 64.2%;top: 62.2%;}
-}
-@keyframes dian5-1{
-    0%{left: 43.2%;top: 61.2%;}
-    100%{left: 36.2%;top: 66.2%;}
-}
-
-
-@-webkit-keyframes fadeInUp {
-    0% {
-        opacity: 0;
-        -webkit-transform: translate3d(0,100px,0);
-        transform: translate3d(0,100px,0)
-    }
-
-    100% {
-        opacity: 1;
-        -webkit-transform: none;
-        transform: none
-    }
-}
-
-@keyframes fadeInUp {
-    0% {
-        opacity: 0;
-        -webkit-transform: translate3d(0,100px,0);
-        transform: translate3d(0,100px,0)
-    }
-
-    100% {
-        opacity: 1;
-        -webkit-transform: none;
-        transform: none
-    }
-}
-
-.fadeInUp {
-    -webkit-animation-name: fadeInUp;
-    animation-name: fadeInUp
-}
-
-.sidebar-group.is-sub-group > .sidebar-heading:not(.clickable){
-    opacity: 1 !important;
-}
\ No newline at end of file
diff --git a/docs/.vuepress/styles/palette.styl b/docs/.vuepress/styles/palette.styl
deleted file mode 100644
index c869a74391..0000000000
--- a/docs/.vuepress/styles/palette.styl
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-
-// 默认值
-$accentColor = #3eaf7c                      // 主题颜色
-$textColor = #2c3e50                        // 文本颜色
-$borderColor = #eaecef                      // 边框线颜色
-$codeBgColor = #282c34                      // 代码块背景色
-$backgroundColor = #ffffff                  // 悬浮块背景色
\ No newline at end of file
diff --git a/docs/.vuepress/theme/components/AlgoliaSearchBox.vue b/docs/.vuepress/theme/components/AlgoliaSearchBox.vue
deleted file mode 100644
index 2c9ccba86a..0000000000
--- a/docs/.vuepress/theme/components/AlgoliaSearchBox.vue
+++ /dev/null
@@ -1,194 +0,0 @@
-<!-- Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<template>
-  <form
-    id="search-form"
-    class="algolia-search-wrapper search-box"
-    role="search"
-  >
-    <reco-icon icon="reco-search" />
-    <input
-      id="algolia-search-input"
-      class="search-query"
-      :placeholder="placeholder"
-    >
-  </form>
-</template>
-
-<script>
-import { defineComponent, ref, onMounted } from 'vue-demi'
-import { RecoIcon } from '@vuepress-reco/core/lib/components'
-import { useInstance } from '@theme/helpers/composable'
-
-export default defineComponent({
-  components: { RecoIcon },
-
-  props: ['options'],
-
-  setup (props, ctx) {
-    const instance = useInstance()
-
-    const placeholder = ref(undefined)
-
-    const initialize = (userOptions, lang) => {
-      Promise.all([
-        import(/* webpackChunkName: "docsearch" */ 'docsearch.js/dist/cdn/docsearch.min.js'),
-        import(/* webpackChunkName: "docsearch" */ 'docsearch.js/dist/cdn/docsearch.min.css')
-      ]).then(([docsearch]) => {
-        docsearch = docsearch.default
-        const { algoliaOptions = {} } = userOptions
-        docsearch(Object.assign(
-          {},
-          userOptions,
-          {
-            inputSelector: '#algolia-search-input',
-            // #697 Make docsearch work well at i18n mode.
-            algoliaOptions: Object.assign({
-              'facetFilters': [`lang:${lang}`].concat(algoliaOptions.facetFilters || [])
-            }, algoliaOptions),
-            handleSelected: (input, event, suggestion) => {
-              const { pathname, hash } = new URL(suggestion.url)
-              instance.$router.push(`${pathname}${hash}`)
-            }
-          }
-        ))
-      })
-    }
-
-    const update = (options, lang) => {
-      instance.$el.innerHTML = '<input id="algolia-search-input" class="search-query">'
-      instance.initialize(options, lang)
-    }
-
-    onMounted(() => {
-      initialize(props.options, instance.$lang)
-      placeholder.value = instance.$site.themeConfig.searchPlaceholder || ''
-    })
-
-    return { placeholder, initialize, update }
-  },
-
-  watch: {
-    $lang (newValue) {
-      this.update(this.options, newValue)
-    },
-
-    options (newValue) {
-      this.update(newValue, this.$lang)
-    }
-  }
-})
-</script>
-
-<style lang="stylus">
-.algolia-search-wrapper
-  & > span
-    vertical-align middle
-  .algolia-autocomplete
-    line-height normal
-    .ds-dropdown-menu
-      background-color var(--background-color)
-      border-radius $borderRadius
-      font-size 15px
-      margin 6px 0 0
-      padding 4px
-      text-align left
-      box-shadow var(--box-shadow)
-      &:before
-        display none
-      [class*=ds-dataset-]
-        background-color var(--background-color)
-        border none
-        padding 0
-      .ds-suggestions
-        margin-top 0
-      .ds-suggestion
-        border-bottom 1px solid var(--border-color)
-    .algolia-docsearch-suggestion--highlight
-      color $accentColor
-    .algolia-docsearch-suggestion
-      border-color var(--border-color)
-      padding 0
-      .algolia-docsearch-suggestion--category-header
-        padding 5px 10px
-        margin-top 0
-        background $accentColor
-        color #fff
-        font-weight 600
-        .algolia-docsearch-suggestion--highlight
-          background rgba(255, 255, 255, 0.6)
-      .algolia-docsearch-suggestion--wrapper
-        background var(--background-color)
-        padding 0
-      .algolia-docsearch-suggestion--title
-        font-weight 600
-        margin-bottom 0
-        color var(--text-color)
-      .algolia-docsearch-suggestion--subcategory-column
-        vertical-align top
-        padding 5px 7px 5px 5px
-        border-color var(--border-color)
-        background var(--background-color)
-        &:after
-          display none
-      .algolia-docsearch-suggestion--subcategory-column-text
-        color var(--text-color)
-    .algolia-docsearch-footer
-      border-color var(--border-color)
-      background var(--background-color)
-    .ds-cursor .algolia-docsearch-suggestion--content
-      background-color #e7edf3 !important
-      color $textColor
-
-@media (min-width: $MQMobile)
-  .algolia-search-wrapper
-    .algolia-autocomplete
-      .algolia-docsearch-suggestion
-        .algolia-docsearch-suggestion--subcategory-column
-          float none
-          width 150px
-          min-width 150px
-          display table-cell
-        .algolia-docsearch-suggestion--content
-          float none
-          display table-cell
-          width 100%
-          vertical-align top
-        .ds-dropdown-menu
-          min-width 515px !important
-
-@media (max-width: $MQMobile)
-  .algolia-search-wrapper
-    .ds-dropdown-menu
-      min-width calc(100vw - 4rem) !important
-      max-width calc(100vw - 4rem) !important
-    .algolia-docsearch-suggestion--wrapper
-      padding 5px 7px 5px 5px !important
-    .algolia-docsearch-suggestion--subcategory-column
-      padding 0 !important
-      background var(--border-color) !important
-    .algolia-docsearch-suggestion--subcategory-column-text:after
-      content " > "
-      font-size 10px
-      line-height 14.4px
-      display inline-block
-      width 5px
-      margin -3px 3px 0
-      vertical-align middle
-
-</style>
diff --git a/docs/.vuepress/theme/components/Common.vue b/docs/.vuepress/theme/components/Common.vue
deleted file mode 100644
index bd169646c9..0000000000
--- a/docs/.vuepress/theme/components/Common.vue
+++ /dev/null
@@ -1,245 +0,0 @@
-<!-- Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<template>
-  <div class="theme-container" :class="pageClasses">
-    <div v-if="!absoluteEncryption">
-      <transition name="fade">
-        <LoadingPage v-show="firstLoad" class="loading-wrapper" />
-      </transition>
-
-      <transition name="fade">
-        <Password v-show="!firstLoad && !isHasKey" class="password-wrapper-out" key="out" />
-      </transition>
-
-      <div :class="{ 'hide': firstLoad || !isHasKey }">
-        <Navbar v-if="shouldShowNavbar" @toggle-sidebar="toggleSidebar" />
-
-        <div class="sidebar-mask" @click="toggleSidebar(false)"></div>
-
-        <Sidebar :items="sidebarItems" @toggle-sidebar="toggleSidebar">
-          <PersonalInfo slot="top" />
-          <slot name="sidebar-bottom" slot="bottom"></slot>
-        </Sidebar>
-
-        <Password v-show="!isHasPageKey" :isPage="true" class="password-wrapper-in" key="in"></Password>
-        <div :class="{ 'hide': !isHasPageKey }">
-          <slot></slot>
-        </div>
-      </div>
-    </div>
-    <div v-else>
-      <transition name="fade">
-        <LoadingPage v-if="firstLoad" />
-        <Password v-else-if="!isHasKey" />
-        <div v-else>
-          <Navbar v-if="shouldShowNavbar" @toggle-sidebar="toggleSidebar"/>
-
-          <div class="sidebar-mask" @click="toggleSidebar(false)"></div>
-
-          <Sidebar :items="sidebarItems" @toggle-sidebar="toggleSidebar">
-            <PersonalInfo slot="top" />
-            <slot name="sidebar-bottom" slot="bottom"/>
-          </Sidebar>
-
-          <Password v-if="!isHasPageKey" :isPage="true"></Password>
-          <slot v-else></slot>
-        </div>
-      </transition>
-    </div>
-  </div>
-</template>
-
-<script>
-import { defineComponent, computed, ref, onMounted, toRefs, onUpdated } from 'vue-demi'
-import Navbar from '@theme/components/Navbar'
-import Sidebar from '@theme/components/Sidebar'
-import PersonalInfo from '@theme/components/PersonalInfo'
-import Password from '@theme/components/Password'
-import { setTimeout } from 'timers'
-import { useInstance } from '@theme/helpers/composable'
-
-export default defineComponent({
-  components: { Sidebar, Navbar, Password, PersonalInfo },
-
-  props: {
-    sidebar: {
-      type: Boolean,
-      default: true
-    },
-    sidebarItems: {
-      type: Array,
-      default: () => []
-    },
-    showModule: {
-      type: Boolean,
-      default: false
-    }
-  },
-
-  setup (props, ctx) {
-    const instance = useInstance()
-
-    const isSidebarOpen = ref(false)
-    const isHasKey = ref(true)
-    const isHasPageKey = ref(true)
-    const firstLoad = ref(true)
-
-    const shouldShowSidebar = computed(() => props.sidebarItems.length > 0)
-    const absoluteEncryption = computed(() => {
-      return instance.$themeConfig.keyPage && instance.$themeConfig.keyPage.absoluteEncryption === true
-    })
-    const shouldShowNavbar = computed(() => {
-      const { themeConfig } = instance.$site
-      const { frontmatter } = instance.$page
-
-      if (
-        frontmatter.navbar === false ||
-        themeConfig.navbar === false
-      ) return false
-
-      return (
-        instance.$title ||
-        themeConfig.logo ||
-        themeConfig.repo ||
-        themeConfig.nav ||
-        instance.$themeLocaleConfig.nav
-      )
-    })
-
-    const pageClasses = computed(() => {
-      const classValue = {
-        'no-navbar': !shouldShowNavbar.value,
-        'sidebar-open': isSidebarOpen.value,
-        'no-sidebar': !shouldShowSidebar.value
-      }
-
-      const { pageClass: userPageClass } = instance.$frontmatter || {}
-      if (userPageClass) classValue[userPageClass] = true
-
-      return classValue
-    })
-
-    const hasKey = () => {
-      const { keyPage } = instance.$themeConfig
-      if (!keyPage || !keyPage.keys || keyPage.keys.length === 0) {
-        isHasKey.value = true
-        return
-      }
-
-      let { keys } = keyPage
-      keys = keys.map(item => item.toLowerCase())
-      isHasKey.value = keys && keys.indexOf(sessionStorage.getItem('key')) > -1
-    }
-    const initRouterHandler = () => {
-      instance.$router.afterEach(() => {
-        isSidebarOpen.value = false
-      })
-    }
-    const hasPageKey = () => {
-      let pageKeys = instance.$frontmatter.keys
-      if (!pageKeys || pageKeys.length === 0) {
-        isHasPageKey.value = true
-        return
-      }
-
-      pageKeys = pageKeys.map(item => item.toLowerCase())
-
-      isHasPageKey.value = pageKeys.indexOf(sessionStorage.getItem(`pageKey${window.location.pathname}`)) > -1
-    }
-    const toggleSidebar = (to) => {
-      isSidebarOpen.value = typeof to === 'boolean' ? to : !isSidebarOpen.value
-    }
-    const handleLoading = () => {
-      const time = instance.$frontmatter.home && sessionStorage.getItem('firstLoad') == undefined ? 1000 : 0
-      setTimeout(() => {
-        firstLoad.value = false
-        if (sessionStorage.getItem('firstLoad') == undefined) sessionStorage.setItem('firstLoad', false)
-      }, time)
-    }
-
-    // 首次渲染时,recoShowModule 直接为 true,否则锚点失效
-    const { showModule } = toRefs(props)
-    const recoShowModule = computed(() => {
-      if (firstLoad.value) {
-        return true
-      } else {
-        return showModule.value
-      }
-    })
-
-    onMounted(() => {
-      initRouterHandler()
-      hasKey()
-      hasPageKey()
-      handleLoading()
-    })
-
-    onUpdated(() => {
-      document.title = 'Apache Doris'
-    })
-    
-
-    return { isSidebarOpen, absoluteEncryption, shouldShowNavbar, shouldShowSidebar, pageClasses, hasKey, hasPageKey, isHasKey, isHasPageKey, toggleSidebar, firstLoad, recoShowModule }
-  },
-
-  watch: {
-    $frontmatter (newVal, oldVal) {
-      this.hasKey()
-      this.hasPageKey()
-    }
-  }
-})
-</script>
-
-<style lang="stylus" scoped>
-.theme-container
-  .loading-wrapper
-    position absolute
-    z-index 22
-    top 0
-    bottom 0
-    left 0
-    right 0
-    margin auto
-  .password-wrapper-out
-    position absolute
-    z-index 21
-    top 0
-    bottom 0
-    left 0
-    right 0
-    margin auto
-  .password-wrapper-in
-    position absolute
-    z-index 8
-    top 0
-    bottom 0
-    left 0
-    right 0
-  .hide
-    height 100vh
-    overflow hidden
-    opacity 0
-
-.fade-enter-active, .fade-leave-active {
-  transition: opacity .5s ease-in-out .5s;
-}
-.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
-  opacity: 0;
-}
-</style>
diff --git a/docs/.vuepress/theme/components/Dropdown.vue b/docs/.vuepress/theme/components/Dropdown.vue
deleted file mode 100644
index 44dc3dc642..0000000000
--- a/docs/.vuepress/theme/components/Dropdown.vue
+++ /dev/null
@@ -1,272 +0,0 @@
-<!-- Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<template>
-  <div class="dropdown-wrapper" :class="{ open }" v-show="showVersionNav">
-    <a class="dropdown-title" @click="toggle" v-if="versions">
-      <span class="title">
-        {{ currentItem.text }}
-        <reco-icon :icon="`${versions.icon}`" />
-      </span>
-    </a>
-
-    <DropdownTransition>
-      <ul class="nav-dropdown" v-show="open">
-        <li
-          class="dropdown-item"
-          :key="subItem.link || index"
-          v-for="(subItem, index) in subItems"
-        >
-          <h4 v-if="subItem.type === 'links'">{{ subItem.text }}</h4>
-
-          <ul
-            class="dropdown-subitem-wrapper"
-            v-if="subItem.type === 'links'"
-          >
-            <li
-              class="dropdown-subitem"
-              :key="childSubItem.link"
-              v-for="childSubItem in subItem.items"
-            ><NavLink :item="childSubItem"/></li>
-          </ul>
-          <a class="nav-link" :class="{'router-link-active': subItem.active}" @click="handleClick(subItem)" v-else>{{subItem.text}}</a>
-        </li>
-      </ul>
-    </DropdownTransition>
-  </div>
-</template>
-
-<script>
-import { computed, defineComponent, reactive, ref, watch } from 'vue-demi'
-import { RecoIcon } from '@vuepress-reco/core/lib/components'
-import NavLink from '@theme/components/NavLink'
-import DropdownTransition from '@theme/components/DropdownTransition'
-import { useInstance } from '@theme/helpers/composable'
-import axios from "axios"
-
-
-export default defineComponent({
-  components: { NavLink, DropdownTransition, RecoIcon },
-
-  data () {
-    return {
-      subItems: [],
-      currentItem: {},
-      showVersionNav: false
-    }
-  },
-  computed: {
-    versions() {
-      return this.$themeLocaleConfig.versions;
-    },
-  },
-  watch: {
-    versions: {
-      immediate: true,
-      deep: true,
-      handler(val) {
-        this.init(val)
-        this.setShowVersionNav(val)
-      },
-    },
-    currentItem: {
-      immediate: true,
-      handler (val) {
-        this.updateVersion(val)
-      }
-    }
-  },
-  methods: {
-    setShowVersionNav (versions) {
-      if (!versions) return false
-      const versionKeys = versions.items.map(v => v.text === 'master' ? 'docs' : v.text)
-      this.showVersionNav = versionKeys.some(v => this.$route.path.indexOf(v) > -1)
-    },
-    init(val) {
-      if (!val) return
-      this.subItems = val.items.map((item) => ({ ...item, active: false }));
-      let currentVersion = "master";
-      const versionKeys = val.items.map(
-        (v) => v.text
-      );
-      const matchVersion = versionKeys.find(
-        (v) => this.$route.path.indexOf(v) > -1
-      );
-      currentVersion = matchVersion ? matchVersion : (this.currentItem.text || versionKeys[0])
-      const index = this.subItems.findIndex(
-        (item) => item.text === currentVersion
-      );
-      if (index > -1) {
-        this.currentItem = this.subItems[index];
-        this.currentItem && (this.subItems[index].active = true);
-      }
-    },
-    handleClick (item) {
-      this.subItems.forEach(v => { v.active = item.text === v.text })
-      this.$router.push(item.link)
-      this.currentItem = item
-    },
-    async fetchData () {
-      const res = await axios.get('/versions.json')
-      if (!res || !res.data) return
-      const locales = this.$site.themeConfig.locales
-      Object.keys(locales).forEach(k => {
-        const versionItems = res.data[k.replace(/\//gi, "")] || []
-        this.$site.themeConfig.locales[k].versions.items = versionItems
-      })
-      this.init(this.$site.themeConfig.locales[this.$localePath].versions)
-      this.setShowVersionNav(this.$site.themeConfig.locales[this.$localePath].versions)
-    },
-    updateVersion(val) {
-      const versionsValue = this.versions;
-      if (!versionsValue) return;
-      const version = versionsValue.items.find(
-        (item) => item.text === val.text
-      );
-      const documentNav = this.$themeLocaleConfig.nav.find(
-        (item) => item.name === "document"
-      );
-      if (version && version.link) {
-        documentNav.link = version.link;
-      }
-    },
-  },
-  mounted() {
-    this.fetchData();
-  },
-
-  setup (props, ctx) {
-    const instance = useInstance()
-    const open = ref(false)
-    
-    const toggle = () => {
-      open.value = !open.value
-    }
-
-    return { open, toggle }
-  }
-})
-</script>
-
-<style lang="stylus">
-.dropdown-wrapper
-  cursor pointer
-  height 100%
-  .dropdown-title
-    display block
-    height 100%
-    color #333
-    display flex
-    align-items center
-    font-size 16px
-    font-weight bold
-    &:hover
-      border-color transparent
-    .arrow
-      vertical-align middle
-      margin-top -1px
-      margin-left 0.4rem
-  .doris-xiala
-    font-size 12px
-  .nav-dropdown
-    .dropdown-item
-      color inherit
-      line-height 1.7rem
-      h4
-        margin 0.45rem 0 0
-        border-top 1px solid var(--border-color)
-        padding 0.45rem 1.5rem 0 1.25rem
-      .dropdown-subitem-wrapper
-        padding 0
-        list-style none
-        .dropdown-subitem
-          font-size 0.9em
-      a
-        display block
-        line-height 1.7rem
-        position relative
-        border-bottom none
-        font-weight 400
-        margin-bottom 0
-        padding 0 1.5rem 0 1.25rem
-        &:hover
-          color $accentColor
-        &.router-link-active
-          color $accentColor
-          &::after
-            content ""
-            width 0
-            height 0
-            border-left 5px solid $accentColor
-            border-top 3px solid transparent
-            border-bottom 3px solid transparent
-            position absolute
-            top calc(50% - 2px)
-            left 9px
-      &:first-child h4
-        margin-top 0
-        padding-top 0
-        border-top 0
-
-@media (max-width: $MQMobile)
-  .dropdown-wrapper
-    &.open .dropdown-title
-      margin-bottom 0.5rem
-    .nav-dropdown
-      transition height .1s ease-out
-      overflow hidden
-      .dropdown-item
-        h4
-          border-top 0
-          margin-top 0
-          padding-top 0
-        h4, & > a
-          font-size 15px
-          line-height 2rem
-        .dropdown-subitem
-          font-size 14px
-          padding-left 1rem
-
-@media (min-width: $MQMobile)
-  .dropdown-wrapper
-    &:hover .nav-dropdown
-      // override the inline style.
-      display block !important
-    .dropdown-title .arrow
-      // make the arrow always down at desktop
-      border-left 4px solid transparent
-      border-right 4px solid transparent
-      border-top 6px solid var(--text-color-sub)
-      border-bottom 0
-    .nav-dropdown
-      display none
-      // Avoid height shaked by clicking
-      height auto !important
-      box-sizing border-box;
-      max-height calc(100vh - 2.7rem)
-      overflow-y auto
-      position absolute
-      top 100%
-      right 0
-      background-color var(--background-color)
-      padding 0.6rem 0
-      box-shadow: var(--box-shadow);
-      text-align left
-      border-radius $borderRadius
-      white-space nowrap
-      margin 0
-</style>
diff --git a/docs/.vuepress/theme/components/DropdownLink.vue b/docs/.vuepress/theme/components/DropdownLink.vue
deleted file mode 100644
index 5d6eaf9bac..0000000000
--- a/docs/.vuepress/theme/components/DropdownLink.vue
+++ /dev/null
@@ -1,181 +0,0 @@
-<!-- Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<template>
-  <div class="dropdown-wrapper" :class="{ open }">
-    <a class="dropdown-title" @click="toggle">
-      <span class="title">
-        <reco-icon :icon="`${item.icon}`" />
-        {{ item.text }}
-      </span>
-      <span class="arrow" :class="open ? 'down' : 'right'"></span>
-    </a>
-
-    <DropdownTransition>
-      <ul class="nav-dropdown" v-show="open">
-        <li
-          class="dropdown-item"
-          :key="subItem.link || index"
-          v-for="(subItem, index) in item.items"
-        >
-          <h4 v-if="subItem.type === 'links'">{{ subItem.text }}</h4>
-
-          <ul
-            class="dropdown-subitem-wrapper"
-            v-if="subItem.type === 'links'"
-          >
-            <li
-              class="dropdown-subitem"
-              :key="childSubItem.link"
-              v-for="childSubItem in subItem.items"
-            ><NavLink :item="childSubItem"/></li>
-          </ul>
-
-          <NavLink v-else :item="subItem" />
-        </li>
-      </ul>
-    </DropdownTransition>
-  </div>
-</template>
-
-<script>
-import { defineComponent, ref } from 'vue-demi'
-import { RecoIcon } from '@vuepress-reco/core/lib/components'
-import NavLink from '@theme/components/NavLink'
-import DropdownTransition from '@theme/components/DropdownTransition'
-
-export default defineComponent({
-  components: { NavLink, DropdownTransition, RecoIcon },
-
-  props: {
-    item: {
-      required: true
-    }
-  },
-
-  setup (props, ctx) {
-    const open = ref(false)
-
-    const toggle = () => {
-      open.value = !open.value
-    }
-
-    return { open, toggle }
-  }
-})
-</script>
-
-<style lang="stylus">
-.dropdown-wrapper
-  cursor pointer
-  .dropdown-title
-    display block
-    &:hover
-      border-color transparent
-    .arrow
-      vertical-align middle
-      margin-top -1px
-      margin-left 0.4rem
-  .nav-dropdown
-    .dropdown-item
-      color inherit
-      line-height 1.7rem
-      h4
-        margin 0.45rem 0 0
-        border-top 1px solid var(--border-color)
-        padding 0.45rem 1.5rem 0 1.25rem
-      .dropdown-subitem-wrapper
-        padding 0
-        list-style none
-        .dropdown-subitem
-          font-size 0.9em
-      a
-        display block
-        line-height 1.7rem
-        position relative
-        border-bottom none
-        font-weight 400
-        margin-bottom 0
-        padding 0 1.5rem 0 1.25rem
-        &:hover
-          color $accentColor
-        &.router-link-active
-          color $accentColor
-          &::after
-            content ""
-            width 0
-            height 0
-            border-left 5px solid $accentColor
-            border-top 3px solid transparent
-            border-bottom 3px solid transparent
-            position absolute
-            top calc(50% - 2px)
-            left 9px
-      &:first-child h4
-        margin-top 0
-        padding-top 0
-        border-top 0
-
-@media (max-width: $MQMobile)
-  .dropdown-wrapper
-    &.open .dropdown-title
-      margin-bottom 0.5rem
-    .nav-dropdown
-      transition height .1s ease-out
-      overflow hidden
-      .dropdown-item
-        h4
-          border-top 0
-          margin-top 0
-          padding-top 0
-        h4, & > a
-          font-size 15px
-          line-height 2rem
-        .dropdown-subitem
-          font-size 14px
-          padding-left 1rem
-
-@media (min-width: $MQMobile)
-  .dropdown-wrapper
-    height 1.8rem
-    &:hover .nav-dropdown
-      // override the inline style.
-      display block !important
-    .dropdown-title .arrow
-      // make the arrow always down at desktop
-      border-left 4px solid transparent
-      border-right 4px solid transparent
-      border-top 6px solid var(--text-color-sub)
-      border-bottom 0
-    .nav-dropdown
-      display none
-      // Avoid height shaked by clicking
-      height auto !important
-      box-sizing border-box;
-      max-height calc(100vh - 2.7rem)
-      overflow-y auto
-      position absolute
-      top 100%
-      right 0
-      background-color var(--background-color)
-      padding 0.6rem 0
-      box-shadow: var(--box-shadow);
-      text-align left
-      border-radius $borderRadius
-      white-space nowrap
-      margin 0
-</style>
diff --git a/docs/.vuepress/theme/components/DropdownTransition.vue b/docs/.vuepress/theme/components/DropdownTransition.vue
deleted file mode 100644
index f1db9a48f7..0000000000
--- a/docs/.vuepress/theme/components/DropdownTransition.vue
+++ /dev/null
@@ -1,52 +0,0 @@
-<!-- Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<template>
-  <transition
-    name="dropdown"
-    @enter="setHeight"
-    @after-enter="unsetHeight"
-    @before-leave="setHeight"
-  >
-    <slot/>
-  </transition>
-</template>
-
-<script>
-import { defineComponent } from 'vue-demi'
-export default defineComponent({
-  name: 'DropdownTransition',
-
-  setup (props, ctx) {
-    const setHeight = (items) => {
-      items.style.height = items.scrollHeight + 'px'
-    }
-
-    const unsetHeight = (items) => {
-      items.style.height = ''
-    }
-
-    return { setHeight, unsetHeight }
-  }
-})
-</script>
-
-<style lang="stylus">
-.dropdown-enter, .dropdown-leave-to
-  height 0 !important
-
-</style>
diff --git a/docs/.vuepress/theme/components/Footer.vue b/docs/.vuepress/theme/components/Footer.vue
deleted file mode 100644
index dda8821abc..0000000000
--- a/docs/.vuepress/theme/components/Footer.vue
+++ /dev/null
@@ -1,112 +0,0 @@
-<!-- Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<template>
-  <div class="footer-wrapper">
-    <span>
-      <reco-icon icon="reco-theme" />
-      <a target="blank" href="https://vuepress-theme-reco.recoluan.com">{{`vuepress-theme-reco@${version}`}}</a>
-    </span>
-    <span v-if="$themeConfig.record">
-      <reco-icon icon="reco-beian" />
-      <a :href="$themeConfig.recordLink || '#'">{{ $themeConfig.record }}</a>
-    </span>
-    <span>
-      <reco-icon icon="reco-copyright" />
-      <a>
-        <span v-if="$themeConfig.author">{{ $themeConfig.author }}</span>
-        &nbsp;&nbsp;
-        <span v-if="$themeConfig.startYear && $themeConfig.startYear != (new Date().getFullYear())">{{ $themeConfig.startYear }} - </span>
-        {{ new Date().getFullYear() }}
-      </a>
-    </span>
-    <span v-show="showAccessNumber">
-      <reco-icon icon="reco-eye" />
-      <AccessNumber idVal="/" />
-    </span>
-    <p class="cyber-security" v-if="$themeConfig.cyberSecurityRecord">
-      <img src="https://img.alicdn.com/tfs/TB1..50QpXXXXX7XpXXXXXXXXXX-40-40.png" alt="">
-      <a :href="$themeConfig.cyberSecurityLink || '#'">{{ $themeConfig.cyberSecurityRecord }}</a>
-    </p>
-    <Comments :isShowComments="false"/>
-  </div>
-</template>
-
-<script>
-import { defineComponent, computed } from 'vue-demi'
-import { RecoIcon } from '@vuepress-reco/core/lib/components'
-import { version } from '../package.json'
-import { useInstance } from '@theme/helpers/composable'
-
-export default defineComponent({
-  components: { RecoIcon },
-  setup (props, ctx) {
-    const instance = useInstance()
-    const showAccessNumber = computed(() => {
-      const {
-        $themeConfig: { valineConfig },
-        $themeLocaleConfig: { valineConfig: valineLocalConfig }
-      } = instance
-
-      const vc = valineLocalConfig || valineConfig
-
-      return vc && vc.visitor != false
-    })
-    return { version, showAccessNumber }
-  }
-})
-</script>
-
-<style lang="stylus" scoped>
-  .footer-wrapper {
-    padding: 1.5rem 2.5rem;
-    border-top: 1px solid var(--border-color);
-    text-align: center;
-    color: lighten($textColor, 25%);
-    a {
-      font-size 14px
-    }
-    > span {
-      margin-left 1rem
-      > i {
-        margin-right .5rem
-      }
-    }
-    .cyber-security {
-      img {
-        margin-right .5rem
-        width 20px
-        height 20px
-        vertical-align middle
-      }
-      a {
-        vertical-align middle
-      }
-    }
-  }
-
-@media (max-width: $MQMobile) {
-  .footer {
-    text-align: left!important;
-    > span {
-      display block
-      margin-left 0
-      line-height 2rem
-    }
-  }
-}
-</style>
diff --git a/docs/.vuepress/theme/components/FriendLink.vue b/docs/.vuepress/theme/components/FriendLink.vue
deleted file mode 100644
index 88976d582e..0000000000
--- a/docs/.vuepress/theme/components/FriendLink.vue
+++ /dev/null
@@ -1,240 +0,0 @@
-<!-- Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<template>
-  <div class="friend-link-wrapper">
-    <div
-      class="friend-link-item"
-      v-for="(item, index) in dataAddColor"
-      :key="index"
-      @mouseenter="showDetail($event)"
-      @mouseleave="hideDetail($event)"
-      target="_blank">
-      <span
-        class="list-style"
-        :style="{ 'backgroundColor': item.color }">
-      </span>
-      {{item.title}}
-      <transition name="fade">
-        <div class="popup-window-wrapper">
-          <div
-            class="popup-window"
-            :style="popupWindowStyle"
-            ref="popupWindow">
-            <div class="logo">
-              <img :src="getImgUrl(item)" />
-            </div>
-            <div class="info">
-              <div class="title">
-                <h4>{{ item.title }}</h4>
-                <a
-                  class="btn-go"
-                  :style="{ 'backgroundColor': item.color }"
-                  :href="item.link"
-                  target="_blank">GO</a>
-              </div>
-              <p v-if="item.desc">{{ item.desc }}</p>
-            </div>
-          </div>
-        </div>
-      </transition>
-    </div>
-  </div>
-</template>
-
-<script>
-import { defineComponent, reactive, computed, ref, onMounted } from 'vue-demi'
-import md5 from 'md5'
-import { getOneColor } from '@theme/helpers/other'
-import { useInstance } from '@theme/helpers/composable'
-
-const useDetail = () => {
-  const instance = useInstance()
-  const isPC = ref(true)
-
-  const popupWindowStyle = reactive({
-    left: 0,
-    top: 0
-  })
-
-  const adjustPosition = (dom) => {
-    const { offsetWidth } = document.body
-    const { x, width } = dom.getBoundingClientRect()
-    const distanceToRight = offsetWidth - (x + width)
-
-    if (distanceToRight < 0) {
-      const { offsetLeft } = dom
-      popupWindowStyle.left = offsetLeft + distanceToRight + 'px'
-    }
-  }
-
-  const showDetail = (e) => {
-    const currentDom = e.target
-    const popupWindowWrapper = currentDom.querySelector('.popup-window-wrapper')
-    popupWindowWrapper.style.display = 'block'
-    const popupWindow = currentDom.querySelector('.popup-window')
-    const infoWrapper = document.querySelector('.info-wrapper')
-    const { clientWidth } = currentDom
-    const { clientWidth: windowWidth, clientHeight: windowHeight } = popupWindow
-
-    if (isPC) {
-      popupWindowStyle.left = (clientWidth - windowWidth) / 2 + 'px'
-      popupWindowStyle.top = -windowHeight + 'px'
-
-      infoWrapper.style.overflow = 'visible'
-
-      instance.$nextTick(() => {
-        adjustPosition(popupWindow)
-      })
-    } else {
-      const getPosition = function (element) {
-        const dc = document
-        const rec = element.getBoundingClientRect()
-        let _x = rec.left
-        let _y = rec.top
-        _x += dc.documentElement.scrollLeft || dc.body.scrollLeft
-        _y += dc.documentElement.scrollTop || dc.body.scrollTop
-        return { left: _x, top: _y }
-      }
-
-      infoWrapper.style.overflow = 'hidden'
-      const left = getPosition(currentDom).left - getPosition(infoWrapper).left
-
-      popupWindowStyle.left = (-left + (infoWrapper.clientWidth - popupWindow.clientWidth) / 2) + 'px'
-      popupWindowStyle.top = -windowHeight + 'px'
-    }
-  }
-
-  const hideDetail = (e) => {
-    const currentDom = e.target.querySelector('.popup-window-wrapper')
-    currentDom.style.display = 'none'
-  }
-
-  onMounted(() => {
-    isPC.value = !/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)
-  })
-
-  return { popupWindowStyle, showDetail, hideDetail }
-}
-
-export default defineComponent({
-  setup (props, ctx) {
-    const instance = useInstance()
-
-    const { popupWindowStyle, showDetail, hideDetail } = useDetail()
-
-    const dataAddColor = computed(() => {
-      const { friendLink = [] } = instance && instance.$themeConfig
-      return friendLink.map(item => {
-        item.color = getOneColor()
-        return item
-      })
-    })
-
-    const getImgUrl = (info) => {
-      const { logo = '', email = '' } = info
-      if (logo && /^http/.test(logo)) return logo
-      if (logo && !/^http/.test(logo)) return instance.$withBase(logo)
-      return `//1.gravatar.com/avatar/${md5(email || '')}?s=50&amp;d=mm&amp;r=x`
-    }
-
-    return { dataAddColor, popupWindowStyle, showDetail, hideDetail, getImgUrl }
-  }
-})
-</script>
-
-<style lang="stylus" scoped>
-.friend-link-wrapper
-  position relative
-  margin 30px 0
-  .friend-link-item
-    position relative
-    vertical-align: middle;
-    margin: 4px 4px 10px;
-    padding: 4px 8px 4px 20px;
-    line-height 20px
-    display: inline-block;
-    cursor: default;
-    border-radius: $borderRadius
-    font-size: 13px;
-    box-shadow var(--box-shadow)
-    transition: all .5s
-    .list-style
-      position absolute
-      left .4rem
-      top 0
-      bottom 0
-      margin auto
-      display block
-      width .4rem
-      height .4rem
-      border-radius .1rem
-      background $accentColor
-      content ''
-    .popup-window-wrapper
-      display none
-      .popup-window
-        position absolute
-        display flex
-        background var(--background-color)
-        box-shadow var(--box-shadow)
-        border-radius $borderRadius
-        box-sizing border-box
-        padding .8rem 1rem
-        width 280px
-        .logo
-          margin-right .4rem
-          width 2rem
-          height 2rem
-          flex 0 0 2rem
-          border-radius $borderRadius
-          overflow hidden
-          img
-            width 2rem
-            height 2rem
-        .info
-          flex 0 0 85%
-          width 85%
-          .title
-            display flex
-            align-items center
-            justify-content space-between
-            height 2rem
-            h4
-              margin .2rem 0
-              flex 0 0 86%
-              overflow: hidden;
-              white-space: nowrap;
-              text-overflow: ellipsis;
-            .btn-go
-              width 1.4rem
-              height 1.2rem
-              border-radius $borderRadius
-              font-size 12px
-              color #ffffff
-              text-align center
-              line-height 1.2rem
-              cursor pointer
-              transition all .5s
-              &:hover
-                transform scale(1.1)
-
-.fade-enter-active, .fade-leave-active
-  transition opacity .5s
-.fade-enter, .fade-leave-to
-  opacity 0
-</style>
diff --git a/docs/.vuepress/theme/components/Home.vue b/docs/.vuepress/theme/components/Home.vue
deleted file mode 100644
index e6f3f52f41..0000000000
--- a/docs/.vuepress/theme/components/Home.vue
+++ /dev/null
@@ -1,208 +0,0 @@
-<!-- Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<template>
-  <div class="home">
-    <div class="hero">
-      <ModuleTransition>
-        <img
-          v-if="recoShowModule && $frontmatter.heroImage"
-          :style="heroImageStyle || {}"
-          :src="$withBase($frontmatter.heroImage)"
-          alt="hero">
-      </ModuleTransition>
-      <ModuleTransition delay="0.04">
-        <h1
-          v-if="recoShowModule && $frontmatter.heroText !== null"
-          :style="{ marginTop: $frontmatter.heroImage ? '0px' : '140px'}"
-        >
-          {{ $frontmatter.heroText || $title || 'vuePress-theme-reco' }}
-        </h1>
-      </ModuleTransition>
-      <ModuleTransition delay="0.08">
-        <p v-if="recoShowModule && $frontmatter.tagline !== null" class="description">
-          {{ $frontmatter.tagline || $description || 'Welcome to your vuePress-theme-reco site' }}
-        </p>
-      </ModuleTransition>
-      <ModuleTransition delay="0.16">
-        <p class="action" v-if="recoShowModule && $frontmatter.actionText && $frontmatter.actionLink">
-          <NavLink class="action-button" :item="actionLink"/>
-        </p>
-      </ModuleTransition>
-    </div>
-
-    <ModuleTransition delay="0.24">
-      <div class="features" v-if="recoShowModule && $frontmatter.features && $frontmatter.features.length">
-        <div v-for="(feature, index) in $frontmatter.features" :key="index" class="feature">
-          <h2>{{ feature.title }}</h2>
-          <p>{{ feature.details }}</p>
-        </div>
-      </div>
-    </ModuleTransition>
-    <ModuleTransition delay="0.32">
-      <Content class="home-center" v-show="recoShowModule" custom/>
-    </ModuleTransition>
-  </div>
-</template>
-
-<script>
-import { defineComponent, computed } from 'vue-demi'
-import NavLink from '@theme/components/NavLink'
-import { ModuleTransition } from '@vuepress-reco/core/lib/components'
-import { useInstance } from '@theme/helpers/composable'
-
-export default defineComponent({
-  components: { NavLink, ModuleTransition },
-
-  setup (props, ctx) {
-    const instance = useInstance()
-    const recoShowModule = computed(() => instance && instance.$parent.recoShowModule)
-    const actionLink = computed(() => instance && {
-      link: instance.$frontmatter.actionLink,
-      text: instance.$frontmatter.actionText
-    })
-    const heroImageStyle = computed(() => instance.$frontmatter.heroImageStyle || {
-      maxHeight: '200px',
-      margin: '6rem auto 1.5rem'
-    })
-
-    return { recoShowModule, actionLink, heroImageStyle }
-  }
-})
-</script>
-
-<style lang="stylus">
-.home {
-  padding: $navbarHeight 2rem 0;
-  max-width: 960px;
-  margin: 0px auto;
-
-  .hero {
-    text-align: center;
-    h1 {
-      display: block;
-      font-size: 2.5rem;
-      color: var(--text-color);
-    }
-
-    h1, .description, .action {
-      margin: 1.8rem auto;
-    }
-
-    .description {
-      font-size: 1.6rem;
-      line-height: 1.3;
-      color: var(--text-color);
-    }
-
-    .action-button {
-      display: inline-block;
-      font-size: 1.2rem;
-      color: #fff;
-      background-color: $accentColor;
-      padding: 0.2rem 1.2rem;
-      border-radius: $borderRadius
-      transition: background-color 0.1s ease;
-      box-sizing: border-box;
-      load-start()
-
-      &:hover {
-        background-color: lighten($accentColor, 10%);
-      }
-    }
-  }
-
-  .features {
-    border-top: 1px solid var(--border-color);;
-    padding: 1.2rem 0;
-    margin-top: 2.5rem;
-    display: flex;
-    flex-wrap: wrap;
-    align-items: flex-start;
-    align-content: stretch;
-    justify-content: space-between;
-  }
-
-  .feature {
-    flex-grow: 1;
-    flex-basis: 30%;
-    max-width: 30%;
-    transition: all .5s
-    color: var(--text-color);
-    h2 {
-      font-size: 1.6rem;
-      font-weight: 500;
-      border-bottom: none;
-      padding-bottom: 0;
-    }
-
-    &:hover {
-      transform scale(1.05)
-    }
-  }
-}
-
-@media (max-width: $MQMobile) {
-  .home {
-    .features {
-      flex-direction: column;
-    }
-
-    .feature {
-      max-width: 100%;
-      padding: 0 2.5rem;
-    }
-  }
-}
-
-@media (max-width: $MQMobileNarrow) {
-  .home {
-    padding-left: 1.5rem;
-    padding-right: 1.5rem;
-
-    .hero {
-      img {
-        max-height: 210px;
-        margin: 2rem auto 1.2rem;
-      }
-
-      h1 {
-        font-size: 2rem;
-      }
-
-      h1, .description, .action {
-        margin: 1.2rem auto;
-      }
-
-      .description {
-        font-size: 1.2rem;
-      }
-
-      .action-button {
-        font-size: 1rem;
-        padding: 0.6rem 1.2rem;
-      }
-    }
-
-    .feature {
-      h2 {
-        font-size: 1.25rem;
-      }
-    }
-  }
-}
-</style>
diff --git a/docs/.vuepress/theme/components/HomeBlog/hock.js b/docs/.vuepress/theme/components/HomeBlog/hock.js
deleted file mode 100644
index c6e9ecee90..0000000000
--- a/docs/.vuepress/theme/components/HomeBlog/hock.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-// import { ref, reactive, toRefs, getCurrentInstance } from 'vue-demi'
-
-// const useBlog = () => {
-//   const currentPage = ref(1)
-//   return {}
-// }
-
-// export { useBlog }
diff --git a/docs/.vuepress/theme/components/HomeBlog/index.vue b/docs/.vuepress/theme/components/HomeBlog/index.vue
deleted file mode 100644
index cbf496930b..0000000000
--- a/docs/.vuepress/theme/components/HomeBlog/index.vue
+++ /dev/null
@@ -1,323 +0,0 @@
-<!-- Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<template>
-  <div class="home-blog">
-    <div class="hero" :style="{ ...bgImageStyle }">
-      <div>
-        <ModuleTransition>
-          <img
-            class="hero-img"
-            v-if="recoShowModule && $frontmatter.heroImage"
-            :style="heroImageStyle || {}"
-            :src="$withBase($frontmatter.heroImage)"
-            alt="hero"
-          />
-        </ModuleTransition>
-
-        <ModuleTransition delay="0.04">
-          <h1 v-if="recoShowModule && $frontmatter.heroText !== null">
-            {{ $frontmatter.heroText || $title || 'vuePress-theme-reco' }}
-          </h1>
-        </ModuleTransition>
-
-        <ModuleTransition delay="0.08">
-          <p v-if="recoShowModule && $frontmatter.tagline !== null" class="description">
-            {{ $frontmatter.tagline || $description || 'Welcome to your vuePress-theme-reco site' }}
-          </p>
-        </ModuleTransition>
-      </div>
-    </div>
-
-    <ModuleTransition delay="0.16">
-      <div v-show="recoShowModule" class="home-blog-wrapper">
-        <div class="blog-list">
-          <!-- 博客列表 -->
-          <note-abstract :data="$recoPosts" @paginationChange="paginationChange" />
-        </div>
-        <div class="info-wrapper">
-          <PersonalInfo/>
-          <h4><reco-icon icon="reco-category" /> {{$recoLocales.category}}</h4>
-          <ul class="category-wrapper">
-            <li class="category-item" v-for="(item, index) in this.$categories.list" :key="index">
-              <router-link :to="item.path">
-                <span class="category-name">{{ item.name }}</span>
-                <span class="post-num" :style="{ 'backgroundColor': getOneColor() }">{{ item.pages.length }}</span>
-              </router-link>
-            </li>
-          </ul>
-          <hr>
-          <h4 v-if="$tags.list.length !== 0"><reco-icon icon="reco-tag" /> {{$recoLocales.tag}}</h4>
-          <TagList @getCurrentTag="getPagesByTags" />
-          <h4 v-if="$themeConfig.friendLink && $themeConfig.friendLink.length !== 0"><reco-icon icon="reco-friend" /> {{$recoLocales.friendLink}}</h4>
-          <FriendLink />
-        </div>
-      </div>
-    </ModuleTransition>
-
-    <ModuleTransition delay="0.24">
-      <Content v-show="recoShowModule" class="home-center" custom/>
-    </ModuleTransition>
-  </div>
-</template>
-
-<script>
-import { defineComponent, toRefs, reactive, computed, onMounted } from 'vue-demi'
-import TagList from '@theme/components/TagList'
-import FriendLink from '@theme/components/FriendLink'
-import NoteAbstract from '@theme/components/NoteAbstract'
-import { ModuleTransition, RecoIcon } from '@vuepress-reco/core/lib/components'
-import PersonalInfo from '@theme/components/PersonalInfo'
-import { getOneColor } from '@theme/helpers/other'
-import { useInstance } from '@theme/helpers/composable'
-
-export default defineComponent({
-  components: { NoteAbstract, TagList, FriendLink, ModuleTransition, PersonalInfo, RecoIcon },
-  setup (props, ctx) {
-    const instance = useInstance()
-
-    const state = reactive({
-      recoShow: false,
-      heroHeight: 0
-    })
-
-    const recoShowModule = computed(() => instance && instance.$parent.recoShowModule)
-
-    const heroImageStyle = computed(() => instance.$frontmatter.heroImageStyle || {})
-
-    const bgImageStyle = computed(() => {
-      const url = instance.$frontmatter.bgImage
-        ? instance.$withBase(instance.$frontmatter.bgImage)
-        : require('../../images/bg.svg')
-
-      const initBgImageStyle = {
-        textAlign: 'center',
-        overflow: 'hidden',
-        background: `url(${url}) center/cover no-repeat`
-      }
-
-      const { bgImageStyle } = instance.$frontmatter
-
-      return bgImageStyle ? { ...initBgImageStyle, ...bgImageStyle } : initBgImageStyle
-    })
-
-    onMounted(() => {
-      state.heroHeight = document.querySelector('.hero').clientHeight
-      state.recoShow = true
-    })
-
-    return { recoShowModule, heroImageStyle, bgImageStyle, ...toRefs(state), getOneColor }
-  },
-  methods: {
-    paginationChange (page) {
-      setTimeout(() => {
-        window.scrollTo(0, this.heroHeight)
-      }, 100)
-    },
-    getPagesByTags (tagInfo) {
-      this.$router.push({ path: tagInfo.path })
-    }
-  }
-})
-</script>
-
-<style lang="stylus">
-.home-blog {
-  padding: 0;
-  margin: 0px auto;
-  .hero {
-    margin $navbarHeight auto 0
-    position relative
-    box-sizing border-box
-    padding 0 20px
-    height 100vh
-    display flex
-    align-items center
-    justify-content center
-    .hero-img {
-      max-width: 300px;
-      margin: 0 auto 1.5rem
-    }
-
-    h1 {
-      display: block;
-      margin:0 auto 1.8rem;
-      font-size: 2.5rem;
-    }
-
-    .description {
-      margin: 1.8rem auto;
-      font-size: 1.6rem;
-      line-height: 1.3;
-    }
-  }
-  .home-blog-wrapper {
-    display flex
-    align-items: flex-start;
-    margin 20px auto 0
-    padding 0 20px
-    max-width $homePageWidth
-    .blog-list {
-      flex auto
-      width 0
-      .abstract-wrapper {
-        .abstract-item:last-child {
-          margin-bottom: 0px;
-        }
-      }
-    }
-    .info-wrapper {
-      position -webkit-sticky;
-      position sticky;
-      top 70px
-      overflow hidden
-      transition all .3s
-      margin-left 15px
-      flex 0 0 300px
-      height auto
-      box-shadow var(--box-shadow)
-      border-radius $borderRadius
-      box-sizing border-box
-      padding 0 15px
-      background var(--background-color)
-      &:hover {
-        box-shadow var(--box-shadow-hover)
-      }
-      h4 {
-        color var(--text-color)
-      }
-      .category-wrapper {
-        list-style none
-        padding-left 0
-        .category-item {
-          margin-bottom .4rem
-          padding: .4rem .8rem;
-          transition: all .5s
-          border-radius $borderRadius
-          box-shadow var(--box-shadow)
-          background-color var(--background-color)
-          &:hover {
-            transform scale(1.04)
-            a {
-              color $accentColor
-            }
-          }
-          a {
-            display flex
-            justify-content: space-between
-            align-items: center
-            color var(--text-color)
-            .post-num {
-              width 1.6rem;
-              height 1.6rem
-              text-align center
-              line-height 1.6rem
-              border-radius $borderRadius
-              background #eee
-              font-size 13px
-              color #fff
-            }
-          }
-        }
-      }
-    }
-  }
-}
-
-@media (max-width: $MQMobile) {
-  .home-blog {
-    .hero {
-      height 450px
-      img {
-        max-height: 210px;
-        margin: 2rem auto 1.2rem;
-      }
-
-      h1 {
-        margin: 0 auto 1.8rem ;
-        font-size: 2rem;
-      }
-
-      .description {
-        font-size: 1.2rem;
-      }
-
-      .action-button {
-        font-size: 1rem;
-        padding: 0.6rem 1.2rem;
-      }
-    }
-    .home-blog-wrapper {
-      display block!important
-      .blog-list {
-        width auto
-      }
-      .info-wrapper {
-        // display none!important
-        margin-left 0
-        .personal-info-wrapper {
-          display none
-        }
-      }
-    }
-  }
-}
-
-@media (max-width: $MQMobileNarrow) {
-  .home-blog {
-    .hero {
-      height 450px
-      img {
-        max-height: 210px;
-        margin: 2rem auto 1.2rem;
-      }
-
-      h1 {
-        margin: 0 auto 1.8rem ;
-        font-size: 2rem;
-      }
-
-      h1, .description, .action {
-        // margin: 1.2rem auto;
-      }
-
-      .description {
-        font-size: 1.2rem;
-      }
-
-      .action-button {
-        font-size: 1rem;
-        padding: 0.6rem 1.2rem;
-      }
-    }
-
-    .home-blog-wrapper {
-      display block!important
-      .blog-list {
-        width auto
-      }
-      .info-wrapper {
-        // display none!important
-        margin-left 0
-        .personal-info-wrapper {
-          display none
-        }
-      }
-    }
-  }
-}
-</style>
diff --git a/docs/.vuepress/theme/components/MobShare.vue b/docs/.vuepress/theme/components/MobShare.vue
deleted file mode 100644
index 561890ac43..0000000000
--- a/docs/.vuepress/theme/components/MobShare.vue
+++ /dev/null
@@ -1,48 +0,0 @@
-<!-- Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<template>
-  <div>
-    <div class="-mob-share-ui-button -mob-share-open">分享</div>
-      <div class="-mob-share-ui" style="display: none">
-        <ul class="-mob-share-list">
-            <li class="-mob-share-weibo"><p>新浪微博</p></li>
-            <li class="-mob-share-qzone"><p>QQ空间</p></li>
-            <li class="-mob-share-qq"><p>QQ好友</p></li>
-            <li class="-mob-share-douban"><p>豆瓣</p></li>
-            <li class="-mob-share-facebook"><p>Facebook</p></li>
-            <li class="-mob-share-twitter"><p>Twitter</p></li>
-        </ul>
-        <div class="-mob-share-close">取消</div>
-      </div>
-      <div class="-mob-share-ui-bg"></div>
-  </div>
-</template>
-
-<script>
-import { defineComponent } from 'vue-demi'
-export default defineComponent({
-  setup (props, ctx) {
-    const script = document.createElement('script')
-    script.src = 'http://f1.webshare.mob.com/code/mob-share.js?appkey=2d1a37832f835'
-    script.id = '-mob-share'
-
-    document.body.append(script)
-  }
-})
-</script>
-
diff --git a/docs/.vuepress/theme/components/Mode/ModePicker.vue b/docs/.vuepress/theme/components/Mode/ModePicker.vue
deleted file mode 100644
index 654aee2eae..0000000000
--- a/docs/.vuepress/theme/components/Mode/ModePicker.vue
+++ /dev/null
@@ -1,118 +0,0 @@
-<!-- Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<template>
-  <div class="mode-options">
-    <h4 class="title">Choose mode</h4>
-    <ul class="color-mode-options">
-      <li
-        v-for="(mode, index) in modeOptions"
-        :key="index"
-        :class="getClass(mode.mode)"
-        @click="selectMode(mode.mode)"
-      >{{ mode.title }}</li>
-    </ul>
-  </div>
-</template>
-
-<script>
-import applyMode from './applyMode'
-export default {
-  name: 'ModeOptions',
-
-  data () {
-    return {
-      modeOptions: [
-        { mode: 'dark', title: 'dark' },
-        { mode: 'auto', title: 'auto' },
-        { mode: 'light', title: 'light' }
-      ],
-      currentMode: 'auto'
-    }
-  },
-
-  mounted () {
-    // modePicker 开启时默认使用用户主动设置的模式
-    this.currentMode = localStorage.getItem('mode') || this.$themeConfig.mode || 'auto'
-
-    // Dark and Light autoswitches
-    // 为了避免在 server-side 被执行,故在 Vue 组件中设置监听器
-    var that = this
-    window.matchMedia('(prefers-color-scheme: dark)').addListener(() => {
-      that.$data.currentMode === 'auto' && applyMode(that.$data.currentMode)
-    })
-    window.matchMedia('(prefers-color-scheme: light)').addListener(() => {
-      that.$data.currentMode === 'auto' && applyMode(that.$data.currentMode)
-    })
-
-    applyMode(this.currentMode)
-  },
-
-  methods: {
-    selectMode (mode) {
-      if (mode !== this.currentMode) {
-        this.currentMode = mode
-        applyMode(mode)
-        localStorage.setItem('mode', mode)
-      }
-    },
-    getClass (mode) {
-      return mode !== this.currentMode ? mode : `${mode} active`
-    }
-  }
-}
-</script>
-
-<style lang="stylus">
-.mode-options
-  background-color var(--background-color)
-  min-width: 125px;
-  margin: 0;
-  padding: 1em;
-  box-shadow var(--box-shadow);
-  border-radius: $borderRadius;
-  .title
-    margin-top 0
-    margin-bottom .6rem
-    font-weight bold
-    color var(--text-color)
-  .color-mode-options
-    display: flex;
-    flex-wrap wrap
-    li
-      flex: 1;
-      text-align: center;
-      font-size 12px
-      color var(--text-color)
-      line-height 18px
-      padding 3px 6px
-      border-top 1px solid #666
-      border-bottom 1px solid #666
-      background-color var(--background-color)
-      cursor pointer
-      &.dark
-        border-radius: $borderRadius 0 0 $borderRadius
-        border-left 1px solid #666
-      &.light
-        border-radius: 0 $borderRadius $borderRadius 0
-        border-right 1px solid #666
-      &.active
-        background-color: $accentColor;
-        color #fff
-      &:not(.active)
-        border-right 1px solid #666
-</style>
diff --git a/docs/.vuepress/theme/components/Mode/applyMode.js b/docs/.vuepress/theme/components/Mode/applyMode.js
deleted file mode 100644
index 5589d14ddc..0000000000
--- a/docs/.vuepress/theme/components/Mode/applyMode.js
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-import modeOptions from './modeOptions'
-
-function render (mode) {
-  const rootElement = document.querySelector(':root')
-  const options = modeOptions[mode]
-  const opposite = mode === 'dark' ? 'light' : 'dark'
-
-  for (const k in options) {
-    rootElement.style.setProperty(k, options[k])
-  }
-
-  rootElement.classList.remove(opposite)
-  rootElement.classList.add(mode)
-}
-
-/**
- * Sets a color scheme for the website.
- * If browser supports "prefers-color-scheme", 'auto' mode will respect the setting for light or dark mode
- * otherwise it will set a dark theme during night time
- */
-export default function applyMode (mode) {
-  if (mode !== 'auto') {
-    render(mode)
-    return
-  }
-
-  const isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches
-  const isLightMode = window.matchMedia('(prefers-color-scheme: light)').matches
-
-  if (isDarkMode) render('dark')
-  if (isLightMode) render('light')
-
-  if (!isDarkMode && !isLightMode) {
-    console.log('You specified no preference for a color scheme or your browser does not support it. I schedule dark mode during night time.')
-    const hour = new Date().getHours()
-    if (hour < 6 || hour >= 18) render('dark')
-    else render('light')
-  }
-}
diff --git a/docs/.vuepress/theme/components/Mode/index.vue b/docs/.vuepress/theme/components/Mode/index.vue
deleted file mode 100644
index 72ee991dc9..0000000000
--- a/docs/.vuepress/theme/components/Mode/index.vue
+++ /dev/null
@@ -1,122 +0,0 @@
-<!-- Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<template>
-	<div v-click-outside="hideMenu" class="color-picker" v-if="$themeConfig.modePicker !== false" >
-		<a class="color-button" @click.prevent="showMenu = !showMenu">
-      <reco-icon icon="reco-color" />
-		</a>
-		<ModuleTransition :transform=" ['translate(-50%, 0)', 'translate(-50%, -10px)']">
-			<div v-show="showMenu" class="color-picker-menu">
-				<ModePicker />
-			</div>
-		</ModuleTransition>
-	</div>
-</template>
-
-<script>
-import { RecoIcon, ModuleTransition } from '@vuepress-reco/core/lib/components'
-import ClickOutside from 'vue-click-outside'
-import ModePicker from './ModePicker'
-import applyMode from './applyMode'
-
-export default {
-  name: 'UserSettings',
-
-  directives: {
-    'click-outside': ClickOutside
-  },
-
-  components: {
-    ModePicker,
-    RecoIcon,
-    ModuleTransition
-  },
-
-  data () {
-    return {
-      showMenu: false
-    }
-  },
-
-  // 为了在保证 modePicker 在 SSR 中正确开关,并实现管理,Mode 组件将负责 modePicker 关闭的情况
-  mounted () {
-    // modePicker 关闭时默认使用主题设置的模式
-    const themeMode = this.$themeConfig.mode || 'auto'
-    const { modePicker } = this.$themeConfig
-    if (modePicker === false) {
-      // 为 'auto' 模式设置监听器
-      if (themeMode === 'auto') {
-        window.matchMedia('(prefers-color-scheme: dark)').addListener(() => {
-          applyMode(themeMode)
-        })
-        window.matchMedia('(prefers-color-scheme: light)').addListener(() => {
-          applyMode(themeMode)
-        })
-      }
-      applyMode(themeMode)
-    }
-  },
-
-  methods: {
-    hideMenu () {
-      this.showMenu = false
-    }
-  }
-}
-</script>
-
-<style lang="stylus">
-.color-picker {
-	position: relative;
-	margin-right: 1em;
-  cursor pointer;
-	.color-button {
-		align-items: center;
-		height: 100%;
-		.iconfont {
-			font-size 1.4rem
-			color: $accentColor
-		}
-	}
-
-	.color-picker-menu {
-		position: absolute;
-		top: 40px;
-		left: 50%;
-		z-index: 150;
-
-		ul {
-			list-style-type: none;
-			margin: 0;
-			padding: 0;
-		}
-	}
-}
-
-@media (max-width: $MQMobile) {
-	.color-picker {
-		margin-right: 1rem;
-		.color-picker-menu {
-			left: calc(50% - 35px);
-			&::before {
-				left: calc(50% + 35px);
-			}
-		}
-	}
-}
-</style>
diff --git a/docs/.vuepress/theme/components/Mode/modeOptions.js b/docs/.vuepress/theme/components/Mode/modeOptions.js
deleted file mode 100644
index 8392573bb1..0000000000
--- a/docs/.vuepress/theme/components/Mode/modeOptions.js
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-const modeOptions = {
-  light: {
-    '--default-color-10': 'rgba(255, 255, 255, 1)',
-    '--default-color-9': 'rgba(255, 255, 255, .9)',
-    '--default-color-8': 'rgba(255, 255, 255, .8)',
-    '--default-color-7': 'rgba(255, 255, 255, .7)',
-    '--default-color-6': 'rgba(255, 255, 255, .6)',
-    '--default-color-5': 'rgba(255, 255, 255, .5)',
-    '--default-color-4': 'rgba(255, 255, 255, .4)',
-    '--default-color-3': 'rgba(255, 255, 255, .3)',
-    '--default-color-2': 'rgba(255, 255, 255, .2)',
-    '--default-color-1': 'rgba(255, 255, 255, .1)',
-    '--background-color': '#fff',
-    '--box-shadow': '0 1px 8px 0 rgba(0, 0, 0, 0.1)',
-    '--box-shadow-hover': '0 2px 16px 0 rgba(0, 0, 0, 0.2)',
-    '--text-color': '#242424',
-    '--text-color-sub': '#7F7F7F',
-    '--border-color': '#eaecef',
-    '--code-color': 'rgba(27, 31, 35, 0.05)',
-    '--mask-color': '#888'
-  },
-  dark: {
-    '--default-color-10': 'rgba(0, 0, 0, 1)',
-    '--default-color-9': 'rgba(0, 0, 0, .9)',
-    '--default-color-8': 'rgba(0, 0, 0, .8)',
-    '--default-color-7': 'rgba(0, 0, 0, .7)',
-    '--default-color-6': 'rgba(0, 0, 0, .6)',
-    '--default-color-5': 'rgba(0, 0, 0, .5)',
-    '--default-color-4': 'rgba(0, 0, 0, .4)',
-    '--default-color-3': 'rgba(0, 0, 0, .3)',
-    '--default-color-2': 'rgba(0, 0, 0, .2)',
-    '--default-color-1': 'rgba(0, 0, 0, .1)',
-    '--background-color': '#181818',
-    '--box-shadow': '0 1px 8px 0 rgba(0, 0, 0, .6)',
-    '--box-shadow-hover': '0 2px 16px 0 rgba(0, 0, 0, .7)',
-    '--text-color': 'rgba(255, 255, 255, .8)',
-    '--text-color-sub': '#8B8B8B',
-    '--border-color': 'rgba(0, 0, 0, .3)',
-    '--code-color': 'rgba(0, 0, 0, .3)',
-    '--mask-color': '#000'
-  }
-}
-
-export default modeOptions
diff --git a/docs/.vuepress/theme/components/NavLink.vue b/docs/.vuepress/theme/components/NavLink.vue
deleted file mode 100644
index 1ba419da85..0000000000
--- a/docs/.vuepress/theme/components/NavLink.vue
+++ /dev/null
@@ -1,85 +0,0 @@
-<!-- Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<template>
-  <RouterLink
-    class="nav-link"
-    :class="[item.className]"
-    :to="link"
-    v-if="!isExternal(link)"
-    :exact="exact"
-  >
-    <reco-icon :icon="`${item.icon}`" />
-    {{ item.text }}
-  </RouterLink>
-  <a
-    v-else
-    :href="link"
-    class="nav-link external"
-    :target="isMailto(link) || isTel(link) ? null : '_blank'"
-    :rel="isMailto(link) || isTel(link) ? null : 'noopener noreferrer'"
-  >
-    <reco-icon :icon="`${item.icon}`" />
-    {{ item.text }}
-    <OutboundLink />
-  </a>
-</template>
-
-<script>
-import { defineComponent, computed, toRefs } from "vue-demi";
-import { isExternal, isMailto, isTel, ensureExt } from "@theme/helpers/utils";
-import { RecoIcon } from "@vuepress-reco/core/lib/components";
-import { useInstance } from "@theme/helpers/composable";
-
-export default defineComponent({
-  components: { RecoIcon },
-
-  props: {
-    item: {
-      required: true,
-    },
-  },
-  methods: {
-    isVersionLink(link) {
-      return link.indexOf("branch") > -1;
-    },
-    go(link) {
-      const url = window.location.origin + link;
-      location.href = url;
-    },
-  },
-
-  setup(props, ctx) {
-    const instance = useInstance();
-
-    const { item } = toRefs(props);
-
-    const link = computed(() => ensureExt(item.value.link));
-
-    const exact = computed(() => {
-      if (instance.$site.locales) {
-        return Object.keys(instance.$site.locales).some(
-          (rootLink) => rootLink === link.value
-        );
-      }
-      return link.value === "/";
-    });
-
-    return { link, exact, isExternal, isMailto, isTel };
-  },
-});
-</script>
diff --git a/docs/.vuepress/theme/components/NavLinks.vue b/docs/.vuepress/theme/components/NavLinks.vue
deleted file mode 100644
index 5c32e98700..0000000000
--- a/docs/.vuepress/theme/components/NavLinks.vue
+++ /dev/null
@@ -1,211 +0,0 @@
-<!-- Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<template>
-  <nav class="nav-links" v-if="userLinks.length || repoLink">
-    <!-- user links -->
-    <div
-      class="nav-item"
-      v-for="item in userLinks"
-      :key="item.link"
-    >
-      <DropdownLink v-if="item.type === 'links'" :item="item" />
-      <NavLink v-else :item="item" />
-    </div>
-
-    <!-- repo link -->
-    <a
-      v-if="repoLink"
-      :href="repoLink"
-      class="repo-link"
-      target="_blank"
-      rel="noopener noreferrer"
-    >
-      <reco-icon :icon="`reco-${repoLabel.toLowerCase()}`" />
-      {{ repoLabel }}
-      <OutboundLink/>
-    </a>
-  </nav>
-</template>
-
-<script>
-import { defineComponent, computed } from 'vue-demi'
-import { RecoIcon } from '@vuepress-reco/core/lib/components'
-import DropdownLink from '@theme/components/DropdownLink'
-import { resolveNavLinkItem } from '@theme/helpers/utils'
-import NavLink from '@theme/components/NavLink'
-import { useInstance } from '@theme/helpers/composable'
-
-export default defineComponent({
-  components: { NavLink, DropdownLink, RecoIcon },
-
-  setup (props, ctx) {
-    const instance = useInstance()
-
-    const userNav = computed(() => {
-      return instance.$themeLocaleConfig.nav || instance.$themeConfig.nav || []
-    })
-
-    const nav = computed(() => {
-      const locales = instance.$site.locales || {}
-
-      if (locales && Object.keys(locales).length > 1) {
-        const currentLink = instance.$page.path
-        const routes = instance.$router.options.routes
-        const themeLocales = instance.$themeConfig.locales || {}
-        const languageDropdown = {
-          text: instance.$themeLocaleConfig.selectText || 'Languages',
-          items: Object.keys(locales).map(path => {
-            const locale = locales[path]
-            const text = themeLocales[path] && themeLocales[path].label || locale.lang
-            let link
-            // Stay on the current page
-            if (locale.lang === instance.$lang) {
-              link = currentLink
-            } else {
-              // Try to stay on the same page
-              link = currentLink.replace(instance.$localeConfig.path, path)
-              // fallback to homepage
-              if (!routes.some(route => route.path === link)) {
-                link = path
-              }
-            }
-            return { text, link }
-          })
-        }
-
-        return [...userNav.value, languageDropdown]
-      }
-
-      // blogConfig 的处理,根绝配置自动添加分类和标签
-      const blogConfig = instance.$themeConfig.blogConfig || {}
-      const isHasCategory = userNav.value.some(item => {
-        if (blogConfig.category) {
-          return item.text === (blogConfig.category.text || '分类')
-        } else {
-          return true
-        }
-      })
-      const isHasTag = userNav.value.some(item => {
-        if (blogConfig.tag) {
-          return item.text === (blogConfig.tag.text || '标签')
-        } else {
-          return true
-        }
-      })
-
-      if (!isHasCategory && Object.hasOwnProperty.call(blogConfig, 'category')) {
-        const category = blogConfig.category
-        const $categories = instance.$categories
-        userNav.value.splice(parseInt(category.location || 2) - 1, 0, {
-          items: $categories.list.map(item => {
-            item.link = item.path
-            item.text = item.name
-            return item
-          }),
-          text: category.text || instance.$recoLocales.category,
-          type: 'links',
-          icon: 'reco-category'
-        })
-      }
-
-      if (!isHasTag && Object.hasOwnProperty.call(blogConfig, 'tag')) {
-        const tag = blogConfig.tag
-        userNav.value.splice(parseInt(tag.location || 3) - 1, 0, {
-          link: '/tag/',
-          text: tag.text || instance.$recoLocales.tag,
-          type: 'links',
-          icon: 'reco-tag'
-        })
-      }
-
-      return userNav.value
-    })
-
-    const userLinks = computed(() => {
-      return (instance.nav || []).map(link => {
-        return Object.assign(resolveNavLinkItem(link), {
-          items: (link.items || []).map(resolveNavLinkItem)
-        })
-      })
-    })
-
-    const repoLink = computed(() => {
-      const { repo } = instance.$themeConfig
-
-      if (repo) {
-        return /^https?:/.test(repo)
-          ? repo
-          : `https://github.com/${repo}`
-      }
-
-      return ''
-    })
-
-    const repoLabel = computed(() => {
-      if (!instance.repoLink) return ''
-      if (instance.$themeConfig.repoLabel) {
-        return instance.$themeConfig.repoLabel
-      }
-
-      const repoHost = instance.repoLink.match(/^https?:\/\/[^/]+/)[0]
-      const platforms = ['GitHub', 'GitLab', 'Bitbucket']
-      for (let i = 0; i < platforms.length; i++) {
-        const platform = platforms[i]
-        if (new RegExp(platform, 'i').test(repoHost)) {
-          return platform
-        }
-      }
-
-      return 'Source'
-    })
-
-    return { userNav, nav, userLinks, repoLink, repoLabel }
-  }
-})
-</script>
-
-<style lang="stylus">
-.nav-links
-  display inline-block
-  a
-    line-height 1.4rem
-    color var(--text-color)
-    &:hover, &.router-link-active
-      color $accentColor
-      .iconfont
-        color $accentColor
-  .nav-item
-    position relative
-    display inline-block
-    margin-left 1.5rem
-    line-height 2rem
-    &:first-child
-      margin-left 0
-  .repo-link
-    margin-left 1.5rem
-
-@media (max-width: $MQMobile)
-  .nav-links
-    .nav-item, .repo-link
-      margin-left 0
-
-@media (min-width: $MQMobile)
-  .nav-item > a:not(.external)
-    &:hover, &.router-link-active
-      margin-bottom -2px
-</style>
diff --git a/docs/.vuepress/theme/components/Navbar.vue b/docs/.vuepress/theme/components/Navbar.vue
deleted file mode 100644
index 3253dba6a2..0000000000
--- a/docs/.vuepress/theme/components/Navbar.vue
+++ /dev/null
@@ -1,182 +0,0 @@
-<!-- Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<template>
-  <header class="navbar">
-    <SidebarButton @toggle-sidebar="$emit('toggle-sidebar')"/>
-
-    <router-link
-      :to="$localePath"
-      class="home-link">
-      <img
-        class="logo"
-        v-if="$themeConfig.logo"
-        :src="$withBase($themeConfig.logo)"
-        :alt="$siteTitle">
-      <span
-        ref="siteName"
-        class="site-name"
-        v-if="$siteTitle">{{ $siteTitle }}</span>
-    </router-link>
-
-    <div class="dropdown-box">
-      <Dropdown />
-    </div>
-
-    <div
-      class="links"
-      :style="linksWrapMaxWidth ? {
-        'max-width': linksWrapMaxWidth + 'px'
-      } : {}">
-
-      <Mode />
-      <AlgoliaSearchBox
-        v-if="isAlgoliaSearch"
-        :options="algolia"/>
-      <SearchBox v-else-if="$themeConfig.search !== false && $frontmatter.search !== false"/>
-      <NavLinks class="can-hide"/>
-    </div>
-  </header>
-</template>
-
-<script>
-import { defineComponent, ref, onMounted, computed, reactive } from 'vue-demi'
-import AlgoliaSearchBox from '@AlgoliaSearchBox'
-import SearchBox from '@SearchBox'
-import SidebarButton from '@theme/components/SidebarButton'
-import NavLinks from '@theme/components/NavLinks'
-import Mode from '@theme/components/Mode'
-import { useInstance } from '@theme/helpers/composable'
-import Dropdown from '@theme/components/Dropdown'
-import NavLink from './NavLink.vue'
-
-export default defineComponent({
-  components: { SidebarButton, NavLinks, SearchBox, AlgoliaSearchBox, Mode, Dropdown, NavLink },
-  methods: {
-    
-  },
-  setup (props, ctx) {
-    const instance = useInstance()
-    const linksWrapMaxWidth = ref(null)
-
-    const algolia = computed(() => {
-      return instance.$themeLocaleConfig.algolia || instance.$themeConfig.algolia || {}
-    })
-
-    const isAlgoliaSearch = computed(() => {
-      return algolia.value && algolia.value.apiKey && algolia.value.indexName
-    })
-
-    function css (el, property) {
-      // NOTE: Known bug, will return 'auto' if style value is 'auto'
-      const win = el.ownerDocument.defaultView
-      // null means not to return pseudo styles
-      return win.getComputedStyle(el, null)[property]
-    }
-
-    onMounted(() => {
-
-      const MOBILE_DESKTOP_BREAKPOINT = 719 // refer to config.styl
-      const NAVBAR_VERTICAL_PADDING =
-        parseInt(css(instance.$el, 'paddingLeft')) +
-        parseInt(css(instance.$el, 'paddingRight'))
-
-      const handleLinksWrapWidth = () => {
-        if (document.documentElement.clientWidth < MOBILE_DESKTOP_BREAKPOINT) {
-          linksWrapMaxWidth.value = null
-        } else {
-          linksWrapMaxWidth.value =
-            instance.$el.offsetWidth -
-            NAVBAR_VERTICAL_PADDING -
-            (instance.$refs.siteName && instance.$refs.siteName.offsetWidth || 0)
-        }
-      }
-
-      handleLinksWrapWidth()
-      window.addEventListener('resize', handleLinksWrapWidth, false)
-    })
-
-    return { linksWrapMaxWidth, algolia, isAlgoliaSearch, css }
-  }
-})
-</script>
-
-<style lang="stylus">
-$navbar-vertical-padding = 0.7rem
-$navbar-horizontal-padding = 1.5rem
-
-.navbar
-  padding $navbar-vertical-padding $navbar-horizontal-padding
-  line-height $navbarHeight - 1.4rem
-  box-shadow var(--box-shadow)
-  background var(--background-color)
-  a, span, img
-    display inline-block
-  .logo
-    height $navbarHeight - 1.4rem
-    min-width $navbarHeight - 1.4rem
-    margin-right 0.8rem
-    vertical-align top
-    border-radius 50%
-  .site-name
-    font-size 1.2rem
-    font-weight 600
-    color var(--text-color)
-    position relative
-  .links
-    padding-left 1.5rem
-    box-sizing border-box
-    white-space nowrap
-    font-size 0.9rem
-    position absolute
-    right $navbar-horizontal-padding
-    top $navbar-vertical-padding
-    display flex
-    background-color var(--background-color)
-    .search-box
-      flex: 0 0 auto
-      vertical-align top
-  .dropdown-box 
-    position absolute
-    left 14rem
-    top 50%
-    transform translateY(-50%)
-    height 100%
-    z-index 1
-    .dropdown-wrapper
-      min-width 80px
-    .dropdown-title
-      font-weight normal
-      position relative
-      top 2px
-  .document.nav-item
-    margin-left 0
-    margin-right 2.3rem
-  .nav-item .nav-link
-    color #242424
-  .nav-item .nav-link.router-link-active
-    color #2ca37d
-
-@media (max-width: $MQMobile)
-  .navbar
-    padding-left 4rem
-    .can-hide
-      display none
-    .links
-      padding-left .2rem
-
-</style>
diff --git a/docs/.vuepress/theme/components/NoteAbstract.vue b/docs/.vuepress/theme/components/NoteAbstract.vue
deleted file mode 100644
index 88861bfba8..0000000000
--- a/docs/.vuepress/theme/components/NoteAbstract.vue
+++ /dev/null
@@ -1,84 +0,0 @@
-<!-- Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<template>
-  <div class="abstract-wrapper">
-    <NoteAbstractItem
-      v-for="(item) in currentPageData"
-      :key="item.path"
-      :item="item"
-      :currentPage="currentPage"
-      :currentTag="currentTag"
-    />
-    <pagation
-      class="pagation"
-      :total="data.length"
-      :currentPage="currentPage"
-      @getCurrentPage="getCurrentPage"
-    />
-  </div>
-</template>
-
-<script>
-import { defineComponent, ref, toRefs, computed, onMounted } from 'vue-demi'
-import pagination from '@theme/mixins/pagination'
-import NoteAbstractItem from './NoteAbstractItem'
-import { useInstance } from '@theme/helpers/composable'
-
-export default defineComponent({
-  mixins: [pagination],
-  components: { NoteAbstractItem },
-  props: ['data', 'currentTag'],
-
-  setup (props, ctx) {
-    const instance = useInstance()
-
-    const { data } = toRefs(props)
-
-    const currentPage = ref(1)
-
-    const currentPageData = computed(() => {
-      const start = (currentPage.value - 1) * instance.$perPage
-      const end = currentPage.value * instance.$perPage
-
-      return data.value.slice(start, end)
-    })
-
-    const getCurrentPage = (page) => {
-      currentPage.value = page
-      instance._setStoragePage(page)
-      ctx.emit('paginationChange', page)
-    }
-
-    onMounted(() => {
-      currentPage.value = instance._getStoragePage() || 1
-    })
-
-    return { currentPage, currentPageData, getCurrentPage }
-  },
-  watch: {
-    $route () {
-      this.currentPage = this._getStoragePage() || 1
-    }
-  }
-})
-</script>
-
-<style lang="stylus" scoped>
-.abstract-wrapper
-  width 100%
-</style>
diff --git a/docs/.vuepress/theme/components/NoteAbstractItem.vue b/docs/.vuepress/theme/components/NoteAbstractItem.vue
deleted file mode 100644
index 2737ae4501..0000000000
--- a/docs/.vuepress/theme/components/NoteAbstractItem.vue
+++ /dev/null
@@ -1,109 +0,0 @@
-<!-- Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<template>
-  <div
-    class="abstract-item"
-    @click="$router.push(item.path)">
-    <reco-icon v-if="item.frontmatter.sticky" icon="reco-sticky" />
-    <div class="title">
-      <reco-icon v-if="item.frontmatter.keys" icon="reco-lock" />
-      <router-link :to="item.path">{{item.title}}</router-link>
-    </div>
-    <div class="abstract" v-html="item.excerpt"></div>
-    <PageInfo
-      :pageInfo="item"
-      :currentTag="currentTag">
-    </PageInfo>
-  </div>
-</template>
-
-<script>
-import { defineComponent } from 'vue-demi'
-import { RecoIcon } from '@vuepress-reco/core/lib/components'
-import PageInfo from './PageInfo'
-export default defineComponent({
-  components: { PageInfo, RecoIcon },
-  props: ['item', 'currentPage', 'currentTag']
-})
-</script>
-
-<style lang="stylus" scoped>
-.abstract-item
-  position relative
-  margin: 0 auto 20px;
-  padding: 16px 20px;
-  width 100%
-  overflow: hidden;
-  border-radius: $borderRadius
-  box-shadow: var(--box-shadow);
-  box-sizing: border-box;
-  transition all .3s
-  background-color var(--background-color)
-  cursor: pointer;
-  > * {
-    pointer-events: auto;
-  }
-  .reco-sticky
-    position absolute
-    top 0
-    left 0
-    display inline-block
-    color $accentColor
-    font-size 2.4rem
-  &:hover
-    box-shadow: var(--box-shadow-hover)
-  .title
-    position: relative;
-    font-size: 1.28rem;
-    line-height: 46px;
-    display: inline-block;
-    a
-      color: var(--text-color);
-    .reco-lock
-      font-size 1.28rem
-      color $accentColor
-    &:after
-      content: "";
-      position: absolute;
-      width: 100%;
-      height: 2px;
-      bottom: 0;
-      left: 0;
-      background-color: $accentColor;
-      visibility: hidden;
-      -webkit-transform: scaleX(0);
-      transform: scaleX(0);
-      transition: .3s ease-in-out;
-    &:hover a
-      color $accentColor
-    &:hover:after
-      visibility visible
-      -webkit-transform: scaleX(1);
-      transform: scaleX(1);
-  .tags
-    .tag-item
-      &.active
-        color $accentColor
-      &:hover
-        color $accentColor
-@media (max-width: $MQMobile)
-  .tags
-    display block
-    margin-top 1rem;
-    margin-left: 0!important;
-</style>
diff --git a/docs/.vuepress/theme/components/Page.vue b/docs/.vuepress/theme/components/Page.vue
deleted file mode 100644
index 7357d9389a..0000000000
--- a/docs/.vuepress/theme/components/Page.vue
+++ /dev/null
@@ -1,350 +0,0 @@
-<!-- Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<template>
-  <main class="page" :style="pageStyle">
-    <ModuleTransition delay="0.08">
-      <section v-show="recoShowModule">
-        <div class="page-title">
-          <div class="translate-warnning" v-if="$lang === 'en'">
-            The content of this document may be from machine translation. If you are interested in assisting with translation and proofreading, please contact us 
-            <a href="mailto:dev@doris.apache.org">dev@doris.apache.org</a>.
-          </div>
-          <h1 class="title">{{$page.title}}</h1>
-          <PageInfo :pageInfo="$page" :showAccessNumber="showAccessNumber"></PageInfo>
-        </div>
-        <!-- 这里使用 v-show,否则影响 SSR -->
-        <Content class="theme-reco-content" />
-      </section>
-    </ModuleTransition>
-
-    <ModuleTransition delay="0.16">
-      <footer v-if="recoShowModule" class="page-edit">
-        <div class="edit-link" v-if="editLink">
-          <a
-            :href="editLink"
-            target="_blank"
-            rel="noopener noreferrer"
-          >{{ editLinkText }}</a>
-          <OutboundLink/>
-        </div>
-
-        <div
-          class="last-updated"
-          v-if="lastUpdated"
-        >
-          <span class="prefix">{{ lastUpdatedText }}: </span>
-          <span class="time">{{ lastUpdated }}</span>
-        </div>
-      </footer>
-    </ModuleTransition>
-
-    <ModuleTransition delay="0.24">
-      <div class="page-nav" v-if="recoShowModule && (prev || next)">
-        <p class="inner">
-          <span v-if="prev" class="prev">
-            <router-link v-if="prev" class="prev" :to="prev.path">
-              {{ prev.title || prev.path }}
-            </router-link>
-          </span>
-          <span v-if="next" class="next">
-            <router-link v-if="next" :to="next.path">
-              {{ next.title || next.path }}
-            </router-link>
-          </span>
-        </p>
-      </div>
-    </ModuleTransition>
-
-    <ModuleTransition delay="0.32">
-      <Comments v-if="recoShowModule" :isShowComments="shouldShowComments"/>
-    </ModuleTransition>
-
-    <ModuleTransition>
-      <SubSidebar v-if="recoShowModule" class="side-bar" />
-    </ModuleTransition>
-
-    <ModuleTransition>
-      <PageFooter v-if="$frontmatter.page !== 'home'" />
-    </ModuleTransition>
-  </main>
-</template>
-
-<script>
-import { defineComponent, computed, toRefs } from 'vue-demi'
-import PageInfo from '@theme/components/PageInfo'
-import { resolvePage, outboundRE, endingSlashRE } from '@theme/helpers/utils'
-import { ModuleTransition } from '@vuepress-reco/core/lib/components'
-import SubSidebar from '@theme/components/SubSidebar'
-import { useInstance } from '@theme/helpers/composable'
-import PageFooter from '@theme/components/PageFooter'
-
-export default defineComponent({
-  components: { PageInfo, ModuleTransition, SubSidebar, PageFooter },
-
-  props: ['sidebarItems'],
-
-  setup (props, ctx) {
-    const instance = useInstance()
-
-    const { sidebarItems } = toRefs(props)
-
-    const recoShowModule = computed(() => instance.$parent.recoShowModule)
-
-    // 是否显示评论
-    const shouldShowComments = computed(() => {
-      const { isShowComments } = instance.$frontmatter
-      const { showComment } = instance.$themeConfig.valineConfig || { showComment: true }
-      return (showComment !== false && isShowComments !== false) || (showComment === false && isShowComments === true)
-    })
-
-    const showAccessNumber = computed(() => {
-      const {
-        $themeConfig: { valineConfig },
-        $themeLocaleConfig: { valineConfig: valineLocalConfig }
-      } = instance || {}
-
-      const vc = valineLocalConfig || valineConfig
-
-      return vc && vc.visitor != false
-    })
-
-    const lastUpdated = computed(() => {
-      if (instance.$themeConfig.lastUpdated === false) return false
-      return instance.$page.lastUpdated
-    })
-
-    const lastUpdatedText = computed(() => {
-      if (typeof instance.$themeLocaleConfig.lastUpdated === 'string') {
-        return instance.$themeLocaleConfig.lastUpdated
-      }
-      if (typeof instance.$themeConfig.lastUpdated === 'string') {
-        return instance.$themeConfig.lastUpdated
-      }
-      return 'Last Updated'
-    })
-
-    const prev = computed(() => {
-      const frontmatterPrev = instance.$frontmatter.prev
-      if (frontmatterPrev === false) {
-        return
-      } else if (frontmatterPrev) {
-        return resolvePage(instance.$site.pages, frontmatterPrev, instance.$route.path)
-      } else {
-        return resolvePrev(instance.$page, sidebarItems.value)
-      }
-    })
-
-    const next = computed(() => {
-      const frontmatterNext = instance.$frontmatter.next
-      if (next === false) {
-        return
-      } else if (frontmatterNext) {
-        return resolvePage(instance.$site.pages, frontmatterNext, instance.$route.path)
-      } else {
-        return resolveNext(instance.$page, sidebarItems.value)
-      }
-    })
-
-    const editLink = computed(() => {
-      if (instance.$frontmatter.editLink === false) {
-        return false
-      }
-      const {
-        repo,
-        editLinks,
-        docsDir = '',
-        docsBranch = 'master',
-        docsRepo = repo
-      } = instance.$themeConfig
-
-      if (docsRepo && editLinks && instance.$page.relativePath) {
-        return createEditLink(repo, docsRepo, docsDir, docsBranch, instance.$page.relativePath)
-      }
-      return ''
-    })
-
-    const editLinkText = computed(() => {
-      return (
-        instance.$themeLocaleConfig.editLinkText || instance.$themeConfig.editLinkText || `Edit this page`
-      )
-    })
-
-    const pageStyle = computed(() => {
-      return instance.$showSubSideBar ? {} : { paddingRight: '0' }
-    })
-
-    return {
-      recoShowModule,
-      shouldShowComments,
-      showAccessNumber,
-      lastUpdated,
-      lastUpdatedText,
-      prev,
-      next,
-      editLink,
-      editLinkText,
-      pageStyle
-    }
-  }
-})
-
-function createEditLink (repo, docsRepo, docsDir, docsBranch, path) {
-  const bitbucket = /bitbucket.org/
-  if (bitbucket.test(repo)) {
-    const base = outboundRE.test(docsRepo)
-      ? docsRepo
-      : repo
-    return (
-      base.replace(endingSlashRE, '') +
-        `/src` +
-        `/${docsBranch}/` +
-        (docsDir ? docsDir.replace(endingSlashRE, '') + '/' : '') +
-        path +
-        `?mode=edit&spa=0&at=${docsBranch}&fileviewer=file-view-default`
-    )
-  }
-
-  const base = outboundRE.test(docsRepo)
-    ? docsRepo
-    : `https://github.com/${docsRepo}`
-
-  return (
-    base.replace(endingSlashRE, '') +
-    `/edit` +
-    `/${docsBranch}/` +
-    (docsDir ? docsDir.replace(endingSlashRE, '') + '/' : '') +
-    path
-  )
-}
-
-function resolvePrev (page, items) {
-  return find(page, items, -1)
-}
-
-function resolveNext (page, items) {
-  return find(page, items, 1)
-}
-
-function find (page, items, offset) {
-  const res = []
-  flatten(items, res)
-  for (let i = 0; i < res.length; i++) {
-    const cur = res[i]
-    if (cur.type === 'page' && cur.path === decodeURIComponent(page.path)) {
-      return res[i + offset]
-    }
-  }
-}
-
-function flatten (items, res) {
-  for (let i = 0, l = items.length; i < l; i++) {
-    if (items[i].type === 'group') {
-      flatten(items[i].children || [], res)
-    } else {
-      res.push(items[i])
-    }
-  }
-}
-
-</script>
-
-<style lang="stylus">
-@require '../styles/wrapper.styl'
-
-.page
-  position relative
-  padding-top 5rem
-  padding-bottom 2rem
-  padding-right 14rem
-  display block
-  .side-bar
-    position fixed
-    top 10rem
-    bottom 10rem
-    right 2rem
-    overflow-y scroll
-    &::-webkit-scrollbar
-      width: 0
-      height: 0
-  .page-title
-    max-width: $contentWidth;
-    margin: 0 auto;
-    padding: 1rem 2.5rem;
-    color var(--text-color)
-  .theme-reco-content h2
-    position relative
-    padding-left 0.8rem
-    &::before
-      position absolute
-      left 0
-      top 3.5rem
-      display block
-      height 1.8rem
-      content ''
-      border-left 5px solid $accentColor
-  .page-edit
-    @extend $wrapper
-    padding-top 1rem
-    padding-bottom 1rem
-    overflow auto
-    .edit-link
-      display inline-block
-      a
-        color $accentColor
-        margin-right 0.25rem
-    .last-updated
-      float right
-      font-size 0.9em
-      .prefix
-        font-weight 500
-        color $accentColor
-      .time
-        font-weight 400
-        color #aaa
-  .comments-wrapper
-    @extend $wrapper
-
-.page-nav
-  @extend $wrapper
-  padding-top 1rem
-  padding-bottom 0
-  .inner
-    min-height 2rem
-    margin-top 0
-    border-top 1px solid var(--border-color)
-    padding-top 1rem
-    overflow auto // clear float
-  .next
-    float right
-
-@media (max-width: $MQMobile)
-  .page
-    padding-right 0
-    .side-bar
-      display none
-    .page-title
-      padding: 0 1rem;
-    .page-edit
-      .edit-link
-        margin-bottom .5rem
-      .last-updated
-        font-size .8em
-        float none
-        text-align left
-
-</style>
diff --git a/docs/.vuepress/theme/components/PageFooter.vue b/docs/.vuepress/theme/components/PageFooter.vue
deleted file mode 100644
index 57b90d467d..0000000000
--- a/docs/.vuepress/theme/components/PageFooter.vue
+++ /dev/null
@@ -1,89 +0,0 @@
-<!-- Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<template>
-  <div class="page-footer">
-    <ul class="apache-list" v-if="asfList">
-      <li class="apache-item" v-for="asfItem in asfList" :key="asfItem.link">
-        <a :href="asfItem.link" target="_blank">{{ asfItem.text }}</a>
-      </li>
-    </ul>
-    <div class="footer-copyright">
-      <p class="wow fadeInUp">
-        Copyright © 2022 The Apache Software Foundation. Licensed under the Apache License, Version 2.0.  <br/>Apache Doris, Apache,  the Apache feather logo, the Apache Doris logo are trademarks of The Apache Software Foundation.
-      </p>
-    </div>
-  </div>
-</template>
-
-<script>
-import { defineComponent, computed } from "vue-demi";
-import { useInstance } from "@theme/helpers/composable";
-
-export default defineComponent({
-  setup(props, ctx) {
-    const instance = useInstance();
-    const asfList = computed(() => {
-      const { $themeLocaleConfig } = instance;
-      const navs = $themeLocaleConfig.nav;
-      if (!navs) return
-      const asf = navs.find((nav) => nav.text === "ASF");
-      return asf.items;
-    });
-
-    return { asfList };
-  },
-});
-</script>
-
-<style lang="stylus" scoped>
... 32743 lines suppressed ...


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org